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

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 23

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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


Инструкции управления программным потоком

Инструкция безусловного перехода

Инструкции условного перехода

Инструкции циклов

Обработка исключительных ситуаций

Инструкция условного ветвления if else используется для разветвления процесса вычислений на два направления

if (условие) инструкция_1; [else инструкция_2;]

Сначала вычисляется логическое условие в скобках. Если условие истинно, то выполняется следующая инструкция или блок кода. Если условие ложно, то выполняется инструкция или блок кода, следующий за else.

if(условие) //принимает значение true или false { блок кода } else { блок кода }

Блок выполняется если условие равно «true»

Блок выполняется если условие равно «false»

Одна из ветвей может отсутствовать: как правило, опускают вторую ветвь с ключевым словом else.

if(условие) //принимает значение true или false { блок кода }

Блок выполняется если условие равно «true»

Если условие равно «false» управление передается на инструкцию следующую за if

Блок схемы для условного перехода


инструкция

1

true

false

условие

инструкция

2

true

false

инструкция

условие

полная форма ветвления

неполная форма ветвления

Примеры инструкции 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; //a=a/2 b *= 2; //b=b*2 } else { a *= 2; //a=a*2 b /= 2; //b=b/2 }

Примеры инструкции 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;

Вложение 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; }

Пример вложения 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

Тернарный оператор ?:


Тернарный условный оператор ?: имеет 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;

Замена оператора ?: на 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;

Инструкция выбора switch


Управление передается в точку программы, где целочисленное выражение совпало с case-константой и выполняется до оператора break. Если ни с одной из case-констант совпадения нет, то управление передается на конструкцию с default-меткой, при условии ее наличия, в противном случае ни один из операторов не выполняется.

Синтаксис

switch(выражение) { case CONST1: ... break; case CONST2: ... break; default: ... }

Блок «по умолчанию»

Целочисленное выражение

Блок выполняется если выражение равно «CONST1»

Блок выполняется если выражение равно «CONST2»

Примеры инструкции 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

Замена инструкции 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";

}

Итерации и циклы


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

Циклы представляют собой наиболее распространенные языковые конструкции для выполнения итераций.

Цикл while


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

Синтаксис

while(условие) { тело цикла }

true

false

тело цикла

условие

принимает значение либо true, либо false

Пример с циклом while


Пример кода

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

//точка выхода из while

Цикл do-while


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

Синтаксис

do { тело цикла } while(условие);

true

false

тело цикла

условие

принимает значение либо true, либо false

Пример с циклом do-while


Пример кода

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

//точка выхода из do-while

Цикл for


Цикл for является циклом с предпроверкой условия. В цикле могут инициализироваться переменные до начала его выполнения, проверяться условие и выполняться выражение после каждого выполнения тела цикла.

Синтаксис

for(инициал.;условие;выражение) { тело цикла }

true

false

тело цикла

условие

выражение

инициализация

Пример с циклом for


Пример кода

int N = 10; long f = 1; for(int i = 1; i <= N; i++) f *= i; // f = f * i;

cout << "f = " << f << endl;

Сравнение двух циклов


Пример 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;

Инструкция continue


Инструкция 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;

Инструкция 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;

Инструкция безусловного перехода goto


Инструкция goto позволяет реализовать передачу программного управления из одной точки программы в другую, отмеченную меткой. Метка состоит из идентификатора и завершающего двоеточия.

Пример кода

... a = b + c; goto M5;

...

M5: d = e - a; ...

«Обоснованное» применение инструкции 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: // выход из двойного цикла

«Избавление» от инструкции 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;

}