Якщо в деякій програмі використовуються власні процедури досить великого розміру, то ці процедури найкраще оформити в вигляді окремого модуля. Існує декілька причин для створення такого модуля. По-перше, модуль може зберігатися як в вихідному виді в PAS-файлі, так і в відкомпільованому файлі з розширенням TPU (Turbo Pascal Unit - модуль ТУРБО ПАСКАЛЬ). Усі процедури не компілюються щораз при перекомпіляції основної програми, а просто їхній код, що міститься в tpu-файлі, компонується з кодом основної програми. Це значно заощаджує час загальної компіляції задачі. По-друге, винесення множини процедур в окремий модуль розвантажує текст основної програми від зайвої захаращеності, робить його більш компактним і зрозумілим для сприйняття. По-третє, модулі з процедурами, що часто зустрічаються в різноманітних програмах, заощаджують час при написанні нових програм. Для цього достатньо помістити потрібний tpu-файл в каталог із новим проектом, в основній програмі підключити цей модуль в рядку uses і далі просто використовувати процедури з цього модуля в тексті основної програми. Будова модуля нагадує створення нової програми. в окремому pas-файлі записується заголовок модуля, константи, змінні, процедури і функції, які використовуються в цьому модулеві:
Unit ім'я_модуля; {це ж ім'я повинно бути іменем файла} Interface {розділ описів}
Const глобальні_константи;
Var глобальні_змінні;
Procedure Ім’я1 (параметри);
Procedure Ім’я2 (параметри); ..
.Procedure Ім’яM (параметри);
Function Ім’я11 (параметри): тип; ...
Function Имя1N (параметри): тип;
Implementation {розділ реалізації};
Const локальні_константи;
Var локальні_змінні;
Procedure Ім’я1; ...
Begin ...End;
Procedure Ім’я2; ...
Begin ...End; ...
Function Ім’я11; ...
Begin ...End; ...
End.
Модуль не виконується як звичайна програма, а компілюється в tpu-файл. Інтерфейсна частина модуля, яка фактично відображає його зміст, компілюється особливо, що дозволяє компілятору надалі дуже швидко переглядати tpu-файли і знаходити потрібні процедури.
Завдання. Створити модуль з набором процедур, що реалізують різноманітні методи сортування числових масивів. Налагодити модуль для використання в наступній лабораторній роботі.
3.1. Приклад програми
unit mmm;
interface
procedure str(var a:array of integer);
procedure sts(var a:array of integer);
procedure bub(var a:array of integer);
procedure qui(var a:array of integer);
implementation
procedure str;
var
x,i,j:integer;
n1,n:integer;
begin
n:=high(a);
n1:=low(a);
for i:=n1 to n do
begin
x:=a[i];
j:=i-1;
while (j>=n1) and (a[j]>x) do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=x;
end;
end;
procedure sts;
var
x,k,i,j:integer;
n1,n:integer;
begin
n:=high(a);
n1:=low(a);
for i:=n1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[k]>a[j] then k:=j;
if k<>i then
begin
x:=a[i];a[i]:=a[k];a[k]:=x;
end;
end;
end;
procedure bub;
var
x,i,j:integer;
n1,n:integer;
begin
n:=high(a);
n1:=low(a);
for i:=n1 to n-1 do
for j:=n downto i+1 do
if a[j-1]>a[j] then
begin
x:=a[j];a[j]:=a[j-1];
a[j-1]:=x;
end;
end;
procedure qui;
var n1,n:integer;
procedure sort(l,r:integer);
var
x,w,i,j:integer;
begin
i:=l;j:=r;
x:=a[(i+j) div 2];
repeat
while a[i]<x do i:=i+1;
while a[i]>x do j:=j-1;
if i<=j then
begin
w:=a[i];
a[i]:=a[j];
a[j]:=w;
i:=i+1;
j:=j-1;
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j)
end;
begin
n:=high(a);
n1:=low(a);
sort(n1,n);
end;
end.
program test;
uses mmm;
const n=100;
var a:array[1..n] of integer;
i:integer;
begin randomize;
for i:=1 to n do
a[i]:=random(100);
writeln('неупорядкований масив:');
for i:=1 to n do
write(a[i]:4);
writeln;
sts(a);
writeln('упорядкований масив :');
for i:=1 to n do
write(a[i]:4);
writeln;
end.
Реалізація роботи з графічними елементами на принципах модульного програмування
Для реалізації графічних зображень використовується графічний режим. ............