Similar presentations:
Управление программным потоком. Тема 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.
Инструкция выбора switch12
Управление передается в точку программы, где целочисленное
выражение совпало с 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-while19
Пример кода
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.
Инструкция continue23
Инструкция 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