Модульдің интерфейс және жүзеге асу бөлімдері. Инициалдау бөлігі

Интерфейс бөлімі Interface қызметші сөзімен ашылады. Бұл бөлімде модульдің басқа модульдер мен негізгі программада пайдалануға болатын барлық глобал объектілері жарияланады. Глобаль көмекші программалардың интерфейс бөлімінде тек атаулары ғана жарияланады. Мысалы:

Unit Cmplx;

Interface

Type

complex=record

re, im:real

end;

Procedure AddC(x,y:complex; var z:complex);

Procedure Mulc(x,y:complex; var z:complex);

Бұл программада complex типі және AddC, Mulc процедуралары глобал болып табылады. Интерфейс бөлімінде көмекші программаларды жариялау авоматты түрде жадының ұзақ (дальней) моделін қолданумен компиляцияланады. Негізгі программадан және басқа модульдерден көмекші прогарммаларға қолжеткізу осылайша жүзеге асады. Ескере кету керек, модульдің интерфейс бөлімінде жарияланған барлық константалар мен айнымалылар негізгі программаның глобал константалары мен айнымалылары сияқты Турбо Паскальдің ортақ берілгендер сегментіне компилятор арқылы жайғастырылады (сегменттің максимал ұзындығы 65536 байт). Жариялаудың түрлі бөлімдерінің пайда болуыжәне олардың саны қалауымызша болуы мүмкін. Егер интерфейс бөлімінде сыртқы көмекші программалар жарияланса, модульдің жүзеге асу бөлімінде олардың атауларынан кейін денелері жазылуы керек (яғни EXTERNAL қызметші сөзі).Егер интерфейс бөлімінде машиналық кодтағы көмекші программа жарияланса модульдің жүзеге асу бөлімінде оның атауынан кейін INLINEсөзі мен машиналық коды келтіріледі. Модульдің интерфейс бөлімінде алдын-ала сипатталуды қолдануға болмайды.

  1. Жүзеге асу бөлімі

Жүзеге асу бөлімі IMPLEMENTATIONқызметші сөзімен басталады және интерфейс бөлімінде жарияланған көмекші программалардың тексті жазылады.Мұнда модульүшін локал болатын объекттер – қосымша типтер, константалар, айнымалылар және блоктар, егер жүзеге асу бөлімінде қолданылатын болса онда белгілер де жариялануы мүмкін

Модульдің интерфейс бөлімінде жарияланған көмекші программаның атауы орындалу бөлімінде келтірілуі тиіс. Мұнда формальді айнымалылардың тізімін және функция типін көрсетпей тастап кетуге болады. Өйткені олар интерфейс бөлімінде сипатталған. Егер атау толық түрде жазылса, онда ол интерфейс бөлімінде жарияланған атаумен түгел бірдей болуы керек.

Unit Cmplx;

Interface

type

complex = record

re, im : real

end;

Procedure AddC (x, у : complex; var z : complex);

Implementation

Procedure AddC;

begin

z.re := x.re +Y.re;

z.im := x.im +y.im

end;

end.

Локал айнымалылар және константалар, сонымен бірге модульді компиляциялау нәтижесінде туындаған барлық программалық код жадының жалпы сегментіне орналастырылады (в общий сегмент памяти) .

  1. Инициалдау бөлігі

Инициалдау бөлігі модульді аяқтайды.Инициалдау бөлігі BEGIN қызметші сөзінен басталады. Инициалдау бөлігі бос болуы да мүмкін, бұл жағдайда BEGIN –нен кейін бірден END. сөзі жазылады, немесе бүткілдей жоқ болуы мүмкін.

Инициалданатын бөлімде программа фрагменті боп табылатын орындалатын операторлар жазылады.Бұл операторлар басқаруды негізгі программаға бергенше орындалады және әдетте оның жұмысына дайындық үшін қолданылады. Мысалы, мұнда айнымалылар инициалдануы, қажет файлдар ашылуы, өзара байланыстары (коммуникациалық каналдар т.б. бойынша) орнатылуы мүмкін.

Unit FileText;

Interface

Procedure Print(s : string);

Implementation

var

f: text; const

name = ‘output.txt’; Procedure Print;

begin

WriteLn(f, s)

end;

{ Начало инициирующей части: }

begin

assign(f, name);

rewrite(f);

{ Конец инициирующей части }

end.

Инициалдау бөлімін бос етуге кеңес берілмейді, одан да жазбаған дұрыс (begin end.-ті).Бос бөлімде бос оператор бар болады, програмамны іске қосқан кезде басқару осы операторға беріледі. Бұл оверлейлік программаларды құру кезінде қиындықтар туғызады.