Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу.docx
Скачиваний:
107
Добавлен:
24.02.2016
Размер:
2.8 Mб
Скачать

9.1. Понятие подпрограммы

Каждый, кто сталкивается с компьютером, с удивлением обнаруживает, что компьютер знает и умеет выполнить многое из того, что умеет человек. Так, он, оказывается, умеет играть в шахматы, обыграет вас в карты, не хуже врача поставит диагноз, даст юридическую консультацию, поможет советом изобретателю новой техники, решит сложную математическую задачу, и еще много чего, о чем вы даже не подозреваете. Спрашивается, почему компьютер все это знает? Вот вы тоже кое-что знаете, почему? Потому что вас учили: с момента рождения, в вашу память закладывали различные навыки. У компь­ютера, (кстати, как и у человека) имеется два уровня памяти - оперативная и долговременная. Компьютер тоже учат. Уже при рождении в его долговре­менную память закладывают разные знания в виде программ, которые в нуж­ный момент вызываются в оперативную память и подаются на процессор для выполнения тех или иных действий.

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

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

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

9.2. Описание подпрограмм

В языке Паскаль имеется два типа подпрограмм: Процедуры (Procedure) и функции (Function).

Оформление программ в виде процедур и функций производится в со­ответствии со структурой на Рис. 9.1., где

<имяП>, <имяФ> - имя подпрограммы;

<список формальных параметров> - содержит перечисление имен с указанием их типов, например:

May (x,y : extended; var m, k : integer; const s : string);

Через эти параметры осуществляется обмен информацией между под­программой и той программой, которая к ней обращается.

В отличие от процедуры, для имени функции <имяФ> указан ее тип <типФ>, а через ключевое слово Result имени присваивается результат вы­числений, имеющий тип <типФ>.

Структура подпрограммы - процедуры Procedure <имяП>(<список формальных параметров>); const . . . type . . . var . . .

procedure ИП(. . .); // раздел описаний локальных begin // констант, типов, переменных

. . . // и подпрограмм

end;

function ИФ(. . .):ТФ; begin end;

begin

. . . // раздел выполняемых операторов процедуры

end;

Структура подпрограммы - функции Function <имяФ>(<список формальных параметров>):<типФ>; Const . . .

Type . . . // раздел описаний локальных

var . . . // констант, типов, переменных и

Procedure ИП(. . .); // подпрограмм begin

End;

Function ИФ(. . .):ТФ;

begin End;

begin

. . . // раздел выполняемых операторов функции

Result:= <результат>;

end;

Рис 9.1.

Вызов подпрограммы - процедуры из какой либо программы произво­дится оператором вида:

имяП(<список фактических параметров>);

Здесь <список фактических параметров> содержит перечисление имен данных в вызывающей программе, которые соответствуют списку формаль­ных параметров, причем каждый фактический параметр должен иметь тот же тип, что и соответствующий ему формальный. Следует отметить, что список формальных параметров может отсутствовать.

Вызов подпрограммы - функции, в отличие от процедуры, может быть осуществлен разными способами, например:

У:=имяФ(<список фактических параметров>);

Здесь переменная y должна иметь тип <типФ>, или

s:=z* имяФ(<сп. факт .пар .1>)+у/имяФ(<сп. факт .пар .2>);

Здесь вызов функции производится внутри арифметического выраже­ния с разными фактическими параметрами.

Рекомендуется оформлять подпрограмму в виде функции в том случае, когда результатом является значение одной переменной.