Anda di halaman 1dari 53

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

BAB I PENDAHULUAN
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) b) c) d) Memenuhi tugas mata kuliah Struktur Data. Mengetahui konsep daripada pengurutan dengan metode Radix Sort. Memperdalam pengetahuan tentang cara kerja metode Radix Sort. Dapat memahami implementasi Radix Sort.

1.3. LANDASAN TEORI A. DEFINISI ALGORITMA Algoritma adalah urutan langkahlangkah 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]

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

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 tengah AAC 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

Pertama kali, data dibagi-bagi sesuai dengan digit terkanan : 121 076 823 367 232 434 742 936 274

Kategori digit 0 1 2 3 4 5 6 7 8 9

Isi 121 232,742 823 434,274 076,936 367 -

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 subkumpulan data harus sesuai dengan urutan kemunculan pada kumpulan data

121

232

742

823

434

274

076

936

367

Kategori digit 0 1 2 3 4 5 6 7 8 9

Isi 121, 823 232, 434, 936 742 367 274, 076 -

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

Kategori digit 0 1 2 3 4 5 6 7 8 9

Isi 076 121 232,274 367 434 742 826 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

2.4. ALGORITMA METODE RADIX SORT SECARA DESCENDING

Program data_pegawai Kamus Const maks_pgw = 20 Type data_pgw = record no nip nama jk umur almt status gol tmk Type pegawai = array[1..maks_pgw] of data_pgw : integer, : integer, : string[25], : string[25], : integer, : string[25], : string[25], : string[25], : integer, {nomor} {nomor induk pegawai} {nama pegawai} {jenis kelamin} {umur pegawai} {alamat pegawai} {status sosial pegawai} {golongan/jabatan pegawai} {tidak masuk kerja pegawai}

Type recordcountpgw = record Count pgw pilih pil : integer

: pegawai, : integer, : 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 i0 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 output (menu pilihan) output (1. Data Awal Pegawai') output ('2. Masukan Data Pegawai')

10

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 ' ' pgw[i].gol ''

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

11

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} algoritma output(1. Tampil Data Pegawai) output(2. Tampil Gaji Pegawai)

12

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 gajipokok 2500000 endif endif

13

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} {F.S. : Menampilkan data pegawai yang dipilih user} kamus baris : integer

14

: 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 i : integer : integer

countpgw : integer algoritma cekcountpgw(countpgw) for i 1 to countpgw do output pgw[i].nip output pgw[i].nama output pgw[i].gol

15

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 countpgw ketemunama data_cari 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 else i i + 1 : integer : integer : boolean : string

16

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 countpgw ketemunip data_cari algoritma cekcountpgw(countpgw) ketemunip false : integer : integer : boolean : string

17

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}

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

18

kamus i j temp : integer : integer : 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 cekcountpgw(countpgw) for i 1 to countpgw do

19

pgw[i].nip

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) function tunjangan (input status : string)integer function gajipokok (input gol : string)integer

20

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 Cari_data1(pgw) Else

21

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 Endwhile

22

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 nip nama jk umur almt status gol tmk end; type pegawai = array[1..maks_pgw] of data_pgw; type recordcountpgw = record Count :integer; end; : integer; : integer; : string[25]; : string[25]; : integer; : string[25]; : string[25]; : string[25]; : integer; {nomor} {nomor induk pegawai} {nama pegawai} {jenis kelamin} {umur pegawai} {alamat pegawai} {status sosial pegawai} {golongan} {tidak masuk kerja}

23

var pgw pilih datacount : pegawai; : integer; :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 := end; end; datacount[1].count + 1;

procedure cekcountpgw(var i : integer); begin if datacount[1].count = 0 then begin i := 0;

24

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 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 :'); gotoxy(36,14);write('-= =-'); gotoxy(38,14);readln(Pil); Gaji

25

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;

{proses isi nilai untuk data pegawai} procedure datapgw(var pgw : pegawai);

26

var i : integer; begin countpgw(i); window(1,1,80,25);textbackground(blue);clrscr; gotoxy(30,1);textcolor(white);write('masukan pegawai'); gotoxy(2,2);textcolor(white);write('----Data --'); 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 :'); :'); :'); :'); :'); :'); :'); :'); data

Pegawai---

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);

{validasi status}

27

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) end;

28

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 menu!'); readln; end; enter untuk kembali ke

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;

{proses penghitungan tunjangan} function tunjangan(status: string):integer;

29

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

{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 i :integer; : integer;

countpgw : integer; begin cekcountpgw(countpgw);

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

31

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

Nama |');

|Jenis

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 begin gotoxy(2,Baris +2);write('Data kosong !'); end;

32

gotoxy(2,Baris ke menu!');readln; clrscr; end;

+3);write('Tekan

enter

untuk

kembali

procedure tampilgaji(pgw : pegawai); var Baris i :integer; : integer;

countpgw : integer; begin clrscr; cekcountpgw(countpgw); gotoxy(2,2);writeln(' --------------------------------------------------------------------------- '); gotoxy(2,3);writeln(' | No | Gol | Gaji |Tunjangan|Potongan| NIP Total | Nama |'); |

gotoxy(2,4);writeln(' --------------------------------------------------------------------------- '); Baris := 4; for i := 1 to countpgw do begin

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

| |');

33

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 ke menu!'); readln; clrscr; end; +3);write('Tekan enter untuk kembali

{proses pencariaan nama secara sequential search dengan boolean} procedure cari_data1(pgw : pegawai);

34

var i,countpgw,Konfirmasi : integer; KetemuNama data_cari : boolean; : string;

begin clrscr; cekcountpgw(countpgw); KetemuNama := false;

while(Not KetemuNama) do begin gotoxy(2,1);write('--== Pencarian Data Pegawai ==--'); gotoxy(2,3);write('Masukkan Pegawai:');readln(data_cari); Nama

i := 1; KetemuNama := false;

while(Not KetemuNama) and (i <= countpgw) do begin if(pgw[i].nama = data_cari) then begin KetemuNama := True; end

35

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); gotoxy(16,13);write(pgw[i].status); gotoxy(16,14);write(pgw[i].almt); gotoxy(16,15);write(pgw[i].gol);

36

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 lanjutkan?'); Pencarian akan di

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; clrscr; end; end; end;

37

{proses pencariaan boolean}

NIP

secara

sequential

search

dengab

procedure cari_data2(pgw : pegawai); var i,countpgw,Konfirmasi : integer; KetemuNIP data_cari begin clrscr; cekcountpgw(countpgw); KetemuNIP := false; : boolean; : integer;

while(Not KetemuNIP) do begin gotoxy(2,1);write('--== Pencarian Data Pegawai ==--'); gotoxy(2,3);write('Masukkan Pegawai:');readln(data_cari); i := 1; KetemuNIP := false; NIP

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

38

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 :'); :'); :'); :');

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);

39

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 lanjutkan?'); Pencarian akan di

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 begin KetemuNIP := true; end; clrscr;

40

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 > begin temp pgw[j] := pgw[j]; := pgw[j-1]; pgw[j-1].nip) then

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

41

{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); end else if (pilih=2) then begin

42

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 clrscr; pengurutan(pgw); tampilgaji(pgw); end

43

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 falid, silkan ulangi!'); readln; end; end; end. yang di masukan

44

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

45

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

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

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.

Pada gambar di atas merupkan tampilan pencariaan data pegawai berdasarkan nomor induk pegawak(nip). .

48

Pada gambar di atas merupakan pengurutan atau sorting secara descending yang menampilkan data pegawai berdasarkan NIP secara menurun.

pada gambar di atas merupkan penghancuran data pegawai sehingga mengembalika nilai data pegawai dalam kondisi awal.

49

BAB III PENUTUP


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

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

51

Dery Muhammad Ramdani (10111017) Membuat procedure datapgw. Membuat procedure tampil_data_pgw. Mendesign tampilan program. Mengetik dan menyusun materi.

52

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=nifnA9ZOUQYV4LgQ8nVOrqpS%2 F0I 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-metoderadix-sort/

53