ELSE
END;
O’zgarmaslar tipi doim selektor tipiga tugri kelishi kerak . Selektor uchun real va string tiplari man etilgan.
CASE operatori kuyidagicha ishlaydi. Birinchi navbatda selektor- ifoda kiymati xisoblanadi, keyingi navbatda joriy selektor kiymatiga teng bulgan o’zgarmas katnashgan operator bajariladi. Agar xech kaysi o’zgarmas selektorning joriy kiymatiga teng bulmasa ELSE suzidan keyingi operator bajariladi. Agar ELSE suzi bulmasa END suzidan keyingi operator ishga tushadi,ya’ni CASE chegarasidan keyingi operator.
Selektor butun sonli ( -32768..32767 diapazonida bulgan) bulev, liter yeki foydalanuvchi tipiga boglik bulishi kerak .
O’zgarmas kiymatlar ruyxati tasodifiy kiymat yeki diapazondan iborat, ular bir-biridan vergul yerdamida ajratiladi. Diapazon chegaralari ikkita biri-biridan ".." belgisi yerdamida ajratilgan uzgaramas sonlar yerdamida yeziladi. O’zgarmaslar tipi selektor tipiga tugri kelishi kerak.
Kuyida CASE operatorining tipik yezilish tartibi ko’rsatilgan:
Interval tipli selektor :
CASE I OF
1..10: Writeln ('rakam ', I:4, ' diapazon 1 - 10');
11..20: Writeln ('rakam ', I:4, ' diapazon 11 - 20');
21..30: Writeln ('rakam ', I:4, ' diapazon 21 - 30')
ELSE Writeln ('chislo ', I:4, ' kontrolya chegarasidan tashkarida')
END;
Butun son tipli selektor :
CASE I OF
1: Z := I + 10;
2: Z := I + 100;
3: Z := I + 1000
END;
Foydalanuvchi xisob tipli selektor:
VAR
Season: (Winter, Spring, Summer, Autumn);
BEGIN
... CASE Season OF
Winter: Writeln('Winter');
Spring: Writeln('Spring');
Summer: Writeln('Summer');
Autumn: Writeln('Autumn')
END;
END;
Qaytarish operatorlari
Sikl, kaytarish operatorlari, sikl sarlavxasi va tanasi
FOR, REPEAT, WHILE kaytarilish operatorlari ixar xil tipli sikllarni yaratishda ishlatiladi.
FOR kaytarilish operatori sikl sarlavxasi va tanasidan iborat. U ikkita formatda bulishi mumkin:
FOR < sikl parametri> := TO DO ;
FOR < sikl parametri > := DOWNTO DO ;
S1 va S2 - ifodalar, sikl parametrining bosh va oxirgi kiymatini aniklaydi. FOR ... DO - sikl sarlavxasi, - sikl tanasi. Sikl tanasi sodda yoki tarkibiy operatordan iborat bulishi mumkin. FOR operatori siklning parametrlari bosh va oxirgi kiymatlari bajarilib bulguncha sikl tanasini ishini boshqaradi.
Misol:
FOR I:= 1 TO 100 DO Read(M[I]); { massiv elementlarini ukish}
FOR I:= 100 DOWNTO 1 DO Write(M[I]); { massiv elementlarini chiqarish }
Sikl parametri, uning bosh va oxirgi kiymati berilganlarning bitta tipiga karashli bulishi kerak. Bunda xoxlagan skalyar tip katnashishi mumkin, xakiykiydan tashkari.
REPEAT kaytarish operatori REPEAT sarlavxadan, tanadan va UNTIL shartdan iborat.
Yozilishi:
REPEAT
...
UNTIL ;
REPEAT va UNTIL suzlari orasidagi operatorlar, sikl tanasi xisoblanadi. Eng avvalo sikl tanasi bajariladi, keyngi navbatda sikldan chikish sharti tekshiriladi. Agar bulev ifodaning natijasi False ga teng bulsa, u xolda sikl tanasi yana bir bor aktivlashadi, agar natija True ga teng bulsa - sikldan chikiladi. Sikl operatorlaridan xech bulmaganda bittasi shart kiymatiga ta’sir ko’rsatishi kerak, aks xolda sikl tuxtamaydi.
Kuyidagi fragmentda Y va N tugmachalari bosishni kutishda REPEAT operatori ishlatilishi ko’rsatilgan. Boshqa tugmachalar bosilishi ta’sir kilmaydi:
USES Crt;
VAR
YN: char;
BEGIN
...
REPEAT
YN:= ReadKey
UNTIL UpCase(YN) IN ['Y','N'];
...
END.
WHILE operatori xuddi REPEAT operatoriga uxshaydi, lekin sikl tanasining bajarilish sharti operator boshida tekshiriladi.
Formati:
WHILE DO
< sikl tanasi>;
Shart - bulev ifoda, sikl tanasi - sodda yoki tarkibiy operator. Sikl tanasi xar bir bajarilishidan oldin shart ifodasining kiymati xisoblanadi. Agar natija True ga teng bulsa, sikl tanasi bajariladi va yana shart ifodasi xisoblanadi. Agar natija False ga teng bulsa, sikldan chikiladi va WHILE dan keyingi birinchi operatorga utiladi.
WHILE ishlash tartibini kurish uchun DemoWhile dasturi misol bula oladi, bu programma 10 tasodifiy kiritilgan butun sonlar yigindisini xisoblaydi.
PROGRAM DemoWhile;
CONST
Limit = 10; { kiritiladigan sonlar mikdori chegarasi }
VAR
Count, Item, Sum: integer;
BEGIN
Count:= 0;
Sum:= 0;
WHILE (Count < Limit) DO BEGIN { sikl bajarilish sharti}
Count:= Count+1;
Write('Butun ', Count, '-chi sonni kiriting: ');
Readln(Item); Sum:= Sum+Item;
END;
Writeln('Kiritilgan sonlar yigindisi teng ', Sum);
END.
Xizmatchi so`z va iboralar: REPEAT va UNTIL ,FOR, REPEAT, WHILE,CASE I OF,IF,THEN, ELSE
Savol va Topshiriqlar: