Похожие презентации:
Лекция №3. Операторы ветвления. Операторы перехода (1)
1.
Лекция №3. Операторыветвления. Операторы
перехода
2.
• Операторы ветвления выбирают в программе среди несколькихединственный вариант вычислительного процесса
3.
• Оператор if (оператор условия)4.
Существуют формы записи:if (условие) оператор;
if (условие) оператор-1; [else оператор-2;]
if(инициализация; условие)
{
//операторы
}
5.
условия, далее выполнение осуществляется по следующей схеме:- если выражение истинно (т.е. отлично от 0), то выполняется
оператор_1.
- если выражение ложно (т.е. равно 0),то выполняется оператор-2.
- если выражение ложно и отсутствует оператор-2 (в квадратные
скобки заключена необязательная конструкция), то выполняется
следующий за if оператор.
6.
Пример:… if (i < j) i++;
else { j = i-3; i++; }…
7.
• Допускается использование вложенных операторов if.Оператор if может быть включен в конструкцию if или в
конструкцию else другого оператора if. Чтобы сделать
программу более читабельной, рекомендуется группировать
операторы и конструкции во вложенных операторах if,
используя фигурные скобки. Если же фигурные скобки
опущены, то компилятор связывает каждое ключевое слово
else с наиболее близким if, для которого нет else.
8.
Пример:int main ( )
{
int t=2, b=7, r=3;
if (t>b)
{ if (b < r) r=b;
}
else r=t;
}
9.
Пример://Следующий фрагмент иллюстрирует вложенные операторы if:
… char ZNAC; int x,y,z;
….
if (ZNAC == '-') x = y - z;
else if (ZNAC == '+') x = y + z;
else if (ZNAC == '*') x = y * z;
else if (ZNAC == '/') x = y / z; …
10.
11.
12.
13.
14.
Оператор switchОператор switch предназначен для организации выбора из
множества различных вариантов.
Формат оператора (синтаксис) следующий:
switch ( выражение )
{ [ case константное-выражение1]: [ список-операторов1]; break;
[ case константное-выражение2]: [ список-операторов2]; break;
…
[ case константное-выражениеn]: [ список-операторовn]; break;
[ default: [ список операторов ] break;]
}
15.
• Выражение, следующее за ключевым словомswitch в круглых скобках, может быть любым
выражением, допустимыми в языке С++, значение
которого должно быть целым. Значение этого
выражения является ключевым для выбора из
нескольких вариантов
16.
• Тело оператора switch состоит из нескольких операторов,помеченных ключевым словом case с последующим константным
выражением. Использование целого константного выражения
является недостатком. Так как константное выражение
вычисляется во время трансляции, оно не может содержать
переменные или вызовы функций. Обычно в качестве
константного выражения используются целые или символьные
константы.
17.
• Список операторов может быть пустым, либосодержать один или более операторов. Причем в
операторе switch не требуется заключать
последовательность операторов в фигурные
скобки.
18.
Схема выполнения оператора switchследующая:
- вычисляется выражение в круглых скобках;
- вычисленные значения последовательно сравниваются с
константными выражениями, следующими за ключевыми словами
case;
- если одно из константных выражений совпадает со значением
выражения, то управление передается на оператор, помеченный
соответствующим ключевым словом case;
- если ни одно из константных выражений не равно выражению, то
управление передается на оператор, помеченный ключевым
словом default, а в случае его отсутствия управление передается на
следующий после switch оператор.
19.
• Конструкция со словом default может быть не последней в телеоператора switch.
• Ключевые слова case и default в теле оператора switch
существенны только при начальной проверке, когда
определяется начальная точка выполнения тела оператора
switch.
• Все операторы, между начальным оператором и концом тела,
выполняются вне зависимости от ключевых слов, если только
какой-то из операторов не передаст управления из тела
оператора switch.
• Выход из case используется оператор break. Для того, чтобы
выполнить одни и те же действия для различных значений
выражения, можно пометить один и тот же оператор
несколькими ключевыми словами case.
20.
21.
Пример:• … int i=2;
switch (i)
{
case 1: i += 2;
case 2: i *= 3;
case 0: i /= 2;
case 4: i -= 5;
default: ;
• }
22.
Пример:• … char ZNAC;
• int x,y,z;
• … switch (ZNAC)
• {
case '+': x = y + z; break;
case '-': x = y - z; break;
case '*': x = y * z; break;
case '/': x = u / z; break;
default : ;
}
23.
• Использование оператора break позволяет внеобходимый момент прервать
последовательность выполняемых операторов в
теле оператора switch, путем передачи управления
оператору, следующему за switch.
• В теле оператора switch можно использовать
вложенные операторы switch, при этом в
ключевых словах case можно использовать
одинаковые константные выражения.
24.
Пример:• … switch (a)
{
case 1: b=c; break;
case 2: switch (d)
{ case 0: f=s; break;
case 1: f=9; break;
case 2: f-=9; break;
}
case 3: b-=c; break;…
}
25.
• В одном операторе switch не может быть двухконстант, имеющие одинаковое значение, хотя
оператор switch, включающий в себя другой
оператор switch, может содержать аналогичные
константы.
• Отличие оператора switch от оператора if
заключается в том, что он может выполнять только
операции строгого равенства, в то время как if
может вычислять логические операции.
26.
Операторы перехода• В ряде случаев возникают ситуации, когда необходимо прервать
выполнение блока операторов вне зависимости от каких-либо
условий.
• В языке C++ определены четыре оператора перехода:
break, continue, return и goto.
• Операторы break и continue можно использовать в любом из
операторов цикла. Заметим, что вход в тело цикла из оператора,
расположенного вне этого цикла, невозможен. Возможны выход
из цикла до его нормального завершения и обход части цикла
при некоторых условиях. Оператор break можно также
использовать в операторе switch. Операторы return и goto можно
использовать в любом месте внутри функции.
27.
Оператор break• Оператор break применяется в двух случаях. Вопервых, в операторе switch с его помощью
прерывается выполнение последовательности
case.
• Во-вторых, оператор break используется для
немедленного прекращения выполнения цикла
без проверки его условия и передачи управления
оператору, следующему после оператора цикла
28.
29.
Оператор continue• оператор continue немного похож на
оператор break. Оператор break
вызывает прерывание цикла, а
continue – прерывание текущей
итерации цикла и переход к
следующей итерации
30.
31.
• /* производится генерация случайных чисел с помощью функции rand() до тех пор, пока небудет найдено 10 нечетных чисел*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
InitRoutin() /*создаем функцию инициализации генератора случайных чисел*/
{ printf("Инициализация генератора случайных чисел \n");
srand(time(NULL)); /*объявлена в time.h*/
return 0; }
main()
{ int count=0; for (InitRoutin(); count<10;)
{ int val=rand(); /*rand()–генератор случайных чисел, объявлена в stdlib.h*/
if (val %2==0)
/*проверка на четность*/
{ putchar ('.');
continue;// передается управление на начало цикла: }
count ++;
printf ("Найдено нечетное число: %d\n",val); }
return 0; }
32.
Оператор gotoОператор goto осуществляет безусловную передачу
управления на метку в пределах текущей функции.
Метка – это идентификатор с двоеточием, ставится
перед оператором, которому надо передать
управление.
Синтаксис:
M: …
…
goto M; /* М – метка*/
33.
34.
• Данный оператор затрудняет пониманиепрограммы и нарушает ее структуру. В
большинстве случаев его можно заменить
оператором break или continue.
• Использование goto считается допустимым при
организации выхода из глубоко вложенного цикла,
хотя уже одно это (чрезмерная вложенность и
неожиданный выход сразу из нескольких циклов)
может свидетельствовать о плохой структуре
программы.
Программирование