Senin, 17 Januari 2011

Struktur data

Data : adalah fakta atau kenyataan yang tercatat mengenai suatu objek.
Struktur data adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. struktur data biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan...

Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien
Sedangkan data adalah representasi dari fakta dunia nyata.
Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol

Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.


Beberapa struktur data :
�� Array (larik)
�� String
�� Record
�� List (daftar)
�� Tree



Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan buku, ketika mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu persatu dari buku yang paling atas dari tumpukan buku tersebut. Sebuah stack hanya dapat ditambahkan dan dikurangi elemennya hanya dari satu sisi yakni elemen atasnya atau biasa disebut Top Of Stack.

Queue adalah kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). Berbeda dengan stack yang bersifat LIFO maka queue bersifat FIFO(First In First Out), yaitu data yang pertama masuk akan keluar terlebih dahulu dan data yang terakhir masuk akan keluar terakhir.


QUEUE ( ANTRIAN )
- Kumpulan data dimana data masuk dan keluar pada ujung yang berbeda.
- Konsep utama FIFO ( Fisrt In First Out ).
Algoritma:
1. Input/tambah data
• Jika ada input maka no antrian yang semula 0 akan tambah 1 demi 1 sampai maksimal antrian.

2. 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.

Operasi pada queue
• CREATE
Membuat antrian baru yang masih kosong.
• FULL
Untuk memeriksa apakah antrian sudah penuh..

• PUSH
Menambah sebuah elemen ( data ) kedalam antrian.
Syarat: tidak bisa dilakukan jika antrian sudah penuh.
• EMPTY
• POP
Mengambil 1 elemen dari sebuah antrian.
Syarat: antrian tidak boleh kosong.


REKURSI
Rekursi (recursion) adalah proses dari suatu subprogram (dapat berupa fungsi atau prosedur) yang memanggil dirinya sendiri, sehingga dapat terjadi perulangan (looping). Rekursi merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern mendukung keberadaan proses rekursi ini, termasuk bahasa pemrograman pascal.


Beda rekursi dan iteratif

Rekursi:
Perulangan rekursif merupakan salah satu metode di dalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.

Iterasi:
Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok instruksi. Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut tidak terpenuhi lagi maka perulangan akan terhenti.

{Program rekursi deret dalam bentuk prosedur}
Uses crt;
procedure deret(N:word);
Begin
write(N:3);
if N < 10 Then
deret(N+1);
end;
{Program Utama}
var N:word;
Begin
clrscr;
N := 0;
deret(N);
readln;
end.

Kelemahan Rekursi

Untuk kasus-kasus tertentu, rekursi dapat mempunyai kelemahan, yaitu suatu proses yang sudah dilakukan akan diproses ulang kembali, sehingga akan membuat proses menjadi lama.
Uses crt;
Function Fibonacci (N : word) : word;
Begin
If N<2 then
Fibonacci := N
Else
Fibonacci := Fibonacci(N-2) + Fibonacci(N-1);
End;
{Program Utama}
Var N : word;
Begin
Clrscr;
Write(‘Suku ke berapa ? ‘);readln(N);
Writeln(‘Nilai suku ke ‘, N ,’ adalah ‘, Fibonacci(N));
Readln;
End



Penerapan Tumpukan(Stack)
- Mengubah Notasi Infix ke Postfix
1. Seluruh operand dan operator dipush ke dalam stack satu persatu dimulai dari awal.
2. operasi pop terjadi bila ada operator yang masuk kedalam stack.
3. Bila operator yang masuk kedalam stack, hirarkinya <= maka operator yang ada dalam stack harus dikeluarkan.
4. bila ada ) masuk maka semua operan dan operator harus dikeluarkan dari dalam stack sebatas (.
5. Operator dan operand dibawah ( tidak boleh dioperasika selama )belum masuk kedalam stack.


Contoh Rekursi Pangkat
program pangkat;
uses wincrt;
var A,x,i,hasil:integer;
begin
writeln('masukkan bilangan yang akan dipangkatkan');readln(A);
writeln('masukkan bilangan pangkat');readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln('hasil dari ',A,' pangkat ',x,' adalah ',hasil);
readln;
end.


Contoh Rekursi
Uses wincrt;
var i : byte;
procedure rekursi;
begin
if i<5 then
begin
writeln('Struktur data');
i := i + 1;
rekursi;
end;
end;
{Program Utama}
begin
clrscr;
i := 0;
rekursi;
readln;
end.


Program rekursi dengan prosedur
Uses crt;
procedure deret(N:word);
Begin
write(N:3);
if N < 10 Then
deret(N+1);
end;
{Program Utama}
var N:word;
Begin
clrscr;
N := 0;
deret(N);
readln;
end.


Menghitung faktorial dengan rekursi
uses crt;
procedure faktorial(N:integer; var hasil:longint);
begin
if N <= 1 then
hasil:=1
else
begin
faktorial(N-1,hasil);
hasil := hasil * N;
end;
end;

Tidak ada komentar:

Posting Komentar