Algoritma

1 Komentar

Algoritma adalah daftar yang berisikan tentang instruksi yang telah disusun secara jelas untuk menyelesaikan masalah yang mempunyai keadaan awal dan keadaan akhir. Biasanya dinyatakan dalam primitif, yakni aksi yang telah didefinisikan dan diberi nama. Aksi ini diasumsikan dapat dikerjakan, sehingga menghasilkan efek neto yang diinginkan.

Aksi primitif ini harus dapat dilaksanakan! Misalnya : “Mengupas kentang” adalah algoritma, sementara “pergi ke Pluto” bukan merupakan algoritma, karena dianggap tidak dapat dilakukan. Urutan serta perintah dalam algoritma juga harus jelas. Misalnya “Panaskan oven” tidaklah jelas, karena tidak jelas batasan panas itu seberapa panas.

Perhatikan aksi yang telah kita pilih sebelumnya, inilah algoritmanya :

·         Ambil kantong kentang dari rak

·         Ambil panci dari lemari

·         Kupas kentang

·         Kembalikan kantong ke rak

Algoritma yang kita bahas sampai sekarang hanya mempunyai satu alur. Dalam algoritma yang sesungguhnya, kita akan menghadapi dua, tiga, bahkan tak terhingga kemungkinan. Sekarang, akan diperkenalkan tentang pengandaian. Pengandaian digunakan bila terdapat kemungkinan yang dapat mengubah masalah. 

Misalnya dalam aksi ”mengupas kentang”, kita misalkan kadang-kadang pelaku menggunakan celemek, kadang-kadang tidak. Maka, kita akan mendapatkan laporan seperti :

 

·         Ambil kantong kentang dari rak

·         Ambil panci dari lemari

·         Lakukan persiapan, tergantung pakaian

·         Kupas kentang

.     Kembalikan kantong ke rak 

Notasi Kondisional

Misalnya, pada pengamatan pertama didapatkan : 

” Pelaku memakai celemek karena melihat bajunya berwarna cerah”

Pada pengamatan lain didapatkan : 

” Pelaku tidak memakai celemek karena melihat bajunya berwarna gelap”

Maka kita dapat menuliskan notasi kondisional [if .[aksi]. then .[aksi].]

 

·         Ambil kantong kentang dari rak

·         Ambil panci dari lemari

·         If baju berwarna muda then

Pakai celemek

·         Kupas kentang

·         Kembalikan kantong ke rak

Notasi While 

Sekarang, masalah lain. Misalnya pelaku akan mengupas banyak sekali kentang, misalnya 20 buah. Namun, sangat-sangat tidak efektif bila kita menuliskan baris ”Kupas kentang” sebanyak 20 kali. Selain itu, bagaimana jika jumlah kentang yang dikupas tidak sama setiap hari? Jika kita gunakan notasi kondisional untuk mendapatkan kupasan kentang tertentu, maka kita akan mendapatkan :

 

·         If jumlah kentang yang dikupas belum cukup then

Kupas kentang

Dengan notasi seperti ini, akan tetap merepotkan, karena kita tetap akan menulis lebih banyak dari yang kita inginkan. [misalnya kita telah menulis 50 baris notasi, sementara pelaku hanya mengupas 20, maka selanjutnya akan didapatkan 30 notasi yang salah, sehingga notasi kondisional sangat-sangat tidak efektif pada kasus seperti ini ] 

Masalah ini akan lebih efektif diselesaikan dengan notasi while, yakni notasi yang menjelaskan proses pengulangan sampai dijumpai suatu keadaan tertentu. Notasi while dituliskan seperti :

While [kondisi] Do [aksi] 

Sehingga algoritma dapat dituliskan sebagai

 

·         Ambil kantong kentang dari rak

·         Ambil panci dari lemari

·         If baju berwarna muda then

Pakai celemek

·         While jumlah kentang belum cukup then

Kupas satu kentang

·         Kembalikan kantong ke rak

Notasi Depend on 

Kita juga dapat menuliskan algoritma di atas seperti :

 

·         Ambil kantong kentang dari rak

·         Ambil panci dari lemari

·         Depend on baju

Berwarna muda : pakai celemek

Berwarna gelap : –

·         While jumlah kentang belum cukup then

Kupas satu kentang

·         Kembalikan kantong ke rak

Telah disebutkan, bahwa aksi terjadi dalam selang waktu tertentu. Sehingga kita tidak boleh menuliskan :

·         While baju berwarna muda then

Kupas satu kentang

Karena bila kita menuliskan seperti itu, hanya akan ada dua kemungkinan : 

·         Pengupasan tidak pernah dilakukan

·         Pengupasan dilakukan secara berulang-ulang [looping]

Sehingga, algoritma tersebut adalah algoritma yang salah.  

Mesin

Jika kita memberikan algoritma ini kepada orang lain [misalnya], dan orang lain itu dapat mengerjakan algoritma ini dan menghasilkan efek neto yang kita inginkan, maka kita dapat menyebutkan orang lain tersebut sebagai mesin. Mesin adalah sebuah mekanisme yang dapat menyebabkan suatu aksi terjadi mengikuti suatu pola yang dijelaskan algoritma yang dinyatakan dalam primitif mesin tersebut. 

Algoritma yang mengatur tingkah laku suatu mesin disebut sebagai program. Algoritma ini harus dapat dimengerti oleh mesin, serta menghasilkan efek neto yang kita inginkan.

 

Selanjutnya, notasi algoritmik.

*disadur dari diktat Dasar Pemrograman oleh Inggriani Liem

Iklan

Pemrograman Prosedural

1 Komentar

Terdapat beberapa pengertian dasar dalam pemrograman prosedural: 

Aksi : Kejadian yang terjadi pada selang waktu tertentu dan menghasilkan efek neto yang memang sudah direncanakan.

Selama selang waktu tersebut, akan terdapat keadaan awal [T0] dan keadaan akhir [T1]. Dalam hal ini , kita harus membatasi ruang ligkup dengan jelas. Misalnya, saya ambil contoh aksi : mengupas kentang. Kita harus dapat menentukan keadaan awal [initial state] dan keadaan akhir [final state] dengan jelas : 

Keadaan Awal : Kentang sudah ada di kantong kentang yang berada di rak dapur, kentang akan dikupas oleh pelaku.

Keadaan Akhir : Kentang dalam keadaan terkupas di panci, siap untuk dimasak, dan kantong kentang harus dikembalikan ke rak dapur. 

Kita andaikan bahwa persediaan kentang selalu cukup [tidak pernah habis], lalu kita abaikan proses penambahan kentang ke dalam rak. Dengan begini, kita telah menentukan batasan dalam masalah.

Aksi dapat kita bagi menjadi sub-aksi yang terjadi secara sekuensial. Sub-aksi yang terakumulasi itu akan menghasilkan efek neto yang kita harapkan. Nah, coba kita tinjau urutan-urutan dari aksi : 

·        Ambil kantong kentang dari rak

·        Ambil panci dari lemari

·        Kupas kentang

·        Kembalikan kantong ke rak

Jika urutan dalam mengambil kantong kentang dan panci tidak penting, kita dapat mengubahnya menjadi 

·        Ambil kantong kentang dari rak dan panci dari lemari

·        Kupas kentang

·        Kembalikan kantong ke rak

Begitulah tentang aksi, selanjutnya akan ditulis tentang algoritma. 

*disadur dari diktat Dasar Pemrograman oleh Inggriani Liem 

Pendahuluan Pemrograman

2 Komentar

Komputer banyak digunakan sebagai alat bantu untuk menyelesaikan masalah. Namun, kita tidak bisa begitu saja memberikan masalah pada komputer, lalu komputer memberikan solusinya. Perlu pendekatan khusus untuk berkomunikasi dengan komputer, karena komputer hanyalah sebuah mesin. Kita harus menanamkan suatu strategi kepada komputer, untuk menyelesaikan masalah. Strategi yang kita tanamkan ini disebut program. Untuk membuat suatu program, kita dapat melakukan pendekatan, yang disebut sebagai paradigma.

PARADIGMA PEMROGRAMAN

Paradigma merupakan sudut pandang kita terhadap suatu masalah. Paradigma membatasi jalan berpikir kita, sehingga membatasi kemampuan kita untuk menyelesaikan masalah. Oleh karena itu, janganlah hanya mengandalkan suatu paradigma saja. Dalam melakukan pemrograman, kita harus melakukan pendekatan dengan paradigma yang tepat. Tidak ada satu paradigma yang dapat bekerja efektif pada semua permasalahan.

Jenis-jenis paradigma pemrograman :

1. Paradigma Prosedural / Imperatif

    Didasari konsep Von Newmann [stored program concept]:

    Terdapat memori yang dibedakan menjadi instruksi dan data. Memori ini dapat diberi nama dan harga. Dalam paradigma ini, kita memberikan instruksi yang akan diproses secara berurutan. Dalam instruksi ini, dapat juga terdapat percabangan, yang akan menentukan proses selanjutnya.

    Pemrograman ini “gak manusia banget”, karena kita harus berpikir dalam batasan mesin. Namun, keuntungan dengan paradigma ini adalah efisiensi eksekusi, karena dekat dengan mesin.

    Contoh : Algol, Pascal, Fortran, Basic, Cobol, C, dll…

    2. Paradigma Fungsional

      Didasari fungsi [seperti dalam matematika]

      Terdapat fungsi–fungsi dasar yang dapat dilakukan oleh mesin. Fungsi-fungsi tersebut dapat membentuk komposisi yang disebut sebagai primitif. Untuk menyelesaikan masalah, kita menyusun primitif sedemikian rupa untuk menyelesaikan masalah yang ada, untuk memunculkan solusi. Dengan demikian, kekurangan paradigma ini adalah efisiensi serta kinerjanya, karena pengolahan dilakukan lebih lama.

      Contoh : LISP, APL, LOGO

      3. Paradigma Deklaratif, Predikatif atau Logic

        Didasari oleh predikat, yakni pendefinisian relasi antar individu yang merupakan kumpulan dari fakta.

        Pada paradigma ini, diuraikan sejumlah fakta dan aturan [inference rules]. Ketika program dieksekusi, pemakai program mengajukan pertanyaan [query]. Selanjutnya, program akan menyocokkan pertanyaan dengan fakta-fakta yang ada untuk menyelesaikan masalah.

        Contoh : Prolog

        4. Paradigma Berorientasi Objek

          Didasari oleh objek.

          Sebuah objek mempunyai atribut [sifat ], serta memberikan reaksi yang khusus. Sesama objek dapat saling berinteraksi, sehingga mengandung sedikit paradigma imperatif.

          Contoh : C++, Java, Smalltalk, Eiffel, dll…

           

          Selain paradigma di atas, terdapat juga paradigma konkruen[cth : OCCAM, Ada], yang memungkinkan pemrosesan secara paralel, dan paradigma relasional[cth : SQL pada basis data relasional] yang berdasarkan entity [kesatuan yang lahir] dan relasi.

          OK deh, sekian dulu pedahuluannya. Selanjutnya, saya akan menulis tentang pengertian dasar dari pemrograman prosedural [ini karena saya akan mengikuti kelas dasar pemrograman prosedural semester depan]. Namun, kita belum akan masuk ke dalam bahasa pemrograman. Kita akan lebih mendalami tentang algoritma dan kerangka berpikir dalam paradigma prosedural, sehingga kita dapat menyelesaikan masalah tanpa bergantung pada bahasa pemrograman apapun. O iya, kalau ada yang salah, jangan ragu untuk membetulkan.

          *disadur dari diktat Dasar Pemrograman oleh Inggriani Liem