. Kontrol Deyimleri/İfadeler Kontrol deyimleri bir uygulamanın yürütülmesi sırasında program akışını yönlendiren yapılar/kalıplardır. Kontrol deyimi olmaksızın bir uygulama yazılması neredeyse olanaksıdır denilebilir. Java programlama dilinde toplam 4 adet kontrol ifadesi bulunur: Döngü : while, do-while, for Karşılaştırma : if-else, switch-case Dallanma İstisna : break, continue, label:, return : try-catch-finally, throw 2.4.1. Döngü Deyimleri Döngü deyimleri aynı işlemin farklı parametre değerleri üzerinde yapılması için kullanılan yineleme/tekrarlama işleri için kullanılır. Java’da C dilinde olduğu gibi while, do-while ve for olarak adlandırılan üç farklı döngü deyimi vardır. while Döngü Deyimi while deyimi belirli bir grup kod öbeğini döngü koşulu doğru (true) olduğu sürece devamlı yineler. Genel yazım şekli aşağıdaki gibidir: while (koşul) { çalışması istenen kod bloğu } Program akışı while deyimine geldiğinde döngü koşuluna bakılır; olumlu/doğru ise çevrime girerek çalışması istenen kod öbeği yürütülür; yineleme döngü koşulu olumsuz/yanlış olana kadar sürer. Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 1 Örnek: WhileOrnek.java public class WhileOrnek { int i = 0 ; //döngü kontrol değişkeni while (i < 5 ) { System.out.println("i = " + i); i++ ; } System.out.println("Sayma islemi tamamlandi."); } } Uygulamanın sonucu aşağıdaki gibi olur: i i i i i = = = = = 0 1 2 3 4 Sayma islemi tamamlandi. Örnek Uygulama: 1’den n(kullanıcıdan değerlerin toplamını bulup programı yazınız! alınan üst sınır)’e kadar sonucu ekrana yazdıran bir olan java do-while Döngü Deyimi Bu döngü deyimde koşul sınaması döngü sonunda yapılır; dolayısıyla çevrim kod öbeği en az birkez yürütülmüş olur. Genel yazım şekli ve çizimsel gösterimi aşağıdaki gibidir: do { çalışması istenen kod bloğu } while(koşul); Örnek: WhileDoOrnek.java public class WhileDoOrnek { public static void main(String args[]) { int i = 0 ; //döngü koşul değişkeni do { System.out.println("i = " + i); i++ ; } while ( i < 0 ); System.out.println("Sayma islemi tamamlandi."); } } Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 2 for Döngü Deyimi for deyimde çevrim işlemleri daha bir derli toplu yapılabilir; bu döngü deyiminde koşulda kullanılan çevrim değişkeni, koşul ifadesi ve çevrim sayacı artımı for ifadesi içerisinde verilir. Genel yazım şekli ve çizimle gösterilmesi aşağıdaki gibi verilebilir: for (başlangıç; koşul; artış) { çalışması istenen kod bloğu } Görüldüğü gibi for deyimi içerisinde “;” ile ayrılmış 3 parametre vardır; birincisi çevrim sayacı, ikincisi koşul ifadesi ve üçüncüsü de sayacın artım miktarı ifadesidir. Eğer, kodun daha önceki kısımlarda sayaç değişkeni halıhazırda varsa başlangıç, artışı kod öbeği kısmında yapılıyorsa artış bilgisi verilmeyebilir. Bu durumda bu alanlar bol bırakılır. Örnek: ForOrnek.java public class ForOrnek { public static void main(String args[]) { for (int i=0 ; i < 5 ; i ++) { System.out.println("i = " + i); } } } Uygulamanın çıktısı aşağıdaki gibi olur: i i i i i = = = = = 0 1 2 3 4 for deyimi kullanılarak sonsuz çevrim oluşturulmak istenirse aşağıdaki gibi yazılması yeterlidir. for ( ;1; ) { ... } // sonsuz döngü Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 3 Karşılaştırma Deyimleri <![endif]>Karşılaştırma deyimleri belirli bir koşula göre farklı işlemler yaptırılacağı zaman kullanılır. Örneğin adet adlı değişken değeri 5’ten küçük olduğundan farklı, 5’ten büyük veya eşit olduğunda farklı işler kodlar yürütülecekse bu işi yapabilmek için karşılaştırma deyimlerine gereksinim duyulur. Java’da if-else ve switch-case olmak üzere iki farklı karşılaştırma deyimi vardır. if-else Deyimi Koşula göre program akışı değiştirilmek isteniyorsa if kullanılabilir. Genel yazım ifadesi aşağıdaki gibidir: if (koşul) { durum true olduğunda çalışması istenen kod bloğu } else { durum false olduğunda çalışması istenen kod bloğu } Örnek: IfElseTest.java public class IfElseTest { public static void main(String[] args) { int puan; Scanner oku=new Scanner(System.in); System.out.println(“Sınav notunu giriniz:”); puan=oku.nextInt(); char sonuc; if (puan >= 90) { sonuc = 'A'; } else if (puan >= 80) { sonuc = 'B'; } else if (puan >= 70) { sonuc = 'C'; } else if (puan >= 60) { sonuc = 'D'; } else { sonuc = 'F'; } System.out.println("Sonuc = " + sonuc); } } Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 4 switch Deyimi switch deyimi tamsayıların karşılaştırılması ile doğru koşulların elde edilmesini sağlayan mekanizmadır. switch deyimini genel yazım biçimi aşağıdaki gibidir: switch(tamsayı) { case uygun-tamsayı-deger1 : çalışması istenen kod bloğu; break; case uygun-tamsayı-deger2 : çalışması istenen kod bloğu; break; case uygun-tamsayı-deger3 : çalışması istenen kod bloğu; break; case uygun-tamsayı-deger4 : çalışması istenen kod bloğu; break; case uygun-tamsayı-deger5 : çalışması istenen kod bloğu; break; //... default: çalışması istenen kod bloğu ; } switch deyimi içersindeki tamsayı ile, bu tamsayıya karşılık gelen koşula girilir ve istenen kod bloğu çalıştırılır. Kod bloklarından sonra break koymak gerekir aksi takdirde uygun koşul bulduktan sonraki her koşula girilecektir. Eğer tamsayımız koşullardan hiçbirine uymuyorsa default koşulundaki kod bloğu çalıştırılarak son bulur. Örnek: AylarSwitchTest.java public class AylarSwitchTest { public static void main(String[] args) { int ay = 8; switch (ay) { case 1: System.out.println("Ocak"); break; case 2: System.out.println("Subat"); break; case 3: System.out.println("Mart"); break; case 4: System.out.println("Nisan"); break; case 5: System.out.println("Mayis"); break; case 6: System.out.println("Haziran"); break; case 7: System.out.println("Temmuz"); break; case 8: System.out.println("Agustos"); break; case 9: System.out.println("Eylul"); break; case 10: System.out.println("Ekim"); break; case 11: System.out.println("Kasim"); break; case 12: System.out.println("Aralik"); break; } } } Uygulamanın sonucu, Agustos Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 5 Yapılandırıcı Yordam(Constructor); Örnek: YapilandirciBasitOrnekVersiyon2.java class YeniKahveFincani { public YeniKahveFincani(int adet) { System.out.println(adet + " adet YeniKahveFincani"); } } public class YapilandirciBasitOrnekVersiyon2 { public static void main(String[] args) { for(int i = 0; i < 5; i++) new YeniKahveFincani( i ); } } Gönderilen parametre sayesinde nesnenin nasıl oluşacağı belirtebilmektedir. Bu örnekte olduğu gibi YeniKahveFincani nesnesi oluşturulurken kaç adet olacağı söylenebiliyor. Uygulamanın sonucu aşağıdaki gibi olur: 0 adet YeniKahveFincani 1 adet YeniKahveFincani 2 adet YeniKahveFincani 3 adet YeniKahveFincani 4 adet YeniKahveFincani Yapılandırıcılar, yordamlardaki gibi değer döndürme mekanizmasına sahip değildirler; herhangi bir şekilde değer döndüremezler. Bu değer döndürülemez ibaresi yordamlardaki void ifadesine karşılık gelmemektedir. Yapılandırıcılardan çıkılmak isteniyorsa return kullanabilir. Adaş Yordamlar (Üstüste yüklenmiş yordamlar (Overloaded methods)) Aynı isimli farklı parametre alan yordamlardır. Örnek: YordamOverloadingDemo2.java public class YordamOverloadingDemo2 { public int toplamaYap(int a , int b){ int sonuc = a + b ; System.out.println("sonuc - 1 = " + sonuc); return sonuc ; } public void toplamaYap(int a , double b){ double sonuc = a + b ; System.out.println("sonuc - 2 = " + sonuc); } Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 6 public double toplamaYap(double a , int b){ double sonuc = a + b ; System.out.println("sonuc - 3= " + sonuc); return sonuc ; } public static void main(String[] args) { YordamOverloadingDemo2 mod2 = new YordamOverloadingDemo2(); mod2.toplamaYap(3,4); mod2.toplamaYap(3,5.5); mod2.toplamaYap(6.8,4); } } Uygulamalar: n 1- k2 k 1 2k kullanıcıdan aldığı n değerine göre yandaki matematiksel işlem sonucunu hesaplayan bir java programı yazınız. 2- Klavyeden girilen N sayısına göre T1 , 0’ dan N'e kadar olan sayıların toplamı,T2 , 0’dan den N'e kadar olan tek sayıların toplamı ve T3 , 0’dan N'e kadar olan çift sayıların toplamını göstermek üzere bu değerleri hesaplayan ve sonuçları yazdıran programı yazınız. 3- Kullanıcıdan aldığı sayıya göre ilgili sayı için çarpım tablosunu oluşturan bir java programı yazınız. Örneğin: run: 10*1=10 10*2=20 10*3=30 10*4=40 10*5=50 10*6=60 10*7=70 10*8=80 10*9=90 10*10=100 Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 7 4- Girilen n sayısının tam bölündüğü sayıları bulan bir java programı yazınız Örneğin: sayınızı giriniz: 40 40sayısı1 sayısına tam bölünür 40sayısı2 sayısına tam bölünür 40sayısı4 sayısına tam bölünür 40sayısı5 sayısına tam bölünür 40sayısı8 sayısına tam bölünür 40sayısı10 sayısına tam bölünür 40sayısı20 sayısına tam bölünür 40sayısı40 sayısına tam bölünür 5- Girilen iki sayının en büyük ortak bölenini bulan bir java programı yazınız. Örneğin: 44 66 Cevap: 22 6- Yukarıdaki IfElseTest.java örnek programını input penceresinden aldığı not değeri ile ve sonuçtaki harf değerini de uyarı mesaj penceresi olarak ekranda gösterecek şekilde yeniden yazınız. (Not1: İlk Haftanın deney föyünde bir uygulamada input pencere kodu mevcuttur!!! Not2: Programa hata kontrolü de ekleyiniz. Not değeri 0 ile 100 arasında olmalıdır. Bu değerler dışında yanlış değer girilmesi durumunda mesaj penceresinden hatalı giriş şeklinde uyarı mesajı verilsin.) 7- Aşağıdaki program blokları hangi döngüleri temsil eder açıklayınız. Her bir yapı için ilgili yapının kullanılmasının bir avantaj sağlayabileceği orijinal (örnek)algoritma yapıları düşününüz ve bu örnekleri netBeans te çalıştırınız. Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 8 8Aşağıdaki Tablonun sağ tarafını doldurunuz. Sol taraftaki matematiksel ifadenin bilgisayarda kodlanışı nasıl olmalıdır. Bilgisayar kod ifadelerini yazdıktan sonra işlem önceliğine dikkat ederek java dilinde her bir ifade yi kodlayınız.Doğru çalıştığını kontrol ediniz. 9- Üslü ifadeler için bir java programı geliştirilecektir. Program kullanıcıdan sayıyı ve üssünü alacak ve işlemi gerçekleştirip sonucu ekrana yazacaktır. Böyle bir java programı geliştiriniz. (Not: pow fonksiyonu kullanılmayacaktır!) Örneğin ; Sayıyı giriniz: 3 Üssü giriniz: 3 Sonuc=27 . 10- Random ile belli aralıkta rastgele üretilen bir sayının tahminine yönelik, tahmin edilen Sayının değerine göre “aşağı”, “yukarı” vb. şeklinde uyarılarla yeni tahminlerin alınabileceği bir java programı oluşturunuz. (Tahmin sayısını sınırlı tutabilirsiniz.) Not: Ödevler için son teslim tarihi 17.03.2011 dir. (Ofis Saatlerinde Bilgisayar Lab-1’de sorularınız için yardım alabilirsiniz.) Algoritma ve Programlamaya Giriş II F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği 3.Hafta 9