sd iv hasil.docx

46
LAPORAN HASIL PRAKTIKUM STRUKTUR DATA NAMA : PENGKI NIM : DBC 114 070 KELAS : B MODUL : III ( PENGURUTAN DATA ) JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2015

Upload: pengki-ekopurnomo

Post on 15-Jan-2016

229 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SD IV HASIL.docx

LAPORAN HASIL PRAKTIKUM

STRUKTUR DATA

NAMA : PENGKI

NIM : DBC 114 070

KELAS : B

MODUL : III ( PENGURUTAN

DATA )

JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKAFAKULTAS TEKNIK

UNIVERSITAS PALANGKA RAYA2015

Page 2: SD IV HASIL.docx

BAB I

TUJUAN DAN LANDASAN TEORI

A. TUJUAN

1. Mengetahui implementasi beberapa metode pengurutan data.

2. Mampu menerapkan metode pengurutan data pada sebuah program.

3. Mengetahui perbandingan kompleksitas beberapa metode pengurutan

data.

B. LANDASAN TEORI

Pengurutan data adalah proses yang dilakukan terhadap himpunan

data, disusun sedemikian rupa sehingga diperoleh data baru terurut. Pada

umumnya ada dua macam pengurutan, yaitu: (1) pengurutan secara

ascending (urut naik) dan (2) Pengurutan secara descending (urut turun).

Proses pengurutan seluruh data berada dalam memori disebut internal

sorting. Sedangkan bila data tidak berada di dalam memori disebut

external sorting.

Masalah utama dalam pengurutan adalah bagaimana mendapatkan

metode terbaik yang akan memberikan jumlah operasi pemindahan data

paling minimum. Kedua operasi tersebut akan mempengaruhi algoritma

pengurutan data. Umumnya kompleksitas algoritma biasa dilihat dari

waktu (time complexity) atau ruang (space complexity).

Algoritma pengurutan data yang akan diuraikan dan dilakukan

dalam praktikum sturktur data ini hanya mencakup tiga metode

pengurutan data yaitu: (1) Insertion Sort (Pengurutan Penyisipan), (2)

Selection Sort (Pengurutan Pemilihan), dan (3) Bubble Sort (Pengurutan

Gelembung). Berikut ini merupakan penjelasannya.

1. Insertion Sort (Pengurutan Penyisipan) Metode ini dilakukan dengan

cara menyisipkan elemen larik pada posisi yang tepat. Prinsip kerja

metode ini membagi dua data sedemikian rupa sehingga pada bagian

pertama menampung data yang sudah terurut dan bagian kedua

menampung data yang belum terurut.

1

Page 3: SD IV HASIL.docx

Selanjutnya diambil satu data dari bagian yang belum terurut dan

dilakukan penyisipan ke bagian yang sudah terurut.

procedure insertionSort (var A: Tabel; N: integer);

{IS : Tabel A terdefinisi dengan N adalah banyaknya data}

{FS : Tabel A terurut membesar}

var

pass, i: integer; {counter}

temp : integer; {variabel untuk nilai sementara}

begin

for pass := 2 to N do

begin

temp := A[pass];

I := pass-1;

while ((temp < A[i]) and (i > 1)) do

begin

A[i+1] :=A [i];

i := i-1;

end;

if (temp < A[i]) then

begin

A[i+1] :=A [i];

i := i-1;

end;

A[i+1] := temp;

end;

end;

2

Page 4: SD IV HASIL.docx

2. Selection Sort (Pengurutan Pemilihan) Metode minimum dan

maximum sort merupakan metode yang tergolong dalam selection sort.

Pada minimum sort, untuk meletakkan data pada posisi ke-i dilakukan

dengan mencari niai minimum data mulai dari posisi ke-i sampai

dengan posisi ke-N dengan N adalah banyaknya data. Untuk maximum

sort dilakukan dengan menggunakan nilai maksimum.

procedure switch (var A,B: Tabel);

{IS : Tabel A dan B berisi nilai missal A = x dan B = y}

{FS : A = y dan B = x }

var

temp: integer; {variabel untuk nilai sementara}

begin

temp := A;

A := B;

B := temp;

end;

procedure minimumSort (var A: Tabel; N: integer);

{IS : Tabel A terdefinisi dengan N adalah banyaknya data}

{FS : Tabel A terurut membesar}

var

pass, i: integer; {counter}

imin : integer; {variabel untuk indeks nilai minimum}

begin

for pass := 1 to N-1

begin

imin := pass;

for i := pass + 1 to N do

begin

if (A[imin] > A[i]) then imin := i;

if (imin <> pass) then switch(A[pass],

A[imin] );

3

Page 5: SD IV HASIL.docx

end;

end;

end;

3. Bubble Sort (Pengurutan Gelembung) Prinsip dari bubble sort adalah

meletakkan nilai pada posisi ke-i dengan menggelembungkan atau

mengangkat nilai minimum dari i+1 sampai dengan N.

procedure bubbleSort (var A: Tabel; N: integer);

{IS : Tabel A terdefinisi dengan N adalah banyaknya data}

{FS : Tabel A terurut membesar}

var

pass, i: integer; {counter}

tukar : boolean; {true jika untuk satu kali pass terjadi

pertukaran}

begin

tukar := true;

pass := 1; 13

while ((tukar) and (pass < N)) do

begin

tukar := false;

for i := N downto pass+1 do

begin

if (A[i] < A[i-1]) then

begin

switch (A[i], A[i-1]) ) ;

tukar := true;

end;

end;

end;

end;

4

Page 6: SD IV HASIL.docx

Implementasi dari ketiga metode sorting tersebut dilakukan

menggunakan data sebagai berikut.

Const

NMax = 100;

Type

Tabel = array[1..NMax] of integer;

5

Page 7: SD IV HASIL.docx

BAB II

LANGKAH KERJA

Buatlah sebuah program dengan ketentuan sebagai berikut :

1. Pengurutan (sorting) menggunakan ketiga metode :

a. Insertion sort

b. Selection Sort

c. Bubble Sort

2. Masukan awal adalah data bertipe record mahasiswa dengan elemen :

NIM : integer;

Nama : string[30];

Alamat : string[50];

3. Proses pengurutan bisa dipilih berdasarkan NIM atau Nama secara

ascending.

4. Keluaran adalah data yang telah diurutkan.

6

Page 8: SD IV HASIL.docx

BAB III

PEMBAHASAN

Karena untuk pengurutan data boleh menggunakan salah satu yakni

pengurutan NAMA atau NIM maka di sini saya menggunakan metode

pengurutan dengan NIM. untuk koding programnya adalah sebagai

berikut.

program sorting;

uses crt;

const

nmax = 50;

type

rdata = record

nim : integer;

nama : string[30];

alamat : string[50];

end;

aData = array [1..nmax] of rdata;

var

{variabel global}

data : aData;

plh, ch, pt : char;

x : integer;

{fungsi menu awal}

function menu : char;

var

c : char;

begin

7

Page 9: SD IV HASIL.docx

clrscr;

writeln('--- Program Sorting Array dengan Urutan Ascending dan

Descending ---');

writeln;

writeln('1: Insertion Sort');

writeln('2: Selection Sort');

writeln('3: Bubble Sort');

writeln('4: Keluar Program');

repeat

writeln;

write('Pilih >> ');

c := readkey;

writeln(c);

if not (c in ['1'..'4']) then

writeln('Pilihan salah ...');

until(c in ['1'..'4']);

menu := c;

end;

{prosedur untuk tukar data untuk masukan data}

procedure tukar(i,j : integer);

var

temp : integer;

temp2 : string[50];

begin

temp := data[i].nim;

data[i].nim := data[j].nim;

data[j].nim := temp;

temp2 := data[i].nama;

data[i].nama := data[j].nama;

data[j].nama := temp2;

8

Page 10: SD IV HASIL.docx

temp2 := data[i].alamat;

data[i].alamat := data[j].alamat;

data[j].alamat := temp2;

end;

{prosedur untuk masukan data}

procedure inputData(var A : aData; var n : integer);

var

i : integer;

begin

repeat

write('Berapa banyak data? ');

readln(n);

if n>0 then

begin

writeln;

for i:=1 to n do

begin

writeln('Mahasiswa ke-',i);

write('NIM (Hanya Tiga Angka Terakhir): ');

readln(data[i].nim);

write('Nama (Tanpa Simbol Apapun) : ');

readln(data[i].nama);

write('Alamat (Tanpa Simbol Apapun) : ');

readln(data[i].alamat);

writeln;

end;

end

else

writeln('Input salah...')

until(n>0);

9

Page 11: SD IV HASIL.docx

end;

{prosedur Insertion Sort}

procedure iS(var A : aData; var ndata : integer);

var

temp,i,j : integer;

temp2,t emp3 : string[50];

begin

clrscr;

writeln('Input Data Insertion Sort');

writeln;

inputData(A,ndata);

{rutin kode}

for i:=2 to ndata do

begin

temp := A[i].nim;

temp2 := A[i].nama;

temp3 := A[i].alamat;

j := i-1;

while ((temp<A[j].nim) and (j>=1)) do

begin

A[j+1].nim := A[j].nim;

A[j+1].nama := A[j].nama;

A[j+1].alamat := A[j].alamat;

j := j-1;

end;

A[j+1].nim := temp;

A[j+1].nama := temp2;

A[j+1].alamat := temp3;

end;

end;

10

Page 12: SD IV HASIL.docx

{prosedur Selection Sort}

procedure sS(var A : aData; var ndata : integer);

var

i,j,pos : integer;

begin

clrscr;

writeln('Input Data Selection Sort');

writeln;

inputData(A,ndata);

{rutin kode}

for i:=1 to ndata-1 do

begin

pos := i;

for j:=i+1 to ndata do

if (A[pos].nim > A[j].nim) then

pos := j;

if (pos<>i) then

tukar(pos,i);

end;

end;

{prosedur Bubble Sort}

procedure bS(var A : aData; var ndata : integer);

var

i,j : integer;

begin

clrscr;

writeln('Input Data Bubble Sort');

writeln;

inputData(A,ndata);

11

Page 13: SD IV HASIL.docx

{rutin kode}

for i:=1 to ndata-1 do

for j:=ndata downto i+1 do

if (A[j].nim < A[j-1].nim) then

tukar(j,(j-1));

end;

{prosedur tampil data yang terurut Ascending}

procedure showUrut(A : aData; var ndata : integer);

var

i : integer;

begin

clrscr;

writeln('Tampilan Data Terurut');

writeln;

for i:=1 to ndata do

begin

writeln('NIM : ',A[i].nim);

writeln('Nama : ',A[i].nama);

writeln('Alamat : ',A[i].alamat);

writeln;

end;

end;

{prosedur tampil data yang terurut Descending}

procedure showUrut2(A : aData; var ndata : integer);

var

i : integer;

begin

clrscr;

writeln('Tampilan Data Terurut 2');

12

Page 14: SD IV HASIL.docx

writeln;

for i:=ndata downto 1 do

begin

writeln('NIM : ',A[i].nim);

writeln('Nama : ',A[i].nama);

writeln('Alamat : ',A[i].alamat);

writeln;

end;

end;

{program utama}

begin

repeat

plh := menu;

case plh of

'1' : iS(data,x);

'2' : sS(data,x);

'3' : bS(data,x);

'4' : exit;

end;

writeln;

writeln('pilih tampilan');

writeln('1:Ascending');

writeln('2:Descending');

writeln('0:Keluar Program ');

pt := readkey;

if not (pt in ['1','2','0']) then

writeln(' >> Pilihan salah...')

else if (pt in ['0']) then

exit;

case pt of

'1':showUrut(data,x);

13

Page 15: SD IV HASIL.docx

'2':showUrut2(data,x);

end;

writeln('Tekan sembarang

karakter untuk berikutnya...');

repeat

writeln('Tekan >> 1:

Kembali ke Menu, 0: Keluar Program');

ch := readkey;

if not (ch in

['1','0']) then

writeln(' >>

Pilihan salah...');

until(ch in ['1','0']);

until(ch = '0');

end.

Pembahasan Program

program sorting;

uses crt;

pada bagian ini menjelaskan nama program yakni sorting, selanjutnya

perintah di bawah nama program untuk memanggil perintah untuk fungsi –

fungsi di dalam Pascal yakni uses crt.

const

nmax = 50;

type

rdata = record

nim : integer;

nama : string[30];

alamat : string[50];

end;

14

Page 16: SD IV HASIL.docx

aData = array [1..nmax] of rdata;

Pada bagian ini konstanta untuk masukan bernilai 50 masukan untuk array,

dengan tipe data pada bagian ini berupa rdata dengan tipe record (rekam).

Bagian di dalam rdata ini kemudian dibagi lagi menjadi 3 bagian, yakni

nim, nama, dan alamat. untuk nim dengan tipe data bilangan bulat (integer)

sedangkan untuk nama dan alamat menggunakan tipe data huruf (string)

dengan letak perbedaan pada jumlah untuk masukan per huruf untuk nama

dengan 30 huruf dan alamat dengan 50 huruf. pada bagian paling bawah

dengan perintah aData = array [1..nmax] of rdata maka untuk tipe data

adata menggunakan array dengan masukan dari rdata yang akan direkam.

var

{variabel global}

data : aData;

plh, ch, pt : char;

x : integer;

pada bagian ini untuk pendeklarasian variabel global (utama) dalam

program ini. sehingga variabel ini merupakan patokan untuk variabel –

variabel lain dalam sub program. Variabel data menggunakan nilai yang

sama dengan variabel aData jadi nilai dalam data akan di masukan ke

dalam array [1..nmax] hingga nilai nmax sampai pada nilai yang

ditentukan. Pada variabel berikutnya yakni plh, ch, dan pt menggunakan

tipe data karakter (char), dan variabel x bertipe data bilangan bulat

(integer.).

{fungsi menu awal}

function menu : char;

var

c : char;

15

Page 17: SD IV HASIL.docx

begin

clrscr;

writeln('--- Program Sorting Array dengan Urutan Ascending dan

Descending ---');

writeln;

writeln('1: Insertion Sort');

writeln('2: Selection Sort');

writeln('3: Bubble Sort');

writeln('4: Keluar Program');

untuk membuat bagian pada sub menu pada bagian setelah masukan

masuk maka digunakan fungsi untuk pemanggilan menu.

Pada fungsi menu ini didefinisikan dengan tipe karakter (char).

untuk variabel dalam fungsi menu ini digunakan variabel c juga

didefinisikan dengan tipe data karakter (char).

Setelah definisi variabel dalam fungsi hanya dilakukan penampilan dalam

layar berupa kalimat – kalimat yakni “--- Program Sorting Array dengan

Urutan Ascending dan Descending --- dan juga untuk pilihan menu yakni

sebagai berikut untuk no 1 dengan Insertion Sort, no 2 Selection Sort, no

3 Bubble Sort, dan no 4 untuk Keluar Program dengan semua kursor untuk

masukan berada pada baris baru oleh adanya perintah writeline.

repeat

writeln;

write('Pilih >> ');

c := readkey;

writeln(c);

if not (c in ['1'..'4']) then

writeln('Pilihan salah ...');

until(c in ['1'..'4']);

menu := c;

end;

16

Page 18: SD IV HASIL.docx

pada bagian ini di dalam fungsi menu untuk pembacaan masukan -

masukan yang akan dibuat dengan perulangan dengan demikian apabila

masukan untuk menu lain dari pilihan yang ada maka akan ada

pemberitahuan pilihan salah. Untuk masukan variabel c digunakan untuk

pembaca tiap masukan yang ada.

if not (c in ['1'..'4']) then

writeln('Pilihan salah ...');

Perintah di atas untuk melakukan pengecekan pada masukan apabila

masukan bukan dari 1 sampai 4 maka pemberitahuan bahwa pilihan slah

akan keluar.

until(c in ['1'..'4']);

menu := c;

end;

Perintah untuk membuat pendefinisian bagian masukan - masukan dalam

c yakni 1 sampai 4 dengan pendefinisian menu yang bertipe karakter tadi

dengan variabel c serta perintah end di sini untuk mengakhiri fungsi manu.

{prosedur untuk tukar data untuk masukan data}

procedure tukar(i,j : integer);

var

temp : integer;

temp2 : string[50];

Pada prosedur ini data akan di tukar sehingga data yang di masukan akan

berada dalam variabel yang sudah di tukarkan dalam prosedur ini. Pada

prosedur ini di definisikan variabel yang ada di dalamnya yakni i,j, temp

dan temp2. Variabel i dan j di gunakan untuk masukan data array,

sedangkan temp dan temp2 digunakan untuk pengganti data yang di

masukan ke dalam variabel tersebut. Di sini temp2 merupakan tipe data

huruf (string) dengan batasan hingga 50 huruf.

17

Page 19: SD IV HASIL.docx

begin

temp := data[i].nim;

data[i].nim := data[j].nim;

data[j].nim := temp;

temp2 := data[i].nama;

data[i].nama := data[j].nama;

data[j].nama := temp2;

temp2 := data[i].alamat;

data[i].alamat :=

data[j].alamat;

data[j].alamat := temp2;

end;

Di sini perintah untuk penukaran data akan dilakukan tiap data yang di

masukan ke dalam data dengan variabel i pada akhirannya dengan tujuan

ke tiap dengan arah yang berbeda pada tipa input masukan misalnya temp

untuk data dengan array variabel i dengan alamat nim maka di ubah

menjadi data yang hanya di ubah variabelnya saja menjadi j. kemudian

data yang telah di ubah tadi dimasuknya ke dalam variabel temp. untuk

semua data juga di perlakukan hal yang sama hanya berbeda pada variabel

penentu terakhir dan alamatnya saja.

{prosedur untuk masukan data}

procedure inputData(var A : aData; var n :

integer);

var

i : integer;

Pada prosedur ini untuk pemasukan data dari piranti masukan variabel

yang di definisikan aldah A bernilai sama dengan aData n dan i bernilai

integer (bilangan bulat).

18

Page 20: SD IV HASIL.docx

begin

repeat

write('Berapa banyak data? ');

readln(n);

if n>0 then

Di sini adalah pengulangan untuk menanyakan junlah data (untuk

mengalokasikan tempat untuk jumlah data yang akan di masukan). Untuk

jumlah data yang akan di masukan dibaca oleh variabel n. Di sini ada

perintah if n>0 then perintah ini untuk mengecek nilai masukan untuk

jumlah alokasi data yang akan di masukan apabila nilai n lebih besar dari

nol.

writeln;

for i:=1 to n do

begin

writeln('Mahasiswa ke-',i);

write('NIM (Hanya Tiga Angka Terakhir): ');

readln(data[i].nim);

write('Nama (Tanpa Simbol Apapun) : ');

readln(data[i].nama);

write('Alamat (Tanpa Simbol Apapun) : ');

readln(data[i].alamat);

writeln;

end;

end

perintah for i=1 to n do bermakna bila nilai n tadi lebih besar maka akan di

lakukan untuk variabel i dari 1 hingga masukan bernilai sama dengan

masukan pada variabel n yang tadi di masukan. Kemudian perintah di

bawahnya untuk memasukan nilai ke dalam variabel i tadi dengan alamat

pada data[i].nim yang hanya berbeda pada alamatnya saja. Ini dilakukan

terus menerus hingga masukan data ke i terpenuhi sampai nilai n yang di

masukan.

19

Page 21: SD IV HASIL.docx

end

else

writeln('Input salah...')

until(n>0);

end;

Perintah di sini untuk menjadi alternatif lain apabila masukan untuk data n

lebih kecil dari 0. Maka akan di tampilkan Input salah, hingga data untuk i

terpenuhi untuk n lebih besar dari 0.

{prosedur Insertion Sort}

procedure iS(var A : aData; var ndata :

integer);

var

temp,i,j : integer;

temp2,t emp3 : string[50];

Prosedur untuk Insertion Sort menggunakan variabel A bernilai sama

dengan aData, ndata bertipe bilangan bulat serta untuk variabel tem,i,j juga

bertipe sama dengan ndata. Selanjutnya untuk temp2,dan temp3 bertipe

huruf (string).

begin

clrscr;

writeln('Input Data Insertion Sort');

writeln;

inputData(A,ndata);

{rutin kode}

for i:=2 to ndata do

perintah ini untuk memasukan input daata pada insertion sort. disini

dilakukan pemanggilan untuk prosedur input data dengan nama inputData

serta variabel yang di definisikan di dalam inputan tersebut yakni A,ndata.

Untuk masukan data apabila i bernilai 2 hingga ndata maka akan dilakukan

eksekusi perintah selanjutnya.

20

Page 22: SD IV HASIL.docx

begin

temp := A[i].nim;

temp2 := A[i].nama;

temp3 :=

A[i].alamat;

Ketika nilai i terpenuhi maka temp akan bernilai pada A[i].nim ini adalah

perintah untuk memasukan nilai variabel temp ke dalam array A dengan i

variabel sebagai alamat. Ini dilakukan hingga semua untuk variabel temp2

dan temp3 hanya saja untuk temp2 dengan alamat nama, dan untuk temp3

dengan alamat “ alamat”.

j := i-1;

while ((temp<A[j].nim) and (j>=1))

do

begin

A[j+1].nim := A[j].nim;

A[j+1].nama := A[j].nama;

A[j+1].alamat := A[j].alamat;

j := j-1;

end;

Bagian ini untuk pemeriksaan pada array yang disimpan dalam variabel A

tadi hingga. Perintah j sama dengan i-1 ketika temp bernilai lebih besar

dari A array j alamat nim dan j bernilai besar atau sama dengan 1 maka

akan dilakukan penambahan untuk tiap array dengan alamat yang berbeda

dengan satu hingga nilai j sama dengan nilai j dikurang satu.

A[j+1].nim := temp;

A[j+1].nama := temp2;

A[j+1].alamat :=

temp3;

end;

21

Page 23: SD IV HASIL.docx

end;

Perintah di sini untuk penukaran nilai untuk tiap array yang telahh

ditambahh satu dengan alamat yang berbeda pada tiap array. Dalam hal ini

nilai array A dengan variabel j ditambah 1 beralamat nim bernilai sama

dengan temp. begitu juga dengan temp2 dan temp3.

{prosedur Selection Sort}

procedure sS(var A : aData; var ndata :

integer);

var

i,j,pos : integer;

Pada prosedur ini variabel yang ada adalah A bernilai sama dengan adata,

ndata bernilai bilangan bulat, i, j,dan pos bernilai bilangan bulat. prosedur

ini untuk seleksi pada posisi yang akan ditentukan

begin

clrscr;

writeln('Input Data Selection

Sort');

writeln;

inputData(A,ndata);

bagian ini untuk memanggil penginputan data. dengan variabel –

variabelnya.

for i:=1 to ndata-1 do

begin

pos := i;

for j:=i+1 to ndata do

if (A[pos].nim > A[j].nim)

then

pos := j;

if (pos<>i) then

tukar(pos,i);

22

Page 24: SD IV HASIL.docx

end;

end;

Apabila nilai i sama dengan satu ke ndata minus 1 maka akan dilakukan

proses eksekusi perintah selanjutnya.

Perintah pos bernilai sama dengan variabel i. Maka jika j bernilai sma

dengan i ditambahkan satu hingga ndata akan dilakukan perbandingan

array A[pos] beralamat nim lebih besar dari array A[j] beralamat nim

hingga pos bernilai sama dengan j.

Kemudian jika pos berada pada posisi tidak lebih kecil atau lebih besar

dari variabel i maka akan dipanggil prosedur untuk penukaran data

dengan variabel yang telah diganti.

prosedur Bubble Sort}

procedure bS(var A : aData; var ndata :

integer);

var

i,j : integer;

Prosedur ini untuk pengurutan data dengan metode buble sort dengan

variabel yang sama dengan selection sort hanya saja tidak ada penambahan

variabel pos di dalam prosedur ini.

begin

clrscr;

writeln('Input Data Bubble

Sort');

writeln;

inputData(A,ndata);

Bagian ini untuk pemanggilan prosedur input data, yang berbeda hanya

penampilan dalam layar di tampilkan Input data bubble sort.

{rutin kode}

for i:=1 to ndata-1 do

23

Page 25: SD IV HASIL.docx

for j:=ndata downto i+1 do

if (A[j].nim < A[j-1].nim)

then

tukar(j,(j-1));

end;

Di sini perintah untuk variabel i jika bernilai 1 hingga ndata minus 1 dan

untuk j sama dengan ndata menggunakan perintah turun hingga variabel i

ditambahkan 1 maka dilakukan perbandingan array A[j]beralamat nim

lebih kecil dari array A[j-1] beralamt nim dan akan di lakukan prosedur

untuk pemanggilan prosedur tukar data dengan variabel pada buble sort

yakni j, dengan j dikurang 1.

{prosedur tampil data yang terurut Descending}

procedure showUrut2(A : aData; var ndata :

integer);

var

i : integer;

Di sini prosedur untuk penampilan data secara Ascending variabelnya

adalah A bernilai sama dengan aData dan ndata bertipe bilangan bulat

(integer). Serta variabel i dengan tipe bilangan bulat juga.

begin

clrscr;

writeln('Tampilan Data Terurut');

writeln;

for i:=1 to ndata do

Pada perintah ini jika variabel i bernilai 1 hingga ndata maka akan

perintah eksekusi selanjutnya dijalankan.

begin

writeln('NIM : ',A[i].nim);

writeln('Nama : ',A[i].nama);

24

Page 26: SD IV HASIL.docx

writeln('Alamat :

',A[i].alamat);

writeln;

end;

end;

perintah ini apabila nilai i telah memnuhi. maka akan dilakukan

penampilan data secara urut naik akibat perintah for i:=1 to ndata do

maka akan di tampilkan nim, nama, dan alamat yang telah di urutkan dari

array A dengan variabel i secara urut naik.

{prosedur tampil data yang terurut Descending}

procedure showUrut2(A : aData; var ndata :

integer);

var

i : integer;

Prosedur untuk urut turun yang berbeda hanyalah pemangilan nama untuk

prosedurnya saja (di tambahkan 2 di bagian akhir ShowUrut) variabelnya

sama dengan penampilan urut naik.

begin

clrscr;

writeln('Tampilan Data Terurut 2');

writeln;

for i:=ndata downto 1 do

Tidak ada perbedaaan mencolok antara urut naik dan urut bawah

perbedaannya hanya pada perintah untuk urut naik yaitu for i:=1 to

ndata do sedangkan untuk urut turun menggunakan for i:=ndata downto

1 do untuk menurunkan nilai dalam variabel array.

begin

writeln('NIM : ',A[i].nim);

writeln('Nama : ',A[i].nama);

25

Page 27: SD IV HASIL.docx

writeln('Alamat :

',A[i].alamat);

writeln;

end;

end;

perintah untuk menampilkan arrayA dengan variabel i pada alamat

nim,nama, dan alamat secara urut turun.

{program utama}

begin

repeat

plh := menu;

case plh of

'1' : iS(data,x);

'2' : sS(data,x);

'3' : bS(data,x);

'4' : exit;

end;

Perintah untuk memulai program utama. Di dalamnya perintah perulangan

untuk masukan pilihan menu, juga ada pemanggilan perintah plh :=

menu; yang akan membuat plh memanggil fungsi menu anggota dari plh

dengan pemanggilan pada tiap masukan pada pilihan misalannya apabila

di masukan angka satu akan dipanggil prosedur iS (insertion Sort) dengan

variabel data dan x. Untuk no 4 pilihan keluar perintah ini untuk keluar

dari program tanpa eksekusi perintah lain dibawahnya.

writeln;

writeln('pilih tampilan');

writeln('1:Ascending');

writeln('2:Descending');

writeln('0:Keluar Program ');

pt := readkey;

26

Page 28: SD IV HASIL.docx

if not (pt in ['1','2','0']) then

writeln(' >> Pilihan salah...')

else if (pt in ['0']) then

exit;

case pt of

'1':showUrut(data,x);

'2':showUrut2(data,x);

end;

perintah ini untuk memilih penampilan pada data yan telah terurut dengan urut

naik atau turun. Dengan variabel pt sebagai pembacaan masukan piranti. Perintah

if not (pt in ['1','2','0']) then

writeln(' >> Pilihan salah...')

dalam hal ini jika pt masukan lain dari 1,2, dan 3 maka akan ada pemberitahuan

perintah salah.

else if (pt in ['0']) then

exit;

Perintah ini apabila masukan adalah 0 maka akan di eksekusi perintah edit

( langsung keluar dari program).

case pt of

'1':showUrut(data,x);

'2':showUrut2(data,x);

end;

Perintah ini untuk masukan 1 dan 2 apabila masukan nya adalah 1 maka

pemanggilan prosedur urut naik akan dipanggil. Apabila masukannya adalah 2

maka akan dipanggil urut turun.

writeln('Tekan sembarang karakter untuk berikutnya...');

repeat

27

Page 29: SD IV HASIL.docx

writeln('Tekan >> 1: Kembali ke Menu, 0: Keluar

Program');

ch := readkey;

if not (ch in ['1','0']) then

writeln(' >> Pilihan salah...');

Bagian ini untuk mengembalikan program ke menu awal dan juga untuk keluar

program. Untuk masukan pada pilihan ini di baca dengan variabel ch.

if not (ch in ['1','0']) then

writeln(' >> Pilihan salah...');

Jika pilihan masukan tidak dalam 1 dan 0 maka akan ada pemberitahuan pilihan

salah.

until(ch in ['1','0']);

until(ch = '0');

end.

Sebagai pengakhir perintah repeat untuk variabel masukan ch dan juga pabila

inputan masuk adalah 0 perintah end. akan di eksekusi sehingga akan keluar dari

program.

28

Page 30: SD IV HASIL.docx

BAB IV

KESIMPULAN

Pengurutan data (sorting) didefinisikan sebagai suatu proses untuk

menyusun kembali himpunan obyek menggunakan aturan tertentu.

Menurut Microsoft Book-shelf, definisi algoritma pengurutan adalah

algoritma untuk meletakkan kumpulan elemen data ke dalam urutan

tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.

Ada dua macam urutan yang biasa digunakan dalam proses pengurutan

yaitu

Urut naik (ascending) yaitu dari data yang mempunyai nilai paling

kecil .

Urut turun (descending) yaitu data yang mempunyai nilai paling besar

sampai paling kecil.

29

Page 31: SD IV HASIL.docx

Contoh : data bilangan 5, 2, 6 dan 4 dapat diurutkan naik menjadi 2, 4, 5, 6

atau diurutkan turun menjadi 6, 5, 4, 2

Keuntungan dari data yang sudah dalam keadaan adalah:

Data mudah dicari (misalnya dalam buku telepon atau kamus

bahasa),mudah untuk dibetulkan, dihapus, disisipi atau digabungkan.

Dalam keadaan terurutkan, kita mudah melakukan pengecekan apakah

ada data yang hilang.

Melakukan komppilasi program komputer jika tabel-tabel simbol harus

dibentuk

Mempercepat proses pencarian data yang harus dilakukan berulang

kali.

Beberapa faktor yang berpengaruh pada efektifitas suatu algoritma

pengurutan antara lain:

Banyak data yang diurutkan

Kapasitas pengingat apakah mampu menyimpan semua data yang

dimiliki.

BAB V

DAFTAR PUSTAKA

Dosen Teknik Informatika. 2015.MODUL PRAKTIKUM STRUKTUR

DATA.Palangkaraya:Dosen Teknik Informatika.

Insap Santosa, P., Ir.2004.Struktur Data Menggunakan TURBO PASCAL 6.0.

Yogyakarta:ANDI OFFSET.

http :// lecturer.eepis-its.edu/.../Struktur%20 Data %20.../ Data %20Structure%20-

%20Bab%206. pdf diakses 09-05-2015/21:22

http:// www.dugdugmong.co.cc/up date /.../contoh-visual-basic- pengurutan - data -

secara-selection- sort diakses 09-05-2015/21:23

30

Page 32: SD IV HASIL.docx

BAB VI

LAMPIRAN

31

Page 33: SD IV HASIL.docx

Untuk sorting pilihan sorting yang lain kurang lebih sama hanya berbeda kalimat

saat masukan data yakni Selection Sort Bubble Sort pada bagain kalimat atas.

32

Page 34: SD IV HASIL.docx

33