Coder Social home page Coder Social logo

gusanmaz / bmb212_algorithms Goto Github PK

View Code? Open in Web Editor NEW
31.0 18.0 24.0 2.28 MB

NKÜ Bilgisayar Mühendisliği BMB212 Veri Yapıları Dersi Uygulama Notları, Projeleri ve Ödevleri

algorithms algorithms-and-data-structures course homework-assignments homework-project java programming

bmb212_algorithms's Introduction

NKÜ Bilgisayar Mühendisliği Veri Yapıları (BMB212) Dersi Uygulamalarının Not ve Duyuruları

Bu repo'da uygulama derslerine ait materyallere (ders notlari, odev bilgileri, proje bilgileri, duyurular vb.) ulasabilirsiniz.

DUYURU

Final sınavında tüm proje ve ödev soruları ile bağlantılı soru sorulabilir

1. Uygulama (22 Mart 2022)

Instructor

Ars. Gor. Güvenç Usanmaz

Oda: B207

Bolum: Bilgisayar Muhendisligi

Email: gusanmaz <att< nku nokta edu nokta tr

Prerequisites / Ders Hazirlik

  1. Github hesabi acilacak
  2. Repl.it hesabi acilacak
  3. Bilgilendirme Formu doldurulacak
  4. Universite email hesaplari duzenli kontrol edilecek
  5. Bu repo duzenli kontrol edilecek. Yeni odev ve proje duyurulari buradan ve/veya email yoluyla yapilacak

Odev ve Proje Sayfalari

Bu sayfalari duzenli takip etmeniz gerekmektedir. Yeni odev duyurulari, yeni proje duyurulari, daha onceden verilmis proje ve odevlerle ilgili yeni bilgiler/duzeltmeler bu sayfalardan ilan edilecektir.

Onerilen Kaynaklar

Algorithm Visualisation

Git

Git vs Renaming

IDE Kullanimi

Terminal Kullanimi

Debugging - Hata Ayiklama

Debugging Cat

Command Line Arguments

Linux CLI Power

Komut satirindan alinan iki tam sayinin toplamini ekrana yazdiran kod:

public class Main {
  public static void main(String args[]) {
    int num1 = Integer.parseInt(args[0]);
    int num2 = Integer.parseInt(args[1]);
    System.out.println(num1 + num2);
  }
}

Main.java isimli dosyada saklanabilecek yukarida verilen kodun derlenmesi icin calistirilmasi gereken terminal komutu:

javac Main.java

javac programinin derleme sonrasi olusturdugu calistirilabilir program Main.class'in calistirilmasi:

java Main 4 5 

Calistirilan programin ciktisi:

9

Bu haftaki alistirma linkleri

Not: Bu haftaki derste bahsedilen otomatik kod testi problemi cozulmustur. Kodunuz 'Commit changes' butonuna tiklandiktan sonra otomatik olarak derlenip, puanlandirilabilmektedir. Gonderdiginiz kodun derlenip, derlenmedigini, derlendiyse testleri gecip gecmedigini Actions sekmesi/tabi altinda gorebilirsiniz.

  • Min2 Program parametre olarak 2 tamsayi (integer) deger okuyup bu degerlerden kucuk olanini ekrana yazdiracak. Son gonderim tarihi: 25 Mart 23:00
javac Main.java #Program Derleme
java Main 4 5 #Derlenmis programi 4 ve 5 argumanlari ile calistirma
4 #Program Ciktisi
java Main 9 8 #Derlenmis programi 9 ve 8 argumanlari ile calistirma
9 #Program Ciktisi
  • Min3 Program parametre olarak 3 tamsayi (integer) deger okuyup bu degerlerden kucuk olanini ekrana yazdiracak. Son gonderim tarihi: 25 Mart 23:00
javac Main.java #Program Derleme
java Main 4 5 3 #Derlenmis programi 4, 5 ve 3 argumanlari ile calistirma
3 #Program Ciktisi
java Main 9 8 1 #Derlenmis programi 9,8 ve 1 argumanlari ile calistirma
1 #Program Ciktisi
java Main 9 -4 1 #Derlenmis programi 9,-4 ve 1 argumanlari ile calistirma
-4 #Program Ciktisi
  • Odev3_Faktoriyel Program argumani olarak pozitif bir tamsayi alip, alinan bu sayinin faktoriyelini donduren bir program yaziniz. Son gonderim tarihi: 25 Mart 23:00
javac Main.java #Program Derleme
java Main 5 #Derlenmis programi 5 degeri ile calistirma
120 #Program Ciktisi
java Main 1 #Derlenmis programi 1 degeri ile calistirma
1 #Program Ciktisi
java Main 0 #Derlenmis programi 0 degeri ile calistirma
1 #Program Ciktisi
java Main 3 #Derlenmis programi 6 degeri ile calistirma
6 #Program Ciktisi

Metin Dosyasindaki Degerleri Diziye Aktarma

Eliminiz altinda `liste.txt' isimli bir metin dosyasi olsun ve bu dosyada tam sayilar saklansin. Tam sayilar birbirinden bosluk (space) karakteri ile ayrilsin. Ornegin liste.txt dosyamizin icerigi asagidaki gibi olabilir.

5 6 7 8 9 4 3 5 4 3

Bu dosyayi okuyup icerigini int turde bir diziye aktarabiliriz. Parametre olarak dosya ismi (ya da yolu) alip o dosyadaki degerleri sirasiyla iceren int dizisi donduren ReadIntArrayFromFile metodunu inceleyiniz. Bu metodu icinde tam sayilarin birbirlerinden bosluk karakteri ile ayrildigi turde bir metin dosyasinda kullabiliriz; ama bu fonksiyonu bu formatta olmayan bir dosyanin iceriginden dizi elde etmek icin kullanmak beklenmeyen sonuclar uretebilir. Bu metodu bundan sonraki bazi odevlerde kullanmaniz gerekecektir. Bu nedenle metodun amacinin ne oldugunu ve metodun nasil kullanilabilecegini anlamaniz bazi odevleri kolay kodlayabilmenizde faydali olacaktir.

import java.io.FileReader;
import java.util.*;

public class Main {
    public static void main(String[] args){
        int[] elems = ReadIntArrayFromFile("list.txt");
        int i = 1;
        for (int v : elems){
            System.out.println("Dosyadaki " + i  + ". tam sayi " + v + "'dir.");
            i++;
        }
    }

    public static int[] ReadIntArrayFromFile(String path){
        List<Integer> intList = new ArrayList<Integer>();
        Scanner sc;
        try {
            sc = new Scanner(new FileReader(path)).useDelimiter("\\s+");
        }
        catch(Exception ex){
            return null;
        }

        while (sc.hasNext()) {
            String token = sc.next();
            int num = Integer.parseInt(token);
            intList.add(num);
        }

        int[] intArray = new int[intList.size()];
        int ind = 0;
        for (Integer v:intList){
            intArray[ind++] = v.intValue();
        }
        return intArray;
    }

}

Yukaridaki programin ciktisi:

Dosyadaki 1. tam sayi 5'dir.
Dosyadaki 2. tam sayi 6'dir.
Dosyadaki 3. tam sayi 7'dir.
Dosyadaki 4. tam sayi 8'dir.
Dosyadaki 5. tam sayi 9'dir.
Dosyadaki 6. tam sayi 4'dir.
Dosyadaki 7. tam sayi 3'dir.
Dosyadaki 8. tam sayi 5'dir.
Dosyadaki 9. tam sayi 4'dir.
Dosyadaki 10. tam sayi 3'dir.

Asagida bu metodu kullanan baska bir kod ve bu kodun terminal ciktisi verilmektedir. Verilen kod komut satiri argumani olarak alinan dosyadaki sayilarin toplamini ekrana yazdirmaktadir.

import java.io.FileReader;
import java.util.*;

public class Main {
    public static void main(String[] args){
       int[] arr = ReadIntArrayFromFile(args[0]);
       int sum = 0;
       for (int i = 0; i < arr.length; i++){
           sum += arr[i];
       }
       System.out.println(sum);
    }

    public static int[] ReadIntArrayFromFile(String path){
        List<Integer> intList = new ArrayList<Integer>();
        Scanner sc;
        try {
            sc = new Scanner(new FileReader(path)).useDelimiter("\\s+");
        }
        catch(Exception ex){
            return null;
        }

        while (sc.hasNext()) {
            String token = sc.next();
            int num = Integer.parseInt(token);
            intList.add(num);
        }

        int[] intArray = new int[intList.size()];
        int ind = 0;
        for (Integer v:intList){
            intArray[ind++] = v.intValue();
        }
        return intArray;
    }
}
cat listem.txt #cat komutu ile dosya icerigini ekrana yazdirabilirsiniz
1 3 5 89 -9 87 34
javac Main.java #Yukaridaki kodu derlemek icin terminale yazdigimiz komut
java Main.class listem.txt #Derlenmis programi listem.txt argumani ile calistirma
210 #Calistirdigimiz programin ciktisi

Yeni Odevler (Odev Verilme Tarihi: 28 Mart 2022)

Bu odevleri kodlayabilmeniz icin ReadIntArrayFromFile metodunu kullanmaniz gerekmektedir. Sablon kodlarda size hazir verilen bu metodun kodlari ile oynamayiniz ve herhangi bir degisiklik yapmayiniz!

  • Odev4 DiziCarpim Arguman olarak icinde tamsayilarin saklandigi ve bu sayilarin bosluk karakteri ile birbirlerin ayrildigi bir metin dosyasinin konumunu (path, yol, dosya ismi) alan ve bu dosyadaki sayilarin carpimini ekrana yazdiran bir program yaziniz. Metin dosyasi bos bir dosya ise (icinde hic tamsayi bulunmazsa program ekrana 1 (carpma isleminin etkisiz elemani) yazdirmalidir. Son gonderim tarihi: 3 Nisan 2022 23:00
cat list.txt
1 5 6 9 9 -3
javac Main.java
java Main list.txt
-7290
cat deneme.txt
1 1 1 -1 1 1 8 -4 9   2 2 1
javac Main.java
java Main deneme.txt
1152
cat deneme3.txt
     #deneme3.txt dosyasinda sadece bosluk karakterleri var. 
javac Main.java
java Main deneme3.txt
1 # 1 carpma isleminin etkisiz elemanidir.
  • Odev5 DiziCiftOrtalama Arguman olarak icinde tamsayilarin saklandigi ve bu sayilarin bosluk karakteri ile birbirlerin ayrildigi bir metin dosyasinin konumunu (path, yol, dosya ismi) alan ve bu dosyadaki sayilardan cift olanlarin ortalamasini ekrana yazdiran bir program yaziniz. Listede cift sayi yoksa ortalama 0 olacagi icin ekrana sifir yazdirilmalidir. Tam sayilarin ortalamasi rasyonel sayi (double) cikabilir. Programiniz kodlarken bu durumu goz onunde bulundurunuz! Son gonderim tarihi: 3 Nisan 2022 23:00
cat a.txt
1 4 6 9 9 -3
javac Main.java
java Main a.txt
5
cat deneme.txt
0 0 0 0 1 1 8 -4 9 2 0 0
javac Main.java
java Main deneme.txt
0.666
cat cift.txt
1 6 4 4
javac Main.java
java Main cift.txt
4.666
  • Odev6 DiziFark Arguman olarak icinde tamsayilarin saklandigi ve bu sayilarin bosluk karakteri ile birbirlerin ayrildigi bir metin dosyasinin konumunu (path, yol, dosya ismi) alan ve bu dosyadaki sayilardan en buyugu ile en kucugu arasindaki farki max - min ekran yazdiran bir program yaziniz. Dosyadaki en kucuk ve en buyuk sayi ayni sayi program ekrana 0 yazdirmalidir. Ayni sekilde arguman olarak alinan dosyada herhangi bir sayi bulunmuyorsa program ekrana 0 yazdirmalidir. Son gonderim tarihi: 3 Nisan 2022 23:00
cat a.txt
1 4 6 9 9 -3
javac Main.java
java Main a.txt
12 #9 - (-3)
cat deneme.txt
1 1 6 7 5 8 8 8 1 
javac Main.java
java Main deneme.txt
7 # 8 - 1
cat cift.txt
4 4 4 4 4
javac Main.java
java Main cift.txt
0 #4 - 4

Vize Uygulama Sorulari ve Cozumleri

9 Mayis 2022 (Odev ve Proje Degerlendirmeleri)

  • 4., 5. ve 5. odev ile 1. 2. proje gonderimleriniz degerlendirilmistir.
  • 1., 2. ve 3. odev ile ilgili not degerlendirme tablolari guncellenmistir.
  • Notlariniz gormek icin tiklayiniz!

Trafik (22 Mayis 2022)

trafik_22_mayis

bmb212_algorithms's People

Contributors

gusanmaz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bmb212_algorithms's Issues

cat komutu windows komut istemi karşılığı

Linux işletim sisteminde dosya okuma işlemini gerçekleştirdiğimiz 'cat' komutunun windows cmd karşılığı 'type' komutudur.
type list.txt
Benzer şekilde dosyaya yazmak isterseniz 'echo' komutunu kullanabilirsiniz.
echo 1 2 3 4 5 6 7 > list.txt

!!Dosyaya yazma işlemi sona ekleme yapmaz.

Proje 1 C# Taslak kodu

Proje 1davetini kabul ettikten sonra sizin icin olusturulan repodaki Main.cs icindeki taslak C# kodunda bazi hatalar var.

Proje 1'i C#'da kodlayan arkadaslar gonderecekleri kodlari asagidaki taslak koda uygun olarak hazirlasinlar.

public class Program {
    public static void Main(string[] arg){
        //main fonksiyonunu bu sekilde kalabilir. Bu fonksiyon altina yazdiklariniz degerlendirmeye alinmayacaktir.
        //System.out.println("Hello World");
        System.Console.WriteLine("Hello World");
    }
    
    public static double TersToplam(int m, int n){
        return 0;
    }
    
    public static int AsalFark(int n){
        return 0;
    }
    
    public static int ToplaPalindrome5(){
        return 0;
    }
    
    public static long ToplaPalindrome6(){
        return 0;
    }
    
    public static double PiKareBul(int m){
        return 0;
    }
    
    public static double EulerBul(int m){
        return 0;
    }
    
    public static int KatalanSayisi(int n){
        return 0;
    }
    
    public static int PerrinSayisi(int n){
        return 0;
    }
    
    public static int CarpanToplam(int sayi){
        return 0;
    }
    
    public static int EkokBul(int m, int n){
        return 0;
    }
}

Not Tablolari

  • Not tablolari altinda Compilation hucresinin uzerine geldiginizde cikan tooltip'de derlenmeyen kodlar icin cikan metin onceden cok bilgilendirici degildi. Artik bu tooltip uzerinden derleyicinin kodunuz icin urettigi derleme hatasi mesajlarini gorebilirsiniz.
  • Not tablolarinin en altinda artik ilgili odev/proje ile ilgili genel istatistiki bilgileri gorebilirsiniz.
  • Ayrica kodlariniz javac 17.0.3 derleyicisi ile yeniden derlenip yeni not tablolari olusturuldu. Eger kodlarinizda Java 8'den sonra gelen ozellikler kullandiysaniz, notlarinizda degisiklikler (olumlu degisiklikler) gorebilirsiniz.

Discussions Bolumu

Bundan sonra ders ile ilgili duyurularda Isues sayfasinin yani sira Discussion sayfasi da kullanilacaktir. Issues sayfasi gibi Discussions sayfasini da takip etmeniz, gerek gordugunuzde bu sayfalarda yeni bir konu acmaniz tavsiye edilir.

Proje 1 Uyarilari

  • ⚠️❗ PDF'de sizden yazilmasi istenen fonksiyonlar iclerinde I/O (kullanicidan veri okuma/ekrana deger yazdirma) islemleri yapmayiniz. main fonksiyonu icinde I/O yapabilirsiniz.

Odev 4, 5 ve 6 Terminal Ciktilari

Bu odevlerin aciklamalarinda verilen terminal ciktilarinda programin calistirildigi komutlar eksik verilmistir. Hatali terminal ciktilari duzeltilmistir.

Ornegin Odev 4 icin verilen eski terminal ciktisi asagidaki gibidir:

cat list.txt
1 5 6 9 9 -3
javac Main.java
java Main 
-7290

Duzeltme yapildiktan sonra verilen terminal ciktisi asagidaki gibi olmustur:

cat list.txt
1 5 6 9 9 -3
javac Main.java
java Main list.txt
-7290

Bu uc odev icin kod gonderimi yaparken guncellenmis odev aciklamalarini dikkate aliniz.

Project ToplaPalindrome6 için int değer sınır aralığı yetersiz kalıyor.

Merhabalar, Proje dosyasında sunulan problerden ToplaPalindrome6 problemi için int sınır aralığı sanırım yetersiz kalıyor. Bir ödev olduğu için sonucu vermemek gerekirse ToplaPalindrome5 fonksiyonu x * 10^6 sonucunu üretirken ToplaPalindrome6 fonksiyonu x * 10^8 sonucunu üretiyor ve bu sonuçta int sınır aralığına sığmıyor.

Ben mi yanlış yapıyorum yoksa int yerine double vs. mi kullanmamız gerekiyor?

Proje 1 Degerlendirme Itirazlari

  • Proje 1'i C# ile kodladiysaniz ve kodunuzun Java'ya cevrilmesi sirasinda Proje 1 notunuzu olumsuz etkileyen bir cevirim yapildigini dusunuyorsaniz bu issue altina yorum birakabilirsiniz.
  • Itiraz oncesi lutfen gonderdiginiz C# kodunun derleme hatasi vermediginden emin olunuz.
  • C# kodunuzdaki ToplaPalindrome5 ve ToplaPalindrome6 fonksiyonlarinin degerlendirilmesinde hata oldugunu dusunuyorsaniz bu durumu yorumda ozel olarak belirtiniz. Bu konuda bir itirazda bulunmadan yazdiginiz bu fonksiyonlarin C#'da calistigindan ve dogru deger dondurdugunden emin olunuz.

Proje ve Odevlerde ogrenci_no.txt isimli bos dosya olusturulmasi

Bundan sonra gondereceginiz odevlerde ogrenci_no.txt isimli bos bir dosya olusturmaniz gerekmektedir. Ornegin Ogrenci numaraniz 1234567890 ise olusturacaginiz dosya 1234567890.txt olmalidir. Ornek olmasi icin https://github.com/gusanmaz/NKU_DS_2022_Java_File2IntArr_Template reposunda 1234567890 numarali temsili ogrenci icin boyle bir dosya olusturulmustur.

Ilk uygulama dersinde formu doldurmayan, doldurup eksik/yanlis bilgi veren ogrencilerin odevlerinin degerlendirilmesinde sorunlar ortaya cikti. Bundan sonraki odev degerlendirmelerinde benzer sorunlar yasanmamasi icin boyle bir istekte bulunulmaktadir.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.