Shartli operatorlar — if / else / else if
Hayotda qaror qabul qilish
Har kuni minglab qaror qabul qilamiz:
Agar havo yomg'irli bo'lsa → soyabon ol
Aks holda → soyabonsiz chiq
Agar pul yetarli bo'lsa → sotib ol
Aks holda → keyinroq ol
Dasturlar ham xuddi shunday ishlaydi. Shart bajarilsa — bir ish, bajarilmasa — boshqa ish. Bu shartli operatorlar — dasturlashning asosi.
1. if — Faqat shart bajarilsa
Sintaksis
if (shart) {
// shart to'g'ri bo'lsa shu yerga kiradi
}
Qanday ishlaydi?
shart tekshiriladi
|
true → blok bajariladi
false → o'tkazib yuboriladi
Misol
#include <stdio.h>
int main() {
int yosh = 20;
if (yosh >= 18) {
printf("Ovoz berish huquqiga ega\n");
}
printf("Dastur tugadi\n");
return 0;
}
Natija (yosh = 20):
Ovoz berish huquqiga ega
Dastur tugadi
Natija (yosh = 15):
Dastur tugadi
💡 Diqqat:
yosh >= 18shart0(noto'g'ri) yoki1(to'g'ri) qaytaradi.iffaqat1da ichiga kiradi.
2. if-else — Ikki yo'l
Sintaksis
if (shart) {
// shart to'g'ri
} else {
// shart noto'g'ri
}
Qanday ishlaydi?
shart tekshiriladi
|
true → if bloki bajariladi
false → else bloki bajariladi
Misol — Harorat ogohlantirishi
#include <stdio.h>
int main() {
float harorat;
printf("Haroratni kiriting: ");
scanf("%f", &harorat);
if (harorat <= 0) {
printf("Muzlaydi\n");
} else {
printf("Muzlamaydi\n");
}
return 0;
}
Natija (harorat = -5):
Muzlaydi
Natija (harorat = 10):
Muzlamaydi
Misol — Juft yoki toq
#include <stdio.h>
int main() {
int son;
printf("Son kiriting: ");
scanf("%d", &son);
if (son % 2 == 0) {
printf("Juft son\n");
} else {
printf("Toq son\n");
}
return 0;
}
Natija (son = 7):
Toq son
💡 Eslatma:
son % 2 == 0— qoldiq 0 bo'lsa juft. Bu shartni yodlab oling, juda ko'p ishlatiladi.
3. else if — Ko'p shartlar
Ikki holatdan ko'p bo'lsa — else if ishlatiladi.
Sintaksis
if (shart1) {
// shart1 to'g'ri
} else if (shart2) {
// shart2 to'g'ri
} else if (shart3) {
// shart3 to'g'ri
} else {
// hech biri to'g'ri emas
}
Qanday ishlaydi?
shart1 → true? → ha → blok1, tugadi
|
yo'q → shart2 → true? → ha → blok2, tugadi
|
yo'q → shart3 → true? → ha → blok3, tugadi
|
yo'q → else bloki
⚠️ Muhim: Birinchi to'g'ri shart bajariladi va qolganlar tekshirilmaydi. Tartib muhim!
Misol — Ball tizimi
#include <stdio.h>
int main() {
float ball;
printf("O'rtacha bahoni kiriting: ");
scanf("%f", &ball);
if (ball >= 4.5) {
printf("Namunali\n");
} else if (ball >= 3.8) {
printf("Qoniqarli\n");
} else {
printf("Qoniqarsiz\n");
}
return 0;
}
Natija (ball = 4.75):
Namunali
Natija (ball = 4.0):
Qoniqarli
Natija (ball = 3.5):
Qoniqarsiz
4. if + char — Belgilar bilan ishlash
char o'zgaruvchisi aslida son (ASCII kodi).
Shuning uchun uni ham shartlarda ishlatish mumkin.
char harf = 'A';
// Ikki usul — ikkalasi ham ishlaydi:
if (harf == 'A') { ... } // belgi bilan solishtirish
if (harf == 65) { ... } // ASCII kodi bilan
ASCII eslatma
'A' - 'Z' → 65 - 90 (katta harflar)
'a' - 'z' → 97 - 122 (kichik harflar)
'0' - '9' → 48 - 57 (raqam belgilari)
Misol — Unli yoki undosh
#include <stdio.h>
int main() {
char harf;
printf("Harf kiriting: ");
scanf(" %c", &harf);
if (harf == 'a' || harf == 'e' || harf == 'i' ||
harf == 'o' || harf == 'u') {
printf("Unli harf\n");
} else {
printf("Undosh harf\n");
}
return 0;
}
Natija (harf = 'a'):
Unli harf
Natija (harf = 'b'):
Undosh harf
Misol — Katta yoki kichik harf
#include <stdio.h>
int main() {
char belgi;
printf("Belgi kiriting: ");
scanf(" %c", &belgi);
if (belgi >= 'A' && belgi <= 'Z') {
printf("Katta harf\n");
} else if (belgi >= 'a' && belgi <= 'z') {
printf("Kichik harf\n");
} else {
printf("Harf emas\n");
}
return 0;
}
Natija (belgi = 'Z'):
Katta harf
Natija (belgi = '5'):
Harf emas
5. Ichma-ich if — Nested if
if ichida yana if bo'lishi mumkin.
#include <stdio.h>
int main() {
int son;
printf("Son kiriting: ");
scanf("%d", &son);
if (son > 0) {
printf("Musbat\n");
if (son % 2 == 0) {
printf("va juft\n");
} else {
printf("va toq\n");
}
} else if (son < 0) {
printf("Manfiy\n");
} else {
printf("Nol\n");
}
return 0;
}
Natija (son = 8):
Musbat
va juft
Natija (son = -3):
Manfiy
⚠️ Maslahat: Ichma-ich
if3 darajadan oshmasin. Oshsa — kod o'qilmay qoladi. Bu "callback hell" deyiladi.
6. Keng tarqalgan xatolar
Xato 1 — = o'rniga ==
int x = 5;
if (x = 10) { // ❌ tayinlash — x = 10, doim true!
printf("teng\n");
}
if (x == 10) { // ✅ solishtirish
printf("teng\n");
}
Xato 2 — {} qavslarni unutish
int x = 5;
if (x > 3)
printf("Katta\n"); // ✅ faqat shu if ga bog'liq
printf("Salom\n"); // ❌ if ga bog'liq emas! doim chiqadi
Doim {} ishlating — hatto bitta qator bo'lsa ham.
Xato 3 — Float solishtirish
float a = 0.1f + 0.2f;
if (a == 0.3f) { // ❌ float aniq emas!
printf("teng\n");
}
if (a - 0.3f < 0.0001f) { // ✅ farqni tekshirish
printf("teng\n");
}
Vazifalar
✏️ Vazifa 1 — Ovoz berish huquqi
Foydalanuvchidan yosh so'rang. Agar 18 va undan katta bo'lsa
Ovoz berish huquqiga egachiqsin, aks holda hech narsa chiqmasin.
Input Output 18 Ovoz berish huquqiga ega 15 (hech narsa)
✏️ Vazifa 2 — Chegirma
Foydalanuvchidan xarid miqdori ($) so'rang. Agar $100 dan ko'p bo'lsa — 10% chegirma qo'llang.
Input Output 200 Haridingiz 180$ bo'ldi 90 Haridingiz 90$ bo'ldi Hint:
chegirma = narx * 0.10
✏️ Vazifa 3 — Harorat ogohlantirishi
Foydalanuvchidan harorat so'rang. 0 va undan past →
Muzlaydi, 0 dan yuqori →Muzlamaydi.
Input Output 0 Muzlaydi 10 Muzlamaydi -10 Muzlaydi
✏️ Vazifa 4 — O'quvchi bahosi
Foydalanuvchidan 4 ta baho so'rang. O'rtachasini hisoblang: 4.5-5 →
Namunali, 3.8-4.5 →Qoniqarli, pastroq →Qoniqarsiz.
Input Output 5 4 5 5 Namunali 3 4 3 3 Qoniqarsiz 4 5 4 4 Qoniqarli Hint:
float ortacha = (b1 + b2 + b3 + b4) / 4.0f;
✏️ Vazifa 5 — Unli yoki undosh
Foydalanuvchidan bitta harf so'rang.
a, e, i, o, ubo'lsa →Unli harf, aks holda →Undosh harf.
Input Output a Unli harf b Undosh harf o Unli harf Hint:
||operatori bilan bir nechta shart birlashtiring.
✏️ Vazifa 6 — Harf turi
Foydalanuvchidan bitta belgi so'rang.
A-Z→Katta harf,a-z→Kichik harf, boshqa →Harf emas.
Input Output A Katta harf z Kichik harf 1 Harf emas Hint:
belgi >= 'A' && belgi <= 'Z'
✏️ Vazifa 7 — Uch sondan kattasi
Foydalanuvchidan 3 ta son so'rang. Eng kattasini toping.
Input Output 13 4 5 13 4 17 5 17 Hint: Avval
a > btekshiring, keyin g'olibnicbilan solishtiring.
✏️ Vazifa 8 — Kalkulyator
Foydalanuvchidan ikki son va amal (
+,-,*,/) so'rang./da nolga bo'lishni tekshiring.
Input Output 6 34 + 40 2 3 * 6 6 3 / 2 3 4 - -1 Hint:
char amal; scanf(" %c", &amal);
✏️ Vazifa 9 — Musbat va manfiy
Foydalanuvchidan 3 ta son so'rang. Nechta musbat, nechta manfiy ekanligini chiqaring (0 hisoblanmaydi).
Input Output 12 -43 45 2 ta musbat, 1 ta manfiy -11 0 24 1 ta musbat, 1 ta manfiy Hint:
int musbat = 0, manfiy = 0;— hisoblagich o'zgaruvchilar.
✏️ Vazifa 10 — Kabisa yili
Foydalanuvchidan yil so'rang. 400 ga bo'linsa yoki (4 ga bo'linsa VA 100 ga bo'linmasa) → kabisa.
Input Output 1997 Kabisa yili emas 1992 Kabisa yili 2100 Kabisa yili emas 2400 Kabisa yili Hint:
if (yil % 400 == 0 || (yil % 4 == 0 && yil % 100 != 0))
⭐ Qo'shimcha vazifalar
✏️ Vazifa 11 — Uchburchak tekshiruvi
Foydalanuvchidan uch tomonni oling (
a,b,c). Uchburchak hosil qila oladimi?Qoida: har bir tomon qolgan ikki tomonning yig'indisidan kichik bo'lishi kerak. a < b + c b < a + c c < a + b
Input Output 3 4 5 Uchburchak bo'ladi 1 2 10 Uchburchak bo'lmaydi
✏️ Vazifa 12 — Yil fasli
Foydalanuvchidan oy raqamini oling (1-12). Qaysi fasl ekanligini chiqaring.
12, 1, 2 → Qish 3, 4, 5 → Bahor 6, 7, 8 → Yoz 9, 10, 11 → Kuz
Input Output 3 Bahor 7 Yoz 11 Kuz 1 Qish
✏️ Vazifa 13 — Sonni tasniflash
Foydalanuvchidan son oling. Bir vaqtda bir nechta xususiyatini chiqaring:
Kiriting: 12 Musbat: ha Juft: ha 3 ga bo'linadi: ha 4 ga bo'linadi: ha
Input Musbat Juft 3 ga 4 ga 12 ha ha ha ha -9 yo'q yo'q ha yo'q 7 ha yo'q yo'q yo'q
✏️ Vazifa 14 — Parol tekshiruvi
Foydalanuvchidan parol uzunligini (
int) oling. Quyidagi qoidalarni tekshiring:8 dan qisqa → "Juda qisqa" 8 dan 12 gacha → "Qabul qilindi" 12 dan uzun → "Juda uzun"
Input Output 5 Juda qisqa 10 Qabul qilindi 20 Juda uzun
✏️ Vazifa 15 — Uch son tartibda
Foydalanuvchidan 3 ta son oling. Ular o'sish tartibida (
a < b < c) joylashganmi?
Input Output 1 5 9 Tartibda 3 1 7 Tartibda emas 5 5 9 Tartibda emas Hint:
a < b && b < c
Keyingi dars
if-else bilan ko'p shartni yozdik.
Lekin bir o'zgaruvchining ko'p qiymatini
tekshirishda yanada qulay yo'l bor.
8-dars: switch–case