Translate

Minggu, 22 September 2013

MODUL 1 ~ DASAR PEMROGRAMAN


A. DASAR TEORI
# Definisi Dasar Teori Algoritma dan Pemrograman #
Dalam mempelajari Teori Algoritma dan Pemrograman dalam mata kuliah 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. Teknik pemrograman dapat dibagi menjadi :
·        Pemrograman prosedural
·        Pemrograman deklaratif
·        Pemrograman fungsional
·        Pemrograman visual
·        Pemrograman berorientasi objek
# Struktur Dasar Algoritma #

        Setelah kontruksi dasar pembentuk algoritma, sekarang kita lihat bagaimana struktur dasar dari teks algoritma. Sehingga dengan mengikuti struktur tersebut kita dapat menyusun algoritma-algoritma tertentu untuk menyelesaikan masalah dengan efektif.
Algoritma disusun oleh 3 bagian (blok) yang biasanya selalu ada dalam sebuah algoritma. 3 bagian itu adalah :
1.     bagian judul (header)
2.     bagian deklarasi (declaration)
3.    bagian algoritma (sebagian menyebutnya dengan deskripsi)
Ketiga bagian tersebut secara umum ditunjukkan dalam notasi algoritmik seperti di bawah :
vPROGRAM nama program
{berisi judul algoritma, singkat dan jelas}
v DEKLARASI
{sebagai tempat untuk mengenalkan nama atau variabel apa saja yang digunakan dan tipe datanya serta prosedur dan fungsi yang dipakai}
v ALGORITMA
{berisi langkah-langkah penyelesaian masalah}
Pada setiap bagian sebaiknya diberikan komentar untuk memperjelas maksud dari pernyataan tersebut. Untuk komentar, penulisannya diapit oleh tanda kurung kurawal { dan }. Dengan komentar, algoritma yang kita buat menjadi lebih dimengerti dan dipahami, dan komentar ini tidak akan dieksekusi karena akan dilewati saja oleh program. 


§  Bagian Judul (header)
Sesuai bagiannya, kita perlu memberi judul terhadap algoritma yang kita buat. Judul sebaiknya singkat, dan jelas serta menggambarkan apa yang dilakukan oleh program. Di bawah judul, sebaiknya juga diberikan komentar singkat tentang masalah yang ingin diselesaikan itu, dan bagaimana masukan dan keluarannya.
Contohnya :
PROGRAM ucapan selamat datang
{program untuk menampilkan ucapan selamat datang kepada pengguna dengan masukan nama pengguna}
Bagian Deklarasi (declaration)
Digunakan untuk memperkenalkan semua variabel atau nama-nama yang akan terlibat dalam algoritma termasuk tipe data dan sebagainya. Apapun nama dan variabel yang digunakan dalam algoritma harus di ‘umumkan’ terlebih dahulu di bagian deklarasi ini, jika tidak, algoritma (dan program) tidak akan bisa menyelesaikan masalah. Justru malah menjadi masalah 
Contoh deklarasi adalah :
DEKLARASI
nama : string
usia : integer
Nama atau variabel adalah satu kesatuan leksikal, sehingga nama tidak boleh mengandung spasi, tanda baca, tanda operator dan sebagainya kecuali tanda “_” (garis bawah). Pada algoritma, tidak dibedakan antara huruf besar (kapital) atau huruf kecil, semuanya dianggap sama. Lebih jelasnya akan kita lihat pada posting berikutnya…
§  Bagian Algoritma (deskripsi)
Bagian ini adalah inti dari program untuk menyelesaikan masalah. Berisi instruksi-instruksi untuk pemecahan masalah dengan menggunakan notasi pseudo-code. Tidak perlu berpanjang lebar, kita lihat saja contohnya.
ALGORITMA :
read(nama, usia)
write(‘Selamat Datang ‘, nama)
write(‘Usia Anda sekarang adalah ‘, usia, ‘tahun’)
Nah, kalau ketiga bagian di atas digabungkan menjadi 1 kesatuan algoritma akan menjadi :
PROGRAM ucapan selamat datang
{program untuk menampilkan ucapan selamat datang kepada pengguna dengan masukan nama pengguna}
DEKLARASI
nama : string
usia : integer
ALGORITMA :
read(nama, usia)
write(‘Selamat Datang ‘, nama)
write(‘Usia Anda sekarang adalah ‘, usia, ‘tahun’)

# Pengertian Variable #
Variabel adalah suatu tempat untuk menampung data yang nilainya selalu berubah.Sedangkan, Konstanta adalah suatu tempat untuk menampung data yang nilainya selalu tetap dan tidak pernah berubah.
Variabel digunakan sebagai tempat penyimpanan data sementara. Data yang disimpan dalam variabel akan hilang setelah program selesai dieksekusi. Untuk penyimpanan data yang permanen, kita dapat menyimpan data di database atau di disk.
Variabel di dalam PHP diawali dengan tanda $. Untuk dapat menggunakan variabel, ada dua langkah yang harus dilakukan, deklarasi dan inisialisasi.


Cara mendeklarasikan variable :

Deklarasi variabel bisa disebut juga memperkenalkan atau mendaftarkan variabel ke dalam program. Dalam php, deklarasi variabel seringkali digabung dengan inisialisasi. Variabel dalam PHP dinyatakan dengan awalan $.
Contoh :
$var_angka1
$var_angka2
$var_hasil
Inisialisasi variable
Inisialisasi variabel adalah mengisi nilai untuk pertama kalinya ke dalam variabel.
Contoh inisialisasi :
$nama = “Heru Widayat”;
$jumlah = 3;
$harga = 500;

Aturan pemberian nama variabel :
1.     Dimulai dengan tanda $
2.     Karakter pertama harus huruf atau garis bawah ( _ )
3.     Karakter berikutnya boleh huruf, angka, atau garis bawah
4.     Tidak boleh menggunakan spasi
5.     Tidak boleh menggunakan karakter-karakter khusus (seperti : +, -, *, /, <, >, dll



# 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 definisikan 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 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.
Ø Simbol-Simbol
Gambar berikut adalah simbol flowchart yang umum digunakan.
Gambar
Simbol untuk
Keterangan
G-proses.JPG
Proses/ Langkah
Menyatakan kegiatan yang akan ditampilkan dalam diagram alir.
G-keputusan.JPG
Titik Keputusan
Proses / Langkah dimana perlu adanya keputusan atau adanya kondisi tertentu. Di titik ini selalu ada dua keluaran untuk melanjutkan aliran kondisi yang berbeda.
G-data.JPG
Masukan / Keluaran Data
Digunakan untuk mewakili data masuk, atau data keluar.
G-awal.JPG
Terminasi
Menunjukkan awal atau akhir sebuah proses.
G-panah.JPG
Garis alir
Menunjukkan arah aliran proses atau algoritma.
G-kontrol.JPG
Kontrol/Inspeksi
Menunjukkan proses / langkah dimana ada inspeksi atau pengontrolan.

Ø Jenis-Jenis FlowChart

Sterneckert (2003) menyarankan untuk membuat model diagram alir yang berbeda sesuai dengan perspektif 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.
# Pseudo-Code #
Pseudo-Code atau dalam bahasa Indonesia lebih dikenal sebagai kode-palsu 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 diskripsi 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.
v Penggunaan
Buku-buku teks dan publikasi ilmiah yang membahas tentang ilmu komputer serta komputasi numerik sering menggunakan kode palsu dalam mendeskripsikan suatu algoritma dengan tujuan agar programmer dapat memahaminya meskipun mereka tidak memahami bahasa pemrograman yang digunakan. Dalam buku-buku teks biasanya disertakan pula pengantar yang membahas tentang notasi dan konvensi yang digunakan, termasuk di dalamnya notasi dan konvensi yang digunakan pada kode palsu. Tingkat kejelasan secara lebih detail atas penggunaan suatu bahasa pemrograman kadang-kadang digunakan pula sebagai pendekatan — sebagai contoh, buku teks Donald Knuth "The Art of Computer Programming" menggunakan bahasa assembly untuk mikroprosesor yang sebenarnya tidak ada.
Seorang programer yang akan mengimplementasikan suatu algoritma yang bersifat spesifik, utamanya algoritma yang masih belum begitu dikenalinya, umumnya menggunakan kode palsu sebagai penjelasan, kemudian ia akan dengan mudah "menerjemahkan" penjelasan tersebut ke dalam bahasa pemrograman dan mengubah agar sesuai dengan dapat berinteraksi secara benar dalam program secara keseluruhan. Programer dapat pula memulai sebuah proyek dengan membuat sketsa kode dengan menggunakan kode palsu di atas kertas sebelum menulisnya dalam bahasa pemrograman yang sesungguhnya, sebagai mana dilakukan dalam pendekatan "top-down”.
v Sintaksis
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 tata cara ataupun 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 seringkali digantikan dengan satu baris penjelasan dalam bahasa manusia (natural).
Bentuk serta corak dari kode palsu bisa sangat beragam bergantung pada penulis dari masing-masing publikasi dan buku teks tersebut, dari yang model kode palsu paling sederhana hingga sangat detail sehingga hampir serupa dengan bahasa pemrograman yang sesungguhnya.
Contoh :
variable> = <expression>

if <condition>
    do stuff
else
    do other stuff

while <condition>
    do stuff

for <variable> from <first value> to <last value> by <step>
    do stuff with variable

function <function name>(<arguments>)
    do stuff with arguments
    return something

<function name>(<arguments>)    // Function call



# 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.
Daftar Bahasa Pemrograman
v Proses Pembuatan Program
Proses pembuatan program yaitu kita menulis kode sumber pada teks editor misalnya notepad kemudian mengubahnya menjadi bahasa mesin yang bisa dieksekusi oleh CPU. Proses pengubahan kode sumber (source code) menjadi bahasa mesin (machine language) ini terdiri dari dua macam yaitu kompilasi dan interpretasi.
1.     Kompilasi (Compilation)
Dalam proses kompilasi semua kode sumber dibaca terlebih dahulu dan jika tidak ada kesalahan dalam menulis program maka akan dibentuk kode mesinnya sehingga program bisa dijalankan. Program yang melakukan tugas ini disebut Compiler. Program hasil kompilasi akan berbentuk executable. Program bisa langsung dijalankan tanpa harus memiliki Compiler di komputer yang menjalankan program tersebut. Bahasa yang menggunakan teknik kompilasi misalnya bahasa C, C++, Pascal, Assembly dan masih banyak lagi.
2.     Interpretasi (Interpretation)
Bahasa yang menggunakan teknik interpretasi akan membaca kode sumber perbaris dan dieksekusi perbaris. Jika ditemukan kesalahan dalam penulisan program maka di baris kesalahan itulah program akan dihentikan. Program yang melakukan tugas ini disebut Interpreter. Pada teknik interpretasi tidak ada akan dihasilkan program standalone, artinya untuk menjalankan program kita harus mempunyai kode sumbernya sekaligus interpreter program tersebut. Bahasa yang menggunakan teknik interpretasi misalnya bahasa Perl, Python, Ruby dan masih banyak lagi.
3.     Kompilasi Sekaligus Interpretasi
Ada juga bahasa pemrograman yang menghasilkan programnya dengan teknik kompilasi sekaligus interpretasi. Misalnya bahasa java. Dalam pembuatan program java kode sumber diubah menjadi bytecode. Meskipun nampak seperti bahasa mesin namun ini bukanlah bahasa mesin dan tidak executable. Untuk menjalankan bytecode tersebut kita membutuhkan Java Runtime Environment (JRE) yang bertugas sebagai interpreter sehingga menghasilkan program dari bytecode tersebut.
Meskipun setiap bahasa pemrograman dibuat untuk membuat program namun setiap bahasa dibuat dengan tujuan dan fungsi yang berbeda-beda. Misalnya untuk membuat driver hardware kita tidak bisa menggunakan bahasa Visual Basic. Untuk membuat program berbasis sistem seperti driver kita bisa gunakan bahasa C atau Assembly. Contohnya sistem operasi linux yang open source. Jika anda melihat kode sumbernya anda akan menemukan bahwa linux dibuat menggunakan bahasa C. Sedangkan untuk pemrograman desktop kita bisa menggunakan Visual Basic. Bahasa tersebut dirancang oleh Microsoft untuk pemrograman desktop dengan tampilan GUI yang memukau.
v MACAM-MACAM BAHASA PEMROGRAMAN
Bahasa pemrograman merupakan suatu teknik instruksi standar untuk memerintah komputer. Berikut adalah penjelasan tentang bahasa pemrograman yang biasa digunakan untuk membuat suatu website:
1.     HTML: HyperText Markup Language (HTML) adalah sebuah bahasa markup yang digunakan untuk membuat sebuah halaman web dan menampilkan berbagai informasi di dalam sebuah browser Internet. HTML saat ini merupakan standar Internet yang didefinisikan dan dikendalikan penggunaannya oleh World Wide Web Consortium (W3C). HTML berupa kode-kode tag yang menginstruksikan browser untuk menghasilkan tampilan sesuai dengan yang diinginkan. Sebuah file yang merupakan file HTML dapat dibuka dengan menggunakan browser web seperti Mozilla Firefox, Microsoft Internet Explorer, dan lain sebagainya.
2.     PHP: Hypertext Preprocessor (PHP) adalah bahasa pemrograman script yang paling banyak dipakai saat ini. PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama FI (Form Interpreted), yang wujudnya berupa sekumpulan script yang digunakan untuk mengolah data form dari web. PHP banyak dipakai untuk membuat situs web yang dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain. PHP biasanya berjalan pada sistem operasi Linux (PHP juga bisa dijalankan dengan hosting windows).
3.     ASP adalah singkatan dari Active Server Pages yang merupakan salah satu bahasa pemograman web untuk menciptakan halaman web yang dinamis. ASP merupakan salah satu produk teknologi yang disediakan oleh Microsoft. ASP bekerja pada web server dan merupakan server side scripting.
4.     XML: Extensible Markup Language (XML) adalah bahasa markup serbaguna yang direkomendasikan W3C untuk mendeskripsikan berbagai macam data. XML menggunakan markup tags seperti halnya HTML namun penggunaannya tidak terbatas pada tampilan halaman web saja. XML merupakan suatu metode dalam membuat penanda/markup pada sebuah dokumen.
5.     WML adalah kepanjangan dari Wireless Markup Language, yaitu bahasa pemrograman yang digunakan dalam aplikasi berbasis XML (Extensible Markup Langauge). WML adalah bahasa pemrograman yang digunakan dalam aplikasi wireless. WML merupakan analogi dari HTML yang berjalan pada protocol nirkabel.
6.     PERL adalah bahasa pemrograman untuk mesin dengan sistem operasi Unix (SunOS, Linux, BSD, HP-UX), juga tersedia untuk sistem operasi seperti DOS, Windows, BeOS, VMS, EBCDIC, dan PocketPC. PERL merupakan bahasa pemograman yang mirip bahasa pemrograman C.
7.     CFM dibuat menggunakan tag ColdFusion dengan software Adobe ColdFusion / BlueDragon / Coldfusion Studio. Syntax coldfusion berbasis html.
8.     Javascript adalah bahasa scripting yang handal yang berjalan pada sisi client. JavaScript merupakan sebuah bahasa scripting yang dikembangkan oleh Netscape. Untuk menjalankan script yang ditulis dengan JavaScript kita membutuhkan JavaScript-enabled browser yaitu browser yang mampu menjalankan JavaScript.
9.     CSS: Cascading Style Sheets (CSS) adalah suatu bahasa stylesheet yang digunakan untuk mengatur tampilan suatu dokumen yang ditulis dalam bahasa markup. Penggunaan yang paling umum dari CSS adalah untuk memformat halaman web yang ditulis dengan HTML dan XHTML. Walaupun demikian, bahasanya sendiri dapat dipergunakan untuk semua jenis dokumen XML termasuk SVG dan XUL. Spesifikasi CSS diatur oleh World Wide Web Consortium (W3C).

B. Langkah-langkah Pemecahan Masalah

1.     Glass Game
a.     Siapkan gelas C. Tuangkan isi gelas A ke gelas C.
b.     Tuangkan isi gelas B ke gelas A.
c.      Tuangkan isi gelas C ke gelas B. Selesai.
2.     Waterjars Game
a.     Ember A diisi air 5lt. Ember B tetap kosong.
b.     Tuangkan air ember A ke ember B. Ember A sisa 2lt. Volume ember B menjadi 3lt. Air ember B dibuang.
c.      Ember A tetap 2lt. Ember B kosong. Air ember A dituang ke ember B. Ember A kosong, ember B menjadi 2lt.
d.     Ember A diisi air 5lt. Air ember A dituang ke ember B. Ember A sisa 4lt. Ember B menjadi 3lt. 
e.      Air di ember B dibuang. Selesai.
3.     Plastelina Game
a.     Orang 1 dan 3 menyeberang. ~ Orang 1 kembali.
b.     Orang 8 dan 12 menyeberang. ~ Orang 3 kembali.
c.      Orang 1 dan 6 menyeberang. ~ Orang 1 kembali.
d.     Orang 1 dan 3 menyeberang. Selesai.
4.     Canibal Game
a.     1 Rahib dan 1 Canibal menyeberang. ~ 1 Canibal turun 1 Rahib kembali.
b.     1 Rahib turun 2 Canibal menyeberang. ~ 1 Canibal turun 1 Canibal kembali.
c.      1 Canibal turun 2 Rahib menyeberang. ~ 1 Rahib turun, 1 Canibal dan 1 Rahib kembali .
d.     1 Canibal turun 2 Rahib menyeberang. ~ 2Rahib turun 1 Canibal kembali.
e.      2 Canibal menyeberang. ~ 1 Canibal turun 1 Canibal kembali.
f.       2 Canibal menyeberang. ~ Selesai.
5.     Wolf Game
a.     Petani + kambing menyeberang. ~ Kambing turun petani kembali.
b.     Petani + anjing menyeberang. ~  Anjing turun, petani + kambing kembali.
c.      Kambing turun, petani + rumput menyeberang. ~ Rumput turun petani kembali.
d.     Petani + kambing menyeberang. ~ Selesai.

C. Referensi











Tidak ada komentar:

Posting Komentar