Разветвляющаяся алгоритмы. Условные операторы •Ветвление - выбор пути решения задачи в соответствии с выполнением или невыполнением некоторого условия выбора. • Для записи условий используются логические выражения, которые также называют условными выражениями. Простые и сложные условия • Простое условие - это два выражения, между которыми помещается знак сравнения. Примеры записи простых условий: A>0, C<=D, B<>0 и т. д. • Сложное условие - это последовательность простых условий, заключенных в круглые скобки, которые соединены между собой знаками логических операций: And (и), Or (или), Not (не). Примеры записи сложных условий: (A>B) AND (B>C), (A>=B) OR (A<=C) OR (A=D) и т. д. Таблица истинности логических операций Значение операндов А В Результат операции А AND В А OR В NOT A False False False False True False True False True True True False False True False True True True True False Двойной условный переход • Однострочная форма записи: If Условие Then Оператор1 Else Оператор2 • Многострочная форма записи: If Условие Then < Операторы1 > Else < Операторы2 > End if Одинарный условный переход • Однострочная форма записи: If Условие Then Оператор1 • Многострочная форма записи: If Условие Then < Серия1> End if Условный переход с использованием Elseif If условие 1 Then [Серия 1] [ElseIf условие 2 Then [Cерия 2 для ElseIf] ... [ElseIf условие n Then [Cерия n для ElseIf] [Else [Cерия для Else]] End If Оператор выбора Select Case Select Case <Переменная Выбора> Case <Значение 1> <Серия Операторов 1> Case <Значение 2> < Серия Операторов 2> ... Case < Значение k> < Серия Операторов k> Case Else < Серия Операторов > End Select Задача 1 • Составить блок-схему и программу вычисления значений составной функции: 4 X ,еслиX 4 y 7 X 1, еслиX 4 для X=-2; 4; 5 Блок-схема задачи 1 Начало Ввод Х да нет Х >= 4 Y = 4 * Sqr(X) Y=7*X Вывод Y,X Конец Процедура программы задачи 1 Sub задача1() Dim X As Single, Y As Single X = Val(InputBox("Введите X")) If X >= 4 Then Y = 4 * Sqr(X) Else Y=7*X End If MsgBox "Y=" + Str(Y) + " при X=" + Str(X) End Sub Задача 2 Составить блок-схему и программу, в которой определяется полугодие года (первое или второе) по номеру введенного месяца. Блок-схема задачи 2 Начало Ввод N N>0 и N<13 Нет Да Нет N<=6 Вывод: II полугодие Да Наберите правильно номер месяца Вывод: I полугодие Конец Процедура программы задачи 2 Sub Задача2() Dim N As Integer N = Val(InputBox("Введите номер месяца")) If (N > 0) And (N < 13) Then If (N > 0) And (N <= 6) Then MsgBox "I полугодие" Else MsgBox "II полугодие" End If Else MsgBox "Введите правильно номер месяца" End If End Sub Задача 3 По номеру введенного весеннего месяца (переменная n) определить название месяца. Если считать, что n – номер введенного весеннего месяца, то фрагмент кода программы будет следующий: If n = 3 Then Print " март" ElseIf n = 4 Then Print "апрель" ElseIf n = 5 Then Print "май" Else Print "набран номер не весеннего месяца" End If Задача 4 По номеру дня недели (переменная n), введенного с клавиатуры, определить половину недели (дни с 1-го по 3-й – первая половина недели, 4,5-й – вторая половина, 6-й – выходной день суббота, 7-й - выходной день воскресенье). Фрагмент программы задачи 4 Если считать, что n – номер дня недели, то фрагмент кода программы будет следующий: Select Case n Case 1 To 3: Print "Первая половина недели" Case 4, 5 Print "Вторая половина недели" Case 6: Print "Выходной день - суббота" Case Else Print "Выходной день - воскресенье" End Select Задания для подготовки к тестированию Задание 1. Задан фрагмент алгоритма, в котором пропущено условие: Если X>Y то A=Y Иначе A=X Все Если ___ то A=A*A Иначе A=A*2 Все Вставьте такое условие, чтобы при X=2, Y=1 результатом выполнения алгоритма стало A=1 Решение задания 1 Задан фрагмент алгоритма, в котором пропущено условие: Если X>Y то A=Y Иначе A=X Все Если A<1 то A=A*A Иначе A=A*2 Все Вставьте такое условие, чтобы при X=2, Y=1 результатом выполнения алгоритма стало A=1 Задание 2 Задан фрагмент алгоритма, в котором пропущено условие: F=0 Если _____ то F=1 Если F=1 то Вывод «ДА» Иначе Вывод «НЕТ» Вставьте условие так, чтобы данный фрагмент алгоритма выяснял, является ли Z гипотенузой прямоугольного треугольника со сторонами X,Y,Z. Решение задания 2 Задан фрагмент алгоритма, в котором пропущено условие: F=0 Если X^2+Y^2=Z^2 то F=1 Если F=1 то Вывод «ДА» Иначе Вывод «НЕТ» Вставьте условие так, чтобы данный фрагмент алгоритма выяснял, является ли Z гипотенузой прямоугольного треугольника со сторонами X,Y,Z. Задание 3 Задан фрагмент алгоритма: 1. Если a<0 то a=-a 2. Если b<0 то b=-b 3. Если (a>b) то a=a-b иначе b=b-a В результате выполнения данного алгоритма с начальными значениями a=-13; b=5 переменные примут значения… Решение задания 3 Задан фрагмент алгоритма: 1. -13<0 → a=-a → a=13 2. 5 не <0 → b=5 3. (13>5) → a=13-5 → a=8 В результате выполнения данного алгоритма с начальными значениями a=-13; b=5 переменные примут значения: a=8; b=5 Задание 4 Задан фрагмент алгоритма, в котором пропущено условие: Если X<0 то X=-2*X Иначе X=3*X Все Если _____ то A=X*Y Иначе A=X-Y Все Вставьте условие так, чтобы при X=-5, Y=-1 результатом выполнения алгоритма стало A=11 Решение задания 4 Задан фрагмент алгоритма, в котором пропущено условие: Если X<0 то X=-2*X Иначе X=3*X Все Если Y>0 то A=X*Y Иначе A=X-Y Все Вставьте условие так, чтобы при X=-5, Y=-1 результатом выполнения алгоритма стало A=11 Задание 5 При начальном значении F=-5 по окончании работы программы Если F>0 то F=F*F иначе F=-F*3 Вывод F будет выведено … Решение задания 5 При начальном значении F=-5 по окончании работы программы F=-5 →F<0 → F=-F*3 →F=-(-5)*3 →F=15 Вывод F будет выведено число 15 Задание 6 Круг радиуса R входит в прямоугольник со сторонами a и b, если: 1)4*R^2<=a^2+b^2 2)R<=a или R<=b 3)R>a/2 или R>b/2 4)R<=a/2 и R<=b/2 Решение задания 6 Круг радиуса R входит в прямоугольник со сторонами a и b, если: 4)R<=a/2 и R<=b/2 Задание 7 Значение переменной d после выполнения фрагмента алгоритма (операция mod(x,y) – получение остатка целочисленного деления х на y, diy(x,y) целочисленное деление х на y) k=50 выбор при div (k,12) = 4 d=k при div (k,12) > 5 d=2 при mod (k,12)>9 d=3 иначе d=1 все равно … Решение задания 7 Значение переменной d после выполнения фрагмента алгоритма (операция mod(x,y) – получение остатка целочисленного деления х на y, diy(x,y) - целочисленное деление х на y) k=50 div (50,12) = 4 →d=k →d=50 равно 50 Задание 8 При начальном значении A=-5 по окончании работы программы Если A>0 то A=A*2 Иначе Если A<0 то A=-3*A Иначе A=A+10 Все Все Вывод A будет выведено … Решение задания 8 При начальном значении A=-5 по окончании работы программы будет выведено число 15, так как A<0→ A=-3*A → A=15