Switch-Case karar yapıları, If – Else karar yapılarının mantığı ile aynıdır, yani belirli bir sıraya veya belirli bir koşula göre hareket etmemizi sağlar.. . O halde bunların birbirinden farkları nelerdir kısaca bunu özetleyelim. Öncelikle bilmeniz gereken, IF-ELSE ile yaptığınız her şeyi Switch-Case ile yapabilirsiniz ama Switch-Case ile yapılan her şeyi IF-ELSE ile yapamazsınız. Aralarında ki fark ise, IF-ELSE birden fazla durumu aynı anda kontrol etmemize yarıyordu, fakat Switch-Case için her koşul ve her durum ayrı ayrı tanımlanıp ona göre işlem yapılmaktadır yani IF-ELSE ile durumlar değerlendirilirken, Switch-Case ile direk olarak nokta atışı yaparsınız.. Diğer bir değişle IF-ELSE yapıları %100 sonuç odaklı çalışmaz yani yani ihtimallere göre şekillenir örneğin: C# IF-ELSE Karar Yapıları ile çalışırken sırasıyla blokları gezeriz ve doğru olan bloğu bulana kadar devam ederiz. Doğru blok bulunmazsa ELSE komutu ile sonucu yazdırırız, fakat Switch-Case bu şekilde çalışmaz, tanımlanan tüm blokların arasını tek tek gezer ve hepsi için bizlere ayrı ayrı sonuçlar listeler. Aşağıda ki örnekle bu konunun biraz daha pekişeceğine inanıyorum.
Örnek 1:
Kullanıcıdan bir takım girmesini isteyelim ve girdiği takımlara göre o takımın efsane oyuncusunu ekrana yazdıralım.
1- ‘takim’ isminde bir değişken tanımladık.
2- Console.WriteLine() metodu ile Kullanıcıdan takım bilgisini girmesini istedik.
3- Console.ReadLine() metodu ile girilen takımı belleğe aldık.
4- Switch-Case bloklarını oluşturduk ve kod bloğunun için doldurduk.
Not: Her bir durum için örnekte ki gibi yeni bir ‘case’ tanımladık ve bu tanımın karşılığını yazdık ve ‘break’ komutu ile sonlandırıp bir sonraki ‘case’ tanıma geçtik. En altta ki ‘default’ değeri ise, listede bulunmayan takım yazılırsa ne olacak? bunun sonucunu hata olarak ekrana yazdırmak için belirledik.
string takim; Console.WriteLine("Hangi Takımı Tutuyorsunuz ?"); takim = Console.ReadLine(); switch (takim) { case "fenerbahce" : Console.Write("Alex De Souza!"); break; case "galatasaray" : Console.Write("Gheorghe Hagi"); break; case "beşiktaş": Console.Write("Sergen Yalçın"); break; case "trabzon": Console.Write("Hami Mandıralı"); break; default: Console.Write("Hatalı Giriş"); break; } Console.ReadKey();
Örnek 2:
Trafik lambalarına göre Switch-Case karar yapıları oluşturalım. Örneğin; ekrana “kırmızı” yazıldığında ne yapılması gerektiği, “sarı” yazıldığında ne yapılması gerektiğini ve son olarak “yeşil” yazıldığında ne yapılması gerekildiğini tek tek tanımlayalım… Tabi birde “default” değer tanımlayıp bu renklerin dışında bir şey yazılırsa ekrana hata metni yazdıralım. Unutulmaması gereken diğer bir konu ise; tanımlanan her ‘case’ den sonra ‘break’ komutu ile sonlandırıp yeni bir ‘case’ tanımlamamız lazım.
string trafikLambasi; Console.WriteLine("Lütfen Trafik Lamba Renklerinden Birisini Giriniz"); trafikLambasi = Console.ReadLine(); switch (trafikLambasi) { case "kırmızı": Console.WriteLine("DUR !!! Yayaya Yol Ver!"); break; case "sarı": Console.WriteLine("HaZIR OL !!!"); break; case "yeşil": Console.WriteLine("GO GO GO !! :)"); break; default: Console.WriteLine("HATALI BİR RENK ADI YAZDINIZ - LÜTFEN KONTROL EDİNİZ"); break; } Console.ReadKey();
Yukarıda ki örnekten farklı olarak kodları yan yana değilde alt alta yazdık. Aralarında hiç bir fark yok. Hangi örnekte ki yazımı daha çok beğendiyseniz, hangi yazım türü sizin için daha kolay geldiyse o şekilde yazabilirsiniz.
Ekran Çıktısı:
Proje Kaynak Dosyaları:
Yukarıda ki 2 örneği de aşağıda ki linkten indirip, Visual Studio ile açtığınız taktirde canlı olarak inceleyebilir ve konsol ekranını görebilirsiniz.
[button color=”orange2″ link=”https://www.sahinsezgin.com/wp-content/uploads/2016/11/KararYapilarSwich-Case.zip” size=”bigger” icon=”brankic-icon-download2″]İNDİR![/button]
5 Yorum
Merhaba. %100 sonuç odaklı çalışmaz YANİ YANİ ihtimallere göre şekillenir örneğin: içinde 2 tane yani var 🙂
Makale de ki yazım hatalar düzeltildi 🙂
Dahada aşagida 2 tane :ve hepsi için bizlere AYRI AYRI sonuçlar listeler.
P.s. Adım Sergei dersten
Derste tam bunu arastırmak lazimdi burada varmıs. Teşekürler!
Zaman buldukça yeni yazılar ekleyeceğim.. İlgin için teşekkürler 🙂
sitenizin tasarımı güzel ama biraz daha çok örnekli ve ayrıntılı anlatırsanız daha iyi olur