CodeBlanks Logo Icon CodeBlanks

İç içe koşullar

  • C kursu
  • Başlangıç
  • Ders 40/116
  • 5 dk

İç içe if ve switch ile karmaşık mantık kurmayı öğrenirsin.

İç içe if

Bir if bloğunun içine başka bir if yazabilirsin. Bu, iç içe koşullar oluşturur; örneğin önce büyük bir kategori, sonra alt kategori denetlersin.

int age = 25;
int has_ticket = 1;
if (age >= 18) {
    if (has_ticket) {
        printf("Girebilir\n");
    } else {
        printf("Bilet gerek\n");
    }
} else {
    printf("Yaş küçük\n");
}

İç içe koşullar güçlüdür ama derinleştikçe okunurluğu düşürür. Üç seviyeden fazlaysa && operatörü veya yardımcı fonksiyon tercih et.

switch içinde if

switch bloklarının içinde de if kullanabilirsin. Bu, her durum için ek koşullu mantık istediğinde yararlıdır.

int role = 1;
int level = 5;
switch (role) {
    case 1:
        if (level >= 3) {
            printf("Yönetici\n");
        } else {
            printf("Çırak\n");
        }
        break;
    default:
        printf("Misafir\n");
}

Burada role=1 ve level=5 için çıktı Yönetici olur. İç içe yapıların her seviyesinde girinti okunurluğu korur.

Uygulama İç içe if ile giriş denetimi

Bir C programı yaz. int age = 25; ve int has_ticket = 0; tanımla. Dış if (age >= 18) koşulu yaz; içeride if (has_ticket) ile printf("Girebilir\n");, else ile printf("Bilet gerek\n"); yazdır. Dış else ile printf("Yaş küçük\n"); yazdır. #include <stdio.h> başta olsun.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    // age ve has_ticket tanımla, iç içe if ile denetle
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    int age = 25;
    int has_ticket = 0;
    if (age >= 18) {
        if (has_ticket) {
            printf("Girebilir\n");
        } else {
            printf("Bilet gerek\n");
        }
    } else {
        printf("Yaş küçük\n");
    }
    return 0;
}

Beklenen çıktı

Bilet gerek

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İç if'i tamamla

Soru
if (age >= 18) {
    ____ (has_ticket) {
        printf("Girebilir");
    }
}
Cevap
if (age >= 18) {
    if (has_ticket) {
        printf("Girebilir");
    }
}

Açıklama: İçeride ikinci bir if denetimi yapılır.

2 age=25, has_ticket=0 için çıktı ne?

main.c
if (age >= 18) {
    if (has_ticket) printf("Girebilir");
    else printf("Bilet gerek");
} else printf("Yaş küçük");
  • Bilet gerek Doğru cevap
  • Girebilir
  • Yaş küçük
  • Boş çıktı

Açıklama: age 18+ ama bilet yok; iç else çalışır.

3 İç içe yapıları eşleştir

Kavram Anlamı
if içinde if Kademeli denetim
switch içinde if Durumda alt koşul
&& operatörü Tek if'te iki koşul
else if Zincir koşul

Başlangıç bölümündeki tüm dersler