
- •Оператор объявления
- •Оператор присваивания
- •Составной оператор
- •Пустой оператор
- •Условные операторы
- •Условный оператор if
- •Вложенные операторы if
- •Конструкция if…else…if
- •Оператор выбора switch
- •Операторы организации циклов
- •Оператор цикла while
- •Оператор цикла do – while
- •Оператор цикла for
- •Способы организации бесконечных циклов
- •Вложенные циклы
- •Оператор break
- •Оператор continue
ГЛАВА 4. ОПЕРАТОРЫ ЯЗЫКА С++
Общая структура программы на С++
Оператор объявления
Оператор присваивания
Составной оператор
Пустой оператор
Условные операторы
Условный оператор if
Оператор выбора switch
Операторы организации циклов
Оператор цикла while
Оператор цикла do – while
Оператор цикла for
Способы организации бесконечных циклов
Оператор break
Оператор continue
Общая структура программы на С++
Структура простой C++-программы, которая содержит ввод или вывод информации, имеет следующий вид:
#include <iostream>
using namespace std;
int main(){
оператор_1;
…
оператор_N
system("pause"); // для задержки экрана
return 0;
}
Переводом программы с языка программирования на машинный язык и анализом её синтаксиса занимается программа-компилятор. Иногда компилятор называют более общим термином – транслятор.
Директива препроцессора – это инструкция, записанная в исходном тексте С++-программы и выполняемая препроцессором. Строка, содержащая директиву препроцессора, начинается с символа '#' и не имеет точки с запятой в конце. Директива include <iostream> подключает заголовочный файл iostream, который необходим для поддержки С++-системы ввода-вывода (т.е. обеспечивает ввод-вывод информации).
Препроцессор – это программа, которая обрабатывает исходный файл перед компиляцией, находит директивы и выполняет соответствующие действия (подключает необходимые файлы, заменяет символические аббревиатуры в программе и т. д.). Программа запускается автоматически при вызове компилятора.
using namespace std; обозначает, что используется пространство имён с именем std. Пространство имён – это некоторая объявляемая область видимости имён. Она необходима, чтобы избежать конфликтов идентификаторов. В пространстве имён std объявлена вся библиотека стандарта языка С++.
В программах на С++ предусмотрено использование комментариев – пояснительного текста, который не компилируется и, следовательно, не влияет на ход выполнения программы:
// Однострочный комментарий в С++
/* Многострочный комментарий в С++ */
Все С++-программы состоят из одной или нескольких функций. Функция – это логически завершённый фрагмент программы, который может быть вызван из других частей программы. Каждая функция имеет имя, и только одна из них называется main(). С функции main() начинается выполнение любой С++-программы, она всегда должна присутствовать в программе, и имя её менять нельзя. Если в программе только одна функция, то это функция main().
В фигурных скобках, ограничивающих функцию main(), записывается тело функции. Тело функции представляет собой последовательность операторов, задающих действия для выполнения функцией, и оно заключается в фигурные скобки, т.е. является блоком.
Оператор представляет собой законченную конструкцию языка для описания некоторого конкретного действия и завершается точкой с запятой, что указывает на конец оператора.
Для большинства ОС нулевое значение, возвращаемое функцией main(), свидетельствует о нормальном завершении программы. Оператор return используется для возврата значения из функции main() и при нормальном завершении функции должен возвращать значение 0.
// Пример 4.1. Первая С++-программа. Вычисление площади
// треугольника с длинами сторон a, b, c по формуле Герона.
#include <iostream> // для ввода-вывода
#include <math.h> // для функции sqrt()
using namespace std;
int main(){
float a, b, c; // объявление переменных a, b, c
float p, s; // объявление переменных p, s
cout<<"Vvedi a, b, c: ";
cin>>a>>b>>c; // ввод c клавиатуры
p = (a + b + c) / 2; // вычисление полупериметра
s = sqrt(p * (p - a) * (p - b) * (p - c)); // вычисление площади
cout<<"s = "<<s<<endl; // вывод на экран результата
system("pause"); // задержка экрана
return 0; // выход из main(), можно опустить
}
В теле функции main() приведённой программы объявлены переменные a, b, c, p, s, в результате чего под переменные будет выделена оперативная память в соответствии с их типом (по 4 байта).
Подключение заголовочного файла iostream обеспечивает ввод-вывод информации путём предоставления доступа к потокам ввода-вывода. Операция >> (извлечения из потока) обеспечивает считывание данных с клавиатуры через стандартный поток ввода cin (левый операнд операции), их преобразование в соответствии с типом правого операнда и присвоение полученных значений правому операнду (переменным a, b, c). Операция << (вставки в поток) обеспечивает вывод на экран через стандартный поток вывода cout значение правого операнда (строки "s=" и значения переменной s).
Подключение заголовочного файла <math.h> обеспечивает возможность использования в программе библиотечных математических функций и констант (в программе используется функция извлечения квадратного корня – sqrt()).
Оператор объявления
Все имена (идентификаторы) перед их использованием в программе на языке C++ должны быть объявлены (за исключением имени функции main()) с помощью оператора объявления. Оператор объявления состоит из названия типа и объявляемого имени (см. раздел объявление переменных). Оператор можно использовать для объявления переменных, именованных констант, функций и других данных:
int x; // объявление целой переменной x
double f, sum; // объявление f, sum типа double
Оператор присваивания
Только в том случае, когда в конце выражения с операцией (=) ставится точка с запятой, выражение становится оператором присваивания, например
x = y + z;
Оператор присваивания в С++ отличается от аналогичных операторов в других языках программирования тем, что может входить в более крупные выражения. В качестве результата оператор возвращает значение, присвоенное левому операнду. Например, следующее выражение вполне корректно:
value1 = 5 * (value2 = 8);
В данном случае сначала переменной value2 будет присвоено значение 5, после чего это значение будет умножено на 8 и результат 40 будет записан в переменную value1.
Оператор присваивания также часто применяется для присваивания нескольким переменным одинакового значения, например:
x = y = z = 0;
Составной оператор
Составной оператор (блок) представляет собой последовательность операторов, заключенных в фигурные скобки { }, например:
{
f = a + b; c = f * a; m = f * c;
}
Операторы, входящие в составной оператор, разделяются точкой с запятой.
Составной оператор может включать в себя любые операторы, в том числе и другие составные операторы:
{
f = a + b;
{ x = f * a; m = f * c; } c = f * x * m;
}
Пустой оператор
Пустой оператор в программе представляется отдельной точкой с запятой, которая в данном случае завершает пустое действие.
Условные операторы
В программировании очень редко встречаются задачи, которые можно решить, выполняя строго заданную линейную последовательность действий. Значительно чаще приходится выполнять те или иные действия, в зависимости от каких-либо условий. Для описания подобных случаев используются условные операторы, которые позволяют проверять условие и, в зависимости от его значения, выполнять различные части программы.
Условный оператор if
В С++ оператором проверки условия является оператор if который, позволяет выбрать один из двух возможных вариантов выполнения действий в зависимости от выполнения определенного условия. Общая форма записи оператора if имеет вид:
if (условие) оператор_1;[else оператор_2;]
Здесь в качестве условия понимается любое выражение, результат вычисления которого приводимо к целочисленному значению.
При выполнении оператора if сначала вычисляется условие. Если результат – истина (любое отличное от нуля значение), то выполняется оператор_1. Если результат анализа условия – ложь (значение равно 0), то выполняется оператор_2. В случае отсутствия конструкции else, оператор_1 пропускается, и управление передаётся на оператор, следующий после if. Операторы, стояшие после if и else могут быть составными. Рассмотрим примеры оператора if:
if(x < y) min = x; // нахождение минимума
else min = y; // из двух чисел x и y
cin>>val; // проверка правильности ввода
if(val < 1 || val > 10) // переменной val, которая может
cout<<"Error vvoda"; // содержать числа от 1 до 10
if(x) y = 1 / x; // вычисление y по формуле y = 1 / x,
else сout<<"Error: x = 0 \n"; // если значение x не равно 0
if(val < 0) val = -val; // абсолютная величина числа
В языке С++ имеется короткий способ записи оператора if…else с помощью условной операции (?), например:
min = (x < y) ? x : y; // нахождение min(x, y)
// Пример 4.2. Ввести с клавиатуры два целых числа a и b.
// Если значения a и b положительны, найти их произведение,
// в остальных случаях вычислить их сумму.
#include <iostream>
using namespace std;
int main(){
int a, b, rez;
cout << "Enter the number a, b: "; cin>>a>>b;
cout<<" a = "<<a<<" b = "<<b<<endl;
if(a > 0 && b > 0){rez = a * b; cout<<a<<" * "<<b <<" = ";}
else{rez = a + b; cout<<a<<" + "<<b<<" = ";}
cout<<rez<<endl;
}