Anotasyon

Temel Java Dersleri – Java Algoritma Örnekleri 2 (Alıştırmalar)

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

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

7 Yorum

  • Birinci uygulama sizin dediğiniz şekilde bir türlü olmadı. Ben şu şekilde yapabildim.

    package imtal;
    import java.util.Scanner;;
    public class bilisim {
    
    	public static void main(String[] args) {
    		Scanner giris = new Scanner(System.in);
    		System.out.print("sayı gir: ");
    		int sayi = giris.nextInt();
    		System.out.print(sayi + " sayısının ikili hali: ");
    		String ikili = ""; 
    		for(int i = sayi; i > 0; i-- ){
    			ikili = sayi % 2 + ikili;
    			sayi = sayi / 2 ;
    			if(sayi == 0){ break;}
    		}
    		System.out.print(ikili);
    	}
    }
    
  • Asal çarpanları bulma için benim çözümüm

    package mobilhanem;
    import java.util.Scanner;;
    public class asal_carpanlar {
    
    	public static void main(String[] args) {
    		Scanner giris = new Scanner(System.in);
    		System.out.print("sayıyı gir: ");
    		int sayi = giris.nextInt();
    		String asallar = "";
    		System.out.print(sayi + " sayısının asal çarpanları: ");
    		for(int i = 2; i < sayi; i++ ){
    			
    			if(sayi % i == 0 ){
    				asallar = asallar + " " + i;
    				sayi = sayi / i;
    				i = 1;
    			}
    		}
    		System.out.print(asallar + " " + sayi);
    	}
    }
  • Taş, Kağıt, Makas oyununda 2’den büyük değerlerde ve keyboarddan String değer girişi yapıldığında hata vermemesi için ufak düzenlemeler ile kodu geliştirmeye çalıştım. Bunun yanı sıra oyun sonuna yeni oyuna başlansın mı evet veya hayır şeklinde eklenip tekrar başa dönülebilir basitçe.

    import java.util.Scanner;
    
    public class RockPaperScissorsFinal {
    	public static void main(String args[]) { // 0-Rock 1-Paper 2-Scissor// Who scores 3 is going to win.
    		Scanner input = new Scanner(System.in);
    		int computerWon = 0;
    		int playerWon = 0;
    		System.out.println("Please enter your name: "); // Introduce your name
    		String playerName = input.next(); // Introduced name assigned to Player Name
    		int player = -1;
    		boolean isContinue = true;
    		while (isContinue) {
    			try {
    				while (computerWon < 3 && playerWon < 3) {
    					System.out.println("(0)Rock,(1)Paper,(2)Scissors?");
    					String player1 = input.next();// String to Integer Parsing
    					player = Integer.parseInt(player1);
    					int computer = (int) (Math.random() * 3);
    					isContinue = false;
    					if (player >= 0 && player <= 2) { //Choose from Keyboard between 0 to 2
    						System.out.println("Your are good to go");
    						System.out.print("Computer :"); // Randomly Choose of Computer
    						switch (computer) {
    						case 0:
    							System.out.println("Rock.");
    							break;
    						case 1:
    							System.out.println("Paper.");
    							break;
    						case 2:
    							System.out.println("Scissor.");
    						}
    
    						System.out.print(playerName + ":"); // Choose of Player
    						switch (player) {
    						case 0:
    							System.out.println("Rock.");
    							break;
    						case 1:
    							System.out.println("Paper.");
    							break;
    						case 2:
    							System.out.println("Scissor.");
    						}
    						if (player == computer) { //If player choose same as computer, match is drawing
    							System.out.println("Draw");
    						} else {
    							if ((player == 0 && computer == 2) || (player == 1 && computer == 0) 
    									|| (player == 2 && computer == 1)) {
    								System.out.println(playerName + " won this game!");
    								playerWon++;
    							} else {
    								System.out.println("Computer won this game!");
    								computerWon++;
    							}
    							System.out.println(playerName + " : " + playerWon + " - " + "Computer : " + computerWon);
    						}
    
    					} else {
    						System.out.println("Not a valid play from Keyboard, Please try again!");
    						isContinue = true;
    					}
    				}
    				System.out.println(playerWon == 3 ? playerName + " Won!" : "Computer Won!");
    			} catch (NumberFormatException e) {
    				System.out.println("Not an valid play from Keyboard, Please try again!");
    			}
    		}
    	}
    }
    
  • Alıştırma 4 ü kendi yorumumla yaptım if else kullanmadım sadece for döngüleriyle yaptım

    package Package1;
    import java.util.Scanner;
    public class Deneme25 {
    public static void main(String[] args)
    {
    Scanner al_bunu = new Scanner(System.in);
    System.out.print(“Bir değer giriniz= “);
    int deger = al_bunu.nextInt();
    System.out.println(“Sonuç= “+deger);

    int katlar=1;

    int dusen_deger=deger;

    for(int i=0;i<=deger;i++)
    {

    katlar*=4;
    dusen_deger–;

    for (int sol_bosluk =0;sol_bosluk<=dusen_deger;sol_bosluk++)
    {
    System.out.printf("%10s"," ");
    }

    for (int katlar3=1;katlar3=1;katlar2/=4)
    {

    System.out.printf(“%10d”,katlar2);
    }

    System.out.println(“”);

    }

    }

    }

  • Benim yaptığım taş, kağıt, makas oyunu

    package Package1;
    import java.util.Scanner;
    public class Deneme26 {
    public static void main(String[] args)
    {
    String oyuncu=””;
    String bilgisayar=””;
    int oyuncu_score=0;
    int bil_score=0;
    boolean kontrol=true;

    for(int i=0;ibil_score) System.out.println(“Sen kazandın”);
    else if (oyuncu_score<bil_score)System.out.println("Bilgisayar kazandı");
    else System.out.println ("Berabere");
    }

    }

    }

  • int x, y, u, a,i,s;

    Scanner klavye = new Scanner(System.in);

    System.out.println (“İki Sayı giriniz”);

    x = klavye.nextInt();
    y = klavye.nextInt();
    u = x;
    s = y;

    if (x>=y) {
    for (i=y; i>0;) {

    a = x % y;
    x = y;
    y = a;

    if (y!=0) {
    i=2;
    }
    else {
    i=-1;
    System.out.println(“EBOB(” + s + “,”+ u + “)=” + x);
    }
    }
    }
    else
    System.out.println(“burası olmasada olur”);

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?