3.Hafta

advertisement
. 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
Download