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

5. Подпрограммы (процедуры и функции)

Подпрограмма – относительно самостоятельная часть программы, имеющая свое имя и выполняющая определенные действия.

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

Структура подпрограммы почти полностью повторяет структуру всей программы и состоит из следующих частей:

  • заголовок подпрограммы

  • раздел описаний

  • тело подпрограммы

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

5.1 Процедуры

procedure <имя> (список формальных параметров);

<раздел описаний>;

begin

<тело процедуры>;

end;

Пример 1: Процедура вычисления и вывода на экран куба числа.

procedure cub(x: real);

var y: real;

begin

y:=x*x*x;

writeln(y);

end;

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

Например:

cub(5);

readln(z);

cub(z);

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

Пример 2: Программа, выводящая на экран следующее:

*********

a=1 b=1

*********

a=2 b=4

*********

a=3 b=9

*********

a=4 b=16

*********

var a,b: integer;

procedure Stars; {без параметров}

var i: integer;

begin

for i:=1 to 9 do write(‘*’);

writeln;

end;

begin

Stars;

for a:=1 to 4 do

begin

b:=sqr(a);

writeln(‘a=’,a,’ b=’,b);

Stars; {вызов процедуры Stars }

end;

end.

Пример 3:

var a,b: integer;

procedure Stroka(ch: char, n: integer);

var i: integer;

begin

for i:=1 to n do write(ch);

writeln;

end;

begin

Stroka(‘+’,4);

for a:=1 to 3 do

begin

b:=sqr(a);

writeln(‘a=’,a,’ b=’,b);

Stroka(‘*’,8);

end;

end.

Разберем вызов процедуры Stroka(‘*’,8): ‘*’ и 8 – фактические параметры (т.е. те, которые указаны в скобках после имени процедуры при ее вызове), они присваиваются при вызове формальным параметрам ch и n (т.е. тем, которые указаны в скобках после имени процедуры при ее описании).

Замечание: количество, порядок и тип параметров при вызове процедуры должны совпадать с количеством, порядком и типом параметров, заданным при описании процедуры.

Результат на экране:

++++

a=1 b=1

********

a=2 b=4

********

a=3 b=9

********