Sabtu, 21 September 2013

Penyelesaian Tugas Dasar Pemrograman



1    1.    Dasar teori
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.
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 atau diagram alir
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. [1]


Pseudocode
Pseudocode adalah deskripsi tingkat tinggi informal prinsip operasi dari program komputer atau algoritma lainnya.

Ia menggunakan konvensi struktural bahasa pemrograman, tetapi dimaksudkan untuk membaca manusia daripada membaca mesin. Pseudocode biasanya menghilangkan detail yang tidak penting untuk memahami manusia algoritma, seperti deklarasi variabel, sistem kode khusus dan beberapa subrutin. Bahasa pemrograman ini ditambah dengan alam rincian bahasa deskripsi, mana nyaman, atau dengan notasi matematika kompak. Tujuan menggunakan pseudocode adalah bahwa lebih mudah bagi orang untuk memahami dari kode bahasa pemrograman konvensional, dan bahwa itu adalah deskripsi yang efisien dan lingkungan-independen dari prinsip kunci dari sebuah algoritma. Hal ini umumnya digunakan dalam buku teks dan publikasi ilmiah yang mendokumentasikan berbagai algoritma, dan juga dalam perencanaan pengembangan program komputer, untuk membuat sketsa struktur program sebelum coding yang sebenarnya terjadi.

Tidak ada standar untuk sintaks pseudocode ada, sebagai program dalam pseudocode bukan merupakan program dieksekusi. Pseudocode menyerupai, tetapi tidak harus bingung dengan program kerangka, termasuk kode boneka, yang dapat dikompilasi tanpa kesalahan. Flowchart dan Bahasa Modeling Bersatu (UML) grafik dapat dianggap sebagai alternatif grafis untuk pseudocode, tetapi lebih luas di atas kertas.
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.

2. Langkah-langkah penyelesaian masalah
Game 1
Penyelesaian :
1.     Ambil 1 gelas kosong dan beri label “C”
2.     Tuang air dari gelas “A” ke dalam gelas “C”
3.     Tuang air dari gelas “B” ke dalam gelas “A”
4.     Tuang air dari gelas “C” ke dalam gelas “B”
Masalah terselesaikan air dari gelas “A” sudah dipindah ke gelas “B” dan sebaliknya air digelas “A” sudah dipindah ke gelas “B”.
Game 2                                   
Penyelesian untuk game-logika no.2
ALGORITMA Mendapatkan air 4 liter dari dua buah ember bervolume 5 dan 3 liter
- Isi penuh ember 3 liter dengan air (ember 3 liter berisi 3 liter air)
- Tuangkan air dari ember 3 liter ke dalam ember air 5 liter (ember 5 liter,sekarang berisi 3 liter air)
- Isi penuh kembali ember ember 3 liter dengan air (ember 3 liter berisi 3 liter air)
tuangkan air dari ember 3 liter kedalam ember 5 liter hingga penuh (di dalam ember 3 liter sekarang tersisa 1 liter air)
- Buang seluruh air dari ember 5 liter air (ember 5 liter kosong)
tuangkan air dari ember 3 liter(yang tersisa 1 liter tadi) kedalam ember 5 liter (ember 5 liter sekarang berisi 1 liter air, ember 3 liter kosong)
- Isi penuh ember 3 liter dengan air (ember 3 liter berisi air 3 liter)
- Tuangkan air dari ember 3 liter ke dalam ember 5 liter (ember 5 liter sekarang berisi 1 + 3 = 4 liter air)
Game 3
Ada sebuah keluarga terdiri dari 5 orang, akan menyeberang melewati jembatan pada malam hari dengan bantuan lampu yang hanya bisa bertahan 30 detik, dengan catatan:
a.       Setiap orang mempunyai kecepatan yang berbeda-beda (1, 3, 6, 8, dan 12 detik).
b.      Apabila yang melewati jembatan ada 2 orang, maka kecepatannya akan dihitung berdasarkan yang paling lambat.

Game bisa di akses di : http://www.plastelina.net/game3.html
Pertanyaan : tuliskan langkah-langkah secara detail untuk menyelesaikan game tersebut.
    
         Permisalan :        Ujung “A” adalah ujung pemberangkatan.
                                      Ujung “B” adalah ujung akir/sebrang
Penjelasanya :
1.        Seberangkan si 1 detik dan 3 detik ke ujung “B”
2.        1 detik balik ke ujung”A”
3.        Seberangkan secara bersama-sama si 12 detik dengan si 8 detik ke ujung “B”
4.        Si 3 detik balik ke ujung “A”
5.        Si 1 detik dan 3 detik menuju ujung “B”
6.        Si 1 detik kembali ke ujung “A”
7.        Terakir sebrangkan si 1 detik dan si 6 detik ke ujung “B”


Game 4

Bagaimana caranya untuk menyeberangkan tiga rahib dan 3 kanibal ke pulai di seberang, dengan catatan:
a.       Perahu maksimal dapat ditumpangi dua orang.
b.      Perahu tidak dapat berjalan sendiri (tanpa penumpang)
c.       Jika jumlah rahib lebih sedikit dari kanibal, maka rahib akan dimakan oleh kanibal.

Game bisa di akses di : http://www.plastelina.net/game2.html
Pertanyaan : tuliskan langkah-langkah secara detail untuk menyeberangkan rahib dan kanibal ke pulai seberang.

Permisalan :   Ujung “A” adalah ujung pemberangkatan.
                        Ujung “B” adalah ujung akir/sebrang

Penjelasanya :
  1. Sebrangkan 1 biksu dan 1 setan ke ujung “B”
  2. 1 biksu ksmbali ke ujung “A”
  3. Sebrangkan 2 setan ke ujung “B”
  4. 1 setan kembali ke ujung “A”
  5. Sebrangkan 2 biksu ke ujung “B”
  6. 1 setan dan 1 biksu kembali ke ujung “A”
  7. Sebrangkan 2 biksu ke ujung “B”
  8. 1Setan kembali ke ujung “A”
  9. Sebrangkan 2 setan ke ujung “B”
  10. 1 setan kembali ke ujung “A”
  11. Terakir sebrangkan 2 setan terakir ke ujung “B”

Game 5
seorang petani akan bepergian ke kota dengan membawa se-ekor kambing , anjing, dan rumput yang ketiganya memiliki berat yang tidak jauh berbeda. Ditengah jalan, petani harus menyeberangi sungai dengan menggunakan perahu dan untuk melaluinya petani tersebut tidak diperbolehkan membawa sekaligus bawaanya mengingat kapasitas kekuatan perahu tersebut, dan untuk melaluinya petani harus membawa satu per-satu bawaannya, dengan catatan:
a.       Kambing makan rumput
b.      Anjing makan kambing

Pertanyaan : tuliskan langkah-langkah secara detail untuk menyeberangkan semua barang bawaan petani tersebut, dan berapa kali petani harus membawa satu-persatu bawaanya.

Permisalan :   Ujung “A” adalah ujung pemberangkatan.
                        Ujung “B” adalah ujung akir/sebrang


Penjelasanya :

  1. Angkut kambingnya dulu menuju ujung”B”, karena serigala tidak mungkin makan sayuran kembali seorang diri.
  2. Angkut sayurannya menuju ujubg ”B”, dan bawa kembali kambingnya ke ujung “A”
  3. Sekarang angkut anjingya menuju ke ujung “B” balik lagi seorang diri, ambil kambingnya menuju ujung “B”




3.Referensi