Site icon Mobilhanem

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

Anotasyon

Java Dersleri

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
Exit mobile version