
Блоки (составные операторы)
Блок - это возможно пустой список операторов, заключенный в фигурные скобки:
{ a=b+2; b++; }
Блок позволяет рассматривать несколько операторов как один.
Условные операторы
Оператор if.
if (выражение) оператор1 [else оператор2]
Пример:
if(i<j) i++; else j++;
if(i==0) {i++;f(i+j);} else {i--;g(i+j);}
Обратите внимание, что так как в первом случае оператор1 – это оператор выражения, он заканчивается ‘;’.
Во втором случае у нас составной оператор, он ‘;’ не заканчивается.
Оператор switch. Предназначен для организации выбора из нескольких вариантов.
switch(выражение)
{
[case константное-выражение1:список-операторов1]
[case константное-выражение2:список-операторов2]
…
[default:[список-операторов]]
}
Пример:
int i=2;
switch(i)
{
case 1: i+=2;
case 2: i*=3;
case 0: i/=2;
case 4: i-=5;
default:;
}
Результатом будет -2. Дело в том, что если какое-то условие подошло, то далее начинаются выполняться все операторы до самого конца оператора switch. Для того чтобы предотвратить это, используется оператор break. Оператор выполняет досрочный выход из блока. Наш пример следует переписать следующим образом:
int i=2;
switch(i)
{
case 1: i+=2;break;
case 2: i*=3;break;
case 0: i/=2;break;
case 4: i-=5;break;
default:;
}
Циклы
Оператор for – наиболее общий способ организации цикла. Имеет следующий формат:
for(выражение1;выражение2;выражение3)оператор
Выражение1 обычно используют для установки начального значения переменных, управляющих циклом. Выражение2 – это выражение, определяющее условие, при котором тело цикло будет выполняться. Выражение3 определяет изменения переменных, управляющих циклом, после каждого тела цикла. Схема выполнения такова:
- вычисляется выражение 1
- вычисляется выражение 2
- если значение выражение 2 отлично от 0 (истина), выполняется тело цикла, вычисляется выражение3 и происходит переход к пункту 2; если выражение2 = 0 (ложь), то управление передаётся на следующий оператор.
#include <iostream.h>
main()
{
int i,b;
for(i=1;i<10;i++)b+=i*i;
cout << b << end;
return 0;
}
Оператор while - цикл с предусловием.
while (выражение) оператор
аналогичен в pascal
Оператор do while – цикл с постусловием.
do оператор while(выражение);
Тело цикла выполняется хотя бы один раз. Если выражение ложно, выполнение цикла заканчивается, иначе продолжается. Аналогичен repeat в pascal, только пишется не условие окончания, а условие продолжения.
Пример:
int i=2;
do i+=2; while(i<10);
cout << i;
В теле циклов можно использовать операторы break и continue. break выходит из тела цикла, continue передаёт управление на очередную итерацию.
Функции
Определение функции имеет вид:
[спецификатор_типа]имя_функции([список_формальных_параметров])
{тело_функции}
Такие языки, как Pascal, делают различие между процедурами и функциями, но в C++ функции играют обе роли. Спецификатор_типа задаёт тип возвращаемого значения функции. Если не указан, то функция возвращает значения типа int. Если функция ничего не возвращает, в спецификаторе типа ставится void.
Cписок_формальных_параметров – последовательность объявлений формальных параметров, разделённая запятыми.
Даже если функция не имеет параметров, наличие круглых скобок обязательно, вместо параметров рекомендуется указать ключевое слово void.
Тело функции – составной оператор.
Функция возвращает значение с помощью оператора
return выражение;
Пример:
//функция, вычисляющая произведение двух чисел
int mul(int x,int y)
{
return x*y;
}
Следует помнить, что параметры в функцию передаются по значению. Например, в следующей функции есть ошибка:
void change(int x, int y)
{
int k=x;
x=y;
y=k;
}
main()
{
int a=3,b=7;
change(a,b);
}
Здесь формальные параметры x и y меняются местами, но значения a и b останутся неизменными. В исправленная версию функции аргументы передаются по ссылке:
void change(int &x, int &y)
{
int k=x;
x=y;
y=k;
}