Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Turbo Pascal [12].pdf
Скачиваний:
71
Добавлен:
02.05.2014
Размер:
1.06 Mб
Скачать

Одесский колледж компьютерных технологий “СЕРВЕР”

A[3,4] или В общем виде двумерный массив схематично выглядит так: A[i,j] Направление изменения другого из индексов

 

A

1

2

3

4

...

n

Направление

1

 

 

 

 

 

 

2

 

 

 

 

 

 

изменения

 

 

 

 

 

 

одного из

3

 

 

 

 

 

 

индексов

...

 

 

 

 

 

 

 

m

 

 

 

 

 

 

Пример: распечатаем оценки учеников по предметам for pred:=1 to 2 do begin

for pupl:=1 to 30 do write(klass[pred,pupl]);

writeln end;

А по ученикам попробуйте распечатать сами.

Процедуры без параметров.

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

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

Procedure <имя процедуры>; Uses <имена модулей>; Label <имена меток>;

49

Одесский колледж компьютерных технологий “СЕРВЕР”

Const <имена констант>;

Type

<имена типов пользователя>;

Var

<имена локальных переменных>;

<раздел объявления подпрограмм>; Begin

<операторы>; End;

Отличие процедуры без параметров от Pascal-программы состоит в названии заголовка, который начинается не служебным словом Program, а служебным словом Procedure. Наличие заголовка процедуры обязательно, в отличие от наличия заголовка программы, который может быть опущен. Кроме того, любая подпрограмма заканчивается служебным словом End и точкой с запятой, в отличие от End с точкой в Pascal-программе.

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

Допускается использование в одной программе сразу нескольких подпрограмм. Также допускается использование вложенных подпрограмм. То есть, каждая подпрограмма может содержать в себе описание других подпрограмм, которые являются таким образом подпрограммами подпрограмм. Эти подпрограммы, в свою очередь, тоже могут содержать описание своих подпрограмм и так далее. В результате общую структуру Pascal-программы можно изобразить в виде следующей схемы:

A B D

E

C

На этой схеме буквой A обозначена главная программа (внешний блок). B и C - подпрограммы программы A (описанные во внешнем блоке); D и E - подпрограммы B (описанные в блоке B).

Схематически Pascal-программа, содержащая подпрограммы может выглядеть следующим образом:

PROGRAM <главная программа А>; procedure <подпрограмма B>;

procedure <подпрограмма D>; begin

<операторы подпрограммы D>; end;

procedure <подпрограмма Е>;

50

Одесский колледж компьютерных технологий “СЕРВЕР”

begin

<операторы подпрограммы Е>;

end;

begin

<операторы подпрограммы B>; end;

procedure <подпрограмма С>; begin

<операторы подпрограммы С>; end;

BEGIN

<операторы главной программы A>; END.

Структура подпрограмм (блоков) Pascal-программ достаточно традиционна для многих языков и требует определённой дисциплины для доступа к объектам (например, переменным, константам, типам пользователя), описанным в различных блоках. Например, переменные, описанные в блоке B, известны (видимы), кроме самого блока B, ещё и в блоках D и E. Имена из блока C известны только в пределах блока С, имена из блока D известны только в пределах блока D, а имена из блока E известны только в пределах блока E. Наконец, имена переменных из самого внешнего блока A (то есть блока, соответствующего программе в целом) известны во всех вложенных блоках. Причём, если и в блоке A, и в блоке D описана переменная с именем x, то в блоке D переменная x, описанная в A, становится невидной.

Переменная, объявленная внутри подпрограммы, будет доступна только внутри этой подпрограммы. Такие переменные называются локальными переменными.

Процедуры и функции с параметрами.

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

PROCEDURE имя (параметры);

где имя — то имя, которое программист решил дать своей функции; параметры — список переменных с указанием их типов.

Вслед за заголовком располагается тело процедуры, которое по структуре ничем не отличается от программы, но заканчивается не точкой, а точкой с запятой. Вот примеры заголовков процедур с параметрами:

PROCEDURE ALPHA (X: INTEGER; Y: REAL; Z: CHAR); PROCEDURE BETA (M: ARR);

В том месте программы, где нужно выполнить действия, предусмотренные в описании процедуры, ставят оператор процедуры:

51

Одесский колледж компьютерных технологий “СЕРВЕР”

имя (аргументы), где имя то же, что в заголовке процедуры.

Ранее мы познакомились со стандартными функциями Паскаля. Кроме них програм-мист может воспользоваться своими собственными функциями, предварительно описав их в программе. В отличие от процедур, функция должна быть определённого типа:

FUNCTION имя (параметры):тип;

тип — это тип значения, которое возвращает функция (типы в заголовке функции можно обозначать только именами).

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

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

52