Программа на Turbo-Pascal состоит из: заголовка программы; блока; знака (. ). Заголовок программ
Вид материала | Программа |
- Компоновать программы из отдельных частей отлаживать программы выполнять программы., 197.76kb.
- Программирование на языке высокого уровня, 59.92kb.
- Доманская Юлия Георгиевна г. Вилейка 2006г пояснительная записка, 74.95kb.
- Програма на мові Turbo Pascal, лінійні програми Команди галуження, вибору та мітки, 1485.97kb.
- Задачи работы Научиться создавать программы на языке Turbo Pascal с использованием, 598.05kb.
- Структура программы на Паскале Система программирования Турбо Паскаль, 145.34kb.
- Б. В. Ващук Turbo Pascal, 715.52kb.
- Изучаем Turbo Pascal» (главы 2, 4-6), Г. Г. Рапаков, С. Ю. Ржеуцкая «Turbo Pascal для, 92kb.
- Конспект урока по информатике для десятого класса по теме «Условный оператор в Turbo, 32.44kb.
- Курс «Программирование на языке Turbo Pascal 0» Цель курса, 19.6kb.
Процедуры.
Это зависящая именованная часть программы, предназначенная для выражения какой-то законченной последовательности действий. Способны вернуть несколько результирующих значений через глобальные переменные или по их адресам.
Структура процедуры.
“Procedure” <идентификатор> [(список формальных параметров)] ”;”
Под списком начинается {декларативная часть локальных объявлений}
{$ ? ...} uses, const, var, type, label
раздел подпрограммы
begin
операторы
end;
Вызов процедуры происходит из исполняемой части главной программы или вызывающей подпрограммы высшего уровня и представляет собой оператор формат вызова.
<идентификатор программы> [(список фактических значений)] ”;”
Идентификаторы процедуры в заголовке и операторе вызова идентичны.
Пример: подпрограмма должна заполнить массив исходными данными.
Program proba;
Const k=100
Type Tm=array[1…k] of integer;
Var M:TM ; i; fk; byte;
Procedure InputMas (Var M:TM ; i; fk; byte;)
var i: byte;
begin
for i:=1 to10 do
begin
Mas[i]:=round(random(50)-25);
{= = = = = = = = = = = = = = = = = = = = = = =}
begin
write(‘Введите количество элементов’);
repeat read (fk); until fk<=k;
inputMas(M,fk);
for i:=1 to fk do
write(M[i]:5);
end.
Функция.-
Это зависимая именованная часть программы, предназначенная для выполнения некоторой последовательности действий, способная вернуть одно результирующее значение (возвращаемое) в точку вызова функции.
Функция может возвращать значения следующих типов: 1. порядкового
3. вещественного
4. стандартный стринг
4. указатели
А также функция может возвращать глобальные или по их адресам.
Формат функции.
“Function” <идентификатор функции> [(список формальных параметров)] ”:” <тип возвращенного параметра> ”;”
{деклативная часть локальных переменных объявлений}
{$}, uses, label, type, var, const.
Раздел подпрограммы
Begin
Операторы
{обязательный оператор}
<идентификатор> ”:” возвращенное значение ”;”
end;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}
begin {исполнительная часть} end.
<идентификатор> - имя вызывающей функции, не является оператором на Т. Р. является именем именем возвращаемого значения. В исполняемой части функциидолжен присутствовать обязательный оператор, которая возвращает результирующее значение в точку вызова функции. Отсюда следует, что вызов функций это операнд.
В операторе, т.е. значение вернувшееся в точку вызова функции необходимо присвоить переменной или выполнить над ней какие - либо другие действия.
Пример Написать программу которая выполнит действия
ав3+3в7+bв4.
Program proba:
Var a, y, p: real;
Function step’(a, p: real):real;
Var k: real
Begin k:=exp’(a*ln(p));
Step:=k; end;
Begin
Read(a); read(p);
Y:=step(a,p)+step(3,7)+step(b,4);
Write (y:5:2); {или}
Write ((step(a,p)+step(3,7)+step(b,4)):5:1);
При выполнении основной программы описание функции храниться в секторе данных оперативной памяти. Действие программы начинается с выполнения команд исполняемой части главной программы. Когда в основной программе происходит вызов функции в машине выполняется следующее действие:
1) в стеке выделяется память для локальных переменных, описанных в декларативной части функции.
2) К формальным параметрам присваиваются фактические значения.
3) Выполняются операторы функции, в которых имя функции получает возвращаемое значение(по адресу возврата посылается результирующее значение)
4) Во время работы функции вызывающая программа находится в состоянии ожидания результирующего значения. В момент получения результата вызывающая программа продолжит свою работу.
Передача данных между основной
программой и подпрограммой.
Формальные параметры указывают, с какими параметрами следует обращаться к подпрограмме. Форма параметров задается в заголовке программы в виде списка, разбитого на группы разделяя их “;”. В группу формальных параметров включаются переменные одного типва или категории. Формальные параметры разбиваются на 4 категории, которые отличаются друг от друга способом передачи данных:
- Параметры - значение (передача по значению);
- Параметры - переменные (передача по адресу);
- Параметры - константы (7,0);
- Параметры - процедуры и параметры функции (т.е. процедурные типы).
Для организации формальных параметров надо указать: категорию, имя переменной, тип.
Имя формального параметра может быть Y, даже совпадающий с именем фактического значения, так как под формальные отводятся....
В этом случае глобальная переменная становится недоступной для подпрограммы.
Тип формального параметра может быть Y, кроме файлового и совпадать с типом соответствующего фактического значения. В заголовки подпрограммы нельзя вводить новый тип. Для идентичности нового пользовательского типа формальных и фактических параметров создается псевдоним глобального пользовательского типа.
Категория, параметры - значения.
Параметры - значения передаются основной программой в подпрограмму через стек в виде копии глобальных переменных, расположенных в фактических значениях.
Следовательно, глобальные переменные в этом случае подпрограмма изменить не может, как бы не меняла копию.
Формат объявления параметра по значению:
Заголовок программы: ’’Ключ’’<идентиф.>’’:’’<тип идентиф.>’’;’’
Параметры - значения не имеют ключа объявления.
Параметры - значения указываются в заголовке подпрограммы, тип параметра - значения может быть У, кроме файлового.
Если параметров - значений одного и того же типа несколько, их можно объединить в одну группу, перечислив их имена через “,”, а затем через “:”, указать их тип, отделяя группы “;”.
’’Ключ’’{< идентиф.>,}’’:’’<тип идентиф.>’’;’’
Procedure IпрM (Max, Min: Real;N;word);
Var M,N:real;
k;word;
IпрM (M, N, K)
Достоинства:
Параметры - значения для главной программы недоступны, из подпрограммы не будут изменены.
Недостаток:
Резервируем много места под копии и дополнительное время на копирование.
Function Mult (x, y:integer):real;
Program proba;
var a,b:real;
c,d:integer;
k,l:word;
Function Mult (x, y:integer):real;
begin
Mult:=x+y;
end;
begin
read (c); read (d);
a:=Mult (c,d);
end.
Категория, параметры - переменные.
Передача по адресу.
При передаче параметров - переменных (по адресу) в подпрограмму фактически через стек передаются адреса глобальных переменных, следовательно, подпрограммы имеет доступ к глобальным переменным и может их изменить.
Параметр - переменная указывается в заголовке подпрограммы в списке формальных параметров, имея “ключ” ’’var’’. Действие ’’var’’ распространяется в пределах одной группы, то есть до ближайшей точки с запятой.
Program proba;
type TM= array [1...1000] of real;
var M:TM;k,i:byte;
Procedure Iпрtm (var Mas:TM;k:byte);
var i:byte;
begin
for i:=1 to K do
Mas [i]:=round (20)-10;
end;
begin
repeat read (k) until k<=1000;
Iпрtm (M,K);
for i:=1 to k do
write (M[i]:5);
end.
Преимущества этого способа:
- Быстродействующий.
- Экономит память.
Недостаток:
При такой передаче параметра возможно нежелательное изменение глобальных переменных.
Лабораторная 6-КР.
Состоит из 25 страниц печатного текста.
Титульный лист.
Содержание:
- Цель работы...
- Постановка задачи...
- Описание алгоритма программы.
- Блок - схема алгоритма.
- Исходный текст программы.
- Входные и выходные данные.
Некоторые алгоритмы.
Begin
TL;
repeat
case MN of
ФАЙЛЫ.
Под файлом понимается именованная область внешней памяти ПЭВМ (эл. диск, г. диск), либо логическое устройство - потенциальный источник или приемник информации. Клавиатура - это логическое устройство. Файл имеет три характерные особенности:
- Есть имя, что дает возможность работать с несколькими файлами;
- Компоненты одного типа (Y тип, кроме файлового), нельзя создавать файл файлов;
- Длина файла ограничивается емкостью устройства.
Для того, чтобы определить файл:
Формат объявления файла:
<идентиф. Файловой переменной>’’=’’ ‘’File’’ ‘’of’’
- <Тип эл-тов файла>’’;’’ (так определяется типизированный файл)/
- < идентиф. Ф. Переменной>’’=’’ ’’Text’’ ’’;’’ (текстовый файл)/
- < идентиф. Ф. П.>=””File’’ ‘’;’’ (нетипизированный файл) - с элементами неопределенного типа.
Tupe prob = recod
name:string [30];
cod:word;
St:real;
end;
{Определим файл}
var pr:prob;
f1:file of prob;
f2:Text;
f3:File;
Обращение к файлам.
Input - Для чтения с клавиатуры
output - для вывода на экран
Y файл становится доступен только после выполнения процедуры ’’открытие файла’’. По завершению обработки файла необходимо выполнить процедуру ’’закрытие файла’’. При работе с файлом необходимо выполнить последовательность действий:
- Провести ассигнование файла;
- открытие файла;
- ввод - вывод из файла исходных данных;
- закрытие файла.
Ассигнование файла.
Формат:
AssiGN (<ф. Переменная>,< имя файла или логического устройства>’’;’’
Производит связь файл. Переменной с именем файла.
<Ф. Перем.> - идентификатор файловой переменной, объявленной в программе как переменная файлового типа.
<Имя файла или логического устройства> - текстовое выражение, содержащее имя файла или логического устройства.
Можно продумать имя какой-то константы
Const name =’c:\dir\Subdir\out\txt’;
AssiGN (f1,name);
AssiGN (f1,123.dat’);
var imfile:string [79];
read (imfile);
imfile:=’A;\’ + imfile + ‘.dat’;
AssiGN (f1,imfile);
Константы, определяющие логические устройства.
CON - Клавиатура
PRN - принтер (
AUX - логическое имя коммуникационного канала, которое обычно используется для связи ПЭВМ с другими машинами (COM1, COM2);
Открытие файла
Может производиться несколькими способами.
Инициализировать файл означает указать для этого файла направление передачи данных.
’’rewrite’’ (ф. Переменная)’’;’’ - создается новый пустой файл; если ранее существовал файл с этим именем, он будет уничтожен. В этот файл можно только записывать элементы базовой структуры.
’’reset’’(ф. Переменная) ’’;’’ - она работает только с теми файлами, которые созданы. Если инициализируется несуществующий файл, то возникнет ошибка периода исполнения, которая может быть сообщена программе с помощью встроенной функции IORESULT:word:, которая в случае отсутствия нужного файла принимает на 0-ое значение.
AssiGN (f1,’L.dat’);
{$I-} - (Контроль над ошибками ввода - вывода)
reset (f1); - попытаемся открыть файл
{$I+} - включить контроль ошибок ввода - вывода {проанализируем созданную ситуацию}
файл не, создаем новый
if IORESULT<>0 then rewrite (f1);
ELSE write (’файл благополучно открыт’)
Если мы открыли ранее существующий файл, то можем прочитать его, так как указатель стоит на начале файла.
Дописывать в файл можно после установки указателя в конец файла.
Если не отключить директиву компиллятора, то в случае отсутствия файла программа завершится аварийно по ошибке ввода - вывода.
Закрытие файла.
Происходит с помощью процедуры close.
’’Close’’ (<ф.п.>);
Установленное ранее ассигнование сохраняется.
Процедуры и функции по
обработке файла.
- ReName (<ф. П.>),< новое имя>); - переименование файла, предварительно его надо закрыть.
- EOF (<ф. П.>):boolean; - возвращает значение типа.
Логическая функция, тестирующая конец файла.
TRUE - Если указатель стоит в конце файла; при записи это означает, что очередной компонент будет добавляться в файл, при чтении файл исчерпан.
Функция IORESULT:word возвращает условный признак последней операции ввода - вывода. Если операция завершилась успешно, функция возвращает 0. Если автоконтроль ввода - вывода отключен и операция ввода - вывода привела к ошибке, устанавливается флаг ошибки и все последующие обращения к вводу - выводу блокируются, пока не будет вызвана функция IORESULT, выполнение функции возможно после объявления uses DOS.
Типизированный файл.
Длина Y компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому элементу.
Обращение к нужному компоненту.
(Nкомп. - 1) *L длина эл.=N позиции.
Типизированный файл - файл с прямым методом доступа, также позволяет работать и с последовательным методом доступа.
Переменные в списках ввода - вывода должны иметь тот же тип, что и компоненты файла. Если этих компонентов несколько, указатель будет смещаться после каждой операции обмена данными. Такой способ обработки данных - последовательный. В открытом файле можно производить действия согласно типу файла. Независимо от типа файла и способа его открытия всегда можно читать и писать.
Формат процедур ввода - вывода.
read(<ф.п.>,<список ввода>); - читаем из файла, за который отвечает ф.п. и помещаем в оперативную память согласно списка ввода.
write(<ф.п.>,<список вывода>); - записываем в файл, за который отвечает файловая переменная из оперативной памяти согласно списка вывода.
Список ввода - вывода соответствует типу файловой переменной.
Создать новый файл, содержащий сведения о сессии студентов. Для того, чтобы работать с файлом, определим тип переменной, с которой мы будем работать.
1 вар. Type TZ = record;
name:string[30]
ZK:word;
Gk:string [10];
OC;array [1...5] of byte;
OZ:array [1...5] of char;
var Z:TZ; fp:File of TZ;
begin
AssiGN (fp,’Lida.dat’);
rewrite (fp); организован в каталоге пустой файл/
repeat
read (Z.name);
if Z/name <> N then begin
читаю оставшиеся поля в Z/
write (fp,z); end;
until Z/name=N; cloze (fp); end/.
Если требуется дописать файл ранее созданный.
1 вар. AssiGN (fp.’Lida.dat’);
{$1-} reset (fp) {$1+} - предварительно подключаем к программе DOS.
If IORESULT <>0 then {создаем новый файл}
rewrite
seek (fp, Filesize (fp)); {указатель файла смещаем на размер нашего файла (в его конец для дозаписи файла)};
repeat
until Z.name= ;
cloze (fp);
write (fp,z); read (fp,z);
Прочесть файл и обработать.
{$1-} reset (fp) {$1+}
if IORESULT = 0 then - пока нет конца файла
while not E of (fp) do begin
read (fp.z); обрабатываем
end;
Процедуры и функции,
специфичные для работы с
типизированными файлами.
Seek (<ф.п.>,
Процедура Seek смещает указатель файла к требуемому компоненту.
N Комп.-типа Longint; (N комп.: Longint;)
Filesize (<ф.п.>):Longint; - функция, которая возвращает количество компонентов в файле.
Seek(fp.0); сместили указатель на начало файла.
Если в типизированный файл записали нужное количество элементов.
Для того, чтобы передвинуть указатель на начало файла, необязательно производить закрытие, а затем открытие файла.
Seek (fp,4): - на 4 элемент.
Filepos (<ф.п.>):Longint - функция возвращает порядковый того компонента файла, который будет обрабатываться.
Пример: Создать программу, в которой можно производить следующие действия: создает новый файл, дописывает файл, распечатывает файл, переходит на новое файла.
Program proba;
Uses Crt;
Type iz=record
Тип записи
None end;
Var fp: file of iz; (но эта переменная не знает адрес)
Filename: string [30]
Function menu: byte;
(список действий, которые она будет предоставлять)
const MN=(‘’,’;’’;’);
var i:byte; begin end;
procedure Imf(var fn: string [30]);
begin window ( ); textattr:=27; clrscr;
gotoxy (?;?); write (x введите имя файла’); read (fn);
fn:=fn+.dat, end.
New
Создание нового файла.
Procedure newfile;
Var zap; tz; i: byte;
Begin window (1,1,80,24); textattr:=27; clrscr;
(создает новый файл с!именем)
gotoxy(?,?); write (‘создает новый файл с именем;
{$I-} reset (tp); {$I+} filename);
if IOresult <>0 then
rewrite(fp); запись в файл*
else begin gotoxy(?,?); write (‘файл с таким именем существует, введите новое имя’);
end;
рассмотрим оператор if подробнее
if IOresult < >0 then begin rewrite(fp);
repeat
read(zap.поле1 );
нужно именовать
if zap.поле1<>” then bagin
(не пустое)
(все поля)
read(zap.поле2 );… (читает столько полей сколько нужно)
write (fp,zap); end;
until zap.поле1=” ; если “ идет дальше.
Close(fp); end;
Else begin…end;
End;
Теперь дополнить.
Procedure dopfile;
var zap:Tz;i:byte;
begin
window (1,1,80,24); text Attr:=27;clrscr;
Gotoxy (?,?); write (’Дополняет файл с именем Filename’);
{$I-} reset (fp); {$+}
if IOResult=0 then begin - благополучно открыт.
Для дозаписи в файл необходимо спозиционировать указатель файла в конец файла.
Seek (fp, filesize (fp));
repeat .... until zap.поле 1=’’;end;
else begin gotoxy (?,?); write (’Нет файла с таким именем’); end
Распечатать файл.
Procedure prnfile;
var z:Tz; i:byte;
begin
(составляем таблицу)
{$I-} reset {$I+}
if ioresult=0 then begin
while not BOF (fp) do begin
read (fp,z);
Gotoxy (?,?); write (z.поле 1) из адреса z распечатать поле
end;
Главная исполняемая часть
главной программы.
Begin
Titlist;
repeat
case menu of
1: begin namefile (filename); Assign (fp, filename);
end;
2: newfile;
3: dopfile;
4: prnfile;
5: poisk;
6: exite;
until false;
end.
Текстовые файлы.
Текстовые файлы объявляются предложением TEXT и предназначен для хранения текстовой информации. Записи текстового файла могут иметь переменную длину. Текстовый файл - это совокупность строк переменной длины. Текстовый файл имеет последовательный метод доступа, который позволяет обрабатывать последовательно запись за записью. При записи в текстовый файл (writeln) выводится строка символов, завершается кодами CR, что означает конец строки (# 13) Enter и LR (переход к началу строки). При создании текстового файла в конец каждой строки ставится EOLN (# 13, CR). Если при чтении указатель файла достиг конца строки, то результатом чтения будет символ CR (# 13), а если достиг конца файла, то символ EOF (# 26, CTRL +Z).
Процедуры ввода - вывода с текстового файла.
Readln (<ф.п.>,<список ввода>);
writeln (<ф.п.>,<список вывода>);
Функции и процедуры, специфичные
для текстового файла.
Функция SeekEOLN (<ф.п.>:boolean); - пропускает все пробелы и знаки табуляции до маркера EOLN конце строки или до 1-го значащего символа и возвращает true, если маркер обнаружен.
Функция SeekEOF (<ф.п.>):boolean; - пропускает все пробелы, знаки табуляции и возвращает true, если EOF обнаружен.
Процедура Append (<ф.п.>); - открывает существующий текстовый файл, указатель устанавливается после последнего элемента для дозаписи. Для того, чтобы закончить запись в текстовый файл и приступить к чтению с начала файла, необходимо предварительно его закрыть, а затем снова открыть, при этом указатель опять установится перед 0-м элементом.
Логические устройства.
- Стандартный файл INPUT предназначен для чтения с клавиатуры.
- Стандартный файл OUTPUT предназначен для вывода на монитор.
В Turbo P. зафиксирован ряд специальных имен, которые можно использовать как имена внешних файлов:
.CON: -консоль (логическое устройство ввода - вывода, представляющее собой комплекс клавиатура (ввод) - монитор (вывод) компьютера);
Стандартный файл INPUT предназначен для ввода с клавиатуры, OUTPUT - для вывода на монитор или принтер.
.LST: -принтер (PRN - порты LPT1, LPT2);
.AUX: -логическое имя коммуникационного канала, который обычно пользуется для связи ПЭВМ с другими машинами (СОМ1, СОМ2).
.trm -терминальное устройство.
.rbd -устройство ввода с клавиатуры.
.LST -устройство вывода на печать.
При этих именах файловая переменная должна быть текстового файла.
П. Var f2,f3:Text;
Assign (f2,’LST:’);
Assign (f3,’con:’);
rewrite (f2);
write (f2,’......’);
close (f2);
INPUT и OUTPUT связаны с Con: и trm:
При использовании Y из стандартный файлов (IN. или OU.) становится ненужным предложение Assign, reset, rewrite, close.
В процедурах ввода - вывода (read, readln, write, writeln) имена стандартных файлов опускаются.
П. Read (input, a); с клавиатуры в опер. память.
Read (a);
П. Write (output,a); из оперативной памяти по адресу а на монитор.
Write (a);
П. Read (con,x); write (lst,x);
П. Выходные данные необходимо направить на печатающее устройство принтер:
1 способ: var fn:text;
Assign (fn,’lst:’);
rewrite (fn);
write (fn,’Здравствуй, Лида’);
close (fn);
2 способ: write (lst,’Здравствуй, страна’);
Файловое устройство ввода с клавиатуры необходимо открыть предложением reset.
Нетипизированные файлы.
Отсутствие типа делает эти файлы совместимыми с Y файлами, позволяет организовать высокоскоростной обмен данными между дисками и памятью. При открытии файла можно указать длину записи в байтах нетипизированного файла.
Var fp:file;
Assign (fp,’Musor.dat’);
reset (fp, 512);
Длина может содержаться в выражении типа word, длина по умолчанию равна 128 байт. Максимальная длина 65535 байт.
Для обеспечения максимальной скорости обмена данными следует задавать длину, кратную 512 байтам - длине физического сектора дискового носителя.
Пространство на диске выделяется Y файлу порциями - кластерами, которые в зависимости от типа диска могут занимать 2 или более сменных сектора (512 байтов * на кол-во). Для гибких дисков длина кластера равна 2 секторам (1024 байта). Кластер может быть записан или прочитан за 1 оборот диска, поэтому наивысшую скорость обмена данными можно получить, если указать длину записи, равную длине кластера. При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением read и write, которые заменяются на высокоскоростные процедуры.
Высокоскоростные (способы) процедуры:
BlockRead (<ф.п.>,< буфер>,
BlockWrite (<ф.п.>,<буфер>,
<ф.п.> -
<буфер> - имя переменной, которая будет участвовать в обмене с диском.
[,
N и NN:word (целочисл.без знака(0:65535)).
За одно обращение к процедурам может быть передано до N*Recs байт, где Recs - длина записи нетипизированного файла. Передача идет, начиная с 1-го байта переменной <буф.>. Программист должен побеспокоиться, чтобы N*Recs байт помещалось в перем.<буф.>. Если <буф.> меньше или в файле не хватает места, то избегают ошибок ввода - вывода с помощью параметров NN.
После завершения процедуры указатель смещается на фактически прочитанное количество записей, т.е. на NN.
Процедурами SEEK, FILESIZE, FILEPOS можно обеспечить доступ к Y записи нетипизированного файла.
П. Скопировать из файла F1 в F2 кластера с максимально возможной скоростью.
Progpam filecopy;
uses DOS;
const Recs= 1024;
var F1,F2:FILE;
NF1, NF2:string [18];
buf:array [1...Recs] of byte; i:word;
begin
write (’Имя источника’); read (NF1); {проверим, существует ли этот источник}
Assign (F1,NF1);
{$I-} reset (F1,Recs); {$I+}
if IOResult <>0 then begin {нет файла с таким именем}
write (#7,’Нет файла,NF1’); Halt; end;
write (’Имя приемника’); readln (NF2);
Assign (F2, NF2);
{$I-} reset (F2, Recs); {$I+}
if IOResult <>0 then rewrite (F2, Recs);
seek (F2, FILESIZE (F2));
while not EOF (F1) do begin
BlockRead (F1, buf,1,i);
BlockWrite (F2, buf,1); end;
close (F1); close (F2); end.
Модули.-
это автономно компилируемая единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции).
Структура модуля.
UNIT <имя модуля>; - заголовок
INTERFACE - интерфейсная часть - видимая часть модуля.
IMPLEMENTATION - кодовое слово, обозначающее выполнение - исполняемая часть модуля.
Begin -
end.
Begin - инициирующая часть модуля (необязательная).
End - обязательная.
Заголовок модуля (UNIT означает “использует”).
Имя модуля должно совпадать с именем дискового файла, в который помещается исходный текст модуля.
П. UNIT Global; -модуль должен сохраняться в файле с именем Global.pas.
Имя модуля служит для связи с файловыми модулями и основной программой. Связь устанавливается предложением uses <список модулей>;
uses следует сразу за интерфейсом - это значит, что в данном модуле используются элементы, описанные в интерфейсных разделах указанных модулей.
Интерфейсная часть.
Ключевое слово interface нужно для проверки правильности обращения к ресурсам модуля. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и блоков), которые должны стать доступны основной программе или другим модулям; при объявлении глобальных блоков в интерфейсной части указывается только их заголовок.
П1. Unit Global;
INTERFACE
type complex=record
re,in:real
end;
Procedure Addc (x,y:complex; var z:complex);
Procedure Mulc (x,y:complex; var z:complex);
Если в основной программе написать
Program proba;
uses crt, Global,DOS;, то станут доступны тип Complex, процедуры Addc, Mulc.