КОНЬЯКОВ.ру

Разработка и поддержка веб-сайтов на 1C-Bitrix. E-commerce компетенции. Опыт с 2007 года.

Category: Информационная безопасность(Страница 18 из 23)

25 Структуры в языках программирования высокого уровня. Обращение к полям структуры

Скачать ZIP архив | Скачать RAR архив

Структура — это совокупность нескольких переменных под единым именем, рассматриваемых как одно целое. В отличиие от массива переменные в структуре могут иметь различные типы. Переменные внутри структуры называются ее членами или полями. Структуры могут содержать данные любых мыслимых типов С, в том числе массивы и другие структуры.

Объявление и определение структур

Ключевое слово struct указывает начало определния структуры. За этим ключевым словом должно следовать имя структуры. Это же правило относится и к другим нестандартным типам данных, которые создаются программистом. Имя структуры называют ее меткой (тег), а также именем структурного типа.

struct coord { //начало определния структуры
int x;
int y;
};

Объявление структуры и ее членов само по себе не создает фактического объекта — структуры coord или ее переменных x и y

При этом не выделяется память для фактических структур.

Объявить фактическую структуру можно двумя способами. один из них состоит в том, чтобы поставить список имет переменных сразу после определния структурного типа, как показано ниже:

struct coord {
int x;
int y;
} first, second; // определение структур

struct coord {
int x;
int y;
};

…

struct coord first, second; // определение структур отдельно от манифеста

Обращение к полям структуры

first.x = 50;
second.y = 100;

Одно большое преимущество заключается в том, что можно копировать информацию из одной структуры в другую простым присваиваем.

first = second;

first.x = second.x;
first.y = second.y;

Сложные структуры

Для задания прямоугольника необходимы две такие структуры, объединенные в единое целое.

struct rectangle {
struct coord topleft;
struct coord topbottom;
};

Структурный тип rectangle включающий две структуры coord, опредлеение типа и объявление его экземпляров можно совместить:

struct rectangle {
struct coord topleft;
struct coord topbottom;
} myBox;

Для обращения к полям, где хранятся числовые даенные, необходимо два раза применить точку:

myBox.topleft.x; // обращение к полю х поля topleft структуры типа rectangle имеющией имя myBox

myBox.topleft.x = 0;
myBox.topleft.y = 10;
myBox.topleft.x = 100;
myBox.topleft.y = 200;

Структуры, содержащие массивы

Можно определять структуры, содержащие массивы в качестве своих элементов (полей). Мкассивы могут быть любых типов (int, char, итд)

Например, в следующем фрагменте кода определяется структурный тип data содержащий целочисленный массив х из четырех дэлементов и символьный массив у из десяти элементов:

struct data {
int x[4];
char y[10];
};

struct data record; // объявление переменной record этого структурного типа

record.x[2] = 100;
record.y[2] = ‘x’;

record.y;

23 Использование функций в языках программирования высокого уровня: правил записи, вызова и передачи параметров

Скачать ZIP архив | Скачать RAR архив

Функции — это основные единицы построения программ при процедурном программировании на C++

Функцией называется независимый фрагмент кода, имеющий собственное имя, предназначенный для выполнения определенной специализированной задачи и возвращающий значение (не обязательно) в вызвавшую его программу.

Программа на C++ состоит по крайней мере из одной функции, main(). С нее всегда начинается выполнение программы.

Прежде всего, функцию необходимо объявить.

Объявление функции называется прототипом функции. Прототип функции — ее предварительное описание. Состоит из имени функции, списка передаваемых в нее переменных и типа возвращаемого значения (если есть).

Например:
double sqrt (double x);
int sum (int a, int b, int c);

Определение функции — сама функция (ее полный текст). Описывает , как она работает, т.к. какие действия надо выполнить, чтобы получить искомый результат.

int sum (int a, int b, int c) { // заголовок функции
int result; // определение тела функции
result = a + b + c; // вычисление результата
return result; // возвращение результата
}

Вызов функций

После того как функция объявлена, ее можно использовать в выражениях

double x = sqrt(3) + 1;
cout << sum (k, l, m) / 15;

Если функции не возвращает никакого результата, т.е. она объявлена как void , ее вызов не может быть использован как операнд более сложного выражения , а должен быть записан сам по себе

func(a, b, c);

пример программы переменной s присваивается значение 10

include <iostream.h>
int sum(int a, int b, int c);
int main () {
int k = 2;
int l = 3;
int m = 5;
int s = sum(k, l, m);
cout << s;
return 0;
}

int sum (int a, int b, int c) {
int result;
result = a + b + c;
return result;
}

22 Понятие и типы переменных в языках программирования высокого уровня

Скачать ZIP архив | Скачать RAR архив

Значение каждого параметра храннения в опредленном участке памяти компьютера и может меняться в процессе выполнения алгоритма. Такой участок памяти ПК компьютера называется переменной.

Каждой переменной присваивается имя. С каждой переменной связан ее тип. С переменной можно выполнять следующие действия:
1) прочитать её текущее значение;
2) записать новое значение в переменную или как говорят присвоить новое значение переменной;

Запись нового значения переменной выполняется с помощью так называемого оператора присваивания. Имя_переменной = выражение; //здесь знак равенства это знак присвоения

При выполнении оператора присваивания сначала вычисляется значение выражения в правой части, затем оно записывается в переменную, имя которой указано в левой части. Старое значение переменной при этом стирается.

1) Память — это материальный носитель, который хранит информацию . Эту информацию можно читать и перезаписывать
2) Переменная — это область памяти универсального исполнителя хранящая порцию информации. Любая переменная имеет имя и тип. Тип переменной определяется множеством всех значений, которые она может принимать.
3) С переменной можно выполнять два действия: прочитать ее текущее значение и записать в нее значение (старое теряется). Для записи нового значения в переменную применяется оператор присваивания.

Выражение в правой части может включать имя переменной в левой части. В этом случае при вычислении выражения используется старое значение переменной.

Например, с численными переменными возможны арифметические операции, с логическими — проверка, истино или ложно значение переменной, с символьными — сравнение, с табличными (или массивами) чтение или запись элемента таблицы с заданным индексом и т.п.

Переменные
-Логические
-Символьные
-Числовые
—Целые
—Вещественные
—Одинарной точности
—Двойной точности

Целочисленные переменные

Тип целое число является основным для любого алгоритмического языка. Символы представляются в компьютере целыми числами — их кодами в некоторой кодировке. Целая переменная в компьютере может хранить лишь ограниченное множество целых чисел в некотором интервале. В современном ПК под целую переменную отводится 8 байтов, т.е. 64 двоичных разряда. Она может хранить числа от нуля до 2 в 64-й степени минус 1. Таким образом максимальное число которое может храниться в целочисленной переменной, равно 18,446,744,073,709,551,615 (18 квинтиллионов 446 квадраллионов 744 триллиона 073 миллиарда 709 миллионов 551 тысача 615).

Сложение и умножение значений целых переменных выполняется так: сначала производится арифметическая операция, затем старшие разряды результата, вышедшие за 64 разрядов (отбрасываются). Операции удовлетворяют традиционным законам коммутативности, ассоциативности и дистрибутивности:

a + b = b + a , ab = ba
(a + b) + c = a + (b + c) , (ab)c = a(bc)
a(b + c) = ab + ac

В языке С целым числам соответствуют типы int, char, bool

Представление целочисленных значений в памяти компьютера в большинстве случаев реализуется аппаратным способом с учетом возможностей конкретного процессора.

Вещественные переменные

Вещественные числа представляются в компьютере в так называемой экспоненциальной, или плавающей, форме. Вещественное число r имеет вид r= +- 2(в степени e) * m

Представление числа состоит из трех элементов
1) Знак числа — плюс или минус. Под знак отводится 1 бит.
2) Показатель степени e, его называют порядком или экспонентой. Экспонента указывает степень двойки, на которую домножается число. Она может быть как положительной, так и отрицательной. Для чисел, меньших единицы. Под экспоненту отводится фиксированное число двоичных разрядов, обычно 8 или 11, расположенных в старшей части двоичного представления числа, сразу вслед за знаковым разрядом.
3) Мантисса m представляет собой фиксированное количество разрядов двоичной записи вещественного числа в диапазоне от 1 до 2: 1 <= m <= 2

В языке С вещественным числам соответствуют типы float и double.

Основным типом является тип double, именно он наиболее естественен для компьютера. В программировании следует по возможности избегать типа float (этот тип оправдан в трехмерной компьютерной графике), т.к. его точность недостаточна, а процессор все равно при выполнении операций преобразует его в тип double. Если к большому плавающему числу прибавить очень маленькое, то оно не изменится.

a + b = a при b != 0

Для сложения не выполняется закон ассоциативности: a + (b + c) != (a + b) + c
Точность вычислений вещественных чисел типа double составляет 16 десятичных цифр.

Кроме потери точности, при операциях с вещественными числами могут происходить и другие неприятности.
— Переполнение — когда порядок результата больше максимально возможного значения. эта ошибка часто возникает при умножении больших чисел;
— Исчезновение порядка — когда порядок результата отрицательный и слишком большой по абсолютной величине, т.е. порядок меньше минимально допустимого значения. Эта ошибка может возникнуть при делении маленького числа на очень большое или при умножении двух очень маленьких по абсолютной величине чисел. — вызывают аппаратное прерывание работы процессора.
— Деление на ноль — является некорректной операцией. — вызывают аппаратное прерывание работы процессора.

Запись вещественных констант

Вещественные константы записываются в двух формах — с фиксированной десятичной точкой или в экспоненциальном виде. 1.2 , 0.725, 1. , .35 , 0

Отметим, что в программировании именно точка, а не запятая используется для отделении дробной части; запятая обычно служит для разделения элементов списка.

Экспоненциальная форма записи вещественной константы содержит знак, мантиссу и десятичный порядок (экспоненту).

Мантисса — это любая положительная вещественная константа в форме с фиксированной точкой или целая константа.

Порядок указывает степень числа 10, на которую домножается мантисса. Порядок может иметь знак плюс или минус.

1.5e + 6 —> 1 500 00.0
1e-4 —> 0.0001
-.75e3 —> -750.0

Вещественные типы аппаратно могут иметь два предоставления: вещественные числа с фиксированной точкой и вещественные числа с плавающей точкой. Как правило, по умолчанию компиляторы преобразуют вещественные значения в экспоненциальный формат (формат с плавающей точкой).

Символьные переменные

Значением символьной переменной является один символ из фиксированного набора. Такой набор обычно включает буквы, цифры, знаки препинания, знаки математических операций и различные специальные символы (процент, амперсенд, звездочка, косая черта и др.)

Симолы представляются их целочисленными кодами в некоторой фиксированной кодировке. Кодировка определяется тремя параметрами:
1) диапазон значений кодов. например ASCII. стандартный код обмена информацией. от 0 до 127. требует 7 бит на символ. большинство современных кодировок имеют диапазон кодов от 0 до 255, т.е. 1 байт на символ. Unicode, — диапазон от 0 до 65535 — т.е. 2 байта (16 бит) на символ.
2) множеством изображаемых символов.
3) отображением множества кодов на множество символов. кодировки кои-8, cp-1251, итд.

В языке C++ для Unicode существует тип wchar_t в котором под каждый символ отводится 2 байта.

Логические переменные и выражения

Логический тип данных bool, реализуется 1 байтом
Логические или условные выражения используются в качестве условия в конструкциях ветвления «если… то… иначе… конец если» и цикла «пока».

Любая операция сравнения имеет два аргумента и вырабатывает логическое значение «истина» и «ложь» (true и false)

Операции сравнения:
— Проверка равенства: ==
— Неравенство обозначается: !=
— Для сравнения величин выражений применяется четыре операции: больше > ; меньше < ; больше или равно >= ; меньше или равно <=

x == 0 // истина, если значение x равно 0
0 != 0 // ложь
3 >= 2 // истина

Логические выражения

0 < = x && x <= 1
x != 0 or y != 0

21 Управляющие конструкции алгоритмы языка. Основные структуры алгоритмов

Скачать ZIP архив | Скачать RAR архив

Большинство алгоритмических языков относится к так называемым процедурным языкам в которых основной единицей является оператор. Оператор представляет собой команду на выполнение некоторого действия. Язык таким образом состоит в основном из фраз в повелительном наклонении. Альтернативной оператоам яввляются описания, определяющие объекты или типы объектов и их взаимосвязи.

Всякий алгоритм предназначен исполнителю, который однозначно понимает команды алгоритма.

Строки алгоритма представляют собой фразы в повелительном наклонении, которые предназначены исполнителю алгоритма.

Строки алгоритма вполняются последовательно (считается, что исполнитель алгоритма способен не задумываясь выполнить каждую его команду).

Большинство алгоритмов не сводится, однако, к последовательному выполнению команд, в них присутствуют ветвления и циклы. При ветвлении в зависимости от условия выполняется одна из ветвей программы; для этого используется оператор «если… то… иначе… конец если»

Второй важнейший конструкцией алгоритмического языка является конструкция «цикл пока». Заголовок цикла состоит из ключевых слов «цикл пока», за которыми следует некоторое условие в заголовке тела цикла. Если условие истинно, то выполняется тело цикла. Затем вновь проверяется условие в заголовке цикла, опять выполняется тело цикла, если условие истинно и так до бесконечности. Если же условие ложно с самого начала, или становится ложным в результате предыдущего выполнения тела цикла, то тело цикла не выполняется и цикл завершается.

Цикл пока — цикл с предусловием, поскольку условие продолжения цикла проверяется перед выполнением тела цикла, а не после него. Иногда используют циклы с постусловием (do … while), когда тело цикла высегда выполняется хотя бы 1 раз.

Запись алгоритма на неформальном языке представляет собой последовательность команд исполнителю алгоритма. Запись может также включать управляющие конструкции: ветвление, или условные ойператор, и цикл «пока».

— Если условие
— то последовательность действий 1
— иначе последовательность действий 2
— конец если

Основные структуры алгоритмов

Основные структуры алгоритмов — это ограниченный набор стандартных способов соединения отдельных блоков или структур для выполнения типичных последовательностей действий.

Структурный подход предполагает использование только нескольких основных структур, комбинация которых дает все многообразие алгоритмов и программ.

Следование — это последовательное размещение блоков и групп блоков, такая структура называется также линейной.

Если некоторая часть программы выполняется многократно и после проверки некоторого условия в какой-то момент осуществляется выход из нее, то такую часть называют циклом.

Если после проверки некоторого условия выбирается один из двух или более путей, вычислительного процесса и после выполнения любого из них вычислительный процесс опять сводится водно русло, то возникает разветвление.

Цикл до — применяется при необходимости выполнить какие-либо вычисления несколько раз до выполнеия некоторого условия. Особенность этого цикла в том, что он всегда выполняется хотя бы один раз, т.к. первая проверка условия выхода из цикла происходит после того, как тело цикла выполнено.

Тело цикла, — та последовательность действий, которая выполняется многократно, в цикле.

Цикл пока — отличается от цикла до тем, что проверка условия производится до выполенния тела цикла — такой цикл называется циплом по условию.

Обход — частный случай разветвления, когда одна ветвь не содержит никаких действий. Множественный выбор является обобщением разветвления, когда в зависимости от значения переменной выполняется ОДНО ИЗ нескольких действий.

20 Алгоритмизация вычислительных процессов. Способы представления и канонические структуры алгоритмов

Скачать ZIP архив | Скачать RAR архив

Алгоритм — это последовательность команд, предназначенная исполнителю в результате выполнения которой он должен решить поставленную задачу. Алгоритм записывается на формальном языке исключающем неоднозначность толкования.

Запись алгоритма на формальном языке называется программой. Алгоритм в большинстве — это идея программы. Программа — это запись алгоритма на опредленном языке программирования.

Свойства алгоритмов:
1) Дискретность — представление процесса рашения задачи как последовательное выполнение простых шагов. При этом для выполнения каждого шага алгоритма требуется некоторый конечный отрезок времени.

2) Определенность (детерминированность) — каждое правило алгоритма должно быть четким, однозначным. благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче

3) Результативность (конечность) — алгоритм должен приводить к решению задачи за конечное число шагов.

4) Массовость — алгоритм решения задачи разрабатывается в общем виде, т.е. он должен быть применим для некоторого класса задач, различающихся лишь исходными данными.

Чтобы разработать алгоритм, небходимо четко представлять себе ход решения задачи. При разработке алгоритмов часто используется язык схем.

Схема — наглядное графическое представление алгоритма, когда отдельные действия алгоритма изображаются при помощи различных геометрических фигур-блоков, а связи между этапами указываются при помощи линий соединяющих фигуры.

Прямоугольник — обработка(вычисление)
Косой прямоугольник — ввод-вывод
Ромб — проверка условия
Прямоугольник с скругленными углами. Конец/начало вычислительного процесса
Прямоугольник в прямоугольнике (по краям бордюрчик) — подпрограмма
Вертикальная линия со стрелочкой влево — объединение
Круг со стрелочкой сверху — соединитель
Три точки и рамочка вправо — Комментарий

Присваивание

Проверка условия

Вввод вывод

Подпрограммы

Соединительные линии, объединение

Точки связи или соединители

Комментарии

Страница 18 из 23

© 2007–2026, konyakov.ru
☩