Algoritma dan Bahasa Pemrograman

Leave a Comment
DASAR TEORI

  • Dasar Teori Tentang Algoritma dan Pemrograman
Algoritma adalah salah satu bidang ilmu yang pertama kali ditemukan oleh matematikawan asal Persia yang bernama “Muhammad Ibn Musa Al-Khawarizm”  lahir sekitar tahun 730 M dan meninggal antara tahun 835-850 M. Algoritma merupakan suatu metode atau langkah-langkah umum yang disusun secara sistematis dan logis  yang dugunakan untuk menyelesaikan  masalah atau kasus-kasus tertentu.
Dalam menuliskan algoritma,  dapat  digunakan  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.
Program/Pemrograman adalah formulasi sebuah algoritma dalam bentuk bahasa  pemrograman, 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.
  • Karakteristik Algoritma
  1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. Sebagai contoh, dalam algoritma Euclidean, pada langkah 1, jika n = 0, algoritma berhenti, jika n tidak = 0 maka nilai n selalu berkurang sebagai akibat dari langkah 2 dan 3, dan pada akhirnya nilai n = 0. Program yang tidak pernah berhenti mengindikasikan bahwa program tersebut berisi algoritma yang salah.
  2. Setiap langkah harus di defenisikan dengan tepat dan tidak berarti dua (ambiguous). Pembaca harus mengerti apa yang di maksud dengan “m” dan “n” adalah bilangan bulat tak negatif (-). Contoh lainnya pernyataan ” bagilah p dengan beberapa sejumlah bilangan bulat positif” dapat bermakna ganda. Berapakah yang di maksud dengan “berapa” ? Algoritma menjadi jelas jika langkah tersebut di tulis “bagilah p dengan 10 buah bilangan bulat positif”
  3. Algoritma memiliki nol atau lebih masukan (input). Masukan ialah besaran yang diberikan kepada algoritma untuk di proses. Algoritma Euclidean mempunyai dua buah masukan, yaitu m dan n.
  4. Algoritma mempunya nol atau lebih keluaran (output). Keluaran dapat berupa pesan atau besaran yang memiliki hubungan dengan masukan. Algoritma Euclidean mempunyai 1 keluaran, yaitu m pada langkah 1, yang merupakan pembagi bersama terbesar dari kedua bilangan.
  5. Algoritma harus sangkil (effective). Setiap langkah harus sederhana sehingga dapat di kerjakan dalam sejumlah waktu yang masuk akal.
Algoritma dapat dituliskan ke dalam berbagai bentuk, namun struktur yang rapi dan mengikuti aturan tertentu akan membuat algoritma lebih mudah untuk dibaca dan dipahami. Selanjutnya, algoritma yang telah tersusun rapi akan diimplementasikan ke bahasa pemrograman. Algoritma dapat dituliskan ke dalam berbagai bentuk, namun dan mengikuti aturan tertentu akan membuat algoritma lebih mudah untuk dibaca dan dipahami. Selanjutnya, algoritma yang telah tersusun rapi akan
  • Flowchart
Secara  formal,  flowchart didefinisikan  sebagai  skema penggambaran  dari  algoritma  atau  proses.  Dalam  membuat  algoritma,  diperlukan  suatu  mekanisme atau  alat  bantu  untuk menuangkan hasil pemikiran  mengenai langkah-langkah  penyelesaian  masalah  yang  sistematis  dan terurut.
Pada  dasarnya  untuk  bisa  menyusun  solusi  diperlukan kemampuan  problem-solving yang  baik.  Oleh  karena  itu, sebagai  sarana  untuk  melatih  kemampuan  tersebut  terdapat sebuah  tool (alat) yang dapat digunakan, yakni  flowchart .
Dengan  menggunakan  flowchart,  tahapan-tahapan penting dalam algoritma dapat ditunjukkan dengan diagram di atas. Aliran proses ditunjukkan dengan arah panah atau disebut dengan ’flowlines’. Keuntungan  menggunakan  flowchart adalah penggunaan  diagram  untuk  menggambarkan  tahapan  proses, sehingga  lebih  mudah  dilihat  dan  dipahami.  Namun  demikian, flowchart  juga  memiliki  kelemahan,  yakni  jika  digunakan  untuk menggambarkan  proses  atau  algoritma  untuk  skala  kasus  yang besar, maka akan dibutuhkan banyak kertas.
Simbol-Simbol Flowchart
flowchart
Contoh flowchart membuat telur dadar :
 skem
Pseudocode
Skema  lain  yang  dapat  digunakan  untuk  menyusun algoritma  adalah pseudocode.  Pseudocode adalah  bentuk informal  untuk  mendeskripsikan  algoritma  yang  mengikuti struktur bahasa pemrograman tertentu.
Tujuan dari penggunaan pseudocodeadalah supaya :
  1. lebih mudah dibaca oleh manusia
  2. lebih mudah untuk dipahami
  3. lebih mudah dalam menuangkan ide/hasil pemikiran
Pseudocode sering  digunakan  dalam  buku-buku  tentang ilmu  komputer  ataupun  publikasi  ilmiah  untuk  menjelaskan urutan  proses  atau  metode  tertentu.  Seorang  programer  yang ingin yang ingin menerapkan algoritma tertentu, terutama yang kompleks  atau  algoritma  baru,  biasanya  akan  memulainya dengan membuat deskripsi dalam bentuk  pseudocode. Setelah pseudocode tersebut  jadi,  maka  langkah  selanjutnya  hanya tinggal menterjemahkannya  ke bahasa  pemrograman  tertentu. Pseudocode ini  biasnya  disusun  dalam  bentuk  yang  terstruktur dengan pendekatan sekuensial (berurutan) dari atas ke bawah.
Algoritma  yang  menjelaskan  tentang  proses  membuat telur  dadar,  sebenarnya  sudah  menerapkan  penggunaan pseudocode.  Sesungguhnya  tidak  ada  suatu  standar  untuk menyusun algoritma menggunakan pseudocode. Oleh  karena pseudocode lebih  cocok  digunakan  untuk menyusun  algoritma  dengan  kasus  yang  besar  dan  kompleks, maka sangat dianjurkan kepada programer pemula untuk mulai menggunakan  pseudocode  dalam  menyelesaikan  masalah. Berikut adalah contoh pseudocodeyang dibandingkan dengan bahasa pemrograman C++
not
  • 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.
  1. 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).
  1. 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.
  1. 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.
Contoh bahasa:
  1. Pemrograman  umum  :  DataFlex,  WinDev, PowerBuilder
  2. Basis data : SQL, Progress 4GL
  3. Manipulasi  data,  analisis  dan  pelaporan  :  ABAP, Matlab, PL/SQL.
    1. 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.

  • Langkah – Langkah Pemecahan Masalah
Pemecahan masalah menukarkan isi gelas :
  1. Ambil gelas lagi, anggap saja namanya Gelas “C”
  2. Tuangkan isi gelas “A” ke gelas “C”
  3. Tuangkan isi gelas “B” ke gelas “A”
  4. Terakhir, tuangkan isi gelas “C” ke gelas “A”
Pemecahan masalah Jars Game :
  1. Ambil air dengan guci yang berukuran 5L
  2. Isikan air tersebut kedalam guci yang berukuran 7L
  3. Ambil air lagi menggunakan guci yang berukuran 5L
  4. Isikan kembali air tersebut kedalam guci yang berukuran 7L
  5. Buang semua isi guci yang berukuran 7L
  6. Tuangkan sisa air yang ada di dalam guci berukuran 5L kedalam guci yang berukuran 7L
  7. Ambil air lagi menggunakan guci yang berukuran 5L
  8. Isikan lagi air tersebut kedalam guci yang berukuran 7L
  9. Buang semua air yang ada di guci 7L
  10. Tuangkan sisa air dari guci berukuran 5L kedalam guci berukuran 7L
  11. Ambil lagi air menggunakan guci berukuran 5L
  12. Terakhir, tuangkan air dari guci 5L ke dalam guci 7L.
Pemecahan masalah Game Menyebrangkan Orang
  1. Seberangkan orang no 1 dan 2
  2. Orang no 1 kembali lagi
  3. Seberangkan orang no 4 dan 5
  4. Orang no 2 kembali lagi
  5. Seberangkan orang no 1 dan 3
  6. Orang no 1 kembali lagi
  7. Terakhir, seberangkan orang no 1 dan 3
Pemecahan masalah Canibal Game :
  1. Naikkan 2 orang kanibal kedalam kapal
  2. Seberangkan 2 orang kanibal tersebut
  3. 1 orang kanibal kembali lagi menjemput kanibal yang lain
  4. Seberangkan lagi 2 kanibal tersebut
  5. 1 kanibal kembali lagi
  6. Naikkan 2 orang misionari kedalam kapal
  7. Seberangkan misionari tersebut
  8. 1 misionari kembali lagi dengan 1 kanibal
  9. Naikkan 1 misonari lagi kedalam kapal
  10. Seberangkan 2 misonari tersebut
  11. Turunkan kedua misionari tersebut
  12. Naikkan 1 kanibal yang ada di seberang kedalam kapal
  13. Seberangkan kanibal tersebut untuk menjemput temannya
  14. Naikkan 1 kanibal kedalam kapal
  15. Seberangkan kanibal tersebut
  16. Turunkan 1 kanibal, satunya kembali lagi untuk menjemput temannya
  17. Naikkan kanibal terakhir kedalam kapal
  18. Seberangkan kanibal-kanibal tersebut
  19. Terakhir, turunkan dua-duanya.
Pemecahan masalah Wolf Game :
  1. Naikkan kambing ke dalam kapal
  2. Seberangkan kapal
  3. Turunkan kambing tersebut
  4. Petani kembali lagi
  5. Naikkan kubis kedalam kapal
  6. Sebrangkan kapal
  7. Turunkan kubis
  8. Naikkan kambing
  9. Petani kembali lagi dengan kambing
  10. Turunkan kambing
  11. Naikkan anjing ke dalam kapal
  12. Sebrangkan kapal
  13. Turunkan anjing tersebut
  14. Petani kembali lagi
  15. Naikkan kambing ke dalam kapal
  16. Seberangkan kapal
  17. Terakhir, Tutunkan kambing dari kapal


0 komentar:

Posting Komentar