Книга: Основы программирования на языке Паскаль
а: = b +с;
с: = sgrt ( a + exp ( b ));
goto M1;
z: = x+y;
writeln (z);
M 1: S : = P ;
В случае, если бы не было оператора goto М1 ; все операторы выполнялись бы последовательно один за другим. здесь же после оператора с: =... стоит goto М1 ; следовательно, машина не будет выполнять z:=... и writeln... , а сразу после с: =... перейдет к выполнению оператора М: S : = Р ;
Метки, применяемые в программе, должны быть описаны в разделе описания меток, который желательно ставить первым среди описаний. Выглядит раздел так: Label М1, М2, L, NK ; т.е. после слова Label перечисляются через запятую все метки, которые будут применяться в данном блоке (программе). Заканчивается описание символом ';' .
Пример: составить программу, вычисляющую значения функции cos х , где начальное х = 0 , следующее х = 0.01 и т.д.
Program Prim3; Label M; Var x:real; BEGIN x:=0; M: writeln('x=',x,'cos x = ',cos(x)); x:=x+0.01;
goto M ; readln ; END .
Программа будет работать следующим образом: х присвоится значение 0 ; writeln выведет на экран текст, который указан в первых кавычках х = , далее извлечет из ячейки х значение и выведет его на экран; затем снова выведет текст cos х = , затем вычислит значение cos х и выдаст его на экран, т.е. машина выведет первую строку в виде
x = 0.0000000000Е + 00 cos х = 9.9999999999Е - 01.
После этого возьмется то х , которое было извлечено из ячейки памяти х (прежнее значение х ), т.е. 0.0 , к нему прибавляется величина 0.01 и результат снова занесется в ячейку памяти х так, что в х будет 0.01 , после этого оператор goto m ; передаст управление оператору, помеченному меткой м , т.е. оператору writeln, и машина выдаст новую строку:
x = 1.0000000000Е - 02 cos х = 9.9995000041Е - 01;
– выполнит оператор
х: =x + 0.01, получит х = 0.02;
– выведет строку
x = 2.0000000000Е - 02 cos х = 9.9980000666Е – 01;
– сделает х = 0.03 и т.д., до бесконечности, так как в данном алгоритме окончание работы не предусмотрено. Для завершения работы следует применить оператор if .
3.3. Оператор if
Общий вид: If булевское выражение then оператор else оператор;
Работа оператора: вначале вычисляется булевское выражение, значение которого в конечном итоге может быть только TRUE или FALSE. Если булевское выражение TRUE, то выполняется оператор, следующий за словом then , а затем происходит переход к оператору, следующему за if . Если булевское выражение false , то выполняется оператор, следующий за словом else , затем происходит переход к оператору, следующему за оператором if .
Замечание : после оператора, следующего за then, перед else символ ';' не ставится, так как оператор if еще здесь не закончен, а ';' ставится после окончания оператора. Возможно применение сокращенного оператора if :
If булевское выражение then оператор;
Здесь, если булевское выражение true, выполняется оператор, следующий за словом then , и происходит переход к оператору, следующему за оператором if . Если булевское выражение false , то оператор if игнорируется (вообще не выполняется), а выполняется оператор, следующий за if .
Переделаем "бесконечную" программу п. 3.2. в такую, которая остановится тогда, когда х станет равным 0.1 .
Program Prim4; Label M; Var x:real;
BEGIN x:=0;