Модули. Структура модулей в Turbo Pascal

Содержание

Слайд 2

Модульное программирование – это метод разработки программ по частям. Модуль –

Модульное программирование – это метод разработки программ по частям.
Модуль – это

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

Модуль имеет следующую структуру: UNIT ; INTERFACE IMPLEMENTATION BEGIN END.

Модуль имеет следующую структуру:

UNIT < имя >;
INTERFACE
< интерфейсная часть >
IMPLEMENTATION
< исполняемая

часть >
BEGIN
< инициирующая часть >
END.
Слайд 4

Заголовок модуля и связь модулей друг с другом Заголовок модуля состоит

Заголовок модуля и связь модулей друг с другом

Заголовок модуля состоит из

зарезервированного слова UNIT и следующего за ним имени модуля.
Например: Unit GLOBAL;
Слайд 5

Запомните! Имя модуля должно совпадать с именем дискового файла, в который

Запомните!

Имя модуля должно совпадать с именем дискового файла, в который помещается

исходный текст модуля.
Например: Модуль GLOBAL должен быть сохранен под именем GLOBAL.PAS
Слайд 6

Имя модуля служит для связи с другими модулями и программами. Эта

Имя модуля служит для связи с другими модулями и программами. Эта

связь устанавливается специальным предложением:
USES <список модулей >;
Например: USES Crt, Graph, Global;
Слайд 7

Интерфейсная часть Интерфейсная часть открывается зарезервированным словом INTERFACE. В этой части

Интерфейсная часть

Интерфейсная часть открывается зарезервированным словом INTERFACE.
В этой части модуля содержится

объявление всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и другим модулям.
Слайд 8

При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок.

При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок.

Слайд 9

Пример Unit Global; Interface uses crt; const n=100; type Vector=array [1..n]

Пример

Unit Global;
Interface
uses crt;
const n=100;
type Vector=array [1..n] of integer;
procedure wwod (Razm: integer;

Name: char; var s: Vector);
procedure wywod (Razm: integer; Name: char; h: Vector);
...
Слайд 10

Если теперь в новой программе написать предложение Uses Global, то в

Если теперь в новой программе написать предложение Uses Global, то в

программе станут доступными тип Vector и процедуры wwod и wywod.
Слайд 11

Исполняемая часть Начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных

Исполняемая часть

Начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в

интерфейсной части.
В ней могут быть объявлены локальные для модуля объекты.
Слайд 12

Пример (продолжение) Implementation procedure wwod; var i:integer; Begin clrscr; Writeln (

Пример (продолжение)

Implementation
procedure wwod;
var i:integer;
Begin
clrscr;
Writeln ( 'Введите элементы массива ‘ );
for i

:= 1 to Razm do
begin
write ( Name, ‘ [ ‘ , i , ‘ ]=‘ );
readln ( s[i] );
End;
end;
Слайд 13

procedure wywod; var i:integer; Begin clrscr; for i:=1 to Razm do

procedure wywod;
var i:integer;
Begin
clrscr;
for i:=1 to Razm do
Writeln (Name,

‘ [ ‘ , i , ‘ ]= ', h [ i ] );
readln;
end;
...
Слайд 14

Инициирующая часть Инициирующая часть завершает модуль. Она может отсутствовать. Но обязательно

Инициирующая часть

Инициирующая часть завершает модуль.
Она может отсутствовать.
Но обязательно в

конце модуля должно быть написано слово END и поставлена точка.
Слайд 15

Если инициирующая часть есть в модуле, то начинается она с зарезервированного

Если инициирующая часть есть в модуле, то начинается она с зарезервированного

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

Не рекомендуется делать инициирующую часть пустой, лучше ее опустить

Не рекомендуется делать инициирующую часть пустой, лучше ее опустить

Слайд 17

Компиляция модулей Сохранить программу в файле под именем модуля Выбрать в

Компиляция модулей

Сохранить программу в файле под именем модуля
Выбрать в меню Компайл

пункт Куда и изменить его на значение Disk
Откомпилировать ее в одном из трех режимов COMPILE (Alt+F9), MAKE (F9) или BUILD (в меню Compile).
Слайд 18

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

Пример 2

Создать модуль, содержащий подпрограммы для вычисления математических функций – tg(x),

ctg(x), ax
Для создания используем математические формулы:
tg(x)=sin(x)/cos(x)
ctg(x)=cos(x)/sin(x)
ax=e x · ln a
Слайд 19

Unit func1; Interface function tg (x: real) : real; function ctg

Unit func1;
Interface
function tg (x: real) : real;
function ctg (x: real) :

real;
function ax (a: real; x: real) : real;
Implementation
function tg;
begin
if cos(x)<>0 then tg:=sin(x)/cos(x)
else writeln (‘Значение tg не определено!’);
end;
Слайд 20

function ctg; begin if sin(x) 0 then ctg:=cos(x)/sin(x) else writeln (‘Значение

function ctg;
begin
if sin(x)<>0 then ctg:=cos(x)/sin(x) else
writeln (‘Значение сtg не определено!’);
end;
function

ax;
begin
if a>0 then ax:=exp (x*ln(a)) else
if a=0 then ax:=0 else writeln(‘а - отрицательно’);
end;
end.
Слайд 21

Использование созданного модуля Даны действительные x и y.Вычислить значение выражения: tg(x+y)

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

Даны действительные x и y.Вычислить значение выражения:
tg(x+y) – ctg(x-2y)
F

= --------------------------
2x + 4y + xy + yx
Слайд 22

Program test; Uses crt, func1; Var x, y, f:real; Begin Clrscr;

Program test;
Uses crt, func1;
Var x, y, f:real;
Begin
Clrscr;
Writeln (‘x=’);
Readln(x);
Writeln (‘y=’);
Readln(y);

Слайд 23

F:= (tg(x+y) – ctg(x-2*y)) / (ax(2, x) + ax(4, y) +

F:= (tg(x+y) – ctg(x-2*y)) / (ax(2, x) + ax(4, y) +

ax(x, y)+ ax(y, x)) ;
Writeln(‘F=’, f:15:3);
Readln
end.
Слайд 24

Библиотеки подпрограмм Модули могут использоваться для организации библиотеки подпрограмм. Часто возникает

Библиотеки подпрограмм

Модули могут использоваться для организации библиотеки подпрограмм.
Часто возникает ситуация,

когда один и тот же алгоритм используется при решении самых разных задач.
В таких случаях желательно использовать уже готовую подпрограмму как часть любой другой программы.
Слайд 25

Набор подпрограмм принято называть библиотекой подпрограмм. Библиотеки подпрограмм делятся на библиотеки

Набор подпрограмм принято называть библиотекой подпрограмм.
Библиотеки подпрограмм делятся на 
библиотеки статического вызова 


(статические библиотеки)
библиотеки динамического вызова 
(динамические библиотеки).
Слайд 26

После компиляции подпрограммы статической библиотеки компоновщик добавляет ее откомпилированный код к

После компиляции подпрограммы статической библиотеки компоновщик добавляет ее откомпилированный код к исполняемой программе.


Получившийся в результате исполнительный модуль содержит код программы и всех используемых подпрограмм.
Слайд 27

В случае динамической компоновки компоновщик просто использует информацию о подпрограмме для

В случае динамической компоновки компоновщик просто использует информацию о подпрограмме для

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