T
trgy
Misafir
C Dersleri 6 Koşullu ifadeler 2(if-else if, switch case)
Önceki dersimizde if ve if-else'in nasıl kullanılacağını görmüştük ve en son bi alıştırma yazmıştım başlamadan önce onun cevabını verip bugünkü dersimize o örnek üzerinden giriş yapalım.İstediğim alıştırmada kullanıcıdan iki sayı istiyorduk ve bu sayılardan büyük olanı ekrana yazdırıyorduk.
Bu alıştırmada gördüğünüz gibi iki tane if kullandık ve hangi değişkenimiz büyükse onu yazdırmasını istedik.Burda hazır yeri gelmişken söylemek istediğim çok önemli bir şey var eğer if yapısında sadece bir tane işlem yaptırıyorsak bu örneğimizdeki gibi(sadece bir kere printf'i kullanmışız.) kıvırcık parantezleri kullanmadan da yaptırabiliriz yani bu kodu düzenlicek olursak.
Kodumuz düzgün çalışıyor fakat bu kodu değiştirip daha güzel yapabiliriz.Çünkü x'in y den büyük oldugunu düşünelim dikkat ederseniz ilk olarak x, y den büyük mü diye sorduk ve x büyük oldugu için içindeki kodu çalıştırdık ve sonra öteki if koşulunda ise y büyük mü diye sorduk halbuki sormamıza gerek yoktu çünkü öncesinde x in büyük oldugunu görmüştük işte böyle durumlarda else if imdadımıza yetişiyor hemen bu örneğimiz üzerinde göstereyim.
if-else if
diğer koddan farklı olarak ikinci if yapısının önüne else koyuyorum ve bunun sayesinde önceki koşulumuz sağlanıyorsa program ikinci defa hiç sorgulamıyor.
Bu koda ek olarak geçen ders gördüğümüz Birkaç şeyi de ekleyip daha düzgün bi hale sokabiliriz.
Bu örnekler üzerinden genel yazılışı çıkartcak olursak:
Birleşik Operatörler
Birleşik operatörleri kontrol etceğimiz koşulun birden fazla parametreye bağlı olması durumunda kullanırız.
&& ---------- and------------ve
|| -------------- or ---------- veya
Kullanılışıyla ilgili örnek olarak kullanıcının bir not girmesini isteyelim ve bu not
60 ile 65 arasındaysa DD
65 ile 70 arasındaysa DC
70 ile 75 arasındaysa CC
75 ile 80 arasındaysa CB
80 ile 85 arasındaysa BB
85 ile 90 arasındaysa BA
90 ile 100 arasındaysa AA yazdıran bir program yazalım.
Kullanıcıdan aldığımız değişkenin adı x olsun.Şimdi burda bizden isteneni şu şekilde de söyleyebiliriz
eğer x değişkeni 60'dan büyük ve 65 den küçük eşit ise DD yazdır
eğer x değişkeni 65'den büyük ve 70 den küçük eşit ise DC yazdır
eğer x değişkeni 70'den büyük ve 75 den küçük eşit ise CC yazdır
eğer x değişkeni 75'den büyük ve 80 den küçük eşit ise CB yazdır
eğer x değişkeni 80'den büyük ve 85 den küçük eşit ise BB yazdır
eğer x değişkeni 85'den büyük ve 90 dan küçük eşit ise BAyazdır
eğer x değişkeni 90'dan büyük ve 100 den küçük eşit ise AA yazdır.
İsterseniz programa 60 ile 100 arasında bir sayı girip deneyebilirsiniz.
Switch Case
Switch Case'in yapısı else if yapısına çok benzemektedir fakat switch case de sadece bir değişkeni kontrol edebiliriz ve sadece eşit oldugu durumlara kontrol edebiliriz ayrıca switch case de break; komutunu koymazsak diğer durumları sorgulamadan içinceki kodları çalıştırmaya devam eder yapısı şu şekildedir
break; komutunu kullanmak zorunlu değildir fakat kullanmazsak koşulun sağlandığı andan itibaren diğer durumlar için sorgulama yapmaz ve devamındaki kodları çalıştırmaya devam eder.
default ise hiçbir koşulun sağlanmadığı durumda yapılması gereken işlemleri içerir yani if yapısındaki else komutuna benzemektedir.
Örnek olarak kullanıcıdan bir ay girmesini isteyelim ve bu ayın hangi mevsim olduğunu bulmaya çalışalım.
Kış : Aralık Ocak Şubat
İlkbahar : Mart Nisan Mayıs
Yaz : Haziran Temmuz Ağustos
Sonbahar : Eylül Ekim Kasım
Programı çalıştırıp 4 girdiğimizi düşünelim program ilk önce bunun 12 mi olduğunu sorguluyo ve 12 olmadığı için birşey yapmadan devam ediyor sonra 1 mi diye sorguluyor yine olmadığı için devam ediyor ve 4 e geldiğinde ise evet cevabını alıyor oraya hiçbir kod yazmadığımız için birşey çalıştırmadan devam ediyor fakat 5 mi diye sormuyor çünkü bir switch yapısında programımız kere evet cevabını aldıktan sonra diğer case leri sorgulamadan break; görene kadar içindeki işlemleri yapmaya devam eder yani ekrana Girdiğiniz ay ilkbahar mevsimindedir yazdırır ve sonra break; gördüğü için devamını çalıştırmayı bırakır ve switch case in sonundaki kıvırcık paranteze gider ve ordan kodları çalışmaya devam eder.
Önceki dersimizde if ve if-else'in nasıl kullanılacağını görmüştük ve en son bi alıştırma yazmıştım başlamadan önce onun cevabını verip bugünkü dersimize o örnek üzerinden giriş yapalım.İstediğim alıştırmada kullanıcıdan iki sayı istiyorduk ve bu sayılardan büyük olanı ekrana yazdırıyorduk.
PHP:
#include<stdio.h>
int main()
{
int x,y;
printf("İlk sayıyı giriniz : ");
scanf("%d",&x);
printf("İkinci sayıyı giriniz : ");
scanf("%d",&y);
if( x > y )
{
printf("Büyük olan sayı %d'dir. ",x);
}
if( y > x )
{
printf("Büyük olan sayı %d'dir. ",y);
}
return 0;
}
Bu alıştırmada gördüğünüz gibi iki tane if kullandık ve hangi değişkenimiz büyükse onu yazdırmasını istedik.Burda hazır yeri gelmişken söylemek istediğim çok önemli bir şey var eğer if yapısında sadece bir tane işlem yaptırıyorsak bu örneğimizdeki gibi(sadece bir kere printf'i kullanmışız.) kıvırcık parantezleri kullanmadan da yaptırabiliriz yani bu kodu düzenlicek olursak.
PHP:
#include<stdio.h>
int main()
{
int x,y;
printf("İlk sayıyı giriniz : ");
scanf("%d",&x);
printf("İkinci sayıyı giriniz : ");
scanf("%d",&y);
if( x > y )
printf("Büyük olan sayı %d'dir. ",x);
if( y > x )
printf("Büyük olan sayı %d'dir. ",y);
return 0;
}
Kodumuz düzgün çalışıyor fakat bu kodu değiştirip daha güzel yapabiliriz.Çünkü x'in y den büyük oldugunu düşünelim dikkat ederseniz ilk olarak x, y den büyük mü diye sorduk ve x büyük oldugu için içindeki kodu çalıştırdık ve sonra öteki if koşulunda ise y büyük mü diye sorduk halbuki sormamıza gerek yoktu çünkü öncesinde x in büyük oldugunu görmüştük işte böyle durumlarda else if imdadımıza yetişiyor hemen bu örneğimiz üzerinde göstereyim.
if-else if
PHP:
#include<stdio.h>
int main()
{
int x,y;
printf("İlk sayıyı giriniz : ");
scanf("%d",&x);
printf("İkinci sayıyı giriniz : ");
scanf("%d",&y);
if( x > y )
{
printf("Büyük olan sayı %d'dir. ",x);
}
else if( y > x )
{
printf("Büyük olan sayı %d'dir. ",y);
}
return 0;
}
diğer koddan farklı olarak ikinci if yapısının önüne else koyuyorum ve bunun sayesinde önceki koşulumuz sağlanıyorsa program ikinci defa hiç sorgulamıyor.
Bu koda ek olarak geçen ders gördüğümüz Birkaç şeyi de ekleyip daha düzgün bi hale sokabiliriz.
PHP:
#include<stdio.h>
int main()
{
int x,y;
printf("İlk sayıyı giriniz : ");
scanf("%d",&x);
printf("İkinci sayıyı giriniz : ");
scanf("%d",&y);
if( x > y )
printf("Büyük olan sayı %d'dir. ",x);
else if( y > x )
printf("Büyük olan sayı %d'dir. ",y);
else
printf("İki sayıda eşittir");
return 0;
}
Bu örnekler üzerinden genel yazılışı çıkartcak olursak:
PHP:
if(koşul)
{
işlem(ler)
}
elseif(koşul2)
{
işlem(ler)
}
else
{
işlem(ler)
}
Birleşik Operatörler
Birleşik operatörleri kontrol etceğimiz koşulun birden fazla parametreye bağlı olması durumunda kullanırız.
&& ---------- and------------ve
|| -------------- or ---------- veya
Kullanılışıyla ilgili örnek olarak kullanıcının bir not girmesini isteyelim ve bu not
60 ile 65 arasındaysa DD
65 ile 70 arasındaysa DC
70 ile 75 arasındaysa CC
75 ile 80 arasındaysa CB
80 ile 85 arasındaysa BB
85 ile 90 arasındaysa BA
90 ile 100 arasındaysa AA yazdıran bir program yazalım.
Kullanıcıdan aldığımız değişkenin adı x olsun.Şimdi burda bizden isteneni şu şekilde de söyleyebiliriz
eğer x değişkeni 60'dan büyük ve 65 den küçük eşit ise DD yazdır
eğer x değişkeni 65'den büyük ve 70 den küçük eşit ise DC yazdır
eğer x değişkeni 70'den büyük ve 75 den küçük eşit ise CC yazdır
eğer x değişkeni 75'den büyük ve 80 den küçük eşit ise CB yazdır
eğer x değişkeni 80'den büyük ve 85 den küçük eşit ise BB yazdır
eğer x değişkeni 85'den büyük ve 90 dan küçük eşit ise BAyazdır
eğer x değişkeni 90'dan büyük ve 100 den küçük eşit ise AA yazdır.
PHP:
int main()
{
int x;
printf("Bir not giriniz : ");
scanf("%d",&x);
if(x>60 && x<=65)
printf("Alınan notun harf karşılığı : DD");
else if(x>65 && x<=70)
printf("Alınan notun harf karşılığı : DC");
else if(x>70 && x<=75)
printf("Alınan notun harf karşılığı : CC");
else if(x>75 && x<=80)
printf("Alınan notun harf karşılığı : CB");
else if(x>80 && x<=85)
printf("Alınan notun harf karşılığı : BB");
else if(x>85 && x<=90)
printf("Alınan notun harf karşılığı : BA");
else if(x>90 && x<=100)
printf("Alınan notun harf karşılığı : AA");
return 0;
}
Switch Case
Switch Case'in yapısı else if yapısına çok benzemektedir fakat switch case de sadece bir değişkeni kontrol edebiliriz ve sadece eşit oldugu durumlara kontrol edebiliriz ayrıca switch case de break; komutunu koymazsak diğer durumları sorgulamadan içinceki kodları çalıştırmaya devam eder yapısı şu şekildedir
PHP:
switch( değişken)
{
case sabit1:
işlem(ler)
break;
case sabit2:
işlem(ler)
break;
.
.
case sabitk:
işlem(ler)
break;
default:
işlem(ler);
}
break; komutunu kullanmak zorunlu değildir fakat kullanmazsak koşulun sağlandığı andan itibaren diğer durumlar için sorgulama yapmaz ve devamındaki kodları çalıştırmaya devam eder.
default ise hiçbir koşulun sağlanmadığı durumda yapılması gereken işlemleri içerir yani if yapısındaki else komutuna benzemektedir.
Örnek olarak kullanıcıdan bir ay girmesini isteyelim ve bu ayın hangi mevsim olduğunu bulmaya çalışalım.
Kış : Aralık Ocak Şubat
İlkbahar : Mart Nisan Mayıs
Yaz : Haziran Temmuz Ağustos
Sonbahar : Eylül Ekim Kasım
PHP:
#include<stdio.h>
int main()
{
int x;
printf("Bir ay giriniz : ");
scanf("%d",&x);
switch(x)
{
case 12 :
case 1 :
case 2 :
printf("Girdiğiniz ay kış mevsimindedir");
break;
case 3 :
case 4 :
case 5 :
printf("Girdiğiniz ay ilkbahar mevsimindedir");
break;
break;
case 6 :
case 7 :
case 8 :
printf("Girdiğiniz ay yaz mevsimindedir");
break;
case 9 :
case 10 :
case 11 :
printf("Girdiğiniz ay sonbahar mevsimindedir");
break;
default :
printf("Yanlış bir giriş yaptınız.");
}
return 0;
}
Programı çalıştırıp 4 girdiğimizi düşünelim program ilk önce bunun 12 mi olduğunu sorguluyo ve 12 olmadığı için birşey yapmadan devam ediyor sonra 1 mi diye sorguluyor yine olmadığı için devam ediyor ve 4 e geldiğinde ise evet cevabını alıyor oraya hiçbir kod yazmadığımız için birşey çalıştırmadan devam ediyor fakat 5 mi diye sormuyor çünkü bir switch yapısında programımız kere evet cevabını aldıktan sonra diğer case leri sorgulamadan break; görene kadar içindeki işlemleri yapmaya devam eder yani ekrana Girdiğiniz ay ilkbahar mevsimindedir yazdırır ve sonra break; gördüğü için devamını çalıştırmayı bırakır ve switch case in sonundaki kıvırcık paranteze gider ve ordan kodları çalışmaya devam eder.