62
Tugas Struktur Data ke-1 Sequential Search Dengan Boolean Radix Sorting Secara Descending Oleh Kelompok: 1. Arif Romadhan (10112063) 2. Yoga Limka (10112061) 3. M. Hadi Panji (10112059) 4. M. Romdon Nurdin S (10111040) 5. Dery Muhammad Ramdani (10111017) Kelas : IF – 3 Program Studi Teknik Informatika Fakultas Teknik dan Ilmu Komputer 1

Makalah Struktur Data

  • Upload
    arif-r

  • View
    566

  • Download
    4

Embed Size (px)

DESCRIPTION

struktur data

Citation preview

Page 1: Makalah Struktur Data

Tugas Struktur Data ke-1

Sequential Search Dengan Boolean

Radix Sorting Secara Descending

Oleh Kelompok:

1. Arif Romadhan (10112063)

2. Yoga Limka (10112061)

3. M. Hadi Panji (10112059)

4. M. Romdon Nurdin S (10111040)

5. Dery Muhammad Ramdani (10111017)

Kelas : IF – 3

Program Studi Teknik Informatika

Fakultas Teknik dan Ilmu Komputer

UNIKOM

2013

1

Page 2: Makalah Struktur Data

BAB IPENDAHULUAN

1.1. LATAR BELAKANG

Pengurutan data atau sorting merupakan salah satu jenis operasi penting

dalam pengolahan data. Hampir setiap saat dalam kehidupan sehari-hari kita

selalu menjumpai permasalahan-permasalahan yang harus diselesaikan dengan

melibatkan operasi pengurutan data. Begitu pentingnya operasi tersebut, sehingga

sampai saat ini telah banyak dikembangkan metode-metode pengurutan data dan

mungkin akan tetap bermunculan metode-metode baru. Salah satu metode yang

bisa digunakan yaitu, dengan metoda Radix Sort. Karena pengurutan ini

menggunakan proses pengurutan data yang dilakukan tanpa pembandingan antar

data (Non-comparison Sort), data diurutkan sesuai dengan pigeon hole principle.

Sehingga proses pengurutan jadi lebih cepat.

Dan pada makalah ini, kami membahas tentang Radix Sort secara

descending.

1.2. TUJUAN PENYUSUNAN

Adapun tujuan dari penulisan makalah ini adalah sebagai berikut:

a) Memenuhi tugas mata kuliah Struktur Data.

b) Mengetahui konsep daripada pengurutan dengan metode Radix Sort.

c) Memperdalam pengetahuan tentang cara kerja metode Radix Sort.

d) Dapat memahami implementasi Radix Sort.

2

Page 3: Makalah Struktur Data

1.3. LANDASAN TEORI

A. DEFINISI ALGORITMA

Algoritma adalah urutan langkah–langkah untuk memecahkan suatu

masalah.

Salah satu contoh dari Algoritma adalah Pengurutan (Sorting).

B. DEFINISI PENGURUTAN

Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut

urutan atau susunan tertentu. Masalah pengurutan dapat ditulis sebagai

berikut :

Diberikan larik L dengan elemen yang sudah terdefinisi elemen-elemennya.

Urutan larik tersebut sehingga tersusun secara menaik (ascending):

L[1] ≤ L[2] ≤ [3]≤ … ≥ L[n]

Atau secara menurun (descending)

L[1]≥ L[2] ≥ L[3] ≥ … ≥ L[n]

3

Page 4: Makalah Struktur Data

BAB II

PEMBAHASAN

2.1. PENGERTIAN RADIX SORT

Ide dasar dari metode Radix sort ini adalah mengkategorikan data-data

menjadi subkumpulan-subkumpulan data sesuai dengan nilai radix-

nya,mengkonkatenasinya, kemudian mengkategorikannya kembali berdasar nilai

radix lainnya.

Dalam kenyataannya banyak sekali algoritma Radix sort yang berbeda-

beda walaupun ide dasarnya sama. Radix sort mengurutkan data berdasarkan

posisi digit dalam angka atau karakter dalam string. Radix sort digunakan untuk

mengurutkan data sebagai kelompok karakter atau string.

2.2. PEMROSESAN RADIX SORT

Berdasarkan pemrosesan, Radix nya:

a. LSD (LeastSignificant Digit) di mana pemrosesan dimulai dari radix yang

paling tidak signifikan

b. MSD (Most Significant Digit), di mana pemrosesan dimulai dari radix yang

paling signifikan.

4

Page 5: Makalah Struktur Data

2.3. IMPLEMENTASI RADIX SORT

Dengan menggunakan Radix Sort, kita dapat mengurutkan bilangan dan

string.

Rangkaian pengurutannya sebagai berikut:

A. IMPLEMENTASI DALAM MENGURUTKAN STRING

Terdapat kumpulan string sebagai berikut:ABC XYZ BWZ AAC RLT JBX RDT KLT AEO TLJ

Untuk mengurutkannya pertama diurutkan berdasarkan karakter teakhir pada string dan dikelompokkan berdasarkan karakter tersebut.

ABC AAC TLJ AEO RLT RDT KLT JBX XYZ BWZ

Kombinasikan hasil pengelompokan:ABC AAC TLJ AEO RLT RDT KLT JBX XYZ BWZ

Selanjutnya kelompokkan berdasarkan urutan abjad karakter yang tengahAAC ABC JBX RDT AEO TLJ RLT KLT BWZ XYZ

Kemudian kelompokan berdasarkan abjad pertama dari string, diperoleh:AAC ABC AEO BWZ JBX KLT RLT RDT TLJ XYZ

Terakhir gabungkan hasil pengelompokan sehingga diperoleh:AAC ABC AEO BWZ JBX KLT RLT RDT TLJ XYZ

B. IMPLEMENTASI DALAM MENGURUTKAN BILANGAN BULAT

Contoh implementasi yang akan dilakukan adalah implementasi pada

bilangan bulat positif menggunakan salah satu algoritma pengurutan

radix sort.

Contohnya adalah pengurutab sebuah kumpulan data bilangan bulat

dengan jumlah digit maksimal 3

121 076 823 367 232 434 742 936 274

5

Page 6: Makalah Struktur Data

Pertama kali, data dibagi-bagi sesuai dengan digit terkanan :

121 076 823 367 232 434 742 936 274

Kategori digit Isi

0 -

1 121

2 232,742

3 823

4 434,274

5 -

6 076,936

7 367

8 -

9 -

Hasil pengkategorian tersebut lalu digabung kembali dengan metode

konkatensi menjadi :

121 232 742 823 434 274 076 936 367

Kemudian pengkategorian dilakukan kembali, namun kali ini berdasar

digit kedua atau digit tengah, dan jangan lupa bahwa urutan pada tiap

6

Page 7: Makalah Struktur Data

subkumpulan data harus sesuai dengan urutan kemunculan pada kumpulan

data

121 232 742 823 434 274 076 936 367

Kategori digit Isi

0 -

1 -

2 121, 823

3 232, 434, 936

4 742

5 -

6 367

7 274, 076

8 -

9 -

Yang kemudian di konkatenasi kembali menjadi

121 823 232 434 936 742 367 274 076

Kemudian langkah ketiga, atau langkah terakhir pada contoh ini adalah

pengkategorian kembali berdasar digit yang terkini, atau yang paling signifikan

121 823 232 434 936 742 367 274 076

7

Page 8: Makalah Struktur Data

Kategori digit Isi

0 076

1 121

2 232,274

3 367

4 434

5 -

6 -

7 742

8 826

9 936

Yang kemudian dikonkatenasi lagi menjadi

076 121 232 274 367 434 742 823 936

Yang merupakan hasil akhir dari metode pengurutan ini. Di mana data

telah terurut dengan metode radix sort

8

Page 9: Makalah Struktur Data

2.4. ALGORITMA METODE RADIX SORT SECARA DESCENDING

Program data_pegawai

Kamus

Const

maks_pgw = 20

Type

data_pgw = record

no : integer, {nomor}

nip : integer, {nomor induk pegawai}

nama : string[25], {nama pegawai}

jk : string[25], {jenis kelamin}

umur : integer, {umur pegawai}

almt : string[25], {alamat pegawai}

status : string[25], {status sosial pegawai}

gol : string[25], {golongan/jabatan pegawai}

tmk : integer, {tidak masuk kerja pegawai}

Type

pegawai = array[1..maks_pgw] of data_pgw

Type

recordcountpgw = record

Count : integer

pgw : pegawai,

9

Page 10: Makalah Struktur Data

pilih : integer,

pil : integer,

datacount :array[1..2] of recordcountpgw

procedure countpgw (output i : integer);

algoritma

if datacount[1].count = 0 then

i 1

datacount[1].count 1

else

i datacount[1].count + 1

datacount[1].Count datacount[1].count + 1

endif

endprocedure

procedure cekcountpgw(output i : integer)

algoritma

if datacount[1].count = 0 then

i 0

else

i datacount[1].count ;

endif

endprocedure

procedure tampil_menu_utama(output pil : integer)

{I.F. : User memilih menu pilihan}

{F.S. Menghasilkan menu pilihan oleh user}

algoritma

10

Page 11: Makalah Struktur Data

output (‘menu pilihan’)

output (1. Data Awal Pegawai')

output ('2. Masukan Data Pegawai')

output ('3. Tampil Data Pegawai')

output ('4. Cari Data Berdasarkan NIP')

output ('5. Cari Data Berdasarkan Nama ')

output ('6. Pengurutan Berdasarkan NIP' )

output ('7. Penghancuran Data')

output ('0. [Exit]')

input (‘pil’)

endprocedure

procedure penciptaan(output pgw : pegawai)

{I.F. : mengosongkan data pegawai}

{F.S. : menghasilkan data yang kosong}

kamus

i : integer,

countpgw : integer,

algoritma

cekcountpgw(countpgw)

for i 1 to countpgw do

pgw[i].nip 0

pgw[i].nama ' '

pgw[i].jk ' '

pgw[i].umur 0

pgw[i].almt ' '

pgw[i].status ' '

11

Page 12: Makalah Struktur Data

pgw[i].gol ' '

pgw[i].tmk 0

if (datacount[1].count = 0) then

output('Data kosong !')

output ('Tekan enter untuk kembali ke menu!')

endif

endfor

endprocedure

procedure data_pgw(output pgw : pegawai);

{I.F. : User memasukan data pegawai}

{F.S. : menghasilkan data pegawai}

kamus

i : integer

algoritma

input (pgw[i]nip)

input (pgw[i]nama)

input (pgw[i]jk)

input (pgw[i]umur)

input (pgw[i]almt)

input (pgw[i]status)

input (pgw[i]gol)

input (pgw[i]tmk)

endprocedure

procedure tampil_menu(output pilih : integer)

{I.F. : User memilih menu pilihan untuk tampil data}

{F.S : Menghasilkan menu yang di pilih oleh user}

12

Page 13: Makalah Struktur Data

algoritma

output(‘1. Tampil Data Pegawai’)

output(‘2. Tampil Gaji Pegawai’)

output(‘0. Kembali Ke Menu’)

endprocedure

function tunjangan(status : string)integer

algoritma

if (status = ‘Menikah’) then

tunjangan 500000

else

tunjangan0

endif

endprocedure

function gajipokok(gol : string)integer

{I.F. : User memasukan data pegawai berupa nilai golongan}

{F.S. : menghasilkan nilai gaji pokok dari golongan}

algoritma

If (gol = ‘A’) then

gajipokok 1000000

else

if (gol = ‘B’) then

gajipokok 1500000

else

if (gol = ‘C’) then

gajipokok 2000000

else

13

Page 14: Makalah Struktur Data

gajipokok 2500000

endif

endif

endif

endfunction

function potongan(tmk : integer)integer

{I.F. : User memasukan jumlah hari pegawai tidak masuk}

{F.S. : menghasilkan nilai potongan}

algoritma

if ((tmk >=0) and (tmk <=5)) then

Potongan 0

else

if((tmk >=6) and (tmk <=10)) then

Potongan 50000

else

if((tmk >=11) and (tmk <=15)) then

Potongan 100000

else

Potongan 200000

endif

endif

endif

endfunction

procedure tampil_data_pgw(input pgw : pegawai)

{I.F. : User memasukan pilihan ke menu pilihan}

14

Page 15: Makalah Struktur Data

{F.S. : Menampilkan data pegawai yang dipilih user}

kamus

baris : integer

i : integer

countpgw : integer

algoritma

Cekcountpgw(countpgw)

for i 1 to countpgw do

output pgw[i].nip

output pgw[i].nama

output pgw[i].jk

output pgw[i].umur

output pgw[i].status

output pgw[i].almt

endfor

endprocedure

procedure tampilgaji(input pgw : pegawai)

{I.F. : User memasukan pilihan ke menu pilihan}

{F.S. : Menampilkan data pegawai yang dipilih user}

kamus

baris : integer

i : integer

countpgw : integer

algoritma

cekcountpgw(countpgw)

for i 1 to countpgw do

output pgw[i].nip

15

Page 16: Makalah Struktur Data

output pgw[i].nama

output pgw[i].gol

output gajipokok(pgw[i].gol)

output tunjangan(pgw[i].nip.status)

output potongan(pgw[i].tmk)

output total(gajipokok(pgw[i].gol) + tunjangan(pgw[i].status) – potongan(pgw[i].tmk))

endfor

endprocedure

{pencarian dengan sequential search dengan boolean}

Procedure cari_data1(input pgw : pegawai)

{I.F. : User memasukan data yang akan di cari}

{F.S. : menghasilkan data yang di cari user}

kamus

i : integer

countpgw : integer

ketemunama : boolean

data_cari : string

algoritma

cekcountpgw(countpgw)

ketemunama false

while (not ketemunama) do

i 1

ketemunama false

while (not ketemunama) and (i <= countpgw) do

if (pgw[i].nama = data_cari then

ketemunama truee

16

Page 17: Makalah Struktur Data

else

i i + 1

endif

endwhile

endwhile

if (ketemunama) then

output pgw[i].nip

output pgw[i].nama

output pgw[i].jk

output pgw[i].umur

output pgw[i].status

output pgw[i].almt

output pgw[i].gol

endif

endprocedure

{pencarian dengan sequential search dengan boolean}

Procedure cari_data2(input pgw : pegawai)

{I.F. : User memasukan data yang akan di cari}

{F.S. : menghasilkan data yang di cari user}

kamus

i : integer

countpgw : integer

ketemunip : boolean

data_cari : string

algoritma

17

Page 18: Makalah Struktur Data

cekcountpgw(countpgw)

ketemunip false

while (not ketemunip) do

i 1

ketemunip false

while (not ketemunip) and (i <= countpgw) do

if (pgw[i].nip = data_cari then

ketemunip truee

else

i i + 1

endif

endwhile

endwhile

if (ketemunip) then

output pgw[i].nip

output pgw[i].nama

output pgw[i].jk

output pgw[i].umur

output pgw[i].status

output pgw[i].almt

output pgw[i].gol

endif

endprocedure

procedure pengurutan(output pgw : pegawai)

{I.F. : User memilih data yang akan di urut}

18

Page 19: Makalah Struktur Data

{F.S. : menampilkan data yang telah terurut}

kamus

i : integer

j : integer

temp : data_pegawai

countpgw : integer

algoritma

cekcountpgw(countpgw)

for i 1 to (countpgw – 1) do

for j countpgw downto (i + 1) do

if (pgw[j].nip > pgw[j – 1].nip then

temp pgw[j]

pgw[j] pgw[j – 1]

pgw[j – 1] temp

endif

endfor

endfor

endprocedure

procedure penghancuran(output pgw : pegawai)

{I.F. : mengosongkan data pegawai}

{F.S. : menghasilkan data yang kosong}

kamus

i : integer,

countpgw : integer,

algoritma

19

Page 20: Makalah Struktur Data

cekcountpgw(countpgw)

for i 1 to countpgw do

pgw[i].nip 0

pgw[i].nama ' '

pgw[i].jk ' '

pgw[i].umur 0

pgw[i].almt ' '

pgw[i].status ' '

pgw[i].gol ' '

pgw[i].tmk 0

if (datacount[1].count = 0) then

output('Data kosong !')

output ('Tekan enter untuk kembali ke menu!')

endif

endfor

endprocedure

{algoritma utama}

Tampil_Menu_Utama

{I.F. : Layar menampilkan menu pilihan}

{F.S. : Menampilkan hasil sesuai menu yang dipilih}

kamus

procedure Tampil_Menu_utama (output pilih : integer)

procedure penciptaan (output pgw : pegawai)

procedure datapgw (output pgw : pegawai)

procedure tampil_menu_pgw (output pilih : integer)

20

Page 21: Makalah Struktur Data

function tunjangan (input status : string)integer

function gajipokok (input gol : string)integer

function potongan (input tmk : integer)integer

procedure tampil_data_pgw (input pgw : pegawai)

procedure tampilgaji (input pgw : pegawai)

procedure cari_data1 (input pgw : pegawai)

procedure cari_data2 (input pgw : pegawai)

procedure pengurutan (output pgw : pegawai)

procedure penghancuran (output pgw : pegawai)

Algoritma

While (pilih > 0) do

Tampil_menu_utama

If (pilih = 1) then

Datapgw(pgw)

Else

If (pilih = 2) then

Tampil_data_pgw(pgw)

If (pilih = 1) then

Tampil_data_pgw

Else

If (pilih = 2) then

Tampilgaji(pgw)

Else

If (pilih = 3) then

21

Page 22: Makalah Struktur Data

Cari_data1(pgw)

Else

If (pilih = 4) then

Cari_data2(pgw)

Else

If (pilih = 5) then

Pengurutan(pgw)

Tampilgaji(pgw)

Else

If (pilih = 6) then

Penciptaan(pgw)

Tampilgaji(pgw)

Else

If (pilih = 0) then

Write(‘data yang dimasukan falid, silahkan ulangi...!!!’)

Endif

Endif

Endif

Endif

Endif

Endif

Endif

Endif

Endif

22

Page 23: Makalah Struktur Data

Endwhile

2.5 CONTOH PROGRAM PADA PASCAL DENGAN MENGGUNAKAN METODE RADIX SORT SECARA DESCENDING

program data_pegawai;

uses crt;

const

maks_pgw = 20;

type

data_pgw = record

no : integer; {nomor}

nip : integer; {nomor induk pegawai}

nama : string[25]; {nama pegawai}

jk : string[25]; {jenis kelamin}

umur : integer; {umur pegawai}

almt : string[25]; {alamat pegawai}

status : string[25]; {status sosial pegawai}

gol : string[25]; {golongan}

tmk : integer; {tidak masuk kerja}

end;

type

pegawai = array[1..maks_pgw] of data_pgw;

type recordcountpgw = record

23

Page 24: Makalah Struktur Data

Count :integer;

end;

var

pgw : pegawai;

pilih : integer;

datacount :array[1..2] of recordcountpgw;

procedure countpgw(var i : integer);

begin

if datacount[1].count = 0 then

begin

i := 1;

datacount[1].count := 1;

end

else

begin

i := datacount[1].count + 1;

datacount[1].Count := datacount[1].count + 1;

end;

end;

procedure cekcountpgw(var i : integer);

begin

if datacount[1].count = 0 then

24

Page 25: Makalah Struktur Data

begin

i := 0;

end

else

begin

i := datacount[1].count ;

end;

end;

{proses untuk halaman utama}

Procedure Tampil_Menu_utama(var Pil : integer);

begin

window(1,1,80,25);textbackground(blue);clrscr;

gotoxy(27,4);textcolor(white);writeln('.:Program Gaji Pegawai:.');

gotoxy(27,5);writeln('=============================');

gotoxy(27,6);writeln('1. Masukan Data Pegawai');

gotoxy(27,7);writeln('2. Tampil Data Pegawai');

gotoxy(27,8);writeln('3. Cari Data Berdasarkan Nama');

gotoxy(27,9);writeln('4. Cari Data Berdasarkan NIP ');

gotoxy(27,10);writeln('5. Pengurutan Berdasarkan NIP' );

gotoxy(27,11);writeln('6. Penghancuran Data');

gotoxy(27,12);writeln('0. [Exit]');

gotoxy(27,13);writeln('=============================');

gotoxy(27,14);write('Select :');

25

Page 26: Makalah Struktur Data

gotoxy(36,14);write('-= =-');

gotoxy(38,14);readln(Pil);

end;

{proses penciptaan data awal dengan nilai awal 0}

procedure penciptaan(var pgw : pegawai);

var

i : integer;

nilaipgw : integer;

begin

clrscr;

cekcountpgw(nilaipgw);

for i := 0 to nilaipgw do

begin

pgw[i].nip := 0;

pgw[i].nama := ' ';

pgw[i].jk := ' ';

pgw[i].umur := 0;

pgw[i].almt := ' ';

pgw[i].status := ' ';

pgw[i].gol := ' ';

pgw[i].tmk := 0;

end;

end;

26

Page 27: Makalah Struktur Data

{proses isi nilai untuk data pegawai}

procedure datapgw(var pgw : pegawai);

var

i : integer;

begin

countpgw(i);

window(1,1,80,25);textbackground(blue);clrscr;

gotoxy(30,1);textcolor(white);write('masukan data pegawai');

gotoxy(2,2);textcolor(white);write('----Data Pegawai-----');

gotoxy(2,4);write('NIP :');

gotoxy(2,5);write('Nama :');

gotoxy(2,6);write('Jenis Kelamin :');

gotoxy(2,7);write('Umur :');

gotoxy(2,8);write('Alamat :');

gotoxy(2,9);write('Status :');

gotoxy(2,10);write('Golongan :');

gotoxy(2,11);write('Tidak Masuk Kerja :');

gotoxy(24,4);readln(pgw[i].nip);

gotoxy(24,5);readln(pgw[i].nama);

gotoxy(24,6);readln(pgw[i].jk);

gotoxy(24,7);readln(pgw[i].umur);

gotoxy(24,8);readln(pgw[i].almt);

gotoxy(24,9);readln(pgw[i].status);

27

Page 28: Makalah Struktur Data

{validasi status}

while(pgw[i].status <> 'Menikah') and

(pgw[i].status <> 'Belum Menikah') do

begin

gotoxy(24,8);clreol;

gotoxy(2,13);textcolor(red);writeln('Di isi antara "Menikah" dan "Belum Menikah", silahkan ulangi lagi..!!');

gotoxy(71,13);readln;

gotoxy(2,13);clreol;

textcolor(white);

gotoxy(24,8);readln(pgw[i].status);

end;

gotoxy(24,10);readln(pgw[i].gol);

while(pgw[i].gol <> 'A') and

(pgw[i].gol <> 'B') and

(pgw[i].gol <> 'C') and

(pgw[i].gol <> 'D') do

begin

gotoxy(24,9);clreol;

gotoxy(2,13);textcolor(red);writeln('Golongan A / B / C / D, Silahkan Ulangi..!');

gotoxy(44,13);readln;

gotoxy(2,13);clreol;

textcolor(white);

gotoxy(24,9);readln(pgw[i].gol)

28

Page 29: Makalah Struktur Data

end;

gotoxy(27,11);writeln('Hari');

gotoxy(24,11);readln(pgw[i].tmk);

gotoxy(2,13);textcolor(blue);write('Data Saved..!');

textcolor(white);

gotoxy(2,14);write('Tekan enter untuk kembali ke menu!');

readln;

end;

procedure tampil_menu_pgw(var pilih : integer);

begin

gotoxy(31,8);textcolor(red);write('Data Karyawan');

textcolor(white);

gotoxy(28,9);writeln('=========================');

gotoxy(28,10);write('1. Tampil Data Karyawan');

gotoxy(28,11);write('2. Tampil Gaji Karyawan');

gotoxy(28,12);write('0. Kembali ke menu');

gotoxy(28,13);writeln('=========================');

gotoxy(28,14);write('Select :');

gotoxy(37,14);write('-= =-');

gotoxy(39,14);readln(Pilih);

end;

29

Page 30: Makalah Struktur Data

{proses penghitungan tunjangan}

function tunjangan(status: string):integer;

begin

if(status = 'Menikah')then

begin

tunjangan := 500000;

end

else

tunjangan := 0;

end;

{proses penghitungan gaji pokok}

function gajipokok(gol: string):integer;

begin

if(gol = 'A')then

gajipokok := 1000000

else

if(gol = 'B')then

gajipokok := 1500000

else

if(gol = 'C')then

gajipokok := 2000000

else

gajipokok := 2500000

end;

30

Page 31: Makalah Struktur Data

{proses penghitungan potongan}

function potongan(tmk : integer):integer;

begin

if ((tmk >=0) and (tmk <=5))then

potongan := 0

else

if ((tmk >=6) and (tmk <=10))then

potongan := 50000

else

if ((tmk >= 11) and (tmk <=15))then

potongan := 100000

else

potongan := 200000;

end;

procedure tampil_data_pgw(pgw : pegawai);

var

Baris :integer;

i : integer;

countpgw : integer;

begin

cekcountpgw(countpgw);

31

Page 32: Makalah Struktur Data

gotoxy(2,2);writeln(' ---------------------------------------------------------------------------- ');

gotoxy(2,3);writeln('| No |NIP| Nama |Jenis Kelamin|Umur| Status | Alamat |');

gotoxy(2,4);writeln(' ---------------------------------------------------------------------------- ');

Baris := 4;

for i := 1 to countpgw do

begin

gotoxy(2,Baris+1);writeln('| | | | | | | |');

gotoxy(3,Baris+1);writeln(i);

gotoxy(8,Baris+1);writeln(pgw[i].nip);

gotoxy(17,Baris+1);writeln(pgw[i].nama);

gotoxy(32,Baris+1);writeln(pgw[i].jk);

gotoxy(40,Baris+1);writeln(pgw[i].umur);

gotoxy(48,Baris+1);writeln(pgw[i].status);

gotoxy(60,Baris+1);writeln(pgw[i].almt);

Baris := Baris +1;

end;

gotoxy(2,Baris +1);writeln(' ---------------------------------------------------------------------------- ');

if(datacount[1].count = 0)then

32

Page 33: Makalah Struktur Data

begin

gotoxy(2,Baris +2);write('Data kosong !');

end;

gotoxy(2,Baris +3);write('Tekan enter untuk kembali ke menu!');readln;

clrscr;

end;

procedure tampilgaji(pgw : pegawai);

var

Baris :integer;

i : integer;

countpgw : integer;

begin

clrscr;

cekcountpgw(countpgw);

gotoxy(2,2);writeln(' ---------------------------------------------------------------------------- ');

gotoxy(2,3);writeln(' | No | NIP | Nama | Gol | Gaji |Tunjangan|Potongan| Total |');

gotoxy(2,4);writeln(' ---------------------------------------------------------------------------- ');

Baris := 4;

for i := 1 to countpgw do

begin

33

Page 34: Makalah Struktur Data

gotoxy(3,Baris+1);writeln('| | | | | | | | |');

gotoxy(5,Baris+1);writeln(i);

gotoxy(9,Baris+1);writeln(pgw[i].nip);

gotoxy(19,Baris+1);writeln(pgw[i].nama);

gotoxy(33,Baris+1);writeln(pgw[i].gol);

gotoxy(40,Baris+1);writeln(gajipokok(pgw[i].gol));

gotoxy(50,Baris+1);writeln(tunjangan(pgw[i].status));

gotoxy(58,Baris+1);writeln(potongan(pgw[i].tmk));

gotoxy(68,Baris+1);writeln(gajipokok(pgw[i].gol) + tunjangan(pgw[i].status) - potongan(pgw[i].tmk));

Baris := Baris +1;

end;

gotoxy(2,Baris +1);writeln(' ---------------------------------------------------------------------------- ');

if(datacount[1].count = 0)then

begin

gotoxy(2,Baris +2);write('Data kosong !');

end;

gotoxy(2,Baris +3);write('Tekan enter untuk kembali ke menu!');

readln;

clrscr;

end;

34

Page 35: Makalah Struktur Data

{proses pencariaan nama secara sequential search dengan boolean}

procedure cari_data1(pgw : pegawai);

var

i,countpgw,Konfirmasi : integer;

KetemuNama : boolean;

data_cari : string;

begin

clrscr;

cekcountpgw(countpgw);

KetemuNama := false;

while(Not KetemuNama) do

begin

gotoxy(2,1);write('--== Pencarian Data Pegawai ==--');

gotoxy(2,3);write('Masukkan Nama Pegawai:');readln(data_cari);

i := 1;

KetemuNama := false;

while(Not KetemuNama) and (i <= countpgw) do

begin

35

Page 36: Makalah Struktur Data

if(pgw[i].nama = data_cari) then

begin

KetemuNama := True;

end

else

begin

i := i +1;

end;

end;

if(KetemuNama) then

begin

gotoxy(2,5);write('Data Ditemukan!');

gotoxy(2,7);write('--== Data Pegawai ==--');

gotoxy(2,9);write('NIP :');

gotoxy(2,10);write('Nama :');

gotoxy(2,11);write('JenisKelamin :');

gotoxy(2,12);write('Umur :');

gotoxy(2,13);write('Status :');

gotoxy(2,14);write('Alamat :');

gotoxy(2,15);write('Golongan :');

gotoxy(16,9);write(pgw[i].nip);

gotoxy(16,10);write(pgw[i].Nama);

gotoxy(16,11);write(pgw[i].jk);

gotoxy(16,12);write(pgw[i].umur);

36

Page 37: Makalah Struktur Data

gotoxy(16,13);write(pgw[i].status);

gotoxy(16,14);write(pgw[i].almt);

gotoxy(16,15);write(pgw[i].gol);

gotoxy(2,18);write('---------------------');

gotoxy(2,19);writeln('Indeks ke ',i);

readln;

clrscr;

end

else

begin

gotoxy(2,5);write('Data tidak di temukan !');

gotoxy(2,7);write('Apakah Pencarian akan di lanjutkan?');

gotoxy(2,8);write('1. Lanjut');

gotoxy(2,9);write('0. Kembali ke menu');

gotoxy(2,10);write('Pilih :');readln(Konfirmasi);

if(Konfirmasi = 1) then

begin

KetemuNama :=false;

end

else

begin

KetemuNama := true;

end;

37

Page 38: Makalah Struktur Data

clrscr;

end;

end;

end;

{proses pencariaan NIP secara sequential search dengab boolean}

procedure cari_data2(pgw : pegawai);

var

i,countpgw,Konfirmasi : integer;

KetemuNIP : boolean;

data_cari : integer;

begin

clrscr;

cekcountpgw(countpgw);

KetemuNIP := false;

while(Not KetemuNIP) do

begin

gotoxy(2,1);write('--== Pencarian Data Pegawai ==--');

gotoxy(2,3);write('Masukkan NIP Pegawai:');readln(data_cari);

i := 1;

KetemuNIP := false;

38

Page 39: Makalah Struktur Data

while(Not KetemuNIP) and (i <= countpgw) do

begin

if(pgw[i].nip = data_cari) then

begin

KetemuNIP := True;

end

else

begin

i := i +1;

end;

end;

if(KetemuNIP) then

begin

gotoxy(2,5);write('Data Ditemukan!');

gotoxy(2,7);write('--== Data Pegawai ==--');

gotoxy(2,9);write('NIP :');

gotoxy(2,10);write('Nama :');

gotoxy(2,11);write('JenisKelamin :');

gotoxy(2,12);write('Umur :');

gotoxy(2,13);write('Status :');

gotoxy(2,14);write('Alamat :');

gotoxy(2,15);write('Golongan :');

39

Page 40: Makalah Struktur Data

gotoxy(16,9);write(pgw[i].nip);

gotoxy(16,10);write(pgw[i].Nama);

gotoxy(16,11);write(pgw[i].jk);

gotoxy(16,12);write(pgw[i].umur);

gotoxy(16,13);write(pgw[i].status);

gotoxy(16,14);write(pgw[i].almt);

gotoxy(16,15);write(pgw[i].gol);

gotoxy(2,18);write('---------------------');

gotoxy(2,19);writeln('Indeks ke ',i);

readln;

clrscr;

end

else

begin

gotoxy(2,5);write('Data tidak di temukan !');

gotoxy(2,7);write('Apakah Pencarian akan di lanjutkan?');

gotoxy(2,8);write('1. Lanjut');

gotoxy(2,9);write('0. Kembali ke menu');

gotoxy(2,10);write('Pilih :');readln(Konfirmasi);

if(Konfirmasi = 1) then

begin

KetemuNIP :=false;

end

else

40

Page 41: Makalah Struktur Data

begin

KetemuNIP := true;

end;

clrscr;

end;

end;

end;

Procedure pengurutan(var pgw : pegawai);

var

i, j : integer;

temp : data_pgw;

countpgw : integer;

begin

{Mengurutkan data berdasarkan kode barang secara Menaik}

cekcountpgw(countpgw);

for i := 1 to (countpgw-1) do

begin

for j := countpgw downto (i+1) do

begin

if(pgw[j].nip > pgw[j-1].nip) then

begin

temp := pgw[j];

pgw[j] := pgw[j-1];

pgw[j-1] := temp;

41

Page 42: Makalah Struktur Data

end;

end;

end;

end;

{program utama}

begin

Pilih:=1;

while(Pilih>0)do

begin

clrscr;

Tampil_Menu_utama(Pilih);

if(Pilih=1)then

begin

clrscr;

datapgw(pgw);

end

else

if (pilih=2) then

begin

clrscr;

tampil_menu_pgw(pilih);

if (pilih=1) then

begin

clrscr;

tampil_data_pgw(pgw);

42

Page 43: Makalah Struktur Data

end

else

if (pilih=2) then

begin

clrscr;

tampilgaji(pgw);

readln;

end;

end

else

if (pilih=3) then

begin

clrscr;

cari_data1(pgw);

readln;

end

else

if (pilih=4) then

begin

clrscr;

cari_data2(pgw);

end

else

if (pilih=5) then

begin

43

Page 44: Makalah Struktur Data

clrscr;

pengurutan(pgw);

tampilgaji(pgw);

end

else

if(pilih=6) then

begin

clrscr;

penciptaan(pgw);

tampilgaji(pgw);

end

else

if (Pilih = 0) then

begin

end

else

begin

gotoxy(22,14);writeln('Data yang di masukan falid, silkan ulangi!');

readln;

end;

end;end.

44

Page 45: Makalah Struktur Data

HASIL OUTPUT PROGRAMNYA:

Pada gambar diatas merupakan program menu pilihan yang mengandung 1

sampai 6 pilihan :

Jika kita memilih menu nomor 1 maka kita mulai melakukan pengisiah data

pegawai.

Jika memilih menu nomor 2 maka akan menampilkan data barang yang telah

di isi.

Jika kita memilih menu nomor 3 maka program akan melaukan pencariaan

berdasarkan nama.

45

Page 46: Makalah Struktur Data

Jika kita memilih menu nomor 4 maka program akan melaukan pencariaan

berdasarkan nama

Jika kita memilih menu nomor 5 maka program akan melakukan pengurutan

berdasarkan NIP secara descending.

Jika kita memilih menu nomor 6, program akan melakukan penghancuran

atau menghapus semua data yang telah kita masukkan.

Jika memilih angka 0 maka keluar dari program.

. Pada gambar di atas menampilkan data-data yang telah kita masukkan

sebelumnya dengan syarat memilih menu nomor 1. Jika ingin menambahkan data-data,

maka tekan Enter atau kembali ke menu pilihan

46

Page 47: Makalah Struktur Data

Pada gambar di atas menampilkan menu pilihan ke-2 yang akan kita pilih dengan

syarat memilih menu nomor 1 atau 2. Jika ingin menambahkan data-data, maka tekan

Enter atau kembali ke menu pilihan.

Pada gambar di atas merupkan tampilan data pegawai yang telah dimasukan

sebelumnya.

47

Page 48: Makalah Struktur Data

Pada gambar di atas merupkan tampilan data pegawai berdasarkan gaji yang telah

dimasukan sebelumnya...

Pada gambar di atas merupkan tampilan pencariaan data pegawai berdasarkan

nama pegawai.

48

Page 49: Makalah Struktur Data

Pada gambar di atas merupkan tampilan pencariaan data pegawai berdasarkan

nomor induk pegawak(nip).

.

Pada gambar di atas merupakan pengurutan atau sorting secara descending yang

menampilkan data pegawai berdasarkan NIP secara menurun.

49

Page 50: Makalah Struktur Data

pada gambar di atas merupkan penghancuran data pegawai sehingga

mengembalika nilai data pegawai dalam kondisi awal.

BAB IIIPENUTUP

3.1. KESIMPULAN

Dengan menggunakan Algoritma radix sort pengurutan data akan

menjadikan lebih cepat, karena metode ini termasuk ke dalam pengurutan yang

menggunakan proses pengurutan data yang dilakukan tanpa pembandingan antar

data (Non-comparison Sort), yaitu data diurutkan sesuai dengan pigeon hole

principle. Sehingga proses pengurutan jadi lebih cepat.

Dan algoritma radix sort ini dapat di implementasikan kedalam berbagai

macam bahasa pemograman.

50

Page 51: Makalah Struktur Data

JOBDESK TIAP - TIAP ANGGOTA

Arif Romadhan (10112063)

Membuat Algoritma dan Membuat Program Pascal.

Membuat procedure cari_data1 (sequential search dengan boolean).

Membuat funtion gaji pokok.

Membuat funtion potongan.

Membuat procedure pengurutan (sorting).

Membuat procedure tampilgaji.

Menyusun makalah.

Membuat algoritma utama.

Yoga Limka (10112061)

Membuat procedure tampil_menu_utama.

Membuat procedure cari_data2 (sequential search dengan boolean).

51

Page 52: Makalah Struktur Data

Mendesign tampilan program.

Editor dalam penyusunan makalah.

M. Hadi Panji (10112059)

Membuat procedure penciptaan.

Membuat procedure tampil_menu_pgw.

Mendesign tampilan program.

Mengetik dan menyusun materi.

M. Romdon Nurdin S (10111040)

Membuat procedure penghancuran.

Membuat function tunjangan.

Mencari referensi teori.

Editor dalam penyusunan makalah.

Dery Muhammad Ramdani (10111017)

Membuat procedure datapgw.

Membuat procedure tampil_data_pgw.

Mendesign tampilan program.

Mengetik dan menyusun materi.

52

Page 53: Makalah Struktur Data

DAFTAR PUSTAKA

Munir, Rinaldi. 2011. Algoritma dan Pemrograman dalam bahasa Pascal dan C.

Informatika: Bandung

http://www.scribd.com/document_downloads/direct/52172156?

extension=docx&ft=1331303998&lt=1331307608&uahk=nifnA9ZOUQYV4Lg

Q8nVOrqpS%2F0I

http://www.scribd.com/doc/53014751/Algoritma-Radix-Sort

http://www.math.grin.edu/~stone/courses/fundamentals/radix-sorting.html

http://www.chasanc.com/index.php/Sort-Algorithms/Radix-Sort.html

http://www.nusinau.com/program-untuk-mengurutkan-data-dengan-metode-

radix-sort/

53

Page 54: Makalah Struktur Data

54