Program
atau aplikasi untuk mencari average waiting time (AWT) dengan memakai bahasa
Pascal menggunakan algoritma penjadwalan First Come First Served (FCFS) dan
Short Job First (SJF).
PROGRAM
program
averagewaittime;
uses
wincrt;
type
time1=array [1..100] of integer;
wait1=array [1..100] of integer;
var
ulang:char;
pilih:byte;
n:integer;
procedure
FCFS;
var
waktu:time1;
wait:wait1;
i,jumlah,sum:integer;
awt:real;
begin
clrscr;
writeln('###################################');
writeln('First
Come First Served (FCFS)');
writeln('###################################');
write('Jumlah proses : ');readln(n);
jumlah:=0;
sum:=0;
wait[1]:=0;
for i:=1 to n do
begin
write('Masukkan lama proses ke-',i,'
:');readln(waktu[i]);
jumlah:=wait[i];
wait[i+1]:=jumlah+waktu[i];
sum:=sum+wait[i];
end;
gotoxy(1,5+n);
writeln('###############################################');
writeln('Proses |Working Time| Waiting Time (
WT )');
writeln('###############################################');
for i:=1 to n do
begin
gotoxy(1,(7+n)+i);write('|');
gotoxy(11,(7+n)+i);write('|');
gotoxy(24,(7+n)+i);write('|');
gotoxy(38,(7+n)+i);write('|');
end;
gotoxy(1,((7+n)+n)+1);
writeln('###############################################');
for i:=1 to n do
begin
gotoxy(2,(7+n)+i);
write('Proses ',i);
gotoxy(14,(7+n)+i);
write(waktu[i]);
gotoxy(26,(7+n)+i);
writeln(wait[i]);
end;
awt:=sum/n;
gotoxy(1,(9+n)+n);
writeln('Average Waiting Time (AWT) :
',sum,'/',n,':',awt:2:2);
readln;
end;
procedure
SJF;
var
i,j,jumlah,sum,temp:integer;
awt:real;
waktu:time1;
wait:wait1;
begin
clrscr;
writeln('###################################');
writeln('Shortest Job First (SJF)');
writeln('###################################');
write('Jumlah proses : ');readln(n);
jumlah:=0;
sum:=0;
wait[1]:=0;
temp:=0;
for i:=1 to n do
begin
write('Masukkan lama proses ke-',i,'
:');readln(waktu[i]);
end;
for i:=1 to (n-1) do
for j:=(i+1)to n do
begin
if waktu[j]<waktu[i] then
begin
temp:=waktu[i];
waktu[i]:=waktu[j];
waktu[j]:=temp;
end;
end;
gotoxy(1,5+n);
writeln('###############################################');
writeln('Proses |Working Time| Waiting Time
( WT )');
writeln('###############################################');
for i:=1 to n do
begin
gotoxy(1,(7+n)+i);write('|');
gotoxy(11,(7+n)+i);write('|');
gotoxy(24,(7+n)+i);write('|');
gotoxy(38,(7+n)+i);write('|');
end;
gotoxy(1,((7+n)+n)+1);
writeln('###############################################');
for i:=1 to n do
begin
gotoxy(2,(7+n)+i);write('Proses ',i);
gotoxy(14,(7+n)+i);write(waktu[i]);
gotoxy(26,(7+n)+i);write(wait[i]);
jumlah:=wait[i];
wait[i+1]:=jumlah+waktu[i];
sum:=sum+wait[i];
end;
awt:=sum/n;
gotoxy(1,(9+n)+n);
writeln('Average Waiting Time
(AWT):',sum,'/',n,';',awt:2:2);
readln;
end;
procedure
pilihan(pilih:byte);
begin
clrscr;
writeln('Pilihan :');
writeln('1. First Come First Served ');
writeln('2. Shortest Job First ');
writeln('3. Exit ');
write('Your Choice :');readln(pilih);
case pilih of
1:fcfs;
2:sjf;
3:exit;
end;
end;
begin
ulang:='Y';
repeat
clrscr;
pilihan(pilih);
gotoxy(1,(10+n)+n);
write('Back to Main Menu (y/n)?');
readln(ulang);
until upcase(ulang)='N';
end.
Di bawah ini merupakan hasil running program menggunakan tools turbo pascal :
Dan hasil akhir dari running program adalah ...
Terimakasih kang, sangat bermanfaat sekali :)
BalasHapusSib bos.
BalasHapusMantap gan..
BalasHapusLamjutkan kreasimu..