Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование на паскале2.doc
Скачиваний:
144
Добавлен:
31.03.2015
Размер:
935.94 Кб
Скачать

1.614. Структура паскаль-программы

В этом разделе дано более строгое и подробное (по сравнению с предыдущими разделами) описание структуры паскаль-программы.

Программа состоит из заголовка и блока. Общий вид заголовка:

programИмя_программы;

Имя программы должно являться идентификатором (см. §1.2.1)

Блок программы состоит из следующих разделов:

раздел меток (LABEL);

раздел констант (CONST);

раздел типов (TYPE);

раздел переменных (VAR);

раздел процедур (PROCEDURE) и функций (FUNCTION);

раздел действий.

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

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

Далее дается краткая характеристика каждого из разделов.

Раздел меток

Любой исполняемый оператор может быть снабжен меткой. В стандартном Паскале метка - это целая положительная константа. Метка отделяется от оператора двоеточием. Все используемые в блоке метки должны быть описаны в разделе LABEL. На помеченные операторы можно перейти с помощью оператора безусловного перехода goto. Структурное программирование ограничивает использование меток и операторов безусловного перехода, поэтому в данном пособии они не рассматриваются.

Раздел констант

Громоздкие, часто встречающиеся константы могут быть обозначены в разделе констант - см. также §1.2.4. Общий вид описания констант:

имя_константы=значение_константы

Раздел типов

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

Имя_типа=описание_типа

Пример:

CONST N=20;

TYPE

MAS1=ARRAY[1..N,1..7] OF REAL;

Кроме массивов, в Паскале имеются другие нестандартные типы. К ним, например, относятся тип перечисление и тип отрезок.

Тип перечислениезадается перечислением тех значений, которые может принимать данное этого типа. Описание типа:

Имя_типа=(значение_1,значение_2,...,значение_N);

Каждое значение именуется некоторым идентификатором. Значения считаются упорядоченными:

значение_1<значение_2< ...<значение_N.

Примеры перечисляемых типов: DAY=(SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURDAY,FRIDAY,SATURDAY);

COLOR=(BLACK,BROWN,GREEN,YELLOW,WHITE).

Переменные этих типов должны быть описаны в разделе VARобычным образом:

DATE:DAY; PAINTER:COLOR.

Применение перечисляемых типов делает программу более наглядной за счет выбора подходящих идентификаторов для значений типа. Понятней, например, в качестве индекса использовать названия дней недели, а не целые числа от 1 до7. Кроме того, применение перечисляемых типов повышает надежность программы, так как для переменных этих типов осуществляется контроль на допустимость значений.

В дальнейшем нам понадобится термин "порядковый тип". Порядковый тип- это тип, для которого все допустимые значения могут быть некоторым образом упорядочены (перенумерованы). Типыinteger, char, boolean, перечисления являются порядковыми. Заметим, что типrealне считается порядковым, хотя, принимая во внимание ограниченное число разрядов, отводимое на представление вещественного числа в памяти ЭВМ, значения типа REAL можно упорядочить.

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

Общий вид описания ограниченного типа:

Имя_типа=нижняя_граница..верхняя_граница

Нижняя граница не должна превышать верхнюю. Базовый тип определяется типом границ.

Пример описания ограниченных типов:

ktype=1..20;

workday=MONDAY..FRIDAY;

color1=BROWN..YELLOW;

Для типа ktype базовый тип - INTEGER, для типа workday - DAY, для типа color1 - COLOR.

Пример описания переменных ограниченных типов:

К:ktype; N,N1,N2:workday; col:color1;

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

Задание ограниченного типа и типа перечисления может производиться не в разделе TYPE, а непосредственно при описании переменных. Например,

i: 1..100; color10: (blue,red yellow, green);

Раздел переменных

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

VAR

<список1 имен переменных>:<тип1>;

<список2 имен переменных>:<тип2>;

. . .

<списокN имен переменных>:<типN>;

Пример.

CONST N=10;

TYPE color=(white,grey,blue,black,red);

MAS1=ARRAY[1..N,1..3];

VAR i,j:INTEGER; A:BOOLEAN; B,C:MAS1; L:color; M:1..N;

Q:ARRAY[1..50] OF INTEGER;

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

Раздел действий

Этот раздел имеет вид:

BEGIN

операторы

END.

Напомним (см. §1.1), что операторы - это выполняемые инструкции языка, т.е. инструкции, которые переводятся в одну или несколько машинных команд. Операторы отделяются друг от друга символом ";".