Temel Java 3. Gün: Karar Yapıları, Döngüler, Metodlar
Karar Yapıları
Karar yapıları programın akışını değiştirmek, programı yönlendirmek gibi amaçlar ile kullanılan yapılardır.
Bu yapıları basitçe dörde ayırabiliriz;
- if
- if else
- if else if … else
- switch
If
Belirtilmiş bir şartın sağlanması durumunda çalışacak kod blokları için kullanılır.
Tanımlanışları;
1 | if(şart) { |
Karar verme yapılarında tek şart kısmına ve/veya mantıksal operatörlerini kullanarak birden fazla şart yazabilirsiniz. Örneğin;
1 | // ve |
If Else
Belirtilmiş bir şartın sağlanması ve sağlanmaması durumu olmak üzere iki yönden birine yönlendirmek için kullanılır.
Tanımlanışları;
1 | if(şart) { |
If Else If … Else
Belirtilmiş şartların sayısınca programı yönlendirmek için kullanılır.
Tanımlanışları;
1 | if(şart) { |
Bu yapıda ilk if ifadesinden sonra istediğimiz kadar else if ile kontrol yapabiliriz.
Fakat bu yapının abartılması her dilde kod okunabilirliğini azalttığı için ben, 2-3 şarttan fazlası için kullanmamayı, bunun yerine daha fazla şartın/kontrolün olduğu durumlarda switch yapısını kullanmayı tercih ediyorum.
Herkese de aynısını öneriyorum.
Switch
Belirtilmiş şartlar/durumlar aracılığıyla programa yön vermek için kullanılır.
Bazı durumlarda bir önceki If Else If … Else yapısının yerine daha iyi bir çözüm olarak kullanılabilir.
Tanımlanışları;
1 | switch(ifade) { |
Tüm karar yapılarını tek tek örneklemek yerine yazı sonundaki basit bir hesap makinesi örneği aracılığıyla açıklamayı hem daha sade oluşu hem de kaynak kod içerisinde nerelerde, nasıl, hangi amaçlar için kullanıldığını gösterdiği için daha doğru buluyorum. O yüzden açıklamaları örneğe bırakıyorum.
Döngüler
Belirli şartlar gerçekleştiği sürece kendi kod bloğunu çalıştıran yapılara döngüler denir.
Aynı/benzer işlemleri birden fazla yaparken kod tekrarından kaçınmak / kod tekrarını azaltmak için kullanılırlar.
Dört döngü türü vardır. Bunlar;
- for
- while
- do while
- foreach
For
Üç temel kısımdan oluşur; tanımlama, koşul, güncelleme.
Tanımlama döngüye ilk girişte çalışır. (Tek sefer)
Koşul her döngü işleminde kontrol edilir.
Güncelleme ise her döngü işleminden sonra, koşul kontrolünden önce çalışır.
Tanımlanışları;
1 | for(tanımlama; koşul; güncelleme) |
Örnek;
1 | for(int i = 0; i < 5; i++) { |
While
For döngüsüne göre daha sadedir. Sadece koşul kısmından oluşur.
Koşul doğru olduğu sürece kod bloğunu işler.
Tanımlanışları;
1 | while (koşul) { |
Eğer for için verdiğimiz örneği while döngüsüne dönüştürmek istersek şöyle bir ifademiz olur;
1 | int i = 0; |
Her ne kadar iki yapıyı da aynı durumlar için kullanabilirsek de şu ana kadar tecrübe ettiğim kadarıyla genelde yerleri biraz farklıdır.
Belirli bir süre kodlama ile uğraştıktan sonra döngü kullanacağınız zaman hangisinin daha mantıklı olduğunu anlar hale geliyorsunuz.
Do While
Bu döngü yapısının while döngüsünden tek farkı döngü bloğuna her durumda en az bir kez girip, bloğu çalıştırmasıdır.
Tanımlanışları;
1 | // yap |
Özetle bu ifade önce işi yapmaya başlar, ilk işten sonra ise kontrol etmeye başlar.
Foreach
Bir de bu döngülere ek olarak Java 5 ile birlikte gelen gelişmiş for döngüsü (foreach olarak da adlandırılır) genellikle veri koleksiyonlarında gezinme amaçları ile kullanılır.
Tanımlanışları;
1 | for(tanımlama : koleksiyon) |
Önceki gün yaptığımız dizi örneğini buraya taşıyacak olursak şöyle olacaktır;
1 | package com.isiksistem; |
Çıktımız yine aynı olacaktır;
1 | Mehmet Emekli |
Döngü Kontrol İfadeleri
İfade | Açıklama |
---|---|
continue | bu ifade kullanıldığında döngü, bu ifadeden sonraki kodları atlar ve koşul kontrolünü yaparak sonraki işleme geçer. |
break | bu ifade çalıştığında döngü tamamen sonlandırılır yani döngüden çıkılır. |
Metodlar
Metodlar kaynak kodların okunabilirliğini artırmak, kod tekrarını azaltmak gibi verimli amaçlar için kullanılmaktadırlar.
Kaynak kodunuzun tamamını yapboz olarak düşünürseniz metodlar sizin yapboz parçalarınız olacaktır.
Tek farkı bu parçaları (metodları) istediğiniz yerde (erişim şartlarına uyulması kaydıyla) kullanabilmenizdir.
Tanımlanışları;
1 | erişimBelirteci veriDonusTipi metodIsmi (parametre listesi) { |
Çağrılışları;
1 | metodIsmi(gönderilecek parametre listesi); |
Örnek metodlar;
1 | public static int ikiSayiyiTopla(int birinciSayi, int ikinciSayi) { |
Bu metodları şu şekilde çağırdığımızda;
1 | System.out.println("5 + 10 = " + ikiSayiyiTopla(5, 10)); |
Çıktımız şu olacaktır;
1 | 5 + 10 = 15 |
Hesap Makinesi Örneği
Şimdi şu ana kadar öğrenilen bilgiler ile iki tamsayı ile işlem yapacak olan basit bir hesap makinesi yazalım.
Amaç: İki sayı arasında 4 işlem yapabilmek.
Çözüm: Amacı parçalara bölmek;
Kullanacağımız veriler: iki tam sayı
(diğer deyişle değişkenlerimiz: int birinciSayi, int ikinciSayi)
Yapacağımız işlemler; (diğer deyişle metodlarımız;)
- Toplama ( public static int topla(int birinciSayi, int ikinciSayi) )
- Çıkarma ( public static int cikar(int birinciSayi, int ikinciSayi) )
- Çarpma ( public static int carp(int birinciSayi, int ikinciSayi) )
- Bölme ( public static int bol(int birinciSayi, int ikinciSayi) )
Not: Java’da derleyici içinde girdi almak uğraştırıcı ve şu an ki seviyeye göre zor olduğu için girdimizi sadece kendimiz için amatörce yapacağız.
Önce metodlarımızı yazalım;
1 | package com.isiksistem; |
Şimdi de ana fonksiyonumuza karar verme yapılarımızı ekleyelim;
1 | package com.isiksistem; |
Ve bunları birleştirelim. Son çalışır sürümümüz şu şekilde;
1 | package com.isiksistem; |
Bu örneği derleyip çalıştırdığımızda çıktımız şu şekilde oluyor;
1 | 22 |
sayi = 20 ve
sayi2 = 2 olduğundan toplamları 20 + 2 = 22 oldu.
Diğer fonksiyonları test etmeyi de size bırakıyorum.
Ben testlerde bir sorun görmedim fakat gözden kaçırdığım şeyler olabilir.
Böyle bir şey fark ederseniz bana anasayfada bulunan bağlantılardan ulaşıp bilgilendirirseniz sevinirim.
Bu yazıdan da bu kadar. Sonraki bölümde görüşmek üzere.
Sonraki Bölüm: Sınıflar, Nesneler:
Temel Java - 4. Gün: Sınıflar, Nesneler