1-Mavzu. Axborotlarni kompyuter xotirasida tasvirlanishi Reja



Download 1,62 Mb.
Pdf ko'rish
bet42/80
Sana27.06.2022
Hajmi1,62 Mb.
#708480
1   ...   38   39   40   41   42   43   44   45   ...   80
Bog'liq
Maruza matni Dasturlash asoslari

8.4. if...else operatori.
Agar dastur bajarilishi jarayonida shartning natijasiga qarab u 
yoki bu amalni bajarish kerak bo‘lsa, shart operatorining ikki tomonlama tanlovli 
ko‘rinishidan foydalaniladi. SHart operatorining ikki tomonlama tanlovli ko‘rinishi -
if...else
quyidagicha sintaksisga ega: 
if ()
;
else

Bu erda 0 qiymatidan farqli yoki true bo‘lsa, 1
>, aks holda 
2
> bajariladi. 
if...else
shart operatori mazmuniga ko‘ra algoritmning 
tarmoqlanuvchi blokini ifodalaydi: - shart bloki (romb) va 1

blokning «ha» shoxiga, 2
> esa blokning «yo‘q» shoxiga mos keluvchi amallar 
bloklari deb qarash mumkin. 


53 
if...else
shart operatorining bajarilishi 
(ikki tomonlama tanlov) 
Quyida keltirilgan dasturda 
if...else
operatoridan foydalanish ko‘rsatilgan. 
#include  
using namespace std; 
int main() 
{int a, b, c; 
cin >> a >> b; 
if (a + b > 30) c = a + b; 
else c = a * b; 
cout << "c = " << c;
 
return 0;} 
Dastur bajarilishi jarayonida butun turdagi a va b o‘zgaruvchilariga mos ravishda 9 
va 13 sonlari kiritilsin. SHart tekshirilishi jarayonida a va b o‘zgaruvchilari qiymatlari 
qo‘shiladi va o‘ttiz sonidan kattaligi tekshiriladi. Agar natija o‘ttizdan katta bo‘lsa c 
o‘zgaruvchisiga a va b o‘zgaruvchilari qiymatlari yig‘indisi yuklanadi, aks holda ularning 
ko‘paytmasi yuklanadi. ekranga "c = 117" xabari chiqadi. 
C++ tilining qurilmalari operatorlarni blok ko‘rinishida tashkil qilishga imkon 
beradi. 
Blok
– ‗{‗ va ‗}‘ belgilari oralig‘iga olingan operatorlar ketma-ketligi bo‘lib, u 
kompilyator tomonidan yaxlit bir operator deb qabul qilinadi. Blok ichida e‘lon 
operatorlari ham bo‘lishi mumkin va ularda e‘lon qilingan o‘zgaruvchilar faqat Shu blok 
ichida ko‘rinadi (amal qiladi), blokdan tashqarida ko‘rinmaydi. Blokdan keyin ‗;‘ belgisi 
qo‘yilmasligi mumkin, lekin blok ichidagi har bir ifoda ‗;‘ belgisi bilan yakunlanishi shart. 

ifoda_1 
ifoda_2 



ifoda_n 

Masala. Berilgan to‘rt xonali ishorasiz sonning boshidagi ikkita raqamining 
yig‘indisi qolgan raqamlar yig‘indisiga teng yoki yo‘qligi aniqlansin (raqamlar yig‘indisi 


54 
deganda ularga mos son qiymatlarining yig‘indisi tushuniladi). Sonning raqamlarini ajratib 
olish uchun butun sonlar arifmetikasi amallaridan foydalaniladi: 
#include  
using namespace std; 
int main() 
{ unsigned int n, a3, a2, a1, a0;
cout << "\nn - qiymatini kiriting: "; cin >> n; 
if ((n < 1000) || (n > 9999)) cout << "Kiritilgan son 4 xonali emas!"; 
else 
{a3 = n / 1000; 
a2 = n % 1000 / 100; 
a1 = n % 100 / 10; 
a0 = n % 10;} 
if (a3 + a2 == a1 + a0) cout << "a3+a2 = a1+a0"; 
else cout << "a3+a2 != a1+a0";} 
return 0;} 
Dastur ishorasiz butun son kiritishni taklif qiladi. Agar kiritilgan son 
4
xonali 
bo‘lmasa (n < 1000) yoki (n > 9999), bu haqda xabar beriladi va dastur o‘z ishini tugatadi. 
Aks holda n sonining raqamlari ajratib olinadi, hamda boshidagi ikkita raqamning 
yig‘indisi - (a3+a2) qolgan ikkita raqamlar yig‘indisi - (a1+a0) bilan solishtiriladi va 
ularning teng yoki yo‘qligi qarab mos javob chop qilinadi.
SHart operatorida e‘lon qilish operatorlarini ishlatish man etiladi, lekin undagi 
bloklarda o‘zgaruvchilarni e‘lon qilish mumkin va bu o‘zgaruvchilar faqat blok ichida 
amal qiladi. Quyidagi misolda bu holat bilan bog‘liq xatolik ko‘rsatilgan: 
if (j > 0) 

int i; 
i = 2 * j; 

else i = -j; 
// xato, chunki i blokdan tashqarida ko‗rinmaydi
Misol 
tariqasida 
diskriminantni hisoblash 
usuli 
yordamida 
ax
2
+bx+c=0 
ko‘rinishidagi kvadrat tenglama ildizlarini topish masalasini ko‘raylik: 
#include  
#include  
using namespace std; 
int main() 
{ float a, b, c; 
float D, x1, x2; 
cout << "ax^2+bx+c=0 tenglama ildizini topish. "; 
cout << "\n a - koeffisiyentini kiriting: "; cin >> a; 
cout << "\n b - koeffisiyentini kiriting: "; cin >> b; 
cout << "\n c - koeffisiyentini kiriting: "; cin >> c; 
D = b * b – 4 * a * c; 
if (D < 0) 
{ cout << "Tenglama haqiqiy ildizga ega emas!"; return 0;} 


55 
if (D == 0) 
{ cout << "Tenglama yagona ildizga ega: "; 
x1 = -b / (2 * a); 
cout << "\nx= " << x1; 

else 
{ cout << "Tenglama ikkita ildizga ega: "; 
x1 = (-b + sqrt(D)) / (2 * a); 
x2 = (-b - sqrt(D)) / (2 * a); 
cout << "\nx1= " << x1; 
cout << "\nx2= " << x2; 

return 0; } 
Dastur bajarilganda, birinchi navbatda tenglama koeffitsientlari - a, b, c 
o‘zgaruvchilar qiymatlari kiritiladi, keyin diskriminant – D o‘zgaruvchi qiymati 
hisoblanadi. Keyin D qiymatining manfiy ekanligi tekshiriladi. Agar shart o‘rinli bo‘lsa, 
yaxlit operator sifatida keluvchi ‗{‗ va ‗}‘ belgilari orasidagi operatorlar bajariladi va 
ekranga ―
Tenglama haqiqiy ildizga ega emas!
‖ xabari chiqadi va dastur o‘z ishini tugatadi 
(―return 0;‖ operatorini bajarish orqali). Diskriminant noldan kichik bo‘lmasa, navbatdagi 
shart operatori uni nolga tengligini tekshiradi. Agar shart o‘rinli bo‘lsa, keyingi 
qatorlardagi operatorlar bloki bajariladi – ekranga ―
Tenglama yagona ildizga ega:
‖ xabari, 
hamda x1 o‘zgaruvchi qiymati chop etiladi, aks holda, ya‘ni D qiymati noldan katta holati 
uchun else kalit so‘zidan keyingi operatorlar bloki bajariladi va ekranga ―
Tenglama ikkita 
ildizga ega:
‖ xabari, hamda x1 va x2 o‘zgaruvchilar qiymatlari chop etiladi. Shu bilan 
shart operatoridan chiqiladi va asosiy funksiyaning return ko‘rsatmasini bajarish orqali 
dastur o‘z ishini tugatadi.
O‘z navbatida 1
> va 2
> ham shartli operator bo‘lishi mumkin. 
Ifodadagi har bir else kalit so‘zi, oldindagi eng yaqin if kalit so‘ziga tegishli hisoblanadi 
(xuddi ochiluvchi va yopiluvchi qavslardek). Buni inobatga olmaslik mazmunan 
xatoliklarga olib kelishi mumkin.
Masalan:
if (x==1)
if (y==1) cout << "x=1 va y=1"; 
else cout << "x <> 1"; 
Bu misolda ―
x<>1
‖ xabari x qiymati 1 va y qiymati 1 bo‘lmagan holda ham chop 
etiladi. Quyidagi variantda ushbu mazmunan xatolik bartaraf etilgan:
if (x==1)

if (y==1) cout << "x=1 va y=1";

else cout << "x<>1"; 
Ikkinchi misol tariqasida uchta butun sonning maksimal qiymatini topadigan dastur 
bo‘lagini keltirishimiz mumkin:
int x, y, z, max; 
cin >> x >> y >> z; 
if (x > y)


56 
if (y < z) max = z; 
else max = y; 
else 
if (x < z) max = z; 
else max = x; 

Download 1,62 Mb.

Do'stlaringiz bilan baham:
1   ...   38   39   40   41   42   43   44   45   ...   80




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish