178.99K
Категория: ПрограммированиеПрограммирование

Управление программным потоком. Тема 4

1.

Тема 4.
Управление программным потоком
Факультет электротехники и автоматики

2.

Инструкции управления
программным потоком
Инструкции управления
программным потоком
Инструкция
безусловного
перехода
Инструкции
условного
перехода
Обработка
исключительных
ситуаций
Инструкции
циклов
2

3.

Инструкция условного перехода if
Инструкция условного ветвления if else используется для
разветвления процесса вычислений на два направления
if (условие) инструкция_1; [else инструкция_2;]
if(условие) //принимает значение true или false
{
Блок выполняется если
блок кода
условие равно «true»
}
else
{
Блок выполняется если
блок кода
условие равно «false»
}
Сначала вычисляется логическое условие в скобках. Если
условие истинно, то выполняется следующая инструкция
или блок кода. Если условие ложно, то выполняется
инструкция или блок кода, следующий за else.
3

4.

Инструкция условного перехода if
Одна из ветвей может отсутствовать: как правило, опускают
вторую ветвь с ключевым словом else.
if(условие) //принимает значение true или false
{
Блок выполняется если
блок кода
условие равно «true»
}
Если условие равно «false» управление передается на
инструкцию следующую за if
4

5.

5
Блок схемы для условного перехода
неполная
форма
ветвления
полная
форма
ветвления
true
инструкция
1
условие
false
инструкция
2
условие
true
инструкция
false

6.

Примеры инструкции if-else
Примеры кода
int a;
int b;
...
int c;
if(a >= b)
c = a;
else
c = b;
int d = c;
int a;
int b;
...
if(a >= b)
{
a /= 2;
b *= 2;
}
else
{
a *= 2;
b /= 2;
}
//a=a/2
//b=b*2
//a=a*2
//b=b/2
6

7.

Примеры инструкции if
Примеры кода
int a;
int b;
...
if(a < b)
{
int c = a;
a = b;
b = c;
}
int d = a;
bool a;
bool b;
...
bool c = false;
if(a == true && b == false
|| b == true && a == false)
c = true;
bool d = c;
7

8.

Вложение if-else-if
С помощью ключевых слов if и else можно составлять так
называемые if-else-if конструкции, которые могут
осуществить проверку сразу нескольких условий.
Синтаксис вложенных инструкций
if(условие 1)
инструкция 1;
else
if(условие 2)
инструкция 2;
else
if(условие 3)
инструкция 3;
else
инструкция 4;
if(условие 1) {
if(условие 2)
инструкция 1;
else
инструкция 2; }
else {
if(условие 3)
инструкция 3;
else
инструкция 4; }
8

9.

Пример вложения if-else-if
Пример кода
int a;
...
if(a >= 1000)
cout << "Очень много!" << endl;
else
if(a >= 100 && a < 1000)
cout << "Много!" << endl;
else
if(a >= 10 && a < 100)
cout << "Мало!" << endl;
else
cout << "Очень мало!" << endl;
//точка выхода из if-else-if
9

10.

Тернарный оператор ?:
Тернарный условный оператор ?: имеет 3 аргумента и
возвращает результат первого выражения, если условие
равно true, или результат второго выражения, если условие
равно false.
(Условие) ? Выражение1 : Выражение2;
Пример кода
int b, c;
cin >> b >> c; //ввод двух целых чисел
bool a = (b > c) ? true : false;
cout << "a = " << ((a) ? "true" : "false");
((a) ? b : c) = 10;
10

11.

Замена оператора ?: на if-else
Пример кода
int b, c;
cin >> b >> c; //ввод двух целых чисел
bool a;
if (b > c) a = true;
else
a = false;
if (a)
cout << "a = true";
else
cout << "a = false";
if (a) b = 10;
else
c = 10;
11

12.

Инструкция выбора switch
12
Управление передается в точку программы, где целочисленное
выражение совпало с case-константой и выполняется до
оператора break. Если ни с одной из case-констант совпадения
нет, то управление передается на конструкцию с default-меткой,
при условии ее наличия, в противном случае ни один из
операторов не выполняется.
Синтаксис
switch(выражение)
{
case CONST1: ...
break;
case CONST2: ...
break;
default: ...
}
Целочисленное
выражение
Блок выполняется если
выражение равно «CONST1»
Блок выполняется если
выражение равно «CONST2»
Блок «по умолчанию»

13.

Примеры инструкции switch
Пример кода
int note;
cin >> note; //ввод целого числа
switch(note) //целочисленное выражение
{
case 1:
case 2: cout << "Неудовлетворительно\n";break;
case 3: cout << "Удовлетворительно\n"; break;
case 4: cout << "Хорошо\n"; break;
case 5: cout << "Отлично\n"; break;
default: cout << "Ошибка\n";
}
//точка выхода из switch
//необязательно
13

14.

14
Замена инструкции switch на if-else
Пример кода
int note;
cin >> note; //ввод целого числа
if(note == 1 || note == 2)
cout << "Неудовлетворительно\n";
else if(note == 3)
cout << "Удовлетворительно\n";
else if (note == 4)
cout << "Хорошо\n";
else if (note == 5)
cout << "Отлично\n";
else
cout << "Ошибка\n";
}

15.

Итерации и циклы
15
Итерация — это повторение процесса для получения
последовательности результатов. Каждое повторение
процесса представляет собой одну итерацию, и результат
каждой итерации является отправной точкой следующей
итерации. В математике и информатике итерация является
стандартным элементом алгоритмов.
Циклы представляют собой наиболее распространенные
языковые конструкции для выполнения итераций.

16.

16
Цикл while
Цикл while является циклом с предпроверкой условия. Тело
цикла будет многократно выполняться, пока условие будет
иметь значение true.
Синтаксис
while(условие)
{
тело цикла
}
условие
true
тело цикла
принимает
значение либо
true, либо false
false

17.

Пример с циклом while
Пример кода
int a = 10;
while(a--) //тело цикла отработает 10 раз
{
cout << "Повторять пока a != 0" << endl;
}
//точка выхода из while
17

18.

18
Цикл do-while
Цикл do-while является циклом с постпроверкой, условие
проверяется после выполнения тела цикла. Следовательно,
блок кода в цикле do-while выполнится хотя бы один раз.
Цикл завершится, когда условие будет иметь значение
равное false.
Синтаксис
do
{
тело цикла
тело цикла
} while(условие);
принимает
значение либо
true, либо false
условие
true
false

19.

Пример с циклом do-while
19
Пример кода
bool a = false;
do
{
cout << "Цикл выполняется хотя бы один раз!";
}
while(a);
//точка выхода из do-while

20.

20
Цикл for
Цикл for является циклом с предпроверкой условия. В цикле
могут инициализироваться переменные до начала его
выполнения, проверяться условие и выполняться
выражение после каждого выполнения тела цикла.
Синтаксис
for(инициал.;условие;выражение)
{
тело цикла
}
инициализация
условие
true
тело цикла
выражение
false

21.

Пример с циклом for
Пример кода
int N = 10;
long f = 1;
for(int i = 1; i <= N; i++)
f *= i;
// f = f * i;
cout << "f = " << f << endl;
21

22.

Сравнение двух циклов
Пример c циклом while
double x = 5;
double y = 1;
int n = 10;
int i = 0;
while(i < n)
{
y *= x; //y=y*x;
i++;
}
cout << "y = " << y;
Пример с циклом for
double x = 5;
double y = 1;
int n = 10;
for(int i = 0; i < n; i++)
y *= x; //y=y*x;
cout << "y = " << y;
22

23.

Инструкция continue
23
Инструкция continue пропускает все инструкции, оставшиеся
до конца тела цикла, и начинает новую итерацию.
Пример кода
int N = 10;
long S = 0;
for(int i = 1; i <= N; i++)
{
if(i%2) continue; //прерывание итерации
S += i;
// S = S + i;
}
cout << "Значение S: " << S << endl;

24.

Инструкция break
Инструкция break завершает выполнение цикла и передает
управление на следующую за циклом инструкцию.
Пример кода
int N = 10;
long S = 0;
for(int i = 1; i <= N; i++)
{
if(S > 5) break; //выход из цикла
S += i;
// S = S + i;
}
cout << "Значение S: " << S << endl;
24

25.

Инструкция безусловного перехода
goto
25
Инструкция
goto
позволяет
реализовать
передачу
программного управления из одной точки программы в другую,
отмеченную меткой. Метка состоит из идентификатора и
завершающего двоеточия.
Пример кода
...
a = b + c;
goto M5;
...
M5:
d = e - a;
...

26.

«Обоснованное» применение
инструкции goto
Пример кода
while(true)
{
int N;
cin >> N;
long S = 0;
for(int i = 0; i <= N; i++)
{
S += i;
//S = S + i;
if(S > 100) goto L1;
}
cout << "Значение S: " << S << endl;
}
L1: // выход из двойного цикла
26

27.

«Избавление» от инструкции goto
Пример кода
while(true)
{
int N;
cin >> N;
long S = 0;
for(int i = 0; i <= N; i++)
{
S += i;
//S = S + i;
if(S > 100) break; //выход из цикла for
}
if(S > 100) break; //выход из цикла while
cout << "Значение S: " << S << endl;
}
27
English     Русский Правила