REKURSI
A. TUJUAN
1. Agar mahasiswa dapat mengetahui apa yang dimaksud dengan rekursi
2. Agar mahasiswa dapat mengetahui proses terjadinya rekursi, dimana kelebihan dari rekursi
adalah dapat memanggil dirinya sendiri.
B. PERALATAN
1. Komputer
2. Kertas HVS kosong
3. Alat tulis menulis
4. Buku Struktur data menggunakan Turbo Pascal
C. LANDASAN TEORI
Rekursi adalah suatu proses yang bisa memanggil diriya sendiri. Dalam rekursi sebenarnya
terkandung pengertian prosedur atau fungsi. Perbedaannya adalah rekursi bisa memanggil
dirinya sendiri, terapi peosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau
fungsi. Rekursi merupakan teknik pemograman yang penting, dan beberapa bahasa
pemograman modern mendukung keberadaan proses rekursi ini. Dalam prosedur atau fungsi,
pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan akan
berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik pemograman yang
berdayaguna untuk digunakan pada pekerjaan pemograman dengan mengekspresikannya ke
dalam suku-suku dari program lain dengan menambalkan langkah-langkah sejenis.
D. TUGAS PENDAHULUAN
1. Susunlah algoritma dari cuplikan program di bawah ini, sehingga embentuk proses rekursi
2. Ketiklah cuplikan program di bawah ini untuk menyajikan dari proses rekursi yang akan
disajikan yaitu dalam bentuk menyusun semua permutasi yang mungkin dari sekelompok
karakter. Yaitu dimana kita mempunyai 3 buah karakter A, B, dan C, maka semua permutasi
yang mungkin dari ketiga karakter ini adalah
A B C B A C C A B
A C B B C A C B A
Secara umum, banyaknya permutasi dari N buah karakter adalah N faktorial. Dan di dalam
contoh di atas N=3, sehingga banyaknya permutasi adalah 3! = 6
Proses penyusunan permutasinya bisa dijelaskan sebagai berikut:
Cetak elemen ke 1 dan cetak permutasi elemen ke 2 sampai ke N (permutasi
dengan N-1 elemen)
Cetak elemen kedua dan cetak permutasi elemn ke-1, elemen ke 3 sampai ke N
(permutasi dengan N-1 elemen)
Cetak elemen ke 3 dan cetak permutasi elemen ke 1, elemen ke 2, elemen ke 4
sampai ke N (permutasi dengan N-1 elemen)
Dan seterusnya sampai langkah terakhir adalah cetak ke N, elemen permutasi
elemen ke 1 sampai elemen ke (N-1) (permutasi dengan N-1 elemen)
Proses di atas diulang terus sampai dicetak permutasi dengan 1 elemen dimana N=3, maka
caranya adalah:
Cetak ‘A’, dan cetak permutasi (‘B’,’C’);
Cetak ‘B’, dan cetak permutasi (‘A’,’C’);
Cetak ‘C’, dan cetak permutasi (‘A’,’B’);
1
Dan program selengkapnya adalah di bawah ini
Program Susun_Permutasi;
uses crt;
const Max=5;
Type larik=array [1..max] of char;
var A :larik;
c_permutasi,
c_elemen,
I:integer;
Lagi:char;
var I :integer;
Temp :char;
begin
if K=N then
begin
B:=succ(B);
write('Permutasike',B:2,':');
for I:= 1 to N do
write(A[I]:3);
writeln;
end
else
for I:= K to N do
begin
temp:=A[I];
A[I]:=A[K];
A[K]:=Temp;
PERMUTASI(B,A,K+1,N)
end;
end;
{Program Utama}
begin
repeat
clrscr;
write('Banyak Karakter yang akan ');
write('Dipermutasikan:');
repeat
gotoxy(47,1);write(' ');
gotoxy(47,1);readln(C_Elemen)
until C_Elemen <=max;
{Mencetak Hasil}
2
writeln;
writeln('Banyak Permutasi :',C_Permutasi:3);
writeln;
write('Akan coba Lagi ?(Y/T): ');readln(lagi)
until not (Lagi in ['Y','y'])
end.
3
MODUL 2
TUMPUKAN
A. TUJUAN
1. Agar mahasiswa dapat mengetahui apa yang dimaksud dengan tumpukan.
2. Agar mahasiswa dapat mengetahui sistematika tumpukan atau stack.
B. PERALATAN
1. 1 personal komputer (PC)
2. Kertas HVS kosong
3. Alat tulis menulis
4. Buku struktur data menggunakan Turbo Pascal
C. LANDASAN TEORI
Tumpukan secara sederhana, tumpukan bisa diartikan sebagai kumpulan data yang seolah-olah
data diletakkan di atas data yang lain. Satu hal yang perlu diingat adalah bahwa kita bisa
menambah (menyisipkan data), dan mengambil (menghapus)data lewat ujung yang sama, yang
disebut sebagai ujung atas tumpukan.
PUSH adalah salah satu operasi yang dapat dilakukan pada data berbentuk tumpukan atau stack.
Tumpukan atau stack adalah operasi penyisipan atau penambahan data pada ujung stack,
operasi ini disebut dengan PUSH
POP adalah untuk mengeluarkan data pada suatu tumpukan atau stack. Operasi pengambilan
data atau penghapusan data sari stack disebut dengan POP
ARRAY dapat didefinisikan sebagai suatu himpunan hingga elemen terurut dan homogen.
TERURUT dapat diartikan bahwa elemen tersebut dapat teridentifikasikan sebagai elemen
pertama, kedua dan seterusnya hingga elemen ke n.
HOMOGEN bahwa setiap elemen dari sebuah arrau tentulah harus mempunyai tipe data yang
sama.
D. TUGAS PENDAHULUAN
1. Susunlah algoritma dati cuplikan program di bawah ini.
2. Buatlah cuplikan program dbawah ini untuk membalikkan kalimat.
Program Balik_Kalimat;
uses crt;
Const MaxElemen = 100; {Batas Maksimum Karakter}
Type S100 = String [MaxElemen];
Tumpukan = record
Isi : S100;
Atas : 0..MaxElemen
end;
var T : Tumpukan; {Nama Tumpukan}
I : Integer; {Pencacah}
Kalimat : S100;
{*******************************
Procedure inisialisasi tumpukan
********************************}
Procedure Awalan (var T : Tumpukan);
Begin
T.Atas :=0
end; { Procedure Awalan }
4
{************************************************
Procedure untuk memasukan MaxElemen ke dalam
tumpukan. Dalam hal ini Cacah karakter maksimum
tidak boleh lebih dari 100
************************************************}
Procedure PUSH (var T : Tumpukan; X:char);
begin
T.Atas:= T.Atas + 1;
T.isi[t.atas]:= x;
end; {Procedure PUSH}
{Program Utama}
begin
clrscr;
Awalan(T);
writeln('Tumpukan Untuk Membalik Kalimat');
writeln('-------------------------------');
writeln;
clrscr;
writeln('Kalimat Asli :'); writeln(Kalimat);
writeln('--------------');
5
MODUL 3
TIPE DATA POINTER
A. TUJUAN
1. Mahasiswa dapat mengetahui apa yang dimaksud dengan pointer
2. Mahasiswa dapat mengetahui sistematika dari cara kerja penggunaan pointer
B. PERALATAN
1. 1 Personal Komputer (PC)
2. Kertas HVS kosong
3. Alat tulis menulis
4. Buku struktur data dengan menggunakan Turbo Pascal
C. LANDASAN TEORI
Perubahan dinamis adalah suatu perubah yang akan dialokasikan hanya pada saat dikompilasi,
lokasi untuk perubah tersebut belum ditentukan.Kompiler hanya mencatat bahwa suatu
perubah akan diperlukan sebagai perubah dinamis.
Nama perubah yang kita gunakan untuk mewakili suatu nilai data sebenarnya merupakan atau
menunjukkan lokasi tertentu dala pengingat komputer di mana data yang diwakili oleh nama
perubah tersebut disimpan. Perubah-perubah yang demikina ini dinamakan dengan perubah
statis
Secara umum ada dua operasi dasar yang biasa kita lakukan menggunakan data yang bertipe
pointer. Operasi yang pertama adalah mengkopi pointer, sehingga sebuah simpul akan ditunjuk
oleh lebih dari sebuah pointer yang berbeda. Opersi yang kedua adalah mengkopi isi simpul
sehingga mempunyai dua atau lebih simpul yang ditunjuk oleh pointer yang berbeda yang
mempunyai isi yang sama. Syarat yang harus dipenuhi untuk kedua operasii ini adalah bahwa
pointer dioperasikan harus mempunyai deklarasi yang sama.
D. TUGAS PENDAHULUAN
1. Susunlah algoritma dari proses tipe data pointer
2. Sebutkan perbedaan dan persamaan dari peruba statis dan perubah dinamis.
3. Buatlah cuplikan dari program dibawah ini:
uses crt;
type p=^simpul;
simpul=record
info :integer;
Nama :string[20];
Alamat:string[20];
Ipk :real;
Next :p;
end;
begin
clrscr;
write('Masukan jumlah data : ');readln(n);
New(L);
I := N;
L^.info := n;
L^.next := nil;
while (n>0) do
6
begin
New(temp);
N := N - 1;
writeln;
write('Data ke ',(L^.info-N));writeln;
write('Nama Anda : ');readln(Temp^.nama);
write('Alamat : ');readln(Temp^.alamat);
write('I P K : ‘);readln(Temp^.ipk);
writeln;
temp^.next := l^.next;
l^.next := temp;
end;
writeln;
clrscr;
writeln('======================');
writeln('Data Yang anda masukan');
writeln('======================');
temp := L;
writeln('Banyak data : ',l^.info);writeln;
writeln('Data Tersebut adalah : ');
writeln;
temp := temp^.next;
repeat
writeln('Nama Anda : ',temp^.nama);
writeln('Alamat : ',temp^.alamat);
writeln('I p k : ',temp^.ipk:0:2);writeln;
temp := temp^.next
until temp = nil;
readln;
end.
7
MODUl 4
ANTRIAN
( IMPLEMENTASI ANTRIAN DENGAN POINTER )
A. TUJUAN
1. Mahasiswa dapat mengetahui apa yang dimaksud dengan antrian
2. Mahasiswa dapat mengetahui sistematika antrian
B. PERALATAN
1. 1 personal komputer
2. Kertas HVS kosong
3. Alat tulis menulis
4. Buku struktur data menggunakana Turbo Pascal
C. LANDASAN TEORI
ANTRIAN adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan
pada suatu ujung (yang disebut dengan sisi belakang atau hear), dan penghapusan(pengambilan
elemen dilakukan lewat ujung lain yang disebut dengan sisi depan)
Contohnya adalah mobil-mobil yang antri membeli karcis di pintu jalan tol yang akan
membentuk antrian
LIFO (Last In First Out) adalah model antrian dimana yang terakhir masuk adalah yang pertama
keluar.
FIFO (First In First Out) adalah model antrian dimana yang masuk pertama akan keluar pertama.
ANTRIAN BERPRIORITAS adalah setiap elemen yang akan masuk dalam antrian sudah ditentukan
lebih dahulu prioritasnya, dalam hal ini berlaku dua ketentuan, yaitu:
Elemen-elemen yang mempunyai prioritas lebih tinggi akan diproses terlebih dahulu.
Dua elemen yang mempunyai prioritas sama akan dikerjakan sesuai dengan urutan pada
saat kedua elemen ini masuk dalam antrian.
D. TUGAS PENDAHULUAN
1. Buatlah algoritma dari cuplikan program di bawah ini
2. Ketiklah cuplikan program di bawah ini dan perbaikilah program tersebut jika terdapat
kesalahan.
uses crt;
const max = 10;
type node =^queue;
queue = record
kar : char;
next : node;
end;
var pil : char;
jml : byte;
head,now,tail : node;
8
now^.kar := ch;
end;
Procedure Pop;
begin
now := head;
head := head^.next;
dispose(now);
end;
Procedure Enqueue;
Var i : byte; temp : char;
begin
gotoxy (1,6); ClrEol; write ('Masukan @ Karakter : ');
repeat
gotoxy (25,6); Clreol; temp := readkey; write (temp);
until temp <> '';
push (temp);
for i := 1 to 75 - Jml * 6 do
begin
gotoxy (i + 1,20); write (' 0');
gotoxy (i+1, 21); write (' =(',now^.kar,')=');
gotoxy (i + 3, 22); write ('/ \'); delay(10);
if i <> 25 - jml * 6 then
begin
gotoxy (i + 1, 20); write(' ');
gotoxy (i, 21); write (' ');
gotoxy (i + 1, 22); write (' ');
end;
end;
end;
Procedure Dequeue;
var i,byk : byte;
begin
now := head;
for i := 69 to 76 do
begin
gotoxy (i + 1, 20); write ('O');
gotoxy (i +3, 21); write ('=(',now^.kar,')=');
gotoxy (i + 3, 22); write ('/ \'); delay (10);
gotoxy (i + 1, 20); write (' ');
gotoxy (i , 21); write (' ');
gotoxy (i + 1, 22); write (' '); end;
byk := 0;
while Byk <> jml do
begin
inc (byk);
Now := now^.next;
for i := 69 - byk * 6 to 75 - byk * 6 do
begin
gotoxy (i + 1, 20); write (' O ');
gotoxy (i , 21); write ('=(',now^.kar,')=');
gotoxy (i + 1, 20); write ('/ \');delay (25);
if i <> 75 - byk * 6 then
begin
gotoxy (i + 1, 20); write (' ');
gotoxy (i , 21); write (' ');
gotoxy (i + 1, 22); write (' ');
end;
end;
9
end;
end;
Procedure Input;
begin
gotoxy (1,1); writeln ('1. Engueue ');
gotoxy (1,2); writeln ('2. Degueue ');
gotoxy (1,3); writeln ('3. Exit');
repeat
repeat
gotoxy (1,4);ClrEol; write ('Your Choice : ');
pil := readkey; write (Pil);;
until pil in ['1','2','3'];
case Pil of
'1' : begin
if jml < max then
begin
inc (Jml);
Enqueue;
end else
begin
gotoxy (1,8); write ('Antrian Penuh !');
delay (500);
gotoxy (1,8); ClrEol;
end;
end;
'2' : begin
if jml >= 1 then
begin
Dec (Jml);
Dequeue;
Pop;
end else
begin
gotoxy (1,8); write ('Antrian Kosong !');
delay (500);
gotoxy (1,8); ClrEol;
end;
end;
end;
Until Pil = '3';
end;
begin
Jml := 0;
Clrscr;
Input;
end.
10
MODUL 5
POHON
A. TUJUAN
1. Mengetahui apa yang dimaksuud dengan pohon pada struktur data
2. Memahami cara kerja pohon dalam struktur data
B. PERALATAN
1. Personal komputer
2. Kertas HVS kosong
3. Alat tulis menulis
4. Buku struktur data menggunakan Turbo Pascal
C. LANDASAN TEORI
1. POHON
Pohon atau tree adalah salah satubentuk graph terhubung yang tidak mengandung sirkuit.
Karena merupakan graph terhubung maka pohon selalu terdapat path atau jalur yang
menghubungkan setiap duasimpul dalam pohon.
Secara sederhana bisa didefinisikan sebagai kumpulan elemen yang lain (yang disebut
simpul) terpecah menjadi sejumlah himpunan yang tidak terhubung satu dengan yang lain
yang disebut subpohon (subtree) atau juga disebut cabang. Jika kita melihat pada setiap
subpohon, maka setiap suubpohon inipun mempunyai akar dan subpohon masing-masing
2. POHON BINER
Pohon biner (binery tree) bisa didefinisikan sebagai suatu kumpulan simpul yang mugkin
kosong atau mempunyai akar dan dua subpohon yang saling terpisah yang disebut dengan
subpohon kiri (left subtree) dan subpohon kanan (right subtree)
D. TUGAS PENDAHULUAN
1. Buatlah algoritma dari cuplikan program dibawah ini, yaitu untuk mendeklarasikan simpul
untuk membuat pohon biner.
2. Ketiklah cuplikan program dibawah ini.
Program Binary_tree;
uses crt;
type
ptr =^pohon;
pohon = record
isi : byte;
left, right : ptr;
end;
var
root, now : ptr;
x,y,cari : byte;
11
now^.isi := data;
now^.left := nil;
now^.right := nil;
Tree := now;
end else
if data < Tree^.isi then
Push (Tree^.left, data, level)
else
if data >= Tree^.isi then
Push (Tree^.right, data, level);
end;
12
begin
dec(y,2);
gotoxy (x,y);textcolor(10); write(cari); Readkey;
gotoxy (x,y);textcolor(15); write(cari);
end;
13
MODUL 7
A. TUJUAN
1. Mengetahui apa yang dimaksud dengan preorder, inorder, dan postorder
2. Memahami cara kerja kunjungan preorder, inorder, dan postorder pada pohon
B. PERALATAN
1. Personal komputer (PC)
2. Kertas Kosong
3. Alat tulis menulis
4. Disket kerja
5. Buku sturktur data
C. LANDASAN TEORI
Atas sebuah pohon kita dapat melakukan sejumlah operasi, salah astu operasi yang sering
dilakukan adalah melakukan kunjungan pada setiap simpul pada suatu pohon biner tepat satu
kali dengan melakukan kunjungan secara lengkap. Seperti yang telah dijelaskan di atas bahwa
urutan informasi yang tersimpan dalam pohon biner akan berbeda jika letak simpul ditukar.
Dengan alasan inilah kita bisa melakukan kunjungan dengan tiga cara yaitu secara
preorder,inorder, dan postorder. Kunjungan preorder dilaksanakan dengan mencetak simpul
yang dikunjungi, kunjungan cabang kiri dan kunjungan cabang kanan. Kunjungan inorder
dimulai dari kunjungan ke cabang kiri, kemudian mencetak akar dan diteruskan dengan
kunjungan ke cabang kanan. Ketiga macam kunjungan ini akan kita perlakukan kembali
terhadap cabang kiri atau cabang kanan. Urut-urutan dalam kunjungan postorder adalah
kunjungi cabang kiri, cabang kanan dan cetak simpul. Langkah ini diulang untuk cabang kiri dan
cabang kanan.
D. TUGAS PENDAHULUAN
1. Buatlah algoritma dari cuplikan program dibawah ini
2. Ketiklah program dibawah ini.
uses crt;
const
max=10;
type
arr=array[1..max] of byte;
var
i :byte;
data :arr;
procedure input;
begin
clrscr;
writeln(' Insert 10 Bilangan : ');
writeln('======================');
for i:=1 to max do
begin
write('Data ke-',i,'=');readln(data[i]);
end;
clrscr; write(data[i] , ' ');
writeln('Data Yang Terurut :');
writeln('===================');
end;
procedure Move(x,y:byte); {untuk menggeser data ke depana satu
var i:byte; langkah }
begin
for i:= y downto x do
data[i]:=data[i-1];
end;
14
procedure FindPos(x:byte; var y:byte);
var i:byte;
begin
y:=x; i:=0;
repeat
inc (i)
until data[x]<=data[i];
y:=i;
end;
procedure insert;
var
i,j,temp :byte;
begin
for i:=2 to max do
begin
temp:= data[i]; findpos(i,j);
move(j,i);data[j]:=temp;
end;
end;
procedure cari;
function search(x,n:integer):integer;
var
find : boolean;
l,r,mid,temp: integer;
begin
l:=1; r:=n;
find:=false;
repeat
mid:=(l + r) div 2;
if x=data[mid] then
begin
temp:=mid;find:=true;
end else
d+1;
until find or (l > r);
if not find then temp:=0;
search:=temp;
end;
var bil:byte;
begin
gotoxy(1,7); write(' Bilangan yang dicari : ');readln(bil);
gotoxy(1,8); write(' Data yang dicari pada urutan ke- ',
search(bil,max));
end;
procedure output;
begin
for i := 1 to max do
write(data[i] ,' ');
end;
begin
input;
insert;
output;
cari;readkey;
end.
15
Uses crt;
Const
Max = 5;
Type
Tipe_data = byte;
Rec_arr = array[1..max] of tipe_data;
Var
I : byte;
Data :rec_arr;
Procedure CetakLangkah(data:rec_arr;step,source,target:byte);
Var I : byte;
Begin
Gotoxy(20,7+step);write(‘I I I I I I’);
Gotoxy(4,7+step);write(‘Langka ‘, step,’ :’);
For I := 1 to max do
Begin
Gotoxy(17+i*5,7+step);write(data[i]);
End;
Gotoxy(47,7+step);write(‘data ‘,source,’ Insert data ‘,target);
End;
Procedure insert(var data:rec_arr;mulai,akhir:byte);
Var temp, I : byte;
Begin
Temp := data[akhir];
For I := akhir downto mulai do
Begin
Data[i] := data[i-1];
End;
Data[mulai]:= temp;
End;
Procedure insertanim (var data:rec-arr; jml_data:byte);
Var
Ketemu :Boolean;
Count,I,x,step :byte;
Begin
Step := 0;
For I := 2 to jml_data do
Begin
Ketemu := false;
Count := 0;
Repeat
Inc (count);
Begin
Inc (step);
Insert(data,count,i);
Ketemu := true;
16
End;
End;
End;
Procedure cetakdata;
Var I : byte;
Begin
Clrscr;
Gotoxy(30,1);write(‘Insertion Sort’);
Gotoxy(30,1);write(‘================’);
Gotoxy(30,1);write(‘’); ----------------------
--
Gotoxy(30,1);write(‘’); I I I II I III I
IV I ’);
Gotoxy(30,1);write(‘’); I-----I-----I-----I---
--I ’);
Gotoxy(30,1);write(‘’); I I I
I I ’);
For I := 1 to 5 do
Begin
Gotoxy (17+i*5,6);write(data[i]);
End;
End;
Procedure RandomData;
Var I : byte;
Begin
Randomize;
For I := 1 to 5 do data[i] := random(100);
End;
Begin
Randomdata;
Cetakdata;
Insertanim(data,5);
Readkey;
End.
17
MODUL 8
PENGURUTAN / SORTING
A. TUJUAN
1. Mengetahui apa yang dimaksud dengan metode penyimpanan dan metode seleksi dalam
pengurutan
2. Memahami cara kerja metode penyisipan dan metode seleksi dalam pengurutan
B. PERALATAN
1. Personal Kimputer (PC)
2. Kertas kosong
3. Alat tulis menulis
4. Buku struktur data
C. LANDASAN TEORI
Pengurutan
Pengurutan data/ sorting (ada juga yang menyebutnya sebagai pemilihan data) secara
umum bisa didefinisikan sebagai suatu proses untuk menyusun kembali himpunan objek
menggunakan aturan tertentu. Secara umum ada dua jenis pengurutan data, yaitu
pengurutan secara urut naik (ascending), yaitu pengurutan dari data dengan nilai terkecil
sampai pada data yang nilanya paling besar. Kedua pengurutan data secara urut turun
(descending), yaitu pengurutan dari data yang memunyai nilai paling besar sampai paling
kecil. Dalam hal ini pengurutan data yang bertipe string atau char, nilai data dikatakan lebih
besar atau lebih kecil dari yang lain didasarkan pada urutan relatif. Tujuan pengurutan
adalah untuk mempermudah pencarian data dikemudian hari.
Metode Seleksi
Cara kerja metode seleksi didasarkan pada pencarian elemen dengan nilai terkecil,
kemudian dilakukan penukaran dengan elemen ke 1. Secara singkat metode ini bisa
dijelaskan sebagai berikut: Pada langkah pertama dicari data yang terkecil dari data pertama
sampai data terakhir, kemudian data terkecil tersebut kita tukar dengan data pertama.
Dengan demikian data pertama memiliki nilai terkecil dibandingkan nilai yang lain. Pada
langkah kedua data terkecil yang kita peroleh dibandingkan dengan data sampai data
terakhir. Demikian seterusnya samapi seluruh data dalam keadaan terurutkan.
D. TUGAS PENDAHULUAN
1. Buatlah algoritma dari cuplikan program di bawah ini.
2. Ketiklah program berikut ini.
18
Uses crt;
Const
Max = 5;
Type
Tipe_data = byte;
Rec_arr = array[1..max] of tipe_data;
Var
I : byte;
Data :rec_arr;
Procedure CetakLangkah(data:rec_arr;step,source,target:byte);
Var I : byte;
Begin
Gotoxy(20,7+step);write(‘I I I I I I’);
Gotoxy(4,7+step);write(‘Langka ‘, step,’ :’);
For I := 1 to max do
Begin
Gotoxy(17+i*5,7+step);write(data[i]);
End;
Gotoxy(47,7+step);write(‘data ‘,source,’ Insert data ‘,target);
End;
Procedure insert(var data:rec_arr;mulai,akhir:byte);
Var temp, I : byte;
Begin
Temp := data[akhir];
For I := akhir downto mulai do
Begin
Data[i] := data[i-1];
End;
Data[mulai]:= temp;
End;
Procedure insertanim (var data:rec-arr; jml_data:byte);
Var
Ketemu :Boolean;
Count,I,x,step :byte;
Begin
Step := 0;
For I := 2 to jml_data do
Begin
Ketemu := false;
Count := 0;
Repeat
Inc (count);
If data[i] < data[count] then
Begin
Inc (step);
Insert(data,count,i);
Ketemu := true;
End;
Until ketemu of (count = i);
If ketemu then cetaklangkah (data,step,I,count);
End;
Gotoxy(67,7+step);write(‘ tersort ‘);
Gotoxy(20,8+step);write (‘I___I___I___I___I___I ‘);
19
End;
Procedure cetakdata;
Var I : byte;
Begin
Clrscr;
Gotoxy(30,1);write(‘Insertion Sort’);
Gotoxy(30,1);write(‘================’);
Gotoxy(30,1);write(‘ --------------------
----‘);
Gotoxy(30,1);write(‘ I I I II I III
I IV I ’);
Gotoxy(30,1);write(‘ I-----I-----I-----I-
----I ’);
Gotoxy(30,1);write(‘ Data Awal : I I I I
I ’);
Gotoxy(30,1);write(‘ I I I
I I ’);
For I := 1 to 5 do
Begin
Gotoxy (17+i*5,6);write(data[i]);
End;
End;
Procedure RandomData;
Var I : byte;
Begin
Randomize;
For I := 1 to 5 do data[i] := random(100);
End;
Begin
Randomdata;
Cetakdata;
Insertanim(data,5);
Readkey;
End.
20