Monday, August 9, 2010
soal 2a
uses crt;
type list = ^node;
node=record
data: record
kode:string[5];
harga:real;
end;
next:list;
end;
var
L:list;
Procedure inisialisasi(var L:list);
begin
L:=nil;
end;
Procedure tambahbarusimpul(kode:string;harga:real; var L:List);
var
pbaru,ekor:list;
begin
ekor:=L;
if ekor <> NIL then
begin
new(pbaru);
pbaru^.data.kode:=kode;
pbaru^.data.harga:=harga;
pbaru^.next:=NIL;
while ekor^.next<>nil do
ekor:=ekor^.next;
ekor^.next:=pbaru;
end
else
begin
new(L);
L^.data.kode:=kode;
L^.data.harga:=harga;
L^.next:=NIL;
end;
end;
procedure cetaksenarai(L:list);
var
ekor:list;
begin
ekor:=L;
if ekor <> NIL then
while ekor<>nil do
begin
writeln(ekor^.data.kode);
writeln(ekor^.data.harga:8:2);
ekor:=ekor^.next;
end
else
writeln('kosong');
writeln;
end;
procedure cariganti(var a:list);
var
bantu: list;
kode :string[5];
begin
if a = nil then Writeln('List tidak ada')
else
begin
write('masukkan kode barang : ');
readln(kode);
bantu :=a;
while (bantu<> nil) Do
begin
if bantu^.data.kode= kode then
bantu^.data.harga:=bantu^.data.harga*1.5;
bantu:=bantu^.next;
end;
end;
end;
BEGIN
inisialisasi(L);
cariganti(L);
tambahbarusimpul('a1123',10000,L);
tambahbarusimpul('a1124',11000,L);
cetaksenarai(L);
cariganti(L);
cetaksenarai(L);
readln;
end.
Thursday, August 5, 2010
pembahasan radix short
PEMBAHASAN PROGRAM
berikut merupakan pembahasan dari tulisan ini
http://laksonoadi.blogspot.com/2010/08/radix-short-dengan-pascal.html
Implementasi dari algoritma tersebut dibuat menggunakan bahasa pascal, dengan menggunakan random pada penginputan kemudian Array A adalah array input dan array B adalah array A yang sudah terurut kanan dan Array C adalah array A yang sudah terurut.
PROGRAM UTAMA
program radix_sort;
uses crt;
type list = array [1..10]of integer;
var
list1,list2,list3 :list;
b:integer;
i,k,jum,max:byte;
//fungsi pangkat
function pangkat(a : integer; b : integer) : integer;
var i : integer; temp : integer;
begin
temp := 1;
for i := 1 to b do
begin
temp := temp * a;
end;
pangkat := temp;
end;
//fungsi input
procedure input(var a,b,c:list;max:integer);
begin
for i:=1 to max do
begin
a[i]:=random(999);c[i]:=a[i];b[i]:=a[i];
end;
end;
Keterangan:
a: 134 b: 134 c: 134
251 251 251
224 224 224
352 352 352
Jadi array a,b,c pada proses awal input nilainya adalah sama
//PROCEDURE LEBAR => untuk mengetahui lebar angka
procedure lebar(var jum:byte;a:list;max:byte);
var i,j:byte;
begin
j:=0;
jum:=0;
for i:=1 to max do
begin
b:=a[i];
while (b<>0) do
begin
b:=b div 10;
j:=j+1;
end;
if (jum
j:=0;
end;
end;
Keterangan:
For i:=1 to max (max=4)
i=1, j=0
b:=a[i]
b:=a[1] = 134
Periksa apakah b<>0 ? Ya
b:= b div 10
b:= 134 div 10
b:= 13
j:=j+1
j:=0+1=1
b:=13 dan b<>0 maka
b:= b div 10
b:= 13 div 10
b:= 1
j:=j+1
j:=1+1=2
b:=1 dan b<>0 maka
b:= b div 10
b:= 1 div 10
b:= 0
j:=j+1
j:=2+1=3
If (0<3)>
Jum:=3
J:=0
//FUNGSI PENGURUTAN RADIX
procedure radix(var a,c:list;jum,max:byte);
var e,i,j,k,konter:byte;
b:integer;
begin
for i:=1 to jum do
begin
konter:=0;
for e:=0 to 9 do
begin
for j:=1 to max do
begin
b:=(a[j]div(pangkat(10,i-1))) mod 10;
if (b=e) then
begin
konter:=konter+1;
c[konter]:=a[j];
writeln('berubah pada saat i=',i,' bilangan=',e,' dan urutan ke=',j);
writeln('yang di konter=',konter,' adalah ',c[konter]);
end;
end;
end;
writeln;
writeln;
for k:=1 to max do
begin
a[k]:=c[k];
end;
end;
end;
for i:= 1 to jum do (jum=3)
konter=0
for e=0 to 9 do
for j:=1 o max(max=4)
j=1,i=1,e=0
b=a[j] div(pangkat(10,i-1)) mod 10
b=a[1] div(pangkat(10,i-1)) mod 10
b=134 div(pangkat(10,1-1)) mod 10
b=(134 div (10^0)) mod 10
b=(134 div 1) mod 10
b=4
Jadi, if (b=e) → (4≠0) then lanjutkan sampai e=9
PROGRAM UTAMA
begin
max:=5;
input(list1,list2,list3,max);
lebar(jum,list3,max);
radix(list1,list2,jum,max);
for k:=1 to max do
begin
writeln(list3[k],' ',list1[k]);
end;
end.
KESIMPULAN
Ø Radix sort adalah algoritma pengurutan data yang cepat, efektif dan sederhana
Ø Dalam penggunaannya radix sort bahkan bisa dimodifikasi sehingga bisa digunakan untuk mengurutkan data - data negative, float dan pecahan untuk kasus – kasus tertentu
konsep radix short
http://laksonoadi.blogspot.com/2010/08/radix-short-dengan-pascal.html
merupakan source dari program sederhana yang menggambarkan radix short
berikut ilustrasi yang bisa di gambarkan dari radix short
RADIX SORT
Radix Sort merupakan salah satu algoritma Non-Comparasion Sort (pengurutan tanpa pembandingan). Proses yang dilakukan dalam metode ini adalah mengklasifikasikan data sesuai dengan kategori terurut yang tertentu, dan tiap kategori dilakukan pengklasifikasian lagi, dan seterusnya sesuai kebutuhan, lalu subkategori-kategori tersebut digabungkan kembali.
Secara harfiah Radix dapat diartikan sebagai posisi dalam angka, karena metode ini pertamakalinya mengurutkan nilai-nilai input berdasarkan radix pertamanya, lalu pengurutan dilakukan berdasarkan radix keduanya, dan begitu seterusnya. Pada system desimal, radix adalah digit dalam angka desimal. Dalam system bilangan desimal, digit – digit suatu bilangan dapat dikelompokkan menjadi 10 kelompok, yaitu kelompok “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, dengan demikian harga suatu bilangan dapat diidentifikasikan ke dalam kelompok – kelompok digit tersebut.
Ide dasar dari metode Radix sort ini adalah mengkategorikan data – data menjadi subkumpulan data sesuai dengan nilai radixnya kemudian mengkategorikannya kembali berdasar nilai radix lainnya.
IMPLEMENTASI RADIX SORT
Pengurutan data dengan metoda Radix sort dilakukan dengan cara membandingkan setiap digit bilangan yang akan diurutkan mulai dari digit paling kanan, misalnya
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
Sehingga dapat ditabelkan :
Kategori Digit Isi Kanan
0 -
1 121
2 232, 742
3 823
4 434, 274
5 -
6 076, 936
7 367
8 -
9 -
Kategori Digit Isi Tengah
0 -
1 -
2 121, 823
3 232, 434, 936
4 742
5 -
6 367
7 274, 076
8 -
9 -
Kategori Digit Isi (kiri)
0 076
1 121
2 232, 274
3 367
4 434
5 -
6 -
7 742
8 823
9 936
Tabel 1 Hasil Pengkategorian Pertama
Hasil pengkategorian tersebut kemudian digabung kembali menjadi :
121 232 274 823 434 274 076 936 367
Kemudian dilakukan pengkategorian lagi berdasar digit kedua(tengah) :
121 232 274 823 434 274 076 936 367
Sehingga penabelannya dapat dilihat pada table 2
Hasil pengkategorian tersebut kemudian digabung kembali menjadi :
121 823 232 434 936 742 367 274 076
Kemudian langkah ketiga, dilakukan pengkategorian lagi berdasar digit ketiga (terakhir) :
121 823 232 434 936 742 367 274 076
Tabel 1.3 Hasil Pengkattegorian Ketiga
Yang kemudian hasil akhirnya dapat dituliskan :
076 121 232 274 367 434 742 823 936