Translate to your languages

Selamat Datang . Suatu kehormatan bagi saya atas kunjungan ini. Saya sangat berharap kunjungan berikutnya.

21 Maret 2011

RECORD (REKAMAN)

RECORD
Pascal menyediakan tipe data terstruktur yang disebut record. Dengan tipe data record, dapat dikumpulkan beberapa item data yang masing-masing mempunyai tipe data berbeda-beda. Masing – masing item data disebut field. Record terdiri dari kumpulan field yang dapat berbeda tipe.
Deklarasi Record :

Tipe record : record
   Daftar field
    ---
    ---
    ---
   End;

Contoh :

Type
    Lgn = record ;
        Kode : integer ;
        Nama : string[35] ;
        Alamat : string[45] ;
        Piutang : real ;
    End ;
Var
    Langganan : Lgn;
Menggunakan Tipe Data Record

Tipe-tipe komponen field dari record dapat dipergunakan dengan cara menuliskan :
Pengenal-record.pengenal-field[.pengenal-field]
Contoh :
Langganan.Nama := ‘ Udin Jabrig ‘ ;

Statemen WithPenulisan pengenal-field seperti contoh diatas dapat ditulis lebih singkat, sehingga penulisannya menjadi :
Nama := ‘ Udin Jabrig ‘ ;
Ini dapat dilakukan dengan menggunakan statemen with yang menyebutkan pengenal-recordnya, sehingga penggunaan field-field selanjutnya sudah tidak perlu menyebutkan pengenal recordnya kembali.

Contoh :

Tipe Data Record Dengan Field Tipe Record
Tipe data record dapat juga mempunyai field berupa tipe data record yang lainnya. Misalkan seperti item-item ini :
1. Nama pegawai
2. Tanggal masuk
    a. hari
    b. bulan
    c. tahun
3. Alamat pegawai
    a. Jalan
    b. Kota

Contoh :
Record Bervariasi
Dapat dibuat suatu record yang mempunyai field yang tidak pasti atau bervariasi (variant record). Dalam variant record, dapat mengandung suatu field yang bervariasi tergantung dari suatu kondisi. Bila didalam suatu variant record terdapat field yang tetap, maka field yang bervariasi letaknya harus setelah field yang tetap.
Contoh :
Penjelasan contoh :
Field yang bervariasi dalam record tergantung dari suatu kondisi Case. Tipe field tag yang dipergunakan adalah suatu tipe data scalar Tipebacaan yang mempunyai2 nilai konstanta, yaitu : Bukuteks dan Majalah. Bila pengenal tipe bernilai Majalah, maka field variant yang akan digunakan adalam nomor. Bila pengenal tipe bernilai Bukuteks, maka field variant yang akan digunakan adalah Pengarang dan Edisi. Jadi field yang digunakan akan bervariasi tergantung dari suatu kondisi.

14 Maret 2011

ARRAY

Larik / array adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama.

1.1 Deklarasi Array
Array yang akan dipergunakan harus di deklarasikan terlebih dahulu. Deklarasi dari Array diawali dengan kata cadangan Array diikuti oleh tipe index yang diletakkan diantara tanda “ [ ] ” diikuti lagi oleh kata cadangan of dan tipe arraynya.
Array dapat bertipe sederhana byte, word, integer, real, boolean, char, string dan tipe scalar atau subrange.
Contoh:
Var
X : array [ 1..100 ] of integer ;
Larik X dideklarasikan sebagai larik tipe integer dengan jumlah elemen maksimum 100 elemen, dimana nilai elemen larik ini harus berisi nilai integer.
Misalkan :
X [1] : = 18 ;
X [2] : = 5 ;
Bila nilai elemen ke-1 dari larik X akan ditampilkan, dapat dipergunakan perintah :
Writeln ( x[1] ) ;

1.2 Deklarasi Tipe Index Subrange Integer
Tipe index subrange integer sebagai berikut :
Var NilaiHuruf : array [1..5] of char ;
Nilai [1..5] inilah yang dimaksud dengan index subrange integer.
Index dari larik diatas dapat dideklarasikan terlebih dahulu di bagian deklarasi tipe :

Type
Jangkauan = 1..5 ; {tipe subrange integer}
Var
NilaiHuruf : array [Jangkauan] of char ;
Begin


end.

1.3 Deklarasi Tipe Index Subrange Byte
Kalau index dari larik tidak sampai dengan 255, maka index dari larik ini dapat dideklarasikan dengan tipe byte.
Var
X : array [0..255] of real ;
Karen anilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini dapat ditulis :
Var
X : array [byte] of real ;

1.4 Deklarasi Tipe Index Subrange Word
Jika jangkauan index dari 0 sampai 65525, maka index dari larik dapat dideklarasikan dengan tipe word.
Var
X : array [byte] of word ;

1.5 Deklarasi Tipe Index Subrange Boolean
Index larik yang bertipe Boolean, hanya mempunyai maksimum 2 buah elemen saja.
Type
Keterangan = string [11] ;
Var
X : array [Boolean] of keterangan ;

1.6 Deklarasi Tipe Index Subrange Char
Tipe char adalah tipe subrange yang mempunyai nilai sebanyak 256 buah ( 0 – 255 )sesuai dengan urutan kode ASCII.
Var
X : array [char] of integer ;

1.7 Deklarasi Tipe Index Skalar
Index dari larik dapat berupa tipe scalar atau enumerated.
Contoh program:

Var
Jumlah : array [(Jan, Peb, Mar)] of integer ;
Begin
Jumlah[Jan] : = 125 ;
Jumlah{Peb] : = 75 ;
Jumlah[Mar] : = 18 ;
Writeln ( ‘Jumlah untuk bulan maret = ‘, Jumlah{Mar});
End.
Output program :
Jumlah untuk bulan Maret = 18
Contoh diatas dapat ditulis :
Type
Bulan = (Jan, Peb, Mar) ;
Var
Jumlah : array [Bulan] of integer ;

1.8 Deklarasi konstanta Larik
Larik tidak hanya dapat berupa suatu variable yang dideklarasikan di bagian deklarasi variable, tetapi juga dapat berupa suatu konstanta yang dideklarasikan dibagian deklarasi konstanta.
Contoh program :

Const
X : array [1..5] of integer = (6, 25, 375, 5, 2) ;
Var
I : word ;
Begin
For I : = 1 to 5 do
Writeln ( ‘Nilai konstanta larik ke ‘, I, ‘=’, X[I] ) ;
End.
Output program :
Nilai Konstanta larik ke 1 = 6
Nilai Konstanta larik ke 2 = 25
Nilai Konstanta larik ke 3 = 375
Nilai Konstanta larik ke 4 = 5
Nilai Konstanta larik ke 5 = 2

1.9 String Sebagai Larik Tipe Char
String dapat dianggap sebagai suatu larik tipe char dengan index dari 0 sampai dengan panjang dari string yang di definisikan.
Contoh program :

Var
I : word ;
Nama : string [255] ;
Begin
Write ( ‘Nama Anda ?’ ) ; readln ( Nama ) ;
Writeln ;
Writeln ( ‘Nama Anda kalau dibaca terbalik adalah : ‘ ) ;
For I : = ord (Nama [0] ) down to 1 do
Write (Nama [I] ) ;
End.

Output program :
Nama Anda ? Dita
Nama Anda kalau dibaca terbalik adalah :
atid

1.10 Larik Dimensi Banyak
Larik dapat juga berdimensi lebih dari satu yang disebut dengan larik dimensi banyak, yang dapat berdimensi dua, dimensi tiga dan seterusnya.
Larik dimensi 2 mewakili suatu bentuk table atau matrik, yaitu index yang pertama dapat menunjukkan baris dan index kedua dapat menunjukkan kolom dari table atau metric.
Bentuk Umum :
Nama_larik = array [tipe index1] of array [tipe index2] of tipe larik
Atau
Nama_larik = array [tipe index1, tipe index2] of tipe larik
Contoh program :

Var
Tabel : array [1..3, 1..2] of byte ;
I, J : byte ;
Begin
Tabel[1,1] : = 5 ;
Tabel[1,2] : = 25 ;
Tabel[2,1] : = 200 ;
Tabel[2,2] : = 22 ;
Tabel[3,1] : = 75 ;
Tabel[3,2] : = 50 ;
For I : = 1 to 3 do
Begin
For J : = 1 to 2 do
Write ( table [I,J] : 10 ) ;
Writeln ;
End ;
End.

Output program :
5 25
200 22
75 50

1.11 Parameter Larik
Larik dapat digunakan sebagai parameter yang dikirimkan baik secara nilai atau secara acuan ke prosedur atau ke fungsi. Prosedur yang menggunakan parameter berupa larik harus dideklarasikan didalam judul prosedur yang menyebutkan parameternya bertipe larik.
Contoh program :

Type
Larik = array [1..50, 1..50] of real ;
Var
I, J, K : byte ;
Procedure inverse (Var X : Larik ; N : byte ) ;
….
….
Begin
….

end.

function

Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi.
Bentuk umum :
FUNCTION identifier (daftar parameter) : type ;
Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri dengan kata cadangan End dan titik koma.
Perbedaan fungsi dengan prosedur adalah :
- Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya ( kalau pada prosedur pada parameter yang dikirimkan secara acuan).
- Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya. Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variable yang lainnya.
- Pada prosedur, nama prosedur tidak dapat digunakan lagsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.
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.
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 ;




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.
1.3 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.
1.4 Fungsi Memanggil Dirinya Sendiri
Proses fungsi memanggil dirinya sendiri juga merupakan proses recursion.








1.5 Fungsi Memanggil Fungsi Yang Lain
Fungsi yang di panggil letaknya harus berada di atas fungsi yang memanggilnya.


1.6 Acuan Forward Pada Fungsi
Fungsi dapat dideklarasikan terpisah dengan bloknya. Deklarasi fungsi yang terpisah dengan blok fungsinya dipergunakan kata cadangan Forward dan blok fungsinya juga di deklarasikan ulang, tetapi tidak perlu menyebutkan parameternya.
1.7 Fungsi Tersarang
Merupakan fungsi yang letaknya berada di dalam fungsi yang lainnya.


1.8 Fungsi Standar
1.8.1 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.

1.8.2 Fungsi Standar Transfer
Digunakan untuk merubah suatu nilai ke bentuk nilai yang lain. Yang tersedia adalah fungsi standar Chr, Ord, Round dan trunc.
Penjelasan :
- 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.
1.8.3 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.
- SizeOf (x) : 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.

07 Maret 2011

PROCEDURE


This post was published to soni wibawa at 15:12:13 07/03/2011
PROCEDURE


Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian).
Diawali dengan kata cadangan “Procedure” didalam bagian deklarasi prosedur. Prosedur banyak digunakan pada program yang terstruktur karena :
·         Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
·         Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

Bentuk Umum :
PROGRAM judul_program ;
PROCEDURE judul_prosedur ;
Begin
Statement prosedur ;
End ;
Begin
Statement program utama ;
end.
1.1 Parameter Dalam Prosedur
Nilai didalam modul program Pascal sifatnya adalah local, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.

Contoh program :
Procedure 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.
Keterangan contoh program :
Bila program dikompilasi, akan di deteksi kesalahan oleh compiler, karena variable Y yang sifatnya local di procedure Tanya_hitung digunakan pada program utama.

Agar nilai-nilai variable dapat digunakan di modul lainnya yang membutuhkan, maka dapat dilakukan dengan beberapa cara, yaitu :
- Dibuat bersifat global.
Harus di deklarasikan diatas modul yang akan menggunakannya.
Contoh :
Procedure kesatu ;
Begin
End ;
Var
A, B : word ;
Procedure kedua ;
Begin
End ;
Procedure ketiga ;
Begin
End ;
Begin { program utama }
End.

Keterangan contoh :
Variabel A dan B dapat digunakan untuk modul Procedure kedua dan ketiga serta modul/program utama, tetapi tidak bersifat global untuk procedure kesatu.
- Dikirimkan sebagai parameter ke modul yang membutuhkannya.
Parameter yang dikirmkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Didalam pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).

- Dikirimkan sebagai parameter ke modul yang membutuhkannya. Parameter yang dikirmkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Didalam pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).


1.1.1 Pengiriman Parameter Secara Nilai
Bila parameter dikirimkan secara nilai nilai, parameter formal di prosedur akan berisi nilai yang dikirmkan yang kemudian bersifat local di prosedur. Bila nilai parameter formal di prosedur berubah, tidak akan mempengaruhi nilai parameter nyata ( nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak dikirimkan balik dari parameter formal ke parameter nyata.
Parameter – parameter yang digunakan dengan pengiriman secara nilai ini disebut dengan parameter nilai ( value parameter ).

Contoh program :
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.

Output program :
Nilai X = 2
Nilai Y = 3
Nilai C = 5
Penjelasan program :
- prosedur dimulai dengan deklarasi prosedur dengan judul prosedur hitung. Variable A dan B adalah parameter formal dan integer adalah tipe parameternya.
- Variable local yang hanya dipergunakan di prosedur dan tidak termasuk parameter formal (parameter nilai), harus didefinisikan sendiri, yaitu : variable C
- Hubungan antara parameter formal di prosedur dengan parameter nyata di modul utama adalah : nilai parameter nyata X dan Y di modul utama dikirimkan ke parameter formal A dan B di prosedur. Dengan demikian nilai parameter A dan B diprosedur akan berisi nilai yang sama dengan parameter X dan Y di modul utama.

1.1.2 Pengiriman Parameter Secara Acuan
Bila pengiriman parameter secara acuan, maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter nyata. Parameter-parameter ini disebut dengan variable parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, sebagai berikut :
PROCEDURE hitung (VAR A, B, C : integer ) ;
Contoh program :
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.

Output program :
X = 2 Y = 3 Z = 5
Penjelasan program :
- pengiriman parameter secara acuan merupakan pengiriman dua arah, bolak-balik, sehingga perubahan nilai di parameter formal akan mempengaruhi nilai parameter nyata juga. Pada contoh, nilai parameter nyata Z akan mengikuti perubahan nilai dari parameter formal C.

1.1.3 Pengiriman Parameter Sebagian Secara Nilai, Sebagian Acuan
Pengiriman parameter dapat dicampur sebagian secara nilai dan sebagian secara acuan dalam suatu prosedur. Parameter yang hanya dibutuhkan pada prosedur saja dapat dikirimkan secara nilai dan yang ingin dikirimkan balik dapat dilakukan secara acuan, sebagai berikut :
PROCEDURE Hitung ( A, B : integer ; Var C : integer ) ;
Contoh program :
Procedure Hitung ( A, B : integer ; Var 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.
Output program :
X = 2 Y = 3 Z = 5

1.2 Prosedur Memanggil Prosedur Yang Lain
Prosedur dapat memanggil prosedur yang lainnya.
Contoh program :
Procedure Pro1 ( X1 : integer ) ;
Begin
Writeln ( ‘Nilai X = ‘, X1, ‘ada di prosedur Pro1’ ) ;
End ;
Procedure Pro2 (X2 : integer ) ;
Begin
Writeln ( ‘Nilai X = ‘, X2, ‘ada diprosedur Pro2’ ) ;
Pro1 (X2) ;
End ;

Var
X : integer ;
Begin
X : = 5 ;
Pro2 ( X ) ;
End.
Output program :

Nilai X = 5 ada diprosedur Pro2
Nilai X = 5 ada diprosedur Pro1

1.3 Prosedur Tersarang
Adalah prosedur yang berada didalam prosedur yang lainnya.
Bentuk Umum :
Program
Procedure
Procedure
Begin
End ;
Begin
End ;
Begin
end .
1.4 Prosedur Memanggil Dirinya Sendiri
Merupakan prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Tidak semua bahasa menyediakan kemampuan untuk melakukan proses recursion, tetapi pascal dapat. Walaupun proses ini merupakan algoritma yang baik, tetapi membutuhkan banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkannya.
Contoh program :
Var
I : integer ;
Procedure Rekursi ;
Begin
Writeln ( ‘Hallo saya Pascal ‘ ) ;
I : = I + 1 ;
If I < 10 Then
Rekursi ;
End ;

Begin
I : = 1 ;
Rekursi ;
End.
1.5 Acuan Forward
Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya. Judul prosedur yang berisi parameter terpisah ini merupakan judul yang semestinya dan di deklarasikan dengan menambahkan kata cadangan “ Forward ”. Blok prosedur ini letaknya terpisah dari judulnya, juga diawali dengan judul prosedur, tetapi hanya mencantumkan judul atau nama prosedurnya saja, tanpa mencantumkan parameter formalnya.
Contoh program :
Procedure Pro1 (Var I : integer ) ; Forward ;
Procedure Pro2 (Var I : integer ) ;
Begin
Writeln ( ‘ Prosedur PRO’, I ) ;
End ;
Procedure Pro1 ;
Begin
Writeln ( ‘Prosedur PRO’, I ) ;
End ;

Var
I : integer ;
Begin
I : = 1 ;
Pro1 ( I ) ;
I : = 2 ;
Pro2 ( I ) ;
End.
Output :

Prosedur PRO1
Prosedur PRO2

1.6 Prosedur Standar
1.6.1 Prosedur Standar Exit
Digunakan untuk keluar dari suatu blok. Bila diletakkan pada program bagian, prosedur standar exit akan menyebabkan proses di program bagian berhenti dan proses kembali ke blok program yang memanggilnya. Bila berada di program utama, menyebabkan proses program berhenti.
1.6.2 Prosedur Standar Halt
Digunakan untuk menghentikan proses program baik di program bagian maupun program utama.
1.6.3 Prosedur Standar Move
Bentuk umum :
Move ( var source, dest; count : word )
Digunakan untuk menyalinkan suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
Contoh program :

Var
Sumber, Tujuan : string [5] ;
Sejumlah : word ;
Begin
Sumber : = ‘ABCDE’ ;
Tujuan : = ‘FGHIJ’ ;
Sejumlah : = 4 ;
Move (Sumber, Tujuan, Sejumlah ) ;
Writeln (Sumber : 7, Tujuan : 7 ) ;
End.
Output program :
ABCDE ABCIJ

1.6.4 Prosedur Standar FillChar
Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variable, sbb :
FillChar ( x ; count : word ; ch )
X adalah variable yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal ch sebanyak count byte.

PROCEDURE

Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian).

Diawali dengan kata cadangan "Procedure" didalam bagian deklarasi prosedur. Prosedur banyak digunakan pada program yang terstruktur karena :

  • Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
  • Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.


 

Bentuk Umum :

PROGRAM judul_program ;

PROCEDURE judul_prosedur ;

Begin

Statement prosedur ;




End ;

Begin

Statement program utama ;




end.

1.1 Parameter Dalam Prosedur

Nilai didalam modul program Pascal sifatnya adalah local, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.

Contoh program :

Procedure 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.

Keterangan contoh program :

Bila program dikompilasi, akan di deteksi kesalahan oleh compiler, karena variable Y yang sifatnya local di procedure Tanya_hitung digunakan pada program utama.


 

Agar nilai-nilai variable dapat digunakan di modul lainnya yang membutuhkan, maka dapat dilakukan dengan beberapa cara, yaitu :

- Dibuat bersifat global.

Harus di deklarasikan diatas modul yang akan menggunakannya.

Contoh :

Procedure kesatu ;

Begin


End ;

Var

A, B : word ;

Procedure kedua ;

Begin


End ;

Procedure ketiga ;

Begin


End ;

Begin { program utama }


End.


 

Keterangan contoh :

Variabel A dan B dapat digunakan untuk modul Procedure kedua dan ketiga serta modul/program utama, tetapi tidak bersifat global untuk procedure kesatu.

- Dikirimkan sebagai parameter ke modul yang membutuhkannya.

Parameter yang dikirmkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Didalam pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).


 

- Dikirimkan sebagai parameter ke modul yang membutuhkannya. Parameter yang dikirmkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Didalam pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).


 


 

1.1.1 Pengiriman Parameter Secara Nilai

Bila parameter dikirimkan secara nilai nilai, parameter formal di prosedur akan berisi nilai yang dikirmkan yang kemudian bersifat local di prosedur. Bila nilai parameter formal di prosedur berubah, tidak akan mempengaruhi nilai parameter nyata ( nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak dikirimkan balik dari parameter formal ke parameter nyata.

Parameter – parameter yang digunakan dengan pengiriman secara nilai ini disebut dengan parameter nilai ( value parameter ).


 

Contoh program :

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.


 

Output program :

Nilai X = 2

Nilai Y = 3

Nilai C = 5

Penjelasan program :

- prosedur dimulai dengan deklarasi prosedur dengan judul prosedur hitung. Variable A dan B adalah parameter formal dan integer adalah tipe parameternya.

- Variable local yang hanya dipergunakan di prosedur dan tidak termasuk parameter formal (parameter nilai), harus didefinisikan sendiri, yaitu : variable C

- Hubungan antara parameter formal di prosedur dengan parameter nyata di modul utama adalah : nilai parameter nyata X dan Y di modul utama dikirimkan ke parameter formal A dan B di prosedur. Dengan demikian nilai parameter A dan B diprosedur akan berisi nilai yang sama dengan parameter X dan Y di modul utama.


 

1.1.2 Pengiriman Parameter Secara Acuan

Bila pengiriman parameter secara acuan, maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter nyata. Parameter-parameter ini disebut dengan variable parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, sebagai berikut :

PROCEDURE hitung (VAR A, B, C : integer ) ;

Contoh program :

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.


 

Output program :

X = 2 Y = 3 Z = 5

Penjelasan program :

- pengiriman parameter secara acuan merupakan pengiriman dua arah, bolak-balik, sehingga perubahan nilai di parameter formal akan mempengaruhi nilai parameter nyata juga. Pada contoh, nilai parameter nyata Z akan mengikuti perubahan nilai dari parameter formal C.


 

1.1.3 Pengiriman Parameter Sebagian Secara Nilai, Sebagian Acuan

Pengiriman parameter dapat dicampur sebagian secara nilai dan sebagian secara acuan dalam suatu prosedur. Parameter yang hanya dibutuhkan pada prosedur saja dapat dikirimkan secara nilai dan yang ingin dikirimkan balik dapat dilakukan secara acuan, sebagai berikut :

PROCEDURE Hitung ( A, B : integer ; Var C : integer ) ;

Contoh program :

Procedure Hitung ( A, B : integer ; Var 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.

Output program :

X = 2 Y = 3 Z = 5


 

1.2 Prosedur Memanggil Prosedur Yang Lain

Prosedur dapat memanggil prosedur yang lainnya.

Contoh program :

Procedure Pro1 ( X1 : integer ) ;

Begin

Writeln ( 'Nilai X = ', X1, 'ada di prosedur Pro1' ) ;

End ;

Procedure Pro2 (X2 : integer ) ;

Begin

Writeln ( 'Nilai X = ', X2, 'ada diprosedur Pro2' ) ;

Pro1 (X2) ;

End ;

 

Var

X : integer ;

Begin

X : = 5 ;

Pro2 ( X ) ;

End.

Output program :

 

Nilai X = 5 ada diprosedur Pro2

Nilai X = 5 ada diprosedur Pro1


 

1.3 Prosedur Tersarang

Adalah prosedur yang berada didalam prosedur yang lainnya.

Bentuk Umum :

Program

Procedure

Procedure

Begin




End ;

Begin




End ;

Begin




end .

1.4 Prosedur Memanggil Dirinya Sendiri

Merupakan prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Tidak semua bahasa menyediakan kemampuan untuk melakukan proses recursion, tetapi pascal dapat. Walaupun proses ini merupakan algoritma yang baik, tetapi membutuhkan banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkannya.

Contoh program :

Var

I : integer ;

Procedure Rekursi ;

Begin

Writeln ( 'Hallo saya Pascal ' ) ;

I : = I + 1 ;

If I < 10 Then

Rekursi ;

End ;


 

Begin

I : = 1 ;

Rekursi ;

End.

1.5 Acuan Forward

Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya. Judul prosedur yang berisi parameter terpisah ini merupakan judul yang semestinya dan di deklarasikan dengan menambahkan kata cadangan " Forward ". Blok prosedur ini letaknya terpisah dari judulnya, juga diawali dengan judul prosedur, tetapi hanya mencantumkan judul atau nama prosedurnya saja, tanpa mencantumkan parameter formalnya.

Contoh program :

Procedure Pro1 (Var I : integer ) ; Forward ;

Procedure Pro2 (Var I : integer ) ;

Begin

Writeln ( ' Prosedur PRO', I ) ;

End ;

Procedure Pro1 ;

Begin

Writeln ( 'Prosedur PRO', I ) ;

End ;

 

Var

I : integer ;

Begin

I : = 1 ;

Pro1 ( I ) ;

I : = 2 ;

Pro2 ( I ) ;

End.

Output :

 

Prosedur PRO1

Prosedur PRO2


 

1.6 Prosedur Standar

1.6.1 Prosedur Standar Exit

Digunakan untuk keluar dari suatu blok. Bila diletakkan pada program bagian, prosedur standar exit akan menyebabkan proses di program bagian berhenti dan proses kembali ke blok program yang memanggilnya. Bila berada di program utama, menyebabkan proses program berhenti.

1.6.2 Prosedur Standar Halt

Digunakan untuk menghentikan proses program baik di program bagian maupun program utama.

1.6.3 Prosedur Standar Move

Bentuk umum :

Move ( var source, dest; count : word )

Digunakan untuk menyalinkan suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.

Contoh program :

 

Var

Sumber, Tujuan : string [5] ;

Sejumlah : word ;

Begin

Sumber : = 'ABCDE' ;

Tujuan : = 'FGHIJ' ;

Sejumlah : = 4 ;

Move (Sumber, Tujuan, Sejumlah ) ;

Writeln (Sumber : 7, Tujuan : 7 ) ;

End.

Output program :

ABCDE ABCIJ


 

1.6.4 Prosedur Standar FillChar

Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variable, sbb :

FillChar ( x ; count : word ; ch )

X adalah variable yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal ch sebanyak count byte.