Sıfırdan Java programlama dersleri serisine  “Java Programlama Dersleri, Karar Kontrol Yapıları If, Switch” konusu ile devam ediyoruz.

Karar Kontrol yapıları, programımız çalışırken programın yönlendirilmesini sağlar. Mesela bir şart sağlandığında ne olacağı ya da sağlanmadığında neler olacağı şeklinde düşünebilirsiniz.

If Yapısı, if Kullanımı

 

If yapısı, Java’da condition olarak belirtilen şartın sağlanması durumunda statement olarak ifade edilen eylemlerin yapılması esasına dayanır. Yani eğer şart doğruysa şunu yap demektir.

Programlarda bir şart varsa şartın sonucu olarak doğru ya da yanlışı içerisinde tutacak boolean değişkenler kullanılır. boolean veri tipi içerisinde ya true ya da false değeri tutar.  If kullanımını ufak bir kod uygulaması ile gösterelim :

Kodumuzu açıklayalım. Başlangıçta sart adında boolean veri tipinde bir değişken tanımlayarak içerisine false değerini koyduk. Sonrasında bu değişkene true değerini atadık.

Hemen sonrasındaki if condition koduna geldiğinde derleyici sart doğru mu değil mi araştırır. sart doğru ise if ifadesinin içerisinde yer alan kodu işler. Yani ekrana “Şart sağlandı, bu kod çalıştı.” yazısı yazılacaktır. Uygulamamızın sonucu aşağıdaki gibidir :

If condition yapısında mantık; şart sağlandığında if içeriğindeki kodların işlenmesi, sağlanmıyor ise bu kodların pas geçilmesidir.

Bugüne kadar işlediğimiz derslerde genelde bloklarla çalışmaya alışmıştık. Ama gördüğünüz üzere tek satırlık if yapısı içerisinde bir blok yapısı kullanmadık. Bunun sebebi if içerisindeki kodun tek ifadeden (kod) oluşmasıdır. Birden fazla işlenecek kod olsaydı blok kullanmak zorunda kalırdık.

Her ne kadar derleyici if kullanımı içerisinde tek satırlık ifadelerde blokları şart koşmuyor olsa da, tavsiye edilen her zaman blok konulmasıdır.

if kullanımını örneklendirmek adına bir uygulama daha yapalım.

Bu kod ile if kontrol yapısı hakkında basit bir örnek yaptık.

İlk olarak ogrenciNotu adında int tipinde ve değeri 89 olan bir değişken tanımladık. Sonrasında if condition yapısı içerisine girdiğinde ogrenciNotu > 85 şartı sorgulandı. ogrenciNotu, 85 den büyük olduğu için (89 > 85) blok içerisindeki kodlar işlendi. Sonuç aşağıdaki gibidir :

If Else Yapısı, Kullanımı

 

if kullanımı hakkında konuşurken if yapısı içerisindeki şart sağlanıyorsa içerisindeki blokların işlendiğinden bahsetmiştik. Peki, şart sağlanmadığı bir durumda ne yapması gerektiğini söylememiz gerekseydi ne yapardık. Burada if else yapısı devreye girer.

if else yapısı kullanımını görmek için basit bir kod yazalım.

Kodumuzu inceleyelim. İlk olarak ögrenciNotu adında int bir değişken tanımlanarak içerisine 89 değeri atanmıştır. Sonra if else yapısına gelinmiştir. Burda ogrenciNotu’nun 85 den büyük olma durumu sorgulanmış ve cevap evet olduğundan sadece bu kısım işlenmiştir. Else kısmına geçilmemiştir.

Son olarak ogrenciNotu değeri ekrana basılmıştır. Uygulamamızın çıktısı aşağıdaki gibidir :

ogrenciNotu 75 olsaydı bu sefer else bloğu içerisindeki kodlar işlenecek ve ekrana

yazılacaktı. if else yapısının  en basit haliyle temel çalışma mantığı budur. Peki bizim birden çok durumu sorgulamamız gerekseydi bu durumda nasıl bir if else yapısı kullanırdık. Uygulamasını görelim :

Programımızı inceleyelim. İlk olarak sayi1 ve sayi2 adında int tipinde iki farklı değişken tanımlayıp içerisine değerleri atadık. Sonrasında if else yapısını bu iki sayıyı karşılaştıracak bir hale getirdik.

Programımız sayi1 ve sayi2 değerlerini karşılaştırıyor. Eğer sayi1, sayi2 ye eşitse ekrana “Sayılar eşittir.” yazılacaktır. sayi1, sayi2 den büyükse ekrana “Sayi1, sayi2’den büyüktür.” yazılacaktır. Bu iki şartda sağlanmadıysa else bloğuna girilecek ve  ekrana “Sayi1, sayi2’den küçüktür.” yazılacaktır.

” == ” operatörü iki değişkenin eşit olup olmadığını kontrol eder. ” ! ” not operatörü ise bir değerin tersini almayı sağlar. ” !=” eşit değil operatörü de iki ifadenin eşit olmama durumunu kontrol için kullanılır.

Sonuç aşağıdaki gibidir:

Program if else yapısından çıktıktan sonra Sayi1 ve Sayi2 nin değerlerini ekrana yazdıracaktır.

if else yapısında unutmamamızın gereken şey her defasında sadece bir bloğun işleneceğidir.Bunu örnekle gösterelim :

Kodumuzu incelediğimizde ogrenciNotu adında bir int değişkenimizin olduğunu ve 89 değerinin atandığını görüyorsunuz. Sonrasında farklı şartları sağlayan if else yapıları kullanılmıştır.

Programda ilk if yapısına gelindiğinde şart sağlanmayınca ogrenciNotu ikinci else if bloğuna geçecektir. 89>80 olduğundan bu blok işlenecektir.

Sizlerinde gördüğü gibi sonraki else if yapılarının hepsi bu şartı sağlamaktadır. Ancak bir if yapısına girdikten sonra diğerlerine girmeyecek sadece bir blok işlenecektir. Programın çıktısı aşağıdaki gibidir :

if else kullanımı – Uygulama

 

if else kullanımı ile alakalı son bir örnek daha vermek istiyorum. if yapısı içerisinde hep bir şart kullandık ancak if condition yapısı içerisinde tek bir şartın kullanılması gerekir şeklinde bir kural bulunmamaktadır. Yani if yapısı içerisinde birden fazla şarta yer verebilirsiniz. Nasıl mı?

Uygulama üzerinde görelim :

Programımızda int tipinde ay ve String tipinde mevsim adında iki değişken tanımladık. Amacımız ay olarak belirttiğimiz int değişkene verilen sayısal değerin hangi mevsim içerisinde yer aldığını bulmaktır.

Bunun için farklı şartları içeren if else yapıları kullandık. Diğer uygulamalarımızdan farklı olaran her bir if sorgusunun içerisine “veya” || operatörü kullanarak 3 ayrı sorguyu yerleştirmemiz oldu.

“ay == 3 || ay == 4 || ay == 5” sorgusu ay değişkeni 3 ise ya da 4 ise ya da 5 ise bu üç seçenekten biri doğru ise anlamına gelir. Bizim ay değişkenimiz 4 olduğundan bu sorgu doğru olarak değerlendirilecek ve içerisindeki blok işlenecektir.

|| veya operatörü Matematik’teki toplama işlemi gibi davranır. İki bitlik bir veri düşünün 0 ve 1 gibi. Verilerimiz, 0+1, 1+1, 1+0 yani bitlerden herhangi birinin 1 olması durumunda sonuç doğru olacaktır.

&& ve operatörü ise Matematik’teki çarpma işlemi gibidir. Verilen iki bit değerinden her hangi biri 0 olursa sonuç yanlış olacaktır. 0x1, 1×0, 0x0 gibi.

Sonuç aşağıdaki gibidir :

Artık Yıl Hesaplama – Uygulama

 

Artık Yıl Hesaplama programı, şüphesiz if else kullanımı için en uygun örneklerden biridir.

Programımız kendisine verilen yılda şubat ayının 28 çekip çekmediğini kontrol ediyor.

Eğer çekiyorsa “artık yıl değildir” demesi gerekiyor. Burada dikkat etmemiz gereken kısım if condition yapısındaki sorgunun kompleksliğidir. if else kullanımındaki şart ifadesinin sade olması gibi bir şart aranmamaktadır. Sonucumuz aşağıdaki gibidir :

Sonuca göre 2018 yılında şubat ayı 28 çekmiştir.

 

İç içe If Yapısı, Kullanımı

 

Bazı durumlar vardır ki, iç içe if yapısı kullanmayı gerektirir. İç içe if yapısının kullanımını görmek için basit bir örnek yapalım:

Programımızda en dışta bulunan if yapısı sayi değerinin sıfır olup olmadığını kontrol ediyor. Eğer sayi değişkeni sıfırdan farklı ise if yapısının içerisine giriliyor.

Bu sefer farklı bir if ile karşılaşılıyor. Bu if yapısı da sayi değişkeninin sıfırdan büyük olup olmadığı durumunu sorguluyor. Eğer büyükse if bloğu küçük ise else bloğu işleyecektir. “!=” operatörü eşit değil operatörüdür. 1/8 değerinin int değeri 0 dır. Dolayısıyla sonuç aşağıdaki gibidir :

Switch Case Yapısı, Kullanımı

 

Switch case yapısı da if else yapısı gibi karar kontrol yapılarındandır. Ancak if else yapısı ile karşılaştırıldığında daha spesifik bir kullanım alanı vardır.

Bu yapıda switch(durum) ifadesi içerisindeki duruma göre ilgili case bloğu çalıştırılacaktır. Ve her case bloğundan break anahtar kelimesine gelindiğinde çıkılacaktır.Uygulamasını görelim :

Programımızı inceleyelim. İlk olarak int tipinde adı i olan ve değeri 0(sıfır) olan bir değişken tanımladık. Program switch yapısına geldiğinde i değerine göre ilgili case bloğuna geçecektir. O blok işlenince break anahtar kelimesini görecek ve çıkacaktır.

i değeri 0(sıfır) olduğundan case 0:  bloğuna gelecektir ve ekrana “i değeri : 0 dır.” yazacaktır.  ve switch case yapısından çıkacaktır. Eğer ki i değeri; 0,1,2,3 değerleri dışında bir değer alsaydı bu sefer default bloğu işlenecek ve sonrasında switch case yapısından çıkacaktı.

Programımızın sonucu aşağıdaki gibidir :

switch case yapısının genel kullanımı bu şekildedir.  Peki break anahtar kelimesini kullanmasaydık. Neler olurdu? Yukarıdaki programımızdaki break anahtar kelimelerini kaldırarak tekrardan derleyelim.

Kodumuzdaki bütün break anahtar kelimelerini kaldırdık. break anahtar kelimesinin switch case yapısından çıkmaya yaradığını söylemiştik. break anahtar kelimesi olmazsa, program hangi case yapısına girmişse ondan sonrakilere de girerek devam edecektir. Sonucu görelim :

Şimdi switch case yapısı ile alakalı bir uygulama daha yapalım :

Uygulamamız verilen sayısal ay değerinin metinsel karşılığını ekrana yazdırıyor. Bunun için int tipinde ay, bir de string tipinde ayMetin değişkenlerini ilk değer atamaları ile birlikte tanımladık.

ay değişkenine 4 değerini atadık. switch case yapısındaki durum kısmına da ay değerini koyduk. switch case yapısına giren program ay değerinin 4 olduğunu görecek ve case 4 blog yapısını işleyecektir. break anahtar kelimesini gördükten sonra da bu yapıdan çıkacaktır.

case 4 bloğunda ayMetin adlı değişkene “Nisan” değeri atanmıştır ve programın sonunda bu değişken ekrana yazdırılmıştır. Programımızın sonucu aşağıdaki gibidir :

Ay, Mevsim Bulma – Uygulama

 

Şimdi de if else yapısı ile yapmış olduğumuz ay mevsim bulma uygulamasını switch case yapısı ile yapalım. Uygulamamız :

Programımızda ay ve mevsim adında iki değişken tanımladık. int tipinde olan ay değişkenimize 4 değerini atarken string tipindeki mevsim değişkenimize boş string ataması yaptık. Amacımız verilen ay değerinin hangi mevsime ait olduğunu bulmaktır.

Bunun için switch (durum) case yapısında durum ile belirttiğimiz yere ay değişkenimizi koyduk. Derleyici 4 değerini gördüğünde case 4 kısmına yönlenecektir. Bu kısımda herhangi bir kod ve break anahtar kelimesi olmadığından case 5 e geçecek ve burdaki kodları işlenecektir.

mevsim değişkenine “İlkbahar” ataması yapıldıktan sonra break anahtar kelimesine gelinecek ve bu yapıdan çıkılarak  System.out.println() metodu ile ekrana değeri yazdırılacaktır. Programımızın çıktısı aşağıdaki gibidir :

if yapısını anlatırken iç içe if else yapılarını göstermiştik, switch case yapısında da iç içe switch kullanımı mümkündür.

Java Programlama Dersleri, Karar Kontrol Yapıları If, Switch” dersimizi burada noktalıyoruz. Konuyla alakalı takıldığınız, merak ettiğiniz soruları aşağıdaki yorum panelini kullanarak bizlerle paylaşabilirsiniz.

 

Pin It on Pinterest

Daha fazla Java
Java Programlama Dersleri, Operatörler
Java Programlama Dersleri, Operatörler

Sıfırdan Java programlama dersleri serisine  “ Java Programlama Dersleri, Operatörler” konusu ile devam ediyoruz.

Kapat