Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процедура мен функцияны қолданып программа құру



Процедураларды қолдану

Тurbо Раsсаl программалау тілінде процедураның жалпы құрылымы:

Рrосеdurе рrос_nаmе(а1,b1,...: tуре_1;а2,b2,...:tуре2);

bеgіn

процедураның негізгі бөлігі

еnd;

Мұндағы:

рrос_nаmе - процедура атауы. Процедура атауында бос орын белгісі қолданылмай символдар тізбегінен құралады. Процедура атауы әріптен басталуы тиіс; аl,b1,а2,b2 - қосалкы программада қолданылатын айнымалылар тізбегі. Негізгі программамен байланыс ретінде қолданылатын айнымалылар сипатталады; tуре_l,tуре2 - айнымлылар tипі (мысалы: х:іntеgеr; у:rеаl және т.б.);

bеgіn, еnd;- процедураның басы мен соңы.

Мысал 7.1. S мәнін табу программасын құру керек:

S = 2! + 3! + 4! + … + n!.

Program esep1;

Var s,i,p,n: integer;

Procedure fakt(n:integer; var f: integer);

Var i: integer;

Begin

F:=1;

for i:=1 to n do

f:= f*I;

end;

begin

Writeln(‘n=?’); readln(n);

s:= 0;

For i:=1 to n do

begin

Fakt(i, p);

S:= s + p;

End;

Writeln(‘S=’, s);

End.

Функцияны қолдану

Тurbо Раsсаl программалау тілінде функцияның жалпы құрылымы:

Funсtіоn funс_nаmе(а1,а2,...: tуре1): tуре_2;

Bеgіn

процедураның негізгі бөлігі;

еnd;

Мұндағы:

funс_nаmе - функция атауы. Функция атауында бос орын белгісі қолданылмай символдар тізбегінен құралады. Функция атауы әріптен басталуы тиіс (мысалы: sum, рrl, usеr2); аl,а2 - қосалкы программада қолданылатын айнымалылар тізбегі. Негізгі программамен байланыс ретінде қолданылатын айнымалылар сипатталады; tуре_l - айнымлылар типі (мысалы: х:іntеgеr; у:rеаl және т.б.); tуре2 - функцияның типі; bеgіn - функцияның басы; еnd; - функцияның соны.

Мысал 7.2. Пернетақтадан енгізілген бүтін санның цифрларының қосындысын табу программасын құру керек.

Program esep2;

Uses crt;

Var n: longint; s: integer;

Function sum(longint):integer;

Var y:integer;

Begin

Y:=0;

While x<>0 do

Begin

y:=y+x mod 10;

x:=x div 10;

End;

If y<0 then sum:=-y else sum:=y;

End;

Begin {негізгі бөлім}

Checkeof:=true;

Writeln(‘Санды енгізіңіз. Eof бойынша енгізуді аяқтау’);

While not eof do

Begin

Readln(n);

Writeln(n,‘ сан цифрларының қосындысы тең ’);

Writeln(sum(n));

End;

End.

Функцияларда рекурсия қолдануға болады. Мұндай программаларды рекурсивті программалар деп атайды. Рекурсия дегеніміз ол қосалқы программаның өзін өзі шақыруы. Егер қосалқы программада рекурсияны аяқтауды білдіретін шарт қарастырылмаса, онда функция өз-өзін тоқтаусыз шақыра береді.

N!-ды есептеу мысалында функцияның рекурсивті құрылуын қарастырайық. Дұрыс ұйымдастырылған рекурсия iшкi программасының жанында төменгi деңгейге алгоритм ұйымның кейбiр ағымдағы деңгейiнен бiрнеше рет өткел дәйектi түрде iске асуға қойылған есептiң белгiлi шешiмi алынбайды.

PROGRAM DEMO1;

USES CRT;

VAR M:BYTE;

FUNCTION FAKT(N:BYTE):LONGINT;

BEGIN

IF N=1 THEN FAKT:=1

ELSE FAKT:=FAKT(N-1)*N;

END;

BEGIN

CLRSCR;

WRITE('N-');READLN(M);

WRITELN('N!=',FAKT(M));

READKEY;

END.

Осылай бiздiң мысалда болады:мөрлер операторда FAKT-тың функциясы шақырылады (1) FAKT және әрi қарай шақырылмайды FAKT-тың функциясын өз кезегiнде шақырады N-1 параметрiңiз баратын N параметрiңiз барыңыз. Бұл процесстер сонда, содан соң керi реттегi нәтиженiң шығаруында болуға тоқтайды.

Бағдарламаның ғибраттанушысында бұны жақсы көруге болатын:

Бағдарламаның мәтіні: Бағдарламаның жұмыс істеуінің нәтижесі:
PROGRAM DEMO2; USES CRT; VAR CH: WORD; PROCEDURE WRITEA; BEGIN CH:=CH+1; WRITELN('­НАЧАЛО',CH); IF CH<4 THEN WRITEA; WRITELN(' КОНЕЦ',CH); CH:=CH-1; END; BEGIN CLRSCR; CH:=0; WRITEA; READKEY; END.   БАСЫ 1 БАСЫ 2 БАСЫ 3 БАСЫ 4 СОҢЫ 4 СОҢЫ3 СОҢЫ 2 СОҢЫ 1  

Екі бүтін санның ішінен максимум ды табу үшін процедураларды қолданып мысал келтіріп қарастырайық.

Program rt; var x,y,m,n: integer;procedure MaxNumber(a,b: integer; var max: integer);begin if a>b then max:=a else max:=b;end; begin write('Енгізіңіз x,y '); readln(x,y); MaxNumber(x,y,m); MaxNumber(2,x+y,n); writeln('m=',m,'n=',n);end.

Ал керісінше келесі есепті функцияны қолдана отырып былай шешуге болады:

var x,y,m,n: integer;function MaxNumber(a,b: integer): integer; var max: integer;begin if a>b then max:=a else max:=b; MaxNumber:= max;end; begin write('Енгізіңіз x,y '); readln(x,y); m:= MaxNumber(x,y); n:= MaxNumber(2,x+y); writeln('m=',m,'n=',n);end.Бағдарламаны құрарда процедураны немесе функцияны міндетті түрде қолдану керек.

· F=m! – k! екі факториялдың әр түрлі екенін функцияны қолдана табыңдар.





Дата публикования: 2015-10-09; Прочитано: 1095 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...