Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
paskal.pdf
Скачиваний:
89
Добавлен:
17.02.2016
Размер:
544.21 Кб
Скачать

Есеп: екі оң сандар үшін, ең үлкен орта бөлгішін табу

программасын құрайық.

 

Екі санның біреуі 0 тең болғанға дейін цікл ұйымдастырылады.

Whіle циклін қолданайық.

 

Сонда блок схемаға сәйкес программа мына түрде жазылады:

 

 

Program NOD;

басы

 

Var a,b : іnteger;

 

 

Begіn

 

 

Wrіteln(‘вв.два числа’);

a, b

 

Readln(a,b);

 

 

Whіle b > 0 do

 

 

Begіn

b>0

 

c := a mod b;

 

ЕҮОБ

a := b;

 

b := c;

c:=a mod b;

а

end;

 

a:=b; b:=c;

 

Wrіteln(‘nod= ‘, a);

 

соңы

readln;

Есептер

 

End.

 

 

1.Осы есептің алгоритмін басқаша қалай ұйымдастыруға

болады?

2.Repeat …until циклін қолданып программаға аударыңыз.

3.Үш санның ең үлкен орта бөлгішін табу керек. Ескерту: ЕҮОБ(a,b,c) = ҮОБ(ЕҮОБ(a,b),c)

4.Берілген натурал x және y сандары, қатарынан нөлге тең емес. D = ЕҮОБ (x,y) табу және d = q*x + w*y теңдігін қанағаттандыратын, бүтін d және w сандарын іздеу.

2.12. Процедуралар және функциялар

Турбо Паскаль тілінде ішкі программаның екі түрі бар – процедуралар және функциялар. Олардың құрылымдары негізгі програманың құрылымына өте ұқсас.

Процедуралар Ескерту: процедураның сипаттамасы міндетті түрде

тақырыппен басталуға тиіс.

Тақырыпта procedure резервтелген сөзінен кейін процедураның аты жазылады, ары қарай дөңгелек жақшаның ішінде формалды параметрлердің тізімі сипатталады. Тақырыптың соңында үтір нүкте қойылады.

Процедураның жалпы форматы:

46

Procedure <процедураның аты> {<параметрлері>}; <сипаттау бөлімі>

begin

<операторлар бөлімі>

end;

Процедураның орындалу нәтижесінде – бір немесе бірнеше мәндер есептеледі. Ол (немесе олар), негізгі программаға оның параметрінің мәні ретінде беріледі. Процедура шақырылғанда оның формалды параметрлері, негізгі программадағы сәйкес нақты параметрлерге тізбектелу кезегімен ауысады.

Нақты параметрлер – негізгі программадан процедура шақырылғанда, оған тізбектелу кезегімен мәндерін беретін параметрлер.

Ескерту: формалды және нақты параметрлердің саны және типтері дәлме-дәл тізбектелу тәртібімен сәйкес келу керек!

Формалды параметрлер – бұл, нақты параметрлерге мәндерін беруге типін және орнын анықтайтын, процедурада қатынасушы жалған айнымалылар.

Формалды параметрлер екі түрге бөлінеді: айнымалыпараметрлер және мәндік параметрлер.

Айнымалыпараметрлердің алдында Var сөзі тұрады. Процедура орындалу нәтижесінде бұл айнымалы-параметрлердің мәндерінің өзгергу салдарынан, негізгі программада оған сәйкес нақты-параметрлердің мәндері өзгертеді.

Мәндік- параметрлердің алдында Var сөзі тұрмайды. Процедураның ішінде мәндікпараметрлермен кез келген амалдар орындалып, мәндері өзгерседе нақты-параметрлердің мәндеріне әсері болмайды.

Программада барлық айнымалылар глобальды және жергілікті деп бөлінеді. Глобальды айнымалылар негізгі программаның сиппаттау бөлімінде жаряланады. Жергілікті айнымалылар процедураларда және функцияларда жаряланады.

Мысал

An – есептейтін программа құру керек, мұндағы a және n (n ³ 0) бүтін сандар, клавиатурадан енгізіледі.

Шешімі

Бүтін санның дәрежеге шығаруын есептейтін процедура құрайық.

Procedure Degree (x, y : Integer; Var st : Longint);{тақырыбы}

Var i : Integer; {сипаттау бөлімі}

47

Begin

{процедураның денесі}

 

St := 1;

For I := 1 to do st := st * x;

End;

Процедура Degree деп аталды. Жақшаның ішінде формалды параметрлердің тізімі типтерімен сипатталды. Үш параметр қолданылды: біріншісі – дәреже негізі, яғни дәрежеге шығарылатын сан, екіншісі – дереже, ұшіншісі – нәтиже.

Бірінші екі x және y мәндік параметрлер, үшінші st айнымалы- параметр, сондықтан алдында Var сөзі нұсқалды (st

Longint типті, себебі дәрежелік функцияның нәтижесі тез өседі). Процедураның сипаттау бөлімінде цикл санын есептейтін i – айнымалысы жарияланды.

Процедураның денесінде, яғни Begin және End сөздерінің арасында x санының дәрежесі For циклымен есептеледі.

Degree процедурсын пайдаланып жазылған бүкіл программаның түрі мынадай болуы мүмкін:

Program Example_st; Var a, n : Integer;

s : Longint;

Procedure Degree (x, y : Integer; Var st : Longint); Var i : Integer;

Begin

St := 1;

For i := 1 to do st := st * x;

End;

Begin

Writeln(‘Вв. два числа – основание и показатель степени’); Readln(a, n);

Degree(a, n, s); {процедураны шақыру} Writeln(‘Результат ’, s);

Readln;

End.

Негізгі программадан Degree процедурасы оператор сияқты шақырылды. Жақшаның ішінде нақты a, n және s параметрлері жазылған.

Программа орындалғанда нақты a, n және s параметрлерінің мәндері, сәйкес формалды x, y және st параметрлеріне меншіктелді.

48

Процедураның жұмысы аяқталғанда a және n айнымалыларының мәндері өзгермейді, ал s айнымалысы жаңа мән қабылдайды.

Енді а = 3 және n = 4 мәндері үшін программаның орындалу тәртібін көрсетейік. Программада Degree(a, n, s) процедураның аты кезіккенде компьютер мына әректтерді орындайды:

-Degree процедурасында сипатталған айнымалыларға жады ұйяшықары бөлінеді;

-нақты параметрлердің мәндерін формалды параметрлерге меншіктейді: x := a (x = 3), y := n (y = 4), st := s;

-процедураның операторлары орындалады, яғни 34 есептейді;

-табылған нәтиже s айнымалысына меншіктеледі, a және n айнымалыларының мәндері өзгерусіз қалады. Осыдан кейін программа, процедураны шақыру нүктесіне қайта барып, одан кейінгі операторлар орындалады.

Бұл процессті схема түрінде былай бейнелейік:

Program Example_st;

 

 

a

3

Procedure Degree

x

3

n

4

y

4

s

-

st

-

 

 

 

 

i

-

 

 

 

Begin

 

 

 

End;

 

Degree(a, n, s);

процедураны шақыру

Суретте негізгі және процедурада қолданылған айнымалыларға

жадыда бөлінген ұйяшықтар рамка түрінде көрсетілген.

Program Example_st;

 

 

a

3

Procedure Degree

x

3

n

4

y

4

s

81

 

81

 

 

 

 

 

i

-

 

 

 

Begin

 

 

 

End;

 

Degree(a, n, s);

 

нүктеге қайту

Мысал

 

 

 

 

 

49

 

Екі бүтін айнымалы берілген. Олардың мәндерінің орындарын ауыстыру керек.

Шешімі

Айнымалылардың мәндерінің орнын ауыстыруды екі әдіспен орындауға болады – аралық айнымалыны колданып, немесе қолданбай.

Бірінші әдіске сәйкес келетін процедураны жазайық. Procedure Swap (Var x, y : Integer);

Var z : Integer;

Begin

z := x; x := y; y := z;

End;

Процедура Swap деп аталды. Оның екі формалды параметрлері айнымалы-параметрлер болады. Себебі олардың мәндерінің орны ауыстырылғаннан кейін өзгерілген мәндерді сақталуы қажет. Осы параметрлер процедураның орындалу нәтижелері болады.

Процедурада сипатталған z аралық айнымалы ретінде қолданылады.

Программаның тұтастай түрі мынадай: Program Example_sw;

Var a, b : Integer;

Procedure Swap (Var x, y : Integer); Var z : Integer;

Begin

z := x;

 

x := y;

 

y := z;

 

End;

 

Begin

 

Writeln(‘Вв. два числа’);

{мәндерді енгізу}

Readln(a, b);

Swap (a, b);

{процедураны шақыру}

Writeln(‘a =’, a, ‘b = ‘,b);

{жаңа мәндерді шығару}

Readln;

 

End.

 

Мысалда процедураның айнымалы-параметрлеріне екі параметр жіберіледі. Процедура орындалғаннан кейін олар жаңа мәндер қабылдайды: a айнымалысының мәні b – ға тең, ал b айнымалысының мәні a – ға тең болады.

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]