May 2018

Saturday, May 26, 2018

PENGENALAN DASAR PEMROGRAMAN


Di awal post ini aku mau share tentang pemahaman awal mengenai algoritma dan pemrograman. Dimulai dari pembahasan tentang persoalan (problem), yang selanjutnya akan dijelaskan tentang program dan pemrograman, dan ditutup dengan penjelasan tentang notasi yang akan digunakan dalam menuliskan algoritma.


1. PERSOALAN (PROBLEM)

 

Kehidupan manusia itu penuh dengan berbagai persoalan/problem yang melingkupinya. Kehidupan itu sendiri pada dasarnya adalah menyelesaikan aneka persoalan tersebut.  Dan persoalan adalah ibarat pertanyaan yang harus dicari jawabannya.

Agar lebih memahami makna "persoalan", kita ambil contoh :

"Diketahui sebidang tanah berbentuk persegi panjang dengan panjang dan lebar tertetntu ( dalam satuan meter). Hiutnglah luas tanah tersebut!"

Jawaban (yang diharapkan) dari persoalan ini adalah luas tanah tersebut dalam satuan meter persegi.

  2. SEJARAH ALGORITMA

Ditinjau dari asal usul kata, kata "algoritma" sendiri mempunyai sejarah yang cukup unik, lho! Kata ini tidak muncul di dalam kamus Webster sampai akhir taun 1957, malah kata yang ditemukan adalah algorism, yang artinya "proses menghitung dengan angka Arab" [KNU73].

Para ahli bahasa berusaha menemukan asal kata algorism ini namun hasilnya kurang memuaskan, sampai akhirnya para ahli sejarah matematika menemukan asal mula kata tersebut. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yakni Abu Ja'far Muhammad Ibnu Musa al-Khuwarizmi (Al-Khuwarizmi dibaca orang Barat menjadi algorism).

Al-Khuwarizmi

 Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal muqabala, yang artinya "Buku pemugaran dan pengurangan (The book of restoration and reduction). Dari judul buku ini kita juga memperoleh kata "aljabar"(algebra).

 

The oldest Arabic word on algebra produced in the 9th century

Perubahan dari kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran -sm berubah menjadi -thm. Karena perhitungan dengan angka Arab sudah biasa / lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya [PAR95]. Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma.

Sehingga algoritma adalah deskripsi dapat terdiri dari suatu polah tingkah laku, dinyatakan dalam primitif, yaitu aksi-aksi yang didefinisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat dikerjakan sehingga dapat menyebabkan kejadian yang dapat diamati. Aksi primitif harus dapat dikerjakan. "Pergi ke lapangan!" adalah aksi yang dapat dikerjakan, sedangkan "Pergi ke neraka!" bukan algoritma, karena tidak dapat dikerjakan.

Urut-urutan langkah harus dapat dimengerti dengan baik, oleh pembuat algoritma maupun oleh yang akan mengerjakan.

Contoh paling simpel yang kita jumpai dalam kehidupan sehari-hari, yakni memasak nasi goreng. Pasti yang ada dipikiran kita pertama kali yaitu "Apa saja alat dan bahan yang dibutuhkan?" "Berapa takaran yang diperlukan?" "Bagaimana langkah membuatnya?" "Apa yang harus kita lakukan bila nasi goreng belum matang?" dan lain-lain.

 3. KARAKTERISTIK ALGORITMA

Pada dasarnya, sebuah algoritma menerima beberapa masukan (input), memprosesnya dalam urutan langkah-langkah tadi, dan menghasilkan luaran (output).

Ketika algoritma "dijalankan" (oleh manusia / oleh komputer), maka langkah-langkah tersebut dijelaskan dari awal sampai akhirnya berhenti dan kita memperoleh solusi persoalan. Jika algoritmanya benar, maka hasil (solusinya) pasti benar, sebaliknnya jika algoritma salah maka hasilnya juga salah. 

Sebuah algoritma harus benar, lalu algoritma harus berhenti, dan setelah berhenti algoritma memberikan hasil yang benar

 4. PROGRAM DAN PEMROGRAMAN



Manusia pun dapat melaksanakan suatu algoritma, karena manusia dapat membaca dan mengerti instruksi di dalam algoritma, lalu mengerjakan instruksi tersebut. Namun karena kita bahas pemrograman dengan menggunakan komputer, maka kita memfokuskan pemroses algoritma adalah komputer.

Agar komputer mengerti instruksi yang dibacanya, maka instruksi tersebut tentu harus ditulis dalam bahasa khusus yang disebut bahasa  komputer. Algoritma yang ditulis dalam bahasa komputer dinamakan program. Bahasa komputer yang digunakan untuk menulis program dinamakan bahasa pemrograman (programming language). Orang yang menulis program komputer dinamakan pemrogram (programmer). Dan kegiatan  mulai dari mendesain hingga menulis program dinamakan pemrograman (programming). Teks program dalam bahasa pemrograman sering dinamakan kode program (source code), sehingga menulis kode program sering dinamakan coding.

BELAJAR PEMROGRAMAN ≠ BELAJAR BAHASA PEMROGRAMAN

Belajar pemrograman berarti mempelajari metodologi pemecahan masalah, kemudian menuliskan algoritma pemecahan masalah dalam notasi tertentu.

Belajar bahasa pemrograman berarti belajar memakai suatu bahasa komputer, aturan tata bahasanya, instruksi-instruksi nya, tata cara pengoperasian compiler nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.

Belajar pemrograman dan bahasa pemrograman mempunyai tingkatan dan kesulitan yang berbeda-beda. Belajar memprogram lebih bersifat keterampilan daripada analisis dan sintesa. Pengajaran pemrograman titik beratnya adalah membentuk seorang perancang "designer" program, sedangkan pengajaran bahasa pemrograman titik beratnya adalah membentuk seorang "coder" (juru kode). 

 5. PARADIGMA PEMROGRAMAN

Paradigma adalah sudut pandang / "sudut serang" tertentu yang diprioritaskan, terhadap kelompok problema, realitas, keadaan, dan sebagainya.

Dalam pemrograman pun ada beberapa paradigma, masing-masing mempunyai prioritas strategi analisis yang khusus untuk memecahkan persoalan, masing-masing menggiring kita ke suatu pendekatan khusus dari problematika keseluruhan.

Beberapa paradigma pemrograman: 

      1. Paradigma Prosedural / imperatif

      Kata kunci yang sering didengungkan dalam pendekatan ini adalah:

Algoritma + Struktur Data = Program 

      Paradigma ini sangat tidak "manusiawi" dan tidak "alamiah", karena harus berpikir dalam batasan mesin (komputer), bahkan kadang-kadang batasan ini lebih mengikat daripada batasan problematikanya sendiri. Tapi keuntungan dari paradigma ini adalah efisiensi eksekusi, karena dekat dengan mesin.

     2. Paradigma Fungsional

     Paradigma ini didasari oleh konsep pemetaan dan fungsi pada matematika. Dasar pemecahan persoalan adalah transformasional. Paradigma ini tidak lagi mempermasalahkan memorisasi dan struktur data, tidak ada pemilahan antara data dan program, tidak ada lagi pengertian tentang "variabel". Berlainan dengan paradigma prosedural, program fungsional harus diolah lebih dari program prosedural (oleh pemroses bahasanya), karena itu salah satu keberatan adalah kinerja dan efisiensinya.

     3. Paradigma Deklaratif, predikatif atau lojik

     Didasari oleh pendefinisian relasi antar individu yang dinyatakan sebagai predikat. Pemrograman menguraikan sekumpulan fakta dan aturan-aturan. Ketika program dieksekusi, pemakai mengajukan pertanyaan (query), dan program akan menjawab apakah pernyataan itu dapat dideduksi dari aturan dan fakta yang ada. Program akan memakai aturan deduksi dan mencocokkan pertanyaan dengan fakta-fakta yang ada untuk menjawab pertanyaan.

     4. Paradigma Berorientasi Objek (Object Oriented)

      Didasari oleh objek. Sebuah objek memiliki atribut (kumpulan sifat), dan mempunyai kelakuan (kumpulan reaksi, metoda). Paradigma ini menawarkan konsep class, generic, inheritance,  polymorphism, dan menekankan pentingnya pendefinisian statik kelas untuk melahirkan objek pada saat runtime, yang kemudian dimanipulasi atau saling berinteraksi.

6. BAHASA PEMROGRAMAN

  

Sampai sekarang ada puluhan bahasa pemrograman,contoh:
 1. Prosedural : Algol, Pascal, Fortran, Basic, Cobol, C ...
 2. Fungsional : LOGO, APL, LISP
 3. Deklaratif/Lojik : Prolog
 4. Object oriented murni : Smalltalk, Eifel, Jaca, C++ ...
 5. Konkuren : OCCAM, Ada, Java
 6. Relasional : SQL pada basisdata relasional 

Berdasarkan tujuan aplikasinya, bahasa pemrograman dapat digolongkan menjadi 2 kelompok :
  • Bahasa pemrograman bertujuan khusus (specific purpose programming language).
    Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi), Fortran (aplikasi komputasi ilmiah), bahasa assembly (aplikasi pemrograman mesin), Prolog (aplikasi kecerdasan buatan), bahasa-bahasa simulasi, dan lain-lain.
  • Bahasa pemrograman bertujuan umum (general purpose programming language).
    Dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa Pascal, Basic,  C, C++, C#, Java, dan lain-lain.
     

     

 7. STRUKTUR TEKS ALGORITMA

Sebuah algoritma adalah sebuah teks yang dibaca secara beruntun (sekuensial) dari atas ke bawah. Dan sebuah teks algoritma selalu disusun oleh 3 bagian, yaitu:
     1. Bagian judul
          Judul adalah bagian teks algoritma tempat mendefinisikan apakah teks tersebut adalah
          program, prosedur, fungsi, modul, atau sebuah skema program.
     2. Bagian Kamus (deklarasi)
          Kamus adalah bagian teks algoritma tempat mendefinisikan:
          - Nama type
          - Nama konstanta
          - Nama informasi (variabel)
          - Nama fungsi, sekaligus spesifikasinya
          - Nama prosedur, sekaligus spesifikasinya
          Dan syarat suatu nama yakni:
          *   Bisa dimaknai
          *   Tidak boleh menggunakan kata khusus
          *   Tidak boleh memakai spasi
          *   Tidak boleh diawali dengan angka
          *   Tidak boleh menggunakan kata kunci
     3. Bagian Deskripsi (algoritma)
         Algoritma adalah bagian teks algoritmik yang berisi instruksi / pemanggilan aksi yang telah didefinisikan.
           Dapat berupa:
          - Instruksi dasar seperti input/output, assignment
          - Sequential statement
          - Analisis kasus
          - Pengulangan
 8. TIGA KONSTRUKSI DASAR
Sebuah algoritma dapat dibangun dari tiga buah konstruksi / struktur dasar, yaitu struktur runtunan (sequence), struktur pemilihan (selection), dan struktur pengulangan (repetition).
Struktur Runtunan
Sebuah runtunan terdiri dari satu / lebih instruksi. Di dalam sebuah runtunan, setiap instruksi dikerjakan secara berurutan (sekuensial) sesuai dengan urutannya di dalam algoritma. Secara sekuensial, artinya suatu instruksi dikerjakan setelah instruksi sebelumnya dikerjakan.
Seperti hal nya dalam membuat nasi goreng sosis, maka urutannya yaitu seperti ambil wajan, taruh wajan di atas kompor dan selanjutnya.
Struktur pemilihan
Adakala nya sebuah aksi dikerjakan jika memenuhi persyaratan (kondisi) tertentu. Dalam pembuatan nasi goreng sosis, maka contoh saja jika nasi goreng sudah matang, lalu tuang di atas piring.
Bentuk instruksi ini dinamakan struktur pemilihan (selection) atau pencabangan, yang dimana penulisannya yaitu
if kondisi then
      aksi
Struktur pengulangan
Pengulangan ini merupakan sesuatu yang dilakukan lebih dari 1 kali. Sebagai contoh, dalam pembuatan nasi goreng sosis bahwa selama nasi goreng belum manis, kemudian kita tambahkan kecap lagi. Sehingga bisa ditulis
While kondisi do
               aksi
Nah setelah mengetahui materi di atas, maka kita bisa membuat notasi algoritma Nasi Goreng Sosis. Berikut adalah notasi nya ↓

//Judul
               Membuat Nasi Goreng Sosis
//Kamus
  • Nasi
  • Bawang putih
  • Bawang merah
  • Sosis
  • Cabe
  • Kecap
  • Garam
  • Cobek
  • Spatula
  • Sendok
  • Garpu
  • Kompor
  • Pisau
  • Talenan
//Deskripsi :
  • Ambil nasi dari rice cooker 1 piring
  • Ambil wajan dari rak
  • Taruh wajan di atas kompor
  • Ambil pisau, dan talenan dari rak
  • Masukkan bawang merah, bawang putih ke cobek
  • Ulek dan haluskan
  • While belum halus do
                  haluskan lagi
  • Ambil sosis dari kulkas
  • Potong sosis menjadi kecil-kecil
  • Nyalakan kompor
  • Ambil spatula dari rak
  • Tumis bawang merah dan bawang putih sampai harum
  • Depend on kesukaan
Suka pedas: masukkan cabe
Tidak suka pedas: -
  • Masukkan nasi ke wajan
  • Masukkan sosis ke wajan
  • While nasi goreng kurang manis do
                      tambahkan kecap lagi
  • While nasi goreng kurang asin do
         tambahkan garam hingga rasa pas
  • Aduk nasi beserta bumbu yang sudah ada di wajan
  • While nasi goreng belum matang do
                       Aduk lagi nasi goreng nya
  • If sudah matang then
         Hidangkan di piring
  • Matikan kompor
  • Nasi goreng siap disantap
Jadi deh nasi goreng nya. Silahkan dicoba ya, bila ada kritik saran maupun pertanyaan bisa dikomen di kolom komentar 😁
Thank You !! Semoga bermanfaat 🙂