Управляющие конструкции языка

Оператор безусловного перехода

Практически невозможно научить хорошо программировать студентов, ориентированных первоначально на Бейсик: как потенциальные программисты они умственно оболванены без надежды на исцеление.

Эдсгер Дейкстра.

В языке программирования Delphi, и следовательно в системе программирования Delphi 7 поддерживаются современные методологии проектирования программ (нисходящее, модульное проектирование, структурное программирование).

Концепция структурного программирования пришла в свое время на смену линейному программированию, реализованному в таких языках программирования как Бейсик. В настоящее время наиболее применяемой является структурная концепция программирования. В структурном программировании принят естественный порядок выполнения программы: все операторы выполняются последовательно один за другим в том порядке, как они записаны. Для структурированных программ характерны легкость отладки и корректировка, низкая частота ошибок.

Описанный в данной главе безусловный оператор, строго говоря просто "запрещен" структурной концепцией как грубо нарушающий ее основные принципы, и является "атавизмом", оставшимся как воспоминание о более примитивном линейном программировании. Система программирования Delphi обладает достаточно мощными средствами, позволяющими полностью отказаться от применения этого оператора.

Указывая все описанные выше причины, настоятельно рекомендуется вообще отказаться от использования оператора безусловного перехода, или свести его применение к минимуму. если же вы все-таки решили применить его в своей программе, то вы должны помнить, что использовать этот оператор следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного (составного) оператора, т.к. он может дать неправильный результат, с помощью оператора перехода, расположенного вне условного оператора или оператора цикла, нельзя перейти внутрь этого условного оператора или оператора цикла и т.д.

Оператор безусловного перехода

Оператор безусловного (быстрого) перехода GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора.

Форма записи оператора

GOTO <метка>

Он указывает, что в дальнейшем работа программы должна продолжаться с оператора, на котором стоит <метка>. оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана в операторе GOTO, и описана в разделе описания меток.

Описание меток

Метки, используемые в Delphi, могут быть двух типов:

·     целым числом в диапазоне от 0 до 9999;

·     обычным идентификатором.

Все перечисленные метки должны быть перечислены в разделе объявления меток, начинающимся зарезервированным словом Label, например:

Label: 1, 2, Metka;

Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием. Метка может устанавливаться перед любым оператором, в том числе и перед пустым оператором. Например:

1: LabelN.Caption:='Привет!';

Пустой оператор

Пустой оператор не предписывает никаких действий. По определению он представляет собой пустую совокупность символов. Как и все операторы, пустой оператор может быть помечен меткой.

Пример программы

Найти частное от деления двух чисел.

Procedure TForm1.Button1Click(Sender:TObject);

Label: Out;

Var x,y,res:Real;

Begin

x:=StrToFloat(Edit1.Text)  // Вводим делимое

y:=StrToFloat(Edit2.Text); // Вводим делитель

If y=0 then                          //Ветвление

            Begin

            Label1.Caption:='Деление на ноль!';

            GоTо Out;               // Использование GоTо

            End;

Res:=x/y;

Label1.Caption:=FloatToStr(Res); // Вывод частного

 

Out:                                     //Метка на "пустой" оператор

End;

Контрольные вопросы

1.  Назовите причины нежелательного использования оператора безусловного перехода.

2.  Что такое метка? как она описывается и использывается?

3.  Что такое "пустой" оператор?

 

 

На главную.
Используются технологии uCoz