• альтернатива – выбор одного из двух или нескольких направлений исполнения операторов;
• цикл – повторное исполнение операторов до соблюдения некоторого условия.
Альтернатива и цикл представлены в Паскале несколькими операторами, из которых программист выбирает тот, что лучше подходит к решаемой задаче (рис. 77).
Рис.77 – Управляющие структуры языка Паскаль
Итак, для организации альтернативы может быть использован один из трех операторов:
• неполный условный оператор IF-THEN;
• полный условный оператор IF-THEN-ELSE;
• оператор выбора CASE-OF-ELSE-END.
Для организации циклов программист также применяет три оператора:
• цикл с проверкой условия в конце REPEAT-UNTIL;
• цикл с проверкой условия в начале WHILE-DO;
• цикл со счетчиком FOR-TO-DO и FOR-DOWNTO-DO.
Обратите внимание на условия продолжения циклов WHILE-DO и REPEAT-UNTIL, – они взаимно противоположны! Первый из них выполняется, пока условие истинно, а второй – пока оно ложно.
Странно, что из этих немногих структур лепятся столь сложные программы!
Структура программы
Программа на Паскале состоит из ряда секций (Section – «часть», «раздел»). Под структурой программы будем понимать взаимное положение этих секций. На рис. 78 показана упрощенная структура программы.
Рис.78 – Структура программы на языке Паскаль
Каждую секцию открывает своё ключевое слово. Три секции: Const, Type и Var – образуют описательную часть программы. Здесь компилятор черпает информацию о размещении данных в памяти. Секции с описаниями процедур и функций и главная программа формируют исполнительную часть, – здесь содержатся исполняемые операторы (секция кода). Все секции, кроме главной программы, необязательны. Но, при необходимости, секции могут повторяться и чередоваться в любом порядке, соблюдая два простых правила:
• любой объект программы – будь то константа, тип, переменная или процедура – объявляется до своего применения;
• главная программа располагается в тексте последней (хотя исполнение начинается именно с нее!).
Два слова о точке с запятой (;). В описательной и в исполнительной частях программы её назначение слегка различается. Если в объявлениях точка с запятой завершает оператор и обязательна, то в секции кода она разделяет операторы и не нужна за последним оператором блока.
Структура процедур и функций
Процедуры и функции – основные строительные блоки программ, в крупных проектах их сотни. Главная программа обычно содержит несколько операторов, а основная работа отдается процедурам и функциям. Такой подход не только упрощает разработку, отладку и понимание программ, но и существенно уменьшает их размер (объём занимаемой памяти). Всё, что требует алгоритм, достигается вызовом одних процедур и функций из тела других, – то есть применением вложенных вызовов. Глубина вложения таких «матрешек» практически не ограничена. Опытный программист обычно разбивает большую программу на ряд мелких и простых процедур и функций.
Внутренняя структура процедур и функций схожа со структурой программы. Это своего рода программы в программе, потому их и называют подпрограммами. На рис. 79 показана упрощенная структура процедуры с условным именем ABC.
Рис.79 – Структура процедуры
Такой же структурой обладают и функции, которые, в отличие от процедур, возвращают значение некоторого типа. Правила чередования секций внутри подпрограмм – локальных секций – точно такие же, как и для секций программы в целом, а именно:
• любой объект объявляется до своего применения;
• тело процедуры или функции обязательно и размещается последним.
Объявленные внутри подпрограммы константы, типы и переменные – локальные объекты – видны лишь внутри этой подпрограммы. При совпадении их имен с глобальными объектами, локальные имеют преимущество, то есть закрывают собою внешние объекты.
Обмен данными с подпрограммами
Вызов процедур и функций обычно сопровождается передачей данных между вызываемой подпрограммой с одной стороны и вызывающим её фрагментом с другой. Иначе говоря, данные либо передают внутрь подпрограммы, либо получают от нее. Иногда делают и то, и другое. Существует три способа такого обмена:
Читать дальше