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
1
Dibawah ini adalah Input Record Penjualan yang tercatat saat ini,
1
Rincian Lengkapnya adalah sebagai berikut:
1
Ada beberapa ketentuan yang berlaku di Toko ini, jika anda ingin mendapatkan Diskon dan Bonus
  1. Apabila membeli secara Tunai akan mendapat Diskon sebesar 10% dan juga akan mendapat bonus bila pembelian lebih atau sama dengan 3 buah
  2. 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
1
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 :
  1. uses crt; 
  2. type harga_motor = record 
  3.      kode : string; 
  4.      nama_motor : string; 
  5.      harga : integer ; 
  6.      bonus : string; 
  7.      jumlah: integer; 
  8.      total : longint; 
  9.      bayar : string; 
  10.      diskon:real; 
  11.      total_bayar:real; 
  12.      end; 
  13.  
  14.      penjualan = record 
  15.      kode_motor : string; 
  16.      jumlah_motor : integer; 
  17.      status_bayar : string; 
  18.      end; 
  19. var 
  20. penjualan_motor : array[1..100] of penjualan; 
  21. daftar_harga : array[1..100] of harga_motor; 
  22. tambah :string; 
  23. ketemu : boolean; 
  24. k,j,v,i:integer; 
  25.  
  26. begin 
  27. daftar_harga[1].kode:= 'HT'; daftar_harga[1].nama_motor:= 'Honda Tiger'; daftar_harga[1].harga:= 13000000; daftar_harga[1].bonus:= 'Velg Recing'; 
  28. daftar_harga[2].kode:= 'HS'; daftar_harga[2].nama_motor:= 'Honda Supra'; daftar_harga[2].harga:= 12000000; daftar_harga[2].bonus:= 'Jaket'; 
  29. daftar_harga[3].kode:= 'YM'; daftar_harga[3].nama_motor:= 'Yamaha Mio'; daftar_harga[3].harga:= 11000000; daftar_harga[3].bonus:= 'Helm'; 
  30. daftar_harga[4].kode:= 'YV'; daftar_harga[4].nama_motor:= 'Yamaha Vega'; daftar_harga[4].harga:= 10000000; daftar_harga[4].bonus:= 'Kenalpot Racing'; 
  31.  
  32.  
  33. gotoxy(20,5);write('==== ===== ======='); 
  34. gotoxy(20,6);write('KODE  JML   Bayar'); 
  35. gotoxy(20,7);write('==== ===== ======='); 
  36.  
  37. j:=1; v:=8; 
  38. repeat 
  39. k:=1; 
  40. ketemu := False; 
  41. gotoxy(20,v);readln(penjualan_motor[j].kode_motor); 
  42. gotoxy(26,v);readln(penjualan_motor[j].jumlah_motor); 
  43. gotoxy(32,v);readln(penjualan_motor[j].status_bayar); 
  44. while(not ketemu)do 
  45. begin 
  46.      if(daftar_harga[k].kode= penjualan_motor[j].kode_motor) then 
  47.           ketemu := TRUE 
  48.      else 
  49.      begin 
  50.          ketemu := FALSE; 
  51.      k:=k+1; 
  52.      end; 
  53.  
  54. end; 
  55. if(ketemu) then 
  56. begin 
  57.      daftar_harga[k].total := daftar_harga[k].harga * penjualan_motor[j].jumlah_motor; 
  58.      daftar_harga[k].bayar := penjualan_motor[j].status_bayar; 
  59.      daftar_harga[k].jumlah := penjualan_motor[j].jumlah_motor; 
  60.      if(penjualan_motor[j].status_bayar='TUNAI')then 
  61.      begin 
  62.           daftar_harga[k].diskon:= daftar_harga[k].total*0.1; 
  63.           if(penjualan_motor[j].jumlah_motor<3)then 
  64.           daftar_harga[k].bonus:=' '; 
  65.      end 
  66.      else if(penjualan_motor[j].jumlah_motor<5) then 
  67.            daftar_harga[k].bonus:=' '; 
  68.     daftar_harga[k].total_bayar := daftar_harga[k].total - daftar_harga[k].diskon; 
  69.  
  70. end; 
  71. write('Tambah ? ');readln(tambah); 
  72. tambah := upcase(tambah); 
  73. v:=v+1; 
  74. j:=j+1; 
  75. writeln;writeln; 
  76. until (tambah='NO'); 
  77. gotoxy(1,v);  write('================================================================ 
  78. ================'); 
  79. gotoxy(1,v+1);write('KODE       NAMA    HARGA JML  TOTAL    BAYAR  DISKON          BONUS    T.BAYAR'); 
  80. gotoxy(1,v+2);write('================================================== 
  81. =============================='); 
  82.  
  83. v:=v+3; 
  84. i:=1; 
  85.  
  86. while i<=4 do 
  87. begin 
  88.  
  89.      gotoxy(1,v+1);write(daftar_harga[I].kode:2); 
  90.      gotoxy(15-length(daftar_harga[I].nama_motor),v+1);write(daftar_harga[I].nama_motor:7); 
  91.      gotoxy(17,v+1);write(daftar_harga[I].harga); 
  92.      gotoxy(26,v+1);write(daftar_harga[I].jumlah:2); 
  93.      gotoxy(30,v+1);write(daftar_harga[I].total:7); 
  94.      gotoxy(38,v+1);write(daftar_harga[I].bayar:7); 
  95.      gotoxy(46,v+1);write(daftar_harga[I].diskon:7:0); 
  96.      gotoxy(69-length(daftar_harga[I].bonus),v+1);write(daftar_harga[I].bonus); 
  97.      gotoxy(72,v+1);write(daftar_harga[I].total_bayar:7:0); 
  98.      v:=v+1; 
  99.      i:=i+1; 
  100. end; 
  101.  
  102.  
  103.  
  104.  
  105. readkey; 
  106. end. 
Hasil dari Source Code tersebut akan menampilkan program seperti berikut ini :
1

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. :
  1. uses crt; 
  2. type harga_motor = record 
  3.      kode : string; 
  4.      nama_motor : string; 
  5.      harga : longint ; 
  6.      bonus : string; 
  7.      jumlah: integer; 
  8.      total : longint; 
  9.      bayar : string; 
  10.      diskon:real; 
  11.      total_bayar:real; 
  12.      end; 
  13.  
  14.      penjualan = record 
  15.      kode_motor : string; 
  16.      jumlah_motor : integer; 
  17.      status_bayar : string; 
  18.      end; 
  19. var 
  20. penjualan_motor : array[1..10] of penjualan; 
  21. daftar_harga : array[1..10] of harga_motor; 
  22. tambah,cekdata :string; 
  23. ketemu : boolean; 
  24. k,j,v,i,pilih:integer; 
  25. var_teks:TEXT; 
  26.  
  27.  
  28. begin 
  29. clrscr; 
  30. repeat 
  31. gotoxy(20,4);write('/======================================\'); 
  32. gotoxy(20,5);write('|             PT. ABC MOTOR            |'); 
  33. gotoxy(20,6);write('\======================================/'); 
  34. gotoxy(20,7); write('/======================================\'); 
  35. gotoxy(20,8); write('|        1. Tambah Data                |'); 
  36. gotoxy(20,9); write('|        2. Masukkan Penjualan         |'); 
  37. gotoxy(20,10);write('|        3. Keluar                     |'); 
  38. gotoxy(20,11);write('\======================================/'); 
  39. gotoxy(20,12);write('/======================================\'); 
  40. gotoxy(20,13);write('|          Pilih Menu[1..3] ?          |'); 
  41. gotoxy(20,14);write('\======================================/'); 
  42. gotoxy(50,13);readln(pilih); 
  43. until(pilih>=1) and(pilih<=4); 
  44. v:=6; i:=1; 
  45. case pilih of 
  46. 1: begin 
  47.    clrscr; 
  48.    gotoxy(10,3);write('==================================================='); 
  49.    gotoxy(10,4);write('KODE   NAMA            HARGA        BONUS          '); 
  50.    gotoxy(10,5);write('==================================================='); 
  51.    repeat 
  52.    gotoxy(10,v);readln(daftar_harga[i].kode); 
  53.    gotoxy(17,v);readln(daftar_harga[i].nama_motor); 
  54.    gotoxy(33,v);readln(daftar_harga[i].harga); 
  55.    gotoxy(46,v);readln(daftar_harga[i].bonus); 
  56.    gotoxy(10,v+2);write('Tambah ?');readln(tambah); 
  57.    if(tambah<>'NO')then 
  58.    begin gotoxy(1,v+2); 
  59.          delline; 
  60.    end; 
  61.    v:=v+1; 
  62.    i:=i+1; 
  63.    until(tambah='NO'); 
  64.  
  65.  
  66.  
  67.    v:=15; 
  68.    Assign(var_teks,'data.txt'); 
  69.          Append(var_teks); 
  70.    k:=1; 
  71.    while k< i do 
  72.    begin 
  73.          Writeln(var_teks,daftar_harga[k].kode); 
  74.          Writeln(var_teks,daftar_harga[k].nama_motor); 
  75.          Writeln(var_teks,daftar_harga[k].harga); 
  76.          Writeln(var_teks,daftar_harga[k].bonus); 
  77.          Writeln(var_teks,','); 
  78.          k:=k+1; 
  79.    end; 
  80.     Close(var_teks); 
  81.    end; 
  82.  
  83. 2: 
  84. begin 
  85. clrscr; 
  86. Assign(var_teks,'data.txt'); 
  87. Reset(var_teks); 
  88. i:=1; 
  89. while (not eof (var_teks))  do 
  90. Begin 
  91. Readln (var_teks,daftar_harga[i].kode); 
  92. Readln (var_teks,daftar_harga[i].nama_motor); 
  93. Readln (var_teks,daftar_harga[i].harga); 
  94. Readln (var_teks,daftar_harga[i].bonus); 
  95. readln(var_teks,cekdata); 
  96. if(cekdata = ',')then 
  97. i:=i+1; 
  98. End; 
  99. Close(var_teks); 
  100.  
  101. gotoxy(20,5);write('==== ===== ======='); 
  102. gotoxy(20,6);write('KODE  JML   Bayar'); 
  103. gotoxy(20,7);write('==== ===== ======='); 
  104.  
  105. j:=1; v:=8; 
  106. repeat 
  107. k:=1; 
  108. ketemu := False; 
  109. gotoxy(20,v);readln(penjualan_motor[j].kode_motor); 
  110. gotoxy(26,v);readln(penjualan_motor[j].jumlah_motor); 
  111. gotoxy(32,v);readln(penjualan_motor[j].status_bayar); 
  112. while(not ketemu)do 
  113. begin 
  114.      if(daftar_harga[k].kode= penjualan_motor[j].kode_motor) then 
  115.           ketemu := TRUE 
  116.      else 
  117.      begin 
  118.          ketemu := FALSE; 
  119.      k:=k+1; 
  120.      end; 
  121.  
  122. end; 
  123. if(ketemu) then 
  124. begin 
  125.      daftar_harga[k].total := daftar_harga[k].harga * penjualan_motor[j].jumlah_motor; 
  126.      daftar_harga[k].bayar := penjualan_motor[j].status_bayar; 
  127.      daftar_harga[k].jumlah := penjualan_motor[j].jumlah_motor; 
  128.      if(penjualan_motor[j].status_bayar='TUNAI')then 
  129.      begin 
  130.           daftar_harga[k].diskon:= daftar_harga[k].total*0.1; 
  131.           if(penjualan_motor[j].jumlah_motor<3)then 
  132.           daftar_harga[k].bonus:=' '; 
  133.      end 
  134.      else if(penjualan_motor[j].jumlah_motor<5) then 
  135.            daftar_harga[k].bonus:=' '; 
  136.     daftar_harga[k].total_bayar := daftar_harga[k].total - daftar_harga[k].diskon; 
  137.  
  138. end; 
  139. write('Tambah ? ');readln(tambah); 
  140. v:=v+1; 
  141. j:=j+1; 
  142.  
  143. until (tambah='NO'); 
  144.  
  145. gotoxy(1,v);  write('================================================================ 
  146. ================'); 
  147. gotoxy(1,v+1);write('KODE       NAMA    HARGA JML  TOTAL    BAYAR  DISKON          BONUS    T.BAYAR'); 
  148. gotoxy(1,v+2);write('================================================== 
  149. =============================='); 
  150.  
  151. v:=v+3; 
  152. i:=1; 
  153.  
  154. while i<=4 do 
  155. begin 
  156.  
  157.      gotoxy(1,v+1);write(daftar_harga[I].kode:2); 
  158.      gotoxy(15-length(daftar_harga[I].nama_motor),v+1);write(daftar_harga[I].nama_motor:7); 
  159.      gotoxy(17,v+1);write(daftar_harga[I].harga); 
  160.      gotoxy(26,v+1);write(daftar_harga[I].jumlah:2); 
  161.      gotoxy(30,v+1);write(daftar_harga[I].total:7); 
  162.      gotoxy(38,v+1);write(daftar_harga[I].bayar:7); 
  163.      gotoxy(46,v+1);write(daftar_harga[I].diskon:7:0); 
  164.      gotoxy(69-length(daftar_harga[I].bonus),v+1);write(daftar_harga[I].bonus); 
  165.      gotoxy(72,v+1);write(daftar_harga[I].total_bayar:7:0); 
  166.      v:=v+1; 
  167.      i:=i+1; 
  168. end; 
  169. end; 
  170. 3: begin 
  171.         clrscr; 
  172.         Write('Selamat Tinggal'); 
  173.         readkey; 
  174.    end; 
  175. end; 
  176. end. 
Hasil Dari Source Code di atas

1

Pilihan Menu 1
1
Pilihan Menu 2
1
Hasil Project
1
DOWNLOADAttachment
harga-motor-abc.rar

Ukuran: 1.36 KB

Comments

Anonymous said…
I don't know whether it's just me or if everybody
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