Minggu, 08 Februari 2015

STRUKTUR DATA (PERTEMUAN KE 3 ) STACK (TUMPUKAN)

Struktur Data (Pertemuan 3)
STACK (TUMPUKAN)

Secara sederhana diartikan dengan :
·                     Sebagai tumpukan dari benda 
·                     Sekumpulan data yang seolah-olah diletakkan di atas data yang lain 
·                     Koleksi dari objek-objek
Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO (First In Firs Out) yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani.

ILUSTRASI STACK

          Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita akan mengambil satu piring maka yang diambil piring yang paling atas.
             
ILUSTRASI STACK-CONT
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHcO9SHEo6f0xryw3nciAOYs9OYwCjOVhMe7uAEdVsUU4B1SQUWUYYlNN54d-4WcVyTs1Hpm1Pu-bSWV7g3e09-U3q7Q584-ryBEUO-JZ41NG2iiFpsSw343RBzZFWzi8INvdLeO4SRx7V/s1600/ilustrasi+stack.png


OPERASI PADA STACK

2 operasi dasar yang dapat dilaksanakan pada sebuah stack, yaitu :
ü  Operasi Push (menyisipkan data) memasukkan data ke dalam stack.
ü  Opersi Pop (menghapus data) menghapus elemen yang terletak pada posisi paling atas dari sebuah stack.

Contoh pemakaian operasi pust dan pop dan isi stack untuk setiap selesai eksekusi satu operasi.

Operasi yang dilakukan
Isi stack
Keterangan
Kondisi awal
Kosong
-
PUSH (‘A’,S)
A
-
PUSH (‘B’,S)
AB
-
PUSH (‘C’,S)
ABC
-
POP (Data,S)
AB
Data Berisi ‘C’
PUSH (‘D’,S)
ABD
-
POP (Data,S)
AB
Data Berisi ‘D’
POP (Data,S)
A
Data Berisi ‘B’

IMPLEMENTASI STACK DALAM BAHASA PEMOGRAMAN
·                     Implementasi dalam bahasa Pascal dapat dilakukan denagnmemanfaatkan struktur data record dan array. Arraydipergunakan untuk menyimpan elemen-elemen yang dimasukkan. Selain itu diperlukan pula suatu variabel untuk mencatat banyaknya elemen yang ada di dalam array yang sekaligus menggunakan IOS.
Pada Implementasi di bawah Ini :
·                     Konstanta maxelm menyatakan banyaknya elemen maksimum yang dapat ditampung oleh stack.
·                     Typeelemen adalah tipe data yang akan disimpan di dalam stack (bisa integer, word, real, boolean, char, string, atau lainnya). Banyak field yang menyatakan elemen dalam stack saat itu, yang sekaligus menyatakan TOS (Top of the stack)

DEKLARASI TIPE UNTUK TUMPUKAN (STACK)
            Type tumpukan = record
                        Banyak : 0..maxelm;
                        Elemen : array[1..maxelm] of typeelemen;
            End;

CONT
·                     Selain prosedur untuk POP dan PUSH, kita dapat pula menambahkan sejumlah fungsi untuk membantu penanganan kesalahan diantaranya adalah fungsi PENUHS (untuk mengecek apakah stack penuh) fungsi KOSONGS (untuk mengecek apakah stack kosong) fungsi SIZES (untuk mengetahui banyaknya elemen di dalam stack). Masing-masing sub program di atas dapat disajikan pseudocode-nya sebagai berikut :

Ø  PSEUDOCODE
o   Procedure Inisialisasi(var S : tumpukan);
begin
S. banyak-0
end;
o   Function PENUHS(S : tumpukan): boolean;
begin
Jika S.banyak = maxelm maka PENUHS - true
else PENUHS - false
end;

Ø  PSEUDOCODE CONT
o   Function KOSONGS(S : tumpukan):boolean;
begin
If S.banyak = 0 then KOSONGS - true
else KOSONGS - false
end;
o    Procedure PUSH(data : tipelemen; var S : tumpukan);
begin
If not KOSONGS(S) then
begin
            S.banyak - S.banyak + 1
            S.elemen[S.banyak]- data
end
else
Tampilan pesan kesalahan “Stack Penuh”
end;
o    Procedure POP(var S : tumpukan; var data : typeelemen);
begin
if not KOSONGS(S) then
begin
            data  --S.elemen[S.banyak]
            S.banyak  --S.banyak -1
end
else
Tampilan pesan kesalahan “Stack Kosong”
End:

PENJELASAN OPERASI PADA STACK 
v  Buat stack (stack) – create
           Membuat sebuah stack baru yang masih kosong.
#Spesifikasi
§   Tujuan           : mendefinisikan stack yang kosong
§    Input              : stack
§    Syarat awal   : tidak ada
§    Output stack  : - (kosong)
§    Syarat aktif    : stack dalam keadaan kosong
v  Stack kosong (stack) – empty
            Fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak.
#Spesifikasi
§  Tujuan          : mengecek apakah stack dalam keadaan kosong
§  Input             : stack
§  Syarat awlal : tidak ada
§  Output          : boolean
§  Syarat akhir : stack kosong bernilai true jika stack dalam keadaan kosong.

v  Stack penuh (stack) – full
           Fungsi untuk memeriksa apakah stack yang ada sudah penuh.
#Spesifikasi
§  Tujuan          : mengecek apakah stack dalam keadaan penuh
§  Input             : stack
§  Syarat awlal : tidak ada
§  Output          : boolean
§  Syarat akhir : stack kosong bernilai true jika stack dalam keadaan penuh.

v  Push (stack, info baru)
           Menambahkan sebuah elemen ke dalam stack       
#Spesifikasi
§  Tujuan          : menambahkan elemen, info baru pada stack pada posisi paling atas.
§  Input             : stack dan info baru
§  Syarat awlal : stack tidak penuh
§  Output          : stack
§  Syarat akhir : stack bertambah satu elemen.

QUEUE (ANTRIAN)

DEFINISI
o   Queue adlah suatu linear lish dimana operasi DELETE terjadi pada sisi depan (FRONT) dan operasi INSERT terjadi pada sisi belakang(REAR).
Jika diberikan suatu Queue Q dengan elemen-elemennya yang terdiri atas Q1, Q2, ...., Qmaka queue Q dituliskan :
            Q = [ Q1, Q2, ...., Q]
·         FRONT (Q) = Q1
·         REAR (Q) = QT
o   Selanjutnya untuk menyatakan jumlah elemen dalam suatu queue Q digunakan notasi NOEL (Q). 
o   Catatan : Satu pengoperasian berlaku hanya untuk satu elemen.
CONT.
o   Pada queue prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (Firs In Firs Out).
o   Data-data di dalam antrian dapat bertipe integer, real, record
ILUSTRASI QUEUE
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIarTUq7ej3ZYFFbScFOCWvU2suEwiNUzWk3i8DCkTN_L0TAvQeY_LJCI7U7Z7GirCYphhl-UO18Sx_LCm_Sq84MZdSp3W_-B1MHXzmHILZlTOeIc7QVvQR5dRI_iEhynVM26dBCniXmYc/s1600/ilustrasi-stack-queue.jpg




OPERASI-OPERASI PADA QUEUE (Q)
o   Terdapat empat operasi dasar yang didefinisikan pada queue, yaitu :

1.  CREATE
Bentuk umum            : CREATE (Queue)
Suatu operasi CREATE (Q) akan menghasilkan suatu queue kosong dengan nama Q, dan didefinisikan bahwa :
            NOEL (CREATE (Q))              = 0
            FRONT (CREATE (Q))           = tidak terdefinisi
            REAR  (CREATE (Q))             = tidak terdefinisi
2.  ISEMPTY
Bentuk umumnya adalah : INEMPTY (queue)
Jika Q adalah Queue, maka ISEMPTY(Q) adalah suatu operasi yang digunakan untuk memeriksa apakah Queue Q adalah queue kosong. Jika hasil dari operasi ini akan berjenis data boolean (true/false),dengan bentuk sebagai berikut :
            ISEMPTY(Q)   = True, jika Q adalah queue kosong
                                       = False, jika Q bukan queue kosong
3.  INSERT
Bentuk Umumnya : INSERT (Elemen, Queue)
INSERT(E,Q), dimana E = elemen dan Q = queue, adalah suatu operasi yang digunakan untuk memasukkan elemen E ke dalam queue Q.
Didefinisikan, bahwa elemen E akan menjadi elemen yang berada pada posisi REAR dan queue Q. Akibat dari operasi ini adalah :
-          REAR(insert(E,Q)) = E
-          NOEL(Q) bertambah satu dan QNOEL adalah E
     Jika Q adalah queue kosong, maka :
            ISEMPTY(INSERT(E,Q)) = False
Dalam bentuk statemen Pascal, biasanya dituliskan :
            IF ISEMPTY(Q) Then front (insert(E,Q)) = E
                        Else front(insert(E,Q = front(Q);
4.  REMOVE
Bentuk umum : REMOVE(elemen, queue)
REMOVE(Q) berarti mengeluarkan elemen Q yang berada pada posisi FRONT. Akibat dari operasi ini, elemen Q akan berkurang satu dan elemen kedua (elemen yang berada disebelahnya) akan menjadi elemen yang berada pada posisi FRONT dari queue Q ini.
Selanjutnya, jika Q adalah queue kosong, maka REMOVE(Q) akanmenghasilkan suatu Error.
            IF NOEL(Q) = 0 Then Remove(Q) = erroe_condition
            Remove(create(Q)) = error_condition

DEKLARASI QUEUE DALAM PASCAL
·                     Dalam bahasa pemrograman biasanya tidak ada fasilitas queue (built in queue). Untuk itu setiap programmer harus mendefinisikan sendiri dengan bantuan fasilitas yang ada. Pada umumnya fasilitas yang digunakan untuk mendeklarasikan queue adalah Array, Bentuk deklarasinya dalam bahasa sebagai berikut :
            TYPE StrukQueue = Record
                        Q : Array[1...100] of integer;
            Front, Rear : Integer;
            End;
VAR Q : StrukQueue;

Senin, 03 November 2014

STRUKTUR DATA pertemuan 1

Struktur Data (Pertemuan 1)

Data dikategorikan menjadi 2 yaitu :

ü  Tipe data tunggal (data primitif)
Ex: Integer, Real, Boolean dan karakter
ü  Tipe data majemuk (data campuran)
Ex: string (untai)
Tipe Data dalam pemprograman  ada 3 yaitu :
Ø  Sederhana
Ø  Ordinal, ex: Integer, Boolean, char
Ø  Real
Ø  Terstrukur
Ø  Array
Ø  Record
Ø  Set
Ø  File
Ø Pointer
TIPE DATA TUNGGAL
#Integer
v  Suatu integer adalah anggota dari himpunan bilangan
v  Operasi – operasi dasar yang ada dalam integer adalah : penjumlahan, pengurangan, perkalian, pembagian dsb
v  Operator  yang bekerja terhadap sepasang integar (operand) disebut sebagai Binary Operator
v  Operator  yang hanya bekerja pada satu operand saja disebut sebagai Unary Operator
v  Contoh Unary Operator adalah operator negasi. Berfungsi untuk mengubah tanda suatu operand

Operator
Operand
+
Penjumlahan
*
Perkalian
-
Pengurangan
DIV
Hasil Pembagian Bilangan Bulat
MOD
Sisa Pembagian

#Real
v  Data Numerik yang bukan termasuk integer, digolongkan dalam jenis data real
v  Jenis data ini ditulis menggunakan titik desimal  (atau koma desimal)
v  Bilangan real dimasukkan ke dalam memori komputer memakai sistem Floating Point, merupakan versi yang disebut  Scientific Notation
v  Penyajian terdiri atas 2 bagian, yaitu : Mantissa (Pecahan) dan Eksponen
Ex: bilangan 199000 = 0,199 * 106
      Disini 0,199 adalah mantissa (pecahan) sedangkan 6 adalah eksponen
v Secara Umum suatu bilangan real  X dituliskan M * RE

Operator
Operand
+
Penjumlahan
*
Perkalian
-
Pengurangan
/
Pembagian
          
#Boolean
·         Jenis data ini disebut juga jenis data logical
·         Elemen dari jenis data ini mempunyai nilai salah satu dari true atau false
·         Operator yang dikenal adalah:
                   Operator logika yaitu NOT, AND dan OR
§  Operator OR akan menghasilkan nilai true jika salah satu/ kedua operand bernilai true
§  Operator AND akan menghasilkan nilai true jika kedua operand benilai true
§  Operator NOT akan menghasilkan nilai true jika operand bernilai false dan sebaliknya
§  Operator NOT merupakan  precedence dari operator AND dan OR
§  Dalam suatu ekspresi yang tidak menggunakan tanda kurung, operator NOT harus dievaluasi sebelum operator AND dan OR
                   Operator Relasional yaitu  > , <, <= , >=, <> dan =

P
Q
P dan Q
P OR Q
NOT Q
T
T
T
T
F
T
F
F
T
T
F
T
F
T
F
F
F
F
F
T

#Karakter
            Jenis data karakter merupakan elemen dari suatu himpunan simbol aksara yang terdiri atas bilangan, abjad, dan simbol – simbol khusus

#String
ü  Jenis data string merupakan jenis data campuran karena elemen dibentuk dari karakter – karakter
ü  String adalah barisan hingga simbol yang diambil dari himpunan karakter
ü  Ada beberapa string yang dapat di bentuk, antara lain :
ü  CDI, CDD, DDC, CDC, CDCI, termasuk juga “ null string “ , “ empyt string “.
ü  Vocabulary, himpunan yang anggotanya adalah semua string yang dapat di bentuk dari suatu himpunan alphabet.
ü  Bitstring, suatu string yang terbentuk dari alphabet
ü  Dalam suatu string terdapat beberapa operasi utama yaitu :
o   Lenght : Menghitung panjang string (Integer)
Nilai dari operasi ini adalah suatu integer yang menunjukkan panjang dari suatu string.Panjang dari string di definisikan sebagai banyak karakter dan dapat diltulis S=N atau Lenght (S)=N
o   Concatenation : menggabungkan
§  Operasi ini bekerja terhadap dua string dan hasilnya merupakan resultan dari kedua string tersebut
§  Jika Sdan Smasing – masing adalah suatu string, maka bentuk operasi concatenation dinotasikan dengan CONCAT “(S1,S2)
o   Sub String = Mengambil
§  Operasi ini adalah operasi membentuk string baru, yang merupakan bagian dari string yang diketahui
§  Notasinya adalah SUBSTR (s,i,j)
s = string yang diketahui
i dan j adalah int
i = posisi awal substring 0 ≤ i ≤ length (S)
j = banyak karakter yang diambil 0 ≤ j ≤ length (S) dan
     0 ≤ i+j-1≤ lenght (S)

*      Catatan :
1.     Length ( SUBTR (s, i, j)) = j
2.    SUBSTR (CONCAT (S, S2), 1, length (S1))= S1
3.    SUBSTR (CONCAT (S1,S2), length (S1)+1, length (S2)) = S2
Ex :     S1 = STIMIK
            S= ASIA
            S= Indonesia ? Substring (Concate (Stimik, Asia), 1, lenght (stimik))
                            Subtring ((Stimik Asia ), 1 ,6) = stimik (terbukti)
o   Insert = Menyisihkan
·         Operasi ini adalah untuk menyisipkan suatu string ke dalam string lain
·         Bentuk umum adalah : INSERT (S1, S2, i )
·         Sdan Smasing – masing adalah suatu string dan i adalah posisi awal S2 pada S1
·         Misalkan S1 = ‘a1a....an
    S= ‘b1b2....bm
    INSERT (S1, S2, 3)= ‘a1a2b1b....bma3a4....an
Ex : S= Stimik
       S= Asia
            INSERT (S1, S2, 2) = Sasia Timik
o   Delete = Menghapus
·         Operasi ini digunakan untuk menghapuskan sebagaian karakter dalam suatu string
·         Bentuk umum adalah DELETE (s, i, j)
·         Maksudnya adalah menghapuskan sebagaian karakter dalam string S, mulai dari posisi i dan panjang j
Pemetaan integer ke storage
Bentuk mapping ke storage dari int dapat dilakukan dengan beberapa cara yaitu :
ü  Skema sign dan magnitude (bentuk konvesional)
o   Disini representasi bilangan pos dan neg hanya dibedakan dengan tanda saja
o   Biasanya tanda pos/neg ditunjukkan oleh digit terdepan dari bentuk binernya untuk representasi dengan jumlah digit tertentu
ü  Skema One’s complement dan Skema Two’s complement
o    Diberikan bilangan int non neg x,x’  dan R di definisi bahwa
 x’ adalah complement dari x relatif terhadap  R jika x+x’ = R
x disebut sebagai bentuk true sedangkan x’=R-x disebut bentuk complement
o    Bentuk complement x’= R-x menyatakan bilangan int neg x sedangkan bentuk true x menyatakan  int pos x
o    Skema 2 complement menggunakan R = 2N
o    Skema  1 complement menggunakan R = 2N – 1
    Pemetaan karakter ke storage
v  Pada umumnya skema yang paling banyak digunakan adalah
ü  Exended Binary Coded Decimal Interchange Code (EBCDIC)
ü  American Standard Code for Information Interchange (ASCII)
ü  Selain kedua skema tersebut ada skema yang disebut dengan kode    Huffman
   Pemetaan String ke Storage
v  Untuk mengetahui bentuk mapping pada storage dari suatu string perlu diketahui beberapa hal yang menyangkut ruang untuk string yang bersangkutan
v  Letak posisi awal start dan posisi akhir (terminal) suatu pointer yang menunjukkan lokasi storage