İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Switch Case - İf Else ?

Can-K.15.04.201510 cevap22.238 görüntüleme
2015'den beri975 mesaj
#1
Bu kodların arasındaki farkı anlamış değilim biri bana açıklayabilir mi :blink:
Cevaplar
bud
2014'den beri5.326 mesaj
#2
Programın okunması tarafından birçok komut'un farklı türleri oluyor. Ve bu farklılıklar gelişmiş ve avantajlı olur. Bunlar zaten aynı işi görüyor öğrenmeme ne gerek var diye düşünebilirsin. Ama bir gün kullanmak zorunda kalacaksın.

"if-else" komutları hemen hemen tüm dillerde vardır. Senin, programın hangi işlemi gerçekleştirmen istediğine kara verdirir. Eğer-Şart komutu olarak'ta düşünebilirsin. Hiç dillere girmeden şöyle söyleyeyim. Mantık şudur, mesela kullanıcıdan bir girdi alırsın bu girdi bir rakam olsun ve girdiyi almandaki amaç sayının 1 ile 10 arasında olup olmadığını yansıtmak olsun. Kodları yazman'da ki mantık şu olacaktır if komutunu kullanırsın yani eğer demektir. Dil bunu şöyle okur. Eğer sayı 0-10 arası ise kullanıcıya, sayı 1 ile 10 arasındadır çıktısı verir. İf komutu bunu gerçekleştirir. Else'de şudur sayı 0 ve 10 arasında değilse kullanıcıya vereceğin çıktıyı veya senin tarafından programın gerçekleştirilmesi gerektiği fonkisyonu veya komutu uygular.

Mesela bir C++ örneği, sayının çift'mi tek'mi olduğunu belirliyor. Kodları şu şekilde.
//tekcift.cpp
//sayi tekmi çiftmi onu görücegiz
#include <iostream.h>
main()
{
int sayi;
cout<< "Bir sayi giriniz:";
cin >> sayi;
if (sayi %2==1 )
cout <<"tek";
else
cout << "çift" ;
}

Görüldüğü üzere program kullanıcıdan bir girdi alır ve bu girdiği if ve else deyimlerini kullanarak tek'mi yoksa çift'mi olduğuna karar verip program kullanıcısına bildirir.

Python ile bir if-else örneği verirsek;

# -*- coding: utf-8 -*-
g1 = input("Lütfen bir rakam giriniz: ")


print g1


if g1 < 10:
print "Rakam 10'dan kucuktur"
else:
print "Rakam 10'dan buyuktur"

python daha basit mantığını anlaman için örnek verdim.

Switch-Case ile if-else hemen hemen aynıdır ama Switch-Case farkı şudur.

Switch Case deyimi islev bakimindan if deyimine çok benzemektedir. Çok sayida if islem bloklari kullandigimizda programin okunurlugu azalacak ve programi izlemek zorlasacaktir. Programimizin bir degerini bir çok degerle karsilastirmak gerektiginde switch komutunu kullanacagiz. Switch seçenegi ile degiskenin durumuna göre bir çok durum içersinden bir tanesi gerçeklestirilir. Istersek de if deyimi ile switch case'' yi birlikte kullanabiliriz. Switch in yaptigi is kisaca, ifadenin degerini sirayla sabitlerle karsilastirarak ve her satiri islemektir.
C++ örneği verirsek;


#include <iostream.h>

main()
{
int i;
cout<< " 1 ile 4 arasi sir sayi giriniz:";
cin>>i;
switch(i)
{

case 1 :cout<<"1 Girdiniz"; break;
case 2 :cout<<"2 Girdiniz"; break;
case 3 :cout<<"3 Girdiniz"; break;
case 4 :cout<<"4 Girdiniz"; break;

default:cout<<"1 ile 4 ten farkli";
}
}

Bu C++ örneğinde tüm şartları tek tek değerlendirdi. Diğer C++ if-else örneğinde Switch-Case'yi kullansaydık sayının hem tek hem 0-10 arasında olduğunu ve bunların üzerine sayının kare köklerini bile bize tek tek çıktı olarak verebilirdi. Ama if-else deyiminde bize tek bir çıktı verir.

Switch-Case'yi if-else'ye göre daha yönlü olarak algılaya bilirsin. Şu şemada daha rahat anlayabilirsin. Şartları tek tek değerlendirip istediğimiz sonuçları vermesini sağlayacaktır. İf-else'de ise tek değerlendirme ve tek çıktı verecektir. İki komutu'da en iyi şekilde öğrenmen çok önemlidir.

Şema;



Gördüğün gibi tek tek değerlendirip çıktı almamızı sağlıyor.

Can-K.


Can-K. Konuyu açan
2015'den beri975 mesaj
#3
Case daha iyiymiş ozaman da bu okunma işi nedir ?

Ben yinede bildiğimden gideyim if ve else olarak.
bud
2014'den beri5.326 mesaj
#4
Can-K. dedi: ↑
Case daha iyiymiş ozaman da bu okunma işi nedir ?

Ben yinede bildiğimden gideyim if ve else olarak.
Yanlış düşünüyorsun. Her ikisini'de farklı yerlerde kullanmak zorunda kalacaksın. Mutlaka ikisini'de öğren. Case daha iyi veya if ve else daha iyi diye bir şey yok. İkisinin de görevleri birbirlerine has. Mecbur öğrenmelisin ikisini'de. İf'i anlamışsan Switch-Case'yide anlaman kolay olur. Tek farkları Switch-Case daha fazla değerlendirmede bulunur her bir değerlendirme için ayrı çıktı verir. İf-else kullanman gerken yerde Switch ve Case kullanamassın. Aynı şekilde Switch-case kullanman gereken yerde'de İf-else deyimlerini kullanamassın. Okunma olayıda dediğim gibi İf-else'yi tek bir değerlendirme ve çıktıdan okuyor. Switch-case'yi ise birden fazla değerlendirme ve çıktı vererek okuyor. Örneklerine bakarak ve aynı örnekleri kendin yazarak anlayabilirsin. İnternetten öğrenirken sakın derleyici'ye Kopyala yapıştır yapma. Mutlaka kodları kendin yaz. Kendin yazdığın zaman daha kolay ve iyi öğreneceksin.
Can-K. Konuyu açan
2015'den beri975 mesaj
#5
Öyle yapıyorum zaten.Caseyi öğrendiğimde zaten ifle görevleri aynı olduğu için anlayamadım.

Yani az olduğunda if else , çok olduğunda switch doğrumuyum ?
bud
2014'den beri5.326 mesaj
#6
Can-K. dedi: ↑
Öyle yapıyorum zaten.Caseyi öğrendiğimde zaten ifle görevleri aynı olduğu için anlayamadım.

Yani az olduğunda if else , çok olduğunda switch doğrumuyum ?
Mesela programdan girilen sayının hem 10'dan küçük mü büyük'mü olduğunu hemde tek sayımı çift sayımı olduğunun sorularının çıktı olarak vermesini istiyorsan switch-case kullanırsın. Ama girilen sayının sadece 10 dan büyük veya küçük mü veya sadece girilen sayının tek'mi çift'mi olduğunun sorularının programdan çıktı olarak almak istiyorsan if-else kullanırsın.

Yani birden fazla şart ile çıktı almak istiyorsan switch-case kullanırsın ama tek bir şart ile tek sabit bir çıktı istiyorsan if-else kullanırsın.
2012'den beri507 mesaj
#7
Elinde 1-10 arası bir sayı var diyelim. Her rakam için değerlendirip ayrı işlem yapacaksın. Bu durumda kullanacağın yapı switch-case.
Elinde 1 yada 2 değeri alan bir sayı var ise kullanacağın yapı if-else.
Can-K. Konuyu açan
2015'den beri975 mesaj
#8
Anladın teşekkür ederim o halde :)
2015'den beri12 mesaj
#9
Ayrıca bazı dillerde switch case i sadece number tipinde kullanabilirsin. Bazılarında ise string te de kullanabilirsin.
2010'den beri36 mesaj
#10
Can-K. dedi: ↑
Anladın teşekkür ederim o halde :)
Bu soruyu burada sormakla hata etmişsin. Cevap burada yazılanlar kadar basit değil.

Bir if ifadesi her koşulu içerebilir, eğer koşul doğru ise ilgili blok çalışır, aksi halde çalışmaz.

switch-case de parantez içindeki ifadenin sonucuna bağlı olarak case lerden birine DALLANIR, teker teker karşılaştırma yapılmaz. Yani switch te sadece eşitlik kontrolü yapılabilir if' in aksine. Dallanmanın (ya da zıplamanın) teknik olarak mümkün olabilmesi için case ler sabit ifadesi olmak zorunda, yani case a: gibi bir ifade olamaz. Ayrıca herhangi bir case e zıplandığı zaman oradan itibaren diğer case lerde çalışacak doğal olarak. Bundan kurtulmak için gerekli noktada switch sonuna tekrar zıplamak gerekir, bunu da break; ile yaparız.

switch ne zaman kullanılır dersen mesela 0 dan 100 e kadar herhangi bir sayı girilsin ve bu sayının değerine göre 100 farklı işlem tanımlansın. Bunu if ile yaparsan en kötü ihtimalde 100 karşılaştırma yapacak program. switch-case ile yaparsan girdiğin sayı ne olursa olsun tek işlemle kod akışı ilgili yere yönlenecek. Tabi if ile (sayi > 10 && sayi < 20) gibi karmaşık ifadeleler mümkündür ama switch-case ile sadece eşitlik kontrolü mümkün, o da sabit ifade olmak şartıyla.
2012'den beri507 mesaj
#11
Amenofis dedi: ↑
Bu soruyu burada sormakla hata etmişsin. Cevap burada yazılanlar kadar basit değil.

Bir if ifadesi her koşulu içerebilir, eğer koşul doğru ise ilgili blok çalışır, aksi halde çalışmaz.

switch-case de parantez içindeki ifadenin sonucuna bağlı olarak case lerden birine DALLANIR, teker teker karşılaştırma yapılmaz. Yani switch te sadece eşitlik kontrolü yapılabilir if' in aksine. Dallanmanın (ya da zıplamanın) teknik olarak mümkün olabilmesi için case ler sabit ifadesi olmak zorunda, yani case a: gibi bir ifade olamaz. Ayrıca herhangi bir case e zıplandığı zaman oradan itibaren diğer case lerde çalışacak doğal olarak. Bundan kurtulmak için gerekli noktada switch sonuna tekrar zıplamak gerekir, bunu da break; ile yaparız.

switch ne zaman kullanılır dersen mesela 0 dan 100 e kadar herhangi bir sayı girilsin ve bu sayının değerine göre 100 farklı işlem tanımlansın. Bunu if ile yaparsan en kötü ihtimalde 100 karşılaştırma yapacak program. switch-case ile yaparsan girdiğin sayı ne olursa olsun tek işlemle kod akışı ilgili yere yönlenecek. Tabi if ile (sayi > 10 && sayi < 20) gibi karmaşık ifadeleler mümkündür ama switch-case ile sadece eşitlik kontrolü mümkün, o da sabit ifade olmak şartıyla.
yazdıklarımı ayrıntılı yazmışsın sadece, neden yazdıklarımız yeterli değilmiş anlayamadım. ayrıca sırayla karşılaştırma yapmadığı sürece program hangi ifadenin input'a eşit olduğunu nereden bilecek? switch-case yapısının güzelliği "break;" komutundan geliyor, yoksa kahinleştirmiyoruz bilgisayarı.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.