Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2021 / OIT_lek_sem_08_09_2021.docx
Скачиваний:
1
Добавлен:
14.12.2023
Размер:
52.35 Кб
Скачать

3.2. Массивы

Массив ‒ группа переменных с одним именем и одного типа. Описание, например,

double massiv[15];

означает, что резервируется память для 15 чисел типа double с именем massiv и порядковыми именами от 0 до 14. Отдельный элемент определяется именем массива и индексом в квадратных скобках (massiv[7]).

Размер массива может быть задан числовой константой, именованной константой или через замену #define.

Например:

#define N 20

int array[10], array1[N]; // описание одномерного массива (вектора)

char cch[N]; // объявление массива символов

const int size=3;

const int size1=4;

double D[size][size1]; // описание двухмерного массива (матрицы)

/* size ‒ количество строк, size1‒ количество столбцов матрицы */

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

В коде программы возможна инициализация вектора:

int A[2] = {5,-10};

char S[5]= {'5', 'a', ' ', '&', '#'};

char S1[]= {'A', '7', '9', '11', 'B'};

/* количество элементов компилятор подсчитает сам */

При описании многомерных массивов также может производиться их инициализация:

int B[3][3] = {1,2,3,

4,5,6,

7,8,9};

Массив типа char можно использовать для хранения строки символов (набора символов, заключённого в двойные кавычки). Отдельные символы строки являются элементами массива. Доступ к ним осуществляется через их индексы. Элементы строки нумеруются от ноля. Особенностью строки является её окончание специальным символом ‒ признака конца строки \0. Для него всегда резервируется одна позиция. Можно инициализировать строку, не задавая её размер:

char str[]= {''massivstroca''};

В этом случае компилятор сам добавит признак конца строки \0.

3.3. Операции и выражения

Во всех языках программирования под выражением подразумевается конструкция, составленная из констант, переменных, знаков операций, функций, скобок. Выражение определяет порядок вычисления некоторого значения. Если это числовое значение, то такое выражение называется арифметическим. Рассмотрим знаки арифметических операций:

  • - вычитание или унарный минус;

  • + сложение или унарный плюс;

  • * умножение;

  • / деление;

  • % деление по модулю;

  • ++ унарная операция увеличения на единицу (инкремент);

  • -- унарная операция уменьшения на единицу (декремент).

Все операции, кроме деления по модулю, применимы к любым числовым типам данных. Операция % ‒ только к целым числам.

Особенности выполнения деления состоят в том, что, если делимое и делитель ‒ целые числа, то и результат ‒ целое число (7/3=2), а если хотя бы один из операндов имеет вещественный тип, то и результат будет вещественным (5./3, 5./3., 5/3. ‒ 1.66).

Операция, определяемая оператором %, вычисляет целый остаток от деления целых чисел (7%3 остаток ‒ 1). Следует быть внимательным к знаку остатка:

  • -7 % -3 ‒ -1

  • 7 % -3 ‒ 1

  • -7 % 3 ‒ -1

Операция присваивания правоассоциативная. Знак операции = может несколько раз входить в выражение:

a=b=c=d+f;

при этом первой выполнится операция сложения, затем переменной c присвоится значение суммы, далее это значение присвоится переменной b и в конце ‒ переменной a.

В С++ имеются дополнительные сокращённые формы записи операций присваивания, совмещающие присваивание с выполнением других операций:

  • c+=3; равнозначно c=c+3;

  • c-=3; равнозначно c=c-3;

  • c*=3; равнозначно c=c*3;

  • c/=3; равнозначно c=c/3;

  • c%=3; равнозначно c=c%3;

Сокращённая форма предпочтительнее, поскольку выражение будет вычисляться быстрее.

Операции инкремента и декремента могут применяться к любым переменным (для символьных и логических ‒ к их кодам).

Операция инкремента:

i++; постфиксная форма, равнозначно i=i+1; или i+=1;

++i; префиксная форма, равнозначно i=i+1; или i+=1;

Операция декремента:

i--; постфиксная форма, равнозначно i=i-1; или i-=1;

--i; префиксная форма, равнозначно i=i-1; или i-=1;

Различия проявляются при использовании префиксной и постфиксной форм в выражениях:

a=3; b=2;

c=a++ * b++;

/* a=4, b=3, c=6 */

a=3; b=2;

c=++a* ++b;

/* a=4, b=3, c=12 */

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

По убыванию приоритета арифметические операции расположены в следующем порядке:

  • + - унарные плюс и минус;

  • ++ -- инкремент и декремент;

  • *, /, % умножение, деление;

  • + - сложение, вычитание.

Одинаковые по старшинству операции выполняются в порядке слева направо. Для изменения порядка выполнения операций в выражениях могут применяться круглые скобки: f=a+b/c+d; f1=(a+b)/(c+d); (значения переменных f и f1 не равны).

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

Операции отношения:

  • < меньше;

  • <= меньше или равно;

  • > больше;

  • >= больше или равно;

  • == равно;

  • != не равно.

Логические операции:

  • ! отрицание, логическое (не);

  • && конъюнкция, логическое умножение (и);

  • || дизъюнкция, логическое сложение (или).

В логических выражениях в отсутствие круглых скобок операции отношения и логические выполняются согласно их приоритету.

По убыванию старшинства логические операции и операции отношения расположены в следующем порядке:

  • ! логическое (не);

  • > < >= <= сравнение;

  • == != сравнение;

  • && логическое (и);

  • || логическое (или).

Рассмотрим логическое выражение, соответствующее системе неравенств 0 < x < 1:

x>0 && x<1;

Круглые скобки для выделения операций отношения не используются, поскольку эти операции старше конъюнкции и дизъюнкции.

4. Управляющие структуры языка С++

С++ содержит три управляющие структуры:

  • cледования;

  • выбора;

  • повторения.

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

Структура выбора представлена полным условным оператором if/else (если/иначе), неполным условным оператором if(если) и тернарной операцией (?:).

Структура повторения включает три оператора цикла: for, while и do/while.

Соседние файлы в папке Лекции 2021