-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathF5.pas
More file actions
97 lines (88 loc) · 3.12 KB
/
F5.pas
File metadata and controls
97 lines (88 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Nama File: F5.pas
// Deskripsi File: Unit prosedur beli bahan untuk program utama Engi's Kitchen
// Tanggal terakhir diubah: 22/04/2018
unit F5;
interface
uses uDef,F1,sysutils,C_Maks;//untuk ngambil data
{ Deklarasi Fungsi/Prosedur }
procedure beliBahan(var a,b:Ainventori{type inv dari F1};d:Abahanmentah{untuk data bahan};var c:Asimulasi{type dari soal}; var aksi, NInvBO, NInvBM, NomorSim,NBahanM: Integer);
{Prosedur ini akan memvalidasi bahan mentah yang mau dibeli beserta jumlahnya,mengitung total harga,dan melakukan perubahan pada inventori maupun pada inventori bahan mentah}
{I.S menerima masukan berupa string dan integer yang akan di cek kevalidannya}
{F.S memasukan kedalam inventoridan mengubah data}
implementation
{ Implementasi Fungsi/Prosedur }
procedure beliBahan(var a,b:Ainventori{type inv dari F1};d:Abahanmentah{untuk data bahan};var c:Asimulasi{type dari soal}; var aksi, NInvBO, NInvBM, NomorSim,NBahanM: Integer);
{Prosedur ini akan memvalidasi bahan mentah yang mau dibeli beserta jumlahnya,mengitung total harga,dan melakukan perubahan pada inventori maupun pada inventori bahan mentah}
{I.S menerima masukan berupa string dan integer yang akan di cek kevalidannya}
{F.S memasukan kedalam inventoridan mengubah data}
{KAMUS}
var
namabahan:string;
i,j,k:longint;
ketemu:boolean;
{ALGORITMA}
begin{satu kali prosedur satu kali beli satu unit}
repeat//validasi
i:=1;
write('Nama bahan : ' );
readln(namabahan);{asumsi nama bahan terdapat dalam file}
write('Kuantitas : ');
readln(j);
ketemu:=False;
while((ketemu = False) and (i<=NBahanM)) do
begin
if (LowerCase(namabahan)=LowerCase(d[i].nama)) then
begin
ketemu:=True;
end else
begin
i:=i+1;
end;
end;
if (ketemu=False) then writeln('Nama tidak terdaftar');
until (ketemu =True);
ketemu:=False;
i:=1;
while((ketemu = False) and (i<=NBahanM)) do
begin
if ((LowerCase(namabahan)=LowerCase(d[i].nama)) and (j<=d[i].jumlah)) then
begin
ketemu:=True;
end else
begin
i:=i+1;
end;
end;
write('Total harga : ');
writeln(d[i].harga*j);
if ((cekmaksimum (c,NInvBO, NInvBM, NomorSim,j,a,b)=True)and (c[NomorSim].tEnergi>0) and (c[NomorSim].tUang >= (d[i].harga*j))) then
begin
c[NomorSim].tEnergi:=c[NomorSim].tEnergi-1;{energibaru}
c[NomorSim].tPengeluaran:=c[NomorSim].tPengeluaran+(d[i].harga*j);{total pengeluaran}
c[NomorSim].tUang:=c[NomorSim].tUang-(d[i].harga*j);{pendapatan bersih berkurang}
c[NomorSim].tBMentahDibeli := c[NomorSim].tBMentahDibeli + j ;
d[i].jumlah:=d[i].jumlah-j;
ketemu:=False;
aksi:=aksi+1;
k:=1;
while((ketemu=False)and(k<= NInvBM)) do
begin
if((LowerCase(namabahan)=LowerCase(a[k].nama)) and (c[NomorSim].tanggal= a[k].tanggal)) then
begin
a[k].jumlah :=a[k].jumlah+j;
ketemu:=True;
end;
k:=k+1;
end;
if (ketemu = false) then
begin
NInvBM:=NInvBM+1;
a[NInvBM].nama:=namabahan;
a[NInvBM].tanggal:=c[NomorSim].tanggal;
a[NInvBM].jumlah:=j;
end;
writeln('Berhasil dibeli');
end else
writeln('Gagal dibeli');
end;
end.