1.43M
Категория: ПрограммированиеПрограммирование

Операторы разветвления и организация их прерывания. Тема 3

1.

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ИМЕНИ МУХАММАДА АЛ-ХОРАЗМИЙ
ПРОГРАММИРОВАНИЕ 1
SWD1316
ТЕМА
03
Операторы разветвления и
организация их прерывания
АБДУЛЛАЕВА ЩАМИРА
ШАМШАДДИНОВНА
Доцент кафедры Основы
информатики
1

2.

Разветвленные алгоритмы
План:
1. Разветвляющий алгоритм;
2. Условный оператор if;
3. Оператор выборки switch;
4. Операторы goto, break, continue;
5. Заключение.
П РО Г РА М М И РО ВА Н И Е 1
2

3.

Разветвленные алгоритмы
Разветвленные алгоритмы предусматривают выбор
маршрута выполнения программы в зависимости от
истинности или ложности некоторых условий. Это
обеспечивается наличием в программе специальных
операторов,
которые
иногда
называют
конструкциями принятия решений:
1) if
2) if - else
3) switch.
П РО Г РА М М И РО ВА Н И Е 1
3

4.

Условный оператор if
• Синтаксис оператора if имеет вид:
• if (выражение) оператор;
• Если оператор, выполняемый при истинности условия
выражения, единственный или если таких операторов
несколько:
П РО Г РА М М И РО ВА Н И Е 1
4

5.

Условный оператор if
if (выражение) {
оператор1;
оператор2;

операторN;
}
• Здесь под выражением понимается любое логическое
выражение или любое выражение, значение которого приводимо
к целочисленному значению. Если его значение истинно, то
оператор будет выполняться.
П РО Г РА М М И РО ВА Н И Е 1
5

6.

Блок-схема
Начало
Ввод a,b
max = b;
да
a > b?
нет
Неполный вид
ветвления
max = a;
вывод max
конец
П РО Г РА М М И РО ВА Н И Е 1
6

7.

Программа
void main()
{
int a, b, max;
printf(“Введите 2 целых числа\n");
scanf("%d%d", &a, &b );
max = b;
> b )
if ( a???
???= a;
max
printf(«Максимальное число %d", max);
}
П РО Г РА М М И РО ВА Н И Е 1
7

8.

Условный оператор if else
• Оператор if может иметь две ветви, одна из
которых является альтернативной. Синтаксис
оператора if - else имеет вид:
• if (выражение)
• оператор1;
• else
• оператор2;
П РО Г РА М М И РО ВА Н И Е 1
8

9.

Условный оператор if else
• если после if и else находится по одному оператору, или
• if (выражение) {
оператор1;
оператор2;
•}
else {
оператор3;
оператор4;
• }
П РО Г РА М М И РО ВА Н И Е 1
9

10.

Разветвляющий алгоритм
Задание. Введите две целых числа и выводите максимальное
число из них на экран.
Логика решения: На экране должно выйти 1-число, если он
больше 2-го числа, и 2-число, если он больше 1-го числа.
Различные способы: решение задачи зависит от нескольких
условий (если … или …).
Если алгоритм выполняет последовательно несколько
условий, то он называется разветвляющим.
П РО Г РА М М И РО ВА Н И Е 1
10

11.

Программа
void main()
{
int a, b, max;
cout<<“Введите 2 целых числа\n”;
cin>>a>>b;
if (a > b) {
Полный вид
max = a;
}
else {
условного
оператора
max = b;
П РО Г РА М М И РО ВА Н И Е 1
}
cout<<“Максимальное число “<<max;
}
11

12.

Найдите ошибку?
if
a > b ) {
a = b;
}
else
b = a;
(
if ( a > b ) a = b;
else
b = a;
П РО Г РА М М И РО ВА Н И Е 1
if ( a > b ) {
a = b; }
else
b = a;
if ( a > b ) {
a = b;
c = 2*a; }
else
b = a;
12

13.

Вложенные ветвления
В качестве внутренних операторов оператора if
могут использоваться любые операторы, в том
числе и условные. Другими словами, в операторе
if
допустимо
применение
вложенных
конструкций:
П РО Г РА М М И РО ВА Н И Е 1
13

14.

Вложенные ветвления
if (выражение1) оператор1;
else if (выражение2) оператор2;
else if (выражение3) оператор3;
else if (выражениеN) операторN;
else // необязательная часть
оператор_по_умолчанию;
П РО Г РА М М И РО ВА Н И Е 1
14

15.

Вложенные ветвления
• В качестве внутренних операторов оператора if могут
использоваться любые операторы, в том числе и
условные. Другими словами, в операторе if допустимо
применение вложенных конструкций:
• if (x<=0){ y=exp(x)+x; cout<<“y=e^x+x”<<y<<endl; }
• else if (x>0&&x<=7) {y=tan(3*x);
cout<<“y=tg3x”<<y<<endl;}
• else if (x>7) {y=x-6; cout<<“y=x-6”<<y<<endl;}
П РО Г РА М М И РО ВА Н И Е 1
15

16.

Тернарная операция условия
• Условная операция является трех операндной и имеет
синтаксис:
• переменная = выражение? значение1: значение2;
• Такая запись является аналогом условного оператора
• if (выражение) переменная = значение1;
else переменная = значение2;
П РО Г РА М М И РО ВА Н И Е 1
16

17.

Тернарная операция условия
• Условный оператор и условное выражение в результате
компиляции формируют практически идентичный код.
Разница состоит в том, что в случае условного
оператора обращение к переменной происходит дважды; следовательно, дважды вычисляется ее адрес, а в
случае условной операции - лишь один раз. С другой
стороны, с точки зрения понимания программы
условный оператор намного лучше.
П РО Г РА М М И РО ВА Н И Е 1
17

18.

Тернарная операция условия
• Например, следующий код с условным оператором
• if (a > b)
• c = a;
• else
• c = b;
• можно записать в виде выражения
• с = (a > b) ? a : b ; /* c = max(a,b) */
• Скобки в первом операнде ставить необязательно, но
рекомендуется, поскольку это улучшают восприятие текста
программы.
П РО Г РА М М И РО ВА Н И Е 1
18

19.

Оператор множественного выбора
Если в программе необходимо выбрать один из многочисленных
вариантов, то вместо вложенных конструкций if - else более
целесообразно применять оператор-переключатель switch, иначе
называемый оператором множественного выбора.
• Его синтаксис: switch (выражение)
• {case значение1: оператор1;
break;
• case значение2: оператор2;
break;
• case значение3: оператор3;
break;
default: // необязательный компонент оператор_по_несравнению; //
если не было ни одного совпадения. } //end switch (выражение)
П РО Г РА М М И РО ВА Н И Е 1
19

20.

Оператор множественной выборки
Фигурные скобки, ограничивающие тело оператора
switch,
являются
обязательными.
Здесь
для
выполнения выбирается тот вариант (группа
операторов), значение которого совпадает со
значением выражения.
Оператор в каждом блоке выбора case может быть
отдельным оператором или блоком операторов.
Оператор break в каждом блоке выбора case
осуществляет выход из оператора switch.
П РО Г РА М М И РО ВА Н И Е 1
20

21.

Пример для множественной выборки
Пример. Ввести с клавиатуры символ. Если он является
символом арифметической операции, то указать, какой именно,
и привести соответствующий пример. Если не является, то
выдать сообщение об этом.
#include <iostream>
using namespace std;
int main() { char sym;
int op1, op2, res;
сout << "Введите символ арифметической операции “;
cin >> sym;
П РО Г РА М М И РО ВА Н И Е 1
21

22.

Пример для множественной выборки
switch (sym) { case'+': cout << “Сложение” << endl;
cout << “1 слагаемое:”;
cin >> op1;
cout << “2 слагаемое:”;
cin >> op2;
res = op1 + op2;
cout << op1 << “+” << op2 << “=“ << res <<
endl;
break;
П РО Г РА М М И РО ВА Н И Е 1
22

23.

Пример для множественной выборки
•case '-':
cout << “Вычитание” << endl;
cout << "Уменьшаемое:";
cin >> op1;
cout << “Вычитаемое:”;
cin >> op2;
res = op1 - op2;
cout << op1 << “-” << op2 << “=“ << res << endl;
break;
П РО Г РА М М И РО ВА Н И Е 1
23

24.

Пример для множественной выборки
case '*': cout << “Умножение” << endl;
cout << “Множимое:”;
cin >> op1;
cout << “Множитель:”;
cin >> op2;
res = op1 * op2;
cout << op1 << “*” << op2 << “=“ << res <<
endl;
break;
П РО Г РА М М И РО ВА Н И Е 1
24

25.

продолжение
case '/': cout << “Деление” << endl << “Делимое:”;
cin >> op1; cout << “Делитель:”;
cin >> op2;
if (op2 != 0)
{res = ор1 / ор2;
cout << ор1 << “/” << ор2 << “=“ << res << endl;
} else cout << “Деление на 0 запрещено “ << endl;
break;
default: cout << “Неарифметическая операция” << endl;
} // end switch (sym)
return 0; }
П РО Г РА М М И РО ВА Н И Е 1
25

26.

Операторы break, continue, goto
Часто необходимо досрочно завершить цикл. С этой
задачей успешно справляется оператор break.
Он прерывает ближайший оператор while, do while, for
или switch. Выполнение будет возобновлено с
оператора, следующего за завершаемым оператором.
break может располагаться только в цикле или
операторе switch (включая операторы и блоки,
вложенные в эти циклы). Оператор break воздействует
только на ближайший цикл или оператор switch.
П РО Г РА М М И РО ВА Н И Е 1
26

27.

Операторы break, continue, goto
#include <iostream>
using namespace std;
int main()
{ setlocale(LC_ALL, "Russian");
int i = 0; char ch;
switch (ch)
{ case 'a': cout << "input a" << endl; break;
// #1 выйти из switch
П РО Г РА М М И РО ВА Н И Е 1
27

28.

Операторы break, continue, goto
case 'b': if (i == 5) { cout << "input b " << i << endl;
} break;
//если закомментировать этот break, при вводе "b"
//будет выполняться метка default поскольку //break #2
не относится к case 'b'
// break #2 передает управление сюда
default: cout << "input " << ch << endl; break; }
return 0; }
П РО Г РА М М И РО ВА Н И Е 1
28

29.

Операторы break, continue, goto
• Оператор continue прерывает текущую итерацию
ближайшего цикла и немедленно начинает
следующую. Оператор continue может присутствовать
только в циклах while, do while, for, включая
операторы и блоки, вложенные в такие циклы. В
отличие от break, continue может присутствовать в
операторе switch, только если он встроен в
итерационный оператор.
П РО Г РА М М И РО ВА Н И Е 1
29

30.

Операторы break, continue, goto
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
for (int i = -5; i <= 5; i++) {
if (i == 0) {
cout << "Деление на 0!" << endl; continue; }
cout << i*i / i << endl; } }
П РО Г РА М М И РО ВА Н И Е 1
30

31.

Операторы break, continue, goto
•Оператор goto обеспечивает безусловный
переход к другому оператору в той же
функции. Для этого используются метки.
Предыдущий пример для continue можно
переписать без цикла for, используя goto.
П РО Г РА М М И РО ВА Н И Е 1
31

32.

Операторы break, continue, goto
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
int i = -5;
begin: //метка begin
if (i == 0) {
cout << "Деление на 0!" << endl; i++; goto begin; //перейти к метке }
else if (i <= 5) {
cout << i*i / i << endl; i++; goto begin; //перейти к метке }
else cout << "Расчет окончен" << endl; }
П РО Г РА М М И РО ВА Н И Е 1
32

33.

Операторы break, continue, goto
Использовать оператор goto не рекомендуется. Он
затрудняет понимание программ.
П РО Г РА М М И РО ВА Н И Е 1
33

34.

Заключение
Самый простой вид условных операторов это
оператор if. У этого оператора тоже есть другие
методы выборки.
Если данные условия удовлетворяют общие условия,
то тогда можно использовать форму else if.
Оператор Switch является много вариантным
оператором. Его различие от оператора if в том, что
он работает значениями заданных переменных.
П РО Г РА М М И РО ВА Н И Е 1
34

35.

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ИМЕНИ МУХАММАДА АЛ-ХОРАЗМИЙ
СПАСИБО ЗА ВНИМАНИЕ!
АБДУЛЛАЕВА ЗАМИРА
ШАМШАДДИНОВНА
Доцент кафедры Основы
информатики
35
English     Русский Правила