Файл: Инструкция безусловного перехода Инструкции условного перехода Инструкции циклов Обработка исключительных ситуаций.pptx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.12.2023
Просмотров: 24
Скачиваний: 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;
}