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.
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)
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.
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.
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
:
- Sebrangkan 1 biksu dan 1 setan ke ujung “B”
- 1 biksu ksmbali ke ujung “A”
- Sebrangkan 2 setan ke ujung “B”
- 1 setan kembali ke ujung “A”
- Sebrangkan 2 biksu ke ujung “B”
- 1 setan dan 1 biksu kembali ke ujung “A”
- Sebrangkan 2 biksu ke ujung “B”
- 1Setan kembali ke ujung “A”
- Sebrangkan 2 setan ke ujung “B”
- 1 setan kembali ke ujung “A”
- 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 :
- Angkut kambingnya dulu menuju ujung”B”, karena serigala tidak mungkin makan sayuran kembali seorang diri.
- Angkut sayurannya menuju ujubg ”B”, dan bawa kembali kambingnya ke ujung “A”
- Sekarang angkut anjingya menuju ke ujung “B” balik lagi seorang diri, ambil kambingnya menuju ujung “B”
3.Referensi