Birbirini izleyen çok sayıda koşul kontrolünü gerçekleştirmeye yarayan bir yapı if-else-if basamağı adını alır ve yazılış biçimi aşağıdaki gibidir:
if(ifade1)
Deyim1;
else if (ifade2)
Deyim2;
else if (ifade3)
Deyim3;
....
....
else
Deyim_n;
Deyim_n+1;
Bu yapı şu şekilde çalışır:
- Önce ifade1 kontrol edilir; bu ifade doğru ise, Deyim1 uygulanır ve sonra Deyim_n+1’e geçilir.
- İfade1 yanlış ise, o takdirde, ifade2 kontrol edilir. Bu ifade doğru ise, bu durumda sadece Deyim2 uygulanır ve sonra Deyim_n+1’e geçilir.
- İfade2 yanlış ise, o takdirde, ifade3 kontrol edilir. Bu ifade doğru ise, bu durumda sadece Deyim3 uygulanır ve sonra Deyim_n+1’e geçilir.
Bu işlemler daha fazla sayıda else if bulunduğu durumda aynı şekilde devam eder.
if’ler ile kontrol edilen ifadelerin tümü yanlış ise, bu durumda programın kontrolü else’i izleyen Deyim_n’ye geçer ve bu deyim çalıştırılır. Daha sonra kontrol Deyim_n+1’e geçer. Yukardaki yapı içinde Deyim1, Deyim2 ...Deyim_n ile belirttiğimiz birimler tek bir deyimden ibaret olabileceduği gibi, { } sembolleri içine alınmış deyimler grubundan da oluşabilir.
Örnek Problem:
Bu örnekte basit bir vergi hesabı programı geliştirmek istiyoruz. Gelir vergisinin aşağıdaki kurallara göre belirlendiğini varsayalım:
Gelir ≤ 150,000,000 ise vergi oranı %25
Gelir ≤ 300,000,000 ise vergi oranı %30
Gelir ≤ 600,000,000 ise vergi oranı %35
Gelir ≤ 1,200,000,000 ise vergi oranı %40
Gelir > 1,200,000,000 ise vergi oranı %50
Bu problemi Java dilinde programlayabilmek için aşağıdaki basit algoritmayı uygulayacağız:
- Gelir bilgisi klavyeden girilecek.
- Gelir bilgisi, yukardaki vergi hesaplama kurallarına göre kontrol edilerek vergi hesaplanacak.
- Hesaplanan vergi ekrana yazdırılacak.
import java.util.Scanner;
public class Vergi {
public static void main(String args[]){
Scanner giris = new Scanner(System.in);
double gelir, v, v1, v2, v3, v4;
System.out.println("Gelir miktarınız (TL): ");
gelir = giris.nextDouble();
v1 = 150000000 * 0.25;
v2 = 150000000 * 0.30;
v3 = 300000000 * 0.35;
v4 = 600000000 * 0.40;
if (gelir <= 150000000)
v = gelir * 0.25;
else if (gelir <= 300000000)
v = v1 + (gelir - 150000000) * 0.3;
else if (gelir <= 600000000)
v = v1 + v2 + (gelir - 300000000) * 0.35;
else if (gelir <= 1200000000)
v = v1 + v2 + v3 + (gelir - 600000000) * 0.4;
else
v = v1 + v2 + v3 + v4 + (gelir - 1200000000) * 0.5;
System.out.println("Odemeniz gereken vergi: " + v);
}
}
Programın çıktıları
ÇIKTI 1:
ÇIKTI 2:
Yukarıdaki programda uygulanan vergilendirme mantığı şöyledir:
Örneğin, bir kişinin geliri 200,000,000 TL olsun. Bunun ilk 150,000,000 TL’si %25 üzerinden, kalan 200,000,000 – 150,000,000 = 50,000,000 TL’si ise %30 üzerinden vergilendirir. O nedenle programın başında her aralığa ait sabit vergiler hesaplanarak v1, v2, v3 ve v4 değişkenlerine atanır.
İkinci Dereceden Bir Denklemin Köklerinin Bulunması
Lise yıllarında öğrendiğimiz ikinci derece denklem,
ax2 + bx + c = 0
şeklinde ifade edilir. Denklemin kökleri hakkında bilgi sahibi olabilmek için, denklemin diskriminantı adı verilen,
∆=b2–4ac
ifadesini hesaplamamız gerekir. Diskriminantın değerlerine göre, eğer ∆<0 ise denklemin gerçel sayılarla ifade edilebilecek bir kökü yoktur.
∆=0 ise denklemin, değerleri birbirine eşit olan iki kökü vardır ve bunlar,
x1=x2= –b/ (2a)
şeklinde hesaplanırlar. Bunlara iki kat kök ya da çakışık kök adı verilir.
∆>0 ise de denklemin birbirinden farklı iki gerçel kökü vardır ve bunlar,
x1=(–b+√∆)/(2a)
ve
x2=(–b–√∆)/(2a)
şeklinde hesaplanırlar.
Şimdi ikinci dereceden bir denklemin köklerini bulan Java programına bakalım.
KOD BLOĞU:
import java.util.Scanner;
public class IkinciDerece{
public static void main(String args[]){
Scanner giris = new Scanner(System.in);
double a, b, c, x1, x2, delta;
System.out.println("a: ");
a=giris.nextDouble();
System.out.println("b: ");
b=giris.nextDouble();
System.out.println("c: ");
c=giris.nextDouble();
delta = b * b - 4 * a * c;
if (delta < 0) {
System.out.println("Gercek kok yoktur. \n");
}
else if (delta == 0) {
x1 = -b / (2 * a);
System.out.println("x1=x2=" + x1);
}
else {
x1 = (-b + Math.sqrt(delta)) / (2 * a);
x2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("x1=" + x1);
System.out.println("x2=" + x2);
}
}
}
ÖRNEK ÇIKTI 1:
ÖRNEK ÇIKTI 2: