Jumat, 17 April 2015




STACK

Pada post kali ini saya akan membahas mengenai STACK.
Apa itu “stack” ?
Stack merupakan suatu susunan koleksi data dimana data  dapat ditambahkan dan dihapus melalui bagian akhir data, yang disebut dengan top of stack. Stack bersifat LIFO (Last In First Out) yang bererarti benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack.
Berikut adalah operasi STACK :
  1. Inisialisasi : digunakan untuk mengosongkan stack. Yaitu mengisi nilai field top dengan 0. Contoh :

     procedure inisial (var s: stack);
    begin
       s.top:= 0;
    end;

  2. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas. Langkah operasi PUSH adalah :
    a. periksa apakah stack penuh (isFull)  jika "Tidak" maka periksa apkah stack kosong (isEmpty) pada bagian ini akan ada 2 kemungkinan, jika "Ya" maka set top = 1 lalu masukkan data. Kemungkinan ke-2 jika "Tidak" maka tambahkan field top dengan 1 lalu masukkan data.
    b. Periksa apakah stack penuh (isFull) "Iya" maka stack telah penuh. 


    Contoh operasi push:

     procedure push (nim: string; nama: string; nilai: real; var s: stack);
    begin
    if isFull (s) = true then
    begin
            writeln ('stack penuh");
    end
    else
    begin
        if isEmpty (s) = true then
         begin
             s.top:=1;
             s.data[1].nim := nim;
             s.data[1].nama := nama;
             s.data[1].nilai := nilai;
        end
        else
        begin
           s.top:= s.top+1;
           s.data[s.top].nim := nim;
           s.data[s.top].nama := nama;
           s.data[s.top]. nilai := nilai;
           end;
        end;
    end; 
  3. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas. Merubah nilai dari field top, jika field top tidak sama dengan 0 maka top= top-1. jika field top sama dengan 0 maka data pada stack telah habis.Contoh :

    procedure pop (var s: stack);
    begin
           if s.top <> 0 then
            begin
                 s.top:= s.top-1;
                end
               else
                    write ('data telah habis');
                    writeln;
    end; 
     
  4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong. Untuk memeriksa apakah stack dalam keadaan kosong dapat dilakukan dengan memeriksa field top. Jika field top bernilai 0, maka stack dalam keadaan empty (kosong) dan fungsi isEmpty akan mengembalikan nilai true (1). Jka top tidak bernilai 0 berarti stack ada isinya, maka nilai yang dikembalikan adalah false (0). Contoh : 

    function isEmpty (var s: stack) : boolean;
    var
         hasil: boolean;
    begin
          hasil:= false;
          if s.top = 0 then
          begin
              hasil:= true;
          end;

          isEmpty:= hasil;
    end; 

  5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh. Untuk memeriksa keadaan stack apakah sudah penuh atau tidak dapat dilakukan dengan cara mengembalikan nilai true (1) jika stack telah penuh (top= maks_elm) dan mengembalkan nilai false (0) jika stack masih bisa ditambah (top<maks_elm). Contoh:

    function isFull (var s: stack) : boolean;
    var
         hasil : boolean;
    begin
         hasil:= false;
         if s.top = maks-elm then
         begin
              hasil:= true;
         end;
         isFull:= hasil;
    end; 




    Untuk lebih jelasnya bisa lihat coding dibawah ini. 





sumber materi : I Putu Adi Pratama slide

Sabtu, 04 April 2015

Record di Dalam Array

Hay kita ketemu lagi kawan :)
Kali ini saya akan membagi pengetahuan saya mengenai membuat record dalam array. Sebelumnya kita tahu bahwa record adalah tipe data yang menampung lebih dari satu data, dimana tipe data dalam record dapat berbeda. Berbeda dengan array, dimana setiap data yang tersimpan dalam array harus memiliki tipe data yang sama. (referensi : Modul Pratikum Algoritma dan Pemrograman Dasar STIKI Indonesia).
 Berikut cara mengklarifikasikan record :

type nama_record = record

            nama_field1 : tipe_data1;
            nama_field2 : tipe_data2;
             ..................
            nama_fieldn : tipe_datan ; 
            end;


Contoh :
Program nia;
Uses crt;

Const maks = 20;

Type maha = record
nim: string [8];
jurusan : string [20];
nama : string [20];
alamat : string [20];
end;

Var
recmaha : array [1..maks] of maha;
I,n : integer;
           write (‘Masukkan jumlah mahasiswa : ‘); readln(n);
            Writeln;
            For i:= 1 to n do
            Begin
              Write (‘NIM : ‘); readln(recmaha[i].nim);
              Write (‘Jurusan : ‘); readln(recmaha[i].jurusan);
              Write (‘Nama : ‘); readln(recmaha[i].nama);
              Write (‘Alamat : ‘); readln(recmaha[i].alamat);
              Write (‘Telpon : ‘); readln(recmaha[i].telp);
              Write (‘Tanggal Lahir : ‘); readln(recmaha[i].tgl_lahir);
              Writeln;
              End;

Writeln (‘Data mahasiswa yang anda masukkan : ‘);
Writeln;
For i:= 1 to n do
begin
            Writeln  (‘NIM : ‘, recmaha[i].nim);
            Writeln (‘Jurusan : ‘, recmaha[i].jurusan);
            Writeln (‘Nama : ‘, recmaha[i].nama);
            Writeln (‘Alamat : ‘, recmaha[i].alamat);
            Writeln (‘Telpon : ‘, recmaha[i].telp);
            Writeln (‘Tanggal Lahir : ‘, recmaha[i].tgl_lahir);
             Writeln;
            End;
Readln;
End.

Sehingga saat dijalankan akan tampak seperti gambar dibawah.
 
Terimakasih atas kunjungannya, semoga bermanfaat ;)