Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Osnovy_informatiki_-_8_Podprogrammy_i_moduli

.pdf
Скачиваний:
11
Добавлен:
13.02.2015
Размер:
168.67 Кб
Скачать

Примеры

function factorial(n : integer) : integer; begin

if n=0 then result:=1

else result := n* factorial(n-1) // рекурсивный вызов

end;

11

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Модули

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

Модули позволяют:

1.Объединить группу взаимосвязанных подпрограмм в единое целое, отделив от остального кода

2.Разбить большой код на относительно независимые части и компилировать их по отдельности

3.Поставлять пользователям библиотеки подпрограмм без исходного текста

12

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Синтаксис описания

unit имя; // имя модуля должно совпадать с именем файла

interface

// секция интерфейса модуля

uses список модулей;

 

раздел объявлений модуля

// описываются лишь заголовки

 

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

implementation

// секция реализации модуля

uses список модулей;

 

раздел реализации модуля

// описывается реализация

 

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

[begin | initialization операторы]

// секция инициализации

[finalization операторы]

// секция финализации

end.

 

13

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Использование модуля

program имя_программы; uses имя_модуля;

. . .

//можно использовать константы, типы, переменные, подпрограммы

//описанные в разделе интерфейса модуля

14

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Пример

unit AlgInt;

interface

function GCD ( a, b : integer) : integer; function GCDM ( a, b : integer) : integer;

. . .

15

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Пример

implementation

function GCD( a,b : integer) : integer; var m : integer;

begin

a:= abs(a); b:=abs(b); while b<>0 do begin

m:= a mod b; a:=b; b:=m

end; result:=a; end;

16

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Пример

function GCDM( a,b : integer) : integer; var m : integer;

begin

a:= abs(a); b:=abs(b); while b<>a do

if a>b then a:=a-b else b:=b-a

result:=a; end;

. . .

end.

17

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Пример

program PrimeUnit; uses AlgInt;

var x,y,z : integer; begin

read (x,y); z:= GCD(x,y); writeln(z);

writeln (GCDM(x,y)) end.

18

10.11.2012

Чердынцева М.И., мехмат ЮФУ

Схема компиляции программ с модулями

unit MyLib1;

 

. . .

mylib1.pas

unit MyLib2;

 

. . .

mylib2.pas

program Main;

uses MyLib1,Mylib2; main.pas

. . .

19

10.11.2012

Чердынцева М.И., мехмат ЮФУ

20

10.11.2012

Чердынцева М.И., мехмат ЮФУ