Transcript Ветвление
Ветвление (развилка) – это такая форма организации действий, при которой в зависимости от выполнения или невыполнения некоторого условия совершается либо одна, либо другая последовательность действий 1 Ветвление Неполное да УВ Полное нет да УВ нет Х Х1 Х2 IF <УВ> THEN <X>; IF <УВ> THEN <X1> ELSE <X2> ; Выполнение программы может пойти двумя различными (альтернативными) путями. 2 НЕПОЛНОЕ ветвление да нет При выполнении одной из ветвей никаких изменений данных, 3 поступающих на вход, не происходит. ПОЛНОЕ ветвление да нет 4 РЕШЕНИЕ ЗАДАЧ ДАНО: значения данных переменных А и В. Даны значения двух величин, выбратьопределим большее как из них. ПОЛУЧИТЬ: результат сохраним в Max Program Primer1; Начало А, В, Max – числа вещественного типа. Var A, B, Max: real; Begin МАТЕМАТИЧЕСКИЕ СВЯЗИ: Max = A, если А > В Ввод А, В Write(‘Введите два числа ’); Max = В, если В > А Readln(A,B); да нет If A > B then Max:= A else Max:=B; А>В Writeln(‘Большее:’, Max:5:1); Max:=A Max:=B Readln; End. Анализ результатов. Для проверки работоспособности данной Вывод Max программы ее необходимо выполнить как min 2 раза: 1. А = 1, В = 2. 2. А = 2, В = 1. Конец 5 Результат: Большее: 2.0 Вопрос: по какой ветви пойдет выполнение программы в случае А = В ? Начало Другой вариант решения этой же задачи Ввод А, В Max:=A да В > Max Max:=В Вывод Max Конец нет Program Primer2; Var A, B, Max: real; Begin Write(‘Введите два числа ’); Readln(A,B); Max:= A; If B > Max then Max:= B; Writeln(‘Большее:’, Max:5:1); Readln; End. Анализ результатов: 1. Введите два числа 1 2 Большее: 2.0 2. Введите два числа 2 1 Большее: 2.0 6 Даны значения трех величин, выбрать большее из них. Напишите в тетради Начало • условие задачи Ввод А,В,C • что дано; да А>В Max:=A да нет Max:=B С > Max Max:=C Вывод Max Конец нет • что получить; • тип данных; • связи между исходными данными и результатами Напишите программу для Спишите данного алгоритма. предложенный Проведите анализ алгоритм результатов. 8 Начало Второй вариант решения задачи Ввод А,В,C да да Max:=A А>C A>B нет нет да Max:=B Max:=C B>C нет Max:=C Вывод Max ЗАДАНИЕ. Конец 1. Проанализируйте каким образом соединяются алгоритмические конструкции при решении9 данной задачи первым и вторым вариантами. Program Primer4; Var A, B, C, Max: real; Begin Write(‘Введите три числа ’); Readln(A,B,С); If A > B then if A > C then Max:=A else Max:=C else if B > C then Max:=B else Max:=C; Анализ результатов: Writeln(‘Большее:’, Max:5:1); 1. А = 1, В = 2, С = 3; Readln; 2. А = 1, В = 3, С = 2; 3. А = 2, В = 1, С = 3; End. 4. А = 2, В = 3, С = 1; Для какого варианта написана данная программа? 5. А = 3, В = 1, С = 2; Спишите программу в тетрадь рядом с соответствующим ей 6. А = 3, В = 2, С = 1. вариантом алгоритма. Известны радиус круга и сторона квадрата. Задача У какой фигуры площадь больше? Распечатать сообщение: «Площадь … больше. S…=…» R A Skr = Pi*R2 Skv = A*A 11 Дано: R – радиус круга; R, A A – сторона квадрата. (вещественные числа) Skr=Pi*R*R Получить: Skv=A*A да Skv >Skr Площадь квадр > Skv Сообщение «Площадь квадрата больше. Skv = …» нет или «Площадь круга больше Skr = …» Площадь круга > Skr Sкруга = πR2; Sквадрата = А2 12 Program Primer5; Var r,a,skr,skv: real; Begin write(‘Введите радиус круга ’); readln(r); write(‘Введите сторону квадрата ’); readln(а); skr:= Pi*r*r; skv:=a*a; If skr > skv then begin writeln(‘Площадь круга больше больше’); writeln(‘Skr = ‘,skr:5:1) end else begin writeln(‘Площадь квадрата больше’); writeln(‘Skv = ‘,skr:5:1) end; ВНИМАНИЕ! End. В случае, если после Then (Else) более одного оператора 13 используются операторные скобки (Begin – End) При вложении более трех структур ВЕТВЛЕНИЯ возрастает вероятность появления ошибок. В этом случае рекомендуется использовать алгоритмическую конструкцию ВЫБОР 14 Дано X, вычислить Y(x) Задача -x , если х ≤ 0; Y = x, если 0 < х ≤ 2; 2, в остальных случаях. y 2 x 0 2 20 Анализ результатов: X да Обратите внимание на условие! X<= 2 нет X<= 0 1. Х = -1, Y = 1; 2. Х = 0, Y = 0; 3. Х = 1, Y = 1; 4. Х = 5, Y = 2; 5. Х = 2, Y = 1; да Y=-X Y= X X<= 2 нет Y=2 X, Y 21 Напишите программу для данного алгоритма. (При написании применяйте Дано X, вычислить Y(x) Cамостоятельная работа Y= -x , если х ≤ 0; x, если х > 0; y Написать алгоритм, программу. 2 Провести анализ результатов x 0 2 22 Y= - x - 1 Y= x + 1 Y= - x + 1 Y= x - 1 y 1 x -1 0 1 Определить что дано, что надо получить. Написать условие задачи в виде функции. Написать алгоритм, программу. Провести анализ результатов 23 Какое значение будет иметь переменная x после выполнения операторов? 1. y := 7; z:= 4; If y - z >= 3 Then x := y Else x := z; x:= x +4; 2. y := 7; z:= 4; If y - z >= 3 Then x := y Else begin x := z; x:= x +4; end; 3. x := 0; z := 5; y := 5; If z > 2 Then If y > 2 Then x:= 1 Else x := 2; 24 y := 7; z:= 4; If y - z >= 3 Then x := y Else x := z; x:= x +4; y := 7 z:= 4 да y - z >= 3 нет x := z x := y x:= x +4 25 y := 7; z:= 4; If y - z >= 3 Then x := y Else begin x := z; x:=x +4; end; y := 7 z:= 4 да x := y y - z >= 3 нет x := z x:= x +4 26 x := 0; z := 5; y := 5; If z > 2 Then If y > 2 Then x:= 1 Else x := 2; x := 0 z := 5 y := 5 да нет z>2 да x := 1 y>2 нет x:= 2 27 Задача: «Оптимальный вес» Написать программу, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным и выдает рекомендацию о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в см) – 100. Рекомендуемый вид экрана во время работы программы: Введите в одной строке через пробел рост (см) и вес (кг) затем нажмите <Enter> --> 170 68 Вам надо поправиться на 2.00 кг. 28 Математическая модель Дано: rost – рост пользователя; ves – вес пользователя. (Вещественные числа) Получить: оптимальный вес – opt_v (вещест. число), сравнить его с реальным и дать рекомендацию: «Вам надо поправиться на opt_v – ves кг», если ves < opt_v «Вам надо похудеть на ves – opt_v кг», если ves > opt_v «Ваш вес оптимален!», если ves = opt_v Связи: opt_v = rost – 100 29 Задание: • Написать алгоритм в виде блок-схемы. • Проверить верно ли написан алгоритм для теста. (Сколько раз надо проверять?) • Набрать программу. • Проанализировать полученный результат. • Списать программу в тетрадь 30 Известны площадь круга и площадь квадрата Уместится ли круг в квадрате? R A Skv = A*A Skr = Pi*R2 A = √ Skv R = √ Skr/Pi 31 R R A 2R < A A 2R = A R 2R > A A 32 Алгоритм ветвления на бытовую тему Планы на вечер да Почитаю книгу В 19 часов будет дождь? нет Пойду гулять 33 Решение задач 1) Задача: Известны два расстояния: одно в километрах, другое – в футах (1 фут = 0.45 м). Какое из расстояний меньше? • Задание: Написать алгоритм и программу на ЯП Паскаль. Проанализировать полученный результат. 2) Задача: Известны две скорости: одна в километрах в час, другая – в метрах в секунду. Какая из скоростей больше? • Задание: Написать алгоритм и программу на ЯП Паскаль. Проанализировать полученный результат. 34 Перевод: 1 фут = 0.45 м = 0.00045км 1м = 20/9 фут 1км = 20000/9 фут Перевод: 1 км/час = 1000/3600=10/36 м/сек. 1м/сек = 36/10 км/час 35 Известны два расстояния: одно в километрах, другое – в футах (1 фут = 0.45 м). Какое из расстояний меньше? Km,Fut Fut_km=0.00045*Fut да В км < Km < Fut_km нет В фут < 36 Известны площадь круга и площадь квадрата Уместится ли квадрат в круге? A R R A A <= R√2 A > R√2 Решение задач 37