Программалау іі» пәні бойынша 050111 «Информатика»


Лекция 7 Модульді компиляциалау



бет7/29
Дата14.06.2016
өлшемі2.7 Mb.
#135126
түріПрограмма
1   2   3   4   5   6   7   8   9   10   ...   29

Лекция 7

Модульді компиляциалау.

Жоспар:
1. Модульді компиляциялау режимдері. COMPILE режимі

2. МАКЕ режимі

3. BUILD режимі



Әдебиеттер:


1.А.Г.Гольцев «Объектно-ориентированное программирование и его реализация в языке Паскаль», Москва-2005

2. В.В.Фараонов «Турбо Паскаль 7.0», Москва-2001

3. Электронный учебник: «Введение в объектно-ориентированное программирование», 2006
1. Модульді компиляциялау режимдері. COMPILE режимі

Турбо Паскаль ортасында модуль компиляциясының жолын таңдауға және ірі программалық проекттерді жасақтауды оңайлататын құралдар бар. Дербес жағдайда, компиляцияның үш режимі анықталған: COMPILE, MAKE және BUILD. Режимдер бірі-бірінен компиляцияланатын модульдің немесе негізгі программаның USES –те жарияланған басқа модульдермен байланысу түріне қарай айырмашылық етеді.

Модуль немесе негізгі программа COMPILE режимінде компиляцияланатын болса, онда USES-те жарияланған барлық модульдер алдын-ала компиляцияланып, олардың нәтижелері TPU кеңейтпелі файлда( атауы модуль не программа атауымен бірдей болады) сақталыну тиіс. Мысалы, программада(модульде) былай жазылса

Uses Global;

онда дисктің UNIT DIRECTORIES опциясымен жарияланған катологында GLOBAL.TPU файлы бар болуы керек. TPU кеңейтпелі файл модуль компиляцисяының нәтижесінде автоматты түрде құрылады (егер негізгі программа орындалатын ЕХЕ-файлды құрмай-ақ компиляция жасалынуы мүмкін болса, ал модульдің компиляциясының нәтижесінде әрдайым TPU-файл құрылады).

2. МАКЕ режимі

Компилятор МАКЕ режимінде әрбір жарияланған модуль үшін әрдайым TPU-файлдың бар-жоқтығын тексереді. Егер файлдың біреуі табылмаса, онда жүйе сәйкес атаулы PAS кеңейтпелі файлды табуға тырысады. Тауып алса, оны компиляциялауға кіріседі. Бұдан бөлек бұл режимде қолданылатын модульдердің бастапқы тексттеріндегі –өзгерістерді бақылап отырады. Егер PAS-файлға(модульдің бастапқы тексті) өзгеріс енгізілген болса, онда катологта сәйкес TPU-файл-дың бар-жоқтығына қарамастан негізгі программаны компиляциялаудан бұрын оны компиляциялап шығады. Егер өзгеріс модульдің интерфейс бөліміне енгізілсе, онда оны пайдаланатын басқа барлық модульдер де қайта компиляцияланады. Осылайша, МАКЕ режимі көп модулі бар ірі программаларды жасақтау процессін жеңілдетеді: программист TPU-файлдардың бастапқы текстпен сәйкестігін тексеру қажеттілігінен құтылады, себебі, автоматты түрде жүйенің өзі мұны атқарады.


3. BUILD режимі

BUILD режимінде бар TPU-файлдар қабылданбайды, жүйе USES-те жарияланған әр модуль үшін сәйкес РAS-файлды табуға (және компиляциялауға) тырысады. BUILD режимінде компиляциялаған соң программист кез-келген модульдегі жасаған барлық өзгерістері есепке алынғандығына сенімді бола алады.

Негізгі программаға модульдерді қосу және оларды компиляциялау USES-те жариялану реті бойынша орындалады. Кезекті модульге өту кезінде жүйе алдын-ала осы модульде сілтеме жасалынатын барлық модульдерді түгендеп алады. Модульдердің бір-біріне сілтемесі ағаш құрылымды бола алады, алайда өзіне сілтеме жасауға(айқын не жанама түрде) тиым салынады. Мысалы, келесі түрде жариялауға болмайды:

Unit A;              Unit В; 

Interface            Interface

Uses В;              Uses А;

.......              .......

Implementation       Implementation 

.......              .......

end.                 end.

Бұл шектемені USES-ті бағыныңқы модулдің орындалу бөліміне “жасыру” арқылы айналып өтуге болады.

Unit A;              Unit В; 

Interface            Interface

.......              .......

Implementation       Implementation 

Uses B;              Uses A;

......               .......

end.                 end.

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

Лекция 8

Модульде жарияланған объекттерге қол жеткізу. Стандартты модульдер.

Жоспары:
1. Комплексті сандар арифметикасына модуль құру

2. Стандартты модульдер

Әдебиеттер:


1.А.Г.Гольцев «Объектно-ориентированное программирование и его реализация в языке Паскаль», Москва-2005

2. В.В.Фараонов «Турбо Паскаль 7.0», Москва-2001

3. Электронный учебник: «Введение в объектно-ориентированное программирование», 2006

1. Комплексті сандар арифметикасына модуль құру

Айталық, комплексті сандардың арифметикасын (мұндай арифметика стандартты Паскальда да, Турбо Паскальда да қарастырылмаған) жүзеге асыратын модуль құрамыз. Өкінішке орай, Турбо Паскальда мәндері құрылымдық тип болатын функцияларды қолдануға болмайды. Сондықтан, комплекс сандардың арифметикасы 4 процедура арқылы жүзеге асады:

UNIT Cmplx;

{---------------------}

INTERFACE

{---------------------}

type complex = record 

re, im:real

end;

Procedure AddC

(x, у

: complex;

var z

: complex) ;

Procedure SubC

(x, у

: complex;

var z

: complex) ;

Procedure MulC

(x, у

: complex;

var z

: complex) ;

Procedure DivC

(x, у

: complex;

var z

: complex) ;

Const













с : complex =

(re :

0.1; im :

-1);

 

{---------------------}

IMPLEMENTATION

{---------------------}

Procedure AddC; begin

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

end {AddC};

Procedure SubC;

begin


z.re := x.re - y. re ; 

z.im := x.im - y.im

end {SubC};

Procedure MulC;

begin

z.re := x.re*y.re - x.im*y. im;



z.im := x.re*у.im + x.im*y.re

end {MulC};

Procedure DivC;

var


zz : real;

begin


zz := sqr(y.re) + sqr(y.im); 

z. re := (x.re * y.re + x.im * y.im) / zz; 

z.im := (x.re * y.im - x.im * y.re) / zz

end {DivC};

end.

Бұл модульдің текстін CMPLX.PAS файлымен сақтау керек. TPU-файлды құрып, компиляция жасай аламыз. Бұдан соң, программаға жаңа библиотекадағы процедураларды қолдануға болады. Мысалы, келесі программада екі комплекс санның үстінен 4 арифметикалық амал жүзеге асырылады.



Мысал

Uses Cmplx; 

var

а, Ь, с : complex; 



begin

a.re := 1; a.im := 1; 

b.re := 1; b.im := 2; 

AddC(a, b, c); 

WriteLn('Сложение: 'c.re:5:1, c.im:5:1,'i') ; 

SubC(a, b, c) ; 

WriteLn('Вычитание: 'с.re:5:1, с.im:5:1,'i');

MulC(a, b, c); 

WriteLn('Умножение: 'c.re:5:1, c.im:5:l,'i') ; 

DivC(a, b, c); 

WriteLn('Деление: 'c.re:5:l, с.im:5:1,'i');

end.


Uses Cmplx жариялануынан кейін программа CMPLX модулінің интерфейс бөлімінде жарияланған барлық модульдерге қол жеткізе алады. Қажет кезде осы объекттердің кез-келгенін қайтаанықтауға болады. Қайтаанықталған объектті бастапқы объектті “жауып тұрады”. “Жабылған” объектке қол жеткізу үшін құрама атаудан пайдалану керек: объект атының алдынан модуль атауын жазып, нүкте қойылады. Мысалы,

WriteLn(cmplx.c.re:5:l, cmplx.с.im:5:1,'i');

операторы алдыңғы мысалдағы “жабылған” типтендірілген тұрақтыны экранға шығарады.

2. Стандартты модульдер

Турбо Паскальда 8 стандартты модуль бар. Оларда көптеген әртүрлі типтер, тұрақтылар, процедура мен функциялар бар. Бұл модульдер: SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS , GRAPHS.

GRAPH, TURBOS және GRAPHS модульдері жеке TPU-файлдарға бөлінген, ал қалғандары TURBO.TPL библиотекалық файлына енгізілген. Тек бір модуль SYSTEM ғана кез-келген программаға автоматты түрде қосылады, ал қалғандарына USES-те жарияланғаннан кейін ғана қол жеткізуге болады.

Төменде стандатты модульдердің қысқаша сипаттамасы келтіріледі.

SYSTEM модулі. Оған стандартты Паскальдың барлық процедуралары мен функциялары енеді, сонымен бірге басқа стандартты модульдерге енбеген встроенный(қоса салынған) процедуралар мен функциялар да енеді(мысалы, INC, DEC, GETDIR т.с.с.). Бұл модуль USES-те жарияланбаса да кез-келген программаға қосылады. Сондықтан, оның глобал тұрақтылары, айнымалылары, көмекші программалары Турбо Паскалға қоса салынған (встроенный) деп есептеледі.

PRINTER модулі. Тексттерді принтерден шығаруға мүмкіндік береді. Бұл модульде TEXT типті LST файлдық айнымалысы анықталады. Ол логикалық PRN құрылысымен байланыстырылады. Модульді қосқаннан кейін мысалы, мынадай программа орындалу мүмкін:

Uses Printer; 

begin


writeln (LST, 'Турбо Паскаль') 

end.


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

GRAPH модулі. Графикалық режимдегі экранды басқаруға арналған процедуралар мен функциялар, тұрақтылар мен типтерге ие. Модульге енгізілген көмекші программалар арқылы әртүрлі графикалық бейнелер құруға және экранға тексттік жазбаларды стандартты немесе программист дайындаған шрифтпен шығаруға болады. Көмекші программалар сәйкес баптаулар жасаған соң түрлі типтегі графикалық аппараттарды қолдай алады. Баптау жасау арнайы программа-драйверлермен жүзеге асырылады. Олар GRAPH. TPU файлына енбейді, бірақ солармен бірге қойылады.

DOS модулі. Модульде MS- DOS операциялық жүйесінің дисктік құралдарына қол жеткізуге мүмкіндік беретін процедуралар мен функциялар жинақталған.

OVERLAY модулі. Ол қиылыса жабуды қолданатын ірі программаларды дайындауда қажет болады. Турбо Паскаль ұзындығы ДК-ң негізгі оперативті жадысымен ғана шектелетін программаларды құруға мүмкіндік береді. MS-DOS операциялық жүйесі орындалатын программаға негізгі жадыдан шамамен 580 кбайт қалдырады(Турбо Паскаль жүйесі мен резидентті программаларды есепке алмағанда). Мұндай көлемдегі жады көбінесе жеткілікті, сонда да, қиылыса жабуды қолданатын программалар үшін мұндай шектеме жоқ.

TURBO3 и GRAPH3 модульдері Турбо Паскальдің алдыңғы 3.0 версиясымен үйлесімді болуы үшін енгізілген.



Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   ...   29




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет