Java Eğitimi 13 – ALIŞTIRMALAR

Herkese merhaba,

Bu yazıyla birlikte bugüne kadar gördüğümüz konuları kapsayan alıştırmalar yaparak konuyu net bir şekilde anlayalım. O halde ilk örneğimiz ile başlayalım.

1- Klavyeden Girilen Sayının Pozitif Ya Da Negatifliğini Belirleyen Bir Program 

Yani kullanıcı 16 değerini girdiğinde girilen sayının pozitif olduğunu, -9 değerini girdiğinde negatif olduğunu belirlesin. Ayrıca 0 girişinin olup olmadığını da kontrol edip ona göre bir çıktı oluştursun.

Klavyeden giriş için yapmamız gereken şey Scanner komutunu devreye sokmaktır.

import java.util.Scanner;
public class main {
public static void main(String[] args){
Scanner scan= new Scanner(System.in);
System.out.println(“Bir sayı giriniz:”);
int sayı=scan.nextInt();

Bu kısmı yapabildiyseniz devamına gelelim. Pozitif mi negatif mi yoksa 0 mı durumunu if-else yapısı ile yazabiliriz. İlk if yapısı için sayı>0, else if için sayı<0 koşulunu ele almamız gerekir. Else kısmında da 0 durumunu ele alırız. Bunları yaptığımızda kodlarımız;

import java.util.Scanner;
public class main {
public static void main(String[] args){
Scanner scan= new Scanner(System.in);
System.out.println("Bir sayı giriniz:");
int sayı=scan.nextInt();

if(sayı>0){
System.out.println("Girmiş olduğunuz " + sayı +" sayısı pozitiftir");
}
else if(sayı<0){
System.out.println("Girmiş olduğunuz sayı negatiftir.");
}
else{
System.out.println("0 sayısını girdiniz.");
}
}
}

şeklinde olur. Şimdi bu kodlara yeni komutlar eklemeye çalışalım. Örneğin eğer girilen sayı pozitifse ve 14’ten büyükse sayıyı 5 artırsın. Değilse büyük bir sayı girilmesini söylesin. Girilen sayı negatifse o sayıyı 2 ile çarpıp yeni değerini ekrana yazdırsın. Sayı 0’a eşitse değeri 7 azaltsın ve değeri ekrana yazdırsın. Bu şekilde yaptığımızda elde ettiğimiz yapı;

 
import java.util.Scanner;
public class main {
public static void main(String[] args){
Scanner scan= new Scanner(System.in);
System.out.println("Bir sayı giriniz:");
int sayı=scan.nextInt();
if (sayı>0){
System.out.println("Girmiş olduğunuz " + sayı + " sayısı pozitiftir.");
if(sayı>14){
sayı+=5;
System.out.println("Sayının yeni değeri= " + sayı);
}
else{
System.out.println("Daha büyük bir sayı değeri giriniz!");
}
}
else if(sayı<0){
System.out.println("Girmiş olduğunuz sayı değeri negatiftir.");
sayı*=2;
System.out.println("Girilen sayının yeni değeri= " + sayı);
}
else if(sayı==0){
System.out.println("0 sayısını girdiniz.");
sayı-=7;
int toplam=0+sayı;
System.out.println("Yeni değeriniz= " + toplam);
}
else{
System.out.println("Lütfen tekrar deneyiniz...")
}

Kodları yazdırıp çalıştırırsak sırasıyla şu çıktıları elde ederiz. Pozitif bir sayı girdiğimizde;

Negatif bir sayı girersek;

0 değerini girersek;

çıktıları ile karşılaşırız.

2- Artık Yılı Hesaplayan Program

Öncelikle artık yılın ne anlama geldiğinden kısaca bahsedeyim. Bazı yılların 365 gün yerine 366 gün çekmesi artık yıl olarak adlandırılır. Fazladan eklenen bu bir gün, normalde 28 gün olan şubat ayının 29 gün olmasından kaynaklanır. Ama bu olay her zaman gerçekleşmez. Artık yıl olabilmesi için belli kriterler göz önünde bulundurulur. Bu kriterleri şu şekilde sıralayabiliriz:

  • 4 rakamına tam bölünebilen yıllar artık yıl olarak kabul edilir. Mesela 1740, 1936, 1996, 2000, 2004, 2016 gibi. Ama bu kuralın da iki istisnası mevcuttur:
  • 100’ün katı olan yılların artık yıl olup olmadığı kontrol edilirken sadece 400 sayısına kalansız olarak bölünen yıllar artık yıl olarak ele alınır. Örneğin 1900 yılı 100’ün katıdır ama 400’e bölündüğünde kalanlı bir sonuç verdiği için artık yıl olmaz. 2000 yılı da 100’ün katıdır ve 400’e kalansız olarak bölündüğü için artık yıldır.
  • Ayrıca -400’e tam bölünebildiği halde -4000’e de kalansız olarak bölünebilen yıllar artık yıl kabul edilmez. Yani seçilen yıl – ile bölünürken -400’e ve -4000’e kalansız bir şekilde bölünüyorsa o yıl artık yıl olarak alınmaz. “-” ye bölme işlemi hesaplamaların hassasiyetini artırmak amaçlı yapılır.

Bu koşullara göre artık yıllar 2000, 2004, 2008, 2012… şeklinde devam eder. O zaman şimdi programı yavaş yavaş yazmaya başlayalım.

Kullanıcı girişli olacağı için;

public class main{
public static void main(String[] args) {
 
	Scanner scan=new Scanner(System.in);
	System.out.println("Öğrenmek istediğiniz yılı giriniz: ");
	int yil=scan.nextInt();

halinde yazabiliriz. Artık yıl olup olmama durumunu kontrol etmek için if döngüsünden faydalanabiliriz. If’in içine yazdıracak olduğumuz koşul (yil % 400 == 0) || ((yil % 4 == 0) && (yil % 100 != 0)) olur. Burada demek istediğimiz şey “yıl 400’e tam bölünsün veya yıl, 4’e bölündüğünde kalansız olsun ve 100’e bölündüğünde kalanlı olsun” ifadesidir. Buna göre kodları düzenlersek;

3- Bir Sayının Karesini Bulma 

Bir sayının karesini alabilmek için gerekli olan komut Math.pow(double a , double b) komutudur. Buradan da anlaşıldığı üzere pow komutunda double değerleri alınmalıdır. Sonrasında gerekli işlemler devam eder.

4- Girilen Bir Sayının Karekökünü Bulma

Karekökünü bulmak için de yapmamız gereken şey Math.sqrt(); komutunu kullanmaktır. Karekök işleminde de karesini bulmada kullandığımız gibi double değişkeni ile değişkenlerimizi tanımlarız. Çünkü girilen sayı tam sayı da olabilir ondalıklı sayı da.

5- Girilen 4 Sayıdan En Büyüğünü Bulan Program

Sayıların içinden en büyüğünü belirleyebilmek için onları önce int ile tanımlamamız gerekir. Buradaki değişen türü double da olabilir. O yüzden başlangıç değerlerini 0 olarak yazdık. Daha sonra ekran çıktısı için yazdırmamız gerekiyor. a, b, c, d değerleri için hepsini tek tek yazdırdık. If yapısına gelelim. a değeri için yapmamız gereken şey a’nın diğer değişkenlerden büyük olmasını sağlamaktır. O yüzden if koşulunun içine a>b, a>c ve a>d yazmamız gerekiyor.

5- Hesap Makinesi Yapımı

Son örneğimizde de Java programı ile hesap makinesi yapmaya çalışalım. Bunun için yapmamız gereken şeyler toplama, çıkarma, çarpma ve bölme işlemlerini ayrı ayrı tanımlamak olacaktır. Bu işlemler if döngüsü ile de yapılabilir switch-case ile de. Ben switch case kullanmayı tercih ettim. İlk olarak Scanner ile klavyeden girişe izin verelim.

Scanner scan = new Scanner(System.in);
int ilk_sayı,ikinci_sayı,secim;
System.out.print(“İşlem yapabilmek için lütfen ilk sayıyı giriniz:”);
ilk_sayı = scan.nextInt();
System.out.print(“İkinci sayıyı giriniz:”);
ikinci_sayı = scan.nextInt();

Yukarıdaki kodlarda değişkenleri ilk_sayı, ikinci_sayı ve secim olarak tanımlamış olduk. Ve bunları scan komutuna göre düzenledik. Bir sonraki işlem kullanıcının hangi işlemi seçeceğini belirlemek olacaktır Bunun için de ekrana hangi işlemleri seçebileceğini belirten bir yazı yazdırmamız gerekir. Bunun için de ;

     System.out.println("Toplama işlemi için 1'e, çıkarma işlemi için 2'ye, çarpma işlemi için 3'e ve bölme işlemi için 4'e basınız.");

komutunu kullanabiliriz. Daha sonra secim = scan.nextInt(); 
diyerek secim değişkenini döndürmüş oluruz.

Switch case yapısını oluşturmadan hemen önce sonuc değişkenini de int şeklinde tanımlamamız gerekiyor. Böylece sıra, yapıyı kurmaya geliyor.

switch(secim){
case 1:
sonuc = ilk_sayı+ikinci_sayı;
System.out.println("Toplama işleminin sonucu="+sonuc);
break;
case 2:
sonuc = ilk_sayı-ikinci_sayı;
System.out.println("Çıkarma işleminin sonucu="+sonuc);
break;
case 3:
sonuc = ilk_sayı*ikinci_sayı;
System.out.println("Çarpma işleminin sonucu= "+sonuc);
break;
case 4:
sonuc = ilk_sayı/ikinci_sayı;
System.out.println("Bölme işleminin sonucu= "+sonuc);
break;
default:
System.out.println("Lutfen geçerli bir tuşa bastığınızdan emin olunuz…");
break;
}

Kodların tamamını paylaşarak bu yazıyı bitiriyorum. Tekrar görüşmek üzere, hoşça kalın.

Yorum bırakın