Informatika-9. 29 – dars.
Mavzu: O‘tish va tarmoqlanish operatorlari
Maqsad:
1) ta’limiy: o`quvchilarga o`tish va tarmoqlanish operatorlari haqida ma’lumot berish;
2) tarbiyaviy: O`quvchilarga iqtisodiy tejamkorlik tarbiyasi berish;
3) rivojlantiruvchi: o`quvchilarning dasturlash ko`nikmalarini rivojlantirish.
DTS: o`tish va tarmoqlanish operatorlari haqida ma’lumotga ega bo`lish.
Darsning borishi
I Tashkiliy davr.
II. Takrorlash.
III. Yangi mavzuni o`rganish.
Biz hozirgacha chiziqli, ya’ni buyruqlari ketma-ket bajariladigan dasturlar bilan tanishdik. Ba’zan berilgan masalani hal qilishda operatorlarning bajarilish tartibini buzishga, ya’ni boshqarishni dastur bo‘yicha orqaga yoki oldinga o‘tkazish zarur bo‘ladi. Buning uchun dasturda boshqarish uzatilayotgan operatorga nishon qo‘yiladi. Nishon o‘zgaruvchining nomi kabi lotin harflari va raqamlar yordamida hosil qilinadi. Masalan, 7, N1, nishon2. Ularda ishlatiladigan son 0 dan 9999 gacha bo’la oladi. Birinchi kelgan nollar hisobga olinmaydi.
Dasturda qo‘llaniladigan nishonlar dasturning tavsif qismida Label xizmatchi so‘zi yordamida ko‘rsatilishi shart. Nishonlardan dasturda o‘tish operatori qo‘llanilsagina foydalaniladi. O‘tish operatori quyidagi ko‘rinishga ega: GOTO ;, bu yerda GOTO (ing.– o‘tilsin) operatori boshqarishni dasturning oldiga nishon qo‘yilgan operatoriga uzatadi.
1–misol: Label N1; Var a,b,c:Integer; Begin a:=15; b:=13; c:=a+b; GoTo N1; {Boshqarish N1 nishonli operatorga uzatildi} c:=a–b; N1: WriteLn(c); End. | Bu dasturning ishlashi natijasida ekranda hosil bo‘lgan c ning qiymati 28 tengdir. Chunki, boshqarish N1 nishonli chiqarish operatoriga uzatilgani uchun c:=a–b amalni bajarmasdan o‘tkazib yuborildi. |
O‘tish operatorida hech qanday shart tekshirilmasdan boshqarish ko‘rsatilgan nishonli operatorga uzatiladi. Lekin aksariyat masalalarni hal etishda biror shartning bajarilishiga qarab u yoki bu amallar ketma-ketligini bajarish kerak bo‘ladi. Masalan, kvadrat tenglamani yechishda natijani hisoblash uchun diskriminantning ishorasiga qarab uch yo‘nalishdan biri tanlanadi. Bu izohlar tarmoqlanuvchi algoritmlar mavzusini yodingizga solgan bo’lishi kerak. Bunday masalalarni hal qilish uchun Paskalda tarmoqlanish operatori qo‘llaniladi.
Tarmoqlanish operatorining umumiy shakli quyidagicha:
If shart Then Else ;
Bu yerda if, then va else Paskalning xizmatchi so‘zlari bo‘lib, ularning o‘qilishi va ma’nosi quyidagicha: If (if) – “agar”, Then (zen) – “u holda”, Else (elz) – “aks holda”. Odatda, rost yoki yolg‘on qiymatlardan birini qabul qiluvchi mantiqiy ifoda; Paskalning ixtiyoriy operatori yoki operatorlari ketma-ketligidir. Shuni yodda tutingki, Else xizmatchi so‘zidan avval yozilgan operatordan keyin “;” (nuqtali vergul) qo‘yilmaydi.
Tarmoqlanish operatori quyidagicha ishlaydi: avval shart tekshiriladi, agar uning qiymati rost bo‘lsa then dan keyingi operator yoki operatorlar ketma-ketligi, aks holda else dan keyingi operator yoki operatorlar ketma-ketligi bajariladi.
2–misol. Kiritilgan son 25 dan katta bo‘lsa, ekranga “katta”, aks holda “katta emas” degan yozuvni chiqaruvchi dastur tuzing.
Yechish: Berilgan sonning turi ko‘rsatilmagani uchun, uni haqiqiy turda deb olamiz.
Program Taqqoslash;
Var a:Real;
Begin Write(‘Ixtiyoriy son kiriting: ‘); ReadLn(a);
If a25 Then WriteLn(‘Katta‘)
Else WriteLn(‘Katta emas‘);
End.
Tarmoqlanish operatorining qismlarini alohida satrlarda yozish ham mumkin..
Agar Then yoki Else so’zlardan keyin bajarilishi lozim bo`lgan ikki yoki undan ortiq operatorlar yozilgan bo‘lsa, bu operatorlar ketma-ketligi albatta begin xizmatchi so‘zi bilan boshlanib, end; xizmatchi so‘zi bilan tugallanishi lozim.
3–misol. Kiritilgan a sonni b songa ko’paytmasini va nisbatini hisoblovchi dastur tuzing.
Yechish: Berilgan sonlar turi ko‘rsatilmagani uchun, ularni haqiqiy turda deb olamiz.
Program Nisbat;
Label tamom;
Var a, b: Real;
Begin
Write(‘a sonni kiriting: ‘); ReadLn(a); Write(‘b sonni kiriting: ‘); ReadLn(b);
WriteLn(‘Ko`paytma: ‘, a*b);
If b=0 Then begin WriteLn(‘Bo`lishni bajarish mumkin emas‘); goto tamom; end;
WriteLn(‘ Bo`linma: ‘, a/b);
tamom: End.
Tarmoqlanish operatorining Else qismi zaruratga qarab ishlatiladi. Ya’ni, tarmoqlanish operatorini quyidagi shaklda ham ishlatish mumkin:
If Then
Bu tarmoqlanish operatorining qisqa shakli deyiladi. Bu holda shart ning qiymati rost bo‘lsa Then dan keyingi operator yoki operatorlar ketma-ketligi bajariladi, aks holda boshqarish navbatdagi (tarmoqlanish operatoridan keyingi) operatorga o‘tadi.
4–misol. Berilgan butun son manfiy bo’lsa, bu sonni kubi bilan almashtiruvchi dastur tuzing.
Yechish:
var a:Integer; {berilgan son}
begin Write(‘Ixtiyoriy butun son kiriting: ‘); ReadLn(a);
If a:= a*a*a; {son manfiy bo’lsa kubi bilan almashtiriladi}
WriteLn(a); readln; {readln operatori dastur natijasini ko’rib olish uchun yozildi}
end.
Tarmoqlanish operatori tarkibida yana tarmoqlanish operatori ishlatilishi mumkin.
5–misol. Sonning ishorasini aniqlovchi dastur tuzing.
Var a:Integer; b:String; {Bitta satrda bir nechta o‘zgaruvchini tavsiflash mumkin}
Begin
Write(‘Ixtiyoriy son kiriting: ‘); ReadLn(a);
If a:= ‘manfiy‘ Else If a0 Then b:= ‘musbat‘ Else b:= ‘nol‘;
WriteLn(b);
End.
6–misol. Ikkita sondan kattasini topish (IKT) dasturini tuzing.
Var a,b,katta:Real;
Begin
Write(‘Birinchi sonni kiriting = ‘); ReadLn(a);
Write(‘Ikkinchi sonni kiriting = ‘); ReadLn(b);
If ab Then katta:=a Else katta:=b; WriteLn(‘Katta son= ‘, katta);
End.
Bu dasturda ab shart bajarilishi yoki bajarilmasligidan qatiy nazar WriteLn(‘Katta son= ‘, katta) operatori albatta bajariladi. Chunki, u dasturda tarmoqlanish operatori bilan bir satrda yozilgan bo‘lsa ham uning tarkibiga kirmaydi. Nima uchun shundayligini o‘ylab ko‘ring!
IV. Mustahkamlash uchun savol va topshiriqlar
Nishon nima uchun qo‘llaniladi?
O‘tish operatorining umumiy ko‘rinishi qanday?
O‘tish operatori ishlatilgan dasturda nishonlar ishlatilmasligi mumkinmi?
Tarmoqlanish operatori nima uchun qo‘llaniladi?
Tarmoqlanish operatorida operatorlar ketma-ketligi ishtirok etsa, ular qanday xizmatchi so‘zlar orasida yoziladi?
Tarmoqlanish operatorining qisqa va to‘liq ko‘rinishlari haqida nimalar bilasiz?
Qaysi operatordan keyin nuqtali vergul yozilmaydi?
Mashqlar
1. Quyidagi o’tish operatorlaridan xato yozilganini aniqlang.
a) Goto 10; b) goto 30; d) goto –5; e) GoTo _5; f) goto sin; g) goto 2_5;
h) GOTO a_5;
2. Tarmoqlanish operatori uchun quyidagi taqqoslash shartlaridan xato yozilganini toping.
a) ab; b) ad) a; e) –a0; f) –10; g) ab; h) a:=b;
3. Quyidagilardan xato yozilganini toping.
a) IF a=b THEN a:=a+1; ELSE b:=a; b) IF a:=1 THEN a:=a+1 ELSE b:=a;
5. Uchta son berilgan. Ular ichidagi manfiy sonlarning kubini hisoblovchi dastur tuzing.
Var a: real;
Begin
Write(‘Sonni kiriting’); readln(a);
If a
Readln; end.
6. Berilgan butun son manfiy bo’lsa uning modulini hisoblash dasturi tuzilsin. Dasturni 2 xil usulda, modul hisoblash uchun abs(x) funksiyasidan foydalanib va foydalanmasdan, tuzing.
7. Parol “informatika” bo‘lsa, u holda parol to‘g‘ri kiritilganini tekshiruvchi dastur tuzing.
V. Uyga vazifa
4. x ning berilgan qiymatida
funksiya qiymatini hisoblash dasturini tuzing.