Takrorlash bilimning asosidir. Ustozlar o‘gitidan 4-BOB. CHIZIQLI TUZILMALI DASTURLAR TUZISHGA OID MASALALAR
Quyidagi masalalar yechimlari chiziqli tuzilmali dastur ko‘rinishida tashkil etiladi. Ba’zi masala va misollar yechimi bir necha usulda, ba’zilarini yechish uchun esa faqatgina yo‘llanmalar keltiramiz. Avval masalani yo‘llanmadan foydalanmay yechishni, sodda tuyulsada * bilan belgilangan masalalarga e’tibor qaratishni maslahat beramiz. Agar shartda “go‘zal chiqaring” iborasi uchrasa, u holda dasturchi ma’lumotlarni ekranga o‘zi yoqtirgan ranglarda, ekranning biror joyida va chiqarish formatidan foydalangan holda chiqarishi ko‘zda tutiladi.
1-§. MA’LUMOTLARNI KIRITISH, O‘ZLASHTIRISH VA CHIQARISHGA OID MASALALAR
A son berilgan. Sonni qiymatini ekranga chiqaring.
Yechim:
Misol shartida “son berilgan” iborasi yozilgani uchun Read(A) yoki ReadLn(A) protsedurasidan foydalaniladi. Sonli A o‘zgaruvchi miqdorning turi haqida ma’lumot berilmagan, shunga ko‘ra uni Real turda tavsiflanadi. Son qiymatini ekranga chiqarish uchun Write yoki WriteLn protsedurasidan foydalanish mumkin.
Dasturi:
Var
A : Real;
Begin
ReadLn(A);
Write(‘Sonning qiymati= ’, A); End.
A son berilgan. Sonni izoh bilan kiritib qiymatini ekranga yashil rangda chiqaring (yo‘llanma: “izoh bilan” iborasi yozilgani uchun Write(‘A= ‘); ReadLn(A); protseduralaridan foydalaniladi, ma’lumotlarni ekranga yashil rangda chiqarish uchun Crt modulining TextColor(green) protsedurasidan foydalaniladi). 3*. Berilgan A sonni izoh bilan kiritib qiymatini oq ekranga qizil rangli izoh bilan chiqaring.
Yechim:
Dasturning asosiy qismi 1-misol kabi tuziladi. Ekranni to‘liq oq rangga bo‘yash
uchun Crt modulining Textback-
ground(white) va ClrScr protseduralaridan
Dasturi:
Uses Crt;
Var A: real;
Begin Textbackground(white);
Clrscr;
Write(‘Sonning qiymatini kiriting: ’);
“o‘rnida” foydalaniladi. Ma’lumotlarni ekranga qizil rangda chiqarish uchun TextColor(red) protsedurasi qo‘llanadi.
A son berilgan. Sonni izoh bilan kiritib qiymatini sariq rangli izoh bilan ekran markazida chiqaring (yo‘llanma: ma’lumotlarni ekran markazidan chiqarish uchun Crt modulining GotoXY(A,B) protsedurasidan foydalaniladi).
A son berilgan. Sonni izoh bilan kiritib qiymatini ko‘k rangli izoh bilan ekranning o‘ng tomonida chiqaring.
A son berilgan. Sonni izoh bilan kiritib qiymatini yarmini yashil ekranga qizil rangli izoh bilan chiqaring.
A son berilgan. Sonni izoh bilan kiritib qiymatini choragini sariq ekranga qizil rangli izoh bilan chiqaring. 8. Quyidagi ifodani hisoblash dasturini tuzing: A=555·91+7777/11 (yo‘llanma: bo‘linma qatnashgani uchun sonli A o‘zgaruvchi miqdor Real turda tavsiflanadi).
A son berilgan. B=21A+7 ifoda qiymatini ekran markazida qizil ekranda oq rangli izoh bilan chiqaring.
A va B son berilgan. Sonlar yig‘indisi qiymatini ekranga izoh bilan chiqaring.
A va B son berilgan. Sonlar ayirmasi qiymatini ekranga izoh bilan sariq rangda chiqaring.
A va B son berilgan. Sonlar ko‘paytmasi qiymatini qizil ekranga oq izoh bilan ko‘k rangda chiqaring.
A va B son berilgan. M=21A+19B ifoda qiymatini sariq ekranga ko‘k izoh bilan oq rangda chiqaring.
14*. B son va manfiymas M son berilgan. A=(19B–23M): (5M+10) ifoda qiymatini turli rang va izoh bilan ekranga chiqaring.
Yechim:
Ifodada bo‘linma qatnashgani uchun “M ning biror qiymatida mahraj 0 ga teng bo‘ladimi?” degan savolga javob chiziqli tuzilmali dasturni boshqalaridan farqlab turadi. Chunki, agar M ning biror qiymatida ifoda aniqlanmagan bo‘lsa, ya’ni mahraj 0 ga teng bo‘lsa, u holda shu qiymatda kompilyator “Error 200: Division by zero.” xatolik xabarini beradi. Bu dastur xato tuzilganini bildiradi. Masala shartida “manfiymas M son” deyilgan, ya’ni M≥0, shuning uchun 5M+10≥10>0 bo‘ladi. Demak, M ning masala shartiga mos har qanday qiymati uchun bo‘linma aniqlangan.
Ifodadagi amallarni sodda amallar ketma-ketligi bilan almashtirish ham mumkin: surat G va mahrajni F kabi belgilasak, u holda A=G/F bo‘ladi.
Dasturi:
Var A, B, M: real;
Begin Write(‘B ning qiymatini kiriting: ’);
ReadLn(B);
Write(‘M ning qiymatini kiriting: ’);
Dasturi:
Var A, B, M, G, F: real;
Begin Write(‘B ning qiymatini kiriting: ’);
ReadLn(B);
Write(‘M ning qiymatini kiriting: ’);
15*. B son va 2 dan kichik bo‘lmagan M son berilgan. A=(19B–23M): (M1963–
2012) ifoda qiymatini ekranga go‘zal chiqaring (eslatma: M ≥ 2 shartga asosan M1963–2012 ≥ 1914 > 0 bo‘lgani uchun bo‘linma aniqlangan).
16*. A∙x+B=0 tenglamaning noldan farqli A va haqiqiy B koeffitsiyentlari berilgan. Noma’lum x ni aniqlang (yo‘llanma: A noldan farqli, u holda x= –B/A).
A va B haqiqiy sonlar berilgan. Bu sonlar o‘rta arifmetigi qiymatini toping (yo‘llanma: A va B sonning o‘rta arifmetigi UA=(A+B)/2).
A va B haqiqiy sonlar berilgan. Bu sonlar kublarining o‘rta arifmetigi qiymatini toping (yo‘llanma: X sonning kubini Paskalda X*X*X yoki sqr(X)*X kabi yozish mumkin).
19*. A, B, G haqiqiy sonlar berilgan. Bu sonlar o‘rta arifmetigi qiymatini toping (yo‘llanma: A, B va G sonning o‘rta arifmetigi UA=(A+B+G)/3).
20. A va B haqiqiy sonlar berilgan. Bu sonlar modullarining o‘rta geometrigi qiymatini toping (yo‘llanma: A va B sonning o‘rta geometrigi UG= AB ).
21*. A, B, G haqiqiy sonlar berilgan. Bu sonlar kvadratlarining o‘rta geometrigi qiymatini toping (yo‘llanma: A, B va G sonlarning o‘rta geometrigi