Kamis, 11 Januari 2018

Bab1 (Pengenalan algoritma)

   Komputer sudah menjadi alat bantu kehidupan manusia sehari-hari. Tanpa
bantuan manusia, komputer hanya akan menjadi seonggok mesin yang tidak
bisa melakukan apa-apa. Program menjadi “roh” yang dapat membuat
komputer dapat bekerja dan memberi bantuan kepada manusia. Dalam membuat
program harus melalui beberapa tahapan, salah satunya adalah tahap desain.
Supaya perancangan program dapat dikomunikasikan dengan orang lain maka,
perancangan program harus menggunakan notasi yang standar dan mudah
untuk dibaca dan dipahami.

1. Memahami bagaimana komputer menangani data elektronik
2. Memahami komponen yang terlibat dalam memproduksi informasi
3. Memahami perbedaan bahasa pemrograman di setiap tingkatan

   Komputer Elektronik
Komputer di era modern seperti sekarang ini, sudah menjadi
kebutuhan untuk mendukung aktivitas yang dilakukan oleh manusia. Bentuk
fisik dari komputer pun juga beragam, kompak dan semakin praktis.
   Seluruh perangkat elektronik pada umumnya terdapat sebuah
komputer kecil yang berfungsi sebagai ‘otak’ atau pusat pengendali perangkat
tersebut.
   Perangkat komputer modern dapat bekerja apabila terdapat energi
listrik, demikian pula dengan data yang diolah. Dengan ditemukannya energi
listrik, seluruh data dalam bentuk apapun sangat dimungkinkan untuk
direpresentasikan ke dalam bentuk elektronik.

   Komponen Komputer
Di dalam sebuah komputer elektronik terdapat beberapa
komponen/perangkat yang berfungsi untuk mengolah data. Secara umum,

komponen komputer terbagi menjadi 3 (tiga) bagian, yaitu:

   Alat input berfungsi sebagai media untuk memasukkan data ke dalam
komputer. Contoh alat input adalah: keyboard, mouse, microphone, dll.
Alat pemroses di dalam komputer berfungsi untuk melakukan pengolahan
data menjadi informasi. Contoh alat pemroses adalah: prosesor.
Alat output berfungsi sebagai media untuk menyampaikan informasi hasil
pengolahan, bisa dalam bentuk tampilan menggunakan monitor ataupun dalam
bentuk cetakan menggunakan printer.
   Sesungguhnya, komputer itu hanyalah mesin elektronik yang tersusun
atas komponen-komponen di atas. Namun dengan adanya energi listrik dan
perangkat lunak, barulah komponen komputer dapat aktif dan kemudian
digunakan untuk bekerja.
                                                      Algoritma
Kata ‘algoritma’ diturunkan dari nama belakang seorang tokoh
matematikawan Persia bernama Muhammad ibn Musa al-Khuwarizmi (lahir
tahun 730an, meninggal antara tahun 835 dan 850). Al-Khuwarizmi berasal dari propinsi Khorasan di negara yang saat ini bernama Uzbekistan. Uni Soviet menghormati jasa-jasa Al-Khuwarizmi dengan membuat gambar dirinya sebagai perangko.

Algoritma merupakan metode umum yang digunakan untukmenyelesaikan kasus-kasus tertentu [1]. Dalam menuliskan algoritma, dapatdigunakan bahasa natural atau menggunakan notasi matematika, sehingga masih belum dapat dijalankan pada komputer.
   Dalam kehidupan sehari-hari, kita sudah melakukan penyusunan
algoritma untuk menyelesaikan permasalahan atau tantangan yang dihadapi.
Sebagai contoh, pada saat diminta untuk membuat telur dadar. Sebelum
membuat algoritmanya, kita perlu mendefinisikan masukan (input) dan luaran
(output) terlebih dahulu, dimana input berupa telur mentah, dan output berupa
telur dadar yang sudah matang.

Susunan algoritmanya sebagai berikut:
1. Nyalakan api kompor
2. Tuangkan minyak ke dalam wajan
3. Pecahkan telur ayam ke dalam mangkok
4. Tambahkan garam secukupnya
5. Aduk campuran telur dan garam
6. Tuang adonan telur ke dalam wajan
7. Masak telur hingga matang

Algoritma akan lebih baik jika ditulis secara sistematis menggunakan
beberapa skema, dalam buku ini akan dibahas mengenai skema Flowchart dan
Pseudocode.

   Program
Program adalah formulasi sebuah algoritma dalam bentuk bahasa
pemrograman[1], sehingga siap untuk dijalankan pada mesin komputer.
Membuat program seperti memberitahukan apa yang harus dilakukan kepada
orang lain. Sebagai contoh, pada saat kita memberitahukan algoritma
membuat telur dadar kepada orang lain, kita sudah melakukan pemrograman.
Pemrograman membuat telur dadar kepada orang lain akan lebih
mudah karena orang tersebut sudah mengetahui apa itu telur dadar. Pada
langkah yang ke-3 diminta untuk memecahkan telur, bagaimana cara orang
tersebut memecahkan telur tentunya sudah diketahui dan kita tidak perlu
menjelaskan terlalu detil.
Lain halnya jika kita harus menyuruh komputer untuk melakukan apa
yang kita inginkan. Komputer sebenarnya hanyalah sebuah mesin bodoh yang
tidak memiliki emosi dan kemampuan bersosialisasi. Oleh karena itu, untuk
membuatnya menjadi mudah, diperlukan penyusunan algoritma yang benar.
Mendesain algoritma yang benar dan menterjemahkannya ke dalam
bahasa pemrograman bukanlah hal yang mudah karena bahasa pemrograman
memiliki tata penulisan sendiri.

   Bahasa Pemrograman
Bahasa pemrograman adalah bahasa buatan yang digunakan untuk
mengendalikan perilaku dari sebuah mesin, biasanya berupa mesin
komputer[2], sehingga dapat digunakan untuk memberitahu komputer
tentang apa yang harus dilakukan[3].
Struktur bahasa ini memiliki kemiripan dengan bahasa natural manusia,
karena juga tersusun dari elemen-elemen dasar seperti: kata benda dan kata
kerja serta mengikuti aturan untuk menyusunnya menjadi kalimat.

   Klasifikasi Menurut Generasi
1.  First Generation Language (1GL)
     Bahasa pemrograman ini berupa kode-kode mesin yang hanya
     bisa dipahami oleh mikroprosesor.
2.  Second Generation Language (2GL)
     Bahasa pada generasi ini adalah assembly language, dimana bahasa
     ini masih menggunakan kode-kode yang disebut dengan
     mnemonic. Bahasa assembly disebut sebagai generasi kedua karena
     bahasa ini bukan bahasa asli mikroprosesor, meskipun begitu
     programer tetap harus mengetahui keunikan dari masing-masing
     mikroprosesor (register dan jenis instruksi).
3.  Generasi ketiga
     Bahasa pemrograman generasi ketiga sengaja didesain supaya
     mudah dipahami oleh manusia. Pada generasi ini mulai dikenalkan
     istilah variabel, tipe data, ekspresi aljabar dan sudah mendukung
     pemrograman terstruktur.
     Contoh bahasa: FORTRAN, COBOL, ALGOL, BASIC, C, C++,
     Pascal, Java.
4.  Generasi keempat
     Pada generasi ini, bahasa pemrograman didesain untuk
     mengurangi effort dan mempercepat proses pembuatan program.
     Pada 3GL, pembuatan program membutuhkan waktu yang lama
     dan mudah sekali didapati error. Pada 4GL, telah menggunakan
     metodologi dimana sebuah perintah dapat menghasilkan beberapa
     instruksi 3GL yang kompleks dengan sedikit error[4].
     Contoh bahasa:
     a. Pemrograman umum : DataFlex, WinDev, PowerBuilder
     b. Basis data : SQL, Progress 4GL
     c. Manipulasi data, analisis dan pelaporan : ABAP, Matlab,
         PL/SQL.
5. Generasi kelima
    Bahasa pemrograman generasi kelima disebut sebagai constraint-
    programming atau declarative-programming. Program tidak
    dituliskan dalam bentuk algoritma melainkan dituliskan batasan
    atau fakta dari sebuah lingkup masalah, sehingga program akan
    menghasilkan luaran dalam bentuk solusi[5].
    Bahasa pemrograman ini digunakan untuk membangun sistem
    kecerdasan buatan dan belum digunakan secara meluas di dunia
    industri. Contoh bahasa: Prolog, LISP, Mercury.

Klasifikasi Menurut Tingkatan
   1. Low-level programming language
Tingkat bahasa pemrograman ini disebut ”rendah” (low level)
bukan karena posisinya berada di bawah, melainkan karena
kurangnya abstraksi (penggambaran kode instruksi) antara bahasa
natural dengan bahasa mesin. Oleh karena itu, bahasa di tingkat
ini sering disebut sebagai ’bahasa mesin’.
Bahasa pemrograman yang masuk kategori ini adalah bahasa
mesin itu sendiri (1GL) dan bahasa assembly (2GL).
   2. High-level programming language (HLL)
Bahasa pemrograman di tingkat ini memiliki abstraksi yang lebih
banyak dan terdapat kemiripan dengan bahasa natural (bahasa
Inggris), lebih mudah untuk digunakan dan mudah untuk
dipindahkan antar platform.
   3. Very high-level programming language (VHLL)
Bahasa ini memiliki abstraksi yang lebih tinggi dibandingkan HLL,
dan digunakan untuk menunjang produktifitas programer
profesional. Biasanya VHLL digunakan hanya untuk tujuan yang
spesifik, misalnya untuk keperluan bisnis: mengolah data,
membuat laporan, dsb.

   Paradigma Pemrograman
Paradigma pemrograman merupakan sebuah cara pandang seorang
programmer dalam menyelesaikan sebuah masalah dan
memformulasikannya kedalam sebuah bahasa pemrograman. Terdapat
beberapa paradigma pemrograman, antara lain:
   
   Paradigma Imperatif
Inti dari paradigma ini adalah menjalankan sebuah urutan perintah,
jalankan satu perintah kemudian jalankan perintah yang selanjutnya.
Sebuah program imperatif tersusun dari sekumpulan urutan perintah yang
akan dijalankan oleh komputer. Pemrograman prosedural merupakan
salah satu contoh dari paradigma ini, dan seringkali dianggap sebagai
sebuah sebuah paradigma yang sama.
➞ Ide dasarnya adalah dari model komputer Von Neumann.
➞ Eksekusi langkah-langkah komputasi diatur oleh sebuah struktur
kontrol.
➞ Berdasarkan urutan-urutan atau sekuensial.
➟ Program adalah suatu rangkaian prosedur untuk memanipulasi data.
Prosedur merupakan kumpulan instruksi yang dikerjakan secara
berurutan.
➞ Contoh bahasa pemrograman: Fortran, Algol, Pascal, Basic, C

   Paradigma Fungsional
Pemrograman Fungsional adalah sebuah paradigma yang menjadikan
fungsi matematika sebagai penentu dalam eksekusi komputasi. Fungsi
tersebut merupakan dasar utama dari program yang akan dijalankan.
Paradigma ini lebih banyak digunakan di kalangan akademis daripada
produk komersial, terutama yang murni fungsional.
➞ Ide dasar dari matematika dan teori fungsi.
➞ Beberapa contoh bahasa fungsional adalah APL, Erlang, Haskell, Lisp,
ML, Oz dan Scheme.

Paradigma Logika
Umumnya digunakan pada domain yang berhubungan dengan ekstraksi
pengetahuan yang berbasis kepada fakta dan relasi. Dalam paradigma ini,
logika digunakan secara murni untuk representasi bahasa deklaratif yang

kebenarannya ditentukan oleh programmer, sedangkan pembukti-
teorema atau model pembangkit digunakan sebagai pemecah masalah.

➞ Berasal dari pembuktian otomatis didalam intelegensia buatan.
➞ Berdasar kepada aksioma, aturan dan query.
➞ Eksekusi program menjadi proses pencarian secara sistematik dalam
sekumpulan fakta, dengan menggunakan sekumpulan aturan.
➞ Beberapa contoh bahasa pemrograman: ALF, Fril, Gödel, Mercury,
Oz, Ciao, Visual Prolog, XSB, and Prolog

   Paradigma Berorientasi Obyek
Pemrograman berorientasi obyek muncul untuk mengatasi masalah
kompleksitas dari sebuah perangkat lunak sehingga kualitas dari perangkat
lunak tersebut dapat dikelola dengan lebih mudah. Caranya adalah dengan
memperkuat modularity dan reusability didalam perangkat lunak tersebut.
Pemrograman berorientasi obyek menggunakan obyek dan interaksi antar
obyek dalam penyusunan sebuah perangkat lunak. Paradigma ini semakin
banyak digunakan karena lebih mudah dalam menggambarkan kondisi yang
ada pada dunia nyata.
Ide dari interaksi antar obyek yang ada pada dunia nyata.
Antar obyek saling berinteraksi dengan saling mengirimkan pesan
(message) Terdapat beberapa karakteristik utama, yaitu: Abstraksi, Enkapsulasi,
Pewarisan dan Polimorfisme.


~Semoga bermanfaat~