Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.DOC
Скачиваний:
0
Добавлен:
09.11.2018
Размер:
102.4 Кб
Скачать

49

Глава 5

Операторы языка Паскаль Операторы служат для задания (или описания) действий. Бывают про-стые и сложные (или структурные) операторы. В программах операторы от-деляются друг от друга точкой с запятой.

5.1. Простые операторы

5.1.1. Оператор присваивания

Является основным оператором. Имеет вид: a := V , где a - переменная, V - выражение.

Типы переменной a и выражения V должны совпадать. Исключе-ние: переменной вещественного типа можно присваивать значение выражения целого типа.

5.1.2. Оператор процедуры

Оператор процедуры - это имя процедуры, за которым в круглых скобках следует список фактических параметров .

Отметим упоминавшиеся стандартные процедуры ввода-вывода: Read, ReadLn, Write, WriteLn.

Возможны операторы процедуры и без списка фактических парамет-ров, например, процедуры ReadLn, WriteLn.

Оператор процедуры подчиняется общим правилам использования операторов в программах на языке Паскаль.

Подробнее о процедурах см. раздел 7.3.

5.1.3. Оператор перехода

Этот оператор имеет вид:

GOTO Lab ,

где Lab - метка - целое без знака либо идентификатор.

Метки должны быть объявлены в разделе описаний, например:

LABEL 15, forw, retn .

В тексте программы метка отделяется от помечаемого оператора двоеточием.

Метка считается локализованной внутри того блока (программы или подпрограммы), в котором она объявлена. Передача управления внутрь подпрограммы или из подпрограммы за ее пределы не допускается.

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

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

Пустой оператор не имеет начертания и не выполняет никаких действий. Не вдаваясь в детали вопроса о необходимости существования этого оператора, отметим один момент. Наличие в разделе операторов нескольких следующих друг за другом символов "точка с запятой", например

a:=1;;; b:=2

не вызовет ошибки, т.к. это означает, что между двумя операторами присваивания находится два пустых оператора. Однако подобное в разделе описаний вызовет ошибку.

5.2. Структурные операторы

Процесс переработки информации в языке Паскаль реализуется по сути дела двумя простыми операторами: присваивания и процедуры. Структурные же операторы служат для организации взаимодействия входящих в него компонентов - операторов.

5.2.1. Структурограммы (схемы Насси - Шнейдермана)

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

Структура - это либо элементарная структура, либо следование структур, либо вложенность структур.

Элементарная структура - это структура, которая не может быть деструктурирована.

Рекурсивное определение структуры означает, что любая структура, кроме элементарной, состоит из структур.

В языке Паскаль элементарной структуре соответствуют операторы присваивания и процедуры.

В структуре "следование" (рис.5.1а) структура S1 по завершении своей работы передает управление следующей за ней структуре S2. В структуре "вложенность" (рис.5.1б) охватывающая структура S1 может передать управление вложенной в нее структуре S2, хотя и не обязательно это сделает. Вложенная же структура S2 по окончании работы обязана передать управление охватывающей ее структуре S1.

Количество уровней вложенности структур не ограничивается.

.

S1 S1

S2

S2

а) следование б) вложенность

Рис.5.1. Способы взаимодействия структур

Определены 2 вида структуры “вложенность“: - выбор;

- цикл.

Структура "выбор" предполагает наличие выражения W, называемого селектором. В зависимости от значения, принимаемого селектором, управле-ние передается одной из вложенных структур. На рис. 5.2 приведены четыре разновидности структуры "выбор".

Разновидность CASE реализует выполнение одной из внутренних структур S1,...Sn в зависимости от того, какое из значений k1,...kn принимает селектор W. Если значение селекторa W не равно ни одному из k1,...kn, то разновидность CASE эквивалентна пустой структуре, а разновидность CASE-ELSE реализует выполнение структуры S, соответствующей альтернативе ELSE.

Разновидности IF-THEN и IF-THEN-ELSE являются частными слу-чаями разновидностей CASE и CASE-ELSE. В них селектор W может прини-мать лишь два значения (в языке Паскаль это TRUE,FALSE).

k1 k1

W W

ELSE

.... ... kn

kn

S1 Sn S1 Sn S а) CASE б) CASE - ELSE

w? W? да да нет

S1 S1 S2

в) IF-THEN г) IF-THEN-ELSE

Рис.5.2. Разновидности структуры "выбор"

Примечание: На чертежах вместо разновидности IF-THEN часто изо-бражают IF-THEN-ELSE, оставляя прямоугольник со структурой S2 пустым, поскольку рисунок разновидности IF-THEN может восприниматься как сле-дование двух структур.

Структура "цикл" предполагает многократное (или ни разу) выполне-ние внутренней структуры, называемой телом цикла. Существует две разно-видности структуры типа "цикл" (рис.5.3):

- цикл с предусловием;

- цикл с постусловием .

S1 S1

S2 S2

а)цикл с предусловием б)цикл с постусловием (WHILE-DO) (REPEAT-UNTIL) Рис.5.3. Разновидности структуры "цикл"

Разновидность "цикл с предусловием" предполагает, что проверка условия на окончание цикла производится перед входом в тело цикла. Это означает, что возможна ситуация, когда тело цикла не выполняется ни разу.

В разновидности "цикл с постусловием" проверка на окончание производится после выполнения тела цикла, следовательно, здесь тело цикла обязательно выполнится как минимум один раз.

Отдельного упоминания заслуживает так называемый цикл с параметром. В нем задается набор значений (от начального до конечного), которые должен принять некоторый параметр-переменная. В различных языках по разному трактуется ситуация, когда начальное значение параметра цикла выходит за пределы конечного значения. Язык Паскаль устанавливает, что в этом случае тело цикла не выполнится ни разу, т.е. такой цикл следует отнести к разновидности "цикл с предусловием".

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]