Mobil Programlama

iOS

DERS PROGRAMI
iOS 201 Ders Programı

switch/case Yapısı

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Bir programda çok sayıda koşul kontrolü ve bunların sonucuna göre gerçekleştirilmesi gereken işlemler varsa, if-else yapıları ile akışın izlenmesi zorlaşabilir. Böyle durumlar genellikle switch deyiminin kullanılmasının gerekli olacağı durumlardır. switch deyimi, tek bir ifadenin değerine göre sınırsız sayıda çalıştırma yolu belirlemeyi sağlayan bir komuttur.

switch sözcüğünden hemen sonra gelen ifade parantezler içinde ve bir tamsayı ifade olmalıdır. Yani char, short, int , long, byte, sbyte, ushort, uint, ulong olabilir fakat float, double veya long double olamaz. (C için; Kernighan&Ritchie standardı, ifadenin int tipinde olmasını gerektirir.)

case anahtar sözcüklerini izleyen ifadeler tamsayı sabit türünde ifadeler olmalıdır, yani değişken içermemelidir.

switch deyiminin çalışma prensibi basittir. switch ifadesi hesaplanır; sonuç hangi case’i izleyen sabitle çakışıyorsa, programın kontrolü o case’i izleyen kısma geçer. Bu case’den sonraki deyimler de kontrol edilmeden çalıştırılır.

case sabitlerinden hiçbiri ifade ile uyuşmuyorsa, programın akışı default‘u izleyen kısma geçer (tabii bu kısım mevcutsa). default‘un en sonda olması şart değildir. Fakat en sona koymak iyi bir programlama stilidir.

İki case sabiti aynı değeri alamaz.                                          

C DİLİ: Switch/case yapısında, programın kontrolünün ifadenin değerine göre case seçeneklerinden sadece birini çalıştırıp bundan sonra switch/case yapısını terketmesini istiyorsak bu durumda her case seçeneğinden sonra break komutu yerleştirmeliyiz.

C# DİLİ: Her caseden sonra break kullanmamız gerekir.

 

ÖRNEK PROGRAMI:

 

#import <Foundation/Foundation.h>
 
int main(int argc, char* argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
 
    char sec;
    NSLog(@"\nSECIMINIZ,A,B VEYA C'DEN BIRINI GIRINIZ..");
    scanf("%c",&sec);
    switch(sec)
    {
        case 'A':
        NSLog(@"A SINIFI DERGILERIN LISTESI");
        break;
        case 'B':
        NSLog(@"B SINIFI DERGILERIN LISTESI");
        break;
        case 'C':
        NSLog(@"C SINIFI DERGILERIN LISTESI");
        break;
        default:
        NSLog(@"HATALI SECIM,A,B VEYA C GIRILMELI");
        break;
    }
    [pool drain];
    return 0;
}

 

 

PROGRAMININ ÇIKTILARI:

 

switch/case YAPISI İLE İLİŞKİLİ ÖRNEK UYGULAMA:

Bir turizm şirketi farklı tur çeşitlerinden oluşan bir liste sunuyor. Kullanıcı bu listeden ilgilendiği bir turu seçtiğinde, o turla ilişkili ayrıntılı bilgiye ulaşıyor. Burada aşağıdaki basit algoritmayı uygulayacağız:

  1.  Tur seçenekleri ekrana yazdırılır.
  2. Kullanıcıdan bu tur seçeneklerinden bir tanesini seçmesi istenir.
  3. Kullanıcının seçimine uygun olan tur hakkındaki bilgiler ekrana yazdırılır. 

Bu algoritmaya uygun yazılan Objective C programı aşağıda yer alıyor:

 

Aşağıdaki Objective C programını oluşturalım:

#import <Foundation/Foundation.h>

int main(int argc, char* argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
 
    int sec;
    NSLog(@"\nHEIMAT TURIZM SIRKETI SUNAR");
    NSLog(@"\n1.ORTA AVRUPA TURU");
    NSLog(@"\n2.AMERIKA TURU");
    NSLog(@"\n3.UZAK DOGU TURU");
    NSLog(@"\nSECIMINIZ...");
    scanf("%i", &sec);
    switch(sec)    
    {
        case 1:
        NSLog(@"UCAK ILE VIYANA(3),BUDAPESTE(2),PRAG(2)");
        NSLog(@"4 YILDIZLI OTELLERDE OK-1700$");
        break;
        case 2:
        NSLog(@"OZEL UCAK ILE NEW YORK(4),BOSTON(2),LOS ANGELES(4)");
        NSLog(@"5 YILDIZLI OTELLERDE OK-3700$");
        break;
        case 3:
        NSLog(@"OZEL UCAK ILE BANG KONG(3),HONG KONG(3)");
        NSLog(@"\nTOKYO(3),PEKIN(3)");
        NSLog(@"5 YILDIZLI OTELLERDE OK-4000$");
        break;
        default:
        NSLog(@"HATALI SECIM,1,2 VEYA 3 GIRILMELI");
        break;
    }
    [pool drain];
    return 0;
}

 

Uygulamayı çalıştıralım. Farklı menü seçimlerini deneyerek aşağıdaki çıktıları elde ederiz: