Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AEP_LEKTsII.doc
Скачиваний:
90
Добавлен:
28.03.2015
Размер:
1.27 Mб
Скачать

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 Лекция

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.

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