русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-06-12; просмотров: 956; Нарушение авторских прав


Оператор Goto, имеющийся во многих алгоритмических языках, включая и Турбо Паскаль, можно с полным правом назвать «злосчастным». В разгар моды на структурное программирование он подвергся сильным гонениям, ибо было доказано, что можно вообще программировать без него. Из-за того же Goto здорово доставалось Фортрану и раннему Бейсику, большей частью справедливо, так как от пары десятков переходов вдоль и поперек программа не становится более понятной.

Но на практике выбор между чистотой идеи (структурное программирование) и элементарным удобством (использование Goto) был предрешен, и в структурном Паскале мы можем использовать безусловные переходы по программе.

Полный синтаксис оператора перехода — это

Goto Метка; {103}

где метка — описанный в блоке LABEL идентификатор (цифры от 0 до 9999 или собственно идентификатор). Метка может стоять в программе «где угодно» между операторами. При этом каждая метка может появиться только один раз (рис. 6.3):

LABEL m10, m20, StopLabel, 1; VAR i : ShortInt; BEGIN 0001: IF i<10 THEN Goto m10 ELSE Goto m20; ... m10 : WriteLn('i меньше 10'); Goto StopLabel; m20 : i := i - 1; ... Goto 1; StopLabel: END.

Рис. 6.3

Метка от оператора должна отделяться символом «:». Если метка обозначается цифрой, то предшествующие нули не являются значащими. Так, на рис. 6.3 метки 1 и 0001 эквивалентны. Обычно метки размещаются у операторов, но могут стоять и у слова END, что означает переход на конец текущего блока BEGIN...END (на рисунке это еще и выход из программы). Перед BEGIN метки не ставятся. Следует избегать переходов (и расстановки меток), передающих управление внутрь составных операторов циклов, да и вообще переходов в составные операторы, вложенные в тот, где выполняется оператор Goto. Другое дело — выход из вложенных операторов во внешние. В таких случаях применение Goto — достаточно безопасный и максимально эффективный способ вернуть управление внешнему оператору.



Область действия операторов перехода и связанных с ними меток строго локализована. Метки, описанные вне процедур или функций, имеют своей областью действий только основной блок программы. Но метки, описанные внутри определения процедур или функций, имеют смысл только внутри них, поэтому запрещены переходы по Goto между процедурами и между процедурами и основным блоком. {104}

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



<== предыдущая лекция | следующая лекция ==>
Оператор цикла с параметром (FOR...DO) | Операторы Exit и Halt


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.183 сек.