Pascal. Module personalizate. Pluginuri - Pascal Rutine și funcții grafice de bază

Module în Pascalîn raport cu partea principală a programului, ele seamănă cu subrutine (proceduri și funcții). Dar, prin definiție, sunt programe independente ale căror resurse pot fi folosite în alte programe. În plus, descrierea modulelor apare în afara aplicației care apelează, dar într-un fișier separat, deci un modul este un program compilat separat. Fișierul modul compilat (care este cel pe care trebuie să îl utilizați) va avea extensia oferită de mediul de programare (de exemplu, .tpu, .ppu, .pcu).

Modulele sunt create, de regulă, pentru a asigura compactitatea codului, de care trebuie să aibă grijă proiectele mari. De asemenea, este de remarcat faptul că utilizarea modulelor într-un sens înlătură restricția privind segmentarea memoriei, deoarece codul fiecărui modul este situat într-un segment separat.

Structura modulului arată astfel:

unitate<имя модуля>;
Interfață
<интерфейсная часть>
Implementarea
<исполняемая часть>
ÎNCEPE
<инициализация>
Sfârşit.

Nume modul (unitate)

Numele modulului după cuvântul cheie unitate, trebuie să se potrivească cu numele fișierului (fără .pas) care conține codul acestuia. De asemenea, folosind numele, modulul este conectat la un alt modul, sau la programul principal. Pentru a face acest lucru, trebuie să specificați cuvântul de serviciu utilizăriși enumerați lista de pluginuri separate prin virgule:

utilizări<список имен модулей>;

Parte de interfață (Interfață)

Partea de interfață descrie anteturile obiectelor la care vor avea acces alte module și programe. Acestea sunt constante, tipuri, variabile și subrutine. De exemplu, așa poate arăta partea de interfață a modulului Căutare, care conține algoritmi pentru căutarea elementelor dintr-o matrice.

1
2
3
4
5
6

Căutare unitate;
Interfață

vars: string

Pentru a declara acest modul, trebuie să specificați numele acestuia în program:

După aceea, va fi posibil să utilizați toate obiectele descrise în partea de interfață.

Parte executabilă (Implementare)

Această secțiune începe cu cuvântul Implementarea(implementare). Aici trebuie să descrii subrutinele declarate în partea de interfață. În același timp, este permis să nu se specifice parametrii formali în anteturile lor, altfel aceștia trebuie să se potrivească complet cu cei din partea de interfață. În plus, partea de interfață poate conține obiecte care sunt locale (inaccesibile programului apelant) pentru modul.

Partea inițială

Partea inițială își începe activitatea înainte de începerea execuției programului principal. În ea (între Început și Sfârșit), de regulă, sunt descriși operatori care sunt destinați diferitelor tipuri de lucrări auxiliare. Este posibil ca această parte să lipsească sau să nu aibă cod în ea. În primul caz, trebuie să specificați Sfârșitul cu un punct, în al doilea, lăsați un spațiu gol în interiorul Început și Sfârșit.

Compilarea modulelor

Doar modulele compilate care au o extensie furnizată de mediul dumneavoastră de dezvoltare a aplicațiilor pot fi utilizate în program. Luați în considerare cele trei cele mai populare dintre ele:

TurboPascal

Rezultatul compilării unui modul în Turbo Pascal va fi un fișier cu extensia .tpu (Unitate Turbo Pascal) care își stochează codul.

Pascal liber

După compilarea unui modul în mediul Free Pascal, sunt create două fișiere cu permisiuni diferite: .ppuși .o. Primul conține partea de interfață a modulului, iar al doilea (necesar pentru conectarea programului) este partea de implementare.

Pascal ABC.NET

Pascal ABC.Net nu generează cod în limbajul mașinii în timpul compilării modulelor. Dacă compilarea are succes, codul este salvat într-un fișier cu permisiune .pcu.

Există trei moduri de compilare pentru mediile de programare Turbo Pascal și Free Pascal: Compilați, faceți și construiți. În modul Compilare, toate modulele utilizate în program trebuie compilate în prealabil. O aplicație în modul Make compilation verifică toate modulele conectate pentru prezența fișierelor cu permisiunea corespunzătoare pentru mediul de programare (.tpu sau .o). Dacă vreuna dintre ele nu este găsită, atunci se caută un fișier cu numele modulului negăsit și extensia .pas. Cel mai de încredere dintre moduri este Build. Căutarea și compilarea fișierelor (cu extensia .pas) în acest mod are loc chiar și atunci când fișierele module există deja.

Exemplu

Să creăm un mic modul care să conțină proceduri pentru căutarea binară și liniară a elementelor dintr-o matrice. Cod modul:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

Căutare unitate;
Interfață
tip arr = matrice [ 1 ..5 ] de întreg ;
vars: string
procedura binary_search(x: integer ; Ar: arr; var s: string ) ;
procedura line_search(x: integer ; Ar: arr; var s: string ) ;
Implementarea
var a, b, c, i: întreg ;
procedura binary_search(x: integer ; Ar: arr; var s: string ) ;
ÎNCEPE
a:= 1; b:= 5; s:= 'NU';
In timp ce<= b do
ÎNCEPE
c:= a+ (b- a) div 2 ;
dacă (x b:= c- 1
altfel dacă (x>Ar[ c] ) atunci
a:= c+ 1
altfel
începe s:= 'DA'; pauză ; Sfârşit ;
Sfârşit ;
Sfârşit ;
procedura line_search(x: integer ; Ar: arr; var s: string ) ;
ÎNCEPE
s:= 'NU';
pentru i:= 1 la 5 do
ÎNCEPE
dacă (Ar[i] = x) atunci
ÎNCEPE
s:= 'DA'; pauză ;
Sfârşit ;
Sfârşit ;
Sfârşit ;
Sfârşit.

Tot acest cod ar trebui să fie într-un fișier separat. Acum să scriem programul principal, în care vom conecta modulul nostru de căutare.

Modul (unitate) este un set de constante, tipuri de date, variabile, proceduri și funcții. Fiecare modul este similar cu un program Pascal separat: poate avea un corp principal care este apelat înainte ca programul dumneavoastră să înceapă și să efectueze inițializarea necesară. Pe scurt, un modul este o bibliotecă de declarații pe care le puteți introduce în programul dvs. și care vă va permite să divizați programul în părți care sunt compilate separat.

Turbo Pascal vă oferă acces la un număr mare de constante încorporate, tipuri de date, variabile, proceduri și funcții. Unele dintre ele sunt specifice Turbo Pascal; altele sunt specifice PC-ului IBM (și computerelor compatibile) sau sistemului de operare MS-DOS. Numărul lor este mare, totuși, în programul dvs., rareori le folosiți pe toate simultan. Prin urmare, ele sunt împărțite în grupuri înrudite numite module. În acest caz, puteți utiliza numai acele module care sunt necesare în program.

Structura modulului

Un modul oferă un set de caracteristici prin proceduri și funcții suportate de constante, tipuri de date și variabile, dar implementarea efectivă a acestor caracteristici este ascunsă deoarece modulul este împărțit în două secțiuni: interfață și implementare. Dacă un program folosește un modul, atunci toate declarațiile de modul devin disponibile pentru programul respectiv ca și cum ar fi fost definite în sine.

Structura unui modul este similară cu cea a unui program, dar există câteva diferențe semnificative. De exemplu, luați în considerare modulul:

unitate<идентификатор>; utilizări de interfață<список модулей>; (Opțional) (descrierile deschise) implementare (procedură închisă și descrieri ale funcțiilor)ÎNCEPE (cod de inițializare) Sfârşit.

Antetul modulului începe cu unitatea de cuvânt rezervată urmată de numele modulului (identificatorul), la fel ca în cazul unui nume de program. Următorul element dintr-un modul este cuvântul cheie interfață. Acesta marchează începutul secțiunii de interfață a unui modul - secțiunea care este vizibilă pentru toate celelalte module sau programe care o folosesc.

Un modul poate folosi alte module, pentru aceasta acestea sunt definite în clauza utilizări. Clauza uses, dacă este prezentă, urmează imediat după cuvântul cheie interfață. Rețineți că aici este îndeplinită regula generală de utilizare a clauzei uses: dacă modulul al cărui nume este specificat în clauza uses folosește alte module, atunci și numele acestor module trebuie specificate în clauza uses și înainte de a fi utilizate.

Module standard

Fișierul TURBO.TPL conține toate pachetele standard, cu excepția Graph și a pachetelor de compatibilitate (Graph3 și Turbo3): System, Overlay, Crt, Dos și Printer. Aceste pachete sunt încărcate în memorie cu Turbo Pascal și sunt întotdeauna disponibile pentru dvs. De obicei, fișierul TURBO.TPL este stocat în același director ca TURBO.EXE (sau TPC.EXE). Îl puteți stoca într-un alt director atâta timp cât este descris ca un director Turbo Pascal. Pentru a face acest lucru, utilizați TINST.EXE pentru a seta acest director în fișierul TURBO.EXE.

Pachete folosite: nr

Sistemul conține toate procedurile și funcțiile standard și încorporate ale Turbo Pascal. Orice subrutină Turbo Pascal care nu face parte din Pascal standard și care nu se găsește în niciun alt modul este conținută în System. Acest modul este atașat tuturor programelor.

Pachete folosite: nr

DOS definește numeroase rutine și funcții Pascaliene care sunt echivalente cu cele mai frecvent utilizate apeluri DOS, cum ar fi GetTime, SetTime, DiskSize și așa mai departe. În plus, definește două programe de nivel scăzut, MsDos și Intr, care vă permit să activați orice apel MS-DOS sau întrerupere de sistem. Registers este tipul de date pentru parametrul din MsDos și Intr. În plus, sunt definite și alte constante și tipuri de date.

Pachete folosite: nr

Overlay - conține instrumente pentru crearea de programe de suprapunere. Programul OVERKAY este un program care nu încarcă tot, ci în părți.

Pachete folosite: nr

Crt oferă un set de descrieri specifice PC-ului pentru constante, variabile și programe pentru operațiunile I/O. Acesta din urmă poate fi folosit pentru a lucra cu ecranul (setarea ferestrelor, controlul direct al cursorului, textul și culorile de fundal). În plus, puteți face intrare „brută” de la tastatură și puteți controla placa de generare a sunetului a unui computer personal. Acest modul oferă multe rutine care erau standard în versiunea 3.0.

Pachete folosite: Crt

Modulul Imprimantă definește o variabilă de fișier text, Lst, care este asociată cu un driver de dispozitiv care permite trimiterea ieșirii standard Pascal către o imprimantă folosind Write și Writeln. De exemplu, incluzând imprimanta în programul dvs., puteți face următoarele:

Scrieți (Lst,"Suma lui " ,A:4 ," și " ,B:4 ," este egal cu " ); C:=A+B; WriteIn(Lst,C:8) ;

Pachete folosite: Crt

Graph3 acceptă setul complet de rutine grafice pentru versiunea 3.0 - pentru grafică obișnuită, grafică avansată și grafică folosind comenzi relative. Sunt identice ca nume, parametrii funcției și rutinele versiunii 3.0.

Pachete folosite: Crt

Acest modul conține două variabile și mai multe proceduri care nu mai sunt suportate de Turbo Pascal. Acestea includ variabila de fișier încorporată Kbd, variabila booleană CBreak și versiunile originale cu numere întregi ale MemAvail și MaxAvail (care returnează memorie liberă în paragrafe, nu octeți așa cum o fac versiunile originale).

Pachete folosite: Crt

Graph oferă un set de rutine grafice rapide și eficiente care vă permit să profitați din plin de capacitățile grafice ale computerului personal.

Acest modul implementează driverul grafic Borland independent de dispozitiv pentru a suporta adaptoarele grafice CGA, EGA, Hercules, ATT 400, MCGA, 3270 PC și VGA.

Scrierea propriilor module

Să presupunem că ați scris un modul IntLib, l-ați scris în fișierul INTLIB.PAS și l-ați tradus pe disc; codul rezultat se află în fișierul INTLIB.TRU. Pentru a utiliza acest modul în programul dumneavoastră, trebuie să includeți o instrucțiune uses în programul dumneavoastră pentru a spune compilatorului ce modul să folosească. Programul tău ar putea arăta astfel:

programul MyProg; folosește IntLib;

Rețineți că Turbo Pascal presupune că fișierul care conține modulul are același nume ca și modulul însuși. Dacă numele modulului tău este MyUtilities, atunci Turbo Pascal va căuta un fișier numit MYUTILIT.PAS.

Compilarea modulelor

Un modul este compilat exact în același mod în care este compilat un program: este creat folosind editorul, apoi se numește comanda Compilare / Compilare (Compilare / Compilare) (sau se apasă tastele Alt-C). Cu toate acestea, în loc de un fișier cu extensia .EXE, Turbo Pascal creează un fișier cu extensia .TRU (Turbo Pascal Unit - Turbo Pascal Unit). După aceea, puteți lăsa acest fișier așa cum este sau îl puteți introduce în TURBO.TPL folosind TPUMOVER.EXE.

În ambele cazuri, este logic să trimiteți fișierele *.TRU (împreună cu fișierele sursă) în directorul unității, care este definit cu comanda directoare O/D/Unit. Nu poate exista decât un singur modul pentru fiecare fișier sursă, deoarece compilarea se oprește de îndată ce este întâlnită instrucțiunea de terminare.

Exemplu:

Să scriem un mic modul. Să-l numim IntLib și să introducem două subrutine simple pentru numere întregi - o procedură și o funcție:

unitate IntLib; procedura de interfata ISwap(var I,J: integer ) ; funcția IMax(I,J: întreg ): întreg ; procedura de implementare ISwap; var Temp: întreg ; beginTemp:=I; I:=J; J:=temp end ; (sfârșitul procedurii ISwap) funcția IMax; start if I > J then IMax:=I else IMax:=J end ; (sfârșitul funcției IMax) Sfârşit. (sfârșitul modulului IntLib)

Să introducem această subrutină, să o scriem în fișierul INTLIB.PAS și apoi să o traducem pe disc. Ca rezultat, obținem codul modulului în fișierul INTLIB.TRU. Să-l trimitem în directorul modules. Următorul program utilizează modulul IntLib:

programul IntTest; folosește IntLib; varA,B: întreg ; începe să scrie ( "Introduceți două valori întregi: ") ; Readln(A,B); ISwap(A,B); WriteIn("A=" ,A," B=" ,B); scrie ( „Valoarea maximă este”,IMax(A,B)); Sfârşit. (sfârșitul programului IntTest)

Toate declarațiile dintr-un modul sunt legate între ele. De exemplu, modulul Crt conține toate descrierile necesare pentru rutinele ecranului de pe computerul personal.

Modulele în Pascal în raport cu partea principală a programului seamănă cu subrutinele (proceduri și funcții). Dar, prin definiție, sunt programe independente ale căror resurse pot fi folosite în alte programe. În plus, descrierea modulelor apare în afara aplicației care apelează, dar într-un fișier separat, deci un modul este un program compilat separat. Fișierul modul compilat (care este cel pe care trebuie să îl utilizați) va avea extensia oferită de mediul de programare (de exemplu, .tpu , .ppu , .pcu).

Modulele sunt create, de regulă, pentru a asigura compactitatea codului, de care trebuie să aibă grijă proiectele mari. De asemenea, este de remarcat faptul că utilizarea modulelor într-un sens înlătură restricția privind segmentarea memoriei, deoarece codul fiecărui modul este situat într-un segment separat.

Structura modulului arată astfel:

unitate<имя модуля>; Interfață<интерфейсная часть>Implementarea<исполняемая часть>ÎNCEPE<инициализация>Sfârşit.

Nume modul (unitate)

Numele modulului care urmează cuvântului cheie Unit trebuie să se potrivească cu numele fișierului (fără .pas) care conține codul acestuia. De asemenea, folosind numele, modulul este conectat la un alt modul, sau la programul principal. Pentru a face acest lucru, trebuie să specificați cuvântul cheie Utilizări și să enumerați lista de pluginuri separate prin virgule:

utilizări<список имен модулей>;

Parte de interfață (Interfață)

Partea de interfață descrie anteturile obiectelor la care vor avea acces alte module și programe. Acestea sunt constante, tipuri, variabile și subrutine. De exemplu, așa poate arăta partea de interfață a modulului Căutare, care conține algoritmi pentru căutarea elementelor dintr-o matrice.

căutarea unității; Tipul interfeței arr = matrice de întreg; vars:string; procedura binary_search(x: intreg; Ar: arr; var s: sir); procedura line_search(x: întreg; Ar: arr; var s: șir);

Pentru a declara acest modul, trebuie să specificați numele acestuia în program:

După aceea, va fi posibil să utilizați toate obiectele descrise în partea de interfață.

Parte executabilă (Implementare)

Această secțiune începe cu cuvântul Implementare. Aici trebuie să descrii subrutinele declarate în partea de interfață. În același timp, este permis să nu se specifice parametrii formali în anteturile lor, altfel aceștia trebuie să se potrivească complet cu cei din partea de interfață. În plus, partea de interfață poate conține obiecte care sunt locale (inaccesibile programului apelant) pentru modul.
Partea inițială

Partea inițială își începe activitatea înainte de începerea execuției programului principal. În ea (între Început și Sfârșit), de regulă, sunt descriși operatori care sunt destinați diferitelor tipuri de lucrări auxiliare. Este posibil ca această parte să lipsească sau să nu aibă cod în ea. În primul caz, trebuie să specificați End cu un punct, în al doilea, lăsați un spațiu gol în interiorul Begin și End .

Compilarea modulelor

Doar modulele compilate care au o extensie furnizată de mediul dumneavoastră de dezvoltare a aplicațiilor pot fi utilizate în program. Luați în considerare cele trei cele mai populare dintre ele:

compilarea modulelor în Turbo Pascal

Rezultatul compilării modulului în TurboPascal, va exista un fișier cu extensia .tpu (Unitate Turbo Pascal) care își stochează codul.

compilarea modulelor în Free Pascal

După compilarea modulului în mediu Pascal liber, sunt create două fișiere cu permisiuni diferite: .ppuși .o. Primul conține partea de interfață a modulului, iar al doilea (necesar pentru conectarea programului) este partea de implementare.

compilarea modulelor în Pascal ABC.NET

Pascal ABC.Net nu generează cod în limbajul mașinii în timpul compilării modulelor. Dacă compilarea are succes, codul este salvat într-un fișier cu rezoluție .pcu.

Există trei moduri de compilare pentru mediile de programare Turbo Pascal și Free Pascal: Compilare, Creare și Construire. În modul Compilare, toate modulele utilizate în program trebuie compilate în prealabil. O aplicație în modul Make compilation verifică toate modulele conectate pentru prezența fișierelor cu permisiunea corespunzătoare pentru mediul de programare (.tpu sau .o). Dacă vreuna dintre ele nu este găsită, atunci se caută un fișier cu numele modulului negăsit și extensia .pas. Cel mai de încredere dintre moduri este Build. Căutarea și compilarea fișierelor (cu extensia .pas) în acest mod are loc chiar și atunci când fișierele module există deja.

Exemplu: să creăm un mic modul care să conțină proceduri pentru căutarea binară și liniară a elementelor dintr-o matrice. Cod modul:

căutarea unității; Tipul interfeței arr = matrice de întreg; vars:string; procedura binary_search(x: intreg; Ar: arr; var s: sir); procedura line_search(x: întreg; Ar: arr; var s: șir); Implementare var a, b, c, i: întreg; procedura binary_search(x: intreg; Ar: arr; var s: sir); începe a:=1; b:=5; s:="NU"; In timp ce<=b do begin c:=a+(b-a) div 2; if (xAr[c]) apoi a:=c+1 altfel începe s:="DA"; pauză; Sfârşit; Sfârşit; Sfârşit; procedura line_search(x: întreg; Ar: arr; var s: șir); începe s:="NU"; pentru i:=1 la 5 începe dacă (Ar[i]=x) apoi începe s:="DA"; pauză; Sfârşit; Sfârşit; Sfârşit; Sfârşit.

Tot acest cod ar trebui să fie într-un fișier separat. Acum să scriem programul principal, în care vom conecta modulul nostru de căutare.

Program module_search; folosește Crt, Căutare; var mas: matrice de numere întregi; n, j: întreg; str:șir; y: char; începe clrscr; writeln("Introduceți elementele matricei"); pentru j:=1 la 5 do readln(mas[j]); write("Introduceți numărul de căutare: "); readln(n); write("Această matrice este ordonată? (da/n)"); readln(y); if y="y" atunci binary_search(n, mas, str) else line_search(n, mas, str); scrie(str); tasta de citire; Sfârşit.

După compilarea fișierelor, această aplicație ar trebui să funcționeze corect. Desigur, dacă răspundeți la întrebarea „Este această matrice ordonată?” da programului informații false, apoi poate răspunde în natură.

În limbajul Pascal, bibliotecile de subrutine sunt folosite pentru a implementa tehnologia de programare structurată folosind module. Din punct de vedere textual, bibliotecile sunt combinate în unități de program independente numite module ale limbajului Pascal. Modulele sunt create pentru a implementa biblioteci de rutine. De obicei, modulele combină subprograme care efectuează sarcini din aceeași clasă.

Modul este o unitate de program independentă care se compilează în mod autonom și are o anumită structură.

Modulul are următoarea structură:

Titlul unui modul Pascal constă din cuvântul de serviciu Unit urmat de numele modulului. Există cerințe stricte pentru numele modulului, iar acest nume trebuie să se potrivească cu numele fișierului disc cu extensia .pas, care conține textul modulului.

UnitMyType; //fișierul MyType.pas

Numele modulului este folosit pentru a lega modulul la programe și alte module. Programele și modulele leagă la modulul necesar în secțiunea Utilizări a programului sau modulului. Modulele pot apela alte module pentru munca lor, dacă un modul apelează un alt modul, atunci secțiunea Utilizări trebuie să urmeze cuvântul cheie INTERFACE.

Partea de interfață a limbajului Pascal începe cu cuvântul rezervat INTERFACE. Servește pentru a lega modulul cu programul gazdă sau cu alte module. Partea de interfață conține declarația tuturor obiectelor globale ale modulului. În primul rând, sunt declarate subrutinele și, în plus, tipurile și variabilele globale. Dacă un obiect este declarat global, atunci acesta poate fi utilizat în programul și modulul care apelează fără o declarație specială.

Unitatea Masa de apa;

INTERFATA

UTILIZAȚI MyType;

[tip_nume]:[tip];

[lista_variabile_globale]:[tip];

În partea de interfață, subrutinele sunt declarate prin anteturile lor, care includ numele subrutinei și o listă de parametri formali.

Partea executabilă a limbajului Pascal începe cu cuvântul de serviciu IMPLEMENTARE și conține o descriere a subprogramelor declarate în partea de interfață, în plus, obiectele locale ale modulului (variabile, constante) pot fi declarate în partea executabilă. Descrierea unui subprogram din partea executabilă trebuie să înceapă cu titlul subrutinei, în timp ce lista parametrilor formali este omisă.

Partea inițială a limbajului Pascal termină modulul, iar această parte poate fi absentă sau poate fi goală. Nu este recomandat să faceți partea de inițiere, deoarece pot apărea situații de blocare. Conține instrucțiuni executabile, stabilește valorile inițiale ale variabilelor globale, deschide fișierele necesare și stabilește legături cu alte fișiere.

Compilarea modulelor în Pascal

Când lucrați cu module, trebuie să compilați modulele în sine și să compilați programele care utilizează modulele. După cum știți, există trei moduri de compilare în mediul Borland Pascal (Compile, Build, Make). La compilarea modulului în sine, se folosește de obicei modul Compilare, deși alte moduri sunt posibile dacă modulul este utilizat de alte module. Compilarea unui modul nu creează un program executabil, ci creează un fișier modul special compilat cu extensia .tpw. Fișierele unităților compilate sunt plasate în directoare, de obicei numite Unități (specificate în setările de mediu). La compilarea programelor care conțin module, pot fi utilizate toate cele trei moduri de compilare. Compilarea diferitelor moduri diferă ca durată și fiabilitate.

Modul Compila- cel mai simplu și mai rapid. În acest mod, compilatorul verifică prezența pluginurilor în secțiunea Utilizări și compilează programele dacă acestea sunt prezente. Dacă modulul lipsește, compilarea se oprește și este afișat un mesaj despre modulul lipsă.

În modul Face compilatorul verifică prezența pluginurilor și dacă nu se găsește un modul, compilatorul caută textul modulului cu extensia .pas, compilează modulul și apoi compilează programul. În plus, compilatorul verifică datele de creare a modulelor .tpw și .pas. Dacă constată că data creării fișierului .pas este ulterioară fișierului .tpw, deduce că s-au făcut modificări textului modulului și recompilează modulele din nou. Astfel, este mai fiabil.

În modul Construi toate fișierele .tpw sunt ignorate, compilatorul va recompila toate modulele utilizate în programul principal și va compila programul. Acesta este modul cel mai fiabil, dar în același timp și cel mai lung.

Modul (UNITATE-modul, unitate) este o unitate de program compilată autonom (separat) care conține componentele secțiunii de descriere (etichete, constante, tipuri, variabile, proceduri, funcții) și poate conține și operatori de inițializare a piesei.
Modulul în sine nu este un program executabil, dar este destinat să fie utilizat de alte programe și module.

Structura modulului

Modulul are următoarea structură:
UNITATE< numele modulului >
INTERFATA
< secțiunea de interfață >
IMPLEMENTARE
< sectiunea de implementare >
ÎNCEPE
< secțiunea de inițializare >
SFÂRŞIT.

Antetul modulului constă dintr-un cuvânt rezervat unitate(modul) și numele modulului.

Numele modulului este ales conform regulilor generale și trebuie să se potrivească cu numele fișierului disc care conține codul sursă al modulului.
Extensia numelui modulului (. pas ) nu este specificat, este setat implicit.

Numele modulului este folosit pentru a-l lega la programul principal cu o clauză utilizări .
Oferi utilizări m.b. plasat după antetul modulului sau în spatele cuvintelor

Interfațăși Implementarea .

Partea de interfață Interfață(interfață, articulare, conexiune) și conține referințe la alte module și declarații (descrieri) ale obiectelor globale, adică etichete, constante, tipuri, variabile și anteturi ale procedurilor și funcțiilor care sunt disponibile programului principal și altor module (adică vizibile din afara).

Secțiunea de implementare - începe cu cuvântul cheie Implementarea(execuție) și conține o descriere a obiectelor locale modulului, adică etichete, constante, tipuri, variabile care nu sunt disponibile pentru programul principal și alte module (adică nu sunt vizibile din exterior) și o descriere completă a procedurilor și funcțiilor . În acest caz, în antetul subrutinelor, lista parametrilor formali poate fi este omis, dar dacă este dat, trebuie să se potrivească exact cu descrierea din partea interfață.

Secțiunea de inițializare - cuprinse între paranteze ÎNCEPUT Sfârșit.
și conține instrucțiuni care vor fi executate înainte ca controlul să fie transferat în programul principal. Acest lucru ar putea fi Instrucțiuni de inițializare a datelor (variabile) De exemplu, instrucțiuni de atribuire și de intrare, precum și proceduri pentru legarea și deschiderea fișierelor. Secțiunea operatori poate fi. gol ÎNCEPUT Sfârșit sau pur și simplu absent Sfârşit .
O perioadă este plasată la sfârșitul modulului.

Compilarea și utilizarea modulelor

Sistemul RAM are o structură de segment (un segment este egal cu 64K = 65535 octeți). Codul programului poate fi nu mai mult de un segment, cantitatea de date nu poate depăși un segment (cu excepția cazului în care se utilizează memorie dinamică) și un segment pentru stivă. Dimensiunea stivei este stabilită de directivă (M$<>). Dimensiunea minimă a stivei este de 1K, iar un singur segment maxim este de 16K în mod implicit. Valorile variabilelor locale sunt împinse în stivă atunci când este apelată subrutina și sunt scoase din stivă la ieșire.
Codul modulului este plasat într-un segment separat, deoarece se difuzează autonom de programul principal, iar numărul de module folosite de program depinde doar de OP-ul disponibil. Acest lucru vă permite să creați programe mari.
Compilatorul generează cod de modul cu același nume, dar extensie tpu (unitate turbo pascal).
Pentru a utiliza modulul de către programul principal sau alte module, numele acestuia (fără extensie) este plasat în lista de sugestii utilizări
Dacă modulul este compact și des utilizat de programele de aplicație, poate fi plasat în biblioteca de module standard TURBO.TPL (Biblioteca Turbo-Pasacal ) folosind utilitarul TPUMOVER.
Dar acest lucru ar trebui făcut numai în caz de urgență. biblioteca este încărcată în OP și reduce spațiul pentru program.
La compilarea fișierului cu codul sursă al modulului, apare un fișier cu același nume cu extensia tpu și plasat în directorul specificat de opțiune

OPTIUNI/DIRECTORIE/UNITATI DIRECTORII

sau în directorul curent dacă această opțiune nu este prezentă.
La compilarea programului principal, modulele utilizate trebuie să fie în directorul specificat de opțiune
OPȚIUNI/DIRECTORIE/EXE & TPU DIRECTORIE

sau în directorul curent în absența acestei opțiuni
A primi EXE fișier de activitate în opțiune

COMPILARE/DESTINATIE/DISC(MEMORARI)
instalare DISC .
Există trei moduri de compilare a modulelor:
- COMPILARE
-CONSTRUI
- FACE

Moduri setate prin meniu COMPILA

1.Mod COMPILA(numit Alt-F9 ). În acest caz, programul este compilat, iar modulele utilizate ar trebui să fie. precompilate și stocate în directoarele corespunzătoare.
2.Mod CONSTRUI(numit - F9). În acest caz, modulele compilate anterior sunt ignorate, iar modulele cu extensia pas și recompilat.
3.Mod FACE(numit F9). În acest caz, numai modulele care au avut modificări în text sunt recompilate.

Exemplul 16.1.

În dosar inp.txt există trei rețele de numere reale

2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6

Funcția de calcul

unde Max_a, Max_b, Max_c, Sa, Sb, Sc, ka, kb, kc sunt elementul maxim, suma și numărul de elemente pozitive ale tablourilor corespunzătoare a, b și c.
Trimiteți rezultatul într-un fișier afară. TXT și pe ecran.

Textul modulului

UNMAS;
Interfață
Const n=10;
Tip vec=matrice de real;
Varz:vec;
i:întreg;
f1,f2:text;

Procedura SK1(z:vec; num:byte; Var s:real; Var k:byte);
Funcția MAX(z:vec; num:byte):real;

Implementarea
ProcedureV(s:char; num:byte;Var z:vec);
ÎNCEPE
Writeln("Matrice", s);
Pentru i:=1 la num do
ÎNCEPE
Read(f1,z[i]); Scrie(z[i]:4:1," ":3);
Sfârşit;
readln(f1); Writeln;
Sfârşit;

Procedura SK1(z:vec;num:byte; Var s:real; Var k:byte);
ÎNCEPE
s:=0; k:=0;
pentru i:=1 la num do dacă z[i]>0 atunci
ÎNCEPE
s:=s+z[i];
k:=k+1
Sfârşit;
Sfârşit;
Funcția MAX(z:vec;num:byte):real;
varm:real;
ÎNCEPE
m:=z;
pentru i:=1 la num do dacă z[i]>m atunci m:=z[i];
MAX:=m
Sfârşit;

ÎNCEPE
Atribuire(f1,"inp.txt"); resetare(f1);
Atribuire(f2,"out.txt"); Rescrie (f2)
Sfârşit.

Textul programului

Program lr7_16;
Utilizează CRT, UNMAS;
Var
a,b,c:vec;
y,sa,sb,sc:real;
ka,kb,kc:byte;
ÎNCEPE
clrscr;
Vv("a",8,a);
vv("b",9,b);
vv("c",n,c);
SK1(a,8,sa,ka);
SK1(b,9,sb,kb);
SK1(c,n,sc,kc);
y:=(MAX(a,8)+MAX(b,9)+MAX(c,n))+(sa+sb+sc+ka+kb+kc);
Writeln("Rezultat:":20);
Scrie ("Matrice a: ");
Writeln("sa=",sa:5:1," ka=",ka);
Scrie ("Matrice b: ");
Writeln("sb=",sb:5:1," kb=",kb);
Scrie ("Matrice c: ");
Writeln("sc=",sc:5:1," kc=",kc);
Writeln(" ":10,"y=",y:10);
readln;
Writeln(f2,"ђҐ§g"mv la:");
Writeln(f2," ":10,"y=",y:10);
close(f1);
Închidere (f2)
Sfârşit.

Rezultatele programului

Matrice a
-2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6
Matricea b
2.3 -4.3 2.1 2.5 -3.7 -5.6 4.6 3.5 -7.5
Matrice c
-2.1 4.3 -2.3 7.6 4.5 -8.9 5.7 -4.5 6.8 -5.8
Rezultat:
Matrice a: sa= 17,6 ka=4
Matricea b: sb= 15,0 kb=5
Matricea c: sc= 28,9 kc=5
y=9,330E+01