Jumat, 20 September 2013

Daspro-modul1

    MODUL PRAKTIKUM 1
       PEMAHAMAN ALGORITMA
        
I.Dasar Teori

1.Dasar teori tentang algoritma dan pemrograman

Dalam matematika dan komputasi , algoritma atau algoritme merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
Sedangkan, pemrograman adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau 'pekerjaan' sesuai dengan keinginan si pemrogram (programmer). Untuk dapat melakukan pemrograman, diperlukan keterampilan dalam algoritma, logika, bahasa pemrograman, dan di banyak kasus, pengetahuan-pengetahuan lain seperti matematika.
Pemrograman adalah sebuah seni dalam menggunakan satu atau lebih algoritma yang saling berhubungan dengan menggunakan sebuah bahasa pemrograman tertentu sehingga menjadi sebuah program komputer. Bahasa pemrograman yang berbeda mendukung gaya pemrograman yang berbeda pula. Gaya pemrograman ini biasa disebut paradigma pemrograman.

2.Karakteristik algoritma

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Adapun algoritma memiliki beberapa jenis yaitu,
·    Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
·    Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.
·    Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.

3.Flowchart

Flowchart atau diagram alir,merupakan sebuah diagram dengan simbol-simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah. Diagram ini bisa memberi solusi selangkah demi selangkah untuk penyelesaian masalah yang ada di dalam proses atau algoritma tersebut.

Alan B.Sterneckert(2003), menyarankan untuk membuat model diagram alir yang berbeda sesuai dengan prefektif pemakai (managers, system analysts and clerks) sehingga dikenal ada 4 jenis diagram alir secara umum:
·    Diagram Alir Dokumen, menunjukkan kontrol dari sebuah sistem aliran dokumen.
·    Diagram Alir Data, menunjukkan kontrol dari sebuah sistem aliran data.
·    Diagram Alir Sistem, menunjukkan kontrol dari sebuah sistem aliran secara fisik.
·    Diagram Alir Program, menunjukkan kontrol dari sebuah program dalam sebuah sistem.

4.Pseudocode(kode palsu)

Kode-palsu atau dalam bahasa inggris lebih dikenal sebagai pseudo-code merupakan deskripsi tingkat tinggi informal dan ringkas atas algoritma pemrograman komputer yang menggunakan konvensi struktural atas suatu bahasa pemrograman, dan ditujukan untuk dibaca oleh manusia dan bukan oleh mesin. Kode palsu biasanya tidak menggunakan elemen detail yang tidak diperlukan untuk kebutuhan pemahaman manusia atas suatu algoritma, seperti deklarasi variabel, kode ataupun subrutin untuk sistem yang bersifat spesifik. Bahasa pemrograman yang digunakan lebih diperbanyak dengan deskripsi dalam bahasa natural atas sesuatu hal yang bersifat detail, atau dengan menggunakan notasi matematis. Tujuan dari penggunaan kode-palsu adalah untuk mempermudah manusia dalam pemahaman dibandingkan menggunakan bahasa pemrograman yang umum digunakan, terlebih aspeknya yang ringkas serta tidak bergantung pada suatu sistem tertentu merupakan prinsip utama dalam suatu algoritma.
Kode-palsu umumnya digunakan dalam buku-buku ataupun publikasi karya ilmiah yang mendokumentasikan suatu algortima, dan juga dalam perencanaan pengembangan program komputer, untuk membuat sketsa atas struktur sebuah program sebelum program yang sesungguhnya ditulis.
Sintaksis/Tata cara penggunaan kode palsu umumnya tidak mengikuti aturan umum yang berlaku pada suatu bahasa pemrograman; dalam arti tidak ada suatu bentuk standar yang sistematik, namun meskipun penulis umumnya menggunakan sintaksis, contoh struktur kontrol, dari bahasa pemrograman umum yang digunakan. Umumnya sintaksis yang populer digunakan menggunakan sintaksis bahasa pemrograman Pascal, BASIC, C, C++, Java, Lisp, dan ALGOL. Deklarasi variabel umumnya tidak digunakan, begitu pula halnya dengan blok kode yang sering kali digantikan dengan satu baris penjelasan dalam bahasa manusia (natural).

5.Bahasa pemrograman

Bahasa pemrograman, atau sering diistilahkan juga dengan bahasa komputer, adalah teknik komando/instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk mendefinisikan program komputer. Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data mana yang akan diolah oleh komputer, bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara persis yang akan diambil dalam berbagai situasi.
Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari:
1.    Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110
2.    Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
3.    Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||, dsb.
4.    Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb.
Sebagian besar bahasa pemrograman digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa C yang digolongkan sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan Bahasa Tingkat Rendah.

II.Langkah-langkah pemecahan masalah

1. a. Kita sediakan gelas pendamping atau kita sebut gelas C (karena tidak aturannya).
    b. Kita tuangkan isi gelas A yang berisi air berwarna merah ke dalam gelas C.
    c. Setelah gelas A kosong, kita tuangkan isi gelas B yang berisi air berwarna biru ke dalam gelas A.
    d. Setelah gelas B kosong, kita tuangkan isi gelas C yang berisi air berwarna merah ke dalam gelas B.
[!] Sehingga gelas A berisi air biru dan gelas B berisi air merah.

2. a. Isi penuh ember yang ber volume 5 liter dengan air
    b. Isi ember 5 liter tersebut di tuangkan ke ember 3liter sampai penuh.
    c. Isi ember 3 liter tersebut di buang lalu,
    d. Isi ember yang bervolume 5 liter yang memiliki isi 2 liter di tuangkan ke dalam ember bervolume 3 liter lalu,
    e. Ember bervolume 5 liter di isi penuh kembali, lalu di tuangkan ke ember bervolume 3 yang semula berisi 2 liter menjadi 3 liter.
[!] sehingga ember yang bervolume 5 liter berisi kan air 4 liter.

3. a. Pilih orang yang memiliki kecepatan 1 dan 3 untuk menyeberang
    b. Seberangkan kembali orang yang kecepatannya 1
    c. Pilih orang yang memiliki kecepatan 12 dan 8 untuk menyeberang
    d. Seberangkan kembali orang yang kecepatannya 3
    e. Pilih orang yang memiliki kecepatan 6 dan 1 untuk menyeberang
    f. Seberangkan kembali orang yang kecepatannya 1
    g. Pilih orang yang memiliki kecepatan 1 dan 3 untuk menyeberang
[!] Sehingga semua orang bisa menyeberang dengan sisa waktu 1 detik

4. a. Pilih 2 kanibal untuk menyeberangi pulau, satu kanibal kembali lalu,
    b. membawa kanibal ke 3 untuk menyeberangi, satu kanibal kembali lalu,
    c. Pilih 2 rahib untuk menyeberangi, satu rahib kembali dengan satu kanibal lalu,
    d. kanibal dig anti dengan rahib yang ke 3 , kanibal yang pertama di kembalikan untuk menjemput kanibal yang lain, sampai semua kanibal menyeberang.
[!] Sehingga semua dapat sampai ke pulau, dan para rahibpun selamat.

5. a. Pilih kambing untuk di seberangkan dahulu,
    b. Pilih serigala untuk di seberangkan, lalu membawa kembali si kambing
    c. Pilih rumput untuk di seberangkan , lalu petani kembali
    d. Pilih kambing untuk di seberangkan.
[!] Sehingga rumput,kambing,serigala sampai ke seberang dengan selamat.

III Referensi

http://id.wikipedia.org/wiki/