Процедура GOTO Процедура Goto - осуществляет переход в какое-нибудь место в
программе из любой ее точки. То есть с ее помощью можно "прыгать" по
программе. Обычно эти прыжки происходят из-за каких либо условий, вот
пример: Вводим два числа; Складываем их и выводим сумму на экран; Спрашиваем, повторить ли действие? Если ответ утвердительный, переходим (прыгаем) на пункт 1
данного алгоритма. Завершаем программу. В этом примере программа может выполняться бесконечно, пока
ответ пользователя будет утвердительным. Как же это сделать? Команда goto переходит к
определенному месту, которое помечается так называемой "меткой". Эти
метки - особенный тип Паскаля, можно даже сказать и не тип, а часть языка. До
того, как их использовать, метки нужно описать - сообщить Паскалю о их наличии.
Описание меток происходит также, как и описание переменных. Для описания
меток имеется специальный раздел, наподобие var только гораздо проще его. Метки
не имеют типа, нужно просто задать им имя. Раздел с метками называется label и
оформляется следующим образом: Этот пример хорошо демонстрирует использование процедуры
goto. Посмотрите внимательно на программу. Что она делает? Запрашивает два
числа и если 1-е больше чем 2-е, то повторяется сначала. Необходимые
комментарии: label -Это и есть раздел описания меток. Служебное
слово label озаглавливает этот раздел, после него идут имена меток. Если меток
несколько, то они перечисляются через запятую. First: -Так устанавливается метка в программе. Обратите
внимание на синтаксис - после имени метки ставиться двоеточие -
":". IfA
> BThengotoFirst; - А это и есть переход
при выполнении условия. Заметьте, в конструкции if...then...else отсутствует
слово else, оно нам не нужно, так как мы не делаем ничего при невыполнении
условия. А теперь давайте вспомним задачу - ввести два числа, сложить
и запросить повтор. Итак, напишем эту программу с учетом пройденного
материала: Program UseGOTO; label Again; var A,B:
Integer; S:
String; Begin Again: Write('Введите A: '); Readln(A); Write('Введите B: '); Readln(B); Writeln('A+B
= ',A+B); Write('Еще раз? (Y/N): '); Readln(S); If S = 'Y'
Then goto First; Readln; end.
Откройте Паскаль и введите эту программу. Запустите ее на
выполнение - видите, она уже полностью реагирует на действия пользователя и как
бы самостоятельно принимает решение, что делать дальше. Вот это уже полностью
интерактивная программа, хотя и простая. |