Osnovy_informatiki_-_8_Podprogrammy_i_moduli
.pdfПримеры
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 |
Чердынцева М.И., мехмат ЮФУ |
|
|
|