Bab. 1
Pendahuluan
Komputer adalah alat bantu untuk menyelesaikan masalah, tetapi masalah yang ingin diselesaikan tidak dapat langsung “disodorkan” begitu saja ke komputer.
Sebagai
contoh, jika kita mempunyai data nilai ujian sekumpulan mahasiswa
kemudian akan mengurutkan semua data tersebut dari nilai tertinggi
hingga terendah.
Misalkan anda ketikkan semua nilai ujian dengan sebuah program pengolah kata (word processor) lalu dibawahnya dituliskan perintah kepada komputer untuk mengurutkannya sebagai berikut:
30, 27, 86, 45, 81, 63, 95, ……., 67
Urutkan dari nilai terbesar hingga nilai terkecil !!
Dan anda tunggu hasilnya. Apakah komputer mengerjakan masalah pengurutan tersebut ????
Tentu
saja tidak akan dikerjakan, karena komputer tidak “mengerti” perintah
anda diatas dan tidak “tahu” bagaimana cara mengurutkan sekumpulan nilai
tersebut.
Agar
komputer dapat menyelesaikan masalah anda, maka anda perlu merumuskan
langkah-langkah penyelesaian masalah itu dalam suatu rangkaian
instruksi. Komputerlah yang nantinya mengerjakan rangkaian instruksi
tersebut, karena komputer dapat mengerjakannya dengan cepat, akurat,
bahkan berulang-ulang tanpa kenal lelah dan bosan.
Sekumpulan
instruksi yang merupakan penyelesaian masalah itu dinamakan program.
Program “dimasukkan” ke dalam komputer, komputer mengerjakan
instruksi-instruksi di dalam program tersebut, lalu memberikan hasil
atau keluaran yang diinginkan.
Misalkan program yang berisi rangkaian insturksi untuk mengurutkan sekumpulan data tersebut anda rumuskan sebagai berikut:
Langkah 1 :
|
Cari nilai terbesar di antara N buah data
|
Langkah 2 :
|
Tempatkan nilai terbesar tersebut pada posisi yang tepat (dengan cara mempertukarkan)
|
Langkah 3:
|
Ulangi langkah 1 untuk N – 1 buah data yang lain
|
Setelah
anda membuat rangkaian instruksi-instruksi (program) tersebut, tetapi
komputer tetap belum dapat melaksanakan program yang telah dibuat tadi
karena bahasa yang anda gunakan untuk menulis program tidak dapat
dipahami oleh komputer.
Agar
program dapat dilaksanakan komputer maka program tersebut harus ditulis
dalam suatu bahasa yang “dimengerti” oleh komputer. Sebagaimana dalam
kehidupan manusia, kita hanya dapat memberikan perintah kepada orang
lain dalam bahasa yang ia mengerti.
Karena
komputer adalah mesin, maka program harus ditulis dalam bahasa yang
khusus dibuat untuk “berkomunikasi” dengan komputer. Bahasa komputer
yang digunakan dalam menulis program dinamakan bahasa pemrograman.
Salah satu
bahasa pemrograman adalah Bahasa Pascal. Andaikanlah anda sudah
mempelajari Bahasa Pascal, maka anda dapat menuliskan langkah-langkah
mengurutkan sekumpulan data dalam sebuah program sebagai berikut
Pascal
hanya salah satu bahasa pemrograman dari sekian banyak bahasa
pemrograman. Adapun bahasa pemrograman lain diantaranya adalah basic, c,
c++, cobol , fortran, clipher, foxpro dll.
Penggolongan bahasa pemrograman:
1.Bahasa tingkat rendah (low level language)
bahasa yang “primitif” atau karena bahasanya lebih “dekat” ke bahasa mesin dan sulit untuk dipahami. Ex: Assambler.
2. Bahasa tingkat tinggi (high level language)
bahasa yang mudah dipahami karena orientasi lebih dekat ke bahasa manusia (inggris) sehingga relatif mudah dipelajari oleh pemrogram (orang yang menulis program komputer)
Pada
mulanya orang mempelajari suatu bahasa pemrograman melalui aturan tata
bahasa, sebuah bahasa yang sama dapat mempunyai beberapa versi (sesuai
perkembangannya), dan setiap versi dirancang untuk komputer atau
lingkungan sistem operasi tertentu. Antara satu versi bahasa dengan
versi lainnya terdapat beberapa perbedaan.
Jadi,
agar program dapat dijalankan pada komputer lain, pemrogram harus
menulis program dalam versi bahasa yang sesuai dengan komputer tersebut.
Dengan kata lain, pemrogram sangat terikat dengan aturan bahasa dan
spesifikasi mesin yang akan menjalankannya.
Saat
ini, orang tidak lagi memecahkan masalah dengan langsung menulis
programnya dalam bahasa pemrograman. Orang mulai memikirkan suatu cara
penyelesaian masalah yang akan diprogram dengan menekankan pada desain
atau rancangan yang mewakili pemecahan masalah tersebut.
Desain
ini independen dari bahasa pemrograman yang digunakan. Desain
menyajikan cara berpikir si pemrogram dalam menyelesaikan masalah.
Desain berisi urutan langkah-langkah pencapaian solusi yang ditulis
dalam notasi-notasi deskriptif.
Urutan
langkah-langkah yang sistematis untuk menyelesaikan sebuah masalah
dinamakan algoritma. Perhatikanlah bahwa teks dibawah ini adalah contoh
sebuat algoritma (meskipun belum terlalu rinci), yaitu algoritma
mengurutkan sekumpulan data
Algoritma PENGURUTAN
| |
Langkah 1 :
|
Cari nilai terbesar di antara N buah data
|
Langkah 2 :
|
Tempatkan nilai terbesar tersebut pada posisi yang tepat (dengan cara mempertukarkan)
|
Langkah 3:
|
Ulangi langkah 1 untuk N – 1 buah data yang lain
|
Notasi
yang digunakan untuk menuliskan algoritma disebut notasi algoritma.
Notasi algoritma pengurutan diatas ditulis dalam Bahasa Indonesia.
Notasi algoritma bukan notasi bahasa pemrograman, karena itu program
dalam notasi algoritma tidak dapat dijalan oleh komputer. Agar
dijalankan harus ditranslasikan kedalam bahasa pemrograman yang dipilih.
Apakah Algoritma Itu ??????
Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan angka arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan.
Akhirnya
para ahli sejarah matematika menemukan asal kata tersebut yang
berasal dari nama seorang ahli matematika dari Uzbekistan Abu Abdullah
Muhammad Ibnu Musa Al-Khuwarizmi (770-840). Al-Khuwarizmi dibaca
orang barat menjadi Algorism.
Al-Khuwarizmi
menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang
artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra).
Perubahan
kata dari Algorism menjadi Algorithm muncul karena kata
Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran
–sm berubah menjadi –thm. Karena perhitungan dengan angka Arab
sudah menjadi hal yang biasa. Maka lambat laun kata Algorithm
berangsur-angsur dipakai sebagai metode perhitungan (komputasi)
secara umum, sehingga kehilangan makna kata aslinya. Dalam
Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma.
Definisi:
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sitematis.
Kamus Besar Bahasa Indonesia (KBBI) terbitan Balai Pustaka 1988 secara formal mendefinisikan algoritma sebagai: Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah
Kata
logis merupakan kata kunci dalam sebuah algoritma. Langkah-langkah di
dalam algoritma harus logis, hal ini berarti urutan langkah-langkah
tersebut harus dapat ditentukan benar atau salah.
Algoritma Merupakan Jantung Ilmu Informatika
Algoritma
adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu
komputer yang diacu dalam terminologi algoritma. Namun jangan
beranggapan algoritma selalu identik dengan ilmu komputer saja.
Dalam
kehidupan sehari-haripun banyak terdapat proses yang digambarkan dalam
suatu algoritma. Ex: Cara-cara membuat kue atau masakan.
Pada
setiap resep selalu ada urutan langkah-langkah membuat masakan. Bila
langkah-langkahnya tidak logis, tidak dapat dihasilkan masakan yang
diinginkan. Ibu-ibu yang mencoba resep suatu masakan akan membaca satu
persatu langkah pembuatannya, lalu ia mengerjakan proses sesuai yang ia
baca.
Secara umum, pihak yang mengerjakan proses disebut pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer, robot, atau alat mekanik/elektronik lainnya.
Belajar
memprogram adalah belajar tentang metodologi pemecahan masalah,
kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan
dipahami. Sedangkan belajar bahasa pemrograman belajar bahasa
pemrograman berarti belajar memakai suatu bahasa, aturan tata bahasanya,
instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.
Sampai saat ini terdapat puluhan bahasa pemrograman, antara lain bahasa rakitan (assembly), fortran, cobol, ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, PERL, JAVA dan banyak lagi.
Berdasarkan terapannya, bahasa pemrograman dapat digolongkan atas 2 kelompok besar:
1. Bahasa pemrograman bertujuan khusus.
Diantaranya: Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan) dsb.
Diantaranya: Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan) dsb.
2. Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi, seperti: Pascal, Basic, C, Java dll
1. Bahasa pemrograman bertujuan khusus.
Diantaranya: Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan) dsb.
Diantaranya: Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan) dsb.
2. Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi, seperti: Pascal, Basic, C, Java dll
Notasi Algoritma Independen Terhadap
Bahasa Pemrograman dan Mesin Komputer
Bahasa Pemrograman dan Mesin Komputer
Notasi
algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis
dalam bahasa manapun dan apapun bahasanya kue yang dihasilkan tetap
sama, sebab algoritmanya sama (dengan catatan semua aturan pada resep
diikuti).
Mengapa bisa demikian???... Karena setiap juru masak (yang merupakan pemroses) mampu melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula dsb. Jadi, resep membuat kue tidak terikat pada bahasa dan juru masak yang mengerjakannya.
Mengapa bisa demikian???... Karena setiap juru masak (yang merupakan pemroses) mampu melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula dsb. Jadi, resep membuat kue tidak terikat pada bahasa dan juru masak yang mengerjakannya.
Demikian
pula halnya komputer, Meskipun setiap komputer berbeda teknologinya,
tetapi secara umum semua komputer dapat melakukan operasi dasar dalam
pemrograman seperti operasi pembacaan data, operasi perbandingan,
operasi aritmetika dan sebagainya.
Perkembangan teknologi komputer tidak mengubah operasi-operasi dasar itu, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian.
Perkembangan teknologi komputer tidak mengubah operasi-operasi dasar itu, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian.
Notasi Algoritma Independen Terhadap
Bahasa Pemrograman dan Mesin Komputer
Bahasa Pemrograman dan Mesin Komputer
Notasi
algoritma bukan notasi bahasa pemrograman, sehingga siapa pun dapat
membuat notasi algoritma yang berbeda. Hal yang penting mengenai notasi
tersebut adalah mudah dibaca dan dimengerti. Selain itu, meskipun notasi
algoritma bukan notasi baku sebagaimana pada notasi bahasa pemrograman, ketaatasasan terhadap notasi perlu diperhatikan untuk menghindari kekeliruan.
Berikut beberapa notasi yang digunakan dalam penulisan algoritma
1. Notasi I : Menyatakan langkah-langkah algoritma dengan untaian kalimat deskriptif
Dengan
notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan
bahasa yang gamblang. Notasi ini cocok untuk algoritma yang pendek,
namun untuk masalah yang algoritmanya besar notasi ini kurang cocok
untuk digunakan. Selain itu, pengkonversian notasi algoritma ke notasi
bahasa pemrograman cenderung relatif sukar.
2. Notasi II : Menggunakan diagram alir (flow chart)
Diagram alir populer pada awal-awal era pemrograman dengan komputer (terutama dengan bahasa Basic, Fortran, dan Cobol)
dan sampai saat ini masih digunakan. Diagram alir lebih menggambarkan
aliran instruksi di dalam program secara visual. Notasi algoritma
dengan diagram alir cocok untuk masalah yang kecil, tidak cocok untuk
masalah yang besar karena membutuhkan berlembar halaman kertas. Selain
itu, pengkonversian notasi algoritma ke notasi bahasa pemrograman
cendrung relatif sukar
Notasi Algoritma dengan flow chart
Bagan alir (flowchart) adalah bagan (chart) yang menunjukkan alir (flow) di dalam program atau prosedur sistem secara logika. Bagan alir digunakan terutama untuk alat bantu komunikasi dan untuk dokumentasi.
System Flow chart
System flowchart dapat didefinisikan sebagai bagan yang menunjukkan arus pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urut-urutan dari prosedur-prosedur yang ada di dalam sistem. Bagan alir sistem menunjukkan apa yang dikerjakan di sistem.
Document flow chart
Bagan alir dokumen (document flowchart) atau disebut juga bagan alir formulir (form flowchart) atau paperwork flowchart merupakan bagan alir yang menunjukkan arus dari laporan dan formulir termasuk tembusan-tembusannya.
Notasi Algoritma dengan pseudo-code
Menilai Sebuah Algoritma
Ketika
manusia berusaha memecahkan masalah, metode atau teknik yang
digunakan untuk memecahkan masalah kemungkinan bisa lebih dari
satu. Dan kita memilih mana yang terbaik diantara teknik-teknik
itu. Hal ini sama juga dengan algoritma, yang memungkinkan
suatu permasalahan dipecahkan dengan metode dan logika yang
berlainan. Lalu bagaimana mengukur mana algoritma yang terbaik ? …
Beberapa persyaratan untuk menjadi algoritma yang baik adalah:
=> Tingkat kepercayaannya tinggi (realibility).
=> Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
=> Pemrosesan yang efisien (low cost).
Proses harus diselesaikan secepat mungkin dan jumlah kalkulasi yang sependek mungkin.
=> Bersifat general.
Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja,
tapi juga untuk kasus lain yang lebih general.
=> Bisa dikembangkan (expandable).
Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
=> Mudah dimengerti.
Siapapun yang melihat, dia akan bisa memahami algoritma anda. Sulit dimengertinya suatu program akan membuat sulit pengelolaan.
=> Portabilitas yang tinggi (portability).
Bisa dengan mudah diimplementasikan di berbagai platform komputer Klik disini..
Tidak ada komentar:
Posting Komentar