Minggu, 22 September 2013

1.    Dasar Teori
    
     * Dasar Teori Tentang Algoritma dan Pemrograman                 
                 Dalam Mempelajari Teori Algoritma dan Pemrograman dalam matakuliah Algoritma dan Pemrograman, maka perlulah mahasiswa terlebih dahulu mengenal akan definisi-definisi masing-masing dari kata  ‘Algoritma’ serta ‘Pemrograman’.

Beberapa definisi Algoritma adalah  seperti berikut ini :

  • Pola pikir yang terstruktur yang berisi tahap-tahap penyelesaian masalah.
  • Urutan logis pengambilan keputusan untuk pemecahan masalah.
  • Urutan langkah berhingga untuk memecahkan masalah logika dan matematika

Sedangkan definisi dari Pemrograman yaitu Proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dengan menggunakan suatu bahasa pemrograman.

Adapun ilustrasi proses pemrograman, terlihat dalam gambar 1.1. berikut ini :


diagrAlirPemrograman

Karakteristik Algoritma

  1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. Sebagai contoh, dalam algoritma Euclidean, pada langkah 1, jika n = 0, algoritma berhenti, jika n tidak = 0 maka nilai n selalu berkurang sebagai akibat dari langkah 2 dan 3, dan pada akhirnya nilai n = 0. Program yang tidak pernah berhenti mengindikasikan bahwa program tersebut berisi algoritma yang salah.
  2. Setiap langkah harus di defenisikan dengan tepat dan tidak berarti dua (ambiguous). Pembaca harus mengerti apa yang di maksud dengan “m” dan “n” adalah bilangan bulat tak negatif (-). Contoh lainnya pernyataan ” bagilah p dengan beberapa sejumlah bilangan bulat positif” dapat bermakna ganda. Berapakah yang di maksud dengan “berapa” ? Algoritma menjadi jelas jika langkah tersebut di tulis “bagilah p dengan 10 buah bilangan bulat positif”

  3. Algoritma memiliki nol atau lebih masukan (input). Masukan ialah besaran yang diberikan kepada algoritma untuk di proses. Algoritma Euclidean mempunyai dua buah masukan, yaitu m dan n.
  4. Algoritma mempunya nol atau lebih keluaran (output). Keluaran dapat berupa pesan atau besaran yang memiliki hubungan dengan masukan. Algoritma Euclidean mempunyai 1 keluaran, yaitu m pada langkah 1, yang merupakan pembagi bersama terbesar dari kedua bilangan.
  5. Algoritma harus sangkil (effective). Setiap langkah harus sederhana sehingga dapat di kerjakan dalam sejumlah waktu yang masuk akal.
  * Flowchart

Flowchart digunakan dalam merancang dan mendokumentasikan proses atau program yang kompleks. Seperti jenis diagram, mereka membantu memvisualisasikan apa yang terjadi dan dengan demikian membantu pengunjung untuk memahami proses, dan mungkin juga menemukan kelemahan, kemacetan, dan fitur kurang jelas lainnya di dalamnya. Ada berbagai jenis diagram alur, dan masing-masing jenis memiliki repertoar sendiri kotak dan konvensi penulisan. Dua jenis yang paling umum dari kotak di flowchart adalah:
  • langkah pengolahan, biasanya disebut aktivitas, dan dilambangkan sebagai kotak persegi panjang
  • keputusan, biasanya dinotasikan sebagai berlian.
Sebuah diagram alur digambarkan sebagai "lintas-fungsional" saat halaman dibagi menjadi berbeda swimlanes menggambarkan kontrol unit organisasi yang berbeda. Sebuah simbol muncul dalam tertentu "lane" berada dalam kontrol dari unit organisasi. Teknik ini memungkinkan penulis untuk mencari tanggung jawab untuk melakukan tindakan atau membuat keputusan dengan benar, menunjukkan tanggung jawab setiap unit organisasi untuk bagian yang berbeda dari sebuah proses tunggal.
Flowchart menggambarkan aspek-aspek tertentu dari proses dan mereka biasanya dilengkapi dengan jenis diagram. Misalnya, Kaoru Ishikawa mendefinisikan flowchart sebagai salah satu dari tujuh alat dasar kontrol kualitas, di samping histogram , bagan Pareto , periksa lembar , peta kendali , diagram sebab-akibat , dan diagram pencar . Demikian pula, dalam UML , konsep notasi-model standar yang digunakan dalam pengembangan perangkat lunak, diagram aktivitas , yang merupakan jenis flowchart, hanyalah salah satu dari banyak jenis diagram yang berbeda.
Diagram Nassi-Shneiderman merupakan notasi alternatif untuk aliran proses.
Nama alternatif umum meliputi: flowchart, proses flowchart, flowchart fungsional, proses peta, diagram proses, diagram fungsional proses, model proses bisnis, model proses, diagram alir proses, diagram alur kerja, diagram alir bisnis. Istilah "flowchart" dan "flow chart" digunakan secara bergantian


* Psoudecode
       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.
Tidak ada satu pun standar yang berlaku atas kode-palsu, sebuah program yang masih berupa kode-palsu tidak dapat dijalankan. Kode-palsu menyerupai pula kerangka program (skeleton programs), termasuk dummy code, yang bisa dikompilasi tanpa kesalahan. Diagram alur dapat pula dimasukkan sebagai alternatif berbasis grafis sebuah kode-palsu

  * Bahasa pemrograman 
Bahasa pemrograman, atau sering diistilahkan juga dengan bahasa komputer atau bahasa pemrograman komputer, adalah 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.

2.    Langkah-langkah pemecahan masalah

v    Game pertama: Menukarkan isi gelas
1.     Siapkan gelas kosong,  kita sebut gelas c
2.     Tuangkan air yang berada di dalam gelas A ke gelas C
3.     Tuangkan air yang berada di dalam gelas B ke gelas A
4.     Tuangkan air yang berada di dalam gelas C ke gelas B
5.     Isi kedua gelas tersebut sudah tertukar

Game kedua: Mendapatkan air ember sebanyak 4 liter 
    

1. Isi penuh ember bervolume 3 liter dengan air (ember 3 liter berisi 3 liter air) 
2. Tuangkan air dari ember bervolume 3 liter ke dalam ember air bervolume 5 liter       (ember 5 liter,sekarang berisi 3 liter air)
3.  Isi penuh kembali ember yang bervolume 3 liter dengan air (ember 3 liter berisi 3 liter air)
4. Tuangkan air dari ember bervolume 3 liter kedalam ember bervolume 5 liter hingga penuh (di dalam ember 3 liter sekarang tersisa 1 liter air)
5. Buang seluruh air dari ember bervolume 5 liter air (ember 5 liter kosong)
6. Tuangkan air dari ember bervolume 3 liter(yang tersisa 1 liter tadi) kedalam ember bervolume 5 liter (ember 5 liter sekarang berisi 1 liter air, ember 3 liter kosong)
7. Isi penuh ember bervolume 3 liter dengan air (ember 3 liter berisi air 3 liter)
         8. Tuangkan air dari ember bervolume 3 liter ke dalam ember bervolume 5 liter (ember 5                 liter sekarang berisi 1 + 3 = 4 liter air)
   Game ketiga: Family Crisis
1. orang kesatu dan keenam menyeberang dan orang kesatu kembali dan membawa orang ketiga.
2. lalu orang ketiga kembali.
3. kemudian orang kedelapan dan kedua belas menyeberang.
4. terakhir orang kesatu menjemput orang ketiga untuk sama-sama menyeberang.

v    Game keempat: Canibal Game
1. dua kanibal menyebrang ke pulau seberang.
2. lalu 1 kanibal turun dan 1 kanibal lagi kembali keseberang.
3. lalu kanibal itu membawa kanibal yang lain keseberang
4.1 kanibal kembali,lalu 2 orang rahib menyeberang dengan meninggalkan 1 rahib dan 1 kanibal
5. lalu rahib dan kanibal menyebrang kembali ke tempat semula
6. kanibal turun rahib naik untuk menyebrang bersama rahib yang ada di perahu
7. ke-2 rahib turun dan kanibal naik menyebrang,kanibal yang di sebrang naik menyebrang bersama kanibal yang membawa perahu
8. kanibal 1 turun dan yang lain menjemput kanibal yang tersisa diseberang.


v    Game kelima: Wolf Game
1.petani membawa kambing dari pulau pertama kepulau kedua.
2.lalu petani kembali sendiri kepulau pertama untuk membawa anjing keseberang pulau kedua.
3.dari pulau kedua petani membawa kambing kepulau pertama.
4.kemudian petani tersebut membawa rumput dari pulau pertama kepulau kedua.
5.dan yang terakhir petai kembali kepulau pertama untuk membawa kambing kepulau kedua.
    3.    Referensi
http://wismarini.staff.unisbank.ac.id/2013/06/20/definisi-dasar-teori-algoritma-dan-pemrograman/
http://sindarku.wordpress.com/2009/06/24/karakteristik-algoritma/
http://en.wikipedia.org/wiki/Flowchart
http://id.wikipedia.org/wiki/Kode_palsu
http://id.wikipedia.org/wiki/Bahasa_pemrograman