Скачать презентацию Структуры и принципы организации программных модулей Создание и Скачать презентацию Структуры и принципы организации программных модулей Создание и

Lektsia_po_programmirovaniyu_-_12.pptx

  • Количество слайдов: 11

Структуры и принципы организации программных модулей. Создание и использование библиотек. Лекция 13 Структуры и принципы организации программных модулей. Создание и использование библиотек. Лекция 13

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

Исходный модуль Объектный модуль Библиотечный модуль Компановка Исходный модуль Компиляция Создание исполняемого модуля Исполняемый Исходный модуль Объектный модуль Библиотечный модуль Компановка Исходный модуль Компиляция Создание исполняемого модуля Исполняемый модуль

Структура модуля unit <Имя модуля>; interface // раздел интерфейса <раздел открытых описаний> implementation // Структура модуля unit <Имя модуля>; interface // раздел интерфейса <раздел открытых описаний> implementation // раздел реализации <раздел закрытых описаний> initialization // раздел инициализации finalization // раздел завершения end.

Пример Unit SORT; Interface Uses CRT; Const Dl_MAS=10000; Type TMAS=array[1. . Dl. MAS] of Пример Unit SORT; Interface Uses CRT; Const Dl_MAS=10000; Type TMAS=array[1. . Dl. MAS] of integer; Var MAS: TMAS; N: integer; Procedure SORT_EXCHANGE; {обменная сортировка} Procedure SORT_CHOICE; {сортировка выбором} Procedure SORT_QUICK; {быстрая сортировка}

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

Рассмотрим модуль работы с комплексными числа UNIT compl; INTERFACE type complex=record x: real; y: Рассмотрим модуль работы с комплексными числа UNIT compl; INTERFACE type complex=record x: real; y: real; end; procedure sum(a, b: complex; var c: complex); procedure razn(a, b: complex; var c: complex); procedure umn(a, b: complex; var c: complex); procedure delenie(a, b: complex; var c: complex); procedure vivod(a: complex);

IMPLEMENTATION procedure sum(a, b: complex; var c: complex); begin c. x: =a. x+b. x; IMPLEMENTATION procedure sum(a, b: complex; var c: complex); begin c. x: =a. x+b. x; c. y: =a. y+b. y; end; procedure razn(a, b: complex; var c: complex); begin c. x: =a. x-b. x; c. y: =a. y-b. y; end; procedure umn(a, b: complex; var c: complex); begin c. x: =a. x*b. x-a. y*b. y; c. y: =a. y*b. x+a. x*b. y; end; procedure delenie(a, b: complex; var c: complex); begin c. x: =(a. x*b. x+a. y*b. y)/(b. x*b. x+b. y*b. y); c. y: =(a. y*b. x-a. x*b. y)/(b. x*b. x+b. y*b. y); end; procedure vivod(a: complex); begin if a. y>=0 then writeln(a. x: 1: 3, '+', a. y: 1: 3, 'i') else writeln(a. x: 1: 3, '-', -a. y: 1: 3, 'i') end; end.

Программа, использующая модуль uses compl; var g, h, e: complex; BEGIN writeln('Введите первое комплексное Программа, использующая модуль uses compl; var g, h, e: complex; BEGIN writeln('Введите первое комплексное число'); read(g. x, g. y); vivod(g); writeln('Введите второе комплексное число'); read(h. x, h. y); vivod(h); sum(g, h, e); writeln('Сумма чисел'); vivod(e); . razn(g, h, e); writeln('Разность чисел'); vivod(e); umn(g, h, e); writeln('Произведение чисел'); vivod(e); delenie(g, h, e); writeln('Частное чисел'); vivod(e); end.

Создание библиотек Library < имя библиотеки>; Uses Const Type exports My. Func, My. Other. Создание библиотек Library < имя библиотеки>; Uses Const Type exports My. Func, My. Other. Func, My. Proc name 'my. Proc'; Function My. Func(i: integer): byte; Begin … End; … End.

Статическая загрузка function My. Func (Param : Integer) : Integer; external 'mylib'; Динамическая загрузка Статическая загрузка function My. Func (Param : Integer) : Integer; external 'mylib'; Динамическая загрузка • Использовать модуль Windows • Объявляем переменную процедурного типа с соответствующими параметрами и типом вызова; • Загружаем библиотеку — Load. Library ; • Находим адрес нужной функции — Get. Procedure. Address — и присваиваем его нашей переменной; Когда функции данной библиотеки больше не нужны, освобождаем ее — Free. Library • Вызываем функцию через переменную, когда это нам нужно;