1.
Dasar
Teori
- Dasar Teori Algoritma dan Pemrograman
Algoritma
adalah
satu bidang ilmu yang dikemukakan pertama kali oleh Matematikawan asal Arab
Saudi pada abad 18 yaitu : ABU DJAFAR IBNU MUSA ALKHAWARIZMI. “Algoritma adalah urutan langkah-langkah
logis penyelesaian masalah yang disusun secara sistematis dan logis”. Algoritma
adalah urutan logis pengambilan keputusan untuk pemecahan masalah.(KBBI:1988). Kata
logis merupakan kata kunci dalam algoritma. Langkah-langkah
dalam algoritma harus logis dan harus dapat
ditentukan bernilai salah atau benar. Dalam
beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu.
Pertimbangan dalam pemilihan algoritma
adalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikan keluaran yang dikehendaki dari
sejumlah masukan yang diberikan. Tidak
peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut bukanlah
algoritma yang baik.
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
Menurut
Donald E. Knuth dalam bukunya berjudul " The Art Of Computer Programming",
algoritma mempunyai lima ciri, yaitu :
1. Input : Algoritma dapat
memiliki nol atau lebih inputan dari luar
2. Output : Algoritma harus
memiliki minimal satu buah output keluaran.
3. Definiteness : Algoritma memiliki instruksi-instruksi yang
jelas dan tidak ambigu
4. Finiteness : Algoritma harus
memiliki titik berhenti (stopping role).
5. Effectivenees : Algoritma sebisa
mungkin harus dapat dilaksanakan dan efektif
- Flowchart
Flowchart
merupakan
gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta
pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap
simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan
dengan garis penghubung. Dengan menggunakan flowchart akan memudahkan
kita untuk melakukan pengecekan bagian-bagian yang terlupakan dalam analisis
masalah. Di samping itu flowchart juga berguna sebagai fasilitas untuk
berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek. Flowchart
merupakan alat yang banyak digunakan untuk menggambarkan algoritma dalam bentu
notasi-notasi tertentu.
Program
Flowchart dapat terdiri dari dua macam, yaitu bagan alir logika program
(program logic flowchart) dan bagan alir program komputer terinci (detailed
computer program flowchart). Bagan alir logika program digunakan untuk
menggambarkan tiap-tiap langkah di dalam program komputer secara logika dan
biasanya dipersiapkan oleh seorang analis system. Sedangkan bagan alir program komputer
terinci digunakan untuk menggambarkan instruksiinstruksi program komputer
secara terinci dan biasanya dipersiapkan oleh seorang programmer.
- Psoudecode
Psoudecode
adalah notasi algoritma yang menyerupai bahasa pemrograman tingkat tinggi seperti
Pascal. Banyak notasi psoudecode yang digunakan oleh para ahli komputer dan
berbeda-beda sehingga tidak ada aturan baku dalam penulisan psoudecode ini,
tetapi yang paling banyak digunakan dalam algoritma pemrograman adalah yang
mendekati bahasa pascal. Keuntungan menggunakan notasi psoudocode adalah
kemudahan mengkonversinya lebih tepat yang disebut mentranslasi ke notasi
bahasa pemrograman, karena terdapat korespondensi antara setiap pseudecode
dengan notasi bahasa pemrograman. Pseudecode adalah bahasa buatan yang membantu
programmer mengembangkan algoritma. Program pseudocede tidak dijalankan oleh
komputer, tetapi dipergunakan untuk membantu programmer dalam mengembangkan
program sebelum menulisnya ke dalam bahasa pemrograman tertentu , misalnya C++,
VB, Java, VBA, dan lain sebagainya.
- Bahasa Pemrograman
Bahasa pemrograman adalah software
bahasa komputer yang digunakan secara merancang atau membuat program sesuai
dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri. Bahasa
pemrograman merupakan notasi yang dipergunakan untuk mendeskripsikan proses
komputasi dalam format yang dapat dibaca oleh komputer dan manusia. Bahasa
pemrograman adalah teknik komando/instruksi standar untuk memerintahkan
komputer. Bahasa pemrograman ini merupakan suatu himpunan dari 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.
2. Langkah - Langkah Pemecahan Masalah
1.
Memindahkan
Air
Misalkan terdapat dua gelas, yakni gelas “A” dan
“B”. Gelas A berisi air berwarna merah, dan gelas B berisi air berwarna biru.
Volume air di dalam kedua gelas sama. Bagaimana mempertukarkan isi kedua gelas
sehingga gelas A berisi air berwarna biru, dan gelas B berisi air berwarna
merah.
Gelas A Gelas
B
Kondisi
akhir:
Gelas A Gelas
B
Algoritma tukar
gelas tersebut tidak menghasilkan pertukaran yang benar karena langkahnya tidak
logis. Pertukaran yang terjadi adalah pencampuran keduanya. Jadi algoritma
tersebut salah. Untuk mempertukarkan isi kedua buah gelas tersebut kita
memerlukan satu buah gelas tambahan sebagai tempat penampungan sementara. Sebut
saja gelas C. Maka algoritma yang benar adalah sebagai berikut:
Penyelesaian:
Diberikan
dua buah gelas, A dan B; gelas A berisi air berwarna merah, gelas B berisi air
berwarna biru dan kita tambah gelas kosong (gelas C). Pertukarkan isi kedua
gelas tersebut sedemikian sehingga gelas A berisi air berwarna biru dan gelas B
berisi air berwarna merah.
1. Siapkan gelas kosong (gelas C)
2. Tuangkan air berwarna merah dari
gelas A ke dalam gelas C
3. Tuangkan air berwarna biru dari
gelas B ke dalam gelas A
4. Tuangkan air berwarna merah dari gelas C ke
dalam gelas B
Dengan adanya algoritma tambahan
gelas C tersebut isi gelas A dan B telah ditukarkan dengan benar.
2. Mengisi
Ember Air
Misalkan
anda mempunyai dua ember, masing-masing ber-volume 5 liter dan 3 liter. Anda
diminta untuk mendapatkan air (dari sebuah danau) sebanyak 4 liter dengan
menggunakan bantuan hanya kedua ember tersebut. Terserah bagaimana caranya,
anda boleh memindahkan air dari satu ember ke ember yang lain, membuang seluruh
isi ember, dan sebagainya. Catatan: ember
tidak memiliki ukuran.
Langkah-langkah
penyelesaiannya:
1)
Isi ember yang bervolume 3 liter, lalu
dituangkan dalam ember bervolume 5 liter
2) Kemudian isi kembali ember yang bervolume
3 liter lalu tuangkan ke dalam ember bervolume 5 liter, dan tadi ember yang
bervolume 5 liter juga sudah diisi 3 liter dan yang diember 3 liter jadi
tersisa 1 liter
3)
Lalu buang seluruh isi ember yang
bervolume 5 liter
4)
Kemudian tuangkan sisa air 1 liter dari
ember yang bervolume 3 liter ke ember 5 liter,
5) Isi penuh ember bervolume 3 liter,
kemudian tuangkan ke ember bervolume 5 liter yang sudah terisi air 1 liter.
3. Plastelina Game
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.
Langkah-langkah penyelesaian plastelina game:
1) 1 detik dan 3 detik menyebrang terlebih dahulu,
2) 1 detik kembali membawa lentera,
3) 8 detik dan 12 detik menyebrang,
4) 3 detik kembali membawa lentera,
5) 1 detik dan 6 detik menyebrang,
6) 1 detik kembali membawa lentera,
7) Terakhir 1 detik dan 3 detik menyebrang.
4. Cannibal
Game
Bagaimana
caranya untuk menyeberangkan tiga rahib dan 3 kanibal ke pulau 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.
Langkah-langkah penyelesaian
cannibal game:
1) Kedua kanibal menyebrang ke pulau
kedua,
2) 1 kanibal turun di pulau kedua dan 1
kanibal yang diperahu kembali ke posisi pulau pertama.
3) Lalu kedua kanibal menyebrang
ke pulau kedua, 1 kanibal turun di pulau
kedua dan 1 kanibal kembali ke pulau pertama lalu turun.
4) Kedua rahib menyebrang ke pulau
kedua, 1 rahib turun di pulau kedua, 1 rahib dan 1 kanibal menyeberangi ke
pulau pertama, lalu 1 kanibal turun di pulau pertama.
5) Kedua rahib naik dan menyeberangi ke
pulau kedua, lalu 2 rahib turun di pulau kedua, dan 1 kanibal naik dan
menyebrang menjemput 1 kanibal yang di posisi pulau pertama.
6) Kedua kanibal menyeberangi ke pulau
kedua, lalu 1 kanibal turun dan 1 kanibal kembali ke pulau pertama dan
menjemput kanibal yang tersisa di posisi pulau pertama .
7) Kedua kanibal naik perahu untuk
menyeberangi ke pulau kedua, lalu 2 kanibal turun di pulau kedua.
5. Wolf
Game
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
Langkah-langkah
penyelesaian wolf game:
1)
Petani
menyebrangkan kambing dari ke tempat pertama ke tempat kedua
2)
Petani
kembali ke tempat pertama sendiri lalu mengambil anjing dan menyebrangkan
anjing ke tempat kedua
3)
Petani
mengambil kambing lalu kembali menyebrangkan ke posisi tempat pertama
4)
Petani
mengambil rumput dan disebrangkan ke tempat kedua
5)
Dan
terakhir petani kembali ke posisi tempat pertama dan mengambil kambing kemudian menyebrangkan kambing ke tempat kedua
3.
REFERENSI
Online reading :
Abdul
Kadir, Pemrograman Turbo PASCAL untuk IBM PC Versi 5.0 dan 5.5, Penerbit PT.
Elex Media Komputindo, Jakarta.
Munir Rinaldi. 2002. Algoritma & Pemrograman Dalam Bahasa
Pascal
Santosa,
P.J. 1998. Dasar-dasar Pemrograman Pascal, Andi Offset.Yogyakarta.
0 komentar:
Posting Komentar