Darsning borishi va vaqt taqsimoti
|
Dars bosqichlari
|
Vaqt
|
1
|
Tashkiliy qism
|
3 daqiqa
|
2
|
O'tilganlarni takrorlash
|
7 daqiqa
|
3
|
Yangi mavzu ustida ishlash
|
14 daqiqa
|
4
|
Yangi mavzuni mustahkamlash
|
13 daqiqa
|
5
|
Uyga vazifa
|
3 daqiqa
|
O’tilgan mavzuni takrorlash.
1. Takrorlanuvchi algoritmlarga misollar keltiring.
2. Parametrli takrorlash operatorining ko'rinishi qanday bo'ladi?
3.Takrorlash parametri qanday qiymatlarni qabul qiladi?
4.Parametrli takrorlash operatorining boshlang'ich va oxirgi qiymatlarini izohlang.
5.Takrorlash parametrining qiymatlari chegaralanganmi?
6.Takrorlash operatorining ishlashini tushuntiring.
7.Qanday vaziyatda To o'rniga Downto xizmatchi so'zi qo'llaniladi?
Yangi mavzu bayoni.
Avvalgi ko'rilgan misollarda takrorlanishlar soni aniq edi. Ammo shunday masalalar ham uchraydiki, ularda biror amallar ketma-ketligini ma'lum bir shart bajarilganda takrorlash kerak bo'ladi. Bunda takrorlanishlar sonini awaldan aytib bo'lmaydi. Bunday hollarda shart bo'yicha takrorlash operatorlaridan foydalaniladi. Paskalda bunday operatorlar ikkita: While va Repeat.
While operatori quyidagi umumiy ko'rinishga ega: While Do ; bu yerda While (ing. toki) va Do Paskalning xizmatchi so'zlari; — oddiy yoki murakkab mantiqiy ifoda; — takrorlash tanasini tashkil etuvchi operator yoki operatorlar ketma- ketligi. Agar takrorlanish tanasida operatorlar ketma-ketligi yozilsa, ular begin bilan boshlanib, end; bilan yakunlanadi.
Mazkur takrorlash operatori quyidagicha ishlaydi:
Avval shart tekshiriladi. Agar uning qiymati rost bo'lsa, takrorlash tanasini tashkil etuvchi operatorlar ishlaydi va yana shart tekshiriladi. Bu jarayon shart yolg'on qiymat qabul qilgunga qadar davom etadi.
1-misol. Ikkita sonning eng katta umumiy bo'luvchisi (EKUB)ni topuvchi dastur tuzing.
Yechish. EKUB topishning eng qulay usuli — Evklid algoritmi. Bu algoritm sizga avvalgi bobdan tanish. Dasturi quyidagicha:
Program EKUB;
Var a, b : Integer;
Begin
Write('Birinchi sonni kiriting: '); ReadLn(a);
Write('Ikkinchi sonni kiriting: '); ReadLn(b);
While a<>b Do If a>b Then a:=a~b Else b:=b~a; {a=b bo'lganda takrorlash tugaydi}
WriteLn('EKUB= a);
End.
Repeat operatori ham shart bo'yicha takrorlashni amalga oshiradi. Uning umumiy ko'rinishi quyidagicha:
Repeat
Until
bu yerda Repeat (ing. takrorlash) va Until (ing. gacha) Paskalning xizmatchi so'zlari bo'lib, Repeat — takrorlash boshi, Until — takrorlash oxirini bildiradi; — oddiy yoki murakkab mantiqiy ifoda. Takrorlanish tanasi shart rost qiymat qabul qilgungacha bajarilaveradi.
2-misol. 5= 1,1 + 1,5 + 1,9+2,3 + ...+45,5 yig'indining hisoblash dasturini tuzing.
Yechish. Misolni tahlil qilib qo'shiluvchilar 0,4 ga farq qilishi aniq- lanadi. Parametrli takrorlash operatorida parametr qiymati haqiqiy bo'la olmaydi. Bu holda shart bo'yicha takrorlash operatorlaridan foydalanish qulay. Quyidagi ikkala yechimni taqqoslab ko'ring.
While yordamida
|
Repeat yordamida
|
Program
Summ_real;
Var J, S: real;
Begin
S:=0;J:=1.1;
While J<= 45.5 do begin S:=S+J; J:=J+0.4; end;
WriteLn('S=’,S);
End.
|
Program Summ_real;
Var J,S: real;
Begin S:=0;J:=1.1;
Repeat S:=S+J; J:=J+0.4;
Until J>=45.5;
WriteLn('S=’, S);
End.
|
3- misol. Tasodifiy sonlar generator! (Random) dan foydalanib, ekranga har xil rangda «A» harfini chiqaruvchi dastur tuzing. Qizil rangli «A» belgisi chiqishi bilan dastur ishi yakunlansin.
78
Yechish. Paskalda ranglar 0 dan 15 gacha butun sonlar bilan kodlanishi
ma'lum. Tasodifiy sonlar generatori bo'lgan Random(x) funksiyasi [0, x) oraliqdan tasodifiy sonlarni olib beradi. Shuning uchun [0, 15] oraliqdagi butun sonlarni tasodifan olish uchun Random(16) funksiyasi qo'llaniladi.
Shuni ta'kidlash lozimki, Random(x) funksiyasi har safar dastur ishga tushirilganda bir xil sonlar ketma-ketligini hosil qiladi. Turli sonlarni hosil qilish uchun Randomize operatoridan foydalaniladi. Bu operator dasturda Random funksiyasidan avval yozilishi kerak. Qizil rang kodi 4 ga tengligini hisobga olib, quyidagi dastur tuziladi: Program Rangli_harflar; Uses Crt; Var rang : Integer; Begin
Randomize;
Repeat
rang:= Random(15); TextColor(rang); Write('A');
Until rang=4; {rang=4 (qizil) bo'lsa
takrorlash operatoridan chiqiladi} End.
Repeat operatorining While operatoridan birinchi farqi shundaki, While operatorida shart takrorlash boshida tekshirilsa, Repeat operatorida shart takrorlash oxirida tekshiriladi. Shu sababli While operatorida takrorlash tanasini tashkil etuvchi operatorlar bir marta ham bajarilmasligi mumkin (shart avvaldan bajarilmasa), Repeat operatorida esa hech bo'lmaganda bir marta bajariladi. Ikkinchi farqi While operatorida takrorlanish shart bajarilmaganda («yolg'on» qiymat qabul qilganda) yakunlansa, Repeat operatorida takrorlanish shart bajarilganda («rost» qiymat qabul qilganda) yakunlanadi.
Yuqoridagi 1-misolda avval shart tekshirilishi zarur. Shu sababli unda While operatoridan foydalanildi. 3-misolda esa avval rang qiymati aniqlanib, keyin shart tekshirilishi kerak. Shu bois unda Repeat operatori qo'llanildi. Umuman olganda, 1-misolda Repeat operatoridan, 3-misolda esa While operatoridan foydalansa ham bo'ladi. Faqat bu holda dasturga ba'zi qo'shimcha operatorlar kiritish lozim bo'ladi. Ammo dastur «chiroyli» va «tushunarli» ko'rinishga ega bo'lishi uchun While va Repeat operatorlarini o'z o'rnida qo'llash maqsadga muvofiq.
|