Logika Pemrograman
Logika Pemrograman
Tugas pokok dalam ilmu komputer adalah mengembangkan
program-program baru. Program-program tersebut dibuat melalui proses rekayasa
perangkat lunak atau software engineering, sama seperti halnya proses
pembangunan sebuah gedung yang juga menggunakan rekayasa desain gedung
tersebut. Spesifikasi program tersebut ditentukan agar kita tahu apa kebisaan
dari program tersebut. Lalu, program akan didesain untuk menentukan bagaimana
program tersebut mampu mencapai tujuannya. Barulah, sebuah program akan ditulis
menjadi program yang bisa kita gunakan.
Pada saat fase desain
program, para programmer akan menentukan logika program dengan menggunakan
sebuah algoritma, yang merujuk pada sekumpulan instruksi yang menentukan
bagaimana caranya untuk menyelesaikan masalah. Definisi ini memang terdengar
seperti halnya definisi program komputer, tapi sebenarnya ada perbedaan yang
pokok. Algoritma ditulis dalam bahasa yang bisa dipahami manusia–Bahasa
Inggris, Arab, Indonesia, Jepang, Prancis, anything :D, sementara program
komputer harus ditulis dalam bahasa pemrograman. Sehingga, yang namanya
algoritma yang sudah ditulis harus dapat dibaca oleh manusia, alias “human
readable”, sementara yang namanya program komputer ditulis dibaca oleh mesin,
sehingga kadang disebut sebagai “machine readable”. Dengan kata lain, sebuah algoritma
adalah ide di balik solusi, sementara program komputer adalah implementasi
aktual dari solusi tersebut.
Para pekerja di bidang komputasi dan juga para ilmuwan di bidang
komputer cenderung mendiskusikan algoritma saat menentukan solusi yang paling tepat
untuk sebuah problem. Karena program ditulis oleh seorang programmer, yang
cenderung bisa membuat kode saja dengan kelebihan dan kekurangannya, dan
dieksekusi oleh komputer yang mampu mengeksekusi instruksi-instruksi secara
lebih cepat dari programmer, maka memprogram tanpa algoritma dapat membuat
beberapa hal yang tidak dikehendaki, karena mereka membuatnya tanpa pedoman.
Nah, algoritma bukanlah solusi yang seratus persen benar, algoritma bisa
digunakan sebagai pedoman untuk membuat program dan penyelesaian masalah.
Melihat banyaknya pilihan bahasa pemrograman yang bisa digunakan
oleh programmer, bahasa-bahasa pemrograman itu sebenarnya menggunakan satu hal
yang sama, yakni kontrol alur atau control flow, yang
merujuk pada bagaimana urutan instruksi sebuah program dieksekusi. Kontrol alur
ditentukan dengan struktur kontrol itu sendiri, yang mirip seperti polisi lalu
lintas di dalam program komputer.
Meskipun komputer mampu melakukan tugas-tugas kompleks, bahkan
program-program komputer yang paling rumit sekalipun dibuat dengan menggunakan
operasi aritmetika dasar dan juga struktur kontrol dasar pula, yang kemudian
membuat kombinasi yang sangat banyak sekali~mungkin mendekati tak hingga.
Struktur-struktur kontrol dasar tersebut akan dibahas pada bab ini dengan
menggunakan algoritma dasar.
Bagaimana komputer mengeksekusi instruksi?
Eksekusi sekuensial
Eksekusi secara
berurutan atau sekuensial merupakan alur kontrol yang normal dilakukan oleh komputer dan juga
paling sederhana, mengingat bentuk ini tidak memiliki struktur kontrol lainnya.
Mengingat hal ini adalah sesuatu yang paling sederhana, maka kita
dapat memahaminya dengan relatif mudah. Instruksi akan melakukan
dieksekusi sesuai dengan urutan kemunculannya di dalam program, dari atas ke bawah,
secara berurutan, langkah demi langkah.
Analogi yang bisa
kita gunakan untuk membayangkan hal ini adalah kita memiliki daftar “to do”. Sebelum masuk kelas,
seorang santri di Daar el-Qolam akan melakukan hal berikut:
1. Mandi
2. Berpakaian dengan seragam
3. Berkumpul di lapangan untuk doa bersama
4. Berjalan menuju kelas masing-masing
Saat seorang santri
melakukan atau mengeksekusi algoritma di atas, dia akan melakukannya secara berurutan. Urutan di
sini adalah sangat penting untuk diperhatikan oleh dirinya. Artinya, sebelum mandi dengan bersih,
sebaiknya dirinya tidak disarankan untuk pindah ke instruksi selanjutnya, dan berikutnya, dan
berikutnya.
Pada sebagian besar
program, eksekusi sekuensial merupakan hal yang paling dibutuhkan dan paling sering terjadi saat
tidak ada pilihan yang harus dilakukan.
Eksekusi kondisional (bersyarat)
Pada contoh
sebelumnya, semua instruksi harus dieksekusi setiap kali algoritma tersebut
digunakan, yakni setiap kali sang santri hendak
masuk kelas. Dalam kasus lainnya, sebuah instruksi atau sekumpulan instruksi
dapat bersifat opsional yang bisa dimasukkan ke dalam sebuah algoritma. Dengan eksekusi
bersyarat atau conditional execution, sebuah instruksi (atau kumpulan
instruksi) bisa dieksekusi atau bisa juga dilewati
sesuai dengan pengujian terhadap sebuah syarat tertentu. Bila syaratnya terpenuhi,
maka instruksi akan dieksekusi. Namun, bila syaratnya tidak terpenuhi, maka instruksi akan
dilewati begitu saja.
Dalam sebagian besar algoritma dan bahasa pemrograman, eksekusi
bersyarat dapat ditemukan dengan melihat kata “if“, yang bisa saja kita baca menjadi “if the condition is true, then
execute“. Karena itulah, programmer sering
menamai eksekusi bersyarat dengan nama “statement if“.
Untuk memahaminya
kita bisa menggunakan analogi pemilihan seragam sebagai algoritma, seperti di
bawah ini:
1.
2.
3.
4.
5.
6.
7.
|
Jika hari ini masuk
kelas,
maka
pilih seragam.
Jika
hari ini adalah hari Sabtu,
maka
gunakan seragam kemeja putih, celana putih
kalau
bukan, gunakan seragam kemeja putih, celana hitam.
kalau tidak masuk
kelas,
maka
bersihkan kamar.
|
Perhatihan, dalam
algoritma di atas, eksekusi secara sekuensial masih menjadi hal yang utama.
Algoritma ini dieksekusi dari instruksi pertama hingga terakhir, kecuali
statemen “jika” yang ada di sana.
Eksekusi repetitif (berulang)
Bila eksekusi
bersyarat akan digunakan untuk mengeksekusi sebuah instruksi atau melewati
sebuah instruksi, maka eksekusi secara repetitif (berulang) akan digunakan saat
instruksi yang sama dieksekusi lebih dari satu kali. Biasanya programmer
menyebut eksekusi repetitif sebagai “looping”, mengingat instruksi yang sama
akan diulang-ulang seperti halnya sebuah siklus. Ada dua kategori looping yang
umum digunakan, yakni looping yang menggunakan pencacah (counter-based looping)
dan looping yang menggunakan syarat (conditional looping).
Looping menggunakan pencacah
Sebuah looping yang
menggunakan pencacah atau counter-based looping adalah algoritma yang digunakan
saat berapa kali sebuah instruksi atau sekumpulan instruksi diulang telah
diketahui sebelum looping tersebut dimulai. Contohnya adalah saat ada perayaan
Hari Raya Idul Fitri, di mana kita harus menyalami seluruh anggota keluarga.
Sebelum semua anggota keluarga disalami oleh kita–yang jumlahnya sudah
diketahui, maka sebaiknya kita tidak bermain di lapangan.
1
2
3
4
5
6
7
8
|
Ulangi (5 kali):
Temukan
anggota keluarga
Cium tangan
Memohon
maaf atas segala kesalahan kepada beliau
Dengarkan
respons yang diberikannya
Gunakan
beberapa perkataan yang baik yang menyejukkan hati
Pengulangan selesai
Silakan main di
lapangan...
|
Perlu dilihat di sini
ada instruksi “Pengulangan selesai” untuk memberitahukan titik akhir dari
looping menggunakan pencacah. Semua bahasa pemrograman tentu memiliki hal yang
sama, sehingga meski semua spasi dihilangkan, maka si bahasa pemrograman akan tahu
kapan looping akan berhenti.
Conditional Loop
Dengan looping
bersyarat, sebuah instruksi atau sekumpulan instruksi akan dieksekusi hingga
sebuah kondisi terpenuhi. Dengan menggunakan looping bersyarat, kita tidak
harus mengetahui berapa kali jumlah pengulangan instruksi tersebut.
Analogi mudahnya
adalah saat seorang ketua kamar atau rayon menggiring anggota rayonnya untuk
pergi ke kelas.
1
2
3
4
5
6
7
|
Ulangi:
Bangunkan
yang masih tidur
Suruh yang
belum mandi untuk mandi
Suruh yang
sudah mandi agar bersiap-siap
Pengulangan selesai
Berdoa bersama
Pergi ke kelas
|
Prosedur
Dengan menggunakan
looping, programmer dapat menghindari penulisan instruksi yang sama berturut-turut
secara berulang-ulang. Meski demikian, dalam beberapa kasus, ada program yang
memanggil proses yang sama yang harus diulangi, tapi pengulangan itu dipisahkan
oleh instruksi yang lainnya. Atau, dua proses mungkin terlihat seperti hal yang
hampir sama, tapi sebenarnya tidak.
Analoginya adalah
saat menggunakan baju seragam. Di sana, ada banyak sekali gerakan tubuh yang
disuruh oleh otak. Bayangkan instruksi-instruksi yang datang dari otak untuk
menggerakkan otot yang ada di tangan, sebagai sebuah kumpulan instruksi
“gerakkan tangan”, dan instruksi-instruksi yang datang dari otak untuk
menggerakkan otot yang ada di kaki, sebagai sebuah kumpulan instruksi “gerakkan
kaki”, dan lain sebagainya. Di dalam kumpulan instruksi “gerakkan tangan” itu,
pasti banyak instruksi yang berulang-ulang kali dilakukan, bukan? Yup, dan
begitulah analoginya.
Daripada otak
menjabarkan instruksi-instruksi tersebut secara berulang-ulang, untuk
mengerjakan hal yang sama, akan lebih baik bagi otak untuk mengumpulkan
instruksi-instruksi tersebut menjadi satu kesatuan, mungkin ada perbedaan pada
objeknya. “Gerakkan kaki” atau “gerakkan tangan” adalah sesuatu yang disebut
dengan “prosedur” atau procedure atau subroutine, yang bisa kita panggil dalam
algoritma untuk mengulangi eksekusi pada proses yang sama. Sebuah prosedur juga
mengizinkan nilai atau objeknya yang hendak diproses, yang disebut dengan
parameter. Dalam konteks “gerakkan tangan” dan “gerakkan kaki”, “gerakkan”
merujuk pada prosedur, sementara “tangan” dan “kaki” merujuk pada parameter.
Selain menghindari
duplikasi instruksi, penggunaan prosedur juga mampu mengizinkan programmer
untuk memecahkan tugas yang kompleks dan rumit ke dalam unit-unit fungsional
yang lebih sederhana yang kita beri nama tertentu, yang algoritmanya mampu kita
analisis secara lebih mudah.
Comments
Post a Comment