Ветвление
определение Разветвляющимся называется процесс, в котором естественный порядок выполнения нарушается в зависимости от условия.
ОПЕРАЦИИ ОТНОШЕНИЯ Для описания условия (логического выражения) используются следующие операции отношения: > больше = равно не равно >= больше или равно
ЛОГИЧЕСКИЕ ОПЕРАЦИИ Not – НЕ (отрицание) And – И (логическое умножение) Or – ИЛИ (логическое сложение) Xor- выбор
Логический блок Логич. Выраж. да нет
ВЕТВЬ Каждое направление вычисления называется ветвью. Каждая ветвь должна заканчиваться в блоке «конец».
Блок-схемы ветвлений Неполное ветвление Полное ветвление ДАНЕТ ДА НЕТ условие действие действие1 действие2 IF THEN ; IF THEN ELSE ;
ПРИМЕРЫ 1. If x>1 THEN y:=sqr(x)+1 ELSE y:=x-3; 2. If a>b then c:=a else c:=b; 3. If x
РАБОТА ПОЛНОГО УСЛОВНОГО ОПЕРАТОРА Если условие после слова IF выполняется, то выполняется после слова THEN, что соответствует ветви «ДА» на блок-схеме. Если условие не выполняется, то выполняется, что соответствует ветви «НЕТ» на блок-схеме.
РАБОТА КОРОТКОГО УСЛОВНОГО ОПЕРАТОРА Если условие после слова IF выполняется, то выполняется после слова THEN, что соответствует ветви «ДА» на блок-схеме. Если условие не выполняется, то управление программой передается следующему оператору, что соответствует ветви «НЕТ» на блок-схеме.
Определите по блок-схеме значение переменной y, если введено значение х=-4: y=sqr(x) y=x+5 ввод х вывод y начало конец x
Упражнение 1 Какое значение будет принимать переменная Х после выполнения фрагмента программы? 1. F:=5;D:=7; If f>=d then x:=f else x:=d; Ответ: Х= 2. a:=3;b:=4; If a>b then x:=a*b else x:=a-b ; Ответ: Х= 3. a:=53; b:=14; If ab then x:=a+b else a:=b+c; x:=a-3*b; Ответ: Х=
Упражнение 1 Какое значение будет принимать переменная Х после выполнения фрагмента программы? 5. a:=9;b:=8;c:=2; If (a>b) and (b>c) then x:=2*a+b+c else x:=a-b+c; Ответ: Х= 6. a:=1; b:=4; c:=8; If (a c) then x:=5*a-b else x:=4*a*b; Ответ: Х= 7. a:=7; b:=3; c:=6; If (a c) then x:=4*a-a*b else x:=a-b; Ответ: Х=
СЛОЖНЫЕ УСЛОВИЯ ПРИМЕР 1. Вычислить значение выражения для заданных пользователем (или случайно выбранных) значений аргументов: PROGRAM SL_USL; Var x, y, V: Real; BEGIN Write(Введите x и y:); ReadLn(x,y); If (x>2) and (y1) Then Begin V := (x+y)/sqrt(x-2)+1/abs(y-1) ; Write(V=,V:8:1); End Else WriteLn(Аргументы не входят в область допустимых значений) ; END. (x>2) и (y1) да начало x, y V Аргументы не входят в область допустимых значений нет конец Если в какую-то ветвь ветвления входит более одного действия, в Турбо Паскале эти операторы необходимо заключать в операторные скобки!
Примеры выражений и соответствующих условий Арифметическое выражение Логическое условие проверки того, принадлежат ли значения аргументов допустимой области определения ( a0) and (b0) and (a>=0.5) (x>=2) and (x-1) and (y2) (x0) and (xy) and (y>=2) (y0) and (x-2) and (y>=-3)
ПРИМЕР 2. Определить, попадёт ли точка с координатами (x,y) в заштрихованную область: x y 1 1 Область ограничивается четырьмя прямыми: y=1-x; y=-1+x; y=-1-x; y=1+x. Можно задать в условии их все. Но можно также заметить, что незаштрихованная область соответствует условию Следовательно, заштрихованная область описывается через отрицание данного условия, т.е. Not(abs(x+y)
Примеры областей и соответствующих условий ОбластьУсловие x y -2 2 (sqr(x) + sqr (y) =0) x y 2 -2 ( sqr(x)+sqr(y) >= 4) or (y =0) and (y =y) or ((x>=1) and(x=0) and(x =0) and(y =y)
Запись логического выражения PROGRAM p1; VAR a:boolean; … BEGIN a:=(sqr(x) + sqr (y) =0); IF a THEN …
Сложные ветвления IF THEN if then else ELSE if then else ; ДА НЕТ Условие 1 ДА НЕТ Условие 2 ДА НЕТ Условие 3 действие1действие2 действие3 действие4
Задача1 Определить наибольшее из 3-х чисел. Способ 1 Сравним попарно все три числа. ДА НЕТ a