![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Процедура мен функцияны қолданып программа құру.
Процедураларды қ олдану Т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ң шығ аруында болуғ а тоқ тайды. Бағ дарламаның ғ ибраттанушысында бұ ны жақ сы кө руге болатын:
Екі бү тін санның ішінен максимум ды табу ү шін процедураларды қ олданып мысал келтіріп қ арастырайық. Ал керісінше келесі есепті функцияны қ олдана отырып былай шешуге болады: 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! екі факториялдың ә р тү рлі екенін функцияны қ олдана табың дар.
|