Upload
arif-r
View
566
Download
4
Tags:
Embed Size (px)
DESCRIPTION
struktur data
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
{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
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
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
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
{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
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
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
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
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
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
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
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
{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
{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
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
{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
{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
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
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
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
{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
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
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
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
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
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
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
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
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
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
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
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
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.
48
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
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
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
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
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=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
54