Google Support

Minggu, 11 November 2012

Dasar Algoritma dan Struktur Data

Dasar Algoritma dan Struktur Data

         Sebuah sistem komputer terdiri dari Hardware (perangkat keras) , Software (perangkat lunak) dan Brainware, sedangkan Software dapat dikelompokkan menjadi Operating System Software, Programming Language Software dan Application Program Software.
Cara mendeskripsikan masalah dengan komputer :
         menjabarkan masalah
         merinci langkah untuk menyelesaikan masalah
         membuat sarana interaksi manusia-komputer

Tranformasi masalah menjadi program komputer diperlukan:
         bentuk urutan masalah
         bahasa yang dipakai
         konsep mesin computer
          
Apakah Algoritma itu?

         Algorism  à algorithm
         nama penulis buku Arab yaitu Abu Ja’far Muhammad ibnu Musa Al-Khuwarizmi
         Algoritma adalah:
        penyusunaan aspek proses logika dari suatu pemecahan masalah tanpa melihat karakteristik bahasa pemrograman yang akan digunakan
        urutan notasi logika yang merupakan hasil analisis dan rancangan sistematik dari strategi pemecahan masalah, untuk menggambarkan urutan langkah kerja yang jika dikerjakan akan membawa ke tujuannya.
urutan logika langkah kerja untuk menyelesaikan suatu masalah.

Notasi Algoritma
         Notasi I   : untaian kalimat deskriptif
         Notasi II  : diagram alir (flow chart)
         Notasi III : pseudo-code


Notasi I :

Algoritma Luas_Persegipanjang
     Menghitung luas persegipanjang dengan memasukkan nilai lebar dan panjang persegipanjang
Deklarasi
      luas,panjang,lebar : bil. bulat
Deskripsi
  1. Masukkan nilai lebar dan panjang
  2. Hitung luas sama dengan panjang kali lebar
  3. Tampilkan luas

Notasi II :

Notasi III :

Algoritma Luas_Persegipanjang
{ Menghitung luas persegipanjang dengan memasukkan nilai lebar dan panjang persegipanjang}
Kamus:
             luas, panjang, lebar : integer
Algoritma:
input(panjang,lebar)
luas ß panjang * lebar
output(luas)

Definisi Program/Pemrograman
         Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang dibuat oleh programmer (pembuat program)
         Program adalah kumpulan instruksi atau perintah yang disusun sedemikian rupa sehingga mempunyai urutan nalar yang tepat untuk menyelesaikan suatu persoalan. (Menurut P. Insap Santosa)
         Instruksi (statement) yang dimaksud adalah syntax (cara penulisan) sesuai dengan bahasa pemrograman yang digunakan yang mempunyai komponen-komponen : Input, Output, Proses, Percabangan dan Perulangan.

Belajar Memrogram Vs Belajar Bahasa Pemrograman
         Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.
         Belajar bahasa pemrograman berarti belajar memakai suatu bahasa, aturan-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.

Belajar Memprogram
         belajar bahasa pemrograman
         belajar tentang strategi pemecahan masalah, metodologi dan sistematika pemecahan masalah kemudian menuliskannya dalam notasi yang disepakati bersama
         bersifat pemahaman persoalan, analisis dan sintesis
         titik berat : designer program

Belajar Bahasa Pemrograman
         belajar memakai suatu bahasa pemrograman, aturan sintaks, tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa
         titik berat : coder


Bahasa Pemrograman
         Adalah alat untuk membuat program
         Contoh: C, C++, C#, Pascal, Basic, Perl, PHP, ASP, JHP, Java, dll.
         Perbedaan: cara memberikan instruksi
         Persamaan: bertujuan menghasilkan output yang sama

Syarat-syarat sebuah Program yang baik:
  1. benar
  2. berlaku umum untuk beragam data (valid)
  3. mudah dibaca
  4. mudah dimodifikasi dan dikembangkan
  5. efisiensi dalam penggunaan ruang dan waktu (kompleksitas rendah)
  6. cepat dalam mengakses
  7. handal/reliability
Bahasa pemrogram dibedakan berdasarkan
tujuan dan fungsinya  diantaranya :



Beberapa Paradigma dalam Pemrograman
         Prosedural / Terstruktur
         Paradigma Fungsional
         Paradigma Deklaratif / Logika
         Paradigma Object-Oriented
         Paradigma Konkruen
Ø  sarana object-oriented à event-programming.


Paradigma Pemrograman

         Pemrograman Prosedural
        Berdasarkan urutan-urutan, sekuensial
        Program adalah suatu rangkaian prosedur untuk memanipulasi data.  Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan.
        Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.

         Pemrograman Fungsional
        Berdasarkan teori fungsi matematika
        Fungsi merupakan dasar utama program.

         Pemrograman Terstruktur
        Secara berurutan dan terstrukrtur.
        Program dapat dibagai-bagi menjadi prosedur dan fungsi.
        Contoh: PASCAL dan C

         Pemrograman Modular
        Pemrograman ini membentuk banyak modul.
        Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
        Sebuah program dapat merupakan kumpulan modul-modul.
        Contoh: MODULA-2 atau ADA

Paradigma Pemrograman (lanjutan)

         Pemrograman Berorientasi Obyek
        Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/property dan method/event/prosedur yang dapat dimanipulasi
        Contoh: C++, Object Pascal, dan Java.

         Pemrograman Berorientasi Fungsi
        Pemrograman ini berfokus pada suatu fungsi tertentu saja.  Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.
        Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
         
         Pemrograman Deklaratif
        Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
        Contoh: PROLOG




Pemrograman Prosedural

Algoritma berisi urutan langkah-langkah penyelesaian masalah à proses yang prosedural.
Definisi Prosedural menurut Kamus Besar Bahasa Indonesia:

1. Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas.
2. Metode langkah demi langkah secara eksak dalam memecahkan suatu masalah.
program dibedakan antara bagian data dengan bagian instruksi.

      Bagian instruksi terdiri atas runtutan (sequence) instruksi yang dilaksanakan satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional.
      Data yang disimpan di dalam memori dimanipulasi oleh instruksi secara beruntun atau prosedural.

Paradigma Object-Oriented

       mengkonstruksi program dari objek-objek dalam ruang lingkup masalahnya.
       sekumpulan objek yang mempunyai sifat yang sama. Dapat menjadi sebuah kelas. Sebuah kelas mempunyai attribute (sekumpulan sifat/ciri).
       menawarkan konsep modularitas, penggunaan ulang, dan kemudahan modifikasi.

Pemrograman Berorientasi Objek (PBO)

       Kerangka berpikir PBO berbeda dengan pemrograman tradisional.
      Pemrograman tradisional : memisahkan antara data, dan prosedur yang mengolah data tersebut.
      PBO : data dan prosedur ini dipadukan sebagai sebuah obyek.
======================================================================

Materi 2
 NOTASI ALGORITMIK
Algoritma disusun berdasarkan 3 bagian, antara lain :
1.      Judul Algoritma
2.      Kamus / Deklarasi
3.      Algoritma / Deskripsi

Format Syntax Algoritma
JUDUL ALGORITMA          Nama Algoritma        
DEKLARASI/                        Type namatipe : tipe [subrange]
                                                Type namatipe : array [min..maks] of tipe
                                                Namavar          : tipe
                                                Namavar          : array [ min..maks] of tipe
                                                Const nama     = nilai
                                                Procedure namaproc(daftar_nama_parameter:tipe)
DESKRIPSI                           Notasi Assigment
                                                Notasi Kondisional/Pemilihan
                                                Notasi Pengulangan
                                                Notasi Pemanggilan

URAIAN ALGORITMA      Kumpulan algoritma masing-masing Procedure ataupun
                                                Function yang dipanggil dari Tubuh Algoritma

Algoritma untuk menulis Hello world:
Algoritma Hello_world
{ program untuk mencetak “Hello world”}
Kamus:
  {tidak ada}
Algoritma:
   Output(“Hello world”)

Algoritma untuk menghitung luas segitiga:
LuasSegi3
 {algoritma untuk menghitung luas segitiga dengan
  diketahui alas dan tingginya}
KAMUS:
  panjang,lebar : integer
  luas                : real
ALGORITMA:
  panjang  ß 10
  lebar ß 5
  luas ß 0.5*alas * tinggi
  output(“Luas Segitiga : “,luas)

Translasi Teks Algoritma ke dalam Teks Program Bahasa C++

No
1
2
3
4
2
Algoritma
C++
#include <nama_unit>

CONST
namaconst = nilai
#define namaconst  nilai

TYPE namatipe : tipedata
Typedef tipedata namatipe;

namavar : tipedata
namavar : namatipe
tipedata namavar;
namatipe namavar;

#define namaconst  nilai




CONTOH

1
#include <iostream.h>
2
CONST
   phi = 3.14
#define phi 3.14
3
TYPE
   jumlah : integer
Typedef  int jumlah;
4
n : integer
n : jumlah
int n;
jumlah n;




Translasi Notasi Pengendalian (lanjutan)

No
 Algoritma
C++
5
IF (kondisi) THEN
    aksi1
ELSE
    aksi2
ENDIF
If (kondisi)
    aksi1;
else
    aksi2;
atau

If (kondisi)
 {
   aksi1;
 }
 else
 { 
   aksi2;
 }






6
DEPEND ON <ekspresi>
  <ekspresi 1> : aksi_1
  <ekspresi 2> : aksi_2
         :
  <ekspresi n> : aksi_n
ENDDEPEND
atau
CASE namavarcase OF
   expkonstan 1 : aksi_1
   expkonstan 2 : aksi_2
          :
   expkonstan n : aksi_n
ELSE
   aksi_lain
ENDCASE
Switch (ekspresi)
{
  case nilai1:
             aksi_1;
             break;
  case nilai2:
             aksi_2;
             break;
              :
  case nilain:
            aksi_n;
            break;
  default: aksi_lain;
}



 Algoritma
C++
7
[inisialisasi]
WHILE (kondisi_ulang) DO
      daftar_aksi
      {ada aksi thd var kondisi}
ENDWHILE
[inisialisasi]
while (kondisi_ulang)
{
     daftar_aksi;
     /*ada aksi thd var kondisi*/
}
8
[inisialisasi]
REPEAT
     daftar_aksi
     {ada aksi thd var kondisi}
UNTIL (kondisi_stop)
[inisialisasi]
do
 {
     daftar_aksi;
    /*ada aksi thd var kondisi*/
 }while (kondisi_ulang);

 Algoritma
9
namavar TRAVERSAL [awal..akhir]
     daftar_aksi;
atau
FOR var ß awal TO/DOWNTO akhir STEP counter DO
          daftar_aksi
ENDFOR
C++
for(awal;kondisiulang;step)
{
    daftar_aksi;
}









Contoh Algoritma

Algoritma Luas_Lingkaran
            {menghitung luas lingkaran diketahui jari-jarinya}
Kamus:
            Const
          phi = 3.14            
            r : integer 
            Luas : real
Algoritma:
    r ß 5
    Luas ß phi * r * r
    output(”Jari –jari = ”,r);
    output(”Luas lingkaran  = ”,Luas);

Materi 3
 
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER

IDENTIFIER (pengenal)
         Nama tipe (di bagian deklarasi Type)
         Tempat penyimpanan suatu data :
        variable jika isinya dapat berubah dalam kisaran tertentu
        konstanta jika isinya selalu tetap.
        file, penyimpanan data di storage, dan sifatnya menetap.
         Fungsi dan Prosedur
         Judul Algoritma

Penamaan pengenal :
  1. Berupa satu atau beberapa karakter
         Huruf (A s/d Z, a s/d z)
         Angka (0 1 2 3 4 5 6 7 8 9 )
         Garisbawah/underscore (_)
          
diawali huruf dan tidak diawali angka
  1. Menggunakan kata yg berarti dan mudah dibaca dan interpretatif
  2. Tidak boleh ada simbol-simbol khusus kecuali underscore
  3. Huruf kecil dan kapital tidak dibedakan

OPERATOR
         Operator adalah notasi yang dipakai untuk melaksanakan suatu operasi terhadap data dan identifier (operand)



Tabel Pengelompokan Operator

JENIS OPERATOR
NOTASI
KEGUNAAN
Algoritma
Negasi
-
Mengubah data angka menjadi -/+
Aritmatika
+
-
*
/
div
mod
ß
Penjumlahan
Pengurangan
Perkalian
Pembagian
Pembagian dibulatkan
Sisa Pembagian
Pemberi nilai
Relasional
< 
> 
=
<=
>=
<> 
Kurang dari
Lebih dari
Sama dengan
Kurang dari atau sama dengan
Lebih dari atau sama dengan
Tidak sama dengan
  

Tabel Pengelompokan Operator (lanjutan)

JENIS
 OPERATOR
NOTASI
KEGUNAAN
Algoritma
Logika
not
and
or
xor
Negasi terhadap nilai Boolean
Operasi And thd dua nilai Boolean
Operasi Or thd dua nilai Boolean
Operasi Xor thd dua nilai Boolean
Bit
shl
shr
sot
and
or
xor
Geser satu bit ke kiri
Geser satu bit ke kanan
Komplemen suatu bit
Operasi And terhadap dua bit
Operasi Or terhadap dua bit
Operasi Xor terhadap dua bit
Address
#
Menunjukkan alamat memori suatu variable yang
 menyatakan nilai yang ditunjuk oleh pointer


TIPE DATA

1.    Tipe Data Dasar
     Integer (bilangan bulat), Real (bilangan pecahan), Boolean (bilangan logik) dan Char (karakter)

2.  Tipe Data Bentukan
            String (kumpulan dari beberapa karakter), Array (larik), Record (rekaman), Pointer (penunjuk alamat), File (Arsip)

 ======================================================================

TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA

Dasar – Dasar Algoritma

Pernyataan dan Aksi

langkah penyelesaian
 pernyataan (Statement)
aksi (action) dieksekusi
operasi dikerjakan oleh pemroses

Contoh Pernyataan dan Aksi :

         Pernyataan pada algoritma :
                        Tulis “Hello, world”
         menggambarkan aksi menuliskan “Hello, world” ke piranti keluaran (layar).
         efek dari aksi ini, dilayar akan tertera tulisan
                                    Hello, world
Struktur Dasar Algoritma

  1. Runtunan (Sequence)
  2. Pemilihan (Selection)
  3. Pengulangan (Repetition)

Runtunan (Sequence)

         Algoritma merupakan runtunan (sequence) satu atau lebih instruksi/pernyataan,
         setiap pernyataan dikerjakan secara berurutan sesuai dengan urutan penulisannya. Sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan.
         Urutan instruksi menentukan keadaan akhir algoritma  

Contoh 1 (Runtunan) :

Diberikan 2 buah gelas, A dan B;
gelas A berisi air berwarna merah, gelas B berisi air berwarna biru. Pertukarkan isi kedua gelas itu sedemikian sehingga gelas A berisi air berwarna biru dan gelas B berisi air berwarna merah.
 

ALGORITMA:

Caranya :
Kita siapkan satu buah gelas C untuk menampung sementara air dari gelas A sebelum dipindah ke gelas B




Algoritma Tukar_isi

   {Diberikan 2 buah gelas, A dan B; gelas A berisi air berwarna merah, gelas B berisi air berwarna biru. Isi kedua gelas A dan B ditukar sedemikian sehingga gelas A berisi air berwarna biru dan gelas B berisi air berwarna merah}
Kamus :
   gelas A,gelas B, gelas C : air
Algoritma:
  Tuangkan air dari gelas A kedalam gelas C
  Tuangkan air dari gelas B kedalam gelas A
  Tuangkan air dari gelas C kedalam gelas B
              Hasil akhir algoritma adalah:      
                        gelas A berisi air dari gelas B,  dan 
             gelas B berisi air dari gelas A semula


Contoh 2 (runtunan):

Misal  nilai A=8, B=5. Tukarkan nilai A dan B, sehingga menjadi A=5, B=8.
Algoritma :
              C ß A
              A ß B
              B ß C

Pemilihan (Selection)
If (kondisi)
   then
       aksi 
endIf

If (kondisi)
  then
       aksi1
  else
       aksi2
endIf

















Contoh (Pemilihan) :

If (A>B)
   then
      Max ßA
   else
      Max ßB
endIf


If (A>B)
   then
     Max ß
   endIf
            If (B>A)
   then
     Max ßendIf

 








 ======================================================================
Pengulangan (Repetition)


for var ß awal to akhir do
                    aksi
endfor


Repeat
               Aksi
Until kondisi stop
 














While kondisi ulang, do
                  Aksi
endwhile
 






Contoh (Pengulangan) :

For i ß 1 to 5 do
              output(“AMIKOM)
EndFor
iß1
Repeat 
              output(“AMIKOM”)
   ißi+1
Until (i>5)
iß1
While (i<=5) do 
              output(“AMIKOM”)
   ißi+1
EndWhile

 ======================================================================

Statement Pilihan

Analisis Satu Kasus

         Menggunakan konstruksi IF-THEN (jika-maka) dalam bentuk pernyataan :
                        if (kondisi)
            then
                               pernyataan
                        endif
             
Contoh Masalah satu kasus :

         Buatlah algoritma untuk menentukan apakah suatu bilangan yang dimasukkan oleh user itu bilangan genap atau bilangan ganjil.

         Penyelesaian :

            Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0).  Oleh karena itu, kita perlu membagi data masukan dengan 2. Jika data masukan habis dibagi 2, maka dapat ditulis bahwa bilangan tersebut bilangan genap, jika tidak maka akan ditulis bilangan tersebut bilangan ganjil

Analisis Dua kasus :

         Menggunakan konstruksi IF-THEN-ELSE (jika-maka-kalau tidak) dalam bentuk pernyataan :
                        if (kondisi)
              then
                                    pernyataan1
                           else
                                    pernyataan2
                        endif

Contoh masalah  analisis dua kasus :
Tulislah algoritma yang membaca sebuah bilangan bulat, lalu
menuliskan pesan “genap” jika bilangan tersebut adalah genap atau “ganjil” jika bilangan tersebut adalah bilangan ganjil, dengan menggunakan analisis dua kasus.
Penyelesaian :

Misalkan bilangan yang dibaca adalah bil. Hanya ada dua kemungkinan jenis untuk bil, yaitu bilangan genap atau bilangan ganjil. Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2. Contohnya, 4 adalah bilangan genap karena 4 mod 2 = 0, tapi 3 adalah bilangan ganjil karena 3 mod 2  =1.
Analisis Tiga Kasus atau Lebih :

Tiga Kasus :
           
    if kondisi1 then
               pernyataan1
            else
               if kondisi2 then
                           pernyataan2
               else
                          if kondisi3 then
                              pernyataan3
                          endif
               endif
            endif



Empat Kasus :

            if kondisi1 then
                pernyataan1
            else
                if kondisi2 then
                           pernyataan2
                else
                          if kondisi3 then
                               pernyataan3
                          else
                               if kondisi4 then
                                     pernyataan4  
                               endif
                          endif
                endif
    endif









Struktur Depend On

Konstruksi Depend On adalah sebagai berikut :
           
    Depend On (ekspresi)
            nilai1 : pernyataan1
            nilai2 : pernyataan2
            nilai3 : pernyataan3
                        . . .
            nilain : pernyataann
            else : pernyataanx
    EndDepend

Ekspresi adalah sembarang ekspresi (aritmatika atau boolean) atau variabel yang menghasilkan suatu nilai (konstanta).

Struktur Case

Konstruksi CASE adalah sebagai berikut :
           
    case (ekspresi) of
            nilai1 : pernyataan1
            nilai2 : pernyataan2
            nilai3 : pernyataan3
                        . . .
            nilain : pernyataann
            else : pernyataanx
    endcase
















Konstruksi CASE yang ekivalen dengan konstruksi IF-THEN-ELSE

                        if (ekspresi = nilai1) then
                                    pernyataan1
                        else
                                     if (ekspresi = nilai2) then
                                                            pernyataan2
                                    else
                                                if (ekspresi = nilai3) then
                                                            pernyataan3
                                                            . . .
                                                            if (ekspresi = nilain) then
                                                                        pernyataann
                                                            else  { otherwise }
                                                                        pernyataanx
                                                            endif
                                                endif
                                    endif
                        endif

























Contoh Masalah :

         Buatlah algoritma yang membaca sebuah bilangan bulat yang nilainya terletak antara 1 sampai 4, lalu mencetak teks angka tersebut. Misalkan bila dibaca angka 1, maka tercetak tulisan “satu”, bila dibaca 2, maka tercetak di layar tulisan “dua”, demikian seterusnya. Jika angka yang dimasukkan selain 1 sampai 4, tuliskan pesan bahwa angka yang dimasukkan salah.

                     ALGORITMA KonversiAngkaTeks
                     { Mencetak kata untuk angka 1 sampai 4 }
                     Kamus :
                                  angka : integer   { angka yang dibaca }
                     Algoritma :
                                  input(angka)
                                  if angka = 1 then
                                       output(“satu”)
                                  else
                                      if angka = 2 then
                                           output(“dua”)
                                      else
                                           if angka = 3 then
                                              output(‘tiga’)
                                           else
                                              if angka = 4 then
                                                      output(‘empat’)
                                              else
                                                      output(‘angka yang dimasukkan salah’)
                                              endif
                                           endif
                                      endif
                                  endif

======================================================================

Dengan konstruksi CASE, algoritma untuk masalah di atas dapat dibuat menjadi lebih singkat sebagai berikut :

            ALGORITMA KonversiAngkaTeks
            { Mencetak kata untuk angka 1 sampai 4 }
            Kamus :
                        angka : integer  { angka yang dibaca }
            Algoritma :
                        input(angka)
                        case angka
                             1 : output(“satu”)
                             2 : output(“dua”)
                             3 : output(“tiga”)
                             4 : output(“empat”)
                         else : output(“angka yang dimasukkan salah”)
                        endcase

Tidak ada komentar:

Posting Komentar