Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
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
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
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
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}
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,
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
12
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
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}
18
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]
procedure penghancuran(output pgw : pegawai) {I.F. : mengosongkan data pegawai} {F.S. : menghasilkan data yang kosong} kamus i : integer,
19
pgw[i].nip
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
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;
24
{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---
{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;
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;
31
Nama |');
|Jenis
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;
32
+3);write('Tekan
enter
untuk
kembali
countpgw : integer; begin clrscr; cekcountpgw(countpgw); gotoxy(2,2);writeln(' --------------------------------------------------------------------------- '); gotoxy(2,3);writeln(' | No | Gol | Gaji |Tunjangan|Potongan| NIP Total | Nama |'); |
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
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 :'); :'); :'); :');
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
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
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 :'); :'); :'); :');
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
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
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
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.
. 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
50
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<=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