Pendahuluan

Bab. 1
Pendahuluan


Komputer adalah alat bantu untuk menyelesaikan masalah, tetapi masalah yang ingin diselesaikan tidak dapat langsung “disodorkan” begitu saja ke komputer. 
Sebagai contoh, jika kita mempunyai data nilai ujian sekumpulan mahasiswa kemudian akan mengurutkan semua data tersebut dari nilai tertinggi hingga terendah. 
Misalkan anda ketikkan semua nilai ujian dengan sebuah program pengolah kata (word processor) lalu dibawahnya dituliskan perintah kepada komputer untuk mengurutkannya sebagai berikut:
    30, 27, 86, 45, 81, 63, 95, …….,  67
    Urutkan dari nilai terbesar hingga nilai terkecil !!
Dan anda tunggu hasilnya. Apakah komputer mengerjakan masalah pengurutan tersebut ????
 
Tentu saja tidak akan dikerjakan, karena komputer tidak “mengerti” perintah anda diatas dan tidak “tahu” bagaimana cara mengurutkan sekumpulan nilai tersebut.
Agar komputer dapat menyelesaikan masalah anda, maka anda perlu merumuskan langkah-langkah penyelesaian masalah itu dalam suatu rangkaian instruksi. Komputerlah yang nantinya mengerjakan rangkaian instruksi tersebut, karena komputer dapat mengerjakannya dengan cepat, akurat, bahkan berulang-ulang tanpa kenal lelah dan bosan. 
Sekumpulan instruksi yang merupakan penyelesaian masalah itu dinamakan program. Program “dimasukkan” ke dalam komputer, komputer mengerjakan instruksi-instruksi di dalam program tersebut, lalu memberikan hasil atau keluaran yang diinginkan.
 
Misalkan program yang berisi rangkaian insturksi untuk mengurutkan sekumpulan data tersebut anda rumuskan sebagai berikut: 
Langkah 1 :
Cari nilai terbesar di antara N buah data
Langkah 2 :
Tempatkan nilai terbesar tersebut pada posisi yang tepat (dengan cara mempertukarkan)
Langkah 3:
Ulangi langkah 1 untuk N – 1 buah data yang lain


Setelah anda membuat rangkaian instruksi-instruksi (program) tersebut, tetapi komputer tetap belum dapat melaksanakan program  yang telah dibuat tadi karena bahasa yang anda gunakan untuk menulis program tidak dapat dipahami oleh komputer. 
Agar program dapat dilaksanakan komputer maka program tersebut harus ditulis dalam suatu bahasa yang “dimengerti” oleh komputer. Sebagaimana dalam kehidupan manusia, kita hanya dapat memberikan perintah kepada orang lain dalam bahasa yang ia mengerti. 
Karena komputer adalah mesin, maka program harus ditulis dalam bahasa yang khusus dibuat untuk “berkomunikasi” dengan komputer. Bahasa komputer yang digunakan dalam menulis program dinamakan bahasa pemrograman.


Salah satu bahasa pemrograman adalah Bahasa Pascal. Andaikanlah anda sudah mempelajari Bahasa Pascal, maka anda dapat menuliskan langkah-langkah mengurutkan sekumpulan data dalam sebuah program sebagai berikut
Pascal hanya salah satu bahasa pemrograman dari sekian banyak bahasa pemrograman. Adapun bahasa pemrograman lain diantaranya adalah basic, c, c++, cobol , fortran, clipher, foxpro dll. 
Penggolongan bahasa pemrograman:
1.Bahasa tingkat rendah (low level language)
bahasa yang “primitif” atau karena bahasanya lebih “dekat” ke bahasa mesin dan sulit untuk dipahami. Ex: Assambler.

2. Bahasa tingkat tinggi (high level language)
bahasa yang mudah dipahami karena orientasi lebih dekat ke bahasa manusia (inggris) sehingga relatif mudah dipelajari oleh pemrogram (orang yang menulis program komputer)

Pada mulanya orang mempelajari suatu bahasa pemrograman melalui aturan tata bahasa, sebuah bahasa yang sama dapat mempunyai beberapa versi (sesuai perkembangannya), dan setiap versi dirancang untuk komputer atau lingkungan sistem operasi tertentu. Antara satu versi bahasa dengan versi lainnya terdapat beberapa perbedaan.
Jadi, agar program dapat dijalankan pada komputer lain, pemrogram harus menulis program dalam versi bahasa yang sesuai dengan komputer tersebut. Dengan kata lain, pemrogram sangat terikat dengan aturan bahasa dan spesifikasi mesin yang akan menjalankannya.
Saat ini, orang tidak lagi memecahkan masalah dengan langsung menulis programnya dalam bahasa pemrograman. Orang mulai memikirkan suatu cara penyelesaian masalah yang akan diprogram dengan menekankan pada desain atau rancangan yang mewakili pemecahan masalah tersebut.
Desain ini independen dari bahasa pemrograman yang digunakan. Desain menyajikan cara berpikir si pemrogram dalam menyelesaikan masalah. Desain berisi urutan langkah-langkah pencapaian solusi yang ditulis dalam notasi-notasi deskriptif.
Urutan langkah-langkah yang sistematis untuk menyelesaikan sebuah masalah dinamakan algoritma. Perhatikanlah bahwa teks dibawah ini adalah contoh sebuat algoritma (meskipun belum terlalu rinci), yaitu algoritma mengurutkan sekumpulan data
Algoritma PENGURUTAN
Langkah 1 :
Cari nilai terbesar di antara N buah data
Langkah 2 :
Tempatkan nilai terbesar tersebut pada posisi yang tepat (dengan cara mempertukarkan)
Langkah 3:
Ulangi langkah 1 untuk N – 1 buah data yang lain
Notasi yang digunakan untuk menuliskan algoritma disebut notasi algoritma. Notasi algoritma pengurutan diatas ditulis dalam Bahasa Indonesia. Notasi algoritma bukan notasi bahasa pemrograman, karena itu program dalam notasi algoritma tidak dapat dijalan oleh komputer. Agar dijalankan harus ditranslasikan kedalam bahasa pemrograman yang dipilih.

Apakah Algoritma Itu ??????

Ditinjau  dari  asal  usul  katanya  kata  Algoritma  sendiri  mempunyai  sejarah  yang  aneh.  Orang  hanya  menemukan  kata Algorism  yang  berarti  proses menghitung  dengan  angka  arab.  Para ahli bahasa berusaha menemukan asal kata  ini namun hasilnya kurang  memuaskan.
Akhirnya  para  ahli  sejarah  matematika  menemukan  asal  kata tersebut yang berasal dari nama seorang ahli matematika dari Uzbekistan Abu Abdullah Muhammad  Ibnu  Musa  Al-Khuwarizmi  (770-840). Al-Khuwarizmi  dibaca  orang  barat  menjadi  Algorism.
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  itu kita  juga memperoleh akar kata “Aljabar”  (Algebra).
Perubahan  kata  dari  Algorism  menjadi  Algorithm  muncul  karena  kata  Algorism  sering dikelirukan  dengan  Arithmetic,  sehingga  akhiran  –sm  berubah  menjadi  –thm.  Karena perhitungan dengan angka Arab  sudah menjadi hal  yang biasa. Maka  lambat  laun kata Algorithm  berangsur-angsur  dipakai  sebagai  metode  perhitungan  (komputasi)  secara umum,  sehingga  kehilangan  makna  kata  aslinya.  Dalam  Bahasa  Indonesia,  kata Algorithm diserap menjadi Algoritma.
Definisi:
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sitematis.
Kamus  Besar  Bahasa  Indonesia  (KBBI) terbitan Balai  Pustaka  1988 secara  formal  mendefinisikan algoritma sebagai: Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah
Kata logis merupakan kata kunci dalam sebuah algoritma. Langkah-langkah di dalam algoritma harus logis, hal ini berarti urutan langkah-langkah tersebut harus dapat ditentukan benar atau salah.

Algoritma Merupakan Jantung Ilmu Informatika

Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer yang diacu dalam terminologi algoritma. Namun jangan beranggapan algoritma selalu identik dengan ilmu komputer saja.
Dalam kehidupan sehari-haripun banyak terdapat proses yang digambarkan dalam suatu algoritma. Ex: Cara-cara membuat kue atau masakan.
Pada setiap resep selalu ada urutan langkah-langkah membuat masakan. Bila langkah-langkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba resep suatu masakan akan membaca satu persatu langkah pembuatannya, lalu ia mengerjakan proses sesuai yang ia baca.
Secara umum, pihak yang mengerjakan proses disebut pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer, robot, atau alat mekanik/elektronik lainnya.
Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami. Sedangkan belajar bahasa pemrograman belajar bahasa pemrograman berarti belajar memakai suatu bahasa, aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.
Sampai saat ini terdapat puluhan bahasa pemrograman, antara lain bahasa rakitan (assembly), fortran, cobol, ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, PERL, JAVA dan banyak lagi.
Berdasarkan terapannya, bahasa pemrograman dapat digolongkan atas 2 kelompok besar:
1.        Bahasa pemrograman bertujuan khusus.
Diantaranya: Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan) dsb.
2.        Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi, seperti: Pascal, Basic, C, Java dll

1.        Bahasa pemrograman bertujuan khusus.
Diantaranya: Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan) dsb.
2.        Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi, seperti: Pascal, Basic, C, Java dll

Notasi Algoritma Independen Terhadap
Bahasa Pemrograman dan Mesin Komputer

Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis dalam bahasa manapun dan apapun bahasanya kue yang dihasilkan tetap sama, sebab algoritmanya sama (dengan catatan semua aturan pada resep diikuti).
Mengapa bisa demikian???... Karena setiap juru masak (yang merupakan pemroses) mampu melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula dsb. Jadi, resep membuat kue tidak terikat pada bahasa dan juru masak yang mengerjakannya.
Demikian pula halnya komputer, Meskipun setiap komputer berbeda teknologinya, tetapi secara umum semua komputer dapat melakukan operasi dasar dalam pemrograman seperti operasi pembacaan data, operasi  perbandingan, operasi aritmetika dan sebagainya.
Perkembangan teknologi komputer tidak mengubah operasi-operasi dasar itu, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian.

Notasi Algoritma Independen Terhadap
Bahasa Pemrograman dan Mesin Komputer

Notasi algoritma bukan notasi bahasa pemrograman, sehingga siapa pun dapat membuat notasi algoritma yang berbeda. Hal yang penting mengenai notasi tersebut adalah mudah dibaca dan dimengerti. Selain itu, meskipun notasi algoritma bukan notasi baku sebagaimana pada notasi bahasa pemrograman, ketaatasasan terhadap notasi perlu diperhatikan untuk menghindari kekeliruan.
Berikut beberapa notasi yang digunakan dalam penulisan algoritma
1.        Notasi I : Menyatakan langkah-langkah algoritma dengan untaian kalimat deskriptif
Dengan notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan bahasa yang gamblang.  Notasi ini cocok untuk algoritma yang pendek, namun untuk masalah yang algoritmanya besar notasi ini kurang cocok untuk digunakan. Selain itu, pengkonversian notasi algoritma ke notasi bahasa pemrograman cenderung relatif sukar.
2. Notasi II : Menggunakan diagram alir (flow chart)
Diagram alir populer pada awal-awal era pemrograman dengan komputer (terutama dengan bahasa Basic, Fortran, dan Cobol) dan sampai saat ini masih digunakan. Diagram alir lebih menggambarkan aliran instruksi di dalam program secara visual. Notasi  algoritma dengan diagram alir cocok untuk  masalah yang kecil, tidak cocok untuk masalah yang besar  karena membutuhkan berlembar halaman kertas. Selain itu, pengkonversian notasi algoritma ke notasi bahasa pemrograman cendrung relatif sukar 
Notasi Algoritma dengan flow chart

Bagan alir  (flowchart) adalah bagan  (chart) yang menunjukkan alir  (flow) di dalam program atau prosedur sistem secara logika. Bagan alir digunakan terutama untuk alat bantu komunikasi dan untuk dokumentasi.
System Flow chart

System flowchart dapat didefinisikan sebagai bagan yang menunjukkan arus pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urut-urutan dari prosedur-prosedur yang ada di dalam sistem. Bagan alir sistem menunjukkan apa yang dikerjakan di sistem.
Document flow chart

Bagan alir dokumen  (document flowchart)  atau disebut juga bagan alir formulir  (form  flowchart)  atau  paperwork flowchart merupakan bagan alir yang menunjukkan arus dari laporan dan formulir termasuk tembusan-tembusannya.

Notasi Algoritma dengan pseudo-code
Pseudocode (pseudo artinya semu atau tidak sebenarnya) adalah notasi yang menyerupai notaha bahasa pemrograman tingkat tinggi, khususnya bahasa Pascal dan C. Keuntungan menggunakan notasi Pseudocode adalah kemudahan mengkonversinya ke notasi bahasa pemrograman

Menilai Sebuah Algoritma

Ketika  manusia  berusaha  memecahkan  masalah,  metode  atau  teknik  yang digunakan  untuk  memecahkan  masalah  kemungkinan  bisa  lebih  dari  satu.  Dan  kita memilih  mana  yang  terbaik  diantara  teknik-teknik  itu.  Hal  ini  sama  juga  dengan algoritma,  yang  memungkinkan  suatu  permasalahan  dipecahkan  dengan  metode  dan logika yang berlainan. Lalu bagaimana mengukur mana algoritma yang terbaik ? …
Beberapa persyaratan untuk menjadi algoritma yang baik adalah:
=>            Tingkat kepercayaannya tinggi (realibility).
      =>        Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
=>            Pemrosesan  yang  efisien  (low  cost).
                Proses  harus  diselesaikan  secepat  mungkin dan jumlah kalkulasi yang sependek mungkin.
=>            Bersifat  general.
                Bukan  sesuatu  yang  hanya  untuk menyelesaikan  satu  kasus saja, tapi juga untuk kasus lain yang lebih general.
=>            Bisa  dikembangkan  (expandable).
                Haruslah  sesuatu  yang  dapat  kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
=>            Mudah dimengerti.
                Siapapun yang melihat, dia akan bisa memahami algoritma anda. Sulit dimengertinya suatu program akan membuat sulit pengelolaan.
=>            Portabilitas yang  tinggi  (portability).
                Bisa dengan mudah diimplementasikan di berbagai platform komputer