BAHAN AJAR
Pertemuan ke 1
Pengertian Array
Array (larik) merupakan tipe data tersetruktur dimana didalamnya
terdiri dari komponen – komponen yang mempunyai tipe data yang sama.
Didalam suatu array jumlah komponen banyaknya adalah tetap. Didalam
suatu larik atau array setiap kompoenen ditunjukkan oleh suatu index
yang unik. Index dari setiap komponen array menunjukan urutan data atau
identitas yang mewakili data yang adadidalamnya. Logika sederhananya
array itu bisa disamakan dengan dua orang dengan nama yang sama
didalam suatu komunitas, untuk membedakan antara nama yang satu
atau dengan nama yang lain maka diberikan initial tambahan untuk setiap
nama.
Variabel array telah kita singgung di bagian depan, namun masih sangat
terbatas. Pada bagian ini kita akan pelajari lebih detil tentang array.
Deklarasi Array
Didalam penulisan bahasa pemograman setiap penggunaan array
harus dideklarsikan terlebih dahulu. Pendeklarasian array diawali dengan
nama variabel array diikuti dengan indeks array yang dituliskan didalam
tanda “[]” , diikuti dengan kata cadangan of dan tipe data yang
dibutuhkan.
Bentuk Umum Penulisan:
Tanda_pengenal : array [..tipe index ..] of tipe data;
Contoh
:
Var
A : array[1..4] of integer;
B : array[1..5] of string;
C: array[1..10] of real;
Keterangan:
:
A,B,C merupakan tanda pengenal/ nama variabel dari array;
Integer : menunjukan bahwa data yang diinput berupa bilangan bulat.
Pertemuan ke 2
Alokasi Penggunaan Array
a. Array Static (Static Array)
Array static adalah model pendeklarasian array dimana tipe data yang digunakan
mempunyai nilai yang tetap. Nilai yang digunakan untuk menentukan jangkauan pada
umumnya bernilai integer. Array Static juga bisa disebut Array dengan deklarasi tipe
indeks subrange integer.
Bentuk Umum
array[indexType1, ..., indexTypen] of baseType
Keterangan
= index type menunjukan tipe data ordinal yang menunjukan
batasan atau elemen maksimal terhadap seberapa besar
variabel tersebut menyimpan komponen.
Contoh :
Var arrayku : array[1..5] of char
Atau juga
type
jangkauan = 1..5;
var
nilai : array[jangkauan] of integer;
b. Array Dinamis (Dynamic arrays)
Larik atau array dinamis merupakan array yang tidak mempunyai
suatu jangkauan atau ukuran yang tetap. Tetapi ketika program dijalankan
maka memori untuk suatu array dinamis direalokasikan ketika kita
menugaskan suatu nilai kepada array. Dynamic-Array jenis ditandai oleh
konstruksi (menyangkut) format.
Bentuk Umum
array of baseType
Contoh
var nilai: array of Real;
array didalam suatu memori, caranya adalah dengan memanfaatkan
fungsi dari perintah sellength.
Misalnya : Selllength(nilai,20)
Dari penggalan program tersebut nilai untuk array nilai tersebut
mempunyai range sebanyak atau cakupan 20 untuk tipe data real, dengan
indeex dimulai dari 0 sampai dengan 20.
Pertemuan Ke 3
Fungsi Standar Aritmatika
Ada Abs, ArcTan, Cos, Exp, Franc, Int, Ln, Pi, Sin, Sqr dan Sqrt
Penjelasan :
- Abs (x) ;
Memutlakkan suatu nilai yang ditunjukkan oleh argument x. dapat
berupa tipe real atau integer.
- Exp (x : real ) : real ;
Untuk menghitung nilai pangkat dari bilangan e. dapat berupa real
atau integer dan hasil dari fungsinya adalah real.
- Ln (x : real ) : real ;
Untuk menghitung nilai logaritma alam dari nilai x. tipe datanya real
atau integer dan hasil fungsinya adalah real.
- Int (x : real) : real ;
Untuk menghasilkan nilai integer dari x. hasil dari fungsi adalah tipe
real dengan nilai yang berupa pembulatan ke bawah dari nilai x.
- Franc (x : real ) : real ;
Untuk mendapatkan nilai pecahan dari argument x. Argumen x dapat
berbentuk real atau integer dan hasilnya adalah real.
- Sqr (x) ;
Untuk menghitung nilai pangkat kuadrat dari argument x.
- Sqrt (x : real ) : real ;
Untuk menghitung nilai akar dari argument x. dapat real dan integer
dan hasil dari fungsinya adalah real.
- Pi :Akan menghasilkan nilai PI sebesar 3, 14.
Fungsi Standar Transfer
Digunakan untuk merubah suatu nilai ke bentuk nilai yang lain. Yang
tersedia adalah fungsi standar Chr, Ord, Round dan trunc.
- Chr (x : byte) : char ;
Untuk merubah nilai dari byte x ke bentuk karakter yang sesuai dengan
kode ASCII.
- Ord (x) : longint ;
Untuk merubah nilai x ke bentuk nilai longint yang sesuai dengan kode
ASCII. Fungsi ini kebalikan dari fungsi standar Chr.
- Round (x : real) : longint ;
Untuk membulatkan nilai dari real x ke nilai longint yang terdekat. Bila
nilai pecahan sama dengan atau lebih besar dari 0,5 akan dibulatkan ke
atas, sedangkan bilai nilai pecahan lebih kecil dari 0,5 akan dibulatkan ke
bawah.
- Trunc (x : real) : longint ;
Untuk membulatkan nilai dari real x ke nilai longint terkecil, atau dengan
kata lain membulatkan ke bawah.
Pertemuan Ke 4
Fungsi Standar Lainnya
Terdiri dari : Hi, Lo, Random, SizeOf, Swap, UpCase, ParamCount dan
ParamStr.
Penjelasan :
-
Hi (x) : byte ;
Untuk mengisi low order byte dari hasil fungsi dengan high order byte
dari ungkapan integer x. high order byte dari hasil fungsi akan bernilai
nol. Tipe hasil dari fungsi ini adalah byte.
-
Lo (x) : byte ;
Untuk mengisi low order byte dari hasil fungsi dengan low order byte
dari ungkapan integer x. high order byte dari hasil fungsi akan bernilai
nol. Tipe hasil dari fungsi ini adalah byte.
- Swap (x) ;
Untuk membalik bit-bit di low order byte menjadi high order byte dan
sebaliknya dari ungkapan x. ungkapan x dapat berupa tipe integer
atau word.
-
Random [ (range : word ) ] ;
Untuk menghasilkan angka random berkisar dari nilai lebih besar atau
sama dengan nol dan lebih kecil dari satu. Bila range tidak
disebutkan, hasil dari fungsi ini adalah real. Bila range disebutkan,
hasilnya adalah word.
Untuk menunjukkan besarnya byte yang digunakan oleh suatu
variable x. hasilnya adalah word.
UpCase (Ch : char ) : char ; Untuk merubah argument suatu karakter
yang ditunjukkan oleh Ch menjadi bentuk karakter huruf besar ( upper
case ).
-
ParamCount: word ; Untuk mengetahui jumlah parameter yang
dikirimkan lewat promt DOS
-
ParamStr (index) : string ; Untuk menerima parameter yang
dikirmkan lewat promt DOS, index adalah ungkapan dengan tipe
word, dan akan menghasilkan parameter ke index yang dikirmkan
tersebut.
Gambar Lemari dengan banyak kotak laci di dalamnya
Pada variabel array, kita tidak hanya menentukan tipe datanya saja, tetapi juga jumlah elemen dari array tersebut atau dalam hal ini adalah batas atas indeksnya. Pada banyak bahasa pemrograman seperti C++, Visual Basic, dan beberapa yang lainnya, nilai indeks awal adalah 0 bukan 1. Cara menuliskan variabel array berbeda-beda tergantung bahasa pemrograman apa yang dipakai. Tetapi yang pasti tipe data harus disebutkan dan batas atas indeks harus ditentukan. Untuk mengisi data pada array kita dapat langsung menentukan pada indeks berapa kita akan isikan demikian juga untuk memanggil atau menampilkan data dari array. Contoh deklarasi, pengisian dan pemanggilan array adalah sebagai berikut.+
Pertemuan Ke 5
Penulisan array pada C++
#include <iostream> using namespace std; int main() {
// Mendeklarasikan array A dengan 3 buah elemen bertipe int
int A[3];
// Mengisikan nilai elemen array
A[0] = 5; A[1] = 10; A[2] = 20;
"<<A[1];
cout<<"Nilai elemen ke-3 = "<<A[2];
return 0; }
‘Mendeklarasikan array A dengan 3 buah elemen bertipe integer
Dim A (2) as Integer ‘Mengisikan nilai elemen array
// Menampilkan nilai elemen array
cout<<"Nilai elemen ke-1 = "<<A[0];
cout<<"Nilai elemen ke-2 =
A(1) = 10; A(2) = 20;
‘Menampilkan nilai elemen array
Print A(0); Print A(1);
Perhatikan pada kedua kode di atas. Pada pendeklarasian variabel array nilai maksimal indeks adalah 2 tetapi jumlah elemennya ada 3 karena indeks dimulai dari 0 bukan dari 1.
Penggunaan Larik / Array
1. Defenisi Larik ( Array )
Larik atau array ialah suatu tipe data terstruktur yang terdapat dalam memori yang terdiri
dari sejumlah elemen yang mempunyai tipe data yang sama dan merupakan gabungan dari
beberapa variabel sejenis serta memiliki jumlah komponen yang jumlahnya tetap.
2. Deklarasi Larik
Array adalah struktur data yang statik, yaitu jumlah elemen array harus sudah diketaui
sebelum program dieksekusi.
Macam-macam array terdiri atas :
a. Array 1 dimensi dituliskan :
Variabel [ indeks ]
b. Array 2 dimensi dituliskan :
Variabel [ indeks1, indeks2 ]
c. Array 3 dimensi dituliskan :
Variabel [ indeks1, indeks2, indeks3 ]
Syntax :
Variabel [ indeks ]
Variabel [ indeks1, indeks2 ]
Variabel [ indeks1, indeks2, indeks3 ]
Deklarasi
Var
< Nama Array = array [indeks] of tipe data;
< Nama Array = array [indeks1, indeks2] of tipe data;
tipe data;
< Nama Array = array [indeks1, indeks2, indeks3] of tipe data;
of tipe data;
Contoh :
1. Bentuk Pertama sebagai variabel Deklarasi
Nilai : Array [ 1..15] of integer
Nama : Array [ ‘A’..’Z’] of string
2. Bentuk Kedua sebagai tipe baru Deklarasi
Type
Nilai : Array [ 1..100 ] of real
Var
Atau
X : Array [ 1.. 100 ] of real
3. Bentuk Ketiga dengan ukuran maksimum elemen larik sebagai sebuah konstanta
Deklarasi
Const max : 100
Type
Nilai : Array [ 1..max ] of real
Var
X : Nilai
Atau
X : Array [1..100 ] of real
Pertemuan 6 - 7 :
Pendeklarasian Array Multi Dimensi (Berdimensi Banyak) Cara pendeklarasian array multi dimensi mirip dengan cara array 1 dimensi. Hanya terdapat penambahan tanda kurung siku (“[“ dan “]”) untuk menunjukan jumlah maksimum data yang dapat ditampung oleh variabel array tersebut. Pada C/C+ +, untuk mendeklarasikan variable array multi dimensi kita dapat
menuliskannya sebagai berikut :
Tipe_Data Nama_Array[Jumlah_Elemen1] ]...[Jumlah_Elemen n];
Contoh :
int Array[10][5]; //deklarasi array 2 dimensi
double Jumlah[7][1][3]; //deklarasi array 3 dimensi
float Total[5][6][1][2]; //deklarasi array 4 dimensi, dst…
Materi Kuliah Pemrograman Terstruktur I
IF - UTAMA Versi/Revisi : 1/0 Halaman : VIII-3
Array dua dimensi dapat kita gambarkan sebagai berikut :
0 1 … n Index kolom
1
…
n
Elemen Array
Gambar 8.1. Array Dua Dimensi
Array berdimensi banyak pada kenyataannya jarang dipergunakan dalam aplikasi. Array berdimensi banyak yang sering digunakan adalah array dengan 2 dimensi atau lebih dikenal dengan nama Matriks
Cara Pendeklarasian Array Tak Berukuran
Kita bisa menentukan ukuran atau jumlah elemen dalam array dengan suatu nilai tertentu (seperti contoh deklarasi array pada sub bab 8.2) dan ukuran ini sifatnya konstan atau tidak akan berubah. Namun ada kalanya kita tidak mengetahui jumlah elemen maksimum (atau dengan kata lain jumlah elemen dalam array sifatnya tidak konstan atau dinamis), untuk keperluan inilah adlam bahasa C/C++ kita bisa mendefinisikan suatu array tanpa mencantumkan berapa ukuran atau jumlah elemen maksimal ya g bisa disimpan dalam array tersebut.
Pada C/C++, untuk mendeklarasikan variable array tak berukuran kita dapat
menuliskannya sebagai berikut :
Tipe_Data Nama_Array[ ][ ]...[ ];
Contoh :
int Array[ ]; //deklarasi array 1 dimensi tak berukuran
char Angka[ ][ ]; //deklarasi array 2 dimensi tak berukuran
float Total[ ][ ]...[ ]; //deklarasi array dimensi tertentu dan tak berukuran
8.4 Cara Pengaksesan Array Array Multi Dimensi
Untuk dapat memasukan suatu nilai atau melihat isi dari suatu array kita harus
menentukan posisi dimana nilai tersebut disimpan. Untuk mengakses elemen array dapat
kita lakukan dengan perintah
Pada C/C++, untuk mengakses elemen array dapat kita lakukan dengan perintah
sebagai berikut :
Nama_Array[indeks_Elemen1] ]...[indeks_Elemen n];
Ary[10]; //akses elemen array Ary pada indeks ke-10
Jumlah[7][1]; // akses elemen array Jumlah pada indeks baris ke-7 dan indeks
kolom ke-1
Total[5][6][1]; // akses elemen array Total pada indeks x 5 dan indeks y ke-6
dan indeks z ke-1, dst…
Setelah posisi ini kita ketahui, kemudian kita bisa melakukan operasi pada array atau nilai
dalam array tersebut. Operasi yang dapat dilakukan pada sebuah array sangat beragam
tergantung kebutuhan pengguna program tersebut.
Contoh Program ontoh Menggunakan Array Array Multi Dimensi Agar bisa mendapatkan gambaran lebih jauh seperti apa sih program yang menggunakan array multi dimensi? Anda bisa melihat contoh-contoh sebagai berikut :
Contoh 01 : Program untuk menjumlahkan 2 buah array 2 dimensi pada C/C+ +
//Contoh program array multi dimensi - kuliah Pemrograman Terstruktur I
//IF-Universitas Widyatama
//dibuat oleh : Danang Junaedi
//Tanggal : 17 November 2008 jam : 15:09 di B.417
//program untuk menjumlahkan array/Matriks A dan B yang berukuran 2x23
#include<stdio.h>
#include<conio.h>
int main()
{
int Matriks_A[2][2], Matriks_B[2][2]; // array Matriks_A dan Matriks_B
int Matriks_Hasil[2][2];// array untuk hasil penjumlahan Matriks_A dan Matriks_B
int idxBaris;//indeks baris, sebagai penunjuk nomor baris dalam array
//proses input nilai ke dalam array Matriks_A dan Matriks_B
printf("Masukan Nilai ke dalama Matriks_A\n");
for (idxBaris=1; idxBaris<=2;idxBaris++)
{
for(idxKolom=1;idxKolom<=2;idxKolom++)
{
printf("Masukan nilai ke dalam Matriks_A[%d,%d] : ",idxBaris,idxKolom);
scanf("%d",&Matriks_A[idxBaris][idxKolom]);//input nilai ke dalam
Matriks_A pada baris ke-idxBaris dan kolom ke-idxKolom
}
}
printf("\nMasukan Nilai ke dalama Matriks_B\n");
for (idxBaris=1; idxBaris<=2;idxBaris++)
{
for(idxKolom=1;idxKolom<=2;idxKolom++)
{
printf("Masukan nilai ke dalam Matriks_B[%d,%d] : ",idxBaris,idxKolom);
scanf("%d",&Matriks_B[idxBaris][idxKolom]);//input nilai ke dalam
Matriks_B pada baris ke-idxBaris dan kolom ke-idxKolom
}
}
//proses penjumlahan Matriks_A dan Matriks_B
for (idxBaris=1; idxBaris<=2;idxBaris++)
{
for(idxKolom=1;idxKolom<=2;idxKolom++)
{
Matriks_Hasil[idxBaris][idxKolom] = Matriks_A[idxBaris][idxKolom] +
}
}
//proses output nilai pada array Matriks_A, Matriks_B dan Matriks_Hasil
printf("\nisi Matriks_A\n");
for (idxBaris=1; idxBaris<=2;idxBaris++)
{
for(idxKolom=1;idxKolom<=2;idxKolom++)
Materi Kuliah Pemrograman Terstruktur I
IF - UTAMA Versi/Revisi : 1/0 Halaman : VIII-5
{
printf("\t%d ",Matriks_A[idxBaris][idxKolom]);//output nilai dalam
Matriks_A baris ke-idxBaris dan kolom ke-idxKolom
}
printf("\n");
}
printf("\nisi Matriks_B\n");
for (idxBaris=1; idxBaris<=2;idxBaris++)
{
for(idxKolom=1;idxKolom<=2;idxKolom++)
{
printf("\t%d ",Matriks_B[idxBaris][idxKolom]);//output nilai dalam
Matriks_B baris ke-idxBaris dan kolom ke-idxKolom
}
printf("\n");
}
printf("\nisi Matriks_Hasil\n");
for (idxBaris=1; idxBaris<=2;idxBaris++)
for(idxKolom=1;idxKolom<=2;idxKolom++)
{
printf("\t%d ",Matriks_Hasil[idxBaris][idxKolom]);//output nilai dalam
Matriks_B baris ke-idxBaris dan kolom ke-idxKolom
}
printf("\n");
}
getch();
return 0;
}
Outputnya adalah :
Contoh 02 : Program untuk menghasilkan matriks identitas pada C/C++
//Contoh program array multi dimensi - kuliah Pemrograman Terstruktur I IF-Universitas
Widyatama
//dibuat oleh : Danang Junaedi
//Tanggal : 17 November 2008 jam : 16:30 di B.417
//program untuk menghasilkan matriks identitas
Materi Kuliah Pemrograman Terstruktur I
IF - UTAMA Versi/Revisi : 1/0 Halaman : VIII-6
#include<stdio.h>
#include<conio.h>
int main()
{
int MaxBaris,MaxKolom;
int idxBaris;//indeks baris, sebagai penunjuk nomor baris dalam array
int idxKolom; //indeks kolom, sebagai penunjuk nomor kolom dalam array
printf("Masukan Ukuran Baris & Kolom Matriks_Identitas : ");scanf("%d",&MaxBaris);
MaxKolom=MaxBaris;
int Matriks_Identitas[MaxBaris][MaxKolom]; //deklarasi array Matriks_identitas
for (idxBaris=0; idxBaris<=MaxBaris;idxBaris++)
{
for(idxKolom=0;idxKolom<=MaxKolom;idxKolom++)
{
(idxBaris == idxKolom) ? Matriks_Identitas[idxBaris][idxKolom] = 1:
Matriks_Identitas[idxBaris][idxKolom] = 0;
}
}
printf("\nMatriks_Identitasnya adalah \n");
for (idxBaris=1; idxBaris<=MaxBaris;idxBaris++)
{
for(idxKolom=1;idxKolom<=MaxKolom;idxKolom++)
{
printf("%d ",Matriks_Identitas[idxBaris][idxKolom]);//output nilai dalam
Matriks_Identitas baris ke-idxBaris dan kolom ke-idxKolom
}
printf("\n");
}
getch();
return 0;
}
Outputnya adalah :
8.6 Referen
Pemrosesan Larik
Elemen Larik diproses secara beruntun melalui indeks terurut, asalkan indeks tersebut sudah terdefenisi. Contoh algoritma pemrosesan larik :
Deklarasi
Const max : 25
Type Larik : Array [ 1.. max] of integer
X : Larik
M : Integer
N : Integer
Contoh
Program Utama
Kepala
Algoritma Pemrosesan_Larik;
Deklarasi
Type Larik : Array [ 1.. 100 ] of integer
X : Larik
N : Integer
Procedure Input_Array ( Output x : larik; input N: integer);
Deklarasi
J := Integer
Deskripsi
For J := 1 to N do
Read ( x [ J ] )
Endfor
Procedure Output_Array ( Input x : larik; input N: integer);
Deklarasi
I := Integer
Deskripsi
For I := 1 to N do
Endfor
Read ( N );
Implementasi dalam Bahasa Pemrograman Pascal :
Uses Crt;
Const max = 100;
Type
Latih = array [ 1..max ] of real;
Var
X : latih;
I,n : integer;
Procedure Inputan (masuk : latih; n : integer);
Begin
For i := 1 to n do
Begin
Write (’Masukkan suku ke-’,i, ’= ’);
Readln(x [ i ]);
End;
End;
Procedure Keluaran (cetak : latih; n : integer);
Begin
For i := 1 to n do
Write (’x [‘,I,’ ] = x [ i ] :6:1);
End;
Begin
Clrscr;
Write (‘Masukkan N (mak 100) : ‘);
Readln(n);
Writeln; Writeln;
Readln;
End
Penggunaan Larik
Array dibutuhkan apabila suatu proses memerlukan penyimpanan sementara data yang
bertipe sama dalam memori, untuk selanjutnyauntuk selanjutnya data tersebut dimanipulasi,
dihitung, atau diterapkan proses lainnya. Dengan array dapat menghemat penggunaan
nama-nama variabel yang banyak. Variabel dapat dibagi menjadi 2 yaitu :
a. Variabel tunggal
Keseluruhan data yang di input akan disimpan pada satu tempat saja sehingga
nantinya yang tersimpan data yang paling akhir.
Contoh dalam bahas Pemrograman Pascal :
Uses Crt;
Var
I,n,x : integer;
Procedure Inputan ( var x,n : integer);
Begin
For i := 1 to n do
Begin
Write (’masukkan suku ke-’,i,’=’);
Readln(x);
End;
End;
Procedure Keluaran ( var x,n : integer);
Begin
For i := 1 to n do
Write (‘x[’,i,’]=’,x);
End;
Begin
Clrscr;
Write(’Masukkan N (mak 100) :’);
Readln(n);
Jika Program ini dijalankan maka hasilnya Sebagai berikut :
Masukkan N (mak 100) : ketikkan 5
Masukkan suku ke-1 = 10
Masukkan suku ke-2 = 15
Masukkan suku ke-3 = 20
Masukkan suku ke-4 = 25
Masukkan suku ke-5 = 30
Hasilnya :
X[1] = 30
X[2] = 30
X[3] = 30
X[4] = 30
X[5] = 30
b. Variabel berindeks
Data akan disimpan berdasarkan alamat dari suatu indeksnya.
Contoh dalam Program Pascal :
Uses Crt;
Type
Latih = array [ 1..max ] of real;
Var
X : latih;
I,n : integer;
Procedure Inputan (masuk : latih; n : integer);
Begin
For i := 1 to n do
Begin
Write (’Masukkan suku ke-’,i, ’= ’);
Readln(x [ i ]);
End;
End;
Procedure Keluaran (cetak : latih; n : integer);
For i := 1 to n do
Write (’x [‘,I,’ ] = x [ i ] :6:1);
End;
Begin
Clrscr;
Write (‘Masukkan N (mak 100) : ‘);
Readln(n);
Inputan(x,n);
Writeln; Writeln;
Keluaran(x,n)
Readln;
End.
Jika Dijalankan maka hasilnya :
Masukkan N (mak 100) : ketikkan 5
Masukkan suku ke-1 = 10
Masukkan suku ke-2 = 15
Masukkan suku ke-3 = 20
Masukkan suku ke-4 = 25
Masukkan suku ke-5 = 30
Hasilnya :
X[1] =10
X[2] = 15
X[3] = 20
X[4] = 25
X[5] = 30
Larik 2: Dimensi
Misalkkan Matrik C ukuran 3x4 yang merupakan hasil penjumlahan dari Matrik A ukuran 3x4 dan Matrik B ukuran 3x4.
A
=
(
a b c d
e f g h
i
j k l
)
danB
=
(
C
=
(
a
+
m b
+
n c
+
o d
+
p
e
+
q
f
+
r
g
+
s
h
+
t
i
+
u
j
+
v k
+
w l
+
x
)
Makaalgoritma dari permasalahan tersebut dapat dituliskan :
Deklarasi
Type larik : Array [1..Indeks, 1..indeks2] of integer
X : Larik
N : Integer
Procedure Input_ArrayA(output x : Larik; Input M,N : integer);
Deklarasi
I,j : integer
Deskripsi
For I := 1 to m do
For J := 1 to n do
Read ( A[I,j])
End for
Ebdfor
Procedure Input_ArrayB(output x : Larik; Input M,N : integer);
Deklarasi
I,j : integer
Deskripsi
For I := 1 to m do
For J := 1 to n do
Read ( B[I,j])
End for
Ebdfor
Procedure Jumlah_Array(Input x : Larik; Input M,N : integer);
Deklarasi
Deskripsi
For I := 1 to m do
For J := 1 to n do
C[I,j] := A[I,j] + B[I,j]
Write ( C[I,j] )
End for
Ebdfor
Deskripsi
Read (N)
Input_ArrayA(x,M,N)
Input_ArrayB(x,M,N)
Jumlah_Array(x,M,N)
Implementasinya dalam bahasa Pemrograman Pascal :
Uses Crt;
Type
Latih = array [ 1..10, 1..10] of integer;
Var
I,j,n,m : Integer;
A,B,C : latih;
Procedure InputA(var x : latih; m,n : integer);
Begin
For I := 1 to m do
Begin
For J := 1 to n do
Begin
Write(‘Masukkan suku A[‘,I,’] = ‘);
Raedln(A[I,j](;
End;
End;
Procedure InputB(var x : latih; m,n : integer);
Begin
For I := 1 to m do
Begin
For J := 1 to n do
Begin
Write(‘Masukkan suku B[‘,I,’] = ‘);
Raedln(B[I,j](;
End;
End;
End;
Procedure Keluaran(var x : latih; m,n : integer);
Begin
For I := 1 to m do
Begin
For J := 1 to n do
Begin
C[I,j]:=A[I,j]+ B[I,j]
Writeln(‘C[‘,I,’]=’, C[I,j]);
End;
End;
End;
Begin
Write(‘Masukkan m (mak 10) :’);
Readln(m);
Readln(n);
InputA(a,m,n);
InputB(a,m,n);
Writeln; Writeln;
Keluaran(c,m,n);
Readln;
End.
Operasi-operasi Array
2.1. Pengaksesan data array
Pengaksesan data array dapat dilakukan dengan cara memberikan nama variabel array tersebut serta indexnya.
Contoh :
Data[0]=5;
Data[1]=7;
Printf(“Data pertama adalah %d \n”,Data[0]);
Cara lain untuk pengaksesan data array dalam bahasa C adalah dengan menggunakan pointer.
Contoh :
1
2
3
4
5
6
7
8
9
int data[5]={1,4,5,6,7};
int *p,i; //p adalah pointer ke data int, i adalah sebuah int
p=data;
i=data[2];
*p=50; // identik dengan data[0]=50
*(p+1)=15; // identik dengan data[1]=15
10
11
dengan
data[2]=data[2]+data[1];
p++; // alamat p ditambah 1 (p berisi alamat int berikutnya)
printf(“Isi P adalah : “,*p);// akan muncul data[1] yaitu 50
p=p+2; // alamat p ditambah 2(p berisi alamat 2 int berikutnya
printf(“Isi P sekarang : “,*p);// akan muncul data[3] yaitu 6
#include <stdio.h>
#include <conio.h>
#define maks 5
main()
{
int i,*p;
int data[5];
p=data;
clrscr();
printf("Pemasukan data :\n");
for(i=0;i<maks;i++)
{
printf("Masukan data[%d]: ",i);
scanf("%d",p+i);
}
printf("\nData yang telah di masukan adalah :\n");
for(i=0;i<maks;i++)
{
i,p+i,*(p+i));
}
getch();
return 0;
}
2.2. Menampilkan data array
Operasi ini berguna untuk menampilkan data yang ada dalam array sebanyak banyaknya data. Oleh karena itu berarti akan ada perulangan dari data pertama sampai data terakhir. Program untuk menampilkan data array dapat dilihat dalam potongan program di bawah ini.
int i;
int data[5]={1,5,8,9,8};
int banyakdata=5;
for(i=0;i<banyakdata;i++)
{
printf("data[%d]: %i\n",i,data[i]);
}
Jika ingin menggunakan pointer, maka programnya adalah :
int i,*p;
int data[5]={1,5,8,9,8};
int banyakdata=5;
p=data;
for(i=0;i<banyakdata;i++)
{
printf("data[%d]: %i\n",i,*(p+i));
}
data[1]=5;
data[2]=8;
data[3]=9;
data[4]=8;
Karena proses menampilkan data array ini akan sangat banyak dipakai, maka sebaiknya proses ini dibuat dalam bentuk sebuah fungsi yang memiliki parameter/argumen berupa array dan banyaknya data. Fungsi tersebut adalah :
void view_array(int data[],int banyakdata)
{
int i;
for(i=0;i<banyakdata;i++)
{
printf("%4d ",data[i]);
}
}
atau jika parameternya ingin berupa pointer
void view_array(int *data,int banyakdata)
{
int i;
for(i=0;i<banyakdata;i++)
{
printf("%4d ",*(data+i));
}
}
Setelah fungsi tersebut dibuat, maka jika ingin menampilkan data array, akan lebih mudah. Perhatikan contoh di bawah ini.
int a[5]={2,5,6,7,8};
int banyakdata=5;
view_array(a,3); printf("\n");
printf("Seluruh Isi A adalah : ");
Pertemuan ke 11- 16:
PROCEDURE DAN FUNCTION
Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang
berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk
memproses sebagian dari pekerjaan program utama.
PROCEDURE
Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur.
Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan
judul prosedurnya.
Prosedur banyak digunakan pada program yang terstruktur, karena :
1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang
rumit menjadi program-program bagian yang lebih sederhana dalam bentuk
prosedur-prosedur.
2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam
prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.
Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block.
Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.
Bentuk Umum header suatu procedure adalah :
PROCEDURE nama;
Atau
PROCEDURE nama (formal parameter : jenis);
Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus
dituliskan pada bagian deklarasi.
Contoh : Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar
diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut :
PROCEDURE maksimum;
VAR max : integer;
BEGIN
IF a > b THEN max := a ELSE max := b;
IF c > max THEN max := c;
WRITELN(max);
END.
Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan sebagai berikut :
PROGRAM contoh_1; HEADER program utama
PROCEDURE maksimum;
VAR max : integer;
BEGIN
IF a>b THEN max := a ELSE max := b; deklarasi program
IF c>max THEN max := c; utama
WRITELN(max);
END;
BEGIN
READLN(a,b,c);
Maksimum statement program utama
END.
Contoh 2 :
PROGRAM CONTOH_2;
VAR p,l,t,vol,panj : real;
PROCEDURE kotak;
VAR v,pl : real;
BEGIN
v := p * l * t ;
pl := p + 2.0 * t;
writeln(v,pl);
END;
BEGIN
writeln(‘panjang’ : 10,’lebar’ : 10,’tinggi’ : 10);
readln(p,l,t);
kotak;
END.
Identifier yang dideklarasikan dalam suatu blok program hanya berlaku pada blok dimana identifier tersebut didefinisikan.
Contoh :
1. PROGRAM p;
VAR x : real;
PROCEDURE pl;
VAR y : integer;
begin
………..; daerah berlakunya y daerah
………..; berlakunya x
end;
begin
………..;
………..;
end.
y → variabel global
2. Program P ;
Var x,y : real; y (real) berlaku disemua blok ……… program P, kecuali di P1
……… x (real) berlaku disemua
blok P, kecuali di P2
Procedure Pl ;
Var y : integer; hanya berlaku di P1 saja (lokal)
………..
Begin
………
………
End;
Procedure P2;
………
Begin
………..
………..
End;
Begin
………….
x := ……. x dan y yang dimaksud adalah x dan y real
y := ……. (variabel global)
…………
End.
PROCEDURE DENGAN PARAMETER
Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.
Contoh :
Prosedur Tanya_hitung;
Var X,Y :real;
Begin
Write (‘Nilai X ?’);
Readln(X);
Y:=X*X;
Writeln(‘Nilai Y = ‘,Y:6:2);
End;
Begin
Tanya_Hitung;
End.
Nilai X ? 5
Nilai Y = 25.00
Keterangan :
Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh :
Prosedur Tanya_hitung;
Var X,Y :real;
Begin
Write (‘Nilai X ?’);
Readln(X);
Y:=X*X;
End;
Begin
Tanya_Hitung;
Writeln(‘Nilai Y = ‘,Y:6:2);
End.
Hasilnya :
Error 31: Unknown identifier
Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara :
1. Dibuat bersifat global
Harus dideklarasikan di atas modul yang menggunakannya.
Procedure kesatu;
Begin
…….
……..
End; (*akhir dari procedure kesatu……*)
A,B : word;
Procedure kedua;
Begin
……..
……..
End; (*akhir dari procedure kedua*)
Procedure ketiga;
Begin
……..
……..
End; (*akhir dari procedure ketiga*)
Begin
……..
……..
End. (*akhir dari modul utama*)
Pada contoh diatas, variabel A dab B bersifat global untuk prosedur kedua, ketiga dan utama, tetapi tidak bersifat global untuk prosedur kesatu, sehingga prosedur kesatu tidak dapat menggunakan variabel-variabel tersebut.
Var
A,B : real;
Procedure kesatu;
Begin
…….
……..
End; (*akhir dari procedure kesatu……*)
Procedure kedua;
Begin
……..
End; (*akhir dari procedure kedua*)
Procedure ketiga;
Begin
……..
……..
End; (*akhir dari procedure ketiga*)
Begin
……..
……..
End. (*akhir dari modul utama*)
Pada contoh ini, variabel A dan B bersifat global untuk semua modul.
2. Dikirimkan sebagai parameter ke modul yang membutuhkannya.
Parameter yang dikirim dari modul utama ke modul prosedur disebut actual parameter, dan parameter yang ada dan dituliskan pada judul prosedur disebut formal parameter.
2.1 Pengiriman parameter secara nilai
Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur.
Perhatikan procedure berikut :
Procedure konversi;
begin
f := (5/9) * c + 32; f dan c variabel global, c sebagai input dan
writeln(c,f); f sebagai output.
end;
Procedure di atas dapat dipanggil dengan variabel yang berbeda, tetapi penulisannya harus diubah dengan menggunakan parameter sbb:
Procedure konversi (var f : real; c : real);
Begin
Writeln(c,f);
End;
Selanjutnya procedure di atas dapat dipanggil dengan parameter lain, misalnya :
konversi (x,y) ;
actual parameter
x dan y disebut sebagai actual parameter.
Pada eksekusinya x akan menggantikan c dan y akan menggantikan f.
x dan y ini dapat berupa :
- konstanta
- variabel
- procedure, atau
- fungsi
Contoh :
Procedure Hitung(A,B : integer);
Var C : integer;
Begin
C := A + B;
Writeln(‘Nilai C = ‘,C)
End;
Var X,Y : integer;
Begin
Write(‘Nilai X ? ‘);
Readln(X);
Write(‘Nilai Y ?’);
Readln(Y);
Hitung(X,Y);
End.
Nilai X ? 2
Nilai Y ? 3
Nilai C = 5
2.2 Pengiriman parameter secara acuan
Bila pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter .
Procedure hitung(Var A,B,C : integer);
Menunjukkan pengiriman parameter secara acuan.
Contoh :
Procedure Hitung(Var A,B,C : integer);
Begin
C := A + B;
End;
Var X,Y,Z : integer;
Begin
X := 2; Y:= 3;
Hitung(X,Y,Z);
Writeln(‘X = ‘,X,’ Y = ‘,Y,’ Z = ‘,Z);
End.
Hasilnya :
X = 2 Y = 3 Z = 5
Acuan Forward
Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya.
Contoh :
Procedure pro1(var I : integer); Forward;
Procedure pro2(var I : integer);
Begin
End;
Procedure pro1;
Begin
Writeln(‘prosedur pro’,I);
End;
Var I : integer;
Begin
I := 1; pro1(I);
I := 2; pro2(I);
End.
Hasilnya :
prosedur pro1
prosedur pro2
Prosedur Standar
Prosedur yang disediakan oleh Turbo Pascal :
1. Prosedur standar EXIT
Digunakan untuk keluar dari suatu blok.
2. Prosedur standar HALT
Digunakan untuk menghentikan proses program baik di program bagian maupun di program utama.
3. Prosedur standar MOVE
Bentuk umum : MOVE (Var source,dest; count : word);
Digunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variabel, sebagai berikut
FillChar(x;count :word;ch);
X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch sebanyak count byte.
FUNCTION
Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi.
Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr, succ dan sebagainya.
Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function. Sedangkan function yang akan bicarakan disini adalah fungsi yang kita buat sendiri.
Berbeda dengan procedure, function merupakan modul program yang menghasilkan suatu kuantitas.
Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang dihasilkan.
Secara umum bentuk header suatu function adalah :
FUNCTION nama : jenis hasil;
Atau FUNCTION nama (formal parameter : jenis ) : jenis_hasil;
Contoh :
1. Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di antara dua integer.
Function MAX (x,y : integer) : integer;
Begin
If x < y then MAX := y ;
Else MAX := x;
Selanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan menyatakan sebagai berikut :
P := MAX(a,b);
Z := MAX(a+b,a*b);
Q := MAX(MAX(a,b),c);
………
dsb.
2. Function LOG (x : real) : real;
Begin
LOG := ln (x) / ln (10.0);
End;
3. Function POWER (x,y : real) : real;
Begin
POWER := exp (y * ln (X))
End;
ab = POWER (a,b)
ba = POWER (b,a)
(p + q)r/s = POWER (p + q, r/s)
………..
dll
Contoh :
Function Hitung(Var A,B : integer): integer;
Begin
Hitung := A + B;
Var X,Y : integer;
Begin
Write(‘Nilai X ? ‘);
Readln(X);
Write(‘Nilai Y ? ‘);
Readln(Y);
Writeln;
Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
End.
Hasilnya :
Nilai X ? 2
Nilai Y ? 3
1 + 3 = 5
REKURSIF
Suatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. Artinya, fungsi atau prosedur tersebut dapat memanggil dirinya sendiri. Berikut ini sebuah contoh fungsi dan prosedur yang rekursif.
1. function faktorial (nilai : integer) : integer;
begin
if nilai <= 0 then faktorial := 1;
else faktorial := nilai * faktorial (nilai-1)
end;
Var
N : integer;
Begin
Readln(N);
Writeln(N,’ faktorial = ‘,faktorial(N):9:0);
End.
faktorial (4) = 4 * faktorial (3)
3 * faktorial (2)
2 * faktorial (1)
1 * faktorial (0)
1
= 4 * 3 * 2 * 1 * 1
= 24
2. Bilangan Fibonanci:
F (0) = 0
F (1) = 1
F (n) = F ( n-1 ) + F (n-2); untuk n >1
Function fibonacci ( n : integer ) : integer;
Begin
If n = 0 then fibonacci := 0
Else
If n := 1 then fibonacci := 1
Else fibonacci := fibonacci (n-1) + fibonacci (n-2);
End;
3. Procedure reverse ( num : integer );
Begin
If num < 10 then write(num)
Write(num mod 10);
Reverse(num div 10);
End;
End;
Fungsi Standar
1. Fungsi standar arutmatika
Fungsi standar ABS
Bentuk umum : ABS(x);Digunakan untuk memutlakkan suatu nilai yang ditunjukkan oleh argumen x.
Contoh :
Begin
X:=-2.3;
Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1);
End.
Fungsi standar EXP
Bentuk Umum : EXP(x:):real;
Digunakan untuk menghitung nilai pangkat dari bilangan e yaitu sebesar ex. Hasilnya berupa nilai real.
Fungsi standar LN Bentuk umum : LN(x):real;
Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x. Hasilnya berupa nilai real.
Fungsi standar INT
Digunakan untuk menghasilkan nilai integer dari x. hasil dari fungsi adalah tipe real dengan nilai yang berupa pembulatan ke bawah (nilai pecahan dibuang) dari nilai x.
Contoh :
Begin
X:=9.99;
Write(‘Nilai yang akan dibulatkan = ‘,X);
Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2);
End.
Hasil :
Nilai yang akan dibulatkan = 9.99
Nilai pembulatannya = 9.00
Fungsi standar FRAC
Bentuk umum : FRAC(x:):real;Digunakan untuk mendapatkan nilai pecahan dari argumen x. Argumen x dapat bernilai real maupun integer dan hasil dari fungsi adalah real.
Contoh :
Begin
X:=9.99;
Write(‘Nilai X = ‘,X,’ Nilai pecahannya = ‘,Frac(X):4:3);
End.
Hasilnya : Nilai X = 9.99 Nilai pecahannya = 0.990
Fungsi standar SQR
Bentuk umum : SQR(x);Digunakan untuk menghitung nilai pangkat kuadrat dari argumen x.
Contoh :
X :=2;
Write(‘Nilai X = ‘,X,’ Nilai kuadratnya = ‘,sqr(x));
End.
Hasilnya : Nilai X = 2 Nilai kuadratnya = 4
Fungsi standar SQRT
Bentuk umum : SQRT(x) : real;
Digunakan untuk menghitung nilai akar dari argumen x, hasilnya berupa real.
Fungsi standar PI, SIN, COS, ARCTAN
1. Fungsi Standar Transfer Digunakan untuk merubah suatu nilai ke bentuk nilai lain.
• Fungsi standar CHR
Bentuk umum : CHR(x:byte):char;
Digunakan untuk merubah nilai dari byte x ke bentuk karakter yang sesuai dengan kode ASCII.
Contoh :
X := 66;
Write(‘Nilai X = ‘,x,’ Nilai karakternya = ‘,CHR(X));
Hasilnya : Nilai X = 66 Nilai karakternya = B
• Fungsi standar ORD
Bentuk umum : ORD(x):longint;
Digunakan untuk merubah nilai x ke bentuk nilai longint yang sesuai dengan kode ASCII, merupakan kebalikan dari fungsi CHR.
Fungsi standar ROUND
Bentuk umum : ROUND(x:real):longint;
Digunakan untuk membulatkan nilai dari real x ke nilai longint yang terdekat. Bila nilai pecahan sama dengan atau lebih besar dari 0.5 akan dibulatkan ke atas, sedang kalau lebih kecil dari 0.5 akan dibulatkan ke bawah.
Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Round(10/3));
Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(20/3);
Hasilnya :
10 dibagi 3 hasil pembulatan terdekat adalah 3
20 dibagi 3 hasil pembulatan terdekat adalah 7
Fungsi standar TRUNC
Bentuk umum : TRUNC(x:real):longint;
Digunakan untuk membulatkan nilai dari real x ke nilai longint terkecil. Atau dengan kata lain membulatkan ke bawah.
Contoh :
Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Trunc(10/3));
Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Trunc(20/3);
Hasilnya :
10 dibagi 3 hasil pembulatan terdekat adalah 3
20 dibagi 3 hasil pembulatan terdekat adalah 6
1. Fungsi Standar Lainnya Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas : • Fungsi standar Hi, Lo, Swap
Fungsi standar Random
Bentuk umum : Random [(range :word)];
Digunakan untuk menghasilkan angka random berkisar dari nilai lebih besar atau sama dengan nol dan lebih kecil dari satu. Bila range tidak disebutkan, hasil dari fungsi ini adalah real, bila range disebutkan, hasilnya adalah word.
Fungsi standar SizeOf
Bentuk umum : SizeOf(x):word;
Digunakan untuk menunjukkan besarnya byte yang digunakan oleh suatu variabel x, hasilnya berupa nilai word.
Bentuk umum : UpCase(Ch:char):char;
Digunakan untuk merubah argumen suatu karakter yang ditunjukkan oleh Ch menjadi bentuk karakter huruf besar (upper case).
1.1. Fungsi Tanpa Parameter
Fungsi yang tanpa parameter berarti nilai balik yang akan dihasilkan merupakan nilai
yang sudah pasti. Karena tidak menggunakan parameter, maka hasil fungsi tersebut tidak
dapat diatur dari modul yang menggunakannya, karena tidak ada parameter yang dikirimkan.
Fungsi tanpa parameter jarang dipergunakan.
Contoh program :
Type Huruf = string [6] ;
Function Garis : Huruf ;
Begin
Garis : = ‘======’ ;
End ;
Begin
Writeln (Garis) ; Writeln (‘Pascal’) ; Writeln (Garis) ;
End.
Output program :
======
Pascal
======
Keterangan program :
Fungsi “Garis” hanya menghasilkan nilai yang sudah pasti yaitu : “======”.
1.2.
Parameter Dalam Fungsi
Parameter dalam fungsi dapat dikirimkan secara nilai atau secara acuan.
Contoh penulisan parameter dengan pengiriman secara nilai :
Function Hitung (A, B : integer ) : integer ;
Contoh program :
Function Terbesar(X, Y : real ) : real ;
Begin
If X > Y Then
Terbesar : = X
Else
Terbesar : = Y ;
End ;
Var
Write (‘Nilai pertama =’ ) ; readln (Nilai1) ;
Write (‘Nilai kedua = ‘ ) ; readln (Nilai2) ;
Writeln (‘Nilai terbesar adalah =’, Terbesar (Nilai1, Nilai2) : 9 : 3 ) ;
End.
Output program :
Nilai pertama = 12.356
Nilai kedua = 55.182
Nilai terbesar adalah = 55.182
Penulisan judul fungsi yang menggunakan parameter dengan pengiriman secara acuan adalah
dengan menambahkan kata cadangan var.
Contoh penulisan :
Function Hitung ( Var A, B : integer ) : integer ;
Pengiriman parameter secara acuan akan mengakibatkan perubahan nilai parameter di fungsi
juga merubah nilai parameter di modul yang mengirimkannya. Fungsi yang menggunakan
pengiriman parameter secara acuan ini mirip dengan prosedur, yaitu parameter yang
dikirmkan secara acuan tersebut dapat di manfaatkan sebagai hasil balik.
Fungsi Pangkat
Pascal tidak menyediakan fungsi untuk perpangkatan tinggi, yang ada hanya fungsi standar
Sqr, yaitu pemngkatan kuadrat saja. Bila akan melakukan perpangkatan lebih dari pangkat
dua, maka harus dibuat program tersendiri.
Fungsi Memanggil Dirinya Sendiri
Proses fungsi memanggil dirinya sendiri juga merupakan proses recursion.
Contoh program :
Function Faktorial (Nilai : integer ) : real ;
Begin
If Nilai = 0 Then
Faktorial : = 1
Else
Faktorial : = Nilai * Faktorial (Nilai – 1 ) ;
End ;
Var
N : integer ;
Begin
Write (‘Berapa factorial ?’) ;
Readln (N) ;
End.
Output program :
Berapa factorial ? 5
5 faktorial = bbbbbb120
ket : b = blank
Fungsi Memanggil Fungsi Yang Lain
Fungsi yang di panggil letaknya harus berada di atas fungsi yang memanggilnya.
Contoh program :
Function Fungsi2 (Y : integer) : integer ;
Begin
Fungsi2 : = Y * 2 ;
End ;
Function Fungsi1 ( X : integer ) : integer ;
Begin
Fungsi1 : = Fungsi2 (X) + 5 ;
End ;
Begin