Практикум по программированию на Pascal МОУ СОШ № 3 ОИ и ВТ Практическая работа № 6 «Ветвящиеся алгоритмические конструкции» Ветвление в алгоритме и программе осуществляется двумя способами. На основе безусловного перехода; На основе условного перехода. Метки и операторы безусловного перехода Хотя современная технология структурного программирования основана на принципе "программировать без GOTO", считается, что злоупотребление операторами перехода затрудняет понимание программы, делает ее путаной и сложной в отладке. Тем не менее, в некоторых случаях оператор безусловного перехода используется в программе. Формат оператора перехода GOTO <метка>; Метка - это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Метка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием. Действие оператора GOTO состоит в передаче управления соответствующему помеченному оператору. Правила при использовании меток: метка, на которую ссылается оператор GOTO, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы; метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна. Пример 1: program Perehod; uses crt; label metka; begin ClrScr; metka: writeln ('*’); writeln (' *’); writeln (' *’); GoTo metka; end. Внимание! Для остановки программы используйте комбинацию <Ctrl>+<Break>. Этот оператор часто приводит к зацикливанию программы, поэтому использовать его считается плохим тоном. Условный переход. Ветвление – это алгоритмическая альтернатива. По этой команде исполнитель выбирает один из путей исполнения алгоритма с непременным выходом на общее продолжение (рис.1) – подобные структуры называют полным ветвлением. Выбор происходит по какому-либо условию. Операторы 1 и 2 могут содержать как одну или несколько операций, так и один или несколько этапов, включающих в себя другие алгоритмические структуры. Запись оператора ветвления на языке программирования (полное ветвление). If <условие> then <оператор1> else <оператор2>; да нет где if - если; условие <условие> - логическое выражение; then - тогда; <onepamop> - оператор; На школьном алгоритмическом языке ветвление можно Оператор 1 Оператор 2 представить так: если <условие> то <оператор1> иначе <оператор 2> конец ветвления. Если логическое выражение истинно, то выполняется <onepamop1> , в противном случае программа переходит к Рис.1. Полное ветвление выполнению операторов, следующих за оператором if (<оператор2>, <операторЗ>,..... <onepamopN>). Если условие ложно, то НЕ выполняется <onepamop1>, а сразу выполняются следующие за ним Практикум по программированию на Pascal МОУ СОШ № 3 ОИ и ВТ операторы: <оператор2>, <операторЗ>,....., <onepamopN>. Любая встретившаяся часть ELSE соответствует ближайшей к ней "сверху" части THEN условного оператора. Перед else не ставится точка с запятой, т.к. это один оператор if ... then ... else ...; . Для наглядности программы операторы, следующие за словами else и then можно писать на следующей строке. Если за словами else и then необходимо выполнить группу операторов, то тогда используются операторные скобки begin ... end. Такая структура называется вложенной: begin if <условие> then begin < onератор 1>; нет < оператор 2>; … условие < оператор п> end да else begin Оператор < оператор 1>; < оператор 2>; … < оператор п> end; Рис.2. Неполное ветвление end. (оператор обхода) Частным случаем ветвления является неполное ветвление или структура обхода (рис.2). Она выглядит так: На школьном алгоритмическом языке If <условие> then ветвление можно представить так: <оператор>; если <условие> где if - если; то <оператор> <условие> - логическое выражение; конец ветвления. then - тогда; <onepamop> - оператор; Начало Примеры: Ввести a,b,c Задача 1: Краткая форма оператора Выбрать наименьшее значение из трех различных чисел. program zadacha; {нахождение наименьшего из трех чисел} var а ,b,c,min:real; begin writeln (‘введите значения a,b,c='); readln (a,b,c); min: =a ; if b<min then min:=b; if c<min then min:=c; writeln (‘ наименьшее число', min) end. a,b,c min=a нет b<min да min=b нет c<min да min=c Печать min Конец Блок схема к задаче 1 Практикум по программированию на Pascal МОУ СОШ № 3 ОИ и ВТ Задача 2: Полная форма оператора Составить программу для вычисления Y по заданному X: Начало y x Ввести x x, если x 0 Решение: y x, если x 0 x да x>=0 rogram zadacha; {вычислить у} var х,у:real; begin writeln ( 'введите х='); readln (x); if x>=0 then y:=x else y:=-x; writeln ( 'при х= ', x , ' y=’ , y); end. нет y=-x y=x Печать y Конец Блок схема к задаче 2 Задание 1. Какое значение будет принимать переменная x, после выполнения фрагмента программы? 1. f:=5; d:=7; if f >= d then x:=f else x:=d; Ответ: x=_______________ 2. a:=3; b:=4; if a>b then x:=a*b else x:=a-b; Ответ: x=_______________ 3. a:=53; b:=14; if a<=b then x:=a+b else x:=2*a-4*b; Ответ: x=_______________ Задание 2. Задание 3. Используя полный оператор выбора найти максимальное из двухчисел a и b. Постороить блок-схему и написать программу. Составить программу и блок схему, вычисляющую значение Y, если y sinx, при x 0, 2 1 2 sin x , впротивном случае Практикум по программированию на Pascal МОУ СОШ № 3 ОИ и ВТ Задание 4. Написать программу определения принадлежности точки А с координатами (x,y) графику: y 1 0 -1 x Дополнительное задание. Написать программу определения принадлежности точки А с координатами (x,y) графику: y 10 0,0 x Домашнее задание № 6. Задача 1: Составить программу и блок схему, x 3 - 2x 2 x, если x 1, y 2x - 5, если x 1 Задача 2: Написать программу , вычисляющую значение Y по графику: y 2 2 x