Showing posts with label Kuliah. Show all posts
Showing posts with label Kuliah. Show all posts

Data Barang Dalam Pascal

Pengertian Pascal


Pemrograman Pascal adalah bahasa tingkat tinggi (High Level Languange) yaitu bahasa pemrograman yang mudah dipahami oleh bahasa manusia. Pascal merupakan bahasa yang terstruktur tersusun atas sejumlah blok.Blok-blok yang kecil selanjutnya dapat dapat dipakai untuk membuat blok yang lebih besar. Blok ini lebih dikenal dengan sebutan subprogram, yang dibedakan atas prosedur dan fungsi. Dalam pembahasan kali ini kami akan membahas tentang prosedur yang diaplikasikan dalam program Data Barang .

1.      LISTING PROGRAM



1.1. PEMBAHASAN LISTING PROGRAM
1.1.1  Variabel
Var
   kd,nm_brg,bonus:string;
   hrg:longint;
   ds_brg,jml,jml_tot:real;
   ulang:char;
   label atas;

Fungsinya untuk penamaan dan pendeklarasian jenis tipe data.
1.1.2 Prosedur

Prosedur merupakan suatu program yang terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama. Procedure berguna untuk mengumpulkan statemen-statement (Pernyataan) yang dapat dijalankan menjadi satu dalam blok dan untuk menjalankan kembali hanya dengan menuliskan nama procedure yang menampungnya, yaitu pemanggilan dilakukan pada program utama.

A.    Prosedure Input

procedure input;
begin
gotoxy (21,2);writeln('===============================');
gotoxy (27,3);writeln('PROGRAM DATA BARANG');
gotoxy (32,4);writeln('KELOMPOK 1');
gotoxy (30,5);writeln('STRUKTUR DATA');
gotoxy (21,6);writeln('===============================');
writeln;
write('Inputkan Kode Barang   : ');readln(kd);
write('Inputkan Jumlah Barang : ');readln(jml);
writeln('-------------------------------');
end;
Fungsinya untuk pendeklarasi hasil inputan kemuadian hasil pendeklarasian tersebut akan bisa di panggil.

A.    Procedure Barang

procedure barang;
begin
if (kd='KB001') or (kd='kb001') then
begin
nm_brg:='Baju';
hrg:=75000;
end
else if (kd='KB002') or (kd='kb002') then
begin
nm_brg:='Celana';
hrg:=120000;
end
else if (kd='KB003') or (kd='kb003') then
begin
nm_brg:='Tas';
hrg:=200000;
end
else
begin
nm_brg:='-';
hrg:=0;
end
end;
Fungsi dari prosedur barang, fungsi ini akan menampilkan nama dan harga barang jika inputan kode barang sesuai dengan deklarasi prosedur ini.
B.     Procedure Hitung Diskon

procedure hitung_diskon;
begin
ds_brg:= hrg * 0.2;
end;

Fungsi dari prosedur diskon, akan secara automatis mengurangi total pembayaran.
C.     Procedure Hitung Jumlah Total

procedure hitung_jmltot;
begin
jml_tot:=(jml*hrg) - ds_brg;
end;
Fungsi dari prosedur hitung_jmltot, akan secara automatis menghitung total pembayaran .
D.    Prosedure Hitung Bonus

procedure hitung_bonus;
begin
if jml_tot>=500000 then
bonus:='Selamat  Anda Mendpatkan Jam Tangan Alba'
else if jml_tot>=300000 then
bonus:='Selamat  Anda Mendpatkan Jaket'
else if jml_tot = 0 then
bonus:='Tidak Ada'
else
bonus:='Maaf, Anda Mendapatkan Zonk'
end;

Fungsi dari prosedur hitung_bonus, akan menampilkan bonus jika hasil jumlah total bayar sesuai dengan yang sudah ditentukan pada deklarasi ini
1.1.3.  Procedure Utama

Begin
atas:
clrscr;
input;
barang;
writeln('Nama Barang  : ',nm_brg);
writeln('Harga        : ',hrg);
hitung_diskon;
hitung_jmltot;
hitung_bonus;
writeln('Diskon       : ',ds_brg:0:0);
writeln('Jumlah Total : ',jml_tot:0:0);
writeln('Anda Mendapatkan ',bonus);
writeln('-------------------------------');
write('Ulang? (y/n) : ');readln(ulang);
if (ulang = 'y') or (ulang = 'Y') then
goto atas;
end.

Fungsi listing program ini menampilkan awal program yang dijalankan dengan tinggal memanggil prosedur – prosedur yang sudah dibuat sesuai dengan kondisi yang dibutuhkan.

FlowChart :


Read More

Bubble short, Selection short, Shell short


Sorting bisa didefinisikan sebagai suatu pengurutan data yang sebelumnya disusun secara acak, sehingga menjadi tersusun secara teratur menurut aturan tertentu. sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah
Pada umumnya metode yang digunakan untuk sorting adalah :
1. Buble\Exchange sort
2. Selection sort
3. Shell Sort
4. Quick sort


Bubble/Exchange sort
Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergera/berpindah ke posisi yang tepat , seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. jika elemen sekarang lebih besar dari elemen berikutnya maka elemen tersebut ditukar (untuk pengurutan ascending) jika elemen sekarang lebih kecil daripada elemen berikutnya, maka kedua elemen tersebut ditukar (untuk pengurutan descending). algoritma ini seolanh olah menggeser satu per satu elemen dari kenan ke kiri atau kiri ke kanan. tergantung jenis pengurutannya. Ketika suatu proses telah selesai, maka bubble sort akan mengalami proses, demikian seterusnya. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan,serta tercapai pengurutan yang telah diinginkan


Contoh pengurutan data yang dilakukan dengan metode bubble sort sebagai berikut :

Proses 1 :
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 10 2 15 3 8

22 2 10 15 3 8
2 22 10 15 3 8


Pengecekan dimulai dari data yang paling akhir, kemudian dibandingkan dengan data di depannya,jika data didepannya lebih besar maka akan di tukar.


Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8

pengecekan dilakukan sampai dengan data ke-2 karena data pertama pasti sudah paling kecil.

Proses 3 :
2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15

Proses 4 :
2 3 8 22 10 15
2 3 8 22 15 10
2 3 8 15 22 10

Proses 5 :
2 3 8 15 22 10
2 3 8 15 10 22

Pengurutan berhenti.


Contoh Program :

#include
#include
#include

bubble_acak()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting

//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;

//input nilai masing" array
srand(time(NULL));
for (i=0; i
arr[i] = rand() %1000;

//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<


//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<

getch();
}


bubble_manual()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting

//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;

//input nilai masing" array
for (i=0; i
{
cout<<"masukkan angka ke-"<
cin>>arr[i];
}

//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<


//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<

//mission complete
getch();
}


main ()
{
int pilih;
char ulang;

do
{
clrscr ();
cout<<"tekan 1 : bilangan yang disorting dimasukan secara acak"<
cout<<"tekan 2 : bilangan yang disorting dimasukan secara manual"<
cout<<"masukkan pilihan : "; cin>>pilih;

switch (pilih)
{
case 1:
bubble_acak();
break;

case 2:
bubble_manual();
break;

default:
clrscr();
cout<<"\"maaf\""<
cout<<"\"pilihan yang dimasukkan salah\"";
break;
}
cout< "; cin>>ulang;
}

Dalam Procedure Pascal :
Procedure Bubble(Var Temp : Data; JmlData : Integer);
Var I,J : Integer;
Begin
For I:=2 To JmlData Do
For J:=JmlData DownTo I Do
If Temp[J] < Temp[J-1] Then {Untuk Descending
>}
SWAP(Temp[J], Temp[J-1]);
End;


Dalam Procedure SWAP :
Var Temp : Char;
Begin
Temp := A;
A := B;
B := Temp;
End;




Selection Sort
Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil. kemudian dilakukan penukaran dengan elemen ke-I. Secara singkat metode ini bisa dijelaskan sebagai berikut. Pada langkah pertama, dicari data yang terkecil dari data pertama sampai terakhir. Kemudian data tersebut kita tukar dari data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding dengan data lain. Pada langkah kedua, data terkecil kita cari mulai dari data kedua sampai data terakhir. Data terkecil yang kita peroleh kita tukar dengan data kedua. Demikian seterusnya sampai seluruh data terurut.


Contoh dari proses sorting dengan menggunakan metode Selection sort :





Dalam Procedure Pascal :

Procedure Selection(Var Temp : Data; JmlData : Integer);
Var I,J, Lok : Integer;
Begin
For I:=1 To JmlData-1 Do
Begin
Lok:=I;
For J:=I+1 To JmlData Do
If Temp[Lok] > Temp[J] Then Lok:=J;
SWAP(Temp[I], Temp[Lok]);
End;
End;





Shell Sort
Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudain elemen kedua kita bandingkan dengan eleen lain dengan jarak yang sama seperti jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu.


Contoh dari proses Sorting dengan menggunakan metode Shell Sort :



Dalam Procedure Pascal :

Procedure Shell(Var Temp : Data; JmlData : Integer);
Var I,J, Jarak : Integer;
Begin
Jarak := JmlData Div 2;
While Jarak > 0 Do
Begin
For I:=1 To JmlData-Jarak Do
Begin
J := I + Jarak;
If Temp[I] > Temp[J] Then
SWAP(Temp[I], Temp[Lok]);
End;
Jarak := Jarak Div 2;
End;
End;





Quick Sort
Metode ini dikembangkan oleh CAR Hoare. Secara garis besar metode ini dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang membunyai N elemen. Kita pilih sembarang elemen dari data tersebut, biasanya elemen pertama, misalnya X. Kemudain semua elemen tersebut disusun dengan menempatkan X pada posisi J sedemikian rupa shingga elemen ke 1 sampai ke J-1 mempuyai nilai lebih besar dari X. Sampai berikutnya diulang untuk setiap sub data.

Contoh dari proses Soring dengan menggunakan metode Quick Sort





Dalam Procedure Pascal :



Procedure Quick(Var Temp : Data; Awal, Akhir : Integer);
Var I,J : Integer;
Procedure ATUR;
Begin
I:=Awal +1;
J:= Akhir;
While Temp[I] < Temp[Awal] Do Inc(I);

While Temp[J] > Temp[Awal] Do Dec(J);
While I < J Do
Begin
SWAP(Temp[I], Temp[J]);
While Temp[I] < Temp[Awal] Do Inc(I);
While Temp[J] > Temp[Awal] Do Dec(J);
End;
SWAP(Temp[Awal], Temp[J]);
End;
Begin
If Awal < Akhir Then
Begin
ATUR;
Quick(Temp, Awal, J-1);
Quick(Temp,J+1,Akhir);
End;
End;

Source Click here
Read More

Algoritma Rekursif dan Iteratif

Penjelasan Rekursif
Teknik rekursif menggunakan procedure pemanggilan diri sendiri atau fungsi yang sama, fungsi rekursif juga merupakan suatu teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti dari masalah terjadi berulang kali  [For, While, dan While-Do].
Bentuk pemanggilan terdapat dalam body. Dalam fungsi rekursif ada komponen penting, yaitu kondisi kapan berhentinya fungsi dan pengurang atau pembagian data ketika fungsi memanggil dirinya sendiri dan secara
umum rekursif digunakan jika efisiensi dengan cara ini sudah memadai.

Berikut contoh program dalam pascal menggunakan rekursif

program fibonacci_rekursif;
uses wincrt;
var
x,i:integer;
function fib(n:integer):integer;
begin
if(n=1)then
fib:=0
else
if (n=2)then
fib:=1
else
fib:=fib(n-1)+fib(n-2);
end;
begin
write('Masukan batas suku bilangan ke : ');
readln(x);
write('Deret fibonacci : ');
for i:=1 to x do
write(fib(i),' ');
end.

Penjelasan Iterasi
Teknik Iteratif merupakan suatu teknik pembuatan algoritma dengan pemanggilan procedure beberapa kali atau hingga suatu kondisi tertentu terpenuhi. Tidak ada variabel lokal baru, Program tidak sederhana. Fungsi Iterasi dapat menggunakan denga for, while atau repeat until

Contoh program pascal menggunakan Iterasi

program fibonacci_iteratif;
uses wincrt;
var
fb1,fb2,fn,x,i:integer;
function fibo(n:integer):integer;
begin
if n<2 then fibo:=n
else
begin
fb1:=0;
fb2:=1;
for i:=2 to n do

begin 
fn:= fb1;
fb1:=fb2;
fb2:=fn+fb2;
end;
fibo:=fb2;
end;
end;
begin
write('Masukan batas suku bilangan ke : ');readln(x);
write('Deret fibonacci : ');
for i:=1 to x do
write(fibo(i),' ');
end.
Read More