31 Aralık 2017 Pazar

Labirent Algoritmaları Görselleri

Breadth First Search : Aynı anda farklı yolları yol listesine (bir dizi veya arraylist) ekleyerek yolu bulan algoritmadır. En yavaş fakat en kolay programlanabilen yöntemdir.

Depth First Search: Tek yol üzerinden sonuca ulaşmaya çalışan algoritmadır. Her zaman en iyi sonucu vermeyebilir.

A* Search : Greedy arama algoritmasıdır. Her yol denenir eğer bir yolun uzunluğu diğer yolun uzunluğunu geçerse arama diğer yoldan devam eder ve en kısa yol listelenir.


images created from : http://bryukh.com/labyrinth-algorithms/

18 Aralık 2017 Pazartesi

Algoritma Soruları 039 - Labirent Oyunu

Seviye : İleri

Bir labirent oyununda duvarlar ve duvarlar X ve boşluklar O ile belirtilmektedir.

O O O O O X O
X X O X O O X
O X O O X X X
X X X O O X O
X X X X O O X
O O O O O O O
 X X O X X X O 

Yukarda 7x7 bir matris haritasi verilmiştir. Çözüm her zaman sol üst köşeden başlayacak ve sağ alt köşede bitecektir. Çözümde cursor sağa-sola/aşağı-yukarı birer birer hareket edecek.

Labirentin oluşturulması : Labirent matrisi rastgele oluşturulacak, (en az 10x10 matris). Oluşturulan matris "labirent.txt" isimli dosyaya kaydedilecek. Ayrıca elle oluşturulmuş labirent dosyası da kullanılabilir.

Labirent çözümü bulunduğunda yola (yukarıda kırmızı işaretlenmiş O karakterleri) 1 yazılacak ve "labirent_cozum.txt" dosyasına kaydedilecek.

1 1 1 O O X O
X X 1 X O O X
O X 1 1 X X X
X X X 1 1 X O
X X X X 1 O X
O O O O 1 1 1
  X X O X X X 1  

Eğer çözüm bulunamazsa ekrana "labirentin çözümü yoktur" yazılacak.

Açıklama; (Bonus puanlı ödev)
2.Sınıf 2.öğretimler için son tarih 25 Aralık 2017 23:59
2.Sınıf 1.öğretimler için son tarih 28 Aralık 2017 23:59

Kopya ödevler değerlendirilmez ve gönderme formatı önceki ödevlerdeki gibi olacaktır.

17 Aralık 2017 Pazar

Java Dosya İşlemleri

Java programı ile harici (txt) dosya yazma ve okuma işlemleri aşağıdaki gibi yapılır;


 public static void main(String[] args) {  
           String str = "Bunu dosyaya yazdir2";  
           File file = new File("dosya.txt");  
           //yazma işlemi  
           try {                 
          if (!file.exists()) {  
            file.createNewFile();  
          }  
          FileWriter fileWriter = new FileWriter(file, false);  
          BufferedWriter bWriter = new BufferedWriter(fileWriter);  
          bWriter.write(str);           
          bWriter.close();  
           } catch (IOException e) {  
                System.out.println(e.getMessage());  
           }  
           // okuma işlemi  
           try {  
                FileReader fileReader = new FileReader(file);  
                String line;  
                BufferedReader br = new BufferedReader(fileReader);  
                while ((line = br.readLine()) != null) {  
                  System.out.println(line);  
                }  
                br.close();  
           } catch (Exception e) {  
                System.out.println(e.getMessage());  
           }   
      }  

Oluşan dosya

5 Aralık 2017 Salı

Algoritma Soruları 038 - Collision Detection

Seviye : Orta

Form ekranında belirli hızda hareket eden en az 3 top tasarlayınız. Bu toplar form sınırlarına ve birbirlerine çarptıklarında yön değiştirsinler.


Nesne Tabanlı Final Ödevi - Ek Açıklama

1- Ekranda en az 3 top bulunacak ve timer kullanılarak hareket ettirilecek. Hız işlemci gücüne göre değişkenlik gösterebilir. 

2. Topları oluşturmak için jlabel nesnesi içine top resimlerini ekleyebilirsiniz. Aşağıdaki resimleri kaydederek kullanabilirsiniz. Yada kendiniz yeni resimler ekleyebilirsiniz, resim arka planlarını transparan yapmayı unutmayın.

 3. Çarpışma testi (collision detection, hittest) için ipuçu; Rectangle nesnesinin intersects komutunu araştırınız.

4. Proje dosyaları Eclipse'den File/Export seçeneği ardından Archieve File seçeneği ile sıkıştırılacaktır.

5. Dosya ismi "numaranız.zip" olarak adlandırılacaktır. Formata uymayan dosyalar incelenmez.

6. Ödevinizi 29.Aralık.2017 Cuma 23:59'a kadar, myasinozsaglam@gmail.com adresine gönderiniz. Konu kısmına "Final Ödev - Numaranız" yazınız. 

7. Puantaj;
Topların form içinde hareket etmesi +5
Topların birbirine çarpması +10
Nesnellik +5

8. ÇOK ÖNEMLİ : Ödevleriniz "Code compare" programları ile karşılaştırılacaktır. %70'den fazla benzerlik bulunan ödevlere puan verilmez. O yüzden yapan arkadaşların kodları kimse ile paylaşmamaları gerekmektedir. 

4 Aralık 2017 Pazartesi

Try-Cath ve hata yakalama örnekleri

//Sıfıra bölme hatasını yakalamak
public class Main {
    public static void main(String[] args) {
        try {
            int a = 19 / 0;
        } catch (ArithmeticException MatematikselHata) {
            System.out.println(" İşlem yapılırken matematiksel bir hata oluştu :" + MatematikselHata.getMessage());
        }
    }
}




//Tür hatasını yakalamak
public static void main(String[] args) {
             try {
                    Scanner sc=new Scanner(System.in);
                    System.out.println("1.sayıyı girin:");
                    doublebolunen=sc.nextDouble();
                    System.out.println("2.sayıyı girin:");
                    doublebolen=sc.nextDouble();
                    doublesonuc=bolunen/bolen;
                    System.out.println("Sonuç="+sonuc);
             } catch (InputMismatchException e) {
                    System.out.println("Lütfen sadece sayı giriniz.");
             }
             finally{                 
                    System.out.println("İşlem sonlandı.");
             }         
       }


Hata türleri tablosu