
Turbo Pascal
Bentuk Umum Prosedur :
PROCEDURE nama_prosedur (Daftar_Parameter);
Bagian deklarasi;
Bagian pernyataan;
Parameter pada Prosedur
Terdapat 2 (dua) parameter pada prosedur, yaitu :
Parameter Lokal (Local Parameter)
Parameter Lokal adalah nilai paramter yang terdapat didalam suatu modul program hanya dapat digunakan pada modul atau unit program yang bersangkutan saja sehingga tidak dapat digunakan pada modul atau unit program lain.
01.
Procedure Kali;
02.
Var
03.
A, B : Byte;
04.
Begin
05.
Write (
'Isi nilainya : '
); Readln (A);
06.
B := A * A;
07.
End;
08.
{Program Utama}
09.
Begin
10.
Kali;
11.
Writeln (
'Nilai B = '
, B);
12.
End.
Parameter Global (Global Parameter)
Paramater Global adalah kebalikan dari Paramter Lokal. Agar nilainya dapat digunakan untuk beberapa atau semua modul/unit program maka nilai tersebut harus dideklarasikan diatas modul yang akan menggunakannya.
01.
Var
02.
A, B : Byte;
03.
Procedure Kali;
04.
Begin
05.
Write (
'Isi nilainya : '
); Readln (A);
06.
B := A * A;
07.
End;
08.
{Program Utama}
09.
Begin
10.
Kali;
11.
Writeln (
'Nilai B = '
, B);
12.
End.
- Actual parameter (parameter nyata) yaitu parameter yang dikirimkan dari modul utama ke modul prosedur.
- Formal Parameter (parameter formal) yaitu parameter yang ada dan dituliskan pada judul prosedur.
- Parameter Passing yaitu proses Pemanggilan data lewat parameter nyata ke parameter formal.
- By Value yaitu Pemanggilan parameter secara nilai.
- By Reference yaitu Pemanggilan parameter secara acuan
- Value Parameter yaitu parameter-parameter yang digunakan dalam Pemanggilan secara nilai
Terdapat 3 (tiga) cara Pemanggilan Parameter pada Prosedur :
1. Pemanggilan Secara Nilai (Call by Value)
Pemanggilan parameter secara nilai bersifat searah yaitu dari parameter nyata ke parameter formal. Bila nilai parameter formal berubah, maka nilai parameter nyata tidak berubah.
01.
Procedure Hitung (X, Y, Z : Byte);
02.
Begin
03.
Z := X + Y;
04.
Writeln (
'Nilai X = '
, X);
05.
Writeln (
'Nilai Y = '
, Y);
06.
Writeln (
'Nilai Z = '
, Z);
07.
End;
08.
09.
Var
10.
A, B, C : Byte;
11.
Begin
12.
A :=
5
; B:=
7
; C:=
3
;
13.
Hitung (A, B, C);
14.
WriteLn;
15.
WriteLn (
'Nilai A = '
,A);
16.
WriteLn (
'Nilai B = '
,B);
17.
WriteLn (
'Nilai C = '
,C);
18.
Readln;
19.
End.
Pemanggilan parameter secara acuan bersifat dua arah (bolak – balik). Bila nilai parameter formal berubah, maka nilai parameter nyata ikut berubah.
01.
Procedure Hitung (Var X, Y, Z : Byte);
02.
Begin
03.
Z := X + Y;
04.
Writeln (
'Nilai X = '
, X);
05.
Writeln (
'Nilai Y = '
, Y);
06.
Writeln (
'Nilai Z = '
, Z);
07.
End;
08.
09.
Var
10.
A, B, C : Byte;
11.
Begin
12.
A :=
5
; B:=
7
; C:=
3
;
13.
Hitung (A, B, C);
14.
WriteLn;
15.
WriteLn (
'Nilai A = '
,A);
16.
WriteLn (
'Nilai B = '
,B);
17.
WriteLn (
'Nilai C = '
,C);
18.
Readln;
19.
End
Berikut contoh program Pemanggilan Parameter Sebagian Secara Nilai dan Sebagian Secara Acuan.
01.
Procedure Hitung (X, Y : Byte; Var Z : Byte);
02.
Begin
03.
Z := X + Y;
04.
End;
05.
06.
Var
07.
A, B, C : Byte;
08.
Begin
09.
A :=
5
; B:=
7
; C:=
3
;
10.
Hitung (A, B, C);
11.
Writeln (
'Nilai A = '
, A);
12.
Writeln (
'Nilai B = '
, B);
13.
Writeln (
'Nilai C = '
, C);
14.
ReadLn;
15.
End.
- Published by admin in: Pascal Programming
- If you like this blog please take a second from your precious time and subscribe to my rss feed!
saya belajar pemprogramman pascal, di linux dengan freepascal, dibawah ini
adalah source kode yang saya tulis untuk belajar procedure. Hasil nya
tidak sesuai dengan yang saya harapkan, yaitu variable didalam procedure
tidak terkoneksi antara procedure “proses” dan prosedure “tampil”. Mohon
bantuan and untuk koreksi dimana kekurangan program saya tersebut.
Atas bantuannya diucapkan Terima kasih.
——-kode———
uses crt;
procedure isi(var n :byte);
var kata : array[1..100] of string[50];
a : byte;
begin
write(‘Jumlah array ?’);
readln(n);
for a := 1 to n do begin
write(‘kata array ke-’, a, ‘-> ‘);
readln(kata[a]);
end;
end;
procedure proses(var n, v, k :byte; var vok, kon :string);
var kata : array[1..100] of string[50];
huruf : array[1..100] of string[1];
tkata : string;
a,b,l : byte;
begin
vok := ”;
kon := ”;
v := 0;
k := 0;
writeln(n);
for a := 1 to n do begin
tkata := ”;
tkata := kata[a];
l := 0;
l := length(kata[a]);
for b := 1 to l do begin
huruf[b] := tkata[b];
if (huruf[b]=’a') or (huruf[b]=’i') or
(huruf[b]=’u') or (huruf[b]=’e') or (huruf[b]=’o')
then begin
inc(v);
vok := vok+huruf[b];
end
else begin
inc(k);
kon := kon+huruf[b];
end;
end;
end;
end;
procedure tampil(var v, k :byte; var vok, kon :string);
begin
writeln;
writeln(‘vokal = ‘, v, ‘-> ‘, vok);
writeln(‘konsonan = ‘, k, ‘-> ‘, kon);
end;
var vok, kon : string;
h, i, j : byte;
begin
clrscr;
isi(h);
proses(h, i, j, vok, kon);
tampil(i, j, vok, kon);
readln;
end.