|
Паскаль тiлiнде модуль деп көбiнесе жеке файлда орналасқан және басқа программалар оларды қолдана алатын iшкi программалар жиынтығын атайды.
Модуль өз атынан, интерфейстiк бөлiмнен, орындаушы бөлiмнен және инициализация секциясынан тұрады.
Модуль аты программа атына ұқсас, бiрақ program түйiндi сөзiнiң орнына unit қызыметшi сөзi қойылады. Модуль файлда болуы тиiс, ол файлдың аты оның тақырыбындағы атпен бiрдей болу керек. Файлдың кенейтiлуi.pas болуы қажет.
Интерфейстiк бөлiм модульдiң негiзгi программамен өзара байланысын қамтамасыз етедi. Ол interface қызметшi сөзiнен басталады. Онда тұрақтылар, мәлiметтер типтерi, айнымалылар, осы модульдi шақыратын және негiзгi программа қолдана алатын процедуралар мен функциялар көрсетiлуi тиiс. Егер модульдi басқа модульдер қолданса, онда олар интерфейстiк бөлiмде келесi түрде көрсетiлуi тиiс: қызметшi сөз uses жазылады, сосын қажеттi модульдер көрсетiледi (ескерту: дәл осылай негiзгi программаны баяндау бөлiмiнде модульдер көрсетiледi).
Баяндау:
unit a;
uses b,c;
...
end.
unit b;
uses c,d;
...
end.
A тізбегі
unit a;
uses b;
...
end.
unit b;
uses a;...
end.
Процедуралар мен функциялар да модульдiң интефейс бөлiмiнде баяндалады. Бiрақ бұл жағдай тек олардың аттарын көрсету мүмкiндiгi бар. (forward дерективасымен алдын-ала (анықталған) баяндалған процедуралар мен функциялар тәрiздi).
Модульдiң орындалатын бөлiмiнде модульдiң барлық процедуралар мен функциялары орналасады. Бұл жерде сондай-ақ локальды типтер, тұрақтылар, белгiлер немесе айнымалылар да көрсетiлуi мүмкiн. Орындалатын бөлiм implementation түйiндi сөзiнен басталады, сосын локальды тұрақтылар, мәлiметтер мен айнымалылар типтерi баяндалады. Кейiннен еш параметрлерi көрсетiлмеген, яғни тек аты көрсетiлген процедуралар мен функиялар баяндалады.
Кейде модульдi шақырғанда кейбiр iс-әрекеттердi орындау қажетi туады. Мысалы: қандай да бiр айнымалыларды (инициализациялау) қандай да бiр бастапқы мәндермен анықтау қажет болғанда. Осы тұрғыдағы барлық iс-әрекеттер инициализация бөлiмiнде көрсетiледi. Яғни, ол кәдiмгi программа денесi секiлдi, begin және end. сөздерiнiң арасындағы нұсқаулар тобынан тұрады. Ал егер модульдi шақыруда мұндай iс-әрекеттер орындау қажетi тумаса, онда инициализация секциясы тек қана end. түйiндi сөзiмен аяқталады.
Негiзгi программада модульдiң процедураларын, функцияларын және басқа да обьектiлерiн қолдану үшiн uses түйiндi сөзiн жазып сосын модуль атын көрсету қажет. Осыдан кейiн модульдің обьектiлерiн егер де негiзгi программада баяндалғандай қолдануға болады.
Мысалы ретiнде math модулiн қарастырамыз.
init math;
{математикалық процедуралар мен функциялардың модулі}
{модульдің интерфейстік бөлімі}
interface
function power(x:real; n:byte): real;
{санды оң бүтін дәрежеге шығару функциясы;
енгізу параметрлері:
1.Х real типті;
2.N byte типті;
функция real типті нәтижені қайтарады}
function factor(n:byte):integer;
{n факториалды есептейтін функция, мұндағы n – енгізілетін byte типті параметр;
функция integer типті нәтижені қайтарады}
procedure tg(x: real; var t: real; var k: byte);
{тангенсті есептейтін процедура;
енгізілетін параметр:
х real типті;
шығарылатын параметрлер:
1.T real типті;
2.K byte типті – қатенің коды 0-ге тең, егер тангенс х анықталған болса және 1-ге тең, қарсы жағдайда}
Procedure ctg(x: real; var ct: real; var k: byte);
{котангенсті есептейтін процедурасы:
енгізілетін параметр:
x real типті;
шығарылатын параметрлер:
1. T real типті;
2. K byte типті – қатенің коды 0-ге тең, егер тангенс х анықталған болса және 1-ге тең, қарсы жағдайда}
{модульдің орындалатын бөлімі}
implementation
function power;
var i: integer; p: real;
begin
p:=1;
for i:=1 to abs(n) do
p:=p*x;
power:=p;
end;
function factor;
var i: byte; f: integer;
begin
f:=1;
for i:=1 to n do
f:=f*i;
factor:=f;
end;
procedure tg;
begin
if cos(x)<>0 then
begin
k:=0;
t:=sin(x)/cos(x);
end
else k:=1; end; end.
Program sum;
{программа қолданушы енгізген дәлдікпен s=1+x+x^2/2!+... қатарының жуықша қосындысын есептейді}
uses math;
var x, u, eps, s: real;
k: byte;
begin
write(‘vvedite x=’);
readln(x);
write(‘vvedite tochnost’);
readln(eps);
s:=0; u:=1; k:=0;
while abs(u)>eps do
begin
s:=s+u;
inc(k);
u:=power(x,k)/factor(k);
end;
writeln(‘resultat raven= ’, s);
end.
Турбо Паскаль тілінде 8 стандартты модульдері бар. Осы стандартты модульдерде көптеген әртүрлі типтер, тұрақтылар, процедурамен функциялары келтірілген. Турбо паскаль тілінде келесі стандартты модульдер пайдаланады: System, DOS, CRT, Printer.Graph,Overlay,turbo3,graph3. Graph,turbo3,Graph3 модульдер бөлек TPU- файлдарда орналасқан, ал қалған модульдер Turbo.tpl кітапханалық файлдың құрамына кіреді. Тек SYSTEM модулі ғана кез келген программаға автоматты түрде қосылады, ал қалған модульдерді қосу үшін олардың аттарын USES деген сөзден кейін көрсету қажет. Негізгі стандартты модульдерді қысқаша қарастырайық.
1) SYSTEM модулі. Бұл модульге стандартты паскальдың барлықпроцедурамен функциялары және басқа стандартты модульдерге кірмеген стандартты процедурамен функциялар жатады (мысалы: inc,dec т.с.с.). Жоғарыда айтылғандай SYSTEM модулі кез келген программаға қосылады USES-те хабарланбасада. Сондықтан оның глобальды тұрақтылары, айнымалылары және қосалқы программалары Турбо Паскальдің стандартты функция мен процедуралары болып саналады.
2) PRINTER модулі. Бұл модуль арқылы принтерге тексттерді баспаға шығаруға болады. Бұл модульде PRN логикалық құрылғымен байланысатын TEXT типті LST атты файлдық айнымалысы анықталады. PRINTER модулі қосылғаннан кейін келесі программа орындалады:
USES PRINTER;
Begin
Writeln (LST,’Турбо Паскаль 7.0’);
End.
3) CRT модулі. Экранмен жұмыс істеу үшін тексттік режимнің басқаруын қамтамасыз ететін процедурамен функциялары осы модульге жатады. CRT модульдің қосалқы программалар көмегімен курсорды экранның кез келген позициясына жылжытуға, шығарылатын символдардың және олардың фонының түсін өзгертуге, терезелерді ұйымдастыруға болады. Мысалы:
а) GOTOXY (X,Y:byte)- курсорды экранның (терезенің) қажетті орнына жылжытады
б) TEXTCOLOR (color:byte)- символдың түсін анықтайды.
в) TEXTBackground(color:byte)-фонның түсін анықтайды.
г) clrscr- экранды (терезені) тазалайды және курсорды экранның сол жағ жоғарғы бұрышына орналастырады.
д) readkey- клавиатурадан символды оқиды. Кез келген клавиша басылғанға дейін программаның орындалуы уақытша тоқтатылады.
е) keypressed- TRUE- қайтарады егер клавиша басылған болса және FALSE-ті қарсы жағдайда қайтарады. Программаның орындалуы тоқтатылмайды.
ж) window (X1,Y1,X2,Y2:byte)-экранда тексттік терезені анықтайды.X1,Y1-терезенің сол жақ жоғарғы бұрышының координатасы, X2,Y2-оң жақ төменгі бұрышының координатасы.
Мысал:
Uses crt;
Var ch:char;
Begin
Repeat
ch:=Readkey;
if ch=chr(0) then {қызметтік клавиша басылған}
begin
writeln (‘қызметтік клавиша’)
ch:=readkey;
end;
writeln(ord(ch));
until ord (ch)=27; {<Esc> клавишасы басылғанға дейін}
end.
Негізгі әдебиет: 1[182-189],
Қосымша әдебиет: 6 [117-124], 7 [383-393], 8 [134-138].
Дата добавления: 2015-07-08; просмотров: 303 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Дәріс. GRAPH стандартты модулін қойлдану | | | Көрсеткіштер туралы қысқаша мағлұматтар |