Java Dersleri 3 – Kontrol Yapıları

Java Dersleri 3

Java Dersleri 3


Bu dersimizde Java’nın kodun akışına yön veren kontrol ifadelerinin kullanımını öğreneceğiz. Java kontrol ifadeleri
temel olarak şunlardan oluşmaktadır:

1)if-else if – else blokları
2)for ve foreach döngüleri
3)while ve do-while döngüleri
4)switch-case blokları

Şimdi sırasıyla bunları örneklerle açıklayalım.

1)if-else if-else blokları

Genel manada doğrulanabilir bir ifadenin sonucuna göre yazılımın dallanmasına olanak tanır. Temel bir “if”
deyiminin yapısı:

if(doğrulanabilir ifade)
{
	doğru ise çalışacak ifadeler;
}

şeklindedir. Burada doğrulanabilir ifadenin sonucu boolean veri tipinde olmak zorundadır. Burada bir diğer husus
ise if deyiminden sonra sadece bir ifade yer alacaksa parantezlerin kullanımı kullanıcıya bağımlıdır zorunlu değildir. Yani

if(doğrulanabilir ifade)
	tek ifade;

kullanımı doğrudur. Test edilen durumun yanlış olması durumunda çalışacak kod bloğunu ise “else” anahtar kelimesiyle belirtiyoruz.

if(doğrulanabilir ifade)
{
	doğru ise çalışacak ifadeler;
}
else
{
	yanlış ise çalışcak ifadeler;
}

Doğrulama durum sayısı arttığında ise bunu “else if” anahtar kelimesiyle belirtiyoruz. Burada kontrol etmek istediğimiz durum sayısı
kadar “else if” bloğu kullanabiliriz.

if(doğrulanabilir ifade)
{
	kontrol doğru ise çalışacak ifadeler;
}
else if(farklı doğrulanabilir ifade)
{
	kontrol doğru ise çalışacak ifadeler;
}
...

else
{
	yanlış ise çalışcak ifadeler;
}

Bloklar arası sıralama önemlidir. İsteğe bağlı “else if” blokları “if” bloğundan sonra “else if” bloğundan önce gelmelidir. Ayrıca
isteğe bağlı “else” bloğu mutlaka sonda yer almalıdır. Doğrulanabilir ifade yazarken yapılan en sık hatalardan bir tanesi karşılaştırma “==” operatörü yerine değer atama (assignment) “=” operatörünün kullanılmasıdır. Değer atama operatörünün sonucu değer atama işleminden sonra sol tarafta bulunan değişkenin değeridir. Örnekleyecek olursak :

boolean a = false;
if(a = true)
{
	System.out.println("a doğrudur");
}

Yukarıdaki kod parçasında amaç a nın doğru olup olmadığını tespit etmek iken yanlışlıkla a değişkenine doğru değeri atanıp ekrana “a doğrudur” mesajı basılır. Oysaki “=” yerine “==” kullanılsa ekrana herhangi birşey yazılmadığı görülecektir.
İf-else bloğu kullanmak yerine üçlü operatörü de kullanabiliriz. Üçlü operatörün kullanım şekli :

ireturnValue = (x>y) ? x :y;

Örnek if-else if-else bloğu :

if(subTreeNode == null)
            return false;
        else if(element.compareTo(elementAt(subTreeNode)) == 0)
            return true;
        else if(element.compareTo(elementAt(subTreeNode)) < 0)
            return search(element,subTreeNode.left);
        else if(element.compareTo(elementAt(subTreeNode)) > 0)
            return search(element, subTreeNode.right);
        else
            return false;

2)for ve foreach döngüleri
Döngüler kod içinde tekrarlanan bölümlerin tanımlanmasında kullanılırlar. For döngüsü tanımı temel olrak üç kısımdan oluşur :
a)Döngü değişkeni tanımı : döngü hayatını kontrol edecek değişkenin tanımlandığı ifade
b)Döngü kontrol ifadesi : döngünün bitip bitmeyeceğini kontrol eden ifade
c)Döngü ilerleme ifadesi : döngü ilerleme ifadesi, döngü değişkeninin güncellendiği ifade

for(döngü değişkeni tanımı; döngü kontrol ifadesi; döngü ilerleme ifadesi)
{
	döngü gövdesi;
}

Örnek :

 for (int i = 0; i < numberOfPoints; i++) {
            Random r = new Random();
            int k = r.nextInt(xUpperLimit) % (xUpperLimit - xLowerLimit) + xLowerLimit;
            int j = r.nextInt(yUpperLimit) % (yUpperLimit - yLowerLimit) + yLowerLimit;
            Point2D<Integer> p = new Point2D<integer>(k, j);
            al.add(p);
        }

Java 1.5 ile gelen syntax değişimlerinden biriside geliştirilmiş for döngüsü olarak adlandırılan for each döngüsüdür. Listelerde ve arraylarda rahat
bir şekilde gezinmek amacıyla geliştirilmiştir. Kullanımı :

for(eleman : array)
{
	döngü gövdesi;
}

şeklindedir.

Örnek :

ArrayList<Point2D <Integer>> al = new ArrayList <Point2D <Integer>>();
	for(Point2D<Integer> a : al)
        {
                System.out.println(a);
        }

Bu örnekte içinde Point2D tipinde nesneler barındıran bir liste elemanları geliştirilmiş for döngüsü kullanılarak ekrana yazdırılıyor.

3)while ve do-while döngüleri
while döngüleri tekrar edilecek kod bloğunun kaç defa tekrar edeceğini bilmediğimiz durumlarda kullanılır. Kullanımı:

while(döngü kontrol ifadesi)
{
	döngü gövdesi;
}

şeklindedir. For döngüsünden farklı olarak döngü kontrol değişkeninin tanımı while döngüsünden önce yapılmalıdır.
while(int i = 0) kullanımı yanlıştır.
do-while döngüsü while döngüsünden farklı olrak kapsadığı kod bloğunun en az 1 kere çalıştırılmasını garanti eder. Kullanımı:

do
{
	döngü gövdesi;
}while(döngü kontrol ifadesi);

4)switch-case blokları
switch-case blokları dallanmış if-else if-else bloklarını daha okunabilir hale getirmek için oluşturulmuştur. Genel yapısı :

switch(ifade)
{
	case sabit :
	kod bloğu;
	case sabit 2:
	kod bloğu;
	....
	default:
	kod bloğu;
}

şeklindedir. Burada “ifade” int,short,byte,char ve enum tiplerinde olabilir. Sabitler ise switch ifadesi tipiyle aynı tipte olmalıdır.
Yukarıdaki ifadede sabit ve sabit 2 değerleri aynı olamaz. Kod blokları sonunu “break” anahtar kelimesiyle belirtmezsek doğru case bloğunun altındaki
tüm bloklar çalışır.Yani :

switch(1)
{
	case 1: System.out.println("sayi bir");
	case 2: System.out.println("sayi iki");
	default: System.out.println("varsayilan");
}

çıktı olarak :
sayi bir
sayi iki
varsayilan
verecektir.

İlgili Yazılar:

  1. Java Dersleri 22 – Reflection ve Annotation Kullanımı Programlamaya ilk başladığınızda küçük projeler yaparsınız, dolayısıyla yaptığınız işlem sayısı,...
  2. Java Dersleri 19 – İstisnai Durumlar (Exceptions) Java’nın program akışı esnasında meydana gelebilecek hataları işleme mekanizmasına...
  3. Java Dersleri 20 – JAXB API – Java Nesnelerini XML Dökümanları ile Bağlama Daha önce bloğumuzda Java’da XML işlemlerini anlatan bir ders yayınlamıştık....
  4. Java 7 İle Gelen Yeni Özellikler Bildiğiniz üzere Java’nın major versiyon güncellemelerinde dile ait yeni özellikler...
  5. Java Dersleri 9 – Dosya Okuma/Yazma İşlemleri Bu derste sizlere Java’nın dosya işlemlerinden bahsedeceğim. Üç bölümlük...

  1. Merhaba Orhan bey yazdığınız makaleleri baştan aşağı okudum şahsen JAVA`ya başlamış yeni biri olarak hiçbirşey anlamadım.Makalelerinizi daha açıklayıcı yazarsanız biz yeni başlayanlar için daha aydınlatıcı daha öğretici olacağına emin olunuz.

    Başarılar.

  2. Semih bey öncelikle yorumunuz için teşekkür ederim. Elimden geldiğince kısa ve öz biçimde konuları aktarmaya çalışıyorum. Ama programlamaya Java ile başladıysanız buradaki derslerin anşlaşılmamasını normal karşılamak lazım. Buradaki dersler daha önce herhangi bir programlama diliyle ilgilenmiş ve Java öğrenmek isteyenlere daha çok hitab ediyor.Bir de hangi makalenin nasıl geliştirilmesi gerektiğini özel olarak belirtebilirseniz daha açıklayıcı örnekler vermeye çalışırım.

  3. akçadağlı

    :!: doğrusu bende fazla anlamadım ama emeğinize saygımız sonsuz.

  4. akçadağlı

    yazdığınız ve yardımcı olmaya çalıştığınız için tşk amaörnekler verip gösterirseniz daha faydalı olacağına inanıyorum .. :!:

  5. arkadaşlar buradaki if-else bloğunda mavi yazılan “do” lar hariç (doğrulanabilir ifadedeki do) mavi ile yazılan kelimeler zaten javanın kendi komutları. değişmez. { } arası bloklar da bu komutların kullanım şekli. adminin de dediği gibi hiç programlama bilmeyenlerin anlamaması normal :)

Fikrin geldiyse buraya yaz


[ Ctrl + Enter ]

Trackbacks and Pingbacks:

  • Anonim - Pingback on 2011/01/27/ 11:57