Minggu 2
Minggu 2
A. Pengertian Algoritma
Algoritma ditinjau dari asal-usul katanya berasal dari algorism yang berarti proses
menghitung dengan angka arab. Seseorang dikatakan sebagai algorist jika orang tersebut
berhitung menggunakan angka arab. Para ahli bahasa berusaha menemukan asal kata ini
namun hasilnya kurang memuaskan. Rashid tahun 2007 mengemukakan bahwa para ahli
sejarah Matematika menemukan asal kata tersebut nama penulis arab terkenal yaitu Abu
Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca menjadi Algorism.
Al-Khuwarizmi menulis buku berjudul Kitab Al Jabar WalMuqabala yang artinya “Buku
pemugaran dan pengurangan” (The book of restoration and reduction). Perubahan kata dari
algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan
arithmetic, sehingga akhiran –sm berubah menjadi –thm, k, 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.
Algoritma merupakan gambaran (description) pelaksanaan suatu proses. Sebuah
proses dikerjakan oleh pemroses mengikuti algoritma yang sudah dibuat. An algorithm is
a set of steps that accomplishes a task, such as synthesizing caffeine. Although programs
require algorithms to be written n programming languages like Python, it is easier to
discuss and plan an algorithm using a mixture of a human language like English and aittle
mathematics (Campbell: 2009). Algoritma dalam perkembangan berikutnya diartikan
sebagai urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis
dan logis”. Kata logis merupakan kata kunci dalam algoritma. Langkah-langkah dalam
algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar. Algoritma
dalam beberapa konteks merupakan spesifikasi urutan langkah untuk melakukan pekerjaan
tertentu.
Algoritma dapat juga diartikan sebagai urutan langkah dalam menyelesaikan
masalah secara sistematis dan logis. Jadi pada sebuah algoritma harus tergambar urutan
langkah untuk menyelesaikan masalah yang sistematis dan logis. Knuth (1973)
mengatakan bahwa algoritma dalam pengertian modern mempunyai kemiripan dengan
istilah resep, proses, teknik, prosedur kerja. Algoritma dapat berupa sekumpulan aturan-
aturan berhingga yang memberikan sederetan operasi untuk menyelesaikan suatu masalah
yang khusus. Hal ini sesuai dengan pendapat Rinaldi Munir yang mendefenisikan
algoritma sebagai urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis. Berdasarkan dua pengertian algoritma di atas, dapat disimpulkan bahwa
algoritma merupakan suatu istilah yang luas dan tidak hanya berkaitan dengan dunia
komputer.
Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai
salah atau benar. Algoritma jantung dalam mengembangkan ilmu komputer atau
informatika. Kita dalam kehidupan sehari-haripun banyak proses yang dinyatakan dalam
suatu algoritma. Sebagai contoh, cara-cara membuat kue atau masakan yang dinyatakan
dalam suatu resep juga dapat disebut sebagai algoritma. Pada setiap resep selalu ada urutan
langkah-lankah membuat masakan. Bila langkah-langkahnya tidak logis, tidak dapat
dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba suatu resep masakan akan
membaca satu per satu langkah-langkah pembuatan masakan, lalu mengerjakan proses
sesuai urutan yang dibaca.
Benda atau alat yang dapat mengeksekusi proses disebut pemroses (processor).
Prosesor tersebut dapat berupa manusia, komputer, robot atau alat alat elektronik lainnya.
Pemroses melakukan suatu proses dengan melaksanakan atau “mengeksekusi” algoritma
yang menjabarkan proses tersebut. Melaksanakan algoritma berarti mengerjakan langkah-
langkah di dalam algoritma tersebut. Pemroses mengerjakan proses sesuai dengan
algoritma yang diberikan kepadanya. Juru masak membuat kue berdasarkan resep yang
diberikan kepadanya, pianis memainkan lagu berdasarkan papan not balok. Jadi, suatu
algoritma harus dinyatakan dalam bentuk yang dapat dimengerti oleh pemroses. Algoritma
harus dapat dimengerti setiap langkahnya oleh setiap orang, sehingga orang tersebut dapat
mengerjakan operasi sesuai dengan langkah yang direncanakan tersebut. Contoh 1.
Langkah-langkah yang disusun untuk menjumlahkan bilangan :
1. mulai
2. masukkan dua buah bilangan bulat, misalkan A,B
3. jumlahkah A dan B
4. simpan jumlah A dan B dalam C
5. tuliskan hasil C
6. selesai
Perlu juga dipahami disini bahwa algoritma yang berbeda dapat digunakan untuk
menyelesaikan suatu masalah dengan syarat yang sama. Tingkat kerumitan suatu algoritma
tergantung kepada seberapa banyak proses logika dan persyaratan yang dibutuhkan
algoritma tersebut untuk menyelesaikan masalah. Umumnya, algoritma yang dapat
menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki tingkat kerumitan
yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan
suatu masalah membutuhkan tingkat kerumitan yang tinggi. Untuk meningkatkan
pemahaman perhatikan algoritma berikut:
Contoh 2, algoritma menghitung luas segitiga
1. Mulai
2. Baca data alas dan tinggi.
3. Hitung luas segitiga dengan rumus alas kali tinggi kali 0.5
4. Tampilkan hasil perhitungan luas
5. Selesai
Contoh 2 di atas merupakan algoritma yang sangat sederhana, hanya mempunyai
lima langkah. Algoritma Contoh 2 di atas tidak dijumpai perulangan ataupun pemilihan
kondisi. Semua langkah dilakukan hanya satu kali, sehingga sekilas algoritma Contoh 2 di
atas benar, namun jika dicermati dengan seksama maka algoritma tersebut mengandung
kesalahan yang mendasar, yaitu tidak adanya pembatasan pada nilai data untuk alas dan
tinggi. Bagaimana jika nilai data alas atau tinggi adalah 0 (nol) atau bilangan negatif ?
Tentunya hasil yang keluar menjadi tidak sesuai dengan yang diharapkan. Dalam kasus
seperti ini kita perlu menambahkan langkah untuk memastikan nilai alas dan tinggi
memenuhi syarat, misalnya dengan melakukan pengecekan pada input yang masuk.
Apabila input nilai alas dan tinggi kurang dari 0 atau sama dengan maka program tidak
akan dijalankan, sehingga algoritma di atas dapat dimodifikasi menjadi seperti contoh 3.
Contoh 3 Hasil perbaikan algoritma perhitungan luas segitiga.
1. Mulai
2. Baca data alas dan tinggi.
3. Periksa nilai data alas dan tinggi, jika nilai data alas dan tinggi lebih besar
dari nol maka lanjutkan ke langkah ke 4 jika tidak maka selesai
4. Hitung luas segitiga dengan rumus alas kali tinggi kali 0.5
5. Tampilkan hasil perhitungan luas
6. Selesai
B. Peranan Algoritma dalam Pemograman
Algoritma merupakan tiang atau penopang utama dalam pemograman. Umumnya
cabang ilmu pemograman komputer mengarah ke dalam terminologi algoritma. Banyak
proses dalam kehidupan sehari-hari dinyatakan dalam suatu algoritma. Cara-cara membuat
kue atau masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma.
Pada setiap resep selalu ada urutan langkah-langkah membuat masakan. Bila langkah-
langkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Cookie yang
mencoba suatu resep masakan akan membaca satu per satu langkah-langkah pembuatannya
lalu ia mengerjakan proses sesuai yang ia baca. Secara umum, pihak (benda) yang
mengerjakan proses disebut pemroses (processor). Pemroses tersebut dapat berupa
manusia, komputer, robot atau alat-alat elektronik lainnya. Pemroses melakukan suatu
proses dengan melaksanakan atau “mengeksekusi” algoritma yang menjabarkan proses
tersebut.
Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara
primitif yaitu aksi-aksi yang didefenisikan sebelumnya dan diberi nama, dan diasumsikan
sebelumnya bahwa aksi-aksi tersebut dapat kerjakan sehingga dapat menyebabkan
kejadian. Melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam
algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan
kepadanya. Juru masak membuat kue berdasarkan resep yang diberikan kepadanya, pianis
memainkan lagu berdasarkan papan not balok. Jadi suatu algoritma harus dinyatakan
dalam bentuk yang dapat dimengerti oleh pemroses dan pemroses harus mengerti setiap
langkah dalam algoritma dan mengerjakan operasi yang bersesuaian dengan langkah
tersebut. Ciri-ciri algoritma yang baik adalah sebagai berikut:
1. Tepat sasaran berarti memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan
2. Flexible dan portable maksudnya adalah flexible untuk dikembangkan lebih
lanjut dan portable untuk digunakan pada berbagai sistem dan mesin
3. Bersih dari kesalahan sistem ataupun logic
4. Murah dalam artian efisien dalam penggunaan piranti memori dan penyimpanan
lainnya serta cepat waktu pelaksanaannya.
5. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan
pengembangan.
6. Algoritma merupakan pemberian (description) pelaksanaan suatu proses. Sebuah
proses dikerjakan oleh pemroses mengikuti algoritma yang sudah dibuat.
Algoritma merupakan urutan langkah instruksi yang logis. Setiap langkah
instruksi mengerjakan suatu tindakan aksi.
7. Logis, terstruktur dan sistematis
8. Semua operasi terdefinisi dengan baik
9. Semua proses harus berakhir setelah sejumlah langkah dilakukan
10. Ditulis dengan bahasa yang standar dengan format pemrograman agar mudah
untuk diimplementasikan dan tidak menimbulkan arti ganda
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.
Pertimbangan kedua yang harus diperhatikan dalam membuat algoritma adalah kita harus
mengetahui seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting
terutama pada algoritma untuk menyelesaikan masalah yang memerlukan aproksimasi
hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik harus mampu
memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya.
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari dua hal
yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan keluaran yang benar
(paling mendekati), tetapi jika kita harus menunggu berjam-jam untuk mendapatkan
keluarannya, algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan
keluaran yang cepat. Begitu juga dengan memori, semakin besar memori yang terpakai
maka semakin buruklah algoritma tersebut. Setiap orang dalam kenyataannya bisa
membuat algoritma yang berbeda untuk menyelesaikan suatu permasalahan yang sama,
walaupun terjadi perbedaan dalam menyusun algoritma, tentunya mengharapnya keluaran
mempunyai hasil sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan
cepat.
Algoritma berisi langkah-langkah penyelesaian suatu masalah yang berupa
runtunan aksi (sequence), pemilihan aksi (selection), pengulangan aksi (iteration) atau
kombinasi dari ketiganya. Jadistruktur dasar pembangunan algoritma ada tiga, yaitu:
1. Struktur runtunan digunakan untuk program yang pernyataannya sequential atau
urutan.
2. Struktur pemilihan digunakan untuk program yang menggunakan pemilihan atau
penyeleksian kondisi.
3. Struktur Perulangan digunakan untuk program yang pernyataannya akan dieksekusi
berulang-ulang.
Beberapa hal yang perlu diperhatikan dalam membuat algoritma antara lain
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi
tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa
pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi
algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini
dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi
algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka
sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa
pemrograman secara umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam
notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh
komputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau
diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat
bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan
spesifikasi mesin yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan
suatu permasalahan ke dalam bahasa pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh
komputer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada
beberapa hal yang harus diperhatikan pada translasi tersebut, yaitu:
a. Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam penggunaan
bahasa pemrograman apabila tidak semua bahasa pemrograman
membutuhkannya.
b. Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian
variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data.
c. Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing
memiliki kelebihan dan kekurangan yang berbeda.
d. Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa
pemrograman yang akan digunakan.
e. Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan
disajikan. Hal-hal teknis ini diperhatikan ketika mengkonversikannya menjadi
program.
f. Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau
interpreter.
Agar pemikiran yang telah dirancang dapat dilaksanakan oleh komputer,
algoritma harus ditulis dalam notasi bahasa pemrograman tertentu (pengkodean),
dimana hasilnya dinamakan program. Jadi program adalah perwujudan atau
implementasi teknis dari algoritma yang ditulis dalam bahasa pemrograman tertentu
sehingga dapat dilaksanakan oleh komputer. Kata “algoritma” dan “program” seringkali
dipertukarkan dalam penggunaannya. Misalnya ada orang yang berkata seperti ini:
“program pengurutan data menggunakan algoritma selection sort”. Atau pertanyaan
seperti ini: “bagaimana algoritma dan program menggambarkan grafik tersebut?”.
Jika kita sudah memahami pengertian algoritma yang sudah disebutkan sebelum
ini, kita akan dapat membedakan arti kata algoritma dan program. Algoritma adalah
langkah-langkah penyelesaikan masalah, sedangkan program adalah realisasi algoritma
dalam bahasa pemrograman. Program ditulis dalam salah satu bahasa pemrograman dan
kegiatan membuat program disebut pemrograman (programming). Orang yang menulis
program disebut pemrogram (programmer). Tiap-tiap langkah di dalam program disebut
pernyataan atau instruksi atau statement. Jadi, program tersusun atas sederetan
instruksi. Bila suatu instruksi dilaksanakan, maka operasi yang bersesuaian dengan
instruksi tersebut dikerjakan komputer.
F. Pemrograman Prosedural
Pemrograman berasal dari kata program yang diberiawalan pe– dan akhiran –an.
Dalam buku ini, program berarti program komputer. Pengertian program komputer
menurut Zelle (2002) dalam bukunya “Python Programming: An Introduction to
Computer Science” adalah sekumpulan instruksi langkah per langkah yang
memberitahukan mengenai apa yang harus dilakukan computer secara tepat dan cepat.
Pemrograman adalah segala kegiatan pembuatan program komputer.
Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti
Algoritma adalah proses yang prosedural. Pada pemrograman prosedural, program
dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi terdiri atas
runtutan (sequence) instruksi (perintah) yang dilaksanakan satu per satu secara
berurutan oleh pemroses (komputer). Alur pelaksanaan instruksi dapat berubah apabila
ditemukan pencabangan kondisional. Data yang disimpan di dalam memori akan
dimanipulasi oleh instrusi secara beruntun atau prosedural. Paradigma pemrograman
seperti ini dinamakan pemrograman prosedural.
Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran dan C
mendukung kegiatan pemrograman prosedural, karena itu mereka dinamakan juga
bahasa prosedural. Selain paradigma pemrograman prosedural, ada lagi paradigma
yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming).
Paradigma pemrograman ini merupakan trend baru dan sangat populer akhir-akhir ini.
Paradigma pemrograman yang lain adalah pemograman fungsional, pemogram
deklaratif dan pemograman konkuren. Pada kesempatan ini penulis hanya menyajikan
paradigma pemograman prosedural saja.
Gambar 18: Paradigma Bahasa Pemograman Komputer
Paradigma prosedural adalah paradigma yang intuitif sehingga mudah dipelajari.
Masalah dalam paradigma prosedural diselesaikan menggunakan langkah-langkah yang
berurutan. Selain sangat intuitif bagi programmer, cara penyelesaian prosedural juga
merupakan cara yang paling alami bagi komputer (secara hardware, komputer bekerja
secara sekuensial atau berurutan). Kegiatan yang ditempuh dalam pemograman
prosedural meliputi pendefinisian algoritma dan konstruktor pemrograman prosedural,
serta konsep Input, Proses, dan Output yang sangat lazim dalam dunia pemrograman
prosedural.
Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.
Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa aturan-
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. Umumnya bahasa pemograman dibedakan berdasarkan tujuan
dan fungsi dari bahasa tersebut.
1. Kiat Belajar Pemograman
Secara sistematis berikut diberikan kiat-kiat untuk belajar memprogram dan
belajar bahasa pemrograman serta produk yang dapat dihasilkan:
a. Belajar Memprogram
1) Belajar memprogram berarti belajar bahasa pemrograman.
2) Belajar memprogram berarti belajar tentang strategi pemecahan masalah,
metodologi dan sistematika pemecahan masalah kemudian menuliskannya
dalam notasi yang disepakati bersama.
3) Belajar memprogram bersifat pemahaman terhadap persoalan,analisis dan
sintesis.
4) Belajar memprogram bertitik berat kemampuan untuk membuat design
program.
b. Belajar Bahasa Pemrograman
1) Belajar bahasa pemrograman berarti belajar memakai suatu bahasa
pemrograman, aturan sintaks, tatacara untuk memanfaatkan pernyataan yang
spesifik untuk setiap bahasa.
2) Belajar bahasa pemrograman titik beratnya adalah pada pengkodean (coder)
permasalahan ke dalam urutan yang logis .