1. Dasar
Teori
Ø Dasar teori tentang algoritma dan
pemrograman
Pada awalnya kata algorisma
adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan
persoalan dengan menggunakan bilangan numerik arab. Pada abad ke-18, istilah
ini berkembang menjadi algoritma,
yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan
untuk menyelesaikan suatu permasalahan. Masalah timbul pada saat akan
menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem
(program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja
seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan
prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat
gambaran (diagram alur) diatas kertas.
Dalam matematika
dan komputasi,
algoritma atau algoritme
merupakan kumpulan perintah untuk menyelesaikan suatu masalah.
Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga
akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap
masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan
algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang
memenuhi kriteria, dalam hal ini berbeda dengan heuristik.
Algoritma sering mempunyai langkah pengulangan (iterasi) atau
memerlukan keputusan (logika Boolean dan perbandingan)
sampai tugasnya selesai.
Kompleksitas dari suatu algoritma
merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut
untuk menyelesaikan masalah. Secara informal, algoritma yang dapat
menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas
yang rendah, sementara algoritma yang membutuhkan waktu lama untuk
menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Beberapa definisi Algoritma adalah seperti berikut :
·
Pola
pikir yang terstruktur, yang berisi tahap-tahap penyelesaian masalah yang
disusun secara sistematis.
·
Urutan
logis pengambilan keputusan untuk pemecahan masalah.
·
Urutan
langkah berhingga untuk memecahkan masalah logika dan matematika.
Sekilas tentang pemrograman teknik pemrograman dapat dibagi
menjadi:
–Pemrograman prosedural
–Pemrograman deklaratif
–Pemrograman fungsional
–Pemrograman visual
–Pemrograman berorientasi objek
–Pemrograman prosedural
–Pemrograman deklaratif
–Pemrograman fungsional
–Pemrograman visual
–Pemrograman berorientasi objek
Kata lain
Pemrograman adalah mengubah suatu masalah
yang dapat dimengerti oleh komputer dan dapat dipecahkan oleh komputer.
Ø 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.
Algoritma komputer memiliki beberapa
karakteristik yang harus dipenuhi agar menjadi algoritma yang baik.
Karakteristik itu antara lain:*
Presisi. Langkah langkah penyelesaian masalah dalam algoritma haruslah secara presisi (tepat) dinyatakan, tidak mengandung ambiguitas.
*
Keunikan. Hasil pertengahan dalam tiap langkah eksekusi suatu algoritma didefinisikan secara khas dan merupakan pengolahan dari hasil eksekusi langkah sebelumnya.
*
Keterbatasan. Algoritma harus terbatas dan berhenti pada suatu titik setelah semua ekesekusi dilaksanakan.
*
Input. Algoritma menerima input.
*
Output. Algoritma menghasilkan output.
*
General. Algoritma berlaku untuk suatu kumpulan input tertentu.
Ø 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.
Jenis-Jenis Diagram Alir
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
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. Umumnya sintaksis yang populer digunakan
menggunakan sintaksis bahasa pemrograman Pascal, BASIC, C, C++, Java, Lisp, dan ALGOL.
Ø Bahasa
pemrograman
Bahasa pemrograman yang berbeda mendukung
gaya pemrograman yang berbeda (disebut paradigma pemrograman). Pilihan bahasa
yang digunakan adalah tunduk pada banyak pertimbangan, seperti kebijakan
perusahaan, kesesuaian untuk tugas, ketersediaan pihak ketiga paket, atau
keinginan individunya. Idealnya, bahasa pemrograman yang paling cocok untuk
tugas yang dihadapi akan dipilih. Trade-off dari ideal ini melibatkan cukup
menemukan programmer yang tahu bahasa untuk membangun sebuah tim, ketersediaan
compiler untuk bahasa, dan efisiensi dengan program-program yang ditulis dalam
bahasa tertentu mengeksekusi.Beberapa bahasa pemrograman adalah:
2.
LANGKAH-LANGKAH
PEMECAHAN MASALAH
I.
Game 1 :
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.
Penyelesaiannya : Dengan cara ditambah gelas C. Yang
mana, gelas A dituang ke gelas C, lalu gelas B dituang ke gelas A. Kemudian,
gelas C dipindah ke gelas B. Sehingga gelas A berwarna biru, gelas B berwarna
merah.
II.
Game 2
Misalkan anda
mempunyai dua ember, masing-masing ber-volume 5liter 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.
Penyelesaiannya :
Ember 5 L diisi air danau penuh , tuang isi ember 5
liter ke ember 3 L. Sehingga isi ember besar 2 L , ember kecil 3L
Lalu tuang semua isi ember kecil ke bunga , kemudian
tuang sisa air di ember besar ke ember kecil. Sehingga isi ember besar kosong ,
ember kecil 2 L.
Lalu penuhi kembali ember besar dengan air danau ,
kemudian tuang 1 L ke ember kecil. Sehingga ember besar berisi 4 L , ember
kecil berisi 3 L.
III.
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.
Penyelesaiannya :
Seberangkan orang yang mempunyai kecepatan 1 dan 3
detik , lalu orang yang mempunyai
kecepatan 1 detik kembali
Seberangkan orang yg mempunyai kecepatan 8 dan 12
detik , orang yang mempunyai kecepatan 8 detik kembali
Seberangkan orang yang mempunyai kecepatan 1 dan 6
detik , orang yang mempunyai kecepatan 1 kembali
Seberangkan orang yang mempunyai kecepatan 1 dan 8
detik
IV.
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.
Penyelesaiannya :
Seberangkan 2 kanibal , 1 kanibal kembali
Seberangkan 2 kanibal lagi , 1 kanibal kembali
Turunkan kanibal , seberangkan 2 rahib , 1 kanibal
dan 1 rahib kembali
Kanibal turun , seberangkan 2 rahib , 2 rahib turun
semua
Seberangkan 1 kanibal untuk menjemput kanibal
lainnya sampai semua terseberangkan
V.
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.
Penyelesaian :
Petani seberangkan domba , turunkan domba , petani
kembali
Petani seberangkan rumput , turunkan rumput ,
naikkan domba , petani kembali
Turunkan domba , seberangkan anjing , petani kembali
Lalu seberangkan domba.
3. Referensi
1. Paul Graham (2003). Hacker dan Pelukis. http://www.paulgraham.com/hp.html.
Diperoleh 2006/08/22.
2. Kenneth E. Iverson, originator dari bahasa
pemrograman APL, percaya bahwa hipotesis Sapir-Whorf diterapkan pada bahasa
komputer (tanpa benar-benar menyebutkan nama hipotesis). Penghargaan Turing
ceramah-Nya, "Notasi sebagai alat berpikir", ini ditujukan untuk tema
ini, menyatakan bahwa lebih kuat dibantu notasi berpikir tentang algoritma
komputer. Iverson KE, "Notasi sebagai alat berpikir", Communications
of the ACM, 23: 444-465 (Agustus 1980).
3. New World Encyclopedia Online Edition New
World Encyclopedia
4. Al-Jazari - the Mechanical Genius,
MuslimHeritage.com
5. Sebuah abad ke-13 Programmable Robot,
University of Sheffield
6. Fowler,
Charles B. (Oktober 1967), "Museum of Music: A History of Mechanical
Instrumen", Musik Pendidik Journal 54 (2): 45-49, DOI: 10.2307/3391092
7. Columbia University Computing Sejarah - Herman
Hollerith
8. Survei iklan Ayub menyebutkan bahasa
tertentu>
10.
SEVOCAB: Software
and Systems Engineering Vocabulary. Term: Flow
chart. Retrieved 31 July 2008.
13.
http://id.wikipedia.org/wiki/Kode_palsu