- •1.1.Схема простой программы
- •1.2.Основы записи программ
- •1.2.1.Имена
- •1.2.2.Комментарии
- •1.2.3.Переменные и константы, объявления и присваивания
- •1.3.Основные конструкции: операторы, выражения, операции, операнды
- •2.1.Операторы объявления
- •2.2.“Линейные” операторы
- •2.3.Операторы управления программой
- •2.3.1.Условный оператор if (if-else)
- •2.3.2.Оператор выбора switch
- •2.3.3.Оператор цикла while
- •2.3.4.Оператор цикла do–while
- •2.3.5.Оператор цикла for
- •2.3.6.Операторы перехода break, continue и goto
- •3.1.Операция присваивания
- •3.2.Объединение действий с присваиванием
- •3.3.Операции увеличения и уменьшения на 1
- •3.4.Трактовка истинности
- •3.5.Операция ?
- •3.6.Операция «запятая»
- •3.7.Операция sizeof
- •4.1.Объявление, определение, параметры и вызов функции
- •4.2.Выход из функции
- •4.3.Организация памяти при выполнении программы
- •4.4.Правила видимости имен для функций
- •4.5.Одинаковое именование нескольких функций (перегрузка функций)
- •4.6.Параметры функций по умолчанию
- •4.7.Передача параметров функции по адресу
- •4.8.Библиотека стандартных функций
- •6.1.Целые числа
- •6.2.Вещественные числа
- •6.3.Логические значения
- •6.4.Символы
- •6.5.Преобразование типов
- •6.6.Вычисление значения выражения
- •7.1.Массивы
- •7.1.1.Одномерные массивы
- •7.1.2.Многомерные массивы
- •7.1.3.Строки
- •7.1.4.Массивы с неопределенным размером (безразмерные массивы)
- •7.2.Перечисления
2.1.Операторы объявления
Операторы объявления объявляют, то есть делают известными в программе имена (идентификаторы). Все имена, используемые в программе на языке C++, должны быть объявлены (исключение – заранее известное имя главной функции main, объявление которой излишне).
Оператор объявления состоит из названия типа и объявляемого имени:
int x; // объявление целой переменной x
double f; // объявление переменной f типа double
int func(); // объявление функции func, не имеющей параметров и
// возвращающей значение целого типа
В одном операторе может быть объявлено несколько переменных или именованных констант одного и того же типа:
int i, j, k; // объявление целых переменных i, j и k
Объявления могут сочетаться с инициализацией данных (назначением начальных значений объявляемым переменным и именованным константам):
int number = 0; // объявление целой переменной number
// с начальным значением 0
const float pi = 3.1415; // объявление константы pi типа float
// со значением 3.1415
int m=3, n=5; // объявление целой переменной m с начальным значением 3
// и целой переменной n с начальным значением 5
Инициализация сочетает в себе объявление переменной с присваиванием ей начального значения, которое впоследствии можно изменить. Неинициализированная (не получившая начального значения при объявлении) переменная вплоть до момента присваивания ей значения будет содержать случайное значение, хранящееся в выделенном для нее участке памяти.
Если в одном операторе объявляется несколько переменных или констант, операция инициализации относится только к одной, ближайшей к ней переменной (инициализация списка переменных одним и тем же значением не предусмотрена):
int i=1, j, k=2; // объявление целой переменной i с начальным значением 1,
// целой переменной j без начального значения
// и целой переменной k с начальным значением 2
2.2.“Линейные” операторы
Следом за “линейным” оператором всегда выполняется следующий (расположенный непосредственно за ним) оператор. К “линейным” операторам относятся, например, операторы присваивания и ввода-вывода, а также “пустой” оператор.
Пустой оператор в программе представляется отдельной точкой с запятой, которая в данном случае завершает “пустое” (отсутствующее) действие. Наличие в языке такого, на первый взгляд, ненужного оператора, в действительности является весьма полезной и востребованной (особенно на этапе обучения) возможностью.
2.3.Операторы управления программой
Операторы управления программой (управляющие операторы) влияют на последовательность выполнения операторов программы.
2.3.1.Условный оператор if (if-else)
Условный оператор if позволяет выбрать один из двух возможных вариантов выполнения действий в зависимости от выполнения определенного условия. Условие – это логическое выражение, то есть выражение, результатом которого является логическое значение (true (“истина”) или false (“ложь”)).
Оператор if имеет две формы – полную (с else)
if ( условие )
оператор_1
else
оператор_2
и сокращенную (без него):
if ( условие )
оператор_1
Полная форма оператора if означает, что если условие истинно, выполняется оператор оператор_1, если ложно – оператор оператор_2.
Сокращенная форма записи оператора if означает, что оператор_1 выполняется, если условие истинно. Она эквивалентна полной форме с пустым оператором после else:
if ( условие )
оператор_1
else ;
Если в случае истинности или ложности условия необходимо выполнить несколько операторов, их следует заключить в фигурные скобки:
if (x < 0)
{
x = -x;
cout << "Changing a sign of x";
}
a = x;
В качестве операторов оператор_1 и оператор_2 в операторах if (if-else) могут применяться любые операторы, в том числе и другие операторы if (if-else), то есть операторы if (if-else) могут быть “вложенными”.
Истинность условия определяется вычислением его логического значения (true или false). Помимо операций сравнения ( > , >= , < , <= , = = , !=), логическое значение выдают также логические операции. Стандартные логические операции – это бинарные операции “логическое И” (&&) и “логическое ИЛИ” (||) и унарная операция “логическое НЕ” (!). Операндами логических операций являются логические выражения. Использование логических операций позволяет объединять несколько простых условий в более сложное, например,
if ((a>=c) && (b>=c))
cout << c;
Операция && дает результат “истина” (true), если оба ее операнда истинны, и “ложь” (false) во всех других случаях. Операция || дает результат “ложь”, если оба ее операнда ложны, и “истина” во всех других случаях. Результат операции ! противоположен значению ее операнда.
Операции сравнения и логические операции имеют более низкий приоритет по сравнению с арифметическими операциями. Это означает, что в выражении, содержащем и логические и арифметические операции, арифметические операции будут выполняться раньше логических, например, p>s+t вычисляется как p>(s+t).
Ниже показаны сравнительные приоритеты операций сравнения и логических операций:
-
Высший
!
> >= < <=
= = !=
&&
Низший
||
В соответствии с этой таблицей, например, составное условие предыдущего примера
(a>=c) && (b>=c)
можно записать без двух пар скобок:
a>=c && b>=c
поскольку приоритет операции сравнения “больше или равно” выше, чем приоритет логического И.