Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Тармақталған құрылымды алгоритмдерді программалау






Шартты операторлар орындау ү шін қ ұ рама операторлардың біреуін таң дап алуғ а мү мкіндік береді (немесе бір де біреуін таң дамауғ а). Ө рнекте стандарты бульдік типке ие болатын нә тиже пайда болуы тиіс. Егер ө рнектің нә тижесі ақ ихат (Тrue) мә ні болып табылса, онда then кілттік сө зінен кейін ілесетін оператор орындалады. Егер ө рнектің нә тижесі жалғ ан (False) мә ні болып табылса жә не else кілттік сө зі бар болса, онда else -ден кейінгі оператор орындалады. Егер else кілттік сө зі болмаса, онда ешқ андай оператор орындалмайды. Else -нің алдындағ ы операторда нү ктелі ү тір қ ойылмайды.

Конструкцияда орын алатын синтаксистикалық бірмә нділіксіз:

if e1 then e2 else e3

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

if e1 then

begin

if e2 then s1 else s2

end

Жалпы айтқ анда else ә лі басқ а else -мен байланыспағ ан ең жақ ын if – пен байланысады.

if оператор мысалдары:

if X < 1.5 then Z: = X+Y else Z: = 1.5;

if P1 < > nil then P1: = P1^.father;

if B = 0.0 then Writeln('Нө льге болуге болмайды.')

else begin Ratio = A / B; Writeln('Қ атынас тең ', Ratio) end;

Жоғ арыда айтылғ анды қ орытындылайық.

Шартты оператордың толық жә не қ ысқ а формалары бар. Шартты оператордың толық формасының тү рі:

if шарт then оператор1

else оператор2

Шарт ретінде кейбір логикалық ө рнек кө рсетіледі. Егер шарт ақ иқ ат болып табылса, онда оператор1 орындалады, кері жағ дайда оператор2 орындалады.

Шартты оператордың қ ысқ а формасының тү рі: if шарт then оператор

Егер шарт ақ иқ ат болып табылса, онда оператор орындалады кері жағ дайда программаның келесі операторына ө ту жү зеге асырылады. Келесі тү рдегі конструкцияның жағ дайында:

if шарт1 then

if шарт2 then оператор1

else оператор2

else ол ү шін else бұ тағ ы ә лі кө рсетілмеген алдың ғ ы ең жақ ын if операторғ а қ атысты. Егер алдың ғ ы мысалда else бірінші if операторғ а қ атысты болуы қ ажет болса, онда қ ұ рама операторды пайдалану керек:

if шарт1 then

begin

if шарт2 then оператор1

end

else оператор2

Қ ысқ а шартты оператордың графикалық интерпретациясы. Блок-схемаларда қ ысқ а шартты операторғ а егер-онда типті қ ұ рылым сә йкес.

Сурет 9.1 - Қ ысқ а шартты оператордың блок-схемасы

 

9.1. y айнымалысына тү рлі ү ш санның ішінен минималды мә нін меншіктеу керек, яғ ни y = min (a, b, c). Блок-схемасы 9.2 суретте. 9.1 мысал программасы:

Program P9_1;

Var

a, b, c, y: real;

Begin

writeln (‘a, b, c сандарын енгізің із’);

read (a, b, c);

y: = a;

if b< y then y: = b;

if c< y then y: = c;

writeln (‘y =’, y: 6: 2);

End.

 

Мысал 9.2. y айнымалының мә нін екі бұ тақ тың біреуі бойынша есептеу керек. Блок-схемасы 9.4 суретте. 9.2 мысалғ а программа:

Program P9_2;

Var

x, y: real;

Begin

writeln (‘x санын енгізің із’);

read (x);

if x> 0 then y: = ln(x) else y: = exp(x);

writeln (‘y =’, y: 6: 2);

End.

 

Сурет 9.2 –9.1 мысалғ а блок-схема

 

Толық шартты оператордың графикалық интерпретациясы. Блок-схемаларда толық шартты операторғ а егер-онда-ә йтпесе типті қ ұ рылымғ а сә йкес:

Сурет 9.3 – Толық шартты оператордың блок-схемасы

 

Сурет 9.4 - 9.2 мысалғ а блок-схема

Мысал 9.3. Толық квадратты ax2+bx+c=0 тең деудің тү бірлерін есептеу керек. Программада дискриминанттың таң басын тексеруді кө здеу керек. Егер дискриминант теріс болып табылса, онда «Тү бірлері жорамал» деген хабарлы шығ ару керек. 9.3 мысалғ а программа:

Program P9_3;

Var

a, b, c, d, x1, x2: real;

Begin

writeln(‘Тең деудің коэффициенттерін енгізің із’);

read (a, b, c);

d: = b*b – 4*a*c;

if d< 0 then

writeln (‘Тү бірлері жорамал’)

else

begin

x1: = (-b + sqrt(d)) / (2*a);

x2: = (-b - sqrt(d)) / (2*a);

writeln(‘x1=’, x1: 5: 2, ‘x2=’, x2: 5: 2);

end;

End.

 

Мысал 9.4. Шартты операторлардың бірінің ішіне бірі салынғ ан қ ұ рылымдарды пайдалану. Егер THEN жә не ELSE қ ызметші сө здерден кейін жә не шартты операторлар пайдаланылатын болса онда қ ұ рылым бірінің ішіне бірі салынғ ан деп аталады. Бірінің ішіне бірі салыну саны еркін. Бұ л кезде келесі ереже ә діл: ELSE қ ызметші сө зі ә рдайым жоғ арыдағ ы ең жақ ын THEN сө зіне қ атысты. Бірінің ішіне бірі салынғ ан қ ұ рылымдарды оқ уды ың ғ айлату ү шін программалау барысында мү мкін болғ анша THEN сө зінен кейін Бірінің ішіне бірі салынғ ан шартты операторды жазудан бас тарту ұ сынылады. Ү ш бұ тақ тың біреуі бойынша у-тің мә нін есептеу есебін қ арастырайық. Блок-схема 9.5 суретте. 9.4 мысалғ а программа:

Program P9_4;

Var

x, y: real;

Begin

writeln(‘x санын енгізің із’);

read(x);

if x> =1 then

y: = sqrt(x)/2

else

if x> 0 then

y: = exp(1/3*ln(x))/3

else

y: = exp(1/4*ln(abs(x)))/4;

writeln(‘y =’, y: 6: 2);

End.

Сурет 9.5 - 9.4 мысалғ а блок-схема

9.3 Таң дау операторы (case)

Бұ л оператор программада кө п if операторларды пайдаланбай альтернативалар арасында таң дауды жү зеге асыруғ а мү мкіндік береді. Таң дау операторы (case) ө рнектен (айырып-қ осқ ыштан, селектордан) жә не ә рқ айсысының алдында бір немесе бірнеше тұ рақ тылар (олар таң даудың тұ рақ тылары немесе таң балар деп аталады) немесе else кілттік сө зі тұ ратын операторлардың тізімінен тұ рады. case таң басы бірнеше тұ рақ тылардан немесе ішкі аралық тардан (поддиапазон) тұ рады, олардан кейін қ ос нү кте қ ойылады жә не олар ү тірлер арқ ылы ажыратылады. Қ ай оператордың case таң басы селектордың ағ ымдағ ы мә ніне тең болады сол оператор орындалады. Егер case таң балардың бірде біреуі селектордың мә нін қ амтымаса, онда бір де бір оператор орындалмайды немесе міндетті емес резервтелген else сө зінен тұ ратын операторлар орындалады. Айырып-қ осқ ыш санақ тап шығ у типіне ие болуы тиіс жә не осы типтің жоғ арғ ы жә не тө менгі шекараларының санақ тап шығ ылатын мә ндері -32768 ден 32767 дейінгі аралық та жатуы тиіс. Сонымен, жолдық типті жә не ұ зын бү тін типті айырып-қ осқ ыш ү шін рұ қ сат етілмеген. Барлық таң дау тұ рақ тылары бірегей болуы жә не айырып-қ осқ ыштың типімен ү йлесімді болатын санақ тап шығ у типіне ие болуы тиіс. Таң дау операторы оның алдындағ ы таң дау тұ рақ тысы айырып-қ осқ ыштың мә ніне немесе айырып-қ осқ ыштың мә ні жататын таң дау диапазонына тең болатын оператордың орындалынуына ә келеді. Егер ондай таң дау тұ рақ тысы ондай таң дау диапазоны болмаса жә не else бұ тағ ы бар болса онда else кілттік сө зінен кейін ілескен оператор орындалады. Егер else бұ тағ ы болмаса онда ешқ андай оператор орындалмайды. Таң дау операторғ а мысалдар қ осымшада келтірілген (Р6 жә не Р11 программалары):

case Operator of

plus: X: = X+Y;

minus: X: = X-Y;

times: X: = X*Y;

end;

Таң дау операторының графикалық интерпретациясы. Блок-схемаларда CASE операторғ а таң дау қ ұ рылымы сә йкес.

 

Мысал 9.5. у-ті есептеу ү шін таң дау операторын жазу керек. Блок-схемасы 9.6 суретте. 9.5 мысалғ а программаның фрагменті:

case n of

1: y: = x;

2, 3: y: = 2 * sqrt(abs(x));

4: y: = exp(x);

end;

Сурет 9.6 - 9.5 мысалғ а блок-схема


Лекция

10.1 Циклдік қ ұ рылымды алгоритмдерді программалау. Кейінгі шартты цикл операторы (repeat)

Цикл операторы белгілі бір операторлардың қ айталап орындалуын береді. Егер қ айталану саны алдын-ала белгілі болса, онда ың ғ айлы конструкция болып for операторы табылады. Кері жағ дайда while немесе repeat операторларын пайдалану керек. Кейінгі шартты цикл (repeat сө зінен басталатын) операторында операторлардың тізбектілігін қ айталап орындауды басқ аратын ө рнек repeat операторының ішінде қ амтылғ ан.

Ө рнектің нә тижесі бульдік типтегі нә тиже болуы тиіс. repeat жә не until қ ызметші сө здердің арасына алынғ ан операторлар ө рнектің нә тижесі Тrue мә нін қ абылдағ анша ретімен орындала береді. Операторлардың тізбектілігі кемінде бір рет болса да орындалады, себебі ө рнек операторлардың тізбектілігі ә р орындалып болғ анынан кейін есептеледі. Кейінгі шартты цикл операторды пайдалану мысалдары (қ осымшадағ ы Р7 жә не Р9 программаларды да кө рің із):

repeat K: = I mod J; I: = J; J: = K; until J = 0; repeat Write(' (0..9) мә нін енгізің із: '); Readln(I); until (I > = 0) and (I < = 9);

P9 программасы " Қ айталау-" сұ рағ ына n немесе N жауабы алынғ анша қ айталана береді. Басқ а сө збен айтқ анда, repeat жә не until арасына алынғ ан нә рсе until –ден кейінгі ө рнек Тrue мә нге ие болып тү рғ анша қ айталанып орындала береді. while циклы мен repeat циклдарының арасында негізгі ү ш айырмашылық бар:

1) repeat циклындағ ы операторлар ә рдайым кемінде бір рет болса да орындалады, себебі ө рнекті тексеру repeat кілттік сө зінен кейін бірден жү зеге асырылмайды. Керісінше, while циклында егер ө рнек ең басында False мә нге ие болса онда циклдің бү кіл тұ лғ асы ө ткізіліп жіберіледі (орындалмайды).

2) repeat циклы ө рнек Тrue мә нге ие болғ анша орындала береді; оғ ан қ арағ анда while циклы ө рнек Тrue мә ніне ие болып тұ рғ ан кезде орындала береді.

3) repeat циклы қ ұ рама операторды қ ұ рмайтын бірнеше операторларды қ амтуы мү мкін.

Сонымен, repeat циклының операторы келесі формағ а ие:

Repeat

операторлар

until шарт

while циклына қ арағ анда шарт циклдың кезекті итерациясынан кейін есептеледі, егер ол ақ ихат болса онда циклдан шығ у орын алады. Сонымен, repeat операторының цикл тұ лғ асын қ ұ райтын операторлар кемінде бір рет орындалады. Егер шарт ә рдайым жалғ ан болып тұ рса онда циклдену орын алуы мү мкін:

repeat

write(1);

until 2=1;

Циклденіп қ алғ ан программаны тоқ тату ү шін Ctrl-F2 клавиштер комбинациясын немесе кнопкасын басу керек.

Блок-схемаларда repeat циклының операторына 10.1 суретте кө рсетілген қ ұ рылым сә йкес.

Сурет 10.1 - repeat оператордың жұ мыс жасау блок-схемасы

 

Мысал 10.1 Бір айнымалысы бар функцияны табуляциялау есебін шешу керек, яғ ни аргументі [-0.5, 2.5] аралық та 0.1 қ адаммен ө згеретін функцияның мә ндер кестесін есептеу керек. Бұ л есепте айнымалы циклдың басқ арушы айнымалысы болып табылады. Бұ л есепті шешудің басқ а нұ сқ асы тө менде 10.2 мысалда келтірілген.

Program P10_1;

Var a, b, x, y: real;

Begin

writeln(‘Бастапқ ы деректерді енгізің із’); read(a, b);

writeln(‘ x y(x)‘); x: = -0.5;

repeat

y: = ln(abs(x))/(a*a - b*b);

writeln(x: 8: 1, y: 8: 1)

x: = x + 0.1;

until x > 2.5;

End.

10.2 Алдынғ ы шартты цикл операторлары (while)

Алдынғ ы шартты цикл (while сө зінен басталатын) операторы оператордың (ол қ ұ рама оператор да болуы мү мкін) қ айталап орындалуын басқ аратын ө рнекті қ амтиды. while операторы кейбір шартты циклдың басында тексеру ү шін пайдаланылады.

Ол арқ ылы оператордың қ айталап орындалуын басқ ару жү зеге асырылатын ө рнек бульдік типке ие болуы тиіс. Ол ішкі оператор орындалғ анша есептеледі. Ө рнек Тruе мә нді қ абылдап тұ рса ішкі оператор қ айталанып орындала береді. Егер ө рнек ең басынан False мә нін қ абылдаса онда алдынғ ы шартты цикл операторының ішінде қ амтылғ ан оператор орындалмайды. Алдынғ ы шартты цикл операторының мысалдары: (сонымен қ атар, қ осымшадағ ы Р3 жә не Р10 программалары).

while Data[I] < > X do I: = I + 1; while I > 0 do begin if Odd(I) then Z: = Z * X; I: = I div 2; X: = Sqr(X); end;
while sum< 1000 do begin I: = I + 1; sum: =sum+a; end; while not Eof(InFile) do begin Readln(InFile, Line); Process(Line); end;

while циклының операторы келесі формағ а ие:


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.015 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал