Informatika-9-A,B. 35 – dars.
Mavzu: Shart bo‘yicha takrorlash operatorlari
Maqsad:
1) ta’limi: O`quvchilarga shart bo`yicha takrorlash operatorlari haqida tushuncha berish;
2) tarbiyaviy: O`quvchilarga iqtisodiy tejamkorlik va estetik tarbiya berish;
3) rivojlantiruvchi: O`quvchilarning dasturlash ko`nikmalarini rivojlantirish;
DTS: Shart bo`yicha takrorlash operatorlari — “While” va “Repeat” haqida tushunchaga ega bo`lish.
Darsni borishi:
I. Tashkiliy davr
1) salomlashish;
2) davomatni aniqlash.
II. Takrorlash
1. Takrorlanuvchi algoritmlarga misollar keltiring.
2. Parametrli takrorlash operatorining ko'rinishi qanday?
3. Parametrli takrorlash operatori qachon qo'llaniladi?
4. Takrorlash parametri qanday qiymatlarni qabul qiladi?
5. Takrorlash parametrining qiymatlari chegaralanganmi?
6. Takrorlash operatorining ishlashini tushuntiring.
7. Qay holatda To yoki Downto xizmatchi so'zlari ishlatiladi?
III. Yangi mavzuni o`rgansih.
Avvalgi ko‘rgan misollarimizda 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 avvaldan 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 <shart> Do <takrorlanish tanasi>;
bu yerda While (ing. toki) va Do Paskalning xizmatchi so‘zlari; <shart> – oddiy yoki murakkab mantiqiy ifoda; <takrorlanish tanasi> – takrorlanishi lozim bo`lgan 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 teksiriladi. Bu jarayon shart yolg‘on qiymat qabul qilgunga qadar davom etadi.
1–misol. Ikkita sonning eng katta umumiy bo‘luvchisini (EKUB) 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
<takrorlanish tanasi>
Until <shart>
bu yerda Repeat (ing. takrorlash) va Until (ing. gacha) Paskalning xizmatchi so‘zlari bo‘lib, Repeat – takrorlash boshi, Until – takrorlash oxirini bildiradi; <shart> – oddiy yoki murakkab mantiqiy ifoda. Takrorlanish tanasi shart rost qiymat qabul qilgungacha bajarilaveradi.
2–misol. S = 1,1+1,5+1,9+2,3+…+45,5 yig’indini hisoblash dasturini tuzing.
Yechish. Misolni tahlil qilib qo’shiluvchilar 0,4 ga farq qilishini aniqlaymiz. 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 generatori (Random) dan foydalanib, ekranga har xil rangda “A” harfini chiqaruvchi dastur tuzing. Qizil rangli “A” chiqishi bilan dastur ishi yakunlasin.
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) funksiyasini qo’llaymiz.
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 dasturni tuzamiz:
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 ishlatish maqsadga muvofiq.
IV. Mustahkamlsh
1. Shart bo‘yicha takrorlash operatorlardan qaysilarini bilasiz?
2. While operatorining ishlashini izohlang.
3. Repeat operatorining ishlashini izohlang.
4. Shart bo‘yicha takrorlash operatorlarining parametrli takrorlash operatoridan farqi nimada?
5. Takrorlash operatorlarini qo‘llash qulay bo‘lgan hollarga mos qilib tushuntirig.
Mashqlar
1. Quyidagi operatorlardagi xatoliklarni aniqlang va izohlang.
a) while 5*6 do SH:=sqr(2); b) WHILE 5>6 do Od:=Od+1;
Javob: shart xato yozilgan. Javob: xato yo`q.
d) Repeat i<j Until s:=0; e) rEpEaT s:=0 UntiL s:=0;
Javob: shart xato yozilgan. Javob: shart xato yozilgan.
2. Quyidagi operatorlardagi takrorlanishlar sonini aniqlang.
a) x:= – 5; while X>0 do x:=x+2; b) x:= –5; while X<10 do begin x:=x+2; x:=2*x; end;
javob: 0 Javob: cheksiz ko`p
d) i:=0; while i*i <=1.2 do i:=i+0.1; e) k:=5; while k /5 <= 2.5 do k:=k+1.5;
Javob: 11 Javob: 6 marta
4. funksiyaning qiymatlarini [-p,p] oraliqda 0.3 qadam bilan hisoblash dasturini tuzing.
Program
x,y: real;
begin
x:=pi;
repeat y:=x*sin(x); x:=x+0.3 until x>pi
readln;
end.
5*. N natural son va A1, A2, …, AN butun sonlar ketma-ketligi berilgan. Ularni ketma-ket qo‘shib borib, yig‘indi berilgan N butun sondan ortishi bilan ekranga chiqaruvchi dastur tuzing. Agar barcha sonlar yig‘indisi N dan oshmasa, bu haqida xabar chiqarilsin.
Program
Var s,n,i: integer;
A: array[1..100];
Begin
Write(‘N natural sonni kiriting N=’); readln(n);
For i:=1 to n do
begin Write(i,’-sonni kiriting=); readln(a[i]);end;
while (s<=n) and (i<=n) do begin s:=s+a[i]; i:=i+1; end;
if s>n then writeln(‘S=’,s) else writeln(‘Yig`indi N dan ortmadi’);
readln;
end.
V. Uyga vazifa
3. N natural son berilgan. Kvadrati N dan katta bo‘lmagan barcha natural sonlarni chiqaruvchi dastur tuzing.
Program
Var I, N: integer;
Begin
Write(‘N natural sonni kiririting=’); Readln(n);
I:=1;
While i*i<=N do writeln(i):
Readln;
End.
© ООО «Знанио»
С вами с 2009 года.