Merhaba Arkadaşlar,
mobilhanem.com sitemizden anlattığımız Temel Java Dersleri yazı serimize bu dersimizde, bugüne kadar öğrendiğimiz konulardan genel olarak Java Algoritma Alıştırmalar’ı ve Örnek kodlar ile devam edeceğiz. Bir önceki Java alıştırmalarımız ve örnek java kodlarımız/algoritmalarımız için tıklayınız.
Yazı serimizde bildiğiniz üzere metotlara kadar geldik ve metot derslerine devam edeceğiz. Ben bu dersimde metottan önceki dersleri içeren örnekler paylaşacağım. Çünkü döngüler ,if-else yapısı,temel veri tiplerini çok iyi öğrenmemiz ve pekiştirmemiz lazım ki bundan sonraki derslerde zorluk çekmeyelim. Bundan sonrada her konunun sonunda 1 ve ya 2 ders, o konu ile ilgili özellikle java iş görüşmelerinde çıkabilecek örnek kodlar/algoritmalar paylaşacağım. Umarım sizlere faydası olur.
Lafı fazla uzatmadan örneklere geçelim.
Not: Paylaştığımız her çözümün alternatifleri olabilir. Sizlerde konu altından yorumlarınızı bırakabilirsiniz.
Alıştırma 1
Girdiğimiz integer değeri 2’lik sayı sistemi’nde(binary) yazan java algoritma/kodunu yazınız ? Integer.toBinaryString() methodunu kullanmadan.
Örnek 1:
input = 5
output =101
Örnek 2:
input = 16
output =10000
Kod:
import java.util.Scanner; public class IntegerToDecimal { public static void main(String args[]) { Scanner inp = new Scanner(System.in); System.out.println("Sayi giriniz :"); int sayi = inp.nextInt(); String decimalString =""; for(int i = sayi;i>0;i/=2){ decimalString = (i%2)+ decimalString; } System.out.println(decimalString); } }
Açıklama : Ondalık sayıların dönüşümü hakkında detaylı bilgi için tıklayınız.
Alıştırma 2
Kullanıcıdan alınan iki sayının en büyük ortak bölenini(ebob) veren java algoritma/kodunu yazınız ?
Örnek 1:
input1 = 20
input2 = 30
output =10
Örnek 2:
input1 = 120
input2 = 80
output =40
Kod:
import java.util.Scanner; public class EBOB { //en büyük ortak bölen public static void main(String args[]) { Scanner inp = new Scanner(System.in); System.out.print("İlk sayıyı giriniz: "); int sayi1 = inp.nextInt(); System.out.print("İkinci sayıyı giriniz: "); int sayi2 = inp.nextInt(); int kucukSayi = Math.min(sayi1,sayi2); // En büyük ortak bölen küçük sayıdan büyük olamaz int ebob = 0; for(int i = kucukSayi;i>0;i--){ if(sayi1%i==0 && sayi2%i==0){ //her iki sayıyıda bölüyorsa ebob = i; break; // Her iki sayıyıda bölen ilk sayı zaten en büyük ortak bölendir. o yüzden döngüye devam etmeye gerek yoktur. } } System.out.println("EBOB :"+ebob); } }
Alıştırma 3
Kullanıcıdan alınan sayının asal çarpanlarını veren java algoritma/kodunu yazınız ?
Örnek 1:
input1 = 20
output =2 2 5
Örnek 2:
input1 = 120
output =2 2 2 3 5
Kod:
import java.util.Scanner; public class AsalCarpan { //en büyük ortak bölen public static void main(String args[]) { Scanner inp = new Scanner(System.in); System.out.print("Sayıyı giriniz: "); int sayi = inp.nextInt(); int bolen = 2; //en küçük asal sayı int bolunen = sayi; System.out.print("Asal çarpanlar : "); while(bolen<sayi){ //bolen sayı 2 den başlıyor girilen sayıya kadar 1 artıyor if(bolunen % bolen == 0){ //Aynı sayi 1 den daha fazla bölebileceği için, böldüğü müddetçe bolen sayiyi artırmiyoruz System.out.print(bolen+" "); bolunen /= bolen; }else{ //eğer bolunen sayiyi tam bölemiyorsa 1 artırarak devam ediyoruz ve 1 sonraki sayıyı kontrol ediyoruz bolen++; } } System.out.print(sayi == bolunen ? "Asal sayı Girdiniz":""); } }
Alıştırma 4
Kullanıcıdan alınan sayı kadar aşağıdaki şekilde(4’ün katları şeklinde) piramit veren java algoritma/kodunu yazınız ?
Örnek 1:
input1 = 5
output =
1 1 4 1 1 4 16 4 1 1 4 16 64 16 4 1 1 4 16 64 256 64 16 4 1
Örnek 2:
input1 = 8
output =
1 1 4 1 1 4 16 4 1 1 4 16 64 16 4 1 1 4 16 64 256 64 16 4 1 1 4 16 64 256 1024 256 64 16 4 1 1 4 16 64 256 1024 4096 1024 256 64 16 4 1 1 4 16 64 256 1024 4096 16384 4096 1024 256 64 16 4 1
Kod:
import java.util.Scanner; public class Piramit { //en büyük ortak bölen public static void main(String args[]) { Scanner inp = new Scanner(System.in); System.out.print("Sayıyı giriniz: "); int sayi = inp.nextInt(); for(int i = 0;i<=sayi-1;i++){ int pow = 1; for(int j = 1 ;j<= sayi*2-1; j++){ //Her seferinde 2n-1 defa dönecek. if(j>=sayi-i && j<=sayi+i){ //Eğer bu aralıkta ise yazacak aralıkta değilse boşluk bırakacak System.out.printf("%6d",pow); //printf kullanmamızın sebebi boşlukları ayarlamak if(j<=sayi-1) //Ortadaki sayıya kadar 4 ile çarpılacak , sonrasonda 4 e bölünecek pow *= 4; else pow /= 4; }else{ System.out.printf("%6s",""); } } System.out.println(); } } }
Not: printf() hakkında detaylı bilgi.
Alıştırma 5
Taş,Kağıt,Makas oyununu bilgisayara karşı oynayacağız ve 3 yapan kazanacak. 0-taş ,1-kağıt ,2-makas olduğunu varsayalım. Bilgisayar random olarak 0,1,2 üretecek bizde konsoldan bilgisayarın ne ürettiğini görmeden 0,1,2 değerlerinden birini gireceğiz ve toplamda 3 defa yenen ,oyunu kazanmış olacak.
Örnek 1:
Taş,Kağıt,Makas ?
1
Bilgisayar :Makas.
Kullanıcı :Kağıt
Bu eli bilgisayar kazandı
Kullanıcı : 0 – Bilgisayar : 1
Örnek 2:
Taş,Kağıt,Makas ?
2
Bilgisayar :Taş.
Kullanıcı :Makas
Bu eli bilgisayar kazandı
Kullanıcı : 2 – Bilgisayar : 3
BİLGİSAYAR KAZANDI
import java.util.Scanner; public class TasKagitMakas { public static void main(String args[]) { //0-taş //1-kağıt //2-makas //3 yapan kazanır Scanner inp = new Scanner(System.in); int bilgisayarKazandi = 0; int kullaniciKazandi = 0; while(bilgisayarKazandi<3 && kullaniciKazandi<3){ //3 yapan kazanır System.out.println("Taş,Kağıt,Makas ?"); //Kullanıcıdan değer alınıyor. //o,1,2 dışı kontrlleri siz eklersiniz int kullanici = inp.nextInt(); //kullanıcıdan alınan değer kullanici değişkenine atandı int bilgisayar = (int)(Math.random()*3); //bilgisiyar 0,1,2 random değer oluşturuyor System.out.print("Bilgisayar :"); //Bilgisayarın değeri yazdırılıyor switch (bilgisayar) { case 0: System.out.println("Taş."); break; case 1: System.out.println("Kağıt."); break; case 2: System.out.println("Makas."); } System.out.print("Kullanıcı :"); //kullanıcı değeri switch (kullanici) { case 0: System.out.println("Taş"); break; case 1: System.out.println("Kağıt"); break; case 2: System.out.println("Makas "); } if(kullanici==bilgisayar){ System.out.println("Berabere"); } else{ if((kullanici==0 && bilgisayar ==2) || (kullanici==1 && bilgisayar ==0) || (kullanici==2 && bilgisayar ==1)){ System.out.println("Bu eli kullanıcı kazandı"); kullaniciKazandi++; }else{ System.out.println("Bu eli bilgisayar kazandı"); bilgisayarKazandi++; } } System.out.println("Kullanıcı : "+kullaniciKazandi+" - "+ "Bilgisayar : "+bilgisayarKazandi); } System.out.println(kullaniciKazandi==3 ? "KULLANICI KAZANDI":"BİLGİSAYAR KAZANDI"); } }
Evet arkadaşlar geçenki dersimizden biraz daha zor sorularla bildiklerimizi pekiştirdik ve java algoritma / kod örnekleri yazarak sonraki derslerimiz için daha hazır bir hale geldik 🙂 Umarım derslerimiz sizler için faydalı oluyordur.
Bir sonraki Temel Java Dersimize metot’ların ikinci kısmını ile devam edeceğiz. Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Temel Java Dersleri için tıklayınız..
18