Jumat, 26 Februari 2010

Deklarasi Data

                         Deklarasi Data

1. Jenis data konstanta dan variabel harus didefinisikan dalam program sehingga :
           a. operasi yang tepat dapat dijalankan pada nilai data dan
           b. Jumlah ruang penyimpanan yang tepat bisa ditentukan
 2.Statement untuk mendefinisikan jenis data disebut declarative statement
 3.Beberapa bahasa pemrograman memiliki sintaks pendeklarasian yang berbeda
 4.Beberapa contoh program (pendeklarasian data) yang akan diberikan ditulis dalam pseudo-code

Contoh

Constants
         pi = 3.141592654

Variables
        i, qty                               : integer
        harga_satuan, harga_beli : real
        status                              : boolean
        nama                               : character(25)

type data


TIPE data

Tipe data yang dikenal dalam bahasa pascal antara lain :

·      Tipe data sederhana / Jenis data yang standar (Dasar)
1.         Integer
2.         Real
3.         Karakter
4.         Boolean

·         Tipe data non standar (user defined)
1.      Enumerated
2.      Sub-range

·         Tipe data berstuktur
1.            Array
2.            Record
3.            Set
4.            File

·         Jenis data Pointer

INTEGER


Jenis data ini merupakan nilai bilangan bulat, yang  terdiri atas integer positif, integer negatif dan nol. Pada TURBO PASCAL jenis data ini di bagi atas beberapa bagian.  (lihat tabel 1)

Tabel 1. Jenis data integer
Tipe
Ukuran memori
(dalam byte)
Jangkauan nilai
BYTE
1
0..255
SHORTINT
1
-128..127
INTEGER
2
-32768..32767
WORD
2
0..65535
LONGINT
4
-2147483648..2147483647

Operator Integer terdiri atas :  + , - , * , DIV dan MOD

Var
                 Jumlah : byte;
Begin
               Jumlah := 200;
                WriteLn(‘Nilai JUMLAH = ‘,Jumlah);
End.
Hasilnya bila dijalankan :

          Nilai JUMLAH = 200


REAL


Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar 6 byte.

Contoh :
123.45
12345.  ® salah, titik desimal tidak boleh dibelakang
12E5
12E+5
-12.34
.1234  ® salah, titik desimal tidak boleh dimuka

 Pada TURBO PASCAL, jenis data ini dibedakan ( lihat tabel 2.)


Tabel 2. Jenis data Real

Tipe
Ukuran memori
(dalam byte)
Jangkauan nilai
Digit signifikan
SINGLE
4
1.5x10E-45 .. 3.4x10E38
7-8
DOUBLE
8
5.0x10E-324 .. 1.7x10E308
15-16
EXTENDED
10
1.9x10E-4951 .. 1.1x10E4932
19-20
COMP
8
-2E+63+1 .. 2E+63-1
19-20

Operator untuk jenis data ini terdiri atas : + , - , * dan /

KARAKTER


Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’, ’a’, ’!’, ’5’ dsb.

Dasarnya adalah ASCII CHARACTER SET.

Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter.

                   Blank.
          033                        !
          048                         0
076                         L
          Dst


STRING


Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.

Contoh :
Var
          Kampus : string[10];
Begin
          Kampus := ‘Gunadarma’;
Write(Kampus);
End.


 

BOOLEAN


Jenis data ini mempunyai nilai TRUE atau FALSE.

Operator untuk jenis data ini adalah :
1.      Logical Operator, yaitu : NOT, AND dan OR
2.      Relational Operator, yaitu : >, <, >=, <=, <> dan =


JENIS DATA NON-STANDARD (USER DEFINED)

ENUMERATED.
Jenis data ini terdiri atas barisan identifier yang terurut dimana setiap identifier tersebut dianggap sebagai suatu individual data item (elemen data yang berdiri sendiri).

Pada saat mendeklarasikan jenis data ini kita harus menuliskan semua elemen-elemennya.

Bentuk umum deklarasinya adalah :

TYPE nama = (data_item_1, data_item_2, ……., data_item_n);

Contoh :

TYPE hari = (sen,sel,rab,kam,jum,sab,ming);

TYPE warna = (red,blue,green,yellow,black,white);

Setelah jenis data ini dideklarasikan, maka selanjutnya kita dapat mendeklarasikan suatu variabel yang berjenis data sama dengan jenis data ini.

Misalnya :
              TYPE nama_hari = (sen,sel,rab,kam,jum,sab,ming);
              VAR libur : nama_hari;

Fungsi standar yang dapat digunakan pada jenis data ini adalah :

PRED, SUCC dan ORD

Misalnya :

     PRED (sel) = sen
     SUCC (sen) = sel
     ORD (sen) = 0
     ORD (sel) = 1

      dsb

SUB-RANGE.

Jenis data ini berupa range dari suatu kumpulan data yang mempunyai urutan..

Bentuk umum deklarasinya adalah :

     TYPE nama = data_item_pertama .. data_item_terakhir;

Contoh :
          TYPE jam_kuliah = 1 .. 10;
tanggal = 1 .. 31;
abjad = ‘A’ .. ‘Z’;

          TYPE bulan = (jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des);
hari = (sen,sel,rab,kam,jum,sab,ming);
ata = agt .. jan;
pta = feb .. jun;
hari_kerja = sen .. jum;

 



 


DEFINISI STACK dan OPERASI DASAR PADA STACK


DEFINISI STACK
      Stack adalah suatu bentuk khusus dari linear list di mana operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja yang disebut sebagai “TOP”.
Misal diberikan Stack S sebagai berikut :

      S = [ S1, S2, .........., ST ]   maka TOP(S) = ST.

          Untuk menunjukkan jumlah elemen suatu stack digunakan notasi NOEL. Dari stack di atas, maka NOEL(S) = T.



OPERASI DASAR PADA STACK
      Ada empat operasi dasar yang didefinisikan pada stack, yaitu :
      1. CREATE(stack)
      2. ISEMPTY(stack)
      3. PUSH(elemen,stack)
      4. POP(stack)


CREATE
      Operator ini berfungsi untuk membuat sebuah stack kosong dan didefinisikan bahwa :

NOEL(CREATE(S)) = 0 dan TOP(CREATE(S)) = null

ISEMPTY
      Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong. Operasinya akan bernilai boolean, dengan definisi sebagai berikut :
            ISEMPTY(S) = true, jika S adalah stack kosong
                                    = false, jika S bukan stack kosong
      atau
            ISEMPTY(S) = true, jika NOEL(S) = 0
                                    = false, jika NOEL(S) 0

      Catatan : ISEMPTY(CREATE(S)) = true.


PUSH
      Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack. Notasi yang digunakan adalah :

            PUSH(E,S)

      Artinya : menambahkan elemen E ke dalam stack S.

      Elemen yang baru masuk ini akan menempati posisi TOP.
       Jadi : TOP(PUSH(E,S)) = E.
      Akibat dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOEL(S) menjadi lebih besar atau stack menjadi tidak kosong (ISEMPTY(PUSH(E,S)) = false).

POP
      Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack. Notasinya :
                   POP(S)

      Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP. Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S) berkurang dan elemen pada posisi TOP akan berubah. Operator POP ini tidak dapat digunakan pada stack kosong, artinya :

                   POP(CREATE(S)) = error condition

Catatan : TOP(PUSH(E,S)) = E

DEKLARASI STACK PADA BAHASA PEMROGRAMAN

            DEKLARASI STACK PADA BAHASA PEMROGRAMAN

    Dalam bahasa pemrograman, untuk menempatkan stack biasanya digunakan sebuah array. Tetapi perlu diingat di sini bahwa stack dan array adalah dua hal yang berbeda. Misalkan suatu variabel S adalah sebuah stack dengan 100 elemen. Diasumsikan elemen S adalah integer dan jumlah elemennya maksimum adalah 100 elemen. Untuk mendeklarasikan stack dengan menggunakan array, harus dideklarasikan pula variabel lain yaitu TOP_PTR yang merupakan indeks dari array. Variabel TOP_PTR ini digunakan untuk menyatakan elemen yang berada pada posisi TOP dalam stack tersebut. Selanjutnya gabungan kedua variabel ini diberi nama STACK_STRUCT. Kemudian didefinisikan bahwa :

            NOEL(S) = TOP_PTR
            ISEMPTY(S) = TRUE, jika TOP_PTR = 0 dan
                 FALSE, jika TOP_PTR > 0.

Maka bentuk deklarasinya dalam PASCAL adalah :

            TYPE Stack_Struct = Record
            Stack   : array[1..100] of integer
                        TopPtr : integer;
            End;
            VAR S : Stack_Struct;

Selanjutnya, untuk keperluan operasi PUSH dan POP harus dibuat suatu prosedur tersendiri, yaitu :


            PROCEDURE PUSH(Eon : integer);
            Begin
                If (S.TopPtr < NoelMax) Then Begin
                S.TopPtr := S.TopPtr + 1;
                S.Stack [S.TopPtr] := Eon
                                End
                Else Overflow_Condition
            End;

            PROCEDURE POP(Eoff : integer);
            Begin
                If (S.TopPtr > 0) Then Begin
                Eoff := S.Stack[S.TopPtr];
                S.TopPtr := S.TopPtr - 1
                End
                Else Underflow_Condition   
            End;

Catatan :
Overflow adalah suatu keadaan di mana kita melakukan operasi PUSH terhadap stack dalam keadaan penuh. Underflow adalah keadaan di mana kita melakukan operasi POP terhadap stack kosong. Eon adalah elemen yang akan dimasukkan ke dalam stack dan Eoff adalah elemen yang akan dikeluarkan dari dalam stack.

PENGGUNAAN/APLIKASI STACK

PENGGUNAAN/APLIKASI STACK

Logika stack digunakan untuk menyelesaikan berbagai macam masalah. Antara lain digunakan pada compiler, operating system dan dalam program-program aplikasi. Berikut ini tiga buah contoh aplikasi stack, yaitu :

* MATCHING PARENTHESES
Proses ini dilakukan compiler untuk memeriksa kelengkapan tanda kurung yang terdapat pada suatu ekspresi aritmetik. Sedangkan stack di sini digunakan sebagai tempat prosesnya. Algoritma yang digunakan adalah :

1. Elemen-elemen suatu ekspresi aritmetik (string) di-Scan dari kiri ke kanan.
2. Jika ditemukan simbol "(" atau "Left parenthesis", maka simbol tersebut di-push ke dalam stack.
3. Jika ditemukan simbol ")" atau "Right parenthesis", maka isi stack diperiksa.
* Jika stack kosong * terjadi kesalahan.
berarti : ada simbol ")", tetapi tidak ada simbol "(" yang seharusnya mendahului.
* Jika stack tidak kosong * artinya ada pasangannya dan langsung di-POP keluar stack.

* NOTASI POSTFIX
Bentuk aplikasi stack yang lain adalah mengubah suatu ekspresi aritmatik (string) ke dalam notasi postfix. Notasi postfix ini digunakan oleh compiler untuk menyatakan suatu ekspresi aritmatik dalam bahasa tingkat tinggi (high level language). Stack digunakan oleh compiler untuk mentransformasikan ekspresi aritmatik menjadi suatu ekspresi dalam bentuk/notasi postfix.

Contoh :
Misal diberikan ekspresi aritmatik : A + B ;

Maka bentuknya dalam notasi postfix menjadi : AB+

Urutan (prioritas) dari operator adalah

1. Perpangkatan (^)
2. Perkalian (*) atau Pembagian (/)
3. Penjumlahan (+) atau Pengurangan (-)


Aturan yang digunakan dalam proses transformasi tersebut adalah :

1.Ekspresi aritmatik yang diberikan di- "Scan" dari kiri ke kanan.
2.Bila simbol yang di-scan adalah "(", maka simbol tersebut di push ke dalam stack.
3.Bila simbol yang di-scan adalah ")", maka seluruh isi stack di pop keluar mulai dari simbol "(" yang pertama ditemukan dalam stack.
4.Bila simbol adalah operator, maka dilakukan perbandingan dulu dengan simbol (operator) yang berada pada posisi top dalam stack.
a.Jika derajatnya setara atau lebih rendah dari simbol yang berada pada posisi top, maka top stack di-pop keluar sebagai output dan simbol yang baru di-push ke dalam stack.
b. Jika derajatnya lebih tinggi dari simbol yang berada pada posisi top, maka simbol (operator) yang di-scan tersebut di-push ke dalam stack.
5.Bila simbol yang di-scan adalah operand, maka simbol tersebut langsung sebagai output.
6.Bila simbol adalah ";" maka seluruh isi stack di-pop sebagai output.

Contoh :
Misal diberikan sebuah ekspresi aritmatik dengan bentuk sbb:

( (A + B) * C / D + E ^ F ) / G ;

dalam notasi postfix menjadi : AB+D*C/EF^+G/

LINEAR LIST

LINEAR LIST

Linear List adalah suatu struktur data yang merupakan himpunan terurut. Misal didefinisikan suatu linear list A yang terdiri atas T buah elemen sebagai berikut :

A = [a1, a2, .........., aT]

Jika T = 0, maka A dikatakan sebagai “Null List”.

Suatu elemen dari sembarang posisi pada linear list A dapat dihilangkan. Sebaliknya, suatu elemen baru dapat dimasukkan ke dalam list dan dapat menempati sembarang posisi pada list tersebut. Jadi suatu linear list dapat berkurang atau bertambah setiap saat.

Kamis, 25 Februari 2010

RECORD

RECORD

Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai
type. Satuan data tersebut sering disebut sebagai field dari record. Field dipanggil dengan
menggunakan namanya masing-masing. Suatu field dapat terdiri atas beberapa subfield.
Sebagai Contoh, data personalia dari seorang pegawai suatu perusahaan di Amerika
Serikat, merupakan sebuah record yang dapat terdiri dari berbagai field, dan subfield
seperti berikut ini :

1 NOMOR-JAMINAN-SOSIAL
2 NAMA, yang terdiri atas :
NAMA-BELAKANG
NAMA-DEPAN
NAMA-TENGAH
3 ALAMAT, terdiri atas :
JALAN
NOMOR RUMAH
NAMA-JALAN
KOTA
NEGARA-BAGIAN
KODE-POS
4 MENIKAH

Pada record tersebut di atas, satuan data seperti NAMA BELAKANG ataupun KOTA
merupakan tipe data string, sedangkan data lain seperti GAJI POKOK, TUNJANGAN
JABATAN dan berbagai data yang akan diolah secara matematis akan disimpan dengan
tipe data numerik, bisa integer maupun real. Data MENIKAH bisa digunakan tipe data
boolean atau logikal.

Seperti telah kita paparkan terdahulu, array berbeda dengan record, yakni array
bersifat homogen (terdiri dari tipe data yang sama), dan komponen array tidak memiliki
nama sendiri, dan hanya diberi identifikasi oleh posisi mereka di dalam array. Penggunaan
keduanya di dalam program juga berbeda, jika penggunaan array pada umumnya akan
disimpan di memori utama komputer (bersifat sementara), sedangkan record biasanya
digunakan dalam filing yang akan disimpan di memori sekunder komputer, seperti hard
disk, disket, dan lainnya.

Sebuah record memberi informasi tentang berbagai kondisi dari obyek pada
permasalahan yang nyata sehari-hari. Setiap field memberi uraian tentang satu atribut dari
obyeknya. Sebuah record biasanya diberi identifikasi oleh key-nya. Key atau kunci adalah
salah satu atau lebih field yang dipilih untuk tujuan penyampaian informasi yang terjadi di
dalam record yang bersangkutan.

Koleksi dari record yang sama struktur fieldnya disebut suatu file atau berkas. Jadi,
koleksi dari record semua pegawai perusahaan membentuk sebuah file personalia. Pada
umumnya record disimpan membentuk file, dalam urutan sesuai dengan nilai dari key
masing-masing. Di dalam suatu file PERSONALIA, field NOMOR JAMINAN SOSIAL
dari seorang pegawai dapat digunakan sebagai key. Di dalam bahasa pemrograman tingkat
tinggi, record dapat dinyatakan sebagai struktur data (COBOL dan PL/1) dapat diadakan
spesifikasi tentang nama record, field dan subfield yang bersangkutan.

Record tersebut juga diberi nomor seperti diperlihatkan di dalam contoh di bawah ini.
Deklarasi berikut ini dapat digunakan untuk menuliskan record dari file PERSONALIA di
atas.
01 PEGAWAI
02 NOMOR-JAMINAN-SOSIAL
02 NAMA
03 NAMA-BELAKANG
03 NAMA-DEPAN
03 NAMA-TENGAH
02 ALAMAT
03 JALAN
04 NOMOR RUMAH
04 NAMA-JALAN
03 KOTA
03 NEGARA-BAGIAN
03 KODE-POS
02 MENIKAH