Программа на Turbo-Pascal состоит из: заголовка программы; блока; знака (. ). Заголовок программ

Вид материалаПрограмма

Содержание


Структура процедуры.
Передача данных между основной
Закрытие файла.
Главная исполняемая часть
Текстовые файлы.
Процедуры ввода - вывода с текстового файла.
Логические устройства.
Нетипизированные файлы.
Структура модуля.
Интерфейсная часть.
Подобный материал:
1   2   3   4   5

Процедуры.

Это зависящая именованная часть программы, предназначенная для выражения какой-то законченной последовательности действий. Способны вернуть несколько результирующих значений через глобальные переменные или по их адресам.

Структура процедуры.

“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 категории, которые отличаются друг от друга способом передачи данных:
  1. Параметры - значение (передача по значению);
  2. Параметры - переменные (передача по адресу);
  3. Параметры - константы (7,0);
  4. Параметры - процедуры и параметры функции (т.е. процедурные типы).

Для организации формальных параметров надо указать: категорию, имя переменной, тип.

Имя формального параметра может быть 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.


Преимущества этого способа:
  1. Быстродействующий.
  2. Экономит память.

Недостаток:

При такой передаче параметра возможно нежелательное изменение глобальных переменных.

Лабораторная 6-КР.

Состоит из 25 страниц печатного текста.

Титульный лист.

Содержание:
  1. Цель работы...
  2. Постановка задачи...
  3. Описание алгоритма программы.
  4. Блок - схема алгоритма.
  5. Исходный текст программы.
  6. Входные и выходные данные.

Некоторые алгоритмы.

Begin

TL;

repeat

case MN of

ФАЙЛЫ.

Под файлом понимается именованная область внешней памяти ПЭВМ (эл. диск, г. диск), либо логическое устройство - потенциальный источник или приемник информации. Клавиатура - это логическое устройство. Файл имеет три характерные особенности:
  1. Есть имя, что дает возможность работать с несколькими файлами;
  2. Компоненты одного типа (Y тип, кроме файлового), нельзя создавать файл файлов;
  3. Длина файла ограничивается емкостью устройства.

Для того, чтобы определить файл:

Формат объявления файла:

<идентиф. Файловой переменной>’’=’’ ‘’File’’ ‘’of’’
  1. <Тип эл-тов файла>’’;’’ (так определяется типизированный файл)/
  2. < идентиф. Ф. Переменной>’’=’’ ’’Text’’ ’’;’’ (текстовый файл)/
  3. < идентиф. Ф. П.>=””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 файл становится доступен только после выполнения процедуры ’’открытие файла’’. По завершению обработки файла необходимо выполнить процедуру ’’закрытие файла’’. При работе с файлом необходимо выполнить последовательность действий:
  1. Провести ассигнование файла;
  2. открытие файла;
  3. ввод - вывод из файла исходных данных;
  4. закрытие файла.

Ассигнование файла.

Формат:

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’’ (<ф.п.>);

Установленное ранее ассигнование сохраняется.

Процедуры и функции по

обработке файла.
  1. ReName (<ф. П.>),< новое имя>); - переименование файла, предварительно его надо закрыть.
  2. 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-м элементом.

Логические устройства.
  1. Стандартный файл INPUT предназначен для чтения с клавиатуры.
  2. Стандартный файл 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.