Jan 1, 0001  

title: Java Dersleri 3 - Kontrol Yapıları link: http://orhanbalci.net/tr/?p=77 author: Orhan Balci description: post_id: 77 created: 2009/04/08 22:06:45 created_gmt: 2009/04/08 20:06:45 comment_status: open post_name: java-dersleri-3-kontrol-yapilari status: publish post_type: post

Java Dersleri 3 - Kontrol Yapıları

[caption id=“attachment_792” align=“aligncenter” width=“600” caption=“Java Dersleri 3”]Java Dersleri 3[/caption] 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ı: [java] if(doğrulanabilir ifade) { doğru ise çalışacak ifadeler; } [/java] ş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 [java] if(doğrulanabilir ifade) tek ifade; [/java] kullanımı doğrudur. Test edilen durumun yanlış olması durumunda çalışacak kod bloğunu ise “else” anahtar kelimesiyle belirtiyoruz. [java] if(doğrulanabilir ifade) { doğru ise çalışacak ifadeler; } else { yanlış ise çalışcak ifadeler; } [/java] 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. [java] 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; } [/java] 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 : [java] boolean a = false; if(a = true) { System.out.println(“a doğrudur”); } [/java] 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 : [java] ireturnValue = (x>y) ? x :y; [/java] Örnek if-else if-else bloğu : [java] 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; [/java] 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 [java] for(döngü değişkeni tanımı; döngü kontrol ifadesi; döngü ilerleme ifadesi) { döngü gövdesi; } [/java] Örnek : [java] 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 p = new Point2D(k, j); al.add(p); } [/java] 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ı : [java] for(eleman : array) { döngü gövdesi; } [/java] şeklindedir. Örnek : [java] ArrayList> al = new ArrayList >(); for(Point2D a : al) { System.out.println(a); } [/java] 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ı: [java] while(döngü kontrol ifadesi) { döngü gövdesi; } [/java] ş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ı: [java] do { döngü gövdesi; }while(döngü kontrol ifadesi); [/java] 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ı : [java] switch(ifade) { case sabit : kod bloğu; case sabit 2: kod bloğu; …. default: kod bloğu; } [/java] ş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 : [java] switch(1) { case 1: System.out.println(“sayi bir”); case 2: System.out.println(“sayi iki”); default: System.out.println(“varsayilan”); } [/java] çıktı olarak : sayi bir sayi iki varsayilan verecektir.

Comments

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

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 .. :!:

iicocuk: 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 :)

semih özkan: 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.

admin: 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.