Wednesday, October 24, 2012

ARRAY, QUEUE, RECORD.docx



BAB I
PENDAHULUAN

a.    Latar belakang
     Dengan adanya kemajuan Tekhnologi di dunia ini akal pikiran manusia semakin mahir dalam menciptakan sesuatu yang bermanfaat bagi kehidupan mereka, salah satunya dalam pembuatan program – program yang sangat membantu mereka dalam menyelesaikan pekerjaan mereka dengan cepat, baik dan memuaskan, maka dari itu penulis menyusun makalah mengenai array, queue, record dan stack merupakan salah satu bagian dari kemajuan zaman yang betul betul terlihat manfaatnya. Array, queue, record dan stack bisa juga disebut sebagai salah satu program yang terlahir dari dunia tekhnologi lewat pola pikir manusia yang bermanfaat untuk menyelesaikan suatu penghitungan.

b.    Maksud dan Tujuan
     Maksud dan tujuan penulis dalam penyusunan makalah ini sebagi penambah informasi bagi penulis yang di outputkan lewat tulisan tulisan yang terdapat pada makalah ini dan berharap penulis memberikan informasi dipenyusunan makalah ini yang isinya tentang array, queue, record dan stack yang sangat jelas  bagi pembaca. Dengan mengetahui tentang array, queue, record dan stack maka penulis maupun pembaca dapat menambah pengetahuan ilmu yang menyangkut dalam dunia tekhnologi pemograman.

c.    Metode Penulisan
     Metode penulisan untuk pembuatan makalah ini penulis menggunakan metode informasi yang diambil atau didapat dari internet dan sedikit metode pengetahuan penulis yang didapat dari pembelajaran penulis dalam ruang lingkup perkuliahan.

BAB II
POKOK PERMASALAHAN

            Penulis menerangkan tentang array, queue, record dan stack dalam makalah ini dan yang menjadi permasalahannya adalah :
  1. Defenisi Array beserta contoh array.
  2. Defenisi Queue beserta contoh queue.
  3. Defenisi Record beserta contoh record.
  4. Defenisi Stack beserta contoh Stack.
            Ke-empat poin tersebut diatas adalah pokok permasalahan yang akan di terangkan secara penuh dalam penyusunan makalah ini, sehingga setelah mengetahui dari ke-empat poin tersebut penulis dapat menyimpulkan kesimpulan dari pembuatan atau penyusunan makalah tentang array, queue, record dan stack ini.


BAB III
I S I / PEMBAHASAN

  1. ARRAY
A.1  Defenisi array.
            Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Elemen-elemen array tersusun secara sekuensial dalam memory computer. Array dapat berupa satu dimensi, dua dimensi, tiga dimensi ataupun banyak dimensi (multi dimensi).
Array itu :

1. Array : a finite ordered set of homogenous elements
2. Elemen-elemen array tersusun secara berderet dan dapat diakses secara random di dalam memori.
3. Array memiliki alamat yang besebelahan/berdampingan tergantung lebar tipe datanya.
4. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.
5. Elemen-elemen array bertipe data sama dan bisa berisi nilai yang sama atau berbeda-beda.
terdapat beberapa array diantaranya :
     -   Array Satu Dimensi
Array Satu Dimensi tidak lain adalah kumpulan elemen-elemen identik yang tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data yang sama, tetaoi isi dari elemen tersebut boleh berbeda.
     -     Array Dua Dimensi
Array Dua Dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan beberapa kolom elemen, maka array dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen yang bertipe sama.
-          N- Array
N-array artinya masih banyak lagi array array yang diatas dua dimensi.
            A.2  Pengaksesan Elemen Array

- Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu secara random ataupun berurutan.

- Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud.

- Dalam C, tidak terdapat error handling terhadap batasan nilai indeks, apakah indeks tersebut berada di dalam indeks array yang sudah didefinisikan atau belum. Hal ini merupakan tanggung jawab programmer. Sehingga jika programmer mengakses indeks yang salah, maka nilai yang dihasilkan akan berbeda atau rusak karena mengakses alamat memori yang tidak sesuai.

            A.3   Operasi - Operasi Array

! Penambahan elemen array

! Menampilkan elemen array

! Pencarian elemen array
Cari, jika ditemukan, katakan KETEMU!

! Penghapusan elemen array
Cari, jika ditemukan kemudian dihapus!

! Pengeditan elemen array
Cari, jika ditemukan kemudian diedit!
            A.4   Contoh Array
Array Nilai siswa
uses crt;
var Nilai : array[1..50] of real;
jumlah, rata : real;
i,a, JumDat : byte;
nama : string;
begin
clrscr;
{jumlah:=0;}
writeln(‘ Nilai Rata – Rata Praktikum Kelas
TK2A’);

Writeln(‘—————————————’);
write(‘Nama Mahasiswa =’ );readln(nama);
Write(‘Berapa Jumlah data = ‘);readln(JumDat);
for i := 1 to Jumdat do
begin
Write(‘Nilai Praktiklum ke
‘,i,’=');Readln(Nilai[i]);
end;
jumlah:=0;
for i:= 1 to JumDat do
begin
Jumlah := jumlah + Nilai[i];
rata := Jumlah/JumDat;
end;
writeln;
clrscr;
writeln(‘Nama Mahasiswa =’,nama);
for i := 1 to jumdat do
begin
writeln(‘Nilai Praktekm ke-’,i,’
=’,nilai[i]:3:0);
end;
writeln(‘Total Nilai = ‘, jumlah:8:0);
writeln(‘Nilai Rata – rata = ‘, Rata:8:1);
readln;
end.
  1. QUEUE.
B.1   Defenisi Queue.
            Jika diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki operasi-operasi sebagai berikut :
-          EnQueue Memasukkan data ke dalam antrian
-          DeQueue Mengeluarkan data terdepan dari antrian
-          Clear Menghapus seluruh antrian
-          IsEmpty Memeriksa apakah antrian kosong
-          IsFull Memeriksa apakah antrian penuh
Queue ( Antrian ) merupakan kumpulan daya yang seolah – olah terihat seperti ada data yang diletakkan disebelah data yang lainnya . Queue memiliki sifat FIFO.
b. Queue dengan Linear Array
Linear Array adalah suatu array yan dibuat seakan – akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar .
c. Queue dengan Circular Array
Circular Array merupakan suatu array yang dibuat seakan – akan merupakan sebuah lingkaran dengan titik awal an titik akhir saling bersebelahan jika array dalam keadaan kosong .
d. Queue dengan Double Lingked List
Merupakan Queue yang menggunakan Double Lingked List yang dapat menghemat memori dalam pengerjaan nya seperti pengertian Double Lingked List sebelumnya
.
Implementasi Queue dengan Linear Array
Linear Array
Linear array adalah suatu array yang dibuat seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar. Berikut ini diberikan deklarasi kelas Queue Linear sebagai implementasi dari Queue menggunakan linear array. Dalam prakteknya, anda dapat menggantinya sesuai dengan kebutuhan Anda. Data diakses dengan field data, sedangkan indeks item pertama dan terakhir disimpan dalam field Head dan Tail. Konstruktor akan menginisialisasikan nilai Head dan Tail dengan -1 untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak MAX_QUEUE yang ditunjuk oleh Data. Destruktor akan mengosongkan antrian kembali dan mendealokasikan memori yang digunakan oleh antrian.
Operasi-Operasi Queue dengan Linear Array
• IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. hal ini dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.
• IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya sama, berarti queue sudah penuh.
• EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen dalam queue.
• DeQueue
Fungsi DeQueue berguna untuk mengambil sebuah elemen dari queue. Operasi ini sering disebut juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang terletak di belakangnya.
• Clear
Fungsi Clear berguna untuk menghapus semua lemen dalam queue dengan jalan mengeluarkan semua elemen tersebut satu per satu hingga queue kosong dengan memanfaatkan fungsi DEQueue.
Implementasi Queue dengan Circular Array
Circular Array
Circular array adalah suatu array yang dibuat seakan-akan merupakan sebuah
lingkaran dengan titik awal (head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih kosong. Posisi head dan tail pada gambar diatas adalah bebas asalkan saling bersebelahan. Berikut ini diberikan deklarasi kelas Queue Circular sebagai implementasi circular array. Dalam prakteknya, Anda dapat menggantikanny sesuai dengan kebutuhan Anda. Data diakses dengan field data, sedangkan indeks itemn pertama dan terakhir disimpan dalam field Head dan Tail.
Konstruktor akan menginisialisasi nilai Head dan Tail dengan 0 dan MAX-QUEUE-1 untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak MAX-QUEUE yang ditunjuk oleh Data.
destruktor akan mengosongkan antrian kembali dan mendealokasikan memori yang digunakan olehantrian.
Operasi-Operasi Queue dengan Circular Array :
• IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah Queue masih kosong atau sudah berisi. Hal ini dilakukan dengan mengecek apakah tail masih terletak bersebelahan dengan head dan tail lebih besar dari head atau tidak. Jika benar, maka queue masih kosong.
• IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah tempat yang masih kosong tinggal satu atau tidak (untuk membedakan dengan empty dimana semua tempat kosong). Jika benar berarti queue penuh.
• EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue tail dan head mula-mula bernilai nol (0).
• DeQueue
DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara memindahkan posisi head satu langkah ke belakang.

Implementasi Queue dengan Double Linked List
Selain menggunakan array, queue juga dapat dibuat dengan linked list. Metode linked list yang digunakan adalah double linked list. Operasi-operasi Queue dengan Double Linked List :
• IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau tidak. Jika benar berarti queue masih kosong.


• IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.
• EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan tail mula-mula meunjukkan ke NULL).
• DeQueue
Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).
#include “stdio.h”
void main()
{ int queue[5];
int depan = -1;
int belakang = -1;
int pilihan, data, i;
do{
printf(“MENU\n”);
printf(“1. ENQUEUE\n2. DEQUEUE\n3. VIEW\n4. EXIT\n”);
printf(“Pilihan = “); scanf(“%d”, &pilihan);
switch (pilihan)
{
case 1: //enqueue
//apakah queue belum penuh?
if (belakang < 4 )
{ printf(“Data Masuk = “); scanf(“%d”, &data);
queue[belakang+1] = data;
belakang++;
if (belakang == 0)
depan = 0;
}
else
printf(“Queue penuh!\n”);
break;
case 2: //dequeue
//apakah queue belum kosong?
if (depan <= belakang)
{ printf(“Data keluar = %d\n”, queue[depan]);
depan++;
}
else
printf(“Queue kosong!\n”);
break;
case 3:
for(i=depan; i<=belakang; i++)
printf(“%d “, queue[i]);
printf(“\n”);
break;
}
}while (pilihan != 4);
}
  1. RECORD.
Definisi 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

contoh record
program sensus_penduduk;
uses crt;
type data = record
nomor : integer;
nama : string;
alamat : string;
jk : char;
pekerjaan : string;
end;
var pilihan, indeks: integer;
sensus :Array [1..100] of data;

procedure tambahkan;
var lagi:char;
begin
writeln(‘MEMASUKKAN DATA, PADA URUTAN KE-’, indeks);
writeln;
write(‘masukkan Nomor KTP : ‘); readln (sensus[indeks].nomor);
write(‘masukkan Nama : ‘); readln (sensus[indeks].nama);
write(‘masukkan Alamat : ‘); readln (sensus[indeks].alamat);
write(‘masukkan jenis Kelamin : ‘); readln (sensus[indeks].jk);
write(‘masukkan pekerjaan: ‘); readln (sensus[indeks].pekerjaan);
writeln;
indeks := indeks+1;
write(‘memasukkan data lagi?(y/n) ‘); readln(lagi);
if (lagi=’y') then
tambahkan;
end;
procedure tampilkan;
var i:integer;
begin
writeln;
writeln(‘DATA SENSUS’);writeln;
for i:=1 to indeks-1 do
begin
writeln(‘DATA PENDUDUK KE-’,i);
writeln(‘Nomor KTP : ‘,sensus[i].nomor);
writeln(‘Nama : ‘,sensus[i].nama);
writeln(‘Alamat : ‘,sensus[i].alamat);
writeln(‘Jenis Kelamin : ‘,sensus[i].jk);
writeln(‘Pekerjaan: ‘,sensus[i].pekerjaan);
writeln;
end;
readln;
end;
procedure ngedit;
var yde:integer;
lagi : char;
begin
tampilkan;
write(‘masukkan indeks data yang mau di-edit :’);
readln(yde);
writeln(‘MEMASUKKAN DATA, UNTUK MEMPERBAHARUI PADA INDEKS KE-’, yde);
writeln;
write(‘masukkan Nomor KTP : ‘); readln (sensus[yde].nomor);
write(‘masukkan Nama : ‘); readln (sensus[yde].nama);
write(‘masukkan Alamat : ‘); readln (sensus[yde].alamat);
write(‘masukkan jenis Kelamin : ‘); readln (sensus[yde].jk);
write(‘masukkan pekerjaan: ‘); readln (sensus[yde].pekerjaan);
writeln;
write(‘edit data lain?(y/n) ‘); readln(lagi);
if (lagi=’y') then
ngedit;
end;
begin
indeks := 1;
repeat
clrscr;
writeln(‘PROGRAM SENSUS PENDUDUK’);
writeln(‘———————–’);
writeln;
writeln(‘[1] MASUKKAN DATA’);
writeln(‘[2] TAMPILKAN DATA’);
writeln(‘[3] EDIT DATA’);
writeln(‘[4] keluar’);
writeln;
write(‘masukkan pilihan anda :’); readln(pilihan);
case pilihan of
1 : tambahkan;
2 : tampilkan;
3 : ngedit;
end;
until (pilihan>=4);
readln;
end.
  1. STACK.
        Defenisi 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”.
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

Contoh Stack
Dalam Stack terdapat dua operasi, yaitu :
  1. Menyisipkan data (PUSH)
Menambahkan / menyisipkan data ke dalam stack. Kita tidak bisa menambahkan data pada tumpukan yang sudah penuh (overflow).
Algoritma :

if t.atas = maxelemen
cout << ”sudah penuh ”;
else
{
// naikkan posisi tumpukan
// tambah isi tumpukan
}
2. Menghapus data (POP)
Menghapus elemen yang ada di posisi paling atas. Menghapus posisi juga akan menghapus elemen. Kita tidak mungkin menghapus elemen ketika tumpukan sudah kosong. (t.atas = 0)
Algoritma :
if t.atas = 0
cout << ”tumpukan kosong ”;
else
{
//kurangi t.atas;
}

BAB  IV
PENUTUP

Kesimpulan
            Array, queue, record dan stack termasuk kedalam penggolongan istilah kata pemograman yang berbeda beda.  Array dimana ia merupakan struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Elemen-elemen array tersusun secara sekuensial dalam memory computer.  Queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehidupan sehari-hari. 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. Stack suatu bentuk khusus dari linear list di mana operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja.
Penutup
            Makalah tentang Array, queue, record dan stack telah selesai penulis paparkan, semoga dengan adanya makalah ini bisa bermanfaat kedepannya bagi penulis sendiri umumnya bagi pembaca dan bisa menambah wawasan dalam ilmu tekhnologi, satu kata pesan dari penulis “carilah ilmu dengan tidak kepuasan karena ilmu tidak akan datang mencari kita”.
Terimakasih...

Artikel Terkait

No comments:

Post a Comment