Continue
Break
For
While
If
Операторы ветвления и цикла
if (выражение) оператор1;
else оператор2;
Если выражение истинно, выполняется оператор1, иначе выполняется оператор2. Секция else необязательна.
while (выражение) оператор;
Цикл с предусловием. Оператор выполняется, пока выражение истинно.
Есть также цикл с постусловием:
do оператор while (выражение);
Цикл for выглядит следующим образом и в общем случае не является циклом с заданным числом повторений (в отличие, например, от ЯВУ Pascal):
for (инициализация; условие_выполнения_цикла; изменение_переменых) оператор;
Например,
for (x=0;x<10;x++) a+=f(x);
Оператор break используют для выхода из циклов for / while и ветвления switch. Для вложенных циклов выход осуществляется на один уровень.
Данный оператор вызывает принудительный переход к следующей итерации цикла. Например, требуется сложить все целые числа от a до b не кратные трём.
for(int i=a, s=0; i<b; i++)
{
if (i%3==0) continue; //переходим к следующему значению i
s+=i;
|
|
}
switch
Структура записи оператора switch следующая.
switch(переменная)
{
case значение1: группа_операторов1; break;
case значение2: группа_операторов2; break;
…
default: группа_операторов_по_умолчанию;
}
При равенстве переменной «значению1», выполняется соответствующая группа операторов, которая заканчивается словом break. При несовпадении ни с одним из значений, выполняется секция default.
Формально, секции «case …:» являются метками, на которые осуществляется переход при совпадении значений. Именно поэтому после перехода на метку выполняются все команды до конца секции switch-case либо до оператора break. Этим можно пользоваться для уменьшения дублирования кода. Например, пусть задано условие: если переменная x равна 0, то вызвать функцию f1(), а если равно 2, то вызвать f1() и f2().
switch(x)
{
case 2: f2(); //не используем break, т.к. требуется выполнение и следующей команды.
case 0: f1(); //не используем break, т.к. дошли до конца.
}
Объявляются следующим образом:
возвращаемый_тип имя_функции(список_формальных_параметров)
{
ТЕЛО ФУНКЦИИ
}
список формальных параметров представляет собой перечисление через запятую пар «тип данного» – «имя переменной» (имя переменной может отсутствовать).
Для функции, которая не возвращает значения (аналог процедуры в Паскале), предусмотрен тип данных void.
Функции, возвращающие значение, должны обязательно содержать оператор "return возвращаемые_данные". На данном операторе происходит возврат из функции независимо от того, есть ли дальше другие операторы.
Пример.
int sum(int x, int y)
{
return x+y;
}
Для функций типа void можно использовать return без аргументов для явного выхода из функции в требуемом месте.
|
|
Описание функции обязательно должно быть раньше (выше) в тексте программы, чем любой её вызов. Функция может быть описана без реализации (упреждающее описание). В этом случае тело функции не записывают, а после описания её заголовка ставят «;». Также при упреждающем описании могут не указываться имена переменных. Реализация функции должна обязательно присутствовать далее в тексте программы.
Пример:
void myfunc(int, int);
// здесь продолжение кода с вызовом myfunc
void myfunc(int x, int y) {…}
Допустимо явно не указывать параметры функции, для этого используется многоточие в конце списка параметров. В этом случае компилятор контролирует только явно указанные аргументы. Никаких специальных средств по работе с неявно указанными параметрами функции языки «С» и «С++» не предоставляют, но известно, что переданные фактические параметры располагаются в памяти последовательно после явно указанных.
Языки «С» и «С++» разрешают использование рекурсии, то есть вызова функцией самой себя.
Пример (функция вычисления факториала):
long fact(int k)
{
if (k<0) return 0;
if (k==0) return 1;
return k*fact(k-1);
}
Язык «С++» предоставляет дополнительные возможности:
– перегрузка функций – несколько функций могут иметь одно имя и тип, но разный набор формальных аргументов, в этом случае компилятор сам выбирает подходящую функцию по фактическим аргументам;
– параметры по умолчанию;
– подставляемые (inline) функции.