Паскал. Персонализирани модули. Plugins - Pascal Basic графични рутинни процедури и функции

Модули в Pascalпо отношение на основната част на програмата те приличат на подпрограми (процедури и функции). Но по дефиниция те са независими програми, чиито ресурси могат да се използват в други програми. Освен това описанието на модулите се извършва извън извикващото приложение, но в отделен файл, така че модулът е отделно компилирана програма. Компилираният файл на модула (който е този, който трябва да използвате) ще има разширението, предоставено от средата за програмиране (например .tpu, .ppu, .pcu).

Модулите се създават, като правило, за да се осигури компактността на кода, за което трябва да се погрижат големите проекти. Също така си струва да се отбележи, че използването на модули в известен смисъл премахва ограничението за сегментиране на паметта, тъй като кодът на всеки модул се намира в отделен сегмент.

Структурата на модула изглежда така:

мерна единица<имя модуля>;
Интерфейс
<интерфейсная часть>
Изпълнение
<исполняемая часть>
Започнете
<инициализация>
край.

Име на модул (Единица)

Името на модула след ключовата дума мерна единица, трябва да съвпада с името на файла (без .pas), който съдържа неговия код. Също така, използвайки името, модулът е свързан към друг модул или към основната програма. За да направите това, трябва да посочите служебната дума използваи избройте списъка с плъгини, разделени със запетаи:

използва<список имен модулей>;

Интерфейсна част (интерфейс)

Интерфейсната част описва заглавките на обекти, до които други модули и програми ще имат достъп. Това са константи, типове, променливи и подпрограми. Така например може да изглежда интерфейсната част на модула за търсене, която съдържа алгоритми за търсене на елементи в масив.

1
2
3
4
5
6

Търсене на единици;
Интерфейс

vars: низ

За да декларирате този модул, трябва да посочите името му в програмата:

След това ще бъде възможно да се използват всички обекти, описани в интерфейсната част.

Изпълнима част (Внедряване)

Този раздел започва с думата Изпълнение(изпълнение). Тук трябва да опишете подпрограмите, декларирани в интерфейсната част. В същото време е позволено да не се посочват формални параметри в техните заглавки, в противен случай те трябва напълно да съвпадат с тези в интерфейсната част. В допълнение, интерфейсната част може да съдържа обекти, които са локални (недостъпни за извикващата програма) за модула.

Инициираща част

Началната част започва своята работа преди началото на изпълнението на основната програма. В него (между начало и край) като правило се описват оператори, които са предназначени за различни видове спомагателна работа. Тази част може да липсва или да няма код в нея. В първия случай трябва да посочите край с точка, във втория оставете празно пространство вътре в началото и края.

Компилиране на модули

В програмата могат да се използват само компилирани модули, които имат разширение, предоставено от вашата среда за разработка на приложения. Помислете за трите най-популярни от тях:

TurboPascal

Резултатът от компилирането на модул в Turbo Pascal ще бъде файл с разширението .tpu (Турбо паскал единица), който съхранява своя код.

Безплатен Pascal

След компилиране на модул в средата Free Pascal се създават два файла с различни разрешения: .ppuи .o. Първата съдържа интерфейсната част на модула, а втората (необходима за свързване на програмата) е частта за изпълнение.

Pascal ABC.NET

Pascal ABC.Net не генерира код на машинен език по време на компилацията на модула. Ако компилацията е успешна, кодът се записва във файл с разрешение .pcu.

Има три режима на компилация за програмните среди Turbo Pascal и Free Pascal: Компилирайте, направете и изградете. В режим на компилиране всички модули, използвани в програмата, трябва да бъдат компилирани предварително. Приложението в режим make-compilation проверява всички свързани модули за наличието на файлове с подходящо разрешение за програмната среда (.tpu или .o). Ако някой от тях не бъде намерен, тогава се търси файл с името на неоткрития модул и разширението .pas. Най-надеждният от режимите е Build. Търсенето и компилирането на файлове (с разширение .pas) в този режим се извършва дори когато вече съществуват модулни файлове.

Пример

Нека създадем малък модул, съдържащ процедури за двоично и линейно търсене на елементи в масив. Код на модула:

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

Търсене на единици;
Интерфейс
тип arr = масив [1..5] от цяло число;
vars: низ
процедура binary_search(x: цяло число; Ar: arr; var s: низ);
процедура line_search(x: цяло число; Ar: arr; var s: низ) ;
Изпълнение
var a, b, c, i: цяло число;
процедура binary_search(x: цяло число; Ar: arr; var s: низ);
започнете
а:= 1; b:= 5; s:= 'НЕ';
докато а<= b do
започнете
c:= a+ (b- a) div 2 ;
ако (x b:= c- 1
иначе if (x>Ar[ c] ) тогава
a:= c+ 1
друго
начало s:= 'ДА' ; прекъсване ; край ;
край ;
край ;
процедура line_search(x: цяло число; Ar: arr; var s: низ) ;
започнете
s:= 'НЕ';
за i:= 1 до 5 направи
започнете
ако (Ar[i] = x) тогава
започнете
s:= 'ДА' ; прекъсване ;
край ;
край ;
край ;
край.

Целият този код трябва да бъде в отделен файл. Сега нека напишем основната програма, в която ще свържем нашия модул за търсене.

Модул (единица)е набор от константи, типове данни, променливи, процедури и функции. Всеки модул е ​​подобен на отделна програма на Pascal: той може да има основно тяло, което се извиква преди вашата програма да стартира и извършва необходимата инициализация. Накратко, модулът е библиотека от декларации, които можете да вмъкнете във вашата програма и което ще ви позволи да разбиете програмата на части, които се компилират отделно.

Turbo Pascal ви дава достъп до голям брой вградени константи, типове данни, променливи, процедури и функции. Някои от тях са специфични за Turbo Pascal; други са специфични за IBM PC (и съвместими компютри) или за операционната система MS-DOS. Броят им е голям, но във вашата програма рядко ги използвате всички наведнъж. Следователно те са разделени на свързани групи, наречени модули. В този случай можете да използвате само онези модули, които са необходими в програмата.

Структура на модула

Модулът предоставя набор от функции чрез процедури и функции, поддържани от константи, типове данни и променливи, но действителната реализация на тези функции е скрита, тъй като модулът е разделен на две секции: интерфейс и реализация. Ако дадена програма използва модул, тогава всички декларации на модула стават достъпни за тази програма, сякаш са дефинирани сами по себе си.

Структурата на модула е подобна на тази на програмата, но има няколко съществени разлики. Например, помислете за модула:

мерна единица<идентификатор>; използва интерфейса<список модулей>; (По избор) (отворени описания)изпълнение (описания на затворени процедури и функции)започнете (код за инициализация)край.

Заглавката на модула започва със запазената словна единица, последвана от името на модула (идентификатор), точно както в случая на име на програма. Следващият елемент в модула е ключовата дума за интерфейс. Той маркира началото на интерфейсната секция на модула - секцията, която е видима за всички други модули или програми, които го използват.

Един модул може да използва други модули, за това те са дефинирани в клаузата uses. Клаузата use, ако е налице, следва непосредствено след ключовата дума на интерфейса. Обърнете внимание, че общото правило за използване на клаузата use е изпълнено тук: ако модулът, чието име е посочено в клаузата uses, използва други модули, тогава имената на тези модули също трябва да бъдат посочени в клаузата uses и преди да бъдат използвани.

Стандартни модули

Файлът TURBO.TPL съдържа всички стандартни пакети с изключение на Graph и пакетите за съвместимост (Graph3 и Turbo3): System, Overlay, Crt, Dos и Printer. Тези пакети се зареждат в паметта с Turbo Pascal и са винаги достъпни за вас. Обикновено файлът TURBO.TPL се съхранява в същата директория като TURBO.EXE (или TPC.EXE). Можете да го съхранявате в друга директория, стига да е описана като директория на Turbo Pascal. За да направите това, използвайте TINST.EXE, за да зададете тази директория във файла TURBO.EXE.

Използвани пакети: не

Системата съдържа всички стандартни и вградени процедури и функции на Turbo Pascal. Всяка подпрограма Turbo Pascal, която не е част от стандартния Pascal и не се намира в нито един друг модул, се съдържа в System. Този модул е ​​прикачен към всички програми.

Използвани пакети: не

DOS дефинира множество паскалски подпрограми и функции, които са еквивалентни на най-често използваните DOS повиквания, като GetTime, SetTime, DiskSize и т.н. В допълнение, той дефинира две програми от ниско ниво, MsDos и Intr, които ви позволяват да активирате всяко MS-DOS повикване или прекъсване на системата. Регистри е типът данни за параметъра в MsDos и Intr. Освен това са дефинирани някои други константи и типове данни.

Използвани пакети: не

Overlay – съдържа инструменти за създаване на програми за наслагване. Програмата OVERKAY е програма, която не зарежда всички, а на части.

Използвани пакети: не

Crt предоставя набор от специфични за компютъра описания на константи, променливи и програми за I/O операции. Последният може да се използва за работа с екрана (настройка на прозорци, директно управление на курсора, цветове на текст и фон). Освен това можете да правите "суров" вход от клавиатура и да управлявате платката за генериране на звук на персонален компютър. Този модул предоставя много процедури, които бяха стандартни във версия 3.0.

Използвани пакети: Crt

Модулът Printer дефинира променлива на текстов файл, Lst, която е свързана с драйвер на устройство, който позволява стандартен изход на Pascal да бъде изпратен до принтер с помощта на Write и Writeln. Например, като включите Printer във вашата програма, можете да направите следното:

Напишете (Lst,"Сума от " ,A:4 ," и " ,B:4 ," е равно на " ) ; C:=A+B; WriteIn(Lst,C:8) ;

Използвани пакети: Crt

Graph3 поддържа пълния набор от графични рутинни програми за версия 3.0 - за обикновени графики, разширени графики и графики, използващи относителни команди. Те са идентични по име, параметри на функцията и подпрограми от версия 3.0.

Използвани пакети: Crt

Този модул съдържа две променливи и няколко процедури, които вече не се поддържат от Turbo Pascal. Те включват вградената файлова променлива Kbd, булевата променлива CBreak и оригиналните целочислени версии на MemAvail и MaxAvail (които връщат свободната памет в параграфи, а не в байтове, както правят оригиналните версии).

Използвани пакети: Crt

Graph предоставя набор от бързи, ефективни графични процедури, които ви позволяват да се възползвате напълно от графичните възможности на вашия персонален компютър.

Този модул реализира независимия от устройството графичен драйвер на Borland, за да поддържа CGA, EGA, Hercules, ATT 400, MCGA, 3270 PC и VGA графични адаптери.

Писане на собствени модули

Да приемем, че сте написали модул IntLib, записали сте го във файла INTLIB.PAS и сте го превели на диск; полученият код е във файла INTLIB.TRU. За да използвате този модул във вашата програма, трябва да включите израз uses във вашата програма, за да кажете на компилатора кой модул да използва. Вашата програма може да изглежда така:

програма MyProg; използва IntLib;

Имайте предвид, че Turbo Pascal приема, че файлът, съдържащ модула, има същото име като самия модул. Ако името на вашия модул е ​​MyUtilities, тогава Turbo Pascal ще търси файл с име MYUTILIT.PAS.

Компилация на модули

Модулът се компилира точно по същия начин, както се компилира програмата: той се създава с помощта на редактора и след това се извиква командата Compile / Сcompile (Compile / Compile) (или се натискат клавишите Alt-C). Въпреки това, вместо файл с разширение .EXE, Turbo Pascal създава файл с разширението .TRU (Turbo Pascal Unit - Turbo Pascal Unit). След това можете да оставите този файл такъв, какъвто е, или да го вмъкнете в TURBO.TPL с помощта на TPUMOVER.EXE.

И в двата случая има смисъл да изпратите *.TRU файловете (заедно с изходните файлове) в директорията на модула, която се дефинира с командата O/D/Unit directories. Може да има само един модул на изходен файл, защото компилацията спира веднага щом се срещне завършващият крайен оператор.

Пример:

Нека напишем малък модул. Нека го наречем IntLib и да вмъкнем в него две прости подпрограми за цели числа - процедура и функция:

единица IntLib; интерфейсна процедура ISwap(var I,J: integer) ; функция IMax(I,J: цяло число): цяло число; процедура за изпълнение ISwap; var Temp: цяло число; beginTemp:=I; I:=J; J:=температурен край; (край на процедурата ISwap)функция IMax; start if I > J then IMax:=I else IMax:=J end ; (край на функцията IMax)край. (края на модула IntLib)

Нека представим тази подпрограма, да я запишем във файла INTLIB.PAS и след това да я преведем на диск. В резултат на това получаваме кода на модула във файла INTLIB.TRU. Нека го изпратим в директорията на модулите. Следната програма използва модула IntLib:

програма IntTest; използва IntLib; varA,B: цяло число; започнете да пишете ( "Въведете две цели числа: ") ; Readln(A,B); ISwap(A,B) ; WriteIn("A=" ,A," B=" ,B) ; пишете ( "Максималната стойност е",IMax(A,B) ); край. (край на програмата IntTest)

Всички декларации в рамките на един модул са свързани помежду си. Например, модулът Crt съдържа всички описания, необходими за екранните процедури на вашия персонален компютър.

Модулите в Pascal по отношение на основната част на програмата приличат на подпрограми (процедури и функции). Но по дефиниция те са независими програми, чиито ресурси могат да се използват в други програми. Освен това описанието на модулите се извършва извън извикващото приложение, но в отделен файл, така че модулът е отделно компилирана програма. Компилираният модулен файл (който е този, който трябва да използвате) ще има разширението, предоставено от средата за програмиране (например .tpu , .ppu , .pcu).

Модулите се създават, като правило, за да се осигури компактността на кода, за което трябва да се погрижат големите проекти. Също така си струва да се отбележи, че използването на модули в известен смисъл премахва ограничението за сегментиране на паметта, тъй като кодът на всеки модул се намира в отделен сегмент.

Структурата на модула изглежда така:

мерна единица<имя модуля>; Интерфейс<интерфейсная часть>Изпълнение<исполняемая часть>Започнете<инициализация>край.

Име на модул (Единица)

Името на модула след ключовата дума Unit трябва да съвпада с името на файла (без .pas), който съдържа неговия код. Също така, използвайки името, модулът е свързан към друг модул или към основната програма. За да направите това, трябва да посочите ключовата дума Uses и да посочите списъка с плъгини, разделени със запетаи:

използва<список имен модулей>;

Интерфейсна част (интерфейс)

Интерфейсната част описва заглавките на обекти, до които други модули и програми ще имат достъп. Това са константи, типове, променливи и подпрограми. Така например може да изглежда интерфейсната част на модула за търсене, която съдържа алгоритми за търсене на елементи в масив.

търсене на единици; Тип интерфейс arr = масив от цяло число; vars:string; процедура binary_search(x: цяло число; Ar: arr; var s: низ); процедура line_search(x: цяло число; Ar: arr; var s: низ);

За да декларирате този модул, трябва да посочите името му в програмата:

След това ще бъде възможно да се използват всички обекти, описани в интерфейсната част.

Изпълнима част (Внедряване)

Този раздел започва с думата Внедряване. Тук трябва да опишете подпрограмите, декларирани в интерфейсната част. В същото време е позволено да не се посочват формални параметри в техните заглавки, в противен случай те трябва напълно да съвпадат с тези в интерфейсната част. В допълнение, интерфейсната част може да съдържа обекти, които са локални (недостъпни за извикващата програма) за модула.
Инициираща част

Началната част започва своята работа преди началото на изпълнението на основната програма. В него (между начало и край) като правило се описват оператори, които са предназначени за различни видове спомагателна работа. Тази част може да липсва или да няма код в нея. В първия случай трябва да посочите End с точка, във втория оставете празно пространство вътре в Begin и End.

Компилиране на модули

В програмата могат да се използват само компилирани модули, които имат разширение, предоставено от вашата среда за разработка на приложения. Помислете за трите най-популярни от тях:

компилиране на модули в Turbo Pascal

Резултатът от компилирането на модула в TurboPascal, ще има файл с разширението .tpu (Турбо паскал единица), който съхранява своя код.

компилиране на модули в Free Pascal

След компилиране на модула в средата Безплатен Pascal, се създават два файла с различни разрешения: .ppuи .o. Първата съдържа интерфейсната част на модула, а втората (необходима за свързване на програмата) е частта за изпълнение.

компилиране на модули в Pascal ABC.NET

Pascal ABC.Net не генерира код на машинен език по време на компилацията на модула. Ако компилацията е успешна, кодът се записва във файл с разделителна способност .pcu.

Има три режима на компилация за програмните среди Turbo Pascal и Free Pascal: Compile, Make и Build. В режим на компилиране всички модули, използвани в програмата, трябва да бъдат компилирани предварително. Приложението в режим make-compilation проверява всички свързани модули за наличието на файлове с подходящо разрешение за програмната среда (.tpu или .o). Ако някой от тях не бъде намерен, тогава се търси файл с името на неоткрития модул и разширението .pas. Най-надеждният от режимите е Build. Търсенето и компилирането на файлове (с разширение .pas) в този режим се извършва дори когато вече съществуват модулни файлове.

Пример: нека създадем малък модул, съдържащ процедури за двоично и линейно търсене на елементи в масив. Код на модула:

търсене на единици; Тип интерфейс arr = масив от цяло число; vars:string; процедура binary_search(x: цяло число; Ar: arr; var s: низ); процедура line_search(x: цяло число; Ar: arr; var s: низ); Реализация var a, b, c, i: цяло число; процедура binary_search(x: цяло число; Ar: arr; var s: низ); начало a:=1; b:=5; s:="НЕ"; докато а<=b do begin c:=a+(b-a) div 2; if (xAr[c]) тогава a:=c+1 else започва s:="YES"; прекъсване; край; край; край; процедура line_search(x: цяло число; Ar: arr; var s: низ); начало s:="НЕ"; за i:=1 до 5 започват, ако (Ar[i]=x), тогава започват s:="YES"; прекъсване; край; край; край; край.

Целият този код трябва да бъде в отделен файл. Сега нека напишем основната програма, в която ще свържем нашия модул за търсене.

Програмен модул_търсене; използва Crt, Search; var mas: масив от цели числа; n, j: цяло число; str:низ; y: char; започнете clrscr; writeln("Въведете елементите на масива"); за j:=1 до 5 направете readln(mas[j]); write("Въведете търсене на число: "); readln(n); write("Този масив е подреден? (y/n)"); readln(y); ако y="y" тогава binary_search(n, mas, str) else line_search(n, mas, str); напиши (str); ключ за четене; край.

След компилиране на файловете, това приложение трябва да работи правилно. Разбира се, ако отговаряте на въпроса „Поръчан ли е този масив?“ да даде на програмата фалшива информация, след което тя може да отговори с натура.

В езика Pascal библиотеките от подпрограми се използват за прилагане на технология за структурирано програмиране с помощта на модули. Текстуално библиотеките се комбинират в независими програмни единици, наречени модули на езика Pascal. Модулите са създадени за изпълнение на библиотеки от рутинни програми. Обикновено модулите комбинират подпрограми, които изпълняват задачи от един и същи клас.

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

Модулът има следната структура:

Заглавието на модул Pascal се състои от служебната дума Unit, последвана от името на модула. Има строги изисквания за името на модула и това име трябва да съответства на името на дисковия файл с разширението .pas, което съдържа текста на модула.

UnitMyType; //файл MyType.pas

Името на модула се използва за свързване на модула с програми и други модули. Програмите и модулите се свързват към необходимия модул в секцията Използване на програмата или модула. Модулите могат да извикват други модули за тяхната работа, ако модул извика друг модул, тогава секцията Uses трябва да следва ключовата дума INTERFACE.

Интерфейсната част на езика Pascal започва със запазената дума INTERFACE. Той служи за свързване на модула с хост програмата или други модули. Интерфейсната част съдържа декларацията на всички глобални обекти на модула. На първо място се декларират подпрограми и в допълнение, глобални типове и променливи. Ако даден обект е деклариран глобално, тогава той може да се използва в извикващата програма и модул без специална декларация.

Единица Водна маса;

ИНТЕРФЕЙС

ИЗПОЛЗВА MyType;

[име_на_типа]:[тип];

[списък_на_глобални_променливи]:[тип];

В интерфейсната част подпрограмите се декларират от техните заглавки, които включват името на подпрограмата и списък с формални параметри.

Изпълнимата част на езика Pascal започва със служебната дума IMPLEMENTATION и съдържа описание на подпрограмите, декларирани в интерфейсната част, в допълнение, обекти, локални за модула (променливи, константи), могат да бъдат декларирани в изпълнимата част. Описанието на подпрограма в изпълнимата част трябва да започва със заглавието на подпрограмата, докато списъкът с формални параметри е пропуснат.

Началната част на езика Pascal прекратява модула и тази част може да липсва или да е празна. Извършването на началната част не се препоръчва, тъй като могат да възникнат ситуации на увисване. Той съдържа изпълними оператори, задава първоначалните стойности на глобалните променливи, отваря необходимите файлове и установява връзки с други файлове.

Компилиране на модули в Pascal

Когато работите с модули, трябва да компилирате самите модули и да компилирате програми, които използват модулите. Както знаете, има три режима на компилация в средата на Borland Pascal (компилиране, изграждане, създаване). При компилиране на самия модул обикновено се използва режимът на компилиране, въпреки че могат да се използват и други режими, ако модулът се използва от други модули. Компилирането на модул не създава изпълнима програма, а създава специален компилиран файл на модул с разширението .tpw. Компилираните файлове с единици се поставят в директории, обикновено наречени Units (посочени в настройките на средата). При компилиране на програми, съдържащи модули, могат да се използват и трите режима на компилация. Компилирането на различни режими се различава по продължителност и надеждност.

режим Компилиране- най-простият и бърз. В този режим компилаторът проверява за плъгини в секцията Използване и компилира програми, ако са налични. Ако модулът липсва, компилацията спира и се показва съобщение за липсващия модул.

В режим Направетекомпилаторът проверява за наличието на плъгини и ако някой модул не бъде намерен, компилаторът търси текста на модула с разширението .pas, компилира модула и след това компилира програмата. Освен това компилаторът проверява датите на създаване на модулите .tpw и .pas. Ако установи, че датата на създаване на .pas файла е по-късна от .tpw файла, той заключава, че са направени промени в текста на модула и прекомпилира модулите. Така е по-надежден.

В режим Изгражданевсички .tpw файлове се игнорират, компилаторът ще прекомпилира всички модули, използвани в основната програма, и ще компилира програмата. Това е най-надеждният режим, но в същото време и най-дългият.

модул (МЕРНА ЕДИНИЦА-module, unit) е автономно (отделно) компилиран програмен блок, който съдържа компонентите на раздела за описание (етикети, константи, типове, променливи, процедури, функции) и може също да съдържа оператори за инициализираща част.
Самият модул не е изпълнима програма, но е предназначен да се използва от други програми и модули.

Структура на модула

Модулът има следната структура:
МЕРНА ЕДИНИЦА< име на модула >
ИНТЕРФЕЙС
< интерфейсен раздел >
ИЗПЪЛНЕНИЕ
< раздел за изпълнение >
ЗАПОЧНЕТЕ
< раздел за инициализация >
КРАЙ.

Заглавка на модула се състои от запазена дума мерна единица(модул) и име на модула.

Името на модула се избира според общите правила и трябва да съвпада с името на дисковия файл, съдържащ изходния код на модула.
Разширение на името на модула (. пас ) не е посочен, той е зададен по подразбиране.

Името на модула се използва за свързването му с основната програма с клауза използва .
Оферта използвам.б. поставени след заглавката на модула или зад думите

Интерфейси Изпълнение .

Интерфейсна част Интерфейс(интерфейс, артикулация, връзка) и съдържа препратки към други модули и декларации (описания) на глобални обекти, т.е. етикети, константи, типове, променливи и заглавки на процедури и функции, които са достъпни за основната програма и други модули (т.е. видими отвън).

Раздел за изпълнение - започва с ключова дума Изпълнение(изпълнение) и съдържа описание на обекти, локални за модула, т.е. етикети, константи, типове, променливи, които не са достъпни за основната програма и други модули (тоест не се виждат отвън) и пълно описание на процедури и функции . В този случай в заглавката на подпрограмите може да бъде списъкът с формални параметри пропуснато, но ако е дадено, трябва точно да съвпада с описанието в интерфейсната част.

Раздел за инициализация - затворени в скоби ЗАПОЧНЕТЕ КРАЙ.
и съдържа оператори, които ще бъдат изпълнени преди контрола да бъде прехвърлен към основната програма. Това може да бъде Инструкции за инициализация на данни (променливи) Например, оператори за присвояване и въвеждане, както и процедури за свързване и отваряне на файлове. Операторите раздел може да бъде. празен ЗАПОЧНЕТЕ КРАЙили просто отсъства КРАЙ .
В края на модула се поставя точка.

Компилиране и използване на модули

RAM системата има сегментна структура (един сегмент е равен на 64K = 65535 байта). Програмният код може да бъде не повече от един сегмент, количеството данни не може да надвишава един сегмент (освен ако не се използва динамична памет) и един сегмент за стека. Размерът на стека се задава от директивата ($ млн<>). Минималният размер на стека е 1K, а максималният единичен сегмент е 16K по подразбиране. Стойностите на локалните променливи се изтласкват в стека при извикване на подпрограмата и се изваждат от стека при излизане.
Кодът на модула е поставен в отделен сегмент, т.к излъчва се автономно от основната програма, а броят на модулите, използвани от програмата, зависи само от наличната ОП. Това ви позволява да създавате големи програми.
Компилаторът генерира код на модула със същото име, но разширение tpu (турбо паскал единица).
За да използвате модула от основната програма или други модули, името му (без разширение) се поставя в списъка с предложения използва
Ако модулът е компактен и често използван от приложни програми, може да бъде поставен в стандартната библиотека на модулите TURBO.TPL (библиотека Turbo-Pasacal ) с помощта на помощната програма TPUMOVER.
Но това трябва да се прави само в спешни случаи. библиотеката се зарежда в ОП и намалява пространството за програмата.
При компилиране на файла с изходния код на модула се появява файл със същото име с разширението tpu и се поставя в директорията, посочена от опцията

ОПЦИИ/ДИРЕКТОРИ/ДИРЕКТОРИ НА ЕДИНИЦИТЕ

или в текущата директория, ако тази опция не е налице.
При компилиране на основната програма използваните модули трябва да са в директорията, посочена от опцията
ОПЦИИ/ДИРЕКТОРИИ/EXE & TPU ДИРЕКТОРИИ

или в текущата директория при липса на тази опция
Получавам EXEфайл със задачи в опция

КОМПИЛИРАНЕ/ЦЕЛ/ДИСК(ПАМЕТ)
Инсталирай ДИСК .
Има три режима за компилиране на модули:
- КОМПИЛИРАНЕ
-ГРАДИ
- НАПРАВЕТЕ

Режими, зададени от менюто КОМПИЛИРАНЕ

1.Режим КОМПИЛИРАНЕ(Наречен Alt-F9 ) . В този случай програмата се компилира и използваните модули трябва да бъдат. предварително компилиран и съхранен в съответните директории.
2.Режим ИЗГРАДИ(Наречен - F9) . В този случай преди компилираните модули се игнорират, а модулите с разширението пас и прекомпилиран.
3.Режим НАПРАВЕТЕ(Наречен F9) . В този случай се прекомпилират само модули, които са имали промени в текста.

Пример 16.1.

Във файла inp.txt има три масива от реални числа

2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6

Изчислителна функция

където Max_a, Max_b, Max_c, Sa, Sb, Sc, ka, kb, kc са максималният елемент, сумата и броят на положителните елементи на съответните масиви a, b и c.
Изведете резултата във файл навън. текст и на екрана.

Текст на модула

UNMAS;
Интерфейс
Const n=10;
Тип vec=масив от реални;
Varz:vec;
i: цяло число;
f1,f2:текст;

Процедура SK1(z:vec; num:byte; Var s:real; Var k:byte);
Функция MAX(z:vec; num:byte):real;

Изпълнение
ПроцедураV(s:char; num:byte;Var z:vec);
Започнете
Writeln("Масив ",s);
За i:=1 до num do
Започнете
Четене (f1,z[i]); Напишете(z[i]:4:1," ":3);
край;
readln(f1); Writeln;
край;

Процедура SK1(z:vec;num:byte; Var s:real; Var k:byte);
Започнете
s:=0; k:=0;
for i:=1 to num do if z[i]>0 then
Започнете
s:=s+z[i];
k:=k+1
край;
край;
Функция MAX(z:vec;num:byte):real;
varm:real;
Започнете
m:=z;
for i:=1 to num do if z[i]>m then m:=z[i];
МАКС:=m
край;

Започнете
Присвояване(f1,"inp.txt"); нулиране (f1);
Присвояване(f2,"out.txt"); Пренаписване (f2)
край.

Текст на програмата

Програма lr7_16;
Използва CRT,UNMAS;
Вар
a,b,c:vec;
y,sa,sb,sc:real;
ka,kb,kc:byte;
Започнете
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("Резултат:":20);
Напишете ("Масив a: ");
Writeln("sa=",sa:5:1," ka=",ka);
Write("Масив b: ");
Writeln("sb=",sb:5:1," kb=",kb);
Write("Масив c: ");
Writeln("sc=",sc:5:1," kc=",kc);
Writeln(" ":10,"y=",y:10);
readln;
Writeln(f2,"ђҐ§g"mv към:");
Writeln(f2," ":10,"y=",y:10);
затваряне (f1);
Затваряне (f2)
край.

Резултати от програмата

Масив а
-2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6
Масив б
2.3 -4.3 2.1 2.5 -3.7 -5.6 4.6 3.5 -7.5
Масив c
-2.1 4.3 -2.3 7.6 4.5 -8.9 5.7 -4.5 6.8 -5.8
Резултат:
Масив a: sa= 17,6 ka=4
Масив b: sb= 15,0 kb=5
Масив c: sc= 28.9 kc=5
y=9,330E+01