Fırat Ağış ile Java Bölüm 4: Kontrol İfadeleri

Yahya Ömer Kaya         No comments


Kontrol ifadeleri programınızı kontrol ederken kullanacağınız komutlardır. Programa nerede nasıl davranması gerektiğini söylerler. Bu derste size if-else, switch-case, for, while ve do-while komutlarından bahsedeceğim.




İf
İf kelime anlamı olarak eğer demek olup tam olarak bu şekilde çalışır.

if(durum){
   gövde
}

Eğer if'in içindeki durum sağlanıyorsa gövde gerçekleşir, gövde gerçekleşmeyi bitirdiğinde if'in ardındaki ifadeler gerçekleşmeye devem eder. Ama bununla ilgili şu ki if''in ardından gelen ifade daima gerçekleşir. Bunu engellemek için else komutu kullanılır. Kelime anlamı aksi taktirde demektir.

if(durum){
   gövde1
}else{
   gövde2
}

Durum sağlanıyorsa gövde1 sağlanmıyorsa gövde2 gerçekleşir. Eğer bir şey birden fazla şeye eşit olabilirse ve hepsinde farklı bir şey yapılacaksa yapılabilecek şeylerden biri if-else merdiveni kurmaktır. Belli basitlikteki programlarda art arda if ler de işinizi görebilir ama if-else merdiveninin en büyük avantajı sadece birinin gerçekleşebilir olması.

if(durum1){
   gövde1
}else{
   if(durum2){
      gövde2}else
...
        else(
           if(durumn){
              gövden
           }

Burada sadece bir duruma ait gövde gerçekleşebilir. Birden fazla durum sağlanıyor olsa bile en baştaki sağlanan durumun gövdesi gerçekleşir ve program devam eder. Birden fazla durumu denetliyorsak kullanabilecek en iyi yöntem budur ama eğer tek bir değerliliği gözlüyorsak en kolayı kesinlikle switch-case dir.

Switch-Case
Bu komut bir değerliliğin değerini kontrol etmek için kullanılır. Genel mantığı if-else gibi görünse de aslında çok farklıdır. Çalışma prensibine örnek olarak;

int gün;
...

switch(gün){
   case 1:
      System.out.println("Pazartesi ");
      break;
   case 2:
      System.out.println("Salı ");
      break;
   case 3:
      System.out.println(" Çarşamba");
      break;
   case 4:
      System.out.println("Perşembe ");
      break;
   case 5:
      System.out.println("Cuma ");
      break;
   case 6:
      System.out.println("Cumartesi ");
      break;
   case 7:
      System.out.println("Pazar ");
      break;
   default:
      System.out.println("Böyle bir gün yok ");
      break;
}
Bu program gün değerliliğinin 1 den 7 ye kadarki değerleri için haftanın günlerinden o sayıya karşılık gelenini söyleyip bunların dışındaki sayılar için Böyle bir gün yok çıktısını verecektir. Ama buradaki break komutuda neyin nesi. breake içinde bulunduğu komudun işleyişini bitirir. Örn;

if(durum){
   kısım1
   break;
   kısım2
}
kısım3

Bu programda durum sağlansa bile break yüzünden kısım1 den sonra kısım3 e geçilir. Bu tamamda switch te nasıl bir görevi vardır derseniz;

switch(gün){
   case 1:
   case 2:
   case 3:
   case 4:
   case 5:
      System.out.println("Hafta içi");
      break;
   case 6:
   case 7:
      System.out.println("Hafta sonu");
      break;
   default:
      System.out.println("Çıkmaz ayın son çarşambası");
}
gün'ün 1-5 değerleri için Hafta içi, 6-7 değerleri için Hafta Sonu, diğer değerleri için çıkmaz ayın son çarşambası değerleri elde edilir. default'a sonra zaten switch bittiği için break koymaya gerek yoktur. switch te sağlanan değerden başlanarak bütün kod gerçekleşir. Bunu engellemek için break kullanılır. Yani ilk programı break kullanmadan yazsaydık gün'ün 1 değeri için çıktı;

Pazartesi
Salı
Çarşamba
Perşembe
Cuma
Cumartesi
Pazar
Böyle bir gün yok

şeklinde olurdu.

Durum'a Yakından Bakış
Bir çoğunuz yazının başından beri "Tamam da bu durumlar nasıl şeyler?" diye düşünüyordu. Aslında bunu bir daha ki yazıma koyacaktım ama yazık bayram bayram işkence etme çocuklara dedim(Ayn zamanda bütün bayram maillarla uğramak istemedim) ve bunu size basitçe açıklayacağım. Basitçe olmayan açıklamam bir daha ki yazımda olacak. Bir durum yaratmak için operatörleri kullanırız. Operatörleri değerlililk işlemenin kısayolları olarak düşünebilirsiniz. Bir operatör örneği olarak önceki yazımdaki ++ operatörü verilebilir. i++ aslında i = i +1 işlemin kısa yoludur. Bunlar değerlilik işlerken kullandığımız operatörlerdir. Burada size karşılaştırma yaparken kullandığımız operatörleri göstereceğim.

==(eşittir)
!=(eşit değildir)
<(küçüktür)
>(büyüktür)
<=(küçük eşittir)
>=(büyük eşittir)

Bunların hepsi bir boolean tipi değerlilik üretir. Eğer sağlanıyor ise bu değer true, sağlanmıyor ise false dur. Durumun true olması durumunda if gerçekleşir. Ama işin eğlenceli kısmı yukarıdaki aritmetik karşılaştırıcıların sonuçlarını mantıksal karşılaştırıcılar ile işlediğimizde başlar. Bunlar;

& ya da && (AND)
| ya da || (OR)
^(XOR)

Nasıl çalıştıklarını kısacak açıklmak gerekirse;

A
B
AND
OR
XOR
true
true
true
true
false
true
false
false
true
true
false
true
false
true
true
false
false
false
false
false

Anlamadığınız bir yer varsa sallayın gitsin zaten sonra anlatacağım.(Ya da bunları zaten biliyorsun der geçerim kim bilir?)

Not: Bir daha ki derste anlatacağım sebeplerden dolayı && ve || , & ve | ya göre daha hızlı çalışır.

Not: == ile = farklıdır. == kaşılaştırıcı = işleyicidir. i == x bir boolean değeri türetirken i = x i'nin değerini x'in değerine eşitler.

For
for benim favorim olup kafa haşlar niteliktedir. İyi programcı olup hala for'u kullanamayan arkadaşlarım var(o kendini biliyor) ama korkmayın, bu kesinlikle onun geri zekalılığı(evet sana diyorum). Neyse for'un temel yapısı şu şekildedir.

for(değer atama; koşul; eylem){
gövde
}

Bu ne demek derseniz(bence de, iki bilinmeyenli denklem çözücü yazıyorsun ama daha bunu bile bilmiyorsun) önce bir değerlilik tanımlanır ve değer ataması yapılır. Ardından koşul gelir. Koşul true olduğu sürece for döngüsü devam eder. Son olarak bir eylem belirlenir. Bunların çalıma mekanizması aşağıdaki gibidir.
Sizin için paintte çizdim değerimi bilin. Buna örnek olarak şu program gösterilebilir.

for(int i = 0; i < 10,i++){

System.out.println(i);

}

Burada println komutu i nin değerini yazdırır.Çıktı aşağıdaki gibidir.

0
1
2
3
4
5
6
7
8
9

i = 10 olunca koşul false olur ve döngü biter.

While ve Do-While
while içindeki koşul sağlandığı sürece tekrar eden bir döngüdür. Bir nevi basitleştirilmiş for'dur(sen zaten anca bunu yap denklem çözücü). Ama en başta koşul sağlanmıyorsa while döngüsü başlamadan biter. do-while da ise koşul döngü bir kez tamamlandıktan sonra kontrol edilmeye başlar.

while(koşul){
gövde
}

do-while(koşul){
gövde
}

Not: break for, while ve do-while ın işletişini kesmek içinde kullanılabilir.

Sorularınız için firat@sibnetz.com dan bana ulaşabilirsiniz.(sen ulaşma). Herkese iyi bayramlar.

Fırat Ağış
QERGH
Yazar: Yahya Ömer Kaya


Follow us Google+.

0 yorum:

My Blogger Themes