Pembahasan Soal UTS Algoritma dan Pemrograman
Buat Algoritma dan Programnya untuk Menyelesaikan Kasus berikut
PT.ABC Motor adalah sebuah Toko yang khusus menjual Kendaraan Roda Dua dari berbagai merek, berikut adalah daftar harga Motor dan Bonus yang diberikan
Dibawah ini adalah Input Record Penjualan yang tercatat saat ini,
Rincian Lengkapnya adalah sebagai berikut:
Ada beberapa ketentuan yang berlaku di Toko ini, jika anda ingin mendapatkan Diskon dan Bonus
- Apabila membeli secara Tunai akan mendapat Diskon sebesar 10% dan juga akan mendapat bonus bila pembelian lebih atau sama dengan 3 buah
- Apabila membeli secara Kredit tidak mendapat diskon, tetapi akan tetap mendapat bonus bila pembelian lebih atau sama dengan 5 buah
Contoh Output yang diiginkan adalah
oooOOOooo
Untuk membuat Algoritma + Project pascal tersebut, sebaiknya anda sudah mengenal sebelumnya apa itu Array, type data bentukan, dan teknik pencarian data. Karena ketiga hal tersebut tidak akan saya bahas secara rincin pada article ini.
Ada dua teknik pembuatan yang dapat kita gunakan untuk membuat project seperti ini, diantaranya :
1. Tanpa Database
Tanpa database di sini dimaksud data dari harga tiap motor langsung di inisialisasi di sintax program pascal. jadi program lebih bersifat statis karena tidak dapat melakukan penambahan data dari produk motor lainnya. Alternatif program seperti ini sangat jarang di gunakan oleh program-program besar, karena akan sangat merepotkan jika harus masuk ke source code setiap ada data produk terbaru.
Berikut contoh Project Pascal Tanpa Database :
- uses crt;
- type harga_motor = record
- kode : string;
- nama_motor : string;
- harga : integer ;
- bonus : string;
- jumlah: integer;
- total : longint;
- bayar : string;
- diskon:real;
- total_bayar:real;
- end;
- penjualan = record
- kode_motor : string;
- jumlah_motor : integer;
- status_bayar : string;
- end;
- var
- penjualan_motor : array[1..100] of penjualan;
- daftar_harga : array[1..100] of harga_motor;
- tambah :string;
- ketemu : boolean;
- k,j,v,i:integer;
- begin
- daftar_harga[1].kode:= 'HT'; daftar_harga[1].nama_motor:= 'Honda Tiger'; daftar_harga[1].harga:= 13000000; daftar_harga[1].bonus:= 'Velg Recing';
- daftar_harga[2].kode:= 'HS'; daftar_harga[2].nama_motor:= 'Honda Supra'; daftar_harga[2].harga:= 12000000; daftar_harga[2].bonus:= 'Jaket';
- daftar_harga[3].kode:= 'YM'; daftar_harga[3].nama_motor:= 'Yamaha Mio'; daftar_harga[3].harga:= 11000000; daftar_harga[3].bonus:= 'Helm';
- daftar_harga[4].kode:= 'YV'; daftar_harga[4].nama_motor:= 'Yamaha Vega'; daftar_harga[4].harga:= 10000000; daftar_harga[4].bonus:= 'Kenalpot Racing';
- gotoxy(20,5);write('==== ===== =======');
- gotoxy(20,6);write('KODE JML Bayar');
- gotoxy(20,7);write('==== ===== =======');
- j:=1; v:=8;
- repeat
- k:=1;
- ketemu := False;
- gotoxy(20,v);readln(penjualan_motor[j].kode_motor);
- gotoxy(26,v);readln(penjualan_motor[j].jumlah_motor);
- gotoxy(32,v);readln(penjualan_motor[j].status_bayar);
- while(not ketemu)do
- begin
- if(daftar_harga[k].kode= penjualan_motor[j].kode_motor) then
- ketemu := TRUE
- else
- begin
- ketemu := FALSE;
- k:=k+1;
- end;
- end;
- if(ketemu) then
- begin
- daftar_harga[k].total := daftar_harga[k].harga * penjualan_motor[j].jumlah_motor;
- daftar_harga[k].bayar := penjualan_motor[j].status_bayar;
- daftar_harga[k].jumlah := penjualan_motor[j].jumlah_motor;
- if(penjualan_motor[j].status_bayar='TUNAI')then
- begin
- daftar_harga[k].diskon:= daftar_harga[k].total*0.1;
- if(penjualan_motor[j].jumlah_motor<3)then
- daftar_harga[k].bonus:=' ';
- end
- else if(penjualan_motor[j].jumlah_motor<5) then
- daftar_harga[k].bonus:=' ';
- daftar_harga[k].total_bayar := daftar_harga[k].total - daftar_harga[k].diskon;
- end;
- write('Tambah ? ');readln(tambah);
- tambah := upcase(tambah);
- v:=v+1;
- j:=j+1;
- writeln;writeln;
- until (tambah='NO');
- gotoxy(1,v); write('================================================================
- ================');
- gotoxy(1,v+1);write('KODE NAMA HARGA JML TOTAL BAYAR DISKON BONUS T.BAYAR');
- gotoxy(1,v+2);write('==================================================
- ==============================');
- v:=v+3;
- i:=1;
- while i<=4 do
- begin
- gotoxy(1,v+1);write(daftar_harga[I].kode:2);
- gotoxy(15-length(daftar_harga[I].nama_motor),v+1);write(daftar_harga[I].nama_motor:7);
- gotoxy(17,v+1);write(daftar_harga[I].harga);
- gotoxy(26,v+1);write(daftar_harga[I].jumlah:2);
- gotoxy(30,v+1);write(daftar_harga[I].total:7);
- gotoxy(38,v+1);write(daftar_harga[I].bayar:7);
- gotoxy(46,v+1);write(daftar_harga[I].diskon:7:0);
- gotoxy(69-length(daftar_harga[I].bonus),v+1);write(daftar_harga[I].bonus);
- gotoxy(72,v+1);write(daftar_harga[I].total_bayar:7:0);
- v:=v+1;
- i:=i+1;
- end;
- readkey;
- end.
Hasil dari Source Code tersebut akan menampilkan program seperti berikut ini :
2. Menggunakan Database
Seperti kelihatan pada juduk di atas, bahwa Teknik Pemrograman yang akan saya terangkan kali ini adalah teknik pemrograman dengan menggunakan Database. Namun saya tidak akan menjelaskan secara rinci penjelasan tentang Database ini, anda bisa membaca referensi-referensi lain yang membahas tentang Pemrograman Pascal mengunakan database ini..
Baiklah, saya akan langsung saja memberikan source code contoh program pascal dengan menggunakan database pada project PT. ABC Motor tersebut. :
- uses crt;
- type harga_motor = record
- kode : string;
- nama_motor : string;
- harga : longint ;
- bonus : string;
- jumlah: integer;
- total : longint;
- bayar : string;
- diskon:real;
- total_bayar:real;
- end;
- penjualan = record
- kode_motor : string;
- jumlah_motor : integer;
- status_bayar : string;
- end;
- var
- penjualan_motor : array[1..10] of penjualan;
- daftar_harga : array[1..10] of harga_motor;
- tambah,cekdata :string;
- ketemu : boolean;
- k,j,v,i,pilih:integer;
- var_teks:TEXT;
- begin
- clrscr;
- repeat
- gotoxy(20,4);write('/======================================\');
- gotoxy(20,5);write('| PT. ABC MOTOR |');
- gotoxy(20,6);write('\======================================/');
- gotoxy(20,7); write('/======================================\');
- gotoxy(20,8); write('| 1. Tambah Data |');
- gotoxy(20,9); write('| 2. Masukkan Penjualan |');
- gotoxy(20,10);write('| 3. Keluar |');
- gotoxy(20,11);write('\======================================/');
- gotoxy(20,12);write('/======================================\');
- gotoxy(20,13);write('| Pilih Menu[1..3] ? |');
- gotoxy(20,14);write('\======================================/');
- gotoxy(50,13);readln(pilih);
- until(pilih>=1) and(pilih<=4);
- v:=6; i:=1;
- case pilih of
- 1: begin
- clrscr;
- gotoxy(10,3);write('===================================================');
- gotoxy(10,4);write('KODE NAMA HARGA BONUS ');
- gotoxy(10,5);write('===================================================');
- repeat
- gotoxy(10,v);readln(daftar_harga[i].kode);
- gotoxy(17,v);readln(daftar_harga[i].nama_motor);
- gotoxy(33,v);readln(daftar_harga[i].harga);
- gotoxy(46,v);readln(daftar_harga[i].bonus);
- gotoxy(10,v+2);write('Tambah ?');readln(tambah);
- if(tambah<>'NO')then
- begin gotoxy(1,v+2);
- delline;
- end;
- v:=v+1;
- i:=i+1;
- until(tambah='NO');
- v:=15;
- Assign(var_teks,'data.txt');
- Append(var_teks);
- k:=1;
- while k< i do
- begin
- Writeln(var_teks,daftar_harga[k].kode);
- Writeln(var_teks,daftar_harga[k].nama_motor);
- Writeln(var_teks,daftar_harga[k].harga);
- Writeln(var_teks,daftar_harga[k].bonus);
- Writeln(var_teks,',');
- k:=k+1;
- end;
- Close(var_teks);
- end;
- 2:
- begin
- clrscr;
- Assign(var_teks,'data.txt');
- Reset(var_teks);
- i:=1;
- while (not eof (var_teks)) do
- Begin
- Readln (var_teks,daftar_harga[i].kode);
- Readln (var_teks,daftar_harga[i].nama_motor);
- Readln (var_teks,daftar_harga[i].harga);
- Readln (var_teks,daftar_harga[i].bonus);
- readln(var_teks,cekdata);
- if(cekdata = ',')then
- i:=i+1;
- End;
- Close(var_teks);
- gotoxy(20,5);write('==== ===== =======');
- gotoxy(20,6);write('KODE JML Bayar');
- gotoxy(20,7);write('==== ===== =======');
- j:=1; v:=8;
- repeat
- k:=1;
- ketemu := False;
- gotoxy(20,v);readln(penjualan_motor[j].kode_motor);
- gotoxy(26,v);readln(penjualan_motor[j].jumlah_motor);
- gotoxy(32,v);readln(penjualan_motor[j].status_bayar);
- while(not ketemu)do
- begin
- if(daftar_harga[k].kode= penjualan_motor[j].kode_motor) then
- ketemu := TRUE
- else
- begin
- ketemu := FALSE;
- k:=k+1;
- end;
- end;
- if(ketemu) then
- begin
- daftar_harga[k].total := daftar_harga[k].harga * penjualan_motor[j].jumlah_motor;
- daftar_harga[k].bayar := penjualan_motor[j].status_bayar;
- daftar_harga[k].jumlah := penjualan_motor[j].jumlah_motor;
- if(penjualan_motor[j].status_bayar='TUNAI')then
- begin
- daftar_harga[k].diskon:= daftar_harga[k].total*0.1;
- if(penjualan_motor[j].jumlah_motor<3)then
- daftar_harga[k].bonus:=' ';
- end
- else if(penjualan_motor[j].jumlah_motor<5) then
- daftar_harga[k].bonus:=' ';
- daftar_harga[k].total_bayar := daftar_harga[k].total - daftar_harga[k].diskon;
- end;
- write('Tambah ? ');readln(tambah);
- v:=v+1;
- j:=j+1;
- until (tambah='NO');
- gotoxy(1,v); write('================================================================
- ================');
- gotoxy(1,v+1);write('KODE NAMA HARGA JML TOTAL BAYAR DISKON BONUS T.BAYAR');
- gotoxy(1,v+2);write('==================================================
- ==============================');
- v:=v+3;
- i:=1;
- while i<=4 do
- begin
- gotoxy(1,v+1);write(daftar_harga[I].kode:2);
- gotoxy(15-length(daftar_harga[I].nama_motor),v+1);write(daftar_harga[I].nama_motor:7);
- gotoxy(17,v+1);write(daftar_harga[I].harga);
- gotoxy(26,v+1);write(daftar_harga[I].jumlah:2);
- gotoxy(30,v+1);write(daftar_harga[I].total:7);
- gotoxy(38,v+1);write(daftar_harga[I].bayar:7);
- gotoxy(46,v+1);write(daftar_harga[I].diskon:7:0);
- gotoxy(69-length(daftar_harga[I].bonus),v+1);write(daftar_harga[I].bonus);
- gotoxy(72,v+1);write(daftar_harga[I].total_bayar:7:0);
- v:=v+1;
- i:=i+1;
- end;
- end;
- 3: begin
- clrscr;
- Write('Selamat Tinggal');
- readkey;
- end;
- end;
- end.
Hasil Dari Source Code di atas
Pilihan Menu 1
Pilihan Menu 2
Hasil Project
Comments
else experiencing issues with your blog. It seems like some of the text on your posts are running off the screen.
Can somebody else please comment and let me know if this is happening to them too?
This may be a problem with my browser because I've had this happen before. Many thanks
Here is my blog; cccam tryal Serever