Sabtu, 06 Juni 2009

struktur Data MODUL 04

Lawlietsan

http://lawlietsan.co.cc/


MODUL 4

RECORD (REKAMAN)

Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat buah field.

Cara pendeklarasian dari record adalah sbb:
• Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
• Mendefinisikan variabel untuk dilakukan operasi.

SYNTAX

type

nama_record = record
identifier_1 : tipe_data_1;
:
:
identifier_n : tipe_data_n;
end;
var variabel : nama_record;

Contoh.

type

Data_mahasiswa = record
Nama : string;
Usia : integer;
Kota : String;
Kodepos : integer;
end;
Var
x: Data_mahasiswa;

1. Pengaksesan Elemen Record
Nama variable disertai nama field.

x.Nama
x.Usia
x.Kota
x.Kodepos

Contoh.

program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin
waktu.hari :=25;
waktu.bulan:=09;
waktu.tahun:= 1983;
writeln('hari ini adalah ',waktu.hari,':',waktu.bulan,':', waktu.tahun)
end.

2. Pengunaan With … do
Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record. Pemrograman dapat mengakses field cukup dengan menyebutkan nama field-nya saja. Misalkan pernyataan :

x.Nama
x.Usia
x.Kota
x.Kodepos

menjadi

with x do
Begin
Nama
Usia
Kota
Kodepos
end

Contoh.

program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin {program utama}
with waktu do {mulai with}
begin
hari :=25;
bulan:=09;
tahun:=1983;
writeln('hari ini adalah ',hari,':',bulan,':', tahun)
end {akhir with}
end.

3. Array dari Record
Suatu array dapat juga berisi record contoh suatu deklarasi record tanggal.

type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;

kemudian kita membentuk suatu array dari record ini, namakan birthdays.

var birthdays : array[1..10] of tanggal;

pernyataan ini akan membentuk suatu array dengan 10 elemen. Dimana tiap elemen adalah sebuah record tanggal, yaitu, terdiri atas bulan, hari, tahun dengan tipe data Integer.
Digambarkan seperti berikut: 

Contoh Pemberian nilai awal dari masing-masing elemen birthdays:

Birthdays[1].hari :=25;
Birthdays[1].bulan:=09;
Birthdays[1].tahun:=1983;

4. Record di dalam Record
Record bisa berisi record lain sebagai field. Seperti contoh record tanggal dan jam dikombinasikan menjadi sebuah record saat ini,

type tanggal = record
bulan, hari, tahun : integer;
end;
type waktu =record
jam, menit, detik : integer;
end;
type waktu_ini =record
tanggal_ini : tanggal;
waktu_ini : waktu
end;

Kemudian kita perlu membuat variabel kerja

var saat_ini : waktu_ini;

pemberian nilai akan terjadi seperti di bawah ini:

saat_ini.tanggal.bulan:= 11;
saat_ini.tanggal.hari:= 2;
saat_ini.tanggal.tahun:= 1985;
saat_ini.waktu.jam:= 3;
saat_ini.waktu.menit:= 3;
saat_ini.waktu.detik:= 33

StruktuR Data Modul 05

Lawlietsan

http://lawlietsan.co.cc/

MODUL 5

STACK ( Tumpukan )

 

-à Adalah tumpulan data yang seolah-olah ada data di atas data lain.

-à Suatu metode untuk Input dan hapus di dalam memori komputer.

 

Konsep utama dalam STACK adalah LIFO ( Last In First Out ).

 

Data nomor 1 datang/masuk duluan, data nomor 5 yang paling atas yang keluar terlebih dahulu.

 

Algoritma:

  1. Input/tambah data
    • Jika ada input maka no stack/no tumpukan yang semula 0 akan tambah 1 demi 1 sampai maksimal tumpukan.

 

  1. Pengambilan data

·        Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp. Dan posisi tumpukannya yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.

 

  1. Deklarasi STACK

 

Type

            Const

            Max = 5;

Nama record = Record

                        Data    : type data;

                        Top      : byte;

            End;

            Nama_array = ARRAY [1..max] of Nama record;

Var

            STACK : nama Array;

 

 

Nama Array-----à Barang

Nama Record---à Coba

Nama Variabel--à Stack

 

Contoh Deklarasi dari gambar diatas:

 

Type

            Coba = record

            Data    :string;

            Top      : byte;

            End;

Barang = ARRAY [1..4] of coba;

Var

            Stack:barang;

 

  1. Operasi pada STACK

·        CREATE

Membuat stack baru yang masih kosong.

 

Procedure create;

Begin

      Stack.top:=0;

End;

 

·        FULL

Untuk memeriksa apakah stack sudah penuh atau belum.

 

Fuction full:bolean;

Begin

      Stack.top:=max;

End;

 

·        PUSH

Menambah sebuah elemen ( data ) kedalam stack

Syarat: tidak bisa dilakukan jika stack sudah penuh.

 

Procedure push ( input:string );

Begin

      If not full then

      Begin

                  Stack.top:=stack.top;

                  Stack.data:=input;

      End;

End;

 

·        EMPTY

Fuction empty: bolean;

Begin

      Empty:=false;

      If top:=0 then empty:=true;

End;

 

·        POP

Mengambil elemen teratas dari stack.

Syarat: Stack tidak boleh kosong.

 

Procedure Pop ( elemen:string );

Begin

      If not empty then

      Begin

      Elemen:=stack.data;

      Stack.top:=top – 1;

      End;

End;

 

 

Uses wincrt;

Type

kelas = ARRAY[1..4] of string;

Var

            Stack: kelas;

            top:byte;

            Elemen: string;

            I : integer;

Begin

top:=0;

For i:=1 to 4 do

Begin

            Writeln('masukkan nama ke', '  ',i,'  ','='); readln(stack[i]);

        top:=top+1;

End;

writeln('posisi tumpukan=',top);

Writeln('pengambilan data');

For i:=1 to 4 do

Begin

Elemen:=stack[i];

            top:=top - 1;

End;

writeln;

Writeln('data elemen sekarang=',elemen);

writeln('posisi tumpukan=',top);

Readln;

End.

 

 

StruktUr Data Modul 06

Lawlietsan

http://Lawlietsan.co.cc/

MODUL 6

QUEUE ( ANTRIAN )

 

-à Kumpulan data dimana data masuk dan keluar pada ujung yang berbeda.

-à Konsep utama FIFO ( Fisrt In First Out ).

 

Data nomor 1 datang/masuk dan keluar duluan.

 

Algoritma:

  1. Input/tambah data
    • Jika ada input maka no antrian yang semula 0 akan tambah 1 demi 1 sampai maksimal antrian.

 

  1. Hapus/Pengambilan data

·        Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp, antrian ke-dua akan maju ke antrian pertama dan seterusnya. Dan jumlah antrian yang semula maksimal akan berkurang 1 demi 1 sampai antrian 0 kembali.

 

  1. Deklarasi Queue

Type

            Const

            Max = 5;

Nama record = Record

                        Data     : type data;

                        Top      : byte;

            End;

            Nama_array = ARRAY [1..max] of Nama record;

Var

            Antri : nama Array;

Nama Array-----à Barang

Nama Record---à Coba

Nama Variabel--à Antri

 

Contoh Deklarasi dari gambar diatas:

Type

            Coba = record

            Data     :string;

            Top      : byte;

            End;

Barang = ARRAY [1..4] of coba;

Var      Antri:barang;

  1. Operasi pada queue

·        CREATE

Membuat antrian baru yang masih kosong.

 

Procedure create;

Begin

      antri.top:=0;

End;

 

·        FULL

Untuk memeriksa apakah antrian sudah penih..

 

Fuction full:bolean;

Begin

      antri.top:=max;

End;

 

·        PUSH

Menambah sebuah elemen ( data ) kedalam antrian.

Syarat: tidak bisa dilakukan jika antrian sudah penuh.

 

Procedure push ( input:string );

Begin

      If not full then

      Begin

                  antri.top:=antri.top;

                  antri.data:=input;

      End;

End;

 

·        EMPTY

Fuction empty: bolean;

Begin

      Empty:=false;

      If top:=0 then empty:=true;

End;

 

·        POP

Mengambil 1 elemen dari sebuah antrian.

Syarat: antrian tidak boleh kosong.

 

Procedure Pop ( elemen:string );

Begin

      If not empty then

      Begin

      Elemen:=antri.data;

      antri.top:=top – 1;

      End;

End;

 

 

Program antrian_1;

Uses wincrt;

Type

            Data= array [1..3] of string;

Var

            D: data;

            I, antri: integer;

            Temp: string;

Begin

Antri:=0;

{untuk input}

For I:=1 to 3 do

Begin

Writeln(’masukkan nama ke’,’  ’,i);

Readln(d[i]);

Antri:=antri+1;

End;

{untuk Output}

For I:=1 to 3 do

Begin

Temp:=d[i];

Antri:=antri-1;

End;

{lihat output di var temp setelah pengambilan }

Writeln(’hasil var temp=’,temp);

Readln;

End.

 

 

untitle

Satu kata yang terucap Mengguncang gelora hati Satu Kata yang kau ucap Gemuruh hati tanpa henti Kau ucap kata perih untukku Tak dapat...