Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 3_2.pdf
Скачиваний:
26
Добавлен:
11.02.2016
Размер:
1.22 Mб
Скачать

Если используется служебное слово to, то значение индекса увеличивается на 1 после каждого выполнения цикла. Если используется downto, то индекс будет соответственно уменьшаться на 1. Для иллюстрации принципа работы оператора цикла с простым счетчиком воспользуемся программой из предыдущего примера, изменив ее следующим образом:

program Hello; var

Count : integer; begin

for Count := 1 to 10 do Writeln('Проход цикла # ', Count);

Writeln('Конец работы'); end.

Как видно из примера, в заголовке цикла организован счетчик повторений, содержание которого сохраняется в форме значения управляющей переменной-индекса (в данном примере она имеет имя Count). Значение индекса (параметра цикла) меняется на 1 после каждого прохождения цикла, создавая основу для проверки выполнения заданного числа повторений. Основное достоинство такой организации цикла проявляется при обработке массивов, когда управляющая переменная используется для выборки на обработку последовательных значений элементов массива.

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

Достоинствами оператора являются краткость и наглядность, возможность использования в качестве значений индекса данных символьного и перечислимого типов,

атакже диапазонов значений индекса.

Взаключение отметим, что конструкция, аналогичная циклу for, может быть

реализована и другими средствами, например, с помощью оператора while, как это показано на следующих фрагментах программ:

С использованием for

for Index := Expr1 to Expr2 do

оператор;

С использованием while Index := Expr1;

while Index <= Expr2 do begin

оператор; Inc(Index)

end;

Структура Паскаль программы

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

Заголовок программы начинается со служебного слова program, за ним следует имя программы, заканчивается заголовок символом точка с запятой. В разделе описания указываются все модули, метки, константы, типы пользователя, переменные и процедуры и функции, которые будут использоваться в программе. Тело программы со-

55

стоит из операторов, которые и обеспечивают ее выполнение.

Согласно стандартному формату Паскаль программы функциональные ее части, если они необходимы по смыслу, принято располагать в следующем порядке:

program имя-программы; {Раздел описаний} uses

{список подключаемых библиотечных модулей - здесь перечисляются используемые модули}

label

{раздел описания меток - здесь перечисляются используемые в программе метки}

const

{раздел описания констант - здесь перечисляются используемые в программе константы}

type

{раздел описания типов - здесь перечисляются используемые в программе типы данных пользователя}

var

{раздел описания переменных - здесь перечисляются используемые в программе

переменные, объявленные пользователем}

{Секция процедур и функций - здесь описываются используемые в программе процедуры и функции}

procedure имя_процндуры(параметры); function имя_функции(параметры):тип;

{Тело программы} begin

{здесь записываются операторы, исполняемые в программе} end.

Требования к структуре программы:

заголовок program должен был первым в тексте программы;

секции uses может появляться только один раз сразу после заголовка;

присутствие секций объявлений label, const, type, var, procedure и function в программе необязательно. Если они присутствуют, то порядок их следования не регламентирован, и они могут появляться в программе несколько раз.

тело программы должно начинаться со служебного слова begin и завершаться end с символом “.” (точка).

Хотя порядок секций описания жестко не регламентирован, однако, все объекты программы должны быть объявлены или описаны явно прежде чем они будут ис-

пользованы (во избежание появления ошибок при компиляции). Все сказанное полностью относится и к структуре подпрограмм-процедур и подпрограмм-функций.

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

Его формат

56

uses имя_1, имя_2, имя_3, ...;

Смысл этого раздела - сообщить компилятору о библиотечных подпрограммах и функциях (внешних модулях), которые будут использоваться данной программой, например:

uses crt, dos, mylib;

Раздел описания меток (label). Любой оператор программы можно выделить в общей последовательности операторов, записав перед ним через двоеточие метку - такой оператор называется помеченным.

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

В соответствии с требованиями языка любая метка, используемая в программе, должна быть предварительно объявлена в разделе меток. В Паскале в качестве меток используются неотрицательные целые числа из диапазона [0..9999], или буквенные символы (идентификаторы).

Формат раздела меток

label имя_метки1, имя_метки2, ...;

Например:

label 55,lm;

begin

55:X:=X + 25; goto lm;

lm: B:=B+2; goto 55;

end.

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

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

Такие константы должны быть описаны в программе в разделе констант, который начинается служебным словом const и имеет формат

const имя_константы1 = значение; имя_константы2 = значение;

имя_константы3 : тип_константы = значение;

Как следует из формата, описание нетипированной (для которой явно не указан тип) константы начинается с имени константы, затем следует символ = потом значение константы, завершается запись символом точка с запятой. Для типированных констант кроме этого после ее имени указывается ее тип.

Например: const

p = 4566.99;

b = 60; нетипированные константы kk= 'port';

57

Trk : Real = 12.25;

типированные константы

A : Word = 145;

Nm : string[5] = ‘Проба’;

 

Раздел описания типов (type). Для расширения возможностей языка, наряду со стандартными типами пользователь имеет возможность вводить в программу и другие типы. Каждому вводимому в употребление типу присваивается имя (подобно имени, присвоенному каждому стандартному типу), после чего для указания этого типа достаточно указать его имя в соответствующем месте программы. Формат раздела описаний типов

type имя_типа1 = описание_типа1; имя_типа2 = описание_типа2;

Пример формирования раздела типов и их последующего использования: type

It = integer;

Mas = array[1..20] of real;

Mat = array[0..100] of integer; var

N,M : It;

A,B,C : Mas;

I,J : Mat;

Раздел описания переменных. Стандарт языка требует, чтобы каждая переменная, используемая в программе, была предварительно объявлена (описана). В описании переменной указывается ее имя и тип значений, которые она может принимать. Попытка в процессе выполнения программы присвоить переменной значение иного типа является ошибкой времени исполнения и приводит к прекращению работы программы. Формат раздела имеет вид:

var имя_переменной1 : ее_тип; имя_переменной2 : ее_тип;

Например:

var

N,M,I,L,J : integer; T,X,Y : real;

P, CanExit : boolean; MaxX, MinY : real;

Раздел процедур и функций. Каждая процедура и функция должна быть определена (описана). В отличие от описаний других объектов, описания процедур и функций представляют собой полные тексты этих программных единиц. Оформление описаний процедур и функций будет приведено далее.

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

begin

оператор; оператор;

.....

оператор; end.

Очевидно, что выполнение программы, не содержащей процедур и функций, сво-

58

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