Оқулық Қазақстан Республикасы Білім жəне ғылым министрлігі бекіткен Алматы, 2011 1



бет147/210
Дата06.01.2022
өлшемі4,42 Mb.
#16437
түріОқулық
1   ...   143   144   145   146   147   148   149   150   ...   210
Байланысты:
boribaev-algoritmdeu

Параметр-айнымалы
Сілтеме бойынша шақырғанда, ішкі программада берілетін айнымалылар үшін жадыдан орын бөлінбейді. Ішкі программаға


240

айнымалының мəні емес, сəйкес нақты параметрдің жадыдағы орнына сілтеме беріледі. Осы айнымалымен есептеулер жүр-гізетін ішкі программа шын мəнінде сəйкес нақты параметрмен жұмыс істейді. Сондықтан, процедура орындалғанда айны-малымен орындалған өзгерістер сақталады. Параметр-айны-малыны жазған кезде формальді параметрлер тізімінде VAR қызметші сөзі көрсетіледі. Есептелетін нəтижелер үшін тек параметр-айнымалылар қолдануға болады. Формальді параметр-айнымалылар үшін нақтылы мəн ретінде тұрақты немесе өрнек қолдануға болмайды. Себебі, олардың адресі жоқ.
Параметр-айнымалы ретінде көлемі көрсетілмеген ашық типті жиым жəне жолдарды қолдануға болады. Ашық жиым ішкі программаның базалық элементтер типін анықтайтын, бірақ көлемі мен шекарасын анықтамайтын, формальді параметрі бола алады. Бұл жағдайда элементтердің индексі нөлден баста-лады. Ашық жиымның жоғарғы шекарасы HIGH функциясының көмегімен қайтарылады. Мұндай сипаттама тек бір өлшемді жиым үшін ғана қолданылады. Ашық жиым үшін стекте оның көшірмесі жасалады. Бұл стектің толып кетуіне əкелуі мүмкін.
Ашық жиымды қолдануға мысал қарастырайық. Бір өлшемді жиым элементтерінің қосындысын есептеу керек.

FUNCTION SUM (VARA:ARRAYOF 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 );


241

немесе
{$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



242

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.
Бұл мысалда процедураға бастапқы мəндер беріледі: екі өлшемді жиым жəне оның көлемі. Жиым, процедурада оның


243

көшірмесіне орын бөлінбес үшін параметр-айнымалы ретінде беріледі. Нəтиже: вектор жəне оның көлемі міндетті түрде параметр-айнымалылар ретінде беріледі. Жай санды тексеру процедураның ішкі функциясы жəне оған негізгі программадан қол жеткізуге болмайды.


Достарыңызбен бөлісу:
1   ...   143   144   145   146   147   148   149   150   ...   210




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

    Басты бет