Следует отметить, что данная программа реализована по неполной форме оператора CASE. Кроме того, отметим, что метка варианта – это необычная метка, так как она может принимать не только целочисленные значения, а принимать значения идентификатора, а следовательно и может отсутствовать описатель label.
Следует иметь ввиду, что существует так называемая полная форма описателя CASE.
CASE (селектор или ключ выбора) OF (список выбора)
ELSE (операторы) END;
Вышеприведѐнную программу можно реализовать по данной полной форме. Для этого сразу после END для CASE необходимо добавить следующее (в общем виде):
Else Begin
Written (‗набери селектор правильно‘);
Goto_6; End;
Таким образом, во втором варианте программы будет для оператора CASE два оператора END, стоящие рядом, не считая конца оператора.
Отметим, что в данном варианте программы присутствует так называемый оператор безусловного перехода GOTO, относящиеся к группе операторов перехода, которых три (IF, CASE, GOTO).
Поэтому и возникает необходимость более подробно рассмотреть оператор GOTO.
ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА GOTO
Отметим, что данный оператор крайне редко используется в программах на PASCAL, обычно он в программе функционирует с оператором if, но если в программе есть оператор выбора case по полной форме, то без него не обойтись.
В общем виде данный оператор можно представить.
GOTO _ N;
Где n – метка какого – либо оператора (целое число). Поэтому в вышеприведѐнной программе второго варианта по полной форме оператор CASE необходимо добавить в описатель LABEL цифру 6.
Реализуя GOTO 6 компьютер отыскивает в программе оператор, помеченный меткой 6 (в данном случае это оператор READ), пропуская все остальные операторы, и начинает реализацию программы.
Рассмотрим вариант программы с оператором CASE, оформленный по полной форме:
Program_geom; Label
1,2,3,4,5,6; Const
a=3.2; b=7.8e-1; h=2.4; f=27.4; r=4.2;
Var
S: read; N: integer;
Begin
6: Read (n); Case_n_of 1:S:=a*b; 2:S:=a*h/2;
3:S:=h*a*b/2;
4:S:=pi*r*r;
5:S:=pi*(r*r)*f/360;
else; Begin
Written (‗Введите правильно число‘);
Goto 6; End; End; Write (S); End.
Рассмотрим другие программы с использованием операторов IF и CASE.
Следующая программа демонстрирует вышеизложенный постулат о том, что несмотря на то, что в тексте программы литеры типа Char заключен в апострофы, то при вводе его с помощью read, он будет без апострофа (раздел 4.2.1.):
Program_ozencal; Vaz
uroc1: Char; Begin
Read (uroc1);
Case _uroc1_of
‗a‘:Writeln(‗отлично‘); ‗b‘:Writeln(‗хорошо‘); ‗c‘:Writeln ‗удовлетворительно‘);
‗d‘:Writeln(‗неудовлетворительно‘); end.
Проиллюстрируем вышеприведенные ограничения на примере того, что символьные данные можно только сравнивать (раздел 4.2.1.)
Program_ozenca2;
Vaz
Uroc2:Char;
Begin
Read (uroc2);
If(uroc2>=‘a‘) and (uroc2<=‘c‘)_then
Writeln(‗удовлитворительно‘)
Else_if_(uroc2=‘d‘)_oz__(uroc2=‘f‘)_then
Writeln(‗неудовлитворительно‘)
End.
ОПЕРАТОРЫ ЦИКЛА
На языке PASCAL существует три типа оператора цикла, различающиеся в основном заданным количеством циклов и заранее неизвестным количеством циклов. Рассмотрим их последовательно.
ОПЕРАТОР FOR-TO-DO
Данный оператор применим тогда, когда заранее известно количество циклов. В общем виде такой оператор можно представить:
FOR_(переменная:)=(начальное значение)_TO_(конечное значение)_DO_(какой-либо оператор)
Здесь: FOR – для; TO – до; DO – выполнить;
а значением может быть: математическое выражение целого типа, целое число или переменная целого типа.
Перевести данный оператор на русский язык можно так: для (for) какой-либо переменной в цикле
необходимо изменять свое значение от начального до (to) конечного значения, выполняя (do) при этом многократно (в цикле) какой-либо оператор.
Таким образом, в цикле (как видно из общей схемы оператора) переменная на каждом цикле получает свое новое значение, и каждое из этих числовых значений подставляется каждый раз в оператор после слова DO.
Обычно в этом операторе начальное значение меньше конечного. В этом случае переменная от своего начального до конечного значения «шагает» с шагом равным 1.
Следует отметить, что переменную в этом операторе иногда называют параметром цикла. После ключевого слова DO следует только один оператор. Если их должно быть несколько, то их необходимо заключить в операторные скобки BEGIN – END. Если операторов несколько, а операторные скобки отсутствуют, то выполнится только первый оператор в цикле, а остальные операторы будут пропущены, и все остальные будут выполнены при выходе из цикла.
В том случае, когда в этом операторе начальное значение должно быть больше конечного, т.е. переменная уменьшается с шагом 1, то вместо слова TO в данном операторе должно быть слово DOWNTO.
Рассмотрим конкретные примеры: Задача 1.
Пусть требуется составить программу для табулирования следующей функции в цикле.
y ax2 bx c ,
где а=0,1, b=3.7,
c 1,2 *10 1
Предельная изменения аргумента: