Jumat, 09 Januari 2015

    Contoh Laporan Akhir PAA



    LAPORAN AKHIR PRAKTIKUM


    Mata Praktikum                   : Perancangan Analisis dan Algoritma
    Kelas                                      : 3 IA 08
    Praktikum ke-                       : 1
    Tanggal Praktikum              : 6 Oktober 2014
    Materi                                     : Pengenalan PAA
    NPM                                       : 56412607
    Nama                                     : Rizky Forino Leonardy
    Ketua Asisten                       :
    Nama Asisten                       :
    Paraf Asisten                         :
    Jumlah Lembar                     :





                                                   
    LABORATORIUM INFORMATIKA
    UNIVERSITAS GUNADARMA
    2014



    LISTING :
    #include <stdio.h>
    #define rentang 10

    void sortir(int[], int);

    int main(){
                    int koin[rentang], n, i, nilai, tmp[rentang];

                    printf("===================Penukaran Koin=====================\n");
                    printf("Banyaknya Koin : ");
                    scanf("%d",&n);
                    printf("\nMasukkan Koin - koin : \n");
                    for (i=0; i < n; i++){
                                    printf("Koin ke -%d : ", i+1);
                                    scanf("%d",&koin[i]);
                                    }

                    sortir(koin,n);
                    printf("\nKoin yang tersedia adalah : \n");
                    for (i=(n-1);i>=0;i--){
                                    printf("%d \t", koin[i]);
                                    }

                    printf("\n");

                    printf("Masukkan jumlah yang akan dipecah : ");
                    scanf("%d", &nilai);
                    for(i=0;i<n;i++){
                     tmp[i] = nilai/koin[i];
                     nilai = nilai%koin[i];
                     }

                     for(i=0;i<n;i++){
                                    printf("Koin %d sebanyak %d \n", koin[i],tmp[i]);
                                    }
                                    return 0;
                     }

                     void sortir(int x[], int m){
                                    int i,j, tmp;

                                    for(i=0;i<m-i;i++){
                                                    for(j=0;j<=(m-2);j++){
                                                                    if(x[j] < x[j+1]){
                                                                                    tmp = x[j];
                                                                                    x[j] = x[j+1];
                                                                                    x[j+1] = tmp;         
                                                                                    }
                                                                    }
                                                    }
                                    }





    LOGIKA PROGRAM
    Seperti yang kita ketahui, algoritma adalah urutan langkah-langkah penyelesaian masalah yang disusun secara logis dan sistematis. Langkah-langkah dalam algoritma haruslah logis dan dapat ditentukan bernilai salah atau benar.
    Pada pertemuan pertama praktikum TI ini, kita mempelajari tentang algoritma Greedy, yaitu suatu algoritma yang mengambil nilai tertinggi dan memsortingnya dari suatu kumpulan nilai tertentu. Misalnya: Kita akan menukar koin, kita mempunyai 3 koin. Maka akan dilakukan pensortiran nilai dari pecahan koin yang terbesar dahulu.

    #include <stdio.h>
    Sebagai standard library yang berfungsi untuk I/O  package maksudnya digunakan jika kita ingin pada program kita menggunakan fungsi standard input atau output bisa dikatakan seperti portable input/output package. Tanpa menggunakan library ini, kita tidak bisa menggunakan perintah-perintah input/output pada program kita.

    #define rentang 10
    Library diatas berguna untuk menentukan rentang jarak baris output
    void sortir(int[], int);
    Pernyataan diatas adalah main procedure (prosedur utama dalam program ini). Pada program ini, program utama berbentuk prosedur untuk mengurutkan data yang kita input, disini yang akan diurutkan adalah variable masukan dari int[] dan int.

    int main() {
    Pernyataan di atas digunakan sebagai badan program. Fungsinya sama seperti public.static.void.main(String args[]) { pada bahasa pemrograman java.
    int koin[rentang], n, i, nilai, tmp[rentang];
    Pernyataan di atas digunakan untuk mendefinisikan variable yang akan digunakan dalam programnya. Tanda kurung siku [ ] menandakan variable tersebut bertipe array.

    printf("===================Penukaran Koin=====================\n");
    potongan source code untuk menampilkan kalimat hasil outputnya Dan “\n” untuk memindahkan kursor kebawah.
    printf("Banyaknya Koin : ");
    Pernyataan printf di atas digunakan untuk mencetak tulisan yang ada diantara tanda kutip “ ”.


    scanf("%d",&n);
    Pernyataan scanf digunakan untuk menyimpan angka yang kita input ketika program dieksekusi. %d digunakan untuk mengartikan data inputan akan ditampilkan dalam bentuk decimal, dan &n untuk mengartikan data inputan akan disimpan sementara pada variable n.

    printf("\nMasukkan Koin - koin : \n");
    Sama dengan Source code yang  digunakan sebelumnya yang gunanya untuk memasukan tulisan diantara tanda kutip “ ”.
    \n digunakan untuk member jeda (enter) pada saat program dieksekusi.

    for (i=0; i < n; i++){
    Pernyataan for diatas digunakan sebagai kondisi perulangan pada program. i = 0, akan melakukan perulangan sebanyak i yang kurang dari n dan setiap penjumlahan i yang ditambah 1 (i++) disetiap perulangan. Dan code “{“ digunakan untuk memulai statement  tsb.
    printf("Koin ke -%d : ", i+1);
    scanf("%d",&koin[i]); }
    source code di atas akan dilaksanakan sebanyak kurang dari n yang dimulai dari 0 dan menampilkan i dengan format “%d”. Source code di atas digunakan untuk menginput nilai dalam format “%d” dan di simpan pada suatu alamat dari variabel koin dengan index tertentu. Dan simbol “}”digunakan untuk mengakhiri statement program tsb, yaitu :
    sortir(koin,n);
                printf("\nKoin yang tersedia adalah : \n");
                for (i=(n-1);i>=0;i--){
                            printf("%d \t", koin[i]);
                            }

    sortir(koin,n);
    source code yang digunakan untuk mengurutkan nilai.
    printf("\nKoin yang tersedia adalah : \n");
    Source code yang tidak asing lagi yang gunanya untuk memanggil tulisan dan, digunakan untuk memberi jeda pada kursor sebanyak 1 baris.

    for (i=(n-1);i>=0;i--){
    Source code di atas adalah perulangan dengan nilai i = (n-1) dan melakukan perulangan sampai i lebih besar atau sama dengan 0 dengan pengurangan i sebanyak 1 di setiap pengulangannya. Dan code “{“digunakan untuk memulai statement  tersebut.
    printf("%d \t", koin[i]); }
    Source code yang digunakan untuk meperlihatkan hasil inputan source code yang diatas dan dengan index sesuai nilai i dan format yang digunakan adalah “%d”. Hasil output yang terdiri dari source code:
    printf("\n");
    memberi jeda enter pada source code

    printf("Masukkan jumlah yang akan dipecah : ");
    scanf("%d", &nilai);
    Pernyataan printf di atas digunakan untuk mencetak tulisan yang ada diantara tanda kutip, dan yang dibawahnya digunakan untuk memasukan jumlah koin yang nantinya akan diproses untuk di pecah
    for(i=0;i<n;i++){
    sama dengan yang sebelumnya Pernyataan for diatas digunakan sebagai kondisi perulangan pada program. i = 0, akan melakukan perulangan sebanyak i yang kurang dari n dan setiap penjumlahan i yang ditambah 1 (i++) disetiap perulangan. Dan code “{“ digunakan untuk memulai statement  tersebut.
    tmp[i] = nilai/koin[i];
    Source code di atas adalah source code yang digunkan untuk menghasilkan nilai bagi dari 2 variabel, yaitu variabel nilai dibagi koin dengan hasilnya di simpan pada variabel tmp pada index tertentu.
    nilai = nilai%koin[i];
    Di atas adalah source code yang digunkan untuk menghasilkan sisa bagi dari nilai%koin.
    }
    Simbol di atas digunkan untuk mengakhiri dari statement perulangan.

    for(i=0;i<n;i++){
    source code perulangan sebelumnya



    printf("Koin %d sebanyak %d \n", koin[i],tmp[i]);
    Source code di atas digunakan untuk menampilakn kalimat yang ada di dalam kurung dan varibelnya. Dengan format variabel koin[i] dan tmp[i] adalah “%d”.
    }
    Simbol di atas digunakan untuk mengakhiri dari statement dari perulangan yang ada di atas.
    return 0;
    angka 0 ini akan dikembalikan kepada sistem operasi. Nilai ini digunakan oleh sistem operasi untuk disimpan di variabel ERRORLEVEL pada MS DOS, dimana 0 artinya ‘sukses’.
    }
    Symbol untuk mengakhiri statement.

                 void sortir(int x[], int m){
                            int i,j, tmp;
                            for(i=0;i<m-i;i++){
                                        for(j=0;j<=(m-2);j++){
                                                    if(x[j] < x[j+1]){
                                                                tmp = x[j];
                                                                x[j] = x[+1];
                                                                x[j+1] = tmp;
                                                                }
                                                    }
                                        }
                            }

    Blok pernyataan di atas digunakan untuk mengurutkan angka yang telah kita input pada saat program dieksekusi.  Jika kita menuliskan angka-angka terkecil terlebih dahulu, maka akan diurutkan ke dalam nilai koin yang terbesar lalu terkecil.


    Kesimpulan dari program ini adalah diaplikasikan-nya dua buah algoritma yaitu algoritma bubble sort dan algoritma greedy. Algoritma bubble sort digunakan untuk menyortir sebuah array dengan bantuan satu buah variable temporary yang digunakan untuk menggantikan array yang lebih besar dengan array yang nilainya lebih kecil. Sedangkan algoritma greedy diaplikasikan karena untuk memecah uang tersebut dihitung terlebih dahulu dari pecahan yang paling besar dilanjutkan dengan variabel yang lebih kecil.

    OUTPUT :
    CONTOH LAIN :
    Bisa kita lihat output dan contoh lain diatas, kita menginput 3 nilai yang besar terlebih dahulu lalu ke kekecil. Maka secara otomatis program mensortir nilai dari kecil ke besar. Dan kita lalu memasukkan nilai koin yang ingin dipecah, yaitu 27. Maka secara otomatis disortir nilai yang lebih besar ke yang kecil yaitu koin 7 sebanyak 3 = 21 dan koin 5 sebanyak 1 = 5 semua jumlah koin ada 26 jadi sisa koin kurang 1 sebab inputan koin tidak ada nilai 1  jadi nilai koin maksimal 26. WASSALAMUALAIKUM

    Tidak ada komentar:

    Posting Komentar