ALGORITMA & STRUKTUR DATA

PENDAHULUAN ALGORITMA & STRUKTUR
DATA


Algoritma berasal dari kata algoris dan ritmis yang pertama kali diungkapkan oleh Abu Ja’far Mohammad Ibn Musa Al Khowarizmi (825M) dalam buku Al-Jabr Wa-al Muqobla.

Algoritma dapat didefinisikan sebagai urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis untuk mencapai tujuan tertentu. Kata logis berarti bahwa nilai kebenarannya harus dapat ditentukan, benar atau salah. Langkah-langkah yang tidak benar dapat memberikan hasil yang salah. 



Contoh :  
Misalkan terdapat dua buah gelas, gelas A  dan gelas B. Gelas A berisi air berwarna merah dan gelas B berisi air berwarna biru, kita ingin menukarkan isi air kedua gelas tersebut, sehingga gelas A berisi air berwarna biru dan gelas B berisi air berwarna merah. 



Algoritma diatas tidak menghasilkan pertukaran yang benar, langkah-langkahnya tidak logis, karena yang terjadi bukan pertukaran tetapi percampuran antara air di gelas A dengan air di gelas B. Sehingga algoritma Tukar Isi Gelas diatas Salah.
Dari permasalahan diatas algoritma yang benar adalah bahwa untuk menukarkan isi air pada gelas A dengan isi air pada gelas B maka dibutuhkan sebuah gelas bantuan yang dipakai untuk menampung salah satu air dalam gelas tersebut misalkan gelas C. 



Algoritma : Rangkaian langkah-langkah/alur pikiran untuk menyelesaikan suatu masalah yang sifatnya logis dan sistimatis

Sifat-sifat Algoritma :
ü  Definiteness (jelas) : Mudah dibaca/jelas maksudnya (tiap langkah jelas uraiannya) dan tidak ambigu
ü  Finiteness: Berawal dan berakhir
ü  Input : Tidak harus ada data masukan yang dimasukkan dari luar
ü  Output : Paling tidak harus ada satu keluaran
ü  Effectiveness: Tiap instruksi harus efektif (tepat dan efisien)

Bahasa pemrograman : 
Bahasa komputer yang digunakan dalam penulisan program

Pemrogram/Programmer : 
Orang yang membuat program komputer

Pemrograman :
Kegiatan merancang atau menulis program computer




KELOMPOK BAHASA PEMROGRAMAN

1.      Bahasa Tingkat Rendah (Low Level Language), bahasa yang berorientasi pada mesin. Pemrogram dengan bahasa ini harus berpikir berdasarkan logika mesin berpikir, sehingga bahasa ini kurang fleksibel dan sulit dipahami. Contoh : Bahasa mesin, Bahasa rakitan (assembly).
2.      Bahasa Tingkat Menengah (Middle Level Language), bahasa pemrograman yang menggunakan aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan standar yang mudah dipahami manusia serta memiliki instruksi-instruksi tertentu yang langsung bisa diakses oleh komputer.
3.      Bahasa Tingkat Tinggi (Hight Level Language), bahasa pemrograman yang menggunakan aturan-aturan gramatikal dalam penulisan  ekspresi  atau pernyataan dengan standar bahasa yang langsung dapat dipahami oleh manusia. Contoh : Pascal, C/C++, Delphi, Visual Basic

Interpreter dan Compiller

Agar komputer memahami program yang disusun dengan bahasa pemrograman, maka dibutuhkan suatu penerjemah yaitu Interpreter dan Compiller. 
      Interpreter  merupakan penerjemah bahasa  pemrograman yang menerjemahkan instruksi demi instruksi pada saat eksekusi program. Pada saat penerjemahan interpreter akan memeriksa sintaksis (sintak program), semantik (arti perintah), dan kebenaran logika. Jika ditemukan kesalahan sintaksis (syntak error) maka interpreter akan menampilkan pesan kesalahan dan eksekusi program langsung terhenti.
      Compiler merupakan penerjemah bahasa pemrograman yang menerjemahkan instruksi-instruksi dalam satu kesatuan modul ke dalam bahasa mesin (objek program), kemudian objek program akan mengalami  linking yang berfungsi untuk menggabungkan modul-modul tersebut dengan modul-modul lain yang berkaitan seperti data tentang karakteristik mesin, file-file pustaka atau objek program lainnya yang berkaitan dengan objek lainnya menghasilkan file Executable program yang akan dieksekusi oleh komputer. 


Langkah Pemecahan Masalah

(1)  Inisiasi solusi secara umum:
1.      Deskripsi masalah, 
2.      Merancang algoritma-algoritma untuk memecahkan masalah (bisa lebih dari satu solusi untuk satu permasalahan) dan 
3.      Menekankan pada ketepatan solusi

(2)  Analisa algoritma :
1.      Menekankan pada efisiensi seperti efisiensi waktu dan efisiensi ruang
2.      Melakukan analisa algoritma dari solusi-solusi yang dirancang
3.      Memilih metode struktur data yang tepat
Contoh: analisis kompleksitas algoritma  (Asymptotic Analysis) untuk membandingkan dua metode sorting, yakni insertion sort dan merge sort (akan dijelaskan di pertemuan berikutnya)

(3)  Implementasi solusi
1.      Menggambar flowchart dan atau menulis pseudocode
2.      Menerjemahkan ke dalam bahasa pemrograman tertentu
3.      Melakukan pengujian (debugging) dan perbaikan program

Standar Program yang Baik

1.  Standar Penyusunan Program
a.       Kebenaran logika
b.      Waktu untuk penulisan program 
c.       Kecepatan maksimum eksekusi program 
d.      Ekspresi penggunaan memori 
e.       User friendly (bisa dikembangkan programmer developer lain)
f.        Portability (instalasi dan inisiasi mudah) 
g.      Pemrograman Modular (memudahkan perawatan)
2.  Standar Perawatan Program
a.       Dokumentasi pemakaian untuk pengguna
b.      Dokumentasi pengembangan untuk programmer (biasanya berbentuk komentar- komentar pada source code program) 
c.       Konvensi penulisan instruksi (memudahkan pengerjaan program oleh programmer lain) 

STRUKTUR DASAR ALGORITMA

Algoritma berupa langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut yaitu :
1.       Sequence Structure (struktur runtunan) 
Digunakan untuk program yang instruksinya sequential/urutan. 
2.       Selection Structure (struktur percabangan) 
Digunakan untuk program yang menggunakan pilihan/penyeleksian kondisi .
3.       Repetition Structure (struktur perulangan) 
Digunakan untuk program yang instruksinya akan dieksekusi berulang-ulang.

NOTASI ALGORITMIK

Notasi Algoritmik bukan notasi bahasa pemrograman sehingga siapapun dapat membuat notasi algoritmik yang berbeda. Namun demikian ketaatan atas notasi perlu diperhatikan untuk menghindari kekeliruan.Beberapa notasi yang digunakan untuk menulis algoritma :
1)      Untaian kalimat deskriptif, dimana setiap langkah dinyatakan dengan bahasa yang gamblang/jelas
2)      Menggunakan diagram alir (flow chart)
3)      Menggunakan pseudo-code
Pseudo : semu, tidak sebenarnya, pura-pura; adalah notasi yang menyerupai notasi bahasa pemrograman tingkat tinggi

Contoh Penyajian Algoritma


Contoh 1 : Algoritma untuk mencari rata-rata dari 3 bilangan bulat yang diinputkan:
a.         Algoritma dengan struktur bahasa Indonesia 
             1)        Baca bilangan a, b, dan c 

2)        Jumlahkan ketiga bilangan tersebut 
3)        Bagi jumlahnya dengan 3 
4)        Tulis hasilnya

b.         Algoritma dengan pseudocode

Algoritma CARI_RERATA a, b, c, Jml: integer
Rerata : real
Input (a,b,c) 
Jml <- a+b+c 
Rerata <- Jml/3
Output (Rerata)
c.         Algoritma dengan flowchart


Conto2 : Algoritma untuk mencari luas lingkaran :
a.      Algoritma dengan struktur bahasa Indonesia 

1)      Beri nilai phi dengan 3.14 
2)      Masukkan jari-jari lingkaran 
3)      Kalikan phi dengan kuadrat dari jari-jarinya  4) Tulis hasilnya 
b.      Algoritma dengan pseudocode
      Algoritma LUAS_LINGKARAN phi, L, R : real phi <- 3.14  Input(R) 

L <- phi * R^2 
Output(L) 

c.      Algoritma dengan flowchart

Flowchart

Flowchart (bagan alir) adalah suatu bagan yang menggambarkan/mempresentasikan suatu algoritma/prosedur untuk menyelesaikan masalah. 
Flowchart ada dua macam : 
a.       Flowchart System
b.      Flowchart Program

Flowchart System

Yaitu bagan yang menggambarkan suatu prosedur dan proses suatu file dalam
suatu media menjadi file dalam media yang lain dalam suatu sistem data. 
Simbol yang digunakan :












Flowchart Program

Yaitu bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah.
Sibol – symbol Diagram Alir (Flowchart )Program
  

Pseudocode

Mempermudah pembuatan program Independen dari berbagai bahasa  pemrograman. Notasinotasinya bisa diterjemahkan ke berbagai bahasa pemrograman
Teks algoritma (pseudo-code) terdiri dari :
a)      Head / Kepala algoritma (Judul) : memberikan nama pada algoritma; umumnya nama sudah dapat memberi gambaran pada prosedur penyelesaian masalah atau masalah yang akan diselesaikan
b)      Deklarasi : menyatakan jenis dari setiap elemen data (variabel) yang akan digunakan dalam algoritma.
c)      Deskripsi : merupakan inti prosedur penyelesaian masalah; meliputi pernyataan/operasi, fungsi, penjelasan,dll.

Konversi ke bahasa C

/* Program Hitung Rerata                       */
/* Menghitung nilai rerata sekumpulan bilangan */
/* bulat yang dibaca dari keyboard             */
#include <stdio.h> main()
{
  /*Deklarasi*/   int x, n, k, jumlah;   float rerata;   /*Deskripsi*/
  printf(“Masukkan jumlah data: “);   scanf(“%d”, &n);   k = 1;   jumlah = 0;   while (k <= n){    printf(“x = ? “);     scanf(“%d”, &x);     jumlah = jumlah = x;     k++;   } 
  rerata = (float) jumlah/n;
  printf(“Rerata seluruh data = %f”, rerata);
}

Share:

0 komentar