Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.44 Mб
Скачать

2 Етапи розробки модуля

Модуль – це допоміжний об'єкт, тому його не можна запустити на виконання командою Run (Ctrl+F9). Він може тільки брати участь у побудові програм, підпрограм або інших модулів.

Процес розробки модулів має два етапи. На першому етапі необхідно в окремому файлі набрати текст модуля. Ім'я цього файлу повинне збігатися з першими вісьма символами імені модуля й мати розширення .pas. Файли з модулем і програмою повинні перебувати в одній директорії.

Кожний модуль необхідно помістити в спеціальну бібліотеку, вона називається TPU (Turbo Pascal Unit). Для розміщення модуля в бібліотеці TPU програму необхідно відкомпілювати командою make (F9) або запустити її на виконання командою run (Ctrl+F9). Після цього в поточній директорії буде створений файл (модуль) з колишньою назвою, але з розширенням .tpu. Файл (модуль) з розширенням .pas після цього, у принципі, можна знищити, для роботи програми він не потрібний, але цей файл може ще знадобитися для наступної модернізації модуля, а також для уточнення його вмісту. Справа в тому, що вміст файлу модуля з розширенням .tpu представлено не в символах ASCII, як вміст файлів з розширенням .pas, а в машинному коді, тому його неможливо вивчати й редагувати.

Якщо файл модуля з розширенням .tpu розміщено не в поточній, а в заданій директорії, то для цього необхідно виконати наступні команди: F10/Option/Directories/Unit directories {вказати шлях до директорії в прямокутнику з таким заголовком}.

Ще один спосіб створення файлу модуля з розширенням .tpu (або об'єктного модуля). Для параметра compile/destination за допомогою клавіші Enter варто встановити значення disk і запустити модуль на виконання командою Ctl+F9 (Run). При цьому здійсниться компіляція модуля. Компілятор розпізнає на початку тексту модуля службове слово unit і автоматично створить файл із розширенням .tpu замість файлу з розширенням .ехе (як для звичайних програм). Повідомлення, яке з'явиться при цьому на екрані дисплея «Can not run unit», просто інформує вас про те, що модуль самостійно не виконується.

Приклад 1:

Програма у двовимірному масиві Matr(n,m) міняє місцями максимальний і мінімальний елементи. Вихідні дані матриці Matr(n,m) знаходяться у файлі Isx_Dan.pas, результати – у файлі Rez_Dan.pas. Процедури вводу та виводу даних, ініціалізації файлів, глобальні константи, типи й змінні знаходяться в об'єктному модулі Mod_Matr.tpu.

В програмі в процедурі Zamina при пошуку мінімального й максимального значень матриці використана тільки змінна для зберігання мінімального значення, а змінна для запам'ятовування максимального значення не застосовується.

program Prjk_Mod;

uses

Mod_Matr;

procedure Zamina; {міняє місцями мінімальний і максимальний

елементи вихідної матриці Matr(n.m)}

var

i_Max, i_Min, i:int_st; {номери рядків}

j_Max, j_Min, j:int_cl; {номери стовпців}

Min:rеа1; {для зберігання мінімального значення}

begin

i_Max:=1;

i_Min:=1;

j_Max:=1;

j_Min:=1;

for i:=1 to n_st do

for j:=1 to n_cl do

begin

if Matr[i,j]<Min

then

begin

i_Min:=i;

j_Min:=j;

Min:=Matr[i,j];

end; {then_1}

if Matr[i,j]>Matr[i_Max,j_Max]

then

begin

i_Max:=i;

j_Max:=j;

end; {then_2}

end; {for_j}

Matr[i_Min,j_Min]:=Matr[i_Max,j_Max];

Matr[i_Max,j_Max]:=Min;

end; {Zamina}

begin

Vvedennya_Matr(Matr);

rewrite(F_Rez);

writeln(F_Rez,'Матриця вихідних даних з ',n_cl, ' стовпців і ',n_st,' рядків');

Druk_Matr(Matr);

Zamina;

writeln(F_Rez,'Матриця після обробки:');

Druk _Matr(Matr);

close(F_Rez);

end. {Prjk_Mod}

unit Mod_Matr; {заголовок модуля}

interface {інтерфейс або розділ оголошень}

const

n_st=5; {число рядків Matr}

n_cl=8; {число стовпців (колонок) Matr}

Isx='Isx_Dan.pas';

Rez='Rez_Dan.pas';

type

Int_st=1..n_st;

Int_cl=1..n_cl;

Matrix=array[Int_st,Int_cl] of real;

var

Matr:Matrix;

F_Isx,F_Rez:text;

procedure Vvod_Matr(var M:Matrix);

procedure Pechat_Matr(M:Matrix);

implementation {виконавча частина модуля}

procedure Vvedennya_Matr; {скорочений заголовок}

var

i:Int_st;

j:Int_cl;

begin

reset(F_Isx);

for i:=1 to n_st do

begin

for j:=1 to n_cl do

read(F_Isx,M[i,j]);

readln(F_Isx);

end; {for_i}

close(F_Isx);

end; {Vvedennya_Matr}

procedure Druk_Matr; {скорочений заголовок}

var

i:Int_st;

j:In t_cl;

begin

for i:=1 to n_st do

begin

for j:=1 to n_cl do

write(F_Rez,M[i,j]:5:1);

writeln(F_Rez);

end; {for_i}

end; {Druk_Matr}

begin {розділ ініціалізації}

assign(F_Isx,Isx);

assign(F_Rez,Rez);

end. {Unit Mod_Matr}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]