1.1. Оператор goto, раздел описания меток Последовательное выполнение операторов в программе может быть нарушено оператором перехода. Общий вид оператора: goto метка; где метка - буква, либо цифра, либо набор букв и цифр, из которых первая - всегда буква, Например, М1, LI, NK. Метка, стоящая после goto, указывает, куда нужно пойти. Достигается это тем, что если в программе находится оператор goto метка; то в этой же программе обязательно имеется какой-либо оператор вида метка: оператор; который считается помеченным, и машина, встретив goto метка; не будет выполнять оператор, записанный после оператора goto метка; а перейдет к выполнению оператора метка: оператор; Иллюстрация: а: =b+с; с: = sgrt (a+exp(b)); goto M1; z: = x+y; writeln (z); M1: S: =P;
В случае, если бы не было оператора goto М1; все операторы выполнялись бы последовательно один за другим. здесь же после оператора с: =... стоит goto М1; следовательно, машина не будет выполнять z:=... и writeln..., а сразу после с: =... перейдет к выполнению оператора М: S: = Р; Метки, применяемые в программе, должны быть описаны в разделе описания меток, который желательно ставить первым среди описаний. Выглядит раздел так: Label М1, М2, L, NK; т.е. после слова Label перечисляются через запятую все метки, которые будут применяться в данном блоке (программе). Заканчивается описание символом ';'. Пример: составить программу, вычисляющую значения функции cos х, где начальное х = 0, следующее х = 0.01 и т.д.
Program Prim3; Программа будет работать следующим образом: х присвоится значение 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. |