You are on page 1of 5

Contoh program dengan procedure n function

Contoh 1
program contoh_function;
uses wincrt;
var n:integer;
function jumgan(var y:integer):integer;
var xx:integer;
begin
xx:=0;
while y>=1 do
begin
xx:=xx+y;
y:=y-2;
end;
jumgan:=xx;
end;
begin
write('masukkan bilangan bulat = ');readln(n);
if (n mod 2 = 0) then n:=n-1;
writeln(' JUMLAH GANJIL DARI ',n:5,' adalah ', jumgan(n):8);
end.

contoh 2:

program contohprocedure_dan_function;
uses wincrt;
var bil1,bil2:integer;
function tambah(x,y:integer):integer;
begin
tambah:=x+y;
end;
procedure kali(var x,y:integer);
var kali:longint;
begin
kali:=x*y;
writeln('hasil kali ',x:4,' dengan ',y:4,' adalah = ', kali:8);
end;
procedure uji(var x,y:integer);
begin
x:=x*12;y:=y+5;
writeln('nilai bil1*12 di procedure adalah = ',x:8);
writeln('nilai bil 2+5 di procedure adalah = ',y:8);
end;
procedure uji2(x,y:integer);
begin
x:=x-100;y:=y+100;
writeln('nilai bil1-100 di procedure uji2 adalah = ',x:8);
writeln('nilai bil 2+100 di procedure uji2 adalah = ',y:8);

end;
begin

writeln('PROGRAM UNTUK LATIHAN PROCEDURE DAN FUNCTION');


write('masukkan bilangan bulat : ');
readln(bil1);
write('masukkan bilangan bulat : ');
readln(bil2);
writeln('hasil penjumlahan ',bil1:4,' dengan ',bil2:4,'
adalah= ',tambah(bil1,bil2):8);
kali(bil1,bil2);writeln;
writeln('nilai bil1 sebelum di procedure= ',bil1:8);
writeln('nilai bil 2 sebelum diprocedure= ',bil2:8);
uji(bil1,bil2); writeln;
writeln('nilai bil1 setelah di procedure= ',bil1:8);
writeln('nilai bil 2 setelah diprocedure= ',bil2:8);writeln;
{pemanggilan uji2}
writeln('nilai bil1 sebelum di procedure uji 2= ',bil1:8);
writeln('nilai bil 2 sebelum diprocedure uji 2= ',bil2:8);
uji2(bil1,bil2); writeln;
writeln('nilai bil1 setelah di procedure uji2= ',bil1:8);
writeln('nilai bil 2 setelah diprocedure uji2= ',bil2:8);
end.

Contoh 3;

program contohrecord_menggunakanprocedure;
uses wincrt;
type rekam=record
nim:string[10];
nama:string;
ip:real;
end;
larik=array[1..100] of rekam;
var mhs:larik;
i,jummhs:byte;
procedure isidata(var x:larik);
var ya:boolean; jwb:char;
begin
{mengisi dengan repeat until}
i:=0;
ya:=true;
repeat
begin
i:=i+1;
writeln('mengisi data mahasiswa ke ',i:4);
with x[i] do
begin
write('NIM
= ');readln(nim);
write('NAMA
= ');readln(nama);
write('IP
= ');readln(ip);
end;

write('mau mengisi lagi(y/t)? ');readln(jwb);


if jwb <> 'y' then ya:=false;
end
until( not ya);
jummhs:=i;
end;
procedure tampil(var x:larik);
begin
writeln;
writeln('------------------------------------------------------');
writeln(' NO
NIM
NAMA
IP');
WRITELN('------------------------------------------------------');
for i:=1 to jummhs do
writeln(i:3,x[i].nim:6,x[i].nama:20,x[i].ip:10:2);
writeln('------------------------------------------------------');
end;
begin
writeln(' contoh penggunaan procedure');
writeln(' mengisi di procedure');
isidata(mhs);
writeln ('menampilkan di procedure');
tampil(mhs);
END.

Contoh 4:
program nilai_khs;
uses wincrt;
type
siswa=record
nim:string[5];
nama:string[15];
krs:array[1..4,1..5] of integer;
end;
type kuliah=array[1..20] of siswa;
var kul:kuliah;
{--------------------------------------------------------------------}
function huruf(bobot:integer):char;
begin
case bobot of
0:huruf:='E';
1:huruf:='D';
2:huruf:='C';
3:huruf:='B';
4:huruf:='A';
end;
end;
{--------------------------------------------------------------------}
procedure khs(n:integer;kul:kuliah);

var jumsks,usaha,i,j:integer;
ipnya:real;
begin
for i:=1 to n do
begin
Writeln('Nim : ',kul[i].nim);
Writeln('Nama : ',kul[i].nama);
writeln;
writeln('Kode sks nilai');
jumsks:=0;usaha:=0;
for j:=1 to 2 do
begin
writeln(kul[i].krs[1,j]:3,' ',kul[i].krs[2,j]:3,' ',huruf(kul[i].krs[4,j]):5);
jumsks:=jumsks+kul[i].krs[2,j];
usaha:=usaha + kul[i].krs[2,j]*kul[i].krs[4,j];
end;
if jumsks<>0 then
ipnya:=usaha/jumsks;
writeln;
writeln('IP = ',ipnya:0:2);
readkey;
end;
end;
{--------------------------------------------------------------------}
function bobot(nilai:integer):integer;
begin
if nilai<40 then bobot:=0
else
if (nilai>=40) and (nilai<55) then bobot:=1
else
if (nilai>=55) and (nilai<65) then bobot:=2
else
if (nilai>=65) and (nilai<76) then bobot:=3
else
bobot:=4;
end;
{--------------------------------------------------------------------}
procedure masukdata(var kul:kuliah;var n:integer);
var i,j:integer;
begin
clrscr;
write('Banyak mahasiswa = ');readln(n);
for i:=1 to n do
begin
write('Nim : ');readln(kul[i].nim);
write('Nama : ');readln(kul[i].nama);

writeln;
for j:=1 to 2 do
begin
write('Kode : ');readln(kul[i].krs[1,j]);
write('Sks : ');readln(kul[i].krs[2,j]);
write('Nilai : ');readln(kul[i].krs[3,j]);
writeln('Bobot : ',bobot(kul[i].krs[3,j]));
kul[i].krs[4,j]:=bobot(kul[i].krs[3,j]);
writeln('huruf : ',huruf(bobot(kul[i].krs[3,j])));
writeln;
end;
end;
end;
var n:integer;
begin
masukdata(kul,n);
readkey;
khs(n,kul);
end.

You might also like