I.1
Algoritma
Algoritma adalah urutan-urutan dari instruksi atau
langkah-langkah untuk menyelesaikan suatu masalah (Munir, 2011) .
Ciri-ciri algoritma (Irwan, 2008) :
· Algoritma
mempunyai awal dan akhir.
· Setiap
langkah harus didefinisikan dengan tepat sehingga tidak memiliki arti ganda
(ambigu).
· Memiliki
masukan (input) atau kondisi awal.
· Memiliki
keluaran (output) atau kondisi akhir.
· Algoritma
harus efektif; bila digunakan benar – benar menyelesaikan persoalan
Contoh Algoritma :
Menelepon
Prosesnya sbb:
· angkat
telepon, tekan nomor teleponnya:
· jika
diangkat maka mulai berbicara setelah selesai tutup teleponnya
· jika
tidak diangkat, maka tutup teleponnya
Jenis-jenis
algoritma ada 4 yaitu (Irwan, 2008) :
·
Divide and Conquer
·
Pseudo Code (Kode Semu)
·
Dynamic programming
·
Sistem Flowchart
A. Sejarah
Algoritma
Algoritma
adalah jantung ilmu komputer atau informatika. Banyak cabang dari ilmu komputer
yang diacu dalam terminologi algoritma.
Ditinjau
dari asal usul kata, kata ‘’algoritma’’ sendiri mempunyai sejarah yang cukup
aneh kata ini tidak muncul dalam kamus Webster sampai akhir tahun 1957. Orang
hanya menemukan kata algorism yang
berarti proses berhitung dengan angka Arab. Kata algorism berasal dari nama penulis buku Arab yang terkenal yaitu
Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Ia menulis buku yang berjudul Kitab al jabar wal-muqabala, yang
artinya ‘’Buku pemugaran dan pengurangan’’.
Pada
tahun 1950, kata algoritma pertama kali digunakan pasa ‘’algoritma Euclidean’’.
Euclid, seorang matematikawan Yunani, dalam bukunya berjudul Elemen menuiliskan langkah-langkah untuk
menemukan pembagi bersama terbesar (common
greatest divisor atau gcd) (Munir, 2011) .
I.2
Program
dan Pemrograman
Yang dimaksud dengan program adalah
kumpulan instruksi yang digunakan untuk mengatur komputer agar melakukan suatu
tindakan tertentu. Tanpa program, komputer sesungguhnya tidak dapat berbuat
apa-apa. Karena itu, program merupakan salah satu bagian penting pada
komputer, yang mengatur komputer agar melakukan tindakan yang sesuai dengan
yang dikehendaki. Orang yang membuat program biasa disebut programmer.
Suatu program ditulis dengan mengikuti kaidah bahasa pemrograman
tertentu. Komputer bekerja seperti switching dan hanya mengenali 0 dan 1 dan
Manusia dapat mengerjakan suatu intruksi berdasarkan kalimat-kalimat. Jadi,
kita perlu adanya bahasa penghubung agar komputer mampu mengerti segala
instruksi dari manusia, yang kita sebut sebagai bahasa pemrograman.
Bahasa pemrograman diubah kedalam bahasa yang dipahami oleh komputer
dengan menggunakan interpreter atau kompiler.
Interpreter menerjemahkan instruksi selama program diminta untuk dieksekusi. Jika seseorang bermaksud menjalankan program tersebut agar dapat dijalankan oleh komputer, mula-mula kode sumber (source code) diterjemahkan dulu ke dalam bentuk kode mesin per baris instruksi. Setelah satu baris instruksi tersebut dipahami komputer, instruksi tersebut dijalankan. lalu interpreter kembali memproses baris instruksi lainnya.
Interpreter menerjemahkan instruksi selama program diminta untuk dieksekusi. Jika seseorang bermaksud menjalankan program tersebut agar dapat dijalankan oleh komputer, mula-mula kode sumber (source code) diterjemahkan dulu ke dalam bentuk kode mesin per baris instruksi. Setelah satu baris instruksi tersebut dipahami komputer, instruksi tersebut dijalankan. lalu interpreter kembali memproses baris instruksi lainnya.
Sedangkan kompiler, menerjemahkan instruksi ke dalam kode objek
secara keseluruhan, setelah semua instruksi diterjemahkan, instruksi yang telah
dimengerti oleh komputer baru dijalankan.Proses tersebut dinamakan kompilasi.
Langkah-langkah
yang digunakan dalam menyelesaikan masalah dengan pemrograman computer yaitu (Zarliz, 2008)
1.
Definisikan
masalah
Berikut adalah hal-hal
yang harus diketahui dalam analisis masalah supaya kita mengetahui bagaimana
permasalahan tersebut:
1. Kondisi
awal yaitu input yang tersedia
2. Kondisi
akhir yaitu output yang diinginkan
3. Data
lain yang tersedia
4. Operator
yang tersedia
5. Syarat
atau kendala yang harus di penuhi
Contoh
kasus menghitung biaya telpon di wartel. Proses yang perlu di perhatikan yaitu:
1. input
yang tersedia yaitu jam mulai bicara dan jam selesai bicara
2. output
yang di inginkan yaitu biaya percakapan
3. data
lain yang tersedia yaitu besarnya pulsa yang digunakan dan biaya perpulsa
4. operator
yang tersedia yaitu pengurangan, penambahan, dan perkalian.
5. Syarat
kendala yaitu aturan jarak dan aturan waktu.
2.
Buat
algoritma dan struktur cara penyelesaian
Jika
masalahnya kompleks maka dibagi dalam modul-modul.Tahap penyusunan sering
dimulai dari yang globab terlebih dahulu.Langkah global ini diperhalus sampai
jadi langkah yang lebih jelas dan rinci.Cara pendekatan ini sangat bermanfaat
dalam pembuatan algoritma untuk masalah kompleks.
3.
Menulis
Program
Algoritma
yang telah dibuat, diterjemahkan dalam bahasa computer menjadi suatu program.
Pemilihan algoritma yang salah akan membuat program memiliki kinerja yang
kurang baik. Program yang baik memiliki standar penilaian :
1. Standar
teknik pemecahan masalah
a. teknik
top-down
b. teknik
bottom-up
2. Standar
penyusunan program
a. Kebenaran
logika dan penulisan
b. Waktu
minimum untuk penulisan program
c. Kecepatan
maksimum eksekusi program
d. Ekspresi
penggunaan program
e. Kemudahan
merawat dan mengembangkan program
f.
User
friendly
g.
Portability
h. Pemograman
modular
4.
Mencari
kesalahan
a. Kesalahan
sintaks
b. Kesalahan
pelaksanaan : semantic, logika, dan ketelitian
5.
Uji
dan Verifikasi program
Pertama kali harus
diuji apakah program harus di jalankan.Apabila program tidak dapat dijalankan
maka perlu di perbaiki penulisan sintaksinya, tetapi jika program dapat
dijalankan maka harus di uji dengan menggunakan data-data yang biasa yaitu data
yang diharapkan oleh system.
6.
Dokumentasi
program
Dokumentasi program ada
dua macam yaitu dokumentasi internal
dan eksternal.
7.
Pemeliharaan
Program
a. Memperbaiki
kekurangan yang terjadi kemudian
b. Memodifikasikan,
karena perubahan spesifikasi.
Dilihat dari jenis dan tingkat kesulitan dalam menemukan
(memperbaikinya), error dalam algoritma dapat dibagi menjadi 3 (tiga), yaitu (Irwan, 2008)
Ø Error
tata bahasa (sintaks)
merupakan jenis error yang paling banyak terjadi dalam
pembuatan program. Namun error ini paling mudah terdeteksi karena umumnya
compiler atau interpreter dari masing-masing bahasa program akan melakukan
pengecekan sebelum program dijalankan (saat dikompilasi). Lokasi baris yang menyebabkan
error juga biasanya sudah ditunjukkan. Hanya perlu kejelian untuk
memperbaikinya.
Ø Error Runtime
Tingkatan error selanjutnya adalah error runtime. Dimana
error ini akan terdeteksi saat program dijalankan (di-running).
Penyebabnya beragam, pada umumnya karena terjadi kesalahan dalam proses input,
perhitungan dan juga dalam proses output. Sebagai contoh yang banyak terjadi
adalah error runtime karena pembagian suatu bilangan dengan nol. Lihat contoh
program bahasa c berikut ini! Secara sintaks tentu tidak terdapat error, namun
jika dijalankan, operasi pembagian pada baris ke-5 akan menyebabkan error
“division by zero”.
Ø Error Logika (Logical Error)
Jenis error yang satu ini merupakan jenis error yang paling
susah dideteksi karena terjadinya bukan karena kesalahan penulisan (sintaks)
atau kesalahan proses runtime, namun kesalahan dari sisi programmer, dalam hal
ini algoritma yang digunakan. Sebagai contoh error yang termasuk dalam jenis
error logika adalah saat kita membuat program yang menghasilkan nilai luas dari
suatu lingkaran yang jari-jarinya diinput oleh user. Jika user menginputkan
nilai 7, tentu program seharusnya akan menampilkan nilai 154.
Dalam
dunia pemrograman dikenal berbagai macam bahasa pemrograman, namun yang lebih
umum digunakan adalah Pascal, Java, C, C++, dan BASIC
Secara garis besar, bahasa-bahasa pemrograman dapat dikelompokkan menjadi:
– Bahasa beraras tinggi – high level language (Assembler)
– Bahasa beraras rendah – medium level language (C, Pascal, Fortran) dan
– Bahasa beraras rendah – low level language (Java, C++, C#).
Semakin tinggi tingkatan bahasa, semakin mudah dipahami oleh programmer (manusia), dan semakin rendah tingkatannya, semakin mudah pula dimengerti oleh computer (Imam, 2013)
Secara garis besar, bahasa-bahasa pemrograman dapat dikelompokkan menjadi:
– Bahasa beraras tinggi – high level language (Assembler)
– Bahasa beraras rendah – medium level language (C, Pascal, Fortran) dan
– Bahasa beraras rendah – low level language (Java, C++, C#).
Semakin tinggi tingkatan bahasa, semakin mudah dipahami oleh programmer (manusia), dan semakin rendah tingkatannya, semakin mudah pula dimengerti oleh computer
I.3
Notasi
Algoritmik
Notasi algoritma merupakan hal dasar
yang harus diketahui oleh setiap orang yang ingin membuat suatu pogram, karena
dalam notasi algoritma inilah terdapat kerangka-kerangka suatu program. Ciri
notasi algoritma yang baik yaitu dapat diterjemahkan ke dalam berbagai bahasa
pemrograman. Hal yang penting mengenai notasi tersebut adalah mudah dibaca dan
dimengerti. Meskipun demikian untuk menghindari kekeliriuan, ketaatan terhadap
notasi perlu diperhatikan. Di bawah ini ada 3 notasi yang umum digunakan dalam
penulisan algoritma, yaitu :
1.
Notasi
Alami
2.
Flowchart/Diagram
Alur
3.
Pseudo-Code
(seperti kode)
1. NOTASI ALAMI (DESKRIPTIF)
Penulisan
algoritma dengan notasi alami adalah dengan cara menuliskan instruksi-instuksi
yang harus dilaksanakan untuk memecahkan masalah dalam bentuk untaian kalimat
deskriptif.
Dengan
notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan bahasa
yang gamblang. Proses diawali dengan kata kerja seperti ‘baca’, ‘hitung’,
‘bagi’, ‘ganti’, dan sebagainya, sedangkan pernyataan kondisional dinyatakan
dengan ‘jika…maka…’. Notasi ini bagus untuk algoritma yang pendek, namun untuk
masalah yang algoritmanya besar, notasi ini jelas tidak efisien. Selain itu,
pengkonversian notasi algoritma ke notasi bahasa pemrograman cenderung relative
sukar.
2. FLOWCHART / DIAGRAM ALUR
Ada
2 jenis Flowchart :
1.
flowchart sistem, adalah suatu gambar yang menjelaskan :
–
file-file yang diproses oleh program
–
jenis piranti yang digunakan oleh file
–
operasi terhadap file (masukan ataupun keluaran).
2.
flowchart program (biasa disebut flowchart saja), adalah suatu gambar yang
menjelaskan urutan :
–
Pembacaan data
–
Pemrosesan data
–
Pengambilan keputusan terhadap data
–
Penyajian hasil pemrosesan data
Nah….yang kita bahas disini adalah flowchart program atau
biasa disebut flowchart saja.
Flowchart/Diagram
Alur popular pada awal-awal era pemrograman dengan komputer (terutama
dengan bahasa Basic, Fortran, dan Cobol). Diagram alur lebih menggambarkan
aliran instruksi di dalam program secara visual dibanding memperlihatkan
struktur program. Notasi diagram alur lebih cocok digunakan untuk masalah yang
kecil, untuk masalah yang besar tidak cocok digunakan karena membutuhkan berlembar
halaman kertas. Selain itu, pengkonversian notasi algoritma ke bahasa
pemrograman cenderung relatif sukar.
Simbol-simbol pada flowchart
Simbol Flowcgart dan funsinya
3. PSEUDO-CODE
Pseudo-code
adalah notasi yang menyerupai notasi bahasa pemrograman tingkat tinggi,
khususnya Pascal dan C. Bahasa pemrograman umumnya mempunyai notasi yang hampir
mirip untuk beberapa instruksi seperti notasi if-then-else, while-do,
repeat-until, read, write, dan sebagainya. Namun tidak seperti bahasa pemrograman
yang direpotkan dengan tanda titik koma, indeks, format keluaran, kata-kata
khusus, dan sebagainya, sembarang versi Pseudo-code dapat diterima asalakan
perintahnya tidak membingungkan pembaca. Keuntungan menggunakan notasi
Pseudo-code adalah kemudahan mentranslasi ke notasi bahasa pemrograman, karena
terdapat korespodensi antara setiap Pseudo-code dengan notasi bahasa
pemrograman. Sehingga Pseudo-code cocok untuk algoritma yang rumit.
Contoh Kasus
Buatlah
algoritma untuk menghitung luas persegi panjang dengan ketiga notasi algoritma
diatas?
Jawab.
1.
Notasi Alami
–
Dapatkan nilai panjang
–
Dapatkan nilai lebar
–
Kalikan nilai panjang dengan nilai lebar dan berikan nilainya kehasil
–
Tampilkan nilai hasil
2.
Flowchart
Flowchart Mencari Luas
3.
Pseudo-code
p, l, ls : numeric
begin
read (p, l)
ls : p x l
print (ls)
end.
Aturan Penulisan Teks Algoritma
Teks
algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi
tersebut dapat ditulis alam bentuk notasi apapun , asalkan mudah dibaca dan
dimengerti. Tidak ada notasi yang baku dalam penulisan teks algoritma. Tiap
orang dapat membuat aturan penulisan dan algoritma sendiri. Namun, agar notasi
algoritma dapat dengan mudah ditranslasi ke alam notasi bahasa pemrograman,
maka sebaiknya notasi algoritma itu berkoresponden dengan notasi bahasa
pemrograman secara umum. Pada dasarnya, teks algoritma disusun atas tiga bagian
(blok) : bagian judul (header) agoritma, bagian deklarasi, dan bagian
deskripsi. Setiap bagian dapat diberi komentar untuk memperjelas maksud teks
yang dituliskan. Komentar biasanya ditulis menggunakan kurung kurawal.
1) Judul Algoritma
Judul
algoritma adalah bagian yang terdiri atas nama algoritma dan penjelasan
(spesifikasi) tentang algoritma tersebut. Nama algoritma sebaiknya singkat,
namun cukup menggambarkan apa yang akan dilakukan oleh algoritma tersebut. Di
bawah nama algoritma disertai dengan penjelasan singkat (intisari) tentang apa
yang dilakukan oleh algoritma. Penjelasan di bawah nama algoritma sering dinamakan
juga spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi
yang didefinisikan.
2) Deklarasi
Di
dalam algoritma, deklarasi nama adalah bagian untuk mendefinisikan semua nama
yang dipakai di dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama
peubah, nama tipe, nama prosedur dan nama fungsi.
3) Deskripsi
Deskripsi
adalah bagian terpenting dari struktur algoritma. Bagian ini berisi uraian
langkah-langkah penyelesaian masalah. Langkah-langkah ini dituliskan dengan
notasi yang lazim dalam penulisan algoritma. Setiap langkah algoritma dibaca
dari langkah paling atas hingga langkah paling bawah. Urutan penulisan
menentukan urutan pelaksanaan perintah.
—
Algoritma berisi langkah-langkah penyelesaian masalah. Langkah-langkah tersebut
dapat ditulis dalam notasi apapun, asalkan mudah dibaca dan dimengerti, karena
memang tidak ada notasi baku dalam penulisan algoritma.
—
Agar notasi algoritma mudah ditranslasi ke dalam notasi bahasa pemrograman,
maka sebaiknya notasi algoritma tersebut berkorespnden dengan notasi bahasa
pemrograman secara umum.
—
Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan
nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi.
Setelah judul disarankan untuk menuliskan spesifikasi singkat dari teks
algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan
apa yang akan dilakukan oleh algoritma tersebut.
—
Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan :
—
Nama type
—
Nama konstanta
—
Nama variabel
—
Nama fungsi
—
Nama prosedur
—
Algoritma adalah bagian inti dari suatu algoritma yang berisi instruksi atau
pemanggilan aksi yang telah didefinisikan. Komponen teks algoritma dalam
pemrograman procedural dapat berupa :
◦
Instruksi dasar seperti input/output, assignment
◦
Sequence (runtutan)
◦
Analisa kasus
◦
Perulangan
—
Setiap langkah algoritma dibaca dari “atas” ke “bawah”. Urutan deskripsi
penulisan menentuan urutan langkah pelaksanaan perintah.
I.4
Struktur
Dasar Algoritma
1. Struktur
Sequential (Runtunan)
pada struktur
sekuensial ni langkah-langkah yang dilakukan dalam algoritma diproses secara
berurutan.dimulai dari langkah pertama, kedua, dan seterusnya. Pada dasarnya
suatu program memang menjalankan suatu
proses dari yang dasar seperti struktur ini. Contoh :
Struktur
seleksi menyatakan pemilihan langkah yang didasarkan oleh suatu kondisi atau
pengambilan suatu keputusan. Struktur ini ditandai selalu dengan bentuk
flowcart decision (flowcart yang berbentuk belah ketupat).
Banyak contoh yang dapat kita terapkan
pada struktur jenis ini jika itu menyangkut keputusan, diantaranya: diskon yang
berbeda berdasarkan jumlah barang yang ingin dibeli.
3. Struktur
Perulangan
Struktur ini memberikan suatu perintah atau tindakkan
yang dilakukan beberapa kali. Misalnya jika teman mau menuliskan kata “Belajar
C” sebanyak sepuluh kali. akan lebih efisien jika teman menggunakan sturktur
ini dari pada sekedar menuliskannya berturut-turut sebanyak sepuluh kali.