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

Popular posts from this blog

Makalah Perkembangan Teknologi Informasi

Makalah Ijtihad

Makalah Perkembangan Gadget