O’quv yillarining II chorakida informatika fanidan 8-9 sinflarda aniqlangan bo’shliqlar bo’yicha mavzular - bet 2

bu yerda Write (ing. – yozmoq) va Writeln Paskalning xizmatchi so‘zlari; chiqarish ro‘yxati – o‘zaro vergul bilan ajratilgan va ekranga chiqarilishi kerak bo‘lgan ifoda, o‘zgaruvchi yoki o‘zgarmaslar ketma-ketligi. Chiqarish ro‘yxatida ifoda qatnashsa, avval ifoda hisoblanib, hosil bo‘lgan natija ekranga chiqariladi. Chiqarish ro‘yxatidagi o‘zgarmaslar belgili yoki satrli bo‘lsa, albatta apostrof ichiga olinishi shart.
Write va Writeln operatorlarining farqi shundaki, Write operatori yordamida ma’lumotlar ekranga chiqarilgach yurgich ekranning shu satrida qoladi va ekranga chiqariladigan keyingi ma’lumotlar shu satrga yurgich turgan joydan boshlab chiqariladi. Writeln operatorida esa ma’lumotlar ekranga chiqarilgach yurgich keyingi satr boshiga o‘tadi.
Biz avvalgi darslarda axborotlarni ekranga chiqarish usullari bilan tanishdik. Bu usullarda axborotning har biri ekranga o‘zidan avval chiqarilgan axborotning davomidan chiqariladi. Lekin, Paskal dasturlash tilida axborotlarni ekranning ko‘rsatilgan joyidan chiqarish imkoniyati ham mavjud. Bundan tashqari, ekranga chiqarilayotgan belgilarni, hamda ularning fonini har hil ranglarda berish ham mumkin. Aytib o‘tilganidek, Paskalning ekran bilan ishlashga yo‘naltirilgan operator va funksiyalari Crt modulida joylashgan. Shu sababli ulardan foydalanish uchun ushbu modulga murojaat qilish lozim. Buning uchun dastur boshida Uses Crt; ko‘rsatmasi beriladi.
Crt moduli ekranga rangli axborot chiqarish imkonini berar ekan, qanday ranglardan foydalanish mumkinligini bilib olaylik. Paskalda, asosan, 16 xil rang ishlatilshi mumkin. Ular 0 dan 15 gacha butun sonlar bilan kodlangan. Crt modulida bu sonlarga mos konstantalar ham ajratilgan. Bu konstantalarning nomlari ularga mos ranglarning ingliz tilidagi ifodasi bilan mos keladi.
Quyidagi jadvalda Paskalda qo‘llaniladigan ranglarning kodlari va ularga mos konstantalar nomlari keltirilgan:
Rang
|
Kodi
|
Konstanta nomi
|
|
Rang
|
Kodi
|
Konstanta nomi
|
Qora
|
0
| Black |
|
To‘q kulrang
|
8
| DarkGray |
Ko‘k
|
1
|
Blue
|
|
Havorang
|
9
|
LightBlue
|
Yashil
|
2
|
Green
|
|
Och yashil
|
10
|
LightGreen
|
Billur
|
3
|
Cyan
|
|
Och billur
|
11
|
LightCyan
|
Qizil
|
4
|
Red
|
|
Och qizil
|
12
|
LightRed
|
Siyoxrang
|
5
|
Magenta
|
|
Och siyoxrang
|
13
|
LightMagenta
|
Jigarrang
|
6
|
Brown
|
|
Sariq
|
14
|
Yellow
|
Och kulrang
|
7
|
LightGray
|
|
Oq
|
15
|
White
|
Biror rangni tanlash uchun Paskalning maxsus operatorlari yordamida qavs ichida shu rangning kodi yoki unga mos konstanta nomi ko‘rsatiladi. Ranglar matn va fon uchun turlicha tanlananishi maqsadga muvofiq, aks holda matn fon ichida ko’rinmay qoladi. Matn va fon uchun belgilangan oxirgi ranglar mos ravishda matnning joriy rangi va fonning joriy rangi deyiladi. Agar avvaldan biror rang tanlanmagan bo‘lsa, matn uchun oq, fon uchun esa qora rang joriy hisoblanadi.
Endi Crt moduli tarkibiga kirgan ba’zi operator va funksiyalari bilan tanishamiz. Matn va matn foni rangi bilan ishlaydigan operatorlar quyidagilar:
Matn rangini belgilaydigan operator
|
Matn foni rangini belgilaydigan operator
|
TextColor(rang);
|
TextBackGround(rang);
|
bu yerda rang – o‘garuvchi yoki o‘zgarmas miqdor bo‘lib, tanlangan rang kodi yoki konstanta nomini ifodalaydi.
1–misol.
Uses Crt;
Begin
TextColor(14); {yoki TextColor(yellow) }
WriteLn(‘Bu matn ekranga sariq rangda chiqadi‘);
End.
|
|
2–misol.
Uses Crt;
Begin
TextColor(Yellow); TextBackGround(Blue);
WriteLn(‘ Bu matn ekranga ko‘k fonda sariq rang bilan chiqadi‘);
End.
|
|
Ba’zan ekranda ma’lumotlar ko’payib ketganidan keraklisini topish qiyinlashadi. Bunday holda qo’llangan ClrScr operatori ekranni tozalaydi va yurgichni ekran boshiga (chap yuqori burchagiga) o‘rnatadi. Agar dasturda ClrScr operatori matn foni rangidan keyin yozilsa, u holda ekran matn foni rangiga bo‘yaladi.
3–misol.
Uses Crt;
Begin
ClrScr; {ekran tozalanib, yurgich ekran boshiga o‘rnatiladi}
TextColor(14); TextBackGround(2);
WriteLn(‘Bu matn yashil fonda sariq rang bilan chiqadi‘);
End.
|
|
4–misol.
Uses Crt;
Begin
TextColor(14); TextBackGround(2);
ClrScr; {ekran tozalanib, ekran rangi yashilga bo‘yaladi va yurgich ekran boshiga o‘rnatiladi}
WriteLn(‘Bu matn yashil ekranga sariq rang bilan chiqadi‘);
End.
|
|
Odatda, chiziqli algoritmlarning dastur shaklida yozilishi chiziqli dastur deb ataladi. Demak, chiziqli dasturdagi barcha operatorlar ketma-ket kelish tartibida bajariladi va xech qanday shart tekshirilmaydi.
1–misol. Radiusi R bo‘lgan aylananing uzunligini hisoblash dasturi tuzilsin va R=9 birlik qiymat uchun bajarilsin.
Yechish: Aylananing uzunligini hisoblash formulasini esga olamiz: L=2πR. Paskal dasturlash tilida u S := 2*pi*R ko‘rinishga yoziladi. Dasturda bitta o’zgarmas pi va ikkita o‘zgaruvchi R va L qatnashadi. Masala shartiga ko‘ra R=9, ya’ni butun son. Shu sababli R o‘zgaruvchi turini Integer deb olamiz. Aylananing uzunligi L esa ko‘paytmada π qatnashgani uchun, albatta haqiqiy (Real) turli bo‘ladi. Aytilganlarni hisobga olib quyidagi dasturni tuzamiz:
Program aylana_uzunligi;
Var R:Integer; L:Real;
Begin
r := 9; L := 2*pi*R; WriteLn(‘L=‘,L,‘ birlik.‘); readln;
End.
Dastur ishga tushirilgach (Ctrl+F9 klavishalar juftligi bosilgach yoki Run menyusidan Run bandi tanlangach), ekranda quyidagi natija hosil bo‘ladi: L= 5.6548667765E+01 birlik.
Dasturda L – real turli bo‘lgani uchun natija eksponensial ko‘rinishda chiqdi. Agar chiqarish operatorida L:7:2 formatidan foydalansak radiusi 9 birlik bo‘lgan aylananing uzunligi 56,54 birlikka tengligi ko’rinadi.
Bu dastur yordamida ixtiyoriy butun radiusli aylananing uzunligini hisoblash mumkin. Faqat har safar dasturdagi R ning qiymatini o‘zgartirib turish lozim. Dasturga har safar o‘zgartirish kiritmaslik uchun R ning qiymatini kiritish operatori yordamida beramiz. Radiusning qiymati doim butun son bo‘lavermasligini inobatga olib, uni Real turdagi o‘zgaruvchi sifatida tavsiflaymiz. Bularni hisobga olib quyidagi dasturni tuzamiz:
Dasturi
|
Ekrandagi natija
|
Program aylana_uzunligi;
Var r, L : Real;
Begin
Write(‘Radiusni kiriting : ‘); ReadLn(r);
L := 2*pi*r; WriteLn(‘L= ‘,L,‘birlik.‘); readln;
End.
|
Radiusni kiriting : 9
L= 5.6548667765E+01 birlik
|
Bu dastur ishga tushirilgach, ekranga “Radiusni kiriting : ” yozuvi chiqadi va yurgich shu satrda qoladi. ReadLn operatori dastur bajarilishini to‘xtatib, R o‘zgaruvchiga qiymat berilishini kutadi. Klaviatura orqali radiusning sonli qiymati 9 ni kiritib Enter klavishi bosilsa, R o‘zgaruvchining qiymati 9 ga teng deb olinib dastur bajarilishda davom etadi. Natijada kompyuter ekranida izlangan natija hosil bo‘ladi. Dasturni qayta-qayta ishlatib, turli radiusli aylanalar uzunligini hisoblashni tashkil etishimiz mumkin.
2–misol. Tomonlari mos ravishda a, b, c bo‘lgan ixtiyoriy uchburchakning yuzini Geron formulasi orqali hisoblash dasturini tuzing va a=3, b=4, c=5 qiymatlarda hisoblang.
I usul
|
II usul
|
Program Uchburchak_yuzi;
Var a,b,c:Integer; {uchburchak tomonlari}
yp,s:Real; {yp-yarim perimetr, s-yuza}
Begin
a:=3; b:=4; c:=5; yp:=(a+b+c)/2;
s:=sqrt(yp*(yp-a)*(yp-b)*(yp-c));
WriteLn(‘S= ‘,s,‘ kvadrat birlik‘);
Readln;
End.
|
Program Uchburchak_yuzi;
Var a,b,c:Integer; {uchburchak tomonlari}
yp,s:Real; {yp-yarim perimetr, s-yuza}
Begin
Write(‘a,b,c ning qiymatlari kiritilsin ‘);
ReadLn(a,b,c); yp:=(a+b+c)/2;
s:=sqrt(yp*(yp-a)*(yp-b)*(yp-c));
WriteLn(‘S=‘,s:2:2,‘ kvadrat birlik‘); readln;
End.
|
S = 6.0000000000E+00 kvadrat birlik
|
a,b,c ning qiymatlari kiritilsin 3 4 5
S = 6.00 kvadrat birlik
|
3–misol. Tomonlari R bo‘lgan teng tomonli uchburchak, kvadrat va radiusi R ga teng doiraning yuzini hisoblash dasturini tuzing va R= 4 da hisoblang.
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 a>25 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<0 Then a:= a*a*a; {son manfiy bo’lsa kubi bilan almashtiriladi}
WriteLn(a); readln; {readln operatori dastur natijasini ko’rib olish uchun yozildi}
end.
Natijada o’quvchi bilimida bo’shliqlar paydo bo’lishi uchramasligi, bilim va ko’nikmaga ega bo’lishi kutiladi.0>
|