230
x[1]:=xn;
ymin:=1e30;
ymax:=-1e10;
for i:=1 to k do {функцияны табуляциялап, экс-
тремумды іздейміз}
begin
y[i]:=cos(x[i]+2)/2;
if y[i]>ymax then ymax:=y[i];
if y[i]if i<>100 the x[i+1]:=x[i]+h;
end;
mx:=(kxk-kxn)/(x[k]-x[1]); {
х өсі бойынша мас-
штабты анықтаймыз}
my:=(kyk-kyn)/abs(ymax-ymin); {
y өсі бойынша
масштабты анықтаймыз}
for i:=1 to k do {нүктелер координатасын
анықтаймыз}
begin
kx[i]:=round((x[i]-x[1])*mx)+kxn;
ky[i]:=round((ymax-y[i])*my)+kyn;
end;
gd:=detect;
InitGraph(gd,gm,’’); {графикалық режимді іске
қосамыз}
SetColor(4); {ағымдағы түс - қызыл}
OutTextXY(180,20,’Y=cos(x+2)/2’); {тақырыпты
шығарамыз}
SetColor(17); {салу түсі – көгілдір}
SetBKColor(7); {фон түсі – сұр}
Rectangle(kxn,kyn,kxk,kyk); {графикті шығару
үшін тікбұрыш саламыз}
SetColor(4); {ағымдағы түс - қызыл}
for i:=1 to k-1 do {графикті шығарамыз}
Line(kx[i],ky[i],kx[i+1],ky[i+1]);
dkx:=round((kxk-kxn)/nx); {
х өсі бойынша сетка
қадамын анықтаймыз}
dky:=round((kyk-kyn)/ny); {
y өсі бойынша сетка
қадамын анықтаймыз}
231
SetColor(17); {ағымдағы түс – ақшыл көк}
for i:=1 to nx do {
х өсіне параллель торды
саламыз}
Line(kxn+dkx*i,kyn,kxn+dkx*i,kyk);
for i:=1 to ny do {
y өсіне параллель торды
саламыз }
Line(kxn,kyk-dky*i,kxk,kyk-dky*i);
dx:=(x[k]-x[1])/nx; {
х өсі бойынша тор қадамын
анықтаймыз}
dy:=(ymax-ymin)/ny; {
y өсі бойынша тор қадамын
анықтаймыз}
SetTextJustify(1,2); {“төмен қарай орталыққа”
туралау}
for i:= 1 to nx+1 do {аргумент мəнін
шығарамыз}
begin
Str((x[1]+dx*(i-1)):n:m,st); {санды жолға ай-
налдырамыз}
OutTextXY(kxn+dkx*(i-1), kyk+6,st); {тор
сызығының астына мəндерді шығарамыз}
end;
SetTextJustify(2,1); {«сол жақтан орталыққа»
туралау}
for i:=1 to ny+1 do {функция мəнін шығарамыз}
begin
Str((ymin+dy*(i-1)):n:m,st); {санды жолға ай-
налдырамыз }
OutTextXY(kxn-6,kyk-dky*(i-1),st); {
y өсінің
сол жағына шығару}
end;
ReadLn; {ENTER-ді басуды күтеміз}
Closegraph;
End.
Программа жұмысының нəтижесі берілген интервалдағы
функция графигі.
Нəтижені графиктен басқа диаграмма немесе түрлі гистограм-
малар ретінде де алуға болады. Тағы бір мысал қарастырайық.
232
7.2-мысал. 12-ден көп емес мəндер бойынша дөңгелек диа-
грамма салатын программа жазыңыз. Əр мəн дөңгелектің бір сек-
торын алып тұрады.
Дөңгелек диаграмма боялған дөңгелек секторларының жиын-
тығы ретінде салынады. Сектор бұрышы жалпы мəндер қо сын-
дысының ішіндегі сəйкес мəннің үлесіне пропорционал. Жазу
сектор бұрышының биссектрисының қарсысына жазылу керек.
Төменде программа мəтіні келтірілген.
Program diagramma;
Uses Graph;
Const
kmax=12; {функцияның максимальді мəндер саны}
r=150; {диаграмма радиусы}
n=5; {шығару өрісінің ені}
m=2; {санның бөлшек бөлігінің мөлшері}
Type
mas=array[1..kmax+1] of integer;
mas1=array[1..kmax] of real;
Var
f:mas1; {функция мəндерінің жиымы}
alfa:mas; {диаграмма бұрыштары мəнінің жиымы}
driver,err, {адаптер типі жəне жұмыс режимі}
k, {функцияның нақты мəндерінің саны}
bet, {диаграмма секторының радиусы жəне бис-
сектрисасы құраған бұрыштың шамасы}
y,x, {сектор доғасының центрі болатын нүктенің
координатасы}
x1,y1, {жазуды шығарудың бастапқы нүктесінің
координатасы}
xn,yn, {диаграмма центрінің координатасы }
i:integer;
st:string[5]; {алдын ала шығарылатын жазу
жолы}
s:real; {функция мəндерінің қосындысы}
Begin
WriteLn(‘Нүктелер санын енгізіңіз
(1-ден,‘kmax:3-ке дейін’)’);
233
ReadLn(k);
{функция мəндерін шығарып, олардың қосындысын
анықтаймыз}
s:=0;
for i:=1 to k do
begin
WriteLn(‘Функцияның’,i:3,’-ші мəнін
енгізіңіз’);
ReadLn(f[i]); while f[i]<0 do
begin
WriteLn(‘Беруге болмайтын мəн, енгізуді
қайталаңыз’);
WriteLn(‘Функцияның’,i:3,’- ші мəнін
енгізіңіз’);
ReadLn{f[i]);
end;
s:=s+f[i];
end;
if s=0 then
begin
WriteLn(‘Барлық мəндер нөлге тең.’);
ReadLn; halt(1); {қате бойынша шығу}
end;
{графикалық режимді іске қосамыз}
driver:=detect;
InitGraph(driver,err,’’);
Setbkcolor(15); {фон түсі ақ}
SetPalette(1,0);
SetColor(1); {салу түсі қара}
{диаграмма центрінің координатасын есептейміз }
xn:=GetMaxX div 2;
yn:=GetMaxY div 2;
{Диаграмма секторының бұрыштарының мəнін
есептейміз }
alfa[1]:=0;
for i:=2 to k+1 do
16–1618
234
begin
if i<>k+1 then alfa[i]:=alfa[i-1]+round(f[i-
1]/s*360)
else alfa[k+1]:=360;
SetFillStyle(i mod 10,i); {секторды бояудың
типі мен түсін орнатамыз}
Pieslice(xn,yn,alfa[i-1],alfa[i],r); {сектор
саламыз}
{Жазу шығарудың бастапқы координаталарын
есептейміз }
bet:=(alfa[i-1]+alfa[i]) div 2;
x:=xn+round(r*cos(bet*pi/180));
y:=yn-round(r*sin(bet*pi/180));
if ((bet>=0) and (bet<=90)) or ((bet>=270) and
(bet<=360)) then x1:=x+10 else x1:=x-8*n-10;
if (bet>=0) and (bet<=180) the y1:=y-15 else
y1:=y+7;
Str(f[i-1]:n:m,st); {мəнді жолға айналдырамыз}
OutTextXY(x1,y1,st); {жазу шығарамыз}
end;
ReadLn;
CloseGraph;
End.
Программа жұмысының нəтижесі дөңгелек диаграмма
бо ла ды.
Бақылау сұрақтар
1. Графикалық процедуралар мен функциялар кітапханасы қалай
аталады?
2. Графикалық режимді қалай іске қосамыз?
3. Графикалық режимнен қалай шығамыз?
4. Кесінді сызу параметрлері қалай өзгереді?
5. Кесінді сызу процедурасын сипаттаңыз.
6. Дөңгелек, дөңгелек доғасын жəне эллипс доғасын салу процедура-
ларын сипаттаңыз.
7. Тіктөртбұрыш салу процедурасын сипаттаңыз.
235
8. Ағымдағы түсті жəне фон түсін өзгерту процедурасын сипат-
таңыз.
9. Экрандағы нүкте түсін қалай өзгертуге болады.
Тапсырмалар
1. Кез келген тақырыпқа «пейзаж» салыңыз.
2. Автомобиль суретін салыңыз.
3. Роботтың суретін салыңыз.
4. Дөңгелек жəне эллипс салу процедураларының көмегімен түрлі
түсті ромашка гүлін салыңыз.
5. Ішіне үшбұрыш, квадрат, жұлдыз салынған үш шеңбер салыңыз.
Фигуралардың түстері əр түрлі болсын.
6. Олимпиада жалауын салыңыз.
7. Қисық сызықты жазу дəптерінің фрагментін салыңыз.
8. Туған жылыңыздың датасын тікбұрыштардың көмегімен жа-
зыңыз.
9. Фамилияңыздың, атыңыздың жəне тегіңіздің бас əріптерін түрлі-
түсті тікбұрыштар көмегімен жазыңыз.
10. Ішінде өз атыңыз жазылған тікбұрыш контурын салыңыз.
11. Ақ түсті экранға өзіңіздің пошталық индексіңізді конвертте гі -
дей етіп жазыңыз.
12. Түрлі-түсті көбелек суретін салыңыз.
236
8. МОДУЛЬДІК ПРОГРАММАЛАУ
8.1 Программа құрылымы
Турбо Паскаль тіліндегі программа екі бөлімнен тұрады:
прог рам ма тақырыбы жəне программа блогы.
Тақырыптың жалпы түрі:
PROGRAM <программа аты> [(<файлдар тізімі> )];
Программа тақырыбын жазбай кетуге де болады. Стандартты
INPUT (енгізу) жəне OUTPUT (шығару) сөздерін де жазбай кету-
ге болады, себебі олар (үнсіз) келісім бойынша бəрібір алынады.
Программа блогы сипаттау жəне орындау бөлімдерінен
тұрады. Сипаттау бөлімі мін детті түрде орындау бөлімінің ал-
дында жазылады жəне онда келесідей бөліктер болуы мүмкін:
LABEL <белгілерді сипаттау> ; – белгілерді сипаттау бөлігі,
CONST <тұрақтыларды сипаттау> ; – тұрақтыларды сипаттау
бөлігі,
TYPE <типтерді сипаттау> ; – типтерді сипаттау бөлігі,
VAR <айнымалыларды сипаттау> ; – айнымалыларды сипаттау
бөлігі,
PROCEDURE < процедураны сипаттау > ; – процедураны
сипаттау бөлігі,
FUNCTION <функцияны сипаттау> ; – функцияны
сипаттау бөлігі,
BEGIN
<программаның орындалатын бөлімі> – операторлар
бөлімі
END.
Программа мəтіні ұзындығы 127 символдан аспайтын жол-
дар түрінде жазылады. Турбо Паскальда сипаттау бөліктері-
нің жазылу реттілігі жоғарыдай болуы міндетті емес, олар кез
кел
ген түрде жəне əр бөлік бірнеше рет қайталануы немесе
мүлде болмауы да мүмкін. Операторлар бөлімі ( BEGIN сөзінен
басталып, END сөзімен аяқта лады) өзара нүктелі үтір арқылы
237
бөлінген операторлардан тұрады. Программаның орындалатан
бөлімі міндетті түрде болуы керек деп саналады.
Компилятор жұмысын директивалар арқылы басқаруға бо-
лады. Оларды бастапқы мəтінге арнайы синтаксисі бар коммен-
тарий ретінде қосады. Егер процедура немесе функция жеке файл
түрінде сақталса, онда олардың сипаттамасын бастапқы мəтінге
қосу үшін, компиляторға INCLUDE директивасы төмендегідей
түрде процедура жəне функцияның сипаттау бөлігінде жазылуы
тиіс:
{$I <файл аты>}.
Мысалы,
PROGRAM A1;
VAR ...
{$I B1.PAS}
BEGIN
...
END.
B1.PAS файлының түрі төмендегідей болуы мүмкін:
PROCEDURE PP;
VAR ...
BEGIN
...
END;
8.2 Процедураны сипаттау жəне шақыру
Есептеулердің бірнеше рет қайталанатын бөліктерін жəне
прог
рамманың модульділігін қамтамасыз ету үшін Турбо Па-
скаль тілінде процедура жəне функция қолдану мүмкіндіктері
қарасты рылған.
Процедура – арнайы ат берілген, қандай да бір аргументтер
санына байланысты нəтижені есептеуге арналған операторлар
жиынтығы.
Процедура немесе функция (жалпы аты – ішкі программа)
негізгі программаның немесе басқа процедураның (функция-
ның) сипаттау бөлімінде анықталады. Процедураның (функция)
құрылымы негізгі программа құрылымына ұқсас: тақырып бөлігі,
сипаттау бөлігі жəне орындалу бөлігінен тұрады.
238
Процедура тақырыбының синтаксисі:
PROCEDURE <процедура аты> [( <формальді параметрлер
тізімі > )];
Мысалы:
PROCEDURE PR1 ( A,B,C : INTEGER; VAR S: REAL);
мұндағы PR1 – процедура аты, ал А,В,С,S – параметр болып
табыла тын айнымалылар аты.
Процедураның негізгі программадан айырмашылығы, проце-
дура да тақырып міндетті түрде жазылады жəне нүктелі үтірмен
аяқталады. Процедура сипаттамасы формальді параметрлермен
орындалады.
Процедура операторы процедураны негізгі программадан не-
месе басқа процедурадан (функциядан) шақыруды іске асырды.
Шақыру төмендегі форма бойынша іске асырылады:
<процедура аты > [(<нақты параметрлер тізімі> )];
Жоғарыда келтірілген процедура аты үшін төмендегідей
шақыру операторын жазуға болады:
PR1 (A,B,C,S);
Процедура тақырыбындағы тізім форматының процедураны
шақырудағыдан айырмашылығы бар. Шақыру кезінде айны-
малылар, тұрақтылар жəне өрнектер үтір арқылы жазылады,
ал тақырыпта, айнымалылардың жазылуы айнымалыларды си-
паттау бөліміндегі айнымалыларды жариялауға ұқсас келеді.
Тізімдегі барлық элементтер үшін мəндер типі көрсетілу керек.
Бір типке жататын айнымалылар үтір арқылы жазылады, ал əр
түрлі типтегі мəндер тобы нүктелі үтір арқылы ажыратылады.
Процедура орындалғаннан кейін, басқару про це дураны шақыру
операторынан кейін ораласқан жолға беріледі.
8.3 Функцияны сипаттау
Функция бір мəнді есептеуге арналған жəне өрнектерде стан-
дарт ты функцияға тəрізді қолданылады.
Функция тақырыбының синтаксисі:
FUNCTION <функция аты > [(<формальді параметрлер тізімі > )]:
<нəтиже типі>;
Мысал:
FUNCTION PRF (A,B,C: INTEGER) : REAL;
Функцияны сипаттаудың процедурадан айырмашылығы:
239
•
функция орындалуының нəтижесі тек бір ғана мəн болуы
тиіс;
•
нəтиже идентификаторы формальді параметрлер тізімінде
көрсетілмейді;
•
функцияның орындалатын бөлігінде, функция атына кем
дегенде бір рет нəтиже мəні меншіктелуі керек (көбіне
функциядан шығарда);
•
формальді параметрлер тізімінен кейін нəтиже мəні көрсе-
тіледі;
•
функция шақырылғаннан кейін басқару өрнектің функция-
дан кейінгі операциясына беріледі.
Функцияны шақыру үшін функция көрсеткішін қолданамыз
(нақ тылы параметрлер көрсетілген функция аты). Функция көр-
сеткіші есептелінетін қандай да бір өрнекте (меншіктелу опера-
торының оң жағында, енгізу операторының мəндер тізімінде,
шартты операторлардың логикалық өрнегінде, т.с.с.) көрсетілуі
керек. Жоғарыда көрсетілген функцияны келесі тəсілдердің бі-
рімен шақыруға болады:
S:=PRF ( A,B,C);
Writeln ( PRF ( A,B,C));
If PRF ( A,B,C)>20 then K=K+1;
8.4 Формальді жəне нақтылы параметрлер
Процедураны (функцияны) сипаттағанда оның тақырыбында
келесі параметрлер түрі көрсетілуі мүмкін:
•
параметр-мəн;
•
параметр-айнымалы;
•
параметр-тұрақты;
•
параметр-процедура;
•
параметр-функция.
Параметрлерді жазғанда мыналарды есте сақтау керек:
•
формальді жəне нақтылы параметрлер саны бірдей болуы
керек;
•
нақтылы параметрлердің жазылу реті мен типі сəйкес
формальді параметрлердің жазылу реті мен типіне сəйкес
болуы керек;
•
формальді жəне нақтылы параметр идентификаторлары
бірдей болуы мүмкін;
240
•
формальді параметрлер Турбо Паскаль тілінде тақырып
бөлігінде сипаттамалармен бірге болады жəне оларды
процедураның (функцияның) сипаттау бөлігінде хабар-
лаудың қажеті жоқ;
•
формальді параметрлер қарапайым немесе ертеде анық-
талған типті болуы керек.
Ішкі программаға жиымды берер кезде оны алдын ала TYPE
типтерді сипаттау бөлімінде сипаттау керек.
Мысал.
TYPE TV=ARRAY [1..30] OF INTEGER;
TM=ARRAY [1..20,1..20] OF REAL;
...
PROCEDURE TOP ( A:TM; VAR B: TV ; N: INTEGER);
...
Мұнда жиымның екі типі сипатталған. TV – бір өлшемді
жиым үшін жəне TM – екі өлшемді жиым үшін. Формальді пара-
метрлер тізімінде А жəне В айнымалылары үшін, сəйкесінше, ма-
трица мен векторды алдын ала анықтаған типтер қолданылады.
Процедура немесе функция тақырыбында берілген парамет-
рлер тізімі ішкі программаны шақырушы программамен байла-
ныстырады. Осы параметрлер арқылы ішкі программаға бастапқы
мəндер беріледі жəне нəтиже қайтарылады (процедурада). Турбо
Паскаль тілінде параметрлерді берудің екі түрі бар: мəні бойын-
ша жəне сілтеме бойынша.
Параметр-мəн
Параметрлердің мəнін, ішкі программаның жергілікті (ішкі)
айнымалыларына жадыдан орын бөлінетін стекке жіберген кез-
де, сəйкес нақты параметрлердің мəндері жазылатын қосымша
орын бөлінеді. Шақырушы программада параметр-мəн үшін ішкі
программаның аргументі ретінде тек айнымалы емес өрнекті де
қолдануға болады. Ішкі программаның жұмысы аяқталғаннан
кейін жадыдан бұл параметрге бөлінген орынға қол жеткізуге бол-
майды. Сондықтан, параметрді мəн бойынша бергенде жадыдағы
орынды нəтиже алу үшін пайдалануға болмайды.
Параметр-айнымалы
Сілтеме бойынша шақырғанда, ішкі программада берілетін
айныма лылар үшін жадыдан орын бөлінбейді. Ішкі программаға
241
айнымалының мəні емес, сəйкес нақты параметрдің жадыдағы
орнына сілтеме беріледі. Осы айнымалымен есептеулер жүр-
гізетін ішкі программа шын мəнінде сəйкес нақты параметрмен
жұмыс істейді. Сондықтан, процедура орындалғанда айны-
малымен орындалған өзгерістер сақталады. Параметр-айны-
малыны жазған кезде фор
маль
ді параметрлер тізімінде VAR
қызметші сөзі көрсетіледі. Есеп
телетін нəтижелер үшін тек
параметр-айнымалылар қолдануға болады. Формальді параметр-
айнымалылар үшін нақтылы мəн ретінде тұрақ ты немесе өрнек
қолдануға болмайды. Себебі, олардың адресі жоқ.
Параметр-айнымалы ретінде көлемі көрсетілмеген ашық
типті жиым жəне жолдарды қолдануға болады. Ашық жиым ішкі
программаның базалық элементтер типін анықтайтын, бірақ
көлемі мен шекарасын анықтамайтын, формальді параметрі
бола алады. Бұл жағдайда элементтердің индексі нөлден баста-
лады. Ашық жиымның жоғарғы шекарасы HIGH функциясының
көмегімен қайтарылады. Мұндай сипаттама тек бір өлшемді
жиым үшін ғана қолданылады. Ашық жиым үшін стекте оның
көшірмесі жасалады. Бұл стектің толып кетуіне əкелуі мүмкін.
Ашық жиымды қолдануға мысал қарастырайық. Бір өлшемді
жиым элементтерінің қосындысын есептеу керек.
FUNCTION SUM (VAR A: ARRAY OF INTEGER):INTEGER;
VAR S,I : INTEGER;
BEGIN
S:=0;
FOR I:=0 TO HIGH(A) DO
S:=S+A[I];
SUM:=S;
END;
Негізгі программада мұндай жиымды Var A: array [ -2 .. 3]
of integer; түрінде сипаттауға болады. Бұл жерде ең маңыздысы
жиым ның нақты шекарасы емес оның элементтерінің саны, ол
6-ға тең.
Ашық жолды компилятордың {$P+} директивасын қолданып,
стандартты OPENSTRING жəне STRING типтерінің көмегімен
беруге болады.
Мысалы,
PROCEDURE ZAP ( VAR ST : OPENSTRING; R: INTEGER );
242
немесе
{$P+}
PROCEDURE ZAP ( VAR ST : STRING; R: INTEGER );
Турбо Паскаль тілінде жолдың формальді жəне нақтылы
пара метр лердің ұзындықтарының сəйкестігін қадағалауды алып
тастайтын, {$V-} компиляция режимін орнатуға болады. Көлемі
қысқа жол берілген кезде, формальді параметр ұзындығы осыған
сəйкестелінеді, ал көлемі ұзын жол берілгенде, формальді па-
раметр ұзындығы максимальді ұзындыққа дейін қысқартылады.
Бақылау тек параметр-айнымалы үшін ғана қосылады, параметр-
мəн үшін бақылау қажет емес.
Процедура жəне функция қолданылатын мысал қарастырайық.
M бағана жəне N жолдан тұратын матрицаның барлық элементтері
өсу немесе кему бойынша реттелген жəне жай сан болып келген
бағана нөмірлерінен тұратын вектор құрастыратын процедура
жазу керек. Бастапқы мəндерді енгізу, процедураны шақыру жəне
нəтижені шығару негізгі программада орындалады.
USES CRT;
TYPE TMAS=ARRAY[1..100,1..100] OF WORD;
TVECT=ARRAY[1..100] OF WORD;
VAR A:TMAS;
V:TVECT;
N,M,K:BYTE;
I,J:BYTE;
PROCEDURE FORM(VAR X:TMAS; {матрица}
N,M:BYTE; {жол жəне бағана саны }
VAR R:TVECT; {нəтиже-вектор}
VAR K:BYTE); {алынған вектор ұзындығы}
VAR I,J,Z,S:BYTE;
F:BOOLEAN;
FUNCTION PROS(B:WORD):BOOLEAN;
{жай санды тексеру функциясы}
VAR I:WORD;
BEGIN
IF B<>1 THEN PROS:=TRUE
ELSE PROS:=FALSE;
FOR I:=2 TO B DIV 2 DO
243
IF B MOD I = 0 THEN PROS:=FALSE;
END;
BEGIN
K:=0;
FOR J:=1 TO M DO
BEGIN
Z:=0; S:=0; F:=TRUE;
FOR I:=1 TO N-1 DO
BEGIN
IF X[I,J]>X[I+1,J] THEN Z:=Z+1;
IF X[I,J] END;
IF (Z = N-1) OR (S = N-1) THEN
BEGIN
FOR I:=1 TO N DO
IF NOT(PROS(X[I,J])) THEN F:=FALSE;
IF F THEN
BEGIN
K:=K+1; R[K]:=J
END;
END;
END;
END;
BEGIN
WRITELN(‘ N жəне M-ді енгіз:’);
READLN(N,M);
WRITELN(‘Матрицаны енгіз:');
FOR I:=1 TO N DO
FOR J:=1 TO M DO
READLN(A[I,J]);
FORM(A,N,M,V,K);
WRITELN(‘Нəтиже:’);
FOR I:=1 TO K DO
WRITE(V[I],’ ‘);
READKEY
END.
Бұл мысалда процедураға бастапқы мəндер беріледі: екі
өлшемді жиым жəне оның көлемі. Жиым, процедурада оның
244
көшірмесіне орын бөлінбес үшін параметр-айнымалы ретінде
беріледі. Нəтиже: вектор жəне оның көлемі міндетті түрде
параметр-айнымалылар ретінде беріледі. Жай санды тексеру
процедураның ішкі функциясы жəне оған негізгі программадан
қол жеткізуге болмайды.
Параметр-тұрақтылар
Процедураға жəне функцияға берілетін аргументтер стек-
те сақталатын болғандықтан, көлемі үлкен жиым берілген
кезде стек толып кетуі мүмкін. Турбо Паскаль тілінде ішкі
программаның формальды параметрлерін сиаттауға болатын
CONST сипаттаушысы бар. Осындай параметрге сəйкес аргу-
мент, Var сипттаушысының параметрі тəрізді, сілтеме бойынша
беріледі. Бірақ, процедураның (функцияның) өзінде оған жаңа
мəн меншіктеуге болмайды.
PROCEDURE < процедура аты> (CONST <тұрақты аты>:
<типі>; ...);
0> Достарыңызбен бөлісу: |