2.22Кайтариш операторлари
Цикл, кайтариш операторлари, цикл сарлавхаси ва танаси
FOR, REPEAT, WHILE кайтарилиш операторлари ихар хил типли циклларни яратишда ишлатилади.
FOR кайтарилиш оператори цикл сарлавхаси ва танасидан иборат. У иккита форматда булиши мумкин:
FOR < цикл параметри> := TO DO <оператор>;
FOR < цикл параметри > := DOWNTO DO <оператор>;
S1 ва S2 - ифодалар, цикл параметрининг бош ва охирги кийматини аниклайди. FOR ... DO - цикл сарлавхаси, <оператор> - цикл танаси. Цикл танаси содда ёки таркибий оператордан иборат булиши мумкин. FOR оператори циклнинг параметрлари бош ва охирги кийматлари бажарилиб булгунча цикл танасини ишини бошкаради.
Мисол:
FOR I:= 1 TO 100 DO Read(M[I]); { массив элементларини укиш}
FOR I:= 100 DOWNTO 1 DO Write(M[I]); { массив элементларини чикариш }
Цикл параметри, унинг бош ва охирги киймати берилганларнинг битта типига карашли булиши керак. Бунда хохлаган скаляр тип катнашиши мумкин, хакийкийдан ташкари.
REPEAT кайтариш оператори REPEAT сарлавхадан, танадан ва UNTIL шартдан иборат.
Ёзилиши:
REPEAT
<оператор;>
...
<оператор>
UNTIL <шарт>;
REPEAT ва UNTIL сузлари орасидаги операторлар, цикл танаси хисобланади. Энг аввало цикл танаси бажарилади, кейнги навбатда циклдан чикиш шарти текширилади. Агар булев ифоданинг натижаси False га тенг булса, у холда цикл танаси яна бир бор активлашади, агар натижа True га тенг булса - циклдан чикилади. Цикл операторларидан хеч булмаганда биттаси шарт кийматига таъсир курсатиши керак, акс холда цикл тухтамайди.
Куйидаги фрагментда Y ва N тугмачалари босишни кутишда REPEAT оператори ишлатилиши курсатилган. Бошка тугмачалар босилиши таъсир килмайди:
USES Crt;
VAR
YN: char;
BEGIN
...
REPEAT
YN:= ReadKey
UNTIL UpCase(YN) IN ['Y','N'];
...
END.
WHILE оператори худди REPEAT операторига ухшайди, лекин цикл танасининг бажарилиш шарти оператор бошида текширилади.
Формати:
WHILE <шарт> DO
< цикл танаси>;
Шарт - булев ифода, цикл танаси - содда ёки таркибий оператор. Цикл танаси хар бир бажарилишидан олдин шарт ифодасининг киймати хисобланади. Агар натижа True га тенг булса, цикл танаси бажарилади ва яна шарт ифодаси хисобланади. Агар натижа False га тенг булса, циклдан чикилади ва WHILE дан кейинги биринчи операторга утилади.
WHILE ишлаш тартибини куриш учун DemoWhile дастури мисол була олади, бу программа 10 тасодифий киритилган бутун сонлар йигиндисини хисоблайди.
PROGRAM DemoWhile;
CONST
Limit = 10; { киритиладиган сонлар микдори чегараси }
VAR
Count, Item, Sum: integer;
BEGIN
Count:= 0;
Sum:= 0;
WHILE (Count < Limit) DO BEGIN { цикл бажарилиш шарти}
Count:= Count+1;
Write('Бутун ', Count, '-чи сонни киритинг: ');
Readln(Item); Sum:= Sum+Item;
END;
Writeln('Киритилган сонлар йигиндиси тенг ', Sum);
END.
Do'stlaringiz bilan baham: |