- •Внимание! Серым цветом выделен необязательный материал! Глава «Введение» - также для общего развития.
- •Курс лекций по программированию на языке Pascal Содержание курса
- •Введение
- •Программное управление компьютером
- •Этапы разработки программного обеспечения. Языки программирования.
- •Языки программирования
- •Трансляция
- •Алгоритмы и структурное программирование
- •Основные структуры алгоритмов. Понятие о структурном подходе к разработке алгоритмов
- •Методы разработки программного обеспечения
- •Структуры данных
- •Сортировка
- •Стратегии распределения памяти
- •Объектно-ориентированное программирование
- •Базовые элементы языка тurbo рascal
- •Алфавит
- •Константы и переменные
- •Выражения и операции
- •Структура программы
- •Типы данных языка тр
- •Простые типы
- •Целые типы
- •Логический тип
- •Символьный тип
- •Перечисляемый тип
- •Вещественный тип
- •Математические функции
- •Математические процедуры
- •Структурированные типы
- •Массивы
- •Множества
- •Процедуры преобразования
- •Совместимость и преобразование типов
- •Управляюшие структуры языка turbo pascal Операторы
- •Простой и составной оператор
- •Условный оператор
- •Оператор множественного выбора
- •Оператор цикла "пока" (с предусловием)
- •Оператор цикла "до" (с постусловием)
- •Оператор цикла с параметром (цикл по счетчику)
- •Оператор безусловного перехода
- •Процедуры и функции
- •Особенности функций
Оператор безусловного перехода
Оператор goto, который имеется во многих алгоритмических языках, в свое время был подвергнут гонениям, как противоречащий принципам структурного программирования. Ибо было доказано, что можно вообще программировать без него. Однако хотя язык Pascal является классическим языком структурного программирования, в нем тем не менее существует этот оператор. Т.е. выбор между чистотой идеи (структурное программирование) и элементарным удобством (использование goto в отдельных случаях) был сделан в пользу последнего. Полный синтаксис оператора безусловного перехода:
goto <метка>;
где метка - описанный в блоке Label идентификатор (может начинаться с цифры). Метка может стоять в программе в любом месте между операторами и отделяется от второго оператора двоеточием ":". Каждая метка может появляться только один раз.
Label
L1, L2;
Begin
…
goto L1;
…
L1 : goto L2;
…
L2 :
End.
В примере программа, дойдя до goto L1, сразу заканчивается. Можно ставить метки перед словом end, хотя это не оператор (перед begin нельзя). Следует избегать переходов внутрь составных операторов, вложенных в тот, где выполняется оператор goto (особенно если это составные операторы цикла). Наиболее распространены случаи использования goto при выходе из вложенных операторов во внешние, в частности для преждевременного выхода из операторов цикла.
Область действия операторов безусловного перехода строго локализована. Метки, описанные в основном блоке, действуют только в нем, и не распространяются на процедуры и функции. Запрещены переходы по оператору goto между процедурами, а также между процедурами и основным блоком.
Есть два оператора, похожих на goto, предназначенные для выхода из программных блоков (процедур, функций, основного программного блока). Это бывает удобно, т.к. позволяет завершить программу или процедуру без предварительного перехода к меткам.
К таким операторам завершения относятся вызовы системных процедур Exit и Halt. Вызов Exit завершает работу своего программного блока. Т.е. если Exit выполняется в процедуре, то ее выполнение завершится и ход программы вернется к следующему за вызовом этой процедуры оператору. При этом процедура вернет значения, которые успели вычислиться к моменту выполнения Exit (если она должна их возвратить). Сама программа не прервется. Но если Exit выполняется в основном блоке, выход из нее будет эквивалентен нормальному ее завершению. В принципе, процедура Exit избыточна, т.к. эквивалентна оператору goto на метку, стоящую перед последним словом end. Но ее использование позволяет избежать лишней возни с метками и улучшает читаемость программы. Процедура Halt (более полно Halt(n)) действует менее разборчиво. Независимо от того, где она находится, ее выполнение завершает работу программы с кодом завершения n. Этот код впоследствии может быть проанализирован в среде MS-DOS. Имеет смысл при нескольких вызовах Halt в тексте программы назначить им разные коды завершения. Тогда можно будет при отладке или работе определить, чем вызвано прерывание программы.
