Sabtu, 21 September 2013

PRAKTIKUM DASAR PEMROGRAMAN


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.


Sedangkan definisi dari Pemrograman yaitu proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau 'pekerjaan' sesuai dengan keinginan si pemrogram (programmer). Untuk dapat melakukan pemrograman, diperlukan keterampilan dalam algoritma, logika, bahasa pemrograman, dan di banyak kasus, pengetahuan-pengetahuan lain seperti matematika. Bahasa pemrograman yang berbeda mendukung gaya pemrograman yang berbeda pula. Gaya pemrograman ini biasa disebut paradigma pemrograman.

Sekilas tentang pemrograman teknik pemrograman dapat dibagi menjadi:
–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.
11.            Alan B. Sterneckert (2003)Critical Incident Management. p. 126
12.            http://id.wikipedia.org/wiki/Algoritma
13.            http://id.wikipedia.org/wiki/Kode_palsu