Makalah Struktur Data
description
Transcript of Makalah Struktur Data
![Page 1: Makalah Struktur Data](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/15.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/19.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/25.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/27.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/28.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/30.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/31.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/32.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/33.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/34.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/35.jpg)
{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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/36.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/37.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/38.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/39.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/40.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/41.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/42.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/43.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/44.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/45.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/46.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/47.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/48.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/49.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/50.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/51.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/52.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/53.jpg)
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
![Page 54: Makalah Struktur Data](https://reader034.fdocuments.us/reader034/viewer/2022052603/55cf9ad9550346d033a3b5bc/html5/thumbnails/54.jpg)
54