Pada tugas ini diminta membuat program untuk mencari spidol terpendek dari sejumlah spidol yang
ada. Algoritma dari program ini adalah sebagai berikut.
START
IDENTIFIKASI VARIABEL
N, i, a,
spidolpendek, panjangspidol
INPUT
N dan i
panjangspidol(i)
INISIASI AWAL
a=0 ;
spidolpendek=panjangspidol(0) ;
i=0
TIDAK YA
spidolpendek = panjangspidol(i+1) ;
a=(i+1)
i=(i+1)
IF CONDITIONAL
i=N
YA
END
Algoritma di atas dapat dijelaskan sebagai berikut :
Selanjutnya, algoritma yang telah dijelaskan di atas akan dibentuk ke dalam 3 bahasa program yang
berbeda yaitu C, Fortran, dan Pascal.
1. Bahasa C
#include <stdio.h>
#include <stdlib.h>
int main()
/*Identifikasi Variabel*/
int N,i,a;
float spidolpendek;
scanf("%d",&N);
printf("\n");
/*Identifikasi Array*/
float panjangspidol[N];
for(i=0;i<N;i++)
scanf("%f",&panjangspidol[i]);
printf("\n");
for(i=0;i<N;i++)
/*Inisiasi Awal*/
a=0;
spidolpendek=panjangspidol[0];
/*Algoritma Utama*/
for (i=0;i<N;i++)
if(spidolpendek>panjangspidol[i])
spidolpendek=panjangspidol[i];
a=i;
/*Output Algoritma*/
return 0;
program main
implicit none
! Identifikasi Variabel
integer :: N
integer :: i
real :: spidolpendek
integer :: a
real,dimension(:),allocatable::panjangspidol
read(*,*)N
! Identifikasi Array
allocate(panjangspidol(N))
do i=1,N
read(*,*)panjangspidol(i)
end do
do i=1,N
write(*,*)"Panjang spidol",i,"adalah",panjangspidol(i),"cm"
end do
! Inisiasi Awal
a=1
spidolpendek=panjangspidol(1)
! Algoritma Utama
do i=1,N
if(spidolpendek>panjangspidol(i)) then
spidolpendek=panjangspidol(i)
a=i
end if
end do
! Output Algoritma
end
program tugas1;
var
N : integer;
spidolpendek : real;
i : integer;
a : integer;
begin
readln(N);
writeln;
for i :=1 to N do
begin
readln(panjangspidol[i]);
end;
writeln;
for i :=1 to N do
begin
end;
{Inisiasi Awal}
spidolpendek:=panjangspidol[i];
a:=1;
{Algoritma Utama}
for i:= 1 to N do
begin
if(spidolpendek>panjangspidol[i]) then
begin
spidolpendek:=panjangspidol[i];
a:=i;
end;
end;
{Output Algoritma}
writeln;
readln;
end.
Pada tugas ini diminta membuat program untuk mencari total delay yang melintasi suatu ruas jalan
apabila diterapkan kebijakan dilarang mendahului pada ruas jalan tersebut. Delay yang dimaksud
adalah perbedaan waktu tiba dari suatu kendaraan saat kebijakan tersebut tidak ada dan saat
kebijakan diterapkan. Algoritma dari program ini adalah sebagai berikut.
START A
IDENTIFIKASI VARIABLE
L, i, j, k, l, m, Nheadway, hmin, hmax, fh,
pk, vmin, vmax, mt, sum, stop, T, t, Ts, r1, ALGORITMA A
r2, r3, r4, h, d0, v, totaldelay, TA, Tbo,
TBx
ALGORITMA B
INPUT
L, Nheadway, hmin, hmax, fh, pk,
vmin, vmax, t LOOPING
ALGORITMA C
i = i +1
INISIASI AWAL
ALGORITMA D
mt[0] = 0 ; T = 0 ; d0[0] = 0 ;
r1[0] =0 ; r2[0] =0;
r3[0] =0 ; r4[0] =0;
h[0]=0 ; v[0]=0;
TA[0] =0 ; TBo[0] =0; T=TA[i]
TBx[0] =0; D[0]=0;
i = 1;
A
IF CONDITIONAL
YA
T < Ts
TIDAK
END
INISIASI AWAL
generate r1, r2
stop = 0
k=0
IF CONDITIONAL
TIDAK k = k+1
r1[i] < fhcumx[k]
TIDAK
YA
IF CONDITIONAL
stop = 1
END
Gambar 5 Algoritma A
START
INISIASI AWAL
generate r3
j=0;
IF CONDITIONAL
TIDAK j = j+1
r3[i] < pkcumx[j]
YA
m = j;
mt [i] = j;
END
Gambar 6 Algoritma B
START
INISIASI AWAL
generate r4
END
Gambar 7 Algoritma C
START
INISIASI AWAL
TBo[i] = (TA[i] + (L/v[i]))
IF CONDITIONAL
((v[i-1]<v[i])
dan
TIDAK TBx[i] = TBo[i]
(TBo[i]<TBo[i-1]))
YA
d0[i] = ((h[i])/((v[i]-v[i-1])/(v[i]*v[i-1])));
TBx[i] = (TA[i] + (d0[i]/v[i]) + ((L-d0[i])/v[i-1]));
END
Gambar 8 Algoritma D
writeln; mt[1] := 0;
writeln('Lama waktu tinjauan (dalam jam):'); T0 := 0;
readln(t); d0[1] := 0;
r1[1] := 0;
Ts := t*3600; r2[1] := 0;
r3[1] := 0;
{inisiasi} r4[1] := 0;
h[1] := 0; mt[i] := 1;
v[1] := 0; end else if (r3[i]<pkcumx[2]) then begin
TA[1] := 0; m := 2;
TBo[1] := 0; mt[i] := 2;
TBx[1] := 0; end else begin
D[1] := 0; m := 3;
i := 2; mt[i] := 3;
totaldelay := 0; end;
{algoritma b} {output}
r3[i] := (random(1000)/1000); writeln('Total delay dari kasus ini adalah
if (r3[i]<pkcumx[1]) then begin ',totaldelay,' detik');
m := 1; readln;
end.
Bahasa Fortran
integer :: Lr,i,j,k,l,m,Nheadway,state
real :: T0,t,Ts,totaldelay,pktot,total
real,dimension(:),allocatable::pk,vmin,vmax,r1,r2,r3,r4,h,d0,v,TA,TBo,TBx,D,fhcum,fhcumx,pkcum,pk
cumx,hmin,hmax,fh
integer,dimension(:),allocatable::mt
! Input Data
! Panjang Ruas
write(*,*)"Masukkan panjang ruas studi (dalam meter) :"; read(*,*)Lr
! Data Headway
write(*,*)"Data Headway"
write(*,*)"Jumlah kelas data headway :" ; read(*,*)Nheadway
allocate(hmin(Nheadway))
allocate(hmax(Nheadway))
allocate(fh(Nheadway))
do i=1,Nheadway
write(*,*)"Masukkan batas bawah headway kelas ke-",i," (dalam detik) :"; read(*,*)hmin(i)
write(*,*)"Masukkan batas atas headway kelas ke-",i," (dalam detik) :"; read(*,*)hmax(i)
write(*,*)"Masukkan jumlah kejadian :"; read(*,*)fh(i)
end do
! Data Kendaraan
allocate(pk(3))
allocate(vmin(3))
allocate(vmax(3))
write(*,*)"Data Kendaraan"
write(*,*)"Masukkan proporsi mobil penumpang :"; read(*,*)pk(1)
write(*,*)"Masukkan kecepatan minimum mobil penumpang (dalam meter/detik) :";
read(*,*)vmin(1)
write(*,*)"Masukkan kecepatan maksimum mobil penumpang (dalam meter/detik) :";
read(*,*)vmax(1)
write(*,*)"Masukkan proporsi bus :"; read(*,*)pk(2)
write(*,*)"Masukkan kecepatan minimum bus (dalam meter/detik) :"; read(*,*)vmin(2)
write(*,*)"Masukkan kecepatan maksimum bus (dalam meter/detik) :"; read(*,*)vmax(2)
write(*,*)"Masukkan proporsi truk :"; read(*,*)pk(i)
write(*,*)"Masukkan kecepatan minimum truk (dalam meter/detik) :"; read(*,*)vmin(3)
write(*,*)"Masukkan kecepatan maksimum truk (dalam meter/detik) :"; read(*,*)vmax(3)
! Output
totaldelay = 0
do l=0,i
totaldelay=totaldelay+D(l)
end do
write(*,*)"Total delay dari kasus ini
adalah",totaldelay," detik"
end
Bahasa C
do /*ALGORITMA C*/
{ r4[i] = (float) rand()/RAND_MAX;
if (r1[i]<fhcumx[k]) v[i] = (float) vmin[m] + (r4[i]*(vmax[m]-
{ vmin[m]));
h[i] = (float) (hmin[k] + (r2[i]*(hmax[k]-
hmin[k]))); /*ALGORITMA D*/
TBo[i] = (float) (TA[i] + (L/v[i])); i = i + 1;
if ((v[i-1]<v[i]) && (TBo[i]<TBo[i-1])) }
{
d0[i] = (float) ((h[i])/((v[i]-v[i-1])/(v[i]*v[i- /*OUTPUT*/
1]))); totaldelay = 0;
TBx[i] = (float) (TA[i] + (d0[i]/v[i]) + ((L- for(l=0;l<i;l++)
d0[i])/v[i-1])); {
} totaldelay=totaldelay+D[l];
else }
{ printf("Total delay dari kasus ini adalah %f
TBx[i] = (float) TBo[i]; detik", totaldelay);
} return 0;
D[i] = (float) TBx[i] - TBo[i]; }
T = (float) TA[i];
Tugas 3
Pada tugas ini diminta membuat program untuk mencari keuntungan per hari dari penjualan durian.
Keuntungan didapatkan dari pendapatan perhari hasil penjualan durian dikurangi dengan
pengeluaran. Algoritma dari program ini adalah sebagai berikut.
START A
k=4
IDENTIFIKASI VARIABLE
i,j,k,l,T,hargabeli,hargajual,state,xcum,
ycum,modal,biayatransport, biayasimpan,
oppcost,profit,fx,xmin,xmax,fxcum,fxcumx,
fy,ymin,ymax,fycum,fycumx,r1,r2,r3,r4,
stoko,stokx,totalpenjualan,kasB,kasC,order,
ALGORITMA A
intangibles,x,y,m,p
LOOPING ALGORITMA B
k = k +1
INPUT
T, fx, xmin, xmax, fy, ymin,
ymax, m, p
ALGORITMA C
INISIASI AWAL
hargajual = 65000;
hargabeli = 35000; IF CONDITIONAL
TIDAK
biayatransport = 200000; k=T
biayasimpan = 2500;
oppcost = 4000;
modal = 4500000; YA
stokx[3] = 100;
totalpenjualan[3] = 0;
profit = (kasC[l]-modal)/T)
order[1] = 100; order[2] = 50;
order[3] = 50;
A END
INISIASI AWAL
generate r1,r2,r3,r4
l=k
END
Gambar 10 Algoritma A
START
INISIASI AWAL
state = 0
j=1
IF CONDITIONAL
TIDAK j = j+1
r1[k]<fxcumx[j]
TIDAK
YA
IF CONDITIONAL
stop = 1
END
Gambar 11 Algoritma B1
START
INISIASI AWAL
state = 0
j=1
IF CONDITIONAL
TIDAK j = j+1
r3[k]<fycumx[j]
TIDAK
YA
IF CONDITIONAL
stop = 1
END
Gambar 12 Algoritma B2
START
IF CONDITIONAL
TIDAK
(x[k]*y[k]) < stoko[k]
YA
totalpenjualan[k] = stoko[k];
totalpenjualan[k] = x[k]*y[k];
intangibles[k] = ((x[k]*y[k]) - stoko[k])*oppcost;
stokx[k] = stoko[k] - (x[k]*y[k]);
stokx[k] = 0;
END
Gambar 13 Algoritma B3
START
IF CONDITIONAL
stokx[k] < m[1]
YA
TIDAK
IF CONDITIONAL
YA
stokx[k ]> m[2]
TIDAK
END
Gambar 14 Algortima C
{Update stok}
stokx[3] := 100; stoko[k] := stokx[k-1]+order[k-3];
totalpenjualan[3] := 0;
{Transaksi}
for i:= 1 to 3 do state := 0;
begin j := 1;
x[i] := 0; while state = 0 do
y[i] := 0; begin
end; if (r1[k]<fxcumx[j]) then begin
x[k] := xmin[j]+(r2[k]*(xmax[j]-xmin[j]));
for i:= 1 to 3 do state := 1;
begin end else begin
kasB[i] := modal; j := j+1;
kasC[i] := modal; end;
end; end;
state := 0; kasC[k] := kasB[k]-(order[k]*hargabeli)-
j := 1; biayatransport-(stokx[k]*biayasimpan-
while state = 0 do intangibles[k]);
begin
if (r3[k]<fycumx[j]) then begin end;
y[k] := ymin[j]+(r4[k]*(ymax[j]-ymin[j]));
state := 1; profit:= round((kasC[l]-modal)/T);
end else begin
j := j+1;
end; {Output}
end; writeln('R1:');
writeln;
if ((x[k]*y[k])<stoko[k]) then begin for i:= 1 to l do
totalpenjualan[k] := x[k]*y[k]; begin
stokx[k] := stoko[k]-(x[k]*y[k]); writeln(r1[i]);
end else begin end;
totalpenjualan[k] := stoko[k]; writeln;
intangibles[k]:=((x[k]*y[k])- writeln('R2:');
stoko[k])*oppcost; for i:= 1 to l do
stokx[k] := 0; begin
end; writeln(r2[i]);
end;
kasB[k] := kasC[k- writeln;
1]+(totalpenjualan[k]*hargajual); writeln('R3:');
for i:= 1 to l do
{Tutup Toko} begin
if(stokx[k]<m[1]) then begin writeln(r3[i]);
order[k]:= p[1]; end;
end else if (stokx[k]>m[2]) then begin writeln;
order[k]:= p[3]; writeln('R4:');
end else begin for i:= 1 to l do
order[k]:=p[2]; begin
end; writeln(r4[i]);
end; begin
writeln; writeln(round(y[i]));
writeln('stok buka toko:'); end;
for i:= 1 to l do writeln;
begin writeln('Kas B:');
writeln(round(stoko[i])); for i:= 1 to l do
end; begin
writeln; writeln(round(kasB[i]));
writeln('stok tutup toko:'); end;
for i:= 1 to l do writeln;
begin writeln('Kas C:');
writeln(round(stokx[i])); for i:= 1 to l do
end; begin
writeln; writeln(round(kasC[i]));
writeln('Total Penjualan:'); end;
for i:= 1 to l do writeln;
begin writeln('order stok:');
writeln(round(totalpenjualan[i])); for i:= 1 to l do
end; begin
writeln; writeln(round(order[i]));
writeln('Total Order:'); end;
for i:= 1 to l do writeln;
begin writeln('Intangibles:');
writeln(round(order[i])); for i:= 1 to l do
end; begin
writeln; writeln(round(intangibles[i]));
writeln('x:'); end;
for i:= 1 to l do
begin writeln;
writeln(round(x[i])); writeln;
end; writeln('Profit:');
writeln; writeln(trunc(profit));
writeln('y:');
for i:= 1 to l do readln;
end.
Bahasa Fortran
! Inisiasi end do
xcum = 0
do i=1,6 ycum = 0
xcum = xcum + fx(i) do i=1,6
end do ycum = ycum + fy(i)
end do
fxcum(1) = fx(1)
fxcumx(1) = fxcum(1)/xcum fycum(1) = fy(1)
do i=2,6 fycumx(1) = fycum(1)/ycum
fxcum(i) = fxcum(i-1)+fx(i) do i=2,6
fxcumx(i) = fxcum(i)/xcum fycum(i) = fycum(i-1)+fy(i)
fycumx(i) = fycum(i)/ycum
end do do k=4,(T+3)
l=k
! Initial Condition r1(k) = rand()
hargajual = 65000 r2(k) = rand()
hargabeli = 35000 r3(k) = rand()
biayatransport = 200000 r4(k) = rand()
biayasimpan = 2500 state = 0
oppcost = 4000
modal = 4500000 ! Update Stok
stoko(k) = stokx(k-1) + order(k-3)
do i=1,3
r1[i]= 0 ! Transaksi
r2[i]= 0 do j=1,6
r3[i]= 0 if (r1(k)<fxcumx(j)) then
r4[i]= 0 x(k) = xmin(j) + (r2(k)*(xmax(j)-xmin(j)))
end do state = 1
end if
do i=1,3
stokx[i]= 100 if (state==1) then
totalpenjualan[i]= 0 stop
end do end if
end do
do i=1,3
x[i]= 0 do j=1,6
y[i]= 0 if (r3(k)<fycumx(j)) then
kasB[i]= modal y(k) = ymin(j) + (r4(k)*(ymax(j)-ymin(j)))
kasC[i]= modal state = 1
intangibles[i]= 0 end if
end do
if (state==1) then
order[0]= 100 stop
order[1]= 50 end if
order[2]= 50 end do
write(*,*) r1(i)
if ((x(k)*y(k)) < stoko(k)) then end do
totalpenjualan(k) = x(k) * y(k) print '(/"")'
stokx(k) = stoko(k) - (x(k)*y(k))
else write(*,*) "/R2:"
totalpenjualan(k) = stoko(k) do i=1,l
intangibles(k) = ((x(k)*y(k)) - stoko(k)) * write(*,*) r2(i)
oppcost end do
stokx(i) = 0 print '(/"")'
end if
write(*,*) "/R3:"
kasB(k) = kasC(k-1) + do i=1,l
(totalpenjualan(k)*hargajual) write(*,*) r3(i)
end do
! Tutup Toko print '(/"")'
if (stokx(k) < m(1)) then
order(k) = p(1) write(*,*) "/R4:"
else if (stokx(k) > m(2)) then do i=1,l
order(k) = p(3) write(*,*) r4(i)
else end do
order(k) = p(2) print '(/"")'
end if
write(*,*) "/Stok Buka Toko:"
kasC(k) = kasB(k) - (order(k)*hargabeli) - do i=1,l
biayatransport - (stokx(k)*biayasimpan) - write(*,*) stoko(i)
intangibles(k) end do
print '(/"")'
end do
write(*,*) "/Stok Tutup Toko:"
profit = (kasC(l) - modal)/T do i=1,l
write(*,*) stokx(i)
! OUTPUT end do
write(*,*) "/R1:" print '(/"")'
do i=1,l
write(*,*) "/Total Penjualan:"
do i=1,l write(*,*) "/Kas C:"
write(*,*) totalpenjualan(i) do i=1,l
end do write(*,*) kasC(i)
print '(/"")' end do
print '(/"")'
write(*,*) "/x:"
do i=1,l write(*,*) "/Order:"
write(*,*) x(i) do i=1,l
end do write(*,*) order(i)
print '(/"")' end do
print '(/"")'
write(*,*) "/y:"
do i=1,l write(*,*) "/Intangibles:"
write(*,*) y(i) do i=1,l
end do write(*,*) intangibles(i)
print '(/"")' end do
print '(/"")'
write(*,*) "/Kas B:"
do i=1,l write(*,*) "/Profit:"
write(*,*) kasB(i) write(*,*) profit
end do
print '(/"")' end
Bahasa C
printf("\n\nIntangibles:");
for (i=0;i<(l+1);i++) return 0;
{ }
printf("\n%d",intangibles[i]);
Tugas 4
Pada tugas ini diminta membuat program untuk mencari delay rata-rata yang dialami kapal saat akan
melakukan bongkat muat di sebuah dermaga. Delay yang dihitung merupakan perbedaan waktu
antara kondisi dermaga kosong dan terisi saat kapal bersangkutan datang. Algoritma dari program ini
adalah sebagai berikut.
START A
ALGORITMA A
IDENTIFIKASI VARIABLE
i, j, k, l, htotal, fh, hmin, hmax, fhcum, fhcumx,
h, tbmtotal, ftbm, tbmmin, tbmmax, ftbmcum, ALGORITMA B
ftbmcumx, tbm, state, Ts, T, DR, r1, r2, r3, r4,
TA, tAB, TB, Tout, D, TD LOOPING
ALGORITMA C
i = i +1
ALGORITMA D
INPUT T = TA[i]
fh, hmin, hmax, ftbm, tbmmin,
tbmmax, Ts
IF CONDITIONAL
YA
T < Ts
INISIASI AWAL
T[0] = 0; DR[0] = 0; r1[0] = 0; r2[0] = 0; TIDAK
r3[0] = 0; r4[0] = 0; h[0] = 0; tbm[0] = 0;
TA[0] = 0; tAB[0] = 0; TB[0] = 0; Tout[0] =
0; D[0] = 0; TD[0] = 0; I = 1;
DR = TD[j]/j
A END
INISIASI AWAL
Generate r1, r2
state = 0 ; k = 0
IF CONDITIONAL
TIDAK k = k+1
r1[i]<fhcumx[k]
TIDAK
YA
IF CONDITIONAL
state = 1
YA
END
Gambar 16 Algoritma A
START
IF CONDITIONAL
TIDAK
TA[i] > Tout[i-1]
YA
END
Gambar 17 Algoritma B
START
INISIASI AWAL
Generate r3, r4
state = 0 ; k = 0
IF CONDITIONAL
TIDAK k = k+1
r3[i]<ftbmcumx[k]
TIDAK
YA
IF CONDITIONAL
state = 1
YA
END
Gambar 18 Algoritma C
START
END
Gambar 19 Algortima D
8. Input data yang diperlukan seperti lama waktu studi, frekuensi di masing-masing kelas
headway, kelas durasi bongkar muat kapal, headway minimum dan maksimum di setiap kelas,
dan durasi bongkar muat kapal minimum dan maksimum di setiap kelas.
9. Tetapkan kondisi awal, T[0] = 0; DR[0] = 0; r1[0] = 0; r2[0] = 0; r3[0] = 0; r4[0] = 0; h[0] = 0;
tbm[0] = 0; TA[0] = 0; tAB[0] = 0; TB[0] = 0; Tout[0] = 0; D[0] = 0; TD[0] = 0; i = 1.
10. Tentukan nilai i = 1 sebagai inisiasi untuk melakukan iterasi. Proses dilanjutkan secara looping
dengan batas kondisi hingga Ts.
11. Selanjutnya dilanjutkan ke algoritma A. Diawali dengan membangkitkan bilangan acak r1, r2,
serta menetapkan state = 0 dan k = 0.
12. Selanjutnya dilakukan pengondisian dengan syarat r1[i] < fhcumx[k]. Jika :
a. Ya, maka hitung headway dengan rumus h[i] = hmin[k] + (r2[i]*(hmax[k]-hmin[k])),
dan tetapkan state = 1.
b. Tidak, maka nilai k menjadi k+1.
Apabila nilai state masih 0 maka ulangi proses 6. Apabila nilai state = 1, maka hitung nilai TA
dengan rumus TA[i] = TA[i-1] + h[i] dan juga menetapkan tAB[i] = 0.05.
13. Selanjutnya dilanjutkan ke algoritma B. Dilakuka pengondisian dengan syarat TA[i] > Tout[i-1].
Jika :
a. Ya, maka hitung TB[i] = TA[i] + tAB[i].
b. Tidak, maka TB[i] = Tout[i-1] + tAB[i].
14. Kemudian dilanjutkan ke algoritma C diawali dengan membangkitkan nilai acak r3 dan r4,
serta menetapkan state = 0 dan k = 0. Dilakukan pengondisian dengan syarat r3[i] <
ftbmcumx[k]. Jika :
a. Ya, maka hitung headway dengan rumus tbm[i] = tbmmin[k] + (r4[i]*(tbmmax[k]-
tbmmin[k])), dan tetapkan state = 1.
b. Tidak, maka k = k + 1.
Apabila nilai state masih 0 maka ulangi proses 8. Apabila nilai state = 1, maka hitung nilai Tout
dengan rumus Tout[i] = TB[i] + tbm[i].
15. Selanjutnya, lakukan proses algoritma D. Dilakukan perhitungan waktu delay dengan rumus
D[i] = TB[i] - TA[i] - tAB[i] dan juga menghitung total waktu tundaan (total delay) dengan rumus
TD[i] = TD[i-1] + D[i].
16. Proses iterasi diakhiri dengan menghitung T = TA[i].
17. Selanjutnya yaitu pengecekan nilai T. Jika nilai T masih lebih kecil dari 200, maka iterasi
dilakukan kembali dengan menentukan i = i + 1. Namun apabila nilai T sudah tidak sesuai
dengan kondisi tersebut, maka dilanjutkan menghitung delay rata-rata dengan rumus DR =
TD[j] / j. Perhitungan ini sekaligus menandakan bahwa iterasi simulasi selesai.
Bahasa Pascal
writeln('Tout:');
writeln('');
for i:=1 to j do
begin
writeln(Tout[i]);
writeln('');
end;
writeln('D:');
writeln('');
for i:=1 to j do
begin
writeln(D[i]);
writeln('');
end;
writeln('TD:');
writeln('');
for i:=1 to j do
begin
writeln(TD[i]);
writeln('');
end;
writeln('DR:');
writeln(DR);
readkey;
end.
Bahasa Fortran
! A fortran95 program for G95 htotal = 0
! By WQY do k=1,6
htotal = htotal + fh(k)
program main end do
implicit none fhcum(1) = fh(1)
fhcumx(1) = fhcum(1)/htotal
! Identifikasi Variabel do k=2,6
integer :: i,j,k,htotal,state,tbmtotal fhcum(k) = fhcum(k-1)+fh(k)
real :: Ts,T,DR fhcumx(k) = fhcum(k)/htotal
integer, dimension(1:6) :: fh = (/ end do
40,15,25,35,21,32 /)
integer, dimension(1:6) :: hmin = (/ tbmtotal = 0
1,2,3,4,5,6 /) do k=1,6
integer, dimension(1:6) :: hmax = (/ tbmtotal = tbmtotal + ftbm(k)
2,3,4,5,6,7 /) end do
integer, dimension(1:6) :: fhcum ftbmcum(1) = ftbm(1)
real, dimension(1:6) :: fhcumx ftbmcumx(1) = ftbmcum(1)/tbmtotal
integer, dimension(1:6) :: ftbm = (/ do k=2,6
46,21,15,30,10,4 /) ftbmcum(k) = ftbmcum(k-1)+ftbm(k)
integer, dimension(1:6) :: tbmmin = (/ ftbmcumx(k) = ftbmcum(k)/tbmtotal
1,2,3,4,5,6 /) end do
integer, dimension(1:6) :: tbmmax = (/
2,3,4,5,6,7 /) T =0
integer, dimension(1:6) :: ftbmcum DR =0
real, dimension(1:6) :: ftbmcumx r1(1) = 0
real, dimension(:), allocatable :: r2(1) = 0
r1,r2,r3,r4,h,tbm,TA,tAB,TB,Tout,D,TD r3(1) = 0
r4(1) = 0
! Input Lama Waktu Studi h(1) = 0
write(*,*)"Masukkan lama waktu studi tbm(1) = 0
(dalam hari) :" ; read(*,*)Ts TA(1) = 0
tAB(1) = 0
! Inisiasi TB(1) = 0
Tout(1) = 0 else
D(1) = 0 TB(i) = Tout(i-1) + tAB(i)
TD(1) = 0 end if
i =2
! Algoritma C
do while (T<Ts) state = 0
k=1
! Algoritma A do k=1,6
j=i if (r3(i)<ftbmcumx(k)) then
r1(i) = rand() tbm(i) = tbmmin(k) +
r2(i) = rand() (r4(i)*(tbmmax(k)-tbmmin(k)))
r3(i) = rand() state = 1
r4(i) = rand() stop
end if
state = 0 if (state==1) then
k=1 stop
do k=1,6 end if
if (r1(i)<fhcumx(k)) then end do
h(i) = hmin(k) + (r2(i)*(hmax(k)-
hmin(k))) Tout(i) = TB(i) + tbm(i)
state = 1
stop ! Algoritma D
end if D(i) = TB(i) - TA(i) - tAB(i)
if (state==1) then TD(i) = TD(i-1) + D(i)
stop
end if T = TA(i)
end do i=i+1