«IF» shartli operatorni imkoniyatlarini o‘rganishni davom ettiramiz, oldingi darsimizda faqat bitta shart asosida tekshirishni ko‘rib chiqqan edik, ya’ni «if» kalit so‘zidan keyin, qavs ichida faqat bitta shart tekshirilgan, misol uchun

if (a>0)

Endi, qavs ichida bir necha shartni tekshiramiz va natijani umumiy holda bitta qilib olamiz. Bu nima degani? oldingi maqolani biroz esga olamiz, agar «if» kalit so‘zidan keyin keladigan shart ichidan rost(true) qiymat chiqsa, «if» bloki ichidagi operatorlar ishlaydi, aks holda «else» bloki operatorlari ishlaydi, demak, shart ichidan qanday qiymat chiqishi juda muhim. Shart ichidan faqat ikki qiymat chiqadi, yoki shart bajariladi, bu holda qiymat rost(true) chiqadi, yoki shart bajarilmaydi, qiymat yolg‘on(false) chiqadi. Agar «true» bo‘lsa, «if» ichi, agar «false» bo‘lsa «if» ichi tashlab ketilib, undan keyingi operatorlar ishlaydi.

<script type="text/javascript">
var son = "4";  // yozuv tipidagi qiymat
if (son===4)   // shart tekshirildi, shart false qiymat berdi, ya'ni shart bajarilmadi.
document.write("Raqam"); // shart bajarilmaganligi sababli, tashlab ketildi.
else
document.write("Yozuv");  //shart bajarilmaganligi sababli, bu operator ishladi.
</script>

Blok sxema ko‘rinishida chizadigan bo‘lsam:

ifelse

Hammasi tushunarli bo‘ldi deb o‘ylayman, agar tushunmagan bo‘lsangiz, darsning davomiga o‘tmang, shu joyigacha tushunib oling, aks holda keyingilari ham tushunarli bo‘lmaydi.

Endi, shart sifatida bir necha tekshiruvlarni ko‘ramiz, bunda bizga quyidagi simvollar kerak bo‘ladi:

&& — mantiqiy VA belgisi

|| — mantiqiy YOKI belgisi

! — mantiqiy YO‘Q belgisi.

Bu simvollar har bir shartdan keyin qo‘yilib, umumiy natija olishga yordam beradi, misol uchun «son» o‘zgaruvchi 3 dan katta va 10 dan kichik bo‘lsa, umumiy natija rost(true) bo‘lsin.

if(son>3 && son<10)

Bunda ikkala shart(son>3 va son<10) rost(true, to‘g‘ri) bo‘lsagina umumiy shart rost bo‘ladi. to‘liq misol ko‘ramiz:

<script type="text/javascript">
var son = 5;
if (son>3 && son<10)
document.write("Umumiy shart bajarildi");
else
document.write("Umumiy shart bajarilmadi");
</script>

Natija: Umumiy shart bajarildi

«son» o‘zgaruvchiga biz bergan 5 qiymat, ikkala shartni ham qanoatlantirdi, ham 3 dan katta, ham 10 dan kichik, shuning uchun umumiy shart bajarilib(qavsdan rost qiymat chiqib), undan keyingi operator ishladi, «else» bloki tashlab ketildi. Endi «son» o‘zgaruvchiga boshqa qiymat, ya’ni 11 beramiz:

<script type="text/javascript">
var son = 11;
if (son>3 && son<10)
document.write("Umumiy shart bajarildi");
else
document.write("Umumiy shart bajarilmadi");
</script>

Natija: Umumiy shart bajarilmadi

 bu holda birinchi shart bajarildi(son>3), lekin ikkinchi shart(a<10)bajarilmadi, qavs ichidan yolg‘on(false)chiqdi va «else» bloki ishga tushdi.

Demak, mantiqiy VA(&&) ishlatilganda, qavs ichidagi har bir shart bajarilishi shart ekan, faqat bajarilgandagina umumiy natija(qavs ichidan chiqadigan qiymat) rost(true) bo‘lar ekan.

Mantiqiy YOKI(||) ishlatilsa, biroz boshqacharoq bo‘ladi, qavs ichidagi shartlarning istalgan bittasi rost bo‘lsa, umumiy qiymat rost bo‘laveradi, hamma shart bajarilishi shart emas.

<script type="text/javascript">
var son = 11;
if (son>3 || son<10)
document.write("Shart bajarildi");
else
document.write("Shart bajarilmadi");
</script>

Natija: Shart bajarildi

11 soni 3 dan katta, demak birinchi shart bajarildi, lekin ikkinchi shartga qarasak 11 soni 10 sonidan kichik emas, ikkinchi shart bajarilmadi, umumiy oladigan bo‘lsak, birinchi shart bajarildi, ikkinchisi bajarilmadi, mantiqiy YOKI(||)ishlatilgani uchun, umumiy qiymat, ya’ni qavs ichidan chiqadigan qiymat rost(true)bo‘ldi, bu degani «IF» kalit so‘zidan keyin keladigan operator ishlaydi, «else«dan keyingi operator tashlab ketiladi degani.

Keyingi mantiqiy belgi bu YO‘Q(!) belgisi, bu teskari amalni amalga oshiradi, misol uchun, qavs ichidan rost qiymat chiqayotgan bo‘lsa, shu qiymatni teskarisigi yolg‘onga o‘girib beradi va natija yolg‘on bo‘lib qoladi.

<script type="text/javascript">
var son = 11;
if (!(son>3 || son<10))
document.write("Shart bajarildi");
else
document.write("Shart bajarilmadi");
</script>

Natija: Shart bajarilmadi

Rasm orqali ko’ramiz:

falsetrue

Tekshirishni ichidagi qavsdan boshlaymiz, «son» o‘zgaruvchiga berilgan 11 qiymat 3 dan katta demak rost, 11 qiymat 10 sonidan kichik emas demak yolg‘on, mantiqiy YOKI(||)ishlatilagini uchun umumiy qiymat rost, undan keyingi qavsda mantiqiy YO‘Q(!) turibdi shuning uchun, chiqayotgan rost qiymatni teskarisiga o‘girib tashlaydi, natija yolg‘on, umumiy qiymat yolg‘on bo‘lgani uchun «else» bloki ishga tushadi, ya’ni quyidagicha.

Ba’zi hollarda bitta o‘zgaruvchining bir necha shart asosida tekshirish kerak bo‘lib qoladi, bajarishi kerak bo‘ladigan operatorlar ham har bir natija uchun alohida bo‘ladi, bunday holda «else if» konstruktoridan foydalanish lozim, misol uchun, son berilan shu sonni musbat, manfiy yoki 0 qiymatligi aniqlansin, har biri uchun alohida yozuv ekranga chiqsin, demak har bir shartga alohida tekshiramiz.

<script type="text/javascript">
var son = 0;
if (son>0)
document.write("Musbat");
else if (son<0)
document.write("Manfiy");
else
document.write("Nol qiymat");
</script>

Natija: Musbat

Dastlab 0 dan kattaligi tekshirilmoqda, undan keyin 0 dan kichikligi, agar ikkala shart ham bajarilmasa, qiymat 0 ekanligi ayon, shuning uchun 0 uchun alohida tekshiruv yo‘q. Bu misol uchun, har xil qiymatlar berib, «else if» konstruktorini tushunib oling.

Yana bitta misol, hafta kunlarini tekshirish.

<script type="text/javascript">
var son = 6;
if (son>0 && son<=5)
document.write("Ish kuni");
else if (son==6)
document.write("Balki ish kunidir");
else if (son==7)
document.write("Dam olish kuni");
else
document.write("Bunday hafta kuni mavjud emas");
</script>

Natija: Balki ish kunidir.

Bu darsimiz tugadi, savollar bo‘lsa yoki xatoliklarni topsangiz, kommentariyada yozishingiz mumkin, to‘g‘irlab qo‘yaman.