Ветвящиеся алгоритмические конструкции

advertisement
Практикум по программированию на 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
Download