• Tidak ada hasil yang ditemukan

Bambang Heru Susanto Departemen Teknik Kimia Universitas Indonesia

N/A
N/A
Protected

Academic year: 2021

Membagikan "Bambang Heru Susanto Departemen Teknik Kimia Universitas Indonesia"

Copied!
20
0
0

Teks penuh

(1)

October 2006

Bambang Heru Susanto

Departemen Teknik Kimia

Universitas Indonesia

(2)

1.

1.

1.

1. Pengenalan Pascal

Pengenalan Pascal

Pengenalan Pascal

Pengenalan Pascal

Contoh Program Pascal program Hallo;

(*Program untuk menampilkan tulisan “Hallo, World” di layar*)

var i:integer; begin writeln(‘Hallo, World’); end.

Penjelasan

1. program Hallo;

program menandai awal dari program yang bernama Hallo.

2. (* Program untuk menampilkan tulisan “Hallo, World” di layar *) Bagian yang berada dalam (* dan *) merupakan komentar dan tidak akan dieksekusi pada saat kompilasi maupun runtime. Selain pasangan (* dan *) komentar juga dapat dituliskan dalam pasangan { dan }. Contohnya { Ini juga komentar }.

3. var

Kata kunci var untuk penanda variabel apa saja yang akan digunakan dalam program. 4. i : integer;

Deklarasi variabel, sebelum dapat dipakai, setiap variabel harus dideklarasikan terlebih dahulu. Cara pendeklarasian variabel dijelaskan kemudian.

5. begin

Penanda bagian awal blok algoritma program. 6. writeln(‘Hallo, World’);

Prosedur untuk menulis ke layar. Prosedur akan dijelaskan kemudian. 7. end.

Akhir blok Algoritma Program.

Identifier

Identifier ialah nama pengenal variabel, kostanta, nama fungsi, atau prosedur. Penulisan identifier harus diawali alphabet (A..Z, a..z) atau underscore(“_”). Identifier pada Pascal tidak case sensitive, sehingga numOfPoint adalah variabel yang sama dengan NUMOFPOINT atau numofpoint.

2.

2.

2.

2. Tipe

Tipe

Tipe

Tipe Data

Data

Data Dasar

Data

Dasar

Dasar

Dasar

Data ialah suatu nilai yang akan disimpan, dimanipulasi atau digunakan dalam program. Jenis – Jenis Data pada program :

o Konstanta, yaitu data yang nilainya didefinisikan sekali dan tidak dapat diubah – ubah selama program berjalan.

(3)

Tipe Data

Tipe Data ialah representasi suatu data dalam komputer. Tiap tipe memiliki beberapa atribut : o Nama

Integer, float, character , string o Domain harga

[A..Z, a..z, 0..9] o Cara penulisan literal

233, ‘a’, “hallo” o Operator

+,-,=,*,/

Deklarasi Data

Pada bahasa pascal, data harus dideklarasikan terlebih dahulu sebelum dapat digunakan. Pendeklarasian konstanta dilakukan didalam blok const dan variabel dilakukan di dalam blok var. Cara pendeklarasian konstanta yaitu dengan kata kunci const diikuti dengan satu atau lebih data konstanta dengan format

<nama> = <nilai>;

Cara pendeklarasian variabel yaitu dengan kata kunci var diikuti dengan satu atau lebih data variabel dengan format

<nama> : <tipe>;

Contoh deklarasi data:

const maxIdx = 10; minIdx = 1; var i : integer; nama : string;

Tipe Data Dasar pada Pascal

1. Integer

Integer merepresentasikan bilangan bulat. Rangenya bergantung pada saat deklarasi sebagai apa.

Type Size (Byte) Range

shortint 1 -128..+127 byte 1 0..255 integer 2 -32768..+32767 word 2 0..65535 longint 4 -232..232-1 Operator aritmetik

Operator contoh Fungsi

+ a + b Mengahasilkan penjumlahan nilai a dan nilai b.

(4)

- a – b Mengahasilkan pengurangan nilai a dengan nilai b.

* a * b Mengahasilkan perkalian nilai a dengan nilai b.

/ a / b Mengahasilkan pembagian nilai a dengan nilai b hasilnya berupa integer.

div a div b Mengahasilkan pembagian nilai a dengan nilai b hasilnya berupa real. mod a mod b Menghasilkan sisa pembagian nilai

a dibagi nilai b. Operator perbandingan

Operator contoh Fungsi

= a = b mengahsilkan true jika nilai a sama dengan nilai b.

<> a <> b mengahsilkan true jika nilai a tidak sama dengan nilai b.

< a < b mengahsilkan true jika nilai a kurang dari nilai b.

> a > b mengahsilkan true jika nilai a lebih dari nilai b.

<= a <= b mengahsilkan true jika nilai a kurang dari atau sama dengan nilai b. >= a >= b mengahsilkan true jika nilai a lebih

dari atau sama dengan nilai b.

2. Real

Real merepresentasikan bilangan riil (floating point). Sama seperti integer rangenya bergantung pada saat deklarasi.

Type Size (Byte) Range

single 4 0.71E-45..3.4E+38

real 6 2.94E-39..1.7E+38

double 8 4.94E-324..1.79E+308

extended 10 3.3E-4932..1.18E+4932

comp 8 -9.2E-18..+9.2E+18

Operator – operator pada real sama dengan operator – operator pada integer tanpa operator mod dan div pada operator aritmetik dan <= dan >= pada operator relasional.

3. Boolean

Boolean ialah tipe data yang merepresentasikan true atau false. Operator

Operator contoh Fungsi

not not a menghasilkan true jika a false dan menghasilkan false jika a true. or a or b menghasilkan false jika a dan b false

selain itu menghasilkan true. and a and b mengahsilkan true jika a dan b

(5)

menghasilkan false.

xor a xor b mengahsilkan true jika salah satu a atau b bernilai true, selain itu menghasilkan false.

4. char

char ialah karakter ‘A’..’Z’, ‘a’..’z’, ‘0’..’9’ dan karakter – karakter lainnya. Operator

Operator contoh Fungsi

= a = b mengahsilkan true jika nilai a sama dengan nilai b

<> a <> b mengahsilkan true jika nilai a tidak sama dengan nilai b 5. string

string ialah susunan atau gabungan beberapa karakter. Operator

Operator contoh Fungsi

= a = b mengahsilkan true jika nilai a sama dengan nilai b.

<> a <> b mengahsilkan true jika nilai a tidak sama dengan nilai b.

+ a + b menghasilkan string a yang disambung(konkat) dengan string string b.

3.

3.

3.

3. Assignment

Assignment

Assignment

Assignment

Assignment ialah mengisi suatu data (variabel) dengan nilai atau dengan nilai dari variabel lainnya.

Contoh x = 5; artinya ialah mengassign 5 sebagai nilai dari variabel x. Assignment di Pascal

x := 5;

4.

4.

4.

4. Input / Output

Input / Output

Input / Output

Input / Output

Input

Nilai yang dimasukkan user untuk kemudian digunakan di dalam program. Dalam Pascal

read(var); readln(var);

read dipakai untuk meminta masukan dari user yang diakhiri oleh enter. Sedangkan readln dipakai untuk meminta masukan yang diakhiri dengan enter lalu menunggu masukan karakter newline.

(6)

Output

Nilai yang dihasilkan program dan ditampilkan ke layar Dalam Pascal

write(var); writeln(var);

write digunakan untuk mencetak keluaran kelayar, sedangkan writeln untuk mencetak keluaran yang lalu diikuti dngan karakter newline.

Contoh Input read(x); readln(x); Contoh Output write(‘Hallo’); write (‘Hallo’); write(‘Hallo’,nama); writeln(‘Hallo’); writeln(nama); writeln(‘Hallo’, nama); Contoh Program program IO;

(* program yang menerima masukan nama dan umur lalu menuliskannya ke layar *)

var

nama : string; umur : integer; begin

write('Masukkan nama Anda : '); read(nama);

write('Masukkan usia Anda : '); read(umur);

writeln ('----Masukan yang didapat----'); writeln ('Nama Anda : ', nama);

writeln ('Usia Anda : ', umur); writeln ('Tulis dalam satu baris');

writeln ('Nama Anda : ', nama, ' - usia Anda : ', umur); end.

5.

5.

5.

5. Percabangan

Percabangan

Percabangan

Percabangan

Tidak semua program berjalan lurus dari atas sampai bawah. Untuk itu terdapat kontrol percabangan. Dalam Pascal terdapat 3 jenis kontrol percabangan, yaitu if-then, if-then-else dan case.

if – then

(7)

contoh

if x = 1 then writeln(x);

if not found then writeln(‘kosong’);

Artinya bagian yang pertama ialah jika nilai x sama dengan 1 maka cetak nilai x ke layar, jika tidak, program tidak melakukan apa – apa.

if – then - else

Pola ini dipakai untuk mengevaluasi suatu kondisi dan melaksanakan suatu aksi jika kondisi terpenuhi dan melaksanakan aksi lainnya jika kondisi tidak terpenuhi.

contoh

if x = 1 then writeln(x)

else writeln(‘x bukan angka 1’); if not found

then writeln(‘kosong’) else writeln(‘ketemu’);

{Perhatikan tidak ada titik koma sebelum else}

Arti bagian yang pertama yaitu jika nilai variabel x sama dengan 1 maka tulis nilainya, jika x bukan 1, maka tulis string “x bukan angka 1”

CASE

case dipakai untuk mengevaluasi kondisi yang banyak. Jadi aksi dilakukan bergantung pada kondisi (depend on (kondisi))

contoh case x of 0 : hari := ‘Minggu’; 1 : hari := ‘Senin’; 2 : hari := ‘Selasa’; 3 : hari := ‘Rabu’; 4 : hari := ‘Kamis’; 5 : hari := ‘Jumat’; 6 : hari := ‘Sabtu’; end;

Artinya ialah jika x bernilai 0 maka assign variabel hari dengan nilai “Minggu” jika bernilai 1 maka assign variabel hari dengan nilai “Senin”, dst…

contoh program :

program conditional;

(* Contoh penggunaan conditional branch *) var

namaHari : string; angkaHari : integer; begin

writeln ('Masukkan angka 1 - 7'); write ('Angka : ');

read (angkaHari); case angkaHari of

1 : namaHari := 'Minggu'; 2 : namaHari := 'Senin';

(8)

3 : namaHari := 'Selasa'; 4 : namaHari := 'Rabu'; 5 : namaHari := 'Kamis'; 6 : namaHari := 'Jumat'; 7 : namaHari := 'Sabtu'; end;

writeln('nama hari : ', namaHari);

if namaHari = 'Minggu' then writeln('Hari ini hari minggu'); if namaHari = 'Senin' then

writeln('Hari ini hari Senin')

else writeln ('Hari ini bukan hari senin'); end.

6.

6.

6.

6. Blok

Blok

Blok

Blok Instruksi

Instruksi

Instruksi

Instruksi

Pada contoh sebelumnya (program conditional), aksi yang dilakukan jika kondisi terpenuhi hanya terdiri atas satu aksi saja. Bagaimana jika program itu diubah menjadi

if namaHari = 'Minggu' then

writeln('Hari ini hari minggu');

writeln(‘Jika hari ini Minggu, pasti hari ini bukan senin’);

kemudian pada saat eksekusi masukkan angka 2, apa yang terjadi? Ternyata tulisan ‘Jika hari ini Minggu, pasti hari ini bukan senin’ muncul juga, padahal seharusnya ini hari minggu.

Sebenarnya hal ini diakibatkan karena Pascal menganggap code itu adalah if namaHari = 'Minggu' then

writeln('Hari ini hari minggu');

writeln(‘Jika hari ini Minggu, pasti hari ini bukan senin’);

sehingga instruksi writeln(‘Jika hari ini Minggu, pasti hari ini bukan senin’); dieksekusi tanpa mengevaluasi variabel namaHari. Solusinya definisikan blok instruksi yang akan diksekusi jika kondisi terpenuhi, perhatikan kode berikut

program conditional;

(* Contoh penggunaan conditional branch *) var

namaHari : string; angkaHari : integer; begin

writeln ('Masukkan angka 1 - 7'); write ('Angka : ');

read (angkaHari); case angkaHari of

1 : namaHari := 'Minggu'; 2 : namaHari := 'Senin';

(9)

3 : namaHari := 'Selasa'; 4 : namaHari := 'Rabu'; 5 : namaHari := 'Kamis'; 6 : namaHari := 'Jumat'; 7 : namaHari := 'Sabtu'; end;

writeln('nama hari : ', namaHari); if namaHari = 'Minggu' then

begin

writeln('Hari ini hari minggu');

writeln(‘Jika hari ini Minggu, pasti hari ini bukan senin’); end;

if namaHari = 'Senin' then

writeln('Hari ini hari Senin')

else writeln ('Hari ini bukan hari senin'); end.

Blok instruksi ialah kumpulan instruksi yang dikelompokkan dalam begin – end; hal ini dapat mengantisipasi kesalahan leksikal program. Jadi kesimpulannya, gunakan blok instruksi untuk mengelompokkan instruksi.

7.

7.

7.

7. Tipe Data Lanjutan

Tipe Data Lanjutan

Tipe Data Lanjutan

Tipe Data Lanjutan

Array

Array ialah suatu tipe yang mengacu kepada sekumpulan elemen bertipe sama yang dikenali indeksnya. Dalam Pascal indeks dapat berupa integer atau char.

Deklarasi Array var

tab : array[1..10] of integer; Cara pengaksesan array yaitu

tab[1] := 1; x := tab[3];

Baris pertama berarti isi array tab dengan indeks 1 dengan nilai satu. Baris kedua berarti isi nilai variabel x dengan nilai pada array tab dengan indeks 3.

Untuk lebih jelasnya perhatikan (dan coba eksekusi) program dibawah ini program cobaarray;

{Program untuk latihan manipulasi array} var

tab : array [1..5] of integer; i : integer;

begin

tab[1] := 5; tab[2] := 4;

(10)

tab[3] := 3; tab[4] := 2; tab[5] := 1; write('Masukkan integer[1..5] <- '); read (i); if (i > 0) and (i <= 5) then

writeln ('Isi tab[', i, '] : ', tab[i]) else

writeln ('masukan tidak valid'); end.

Tipe Bentukan

tipe bentukan ialah tipe data yang dibentuk dari satu atau lebih tipe data dasar atau tipe record lain yang sudah didefinisikan. Tipe data baru yang dibentuk lebih dari satu tipe disebut juga record contoh deklarasi type:

type tabel = array [1..10] of integer; type Point = record

x : integer; y : integer; end;

jika P1 adalah variabel yang bertipe Point maka cara pengaksesan elemen recordnya adalah P1.x {untuk mendapatkan nilai x dari variabel P1}

P1.y {untuk mendapatkan nilai y dari variabel P1}

Untuk lebih jelasnya coba perhatikan (dan buat tentunya) program ini program kuadranpoint;

type point = record x : integer; {absis} y : integer; {ordinat} end; var p : point; kuadran : integer; begin

writeln ('Masukkan absis p'); readln (p.x);

writeln ('Masukkan ordinat p'); readln (p.y);

if (p.x > 0) and (p.y > 0) then kuadran := 1

(11)

else if (p.x < 0) and (p.y > 0) then kuadran := 2

else if (p.x < 0) and (p.y < 0) then kuadran := 3

else if (p.x > 0) and (p.y < 0) then kuadran := 4

else

kuadran := 0;

writeln ('Point (', p.x, ',', p.y, ') berada di kuadran ', kuadran); end.

8.

8.

8.

8. Pe

Pe

Pe

Perrrrulangan

ulangan

ulangan

ulangan

Selain Percabangan, kontrol alur program yang lain ialah pengulangan. Perhatikan kembali kode tab[1] := 5;

tab[2] := 4; tab[3] := 3; tab[4] := 2; tab[5] := 1;

terlihat bahwa instruksi assignment pengisian array tab diulang sebanyak lima kali. Untuk jumlah pengisian yang sedikit hal ini tidak menjadi masalah, tetapi jika jumlah sudah banyak, 100 misalnya, apakah kita akan mengetik 100 kali (atau copy/paste 99 kali)? tentu saja tidak, cara yang tepat ialah dengan menggunakan metode perulangan.

For – Do

Perhatikan kembali kode di atas. Untuk memudahkan kita dapat menulisnya sebagai berikut : for i := 1 to 10 do

tab[i] := 11 – i;

Algoritma di atas artinya ialah untuk setiap i dari 1 sampai 10 lakukan aksi assignment. Algoritma ini akan melakukan operasi assignment pada setiap i. Algoritma ini dikenal juga dengan nama traversal.Pada setiap kali aksi selesai dilakukan, i otomatis bertambah 1. Pengisian seperti ini bisa dibalik menjadi

for i := 10 downto 1 do tab[i] := 11 – i;

While – Do

Struktur ini bermakna selama kondisi masih terpenuhi lakukan aksi. Perhatikan contoh berikut i := 1; while i <= 10 do begin tab[i] := 11 – i; i := i + 1; end;

(12)

Sebelum melakukan aksi kondisi dievaluasi terlebih dahulu, akibatnya aksi bisa saja tidak dilakukan sama sekali jika pada awal pemanggilan kondisi sudah tidak terpenuhi, misalnya pada contoh diatas jika pada baris pertama angka 1 diganti dengan 11.

Repeat – until

Struktur ini bermakna lakukan aksi sampai kondisi terpenuhi. Perhatikan contoh berikut i := 1;

repeat

tab[i] := 11 – i; i := i + 1;

until i > 10;

Pada struktur ini aksi dilakukan terlebih dahulu, setalah itu baru dievaluasi apakah kondisi sudah terpenuhi, jika sudah terpenuhi maka perulangan dihentikan. Perhatikan pada struktur ini blok program tidak berada pada begin – end, tetapi pada repeat – until. Pada struktur ini aksi dilakukan minimal satu kali. Hal ini dapat menimbulkan kesalahan leksikal pada program. Apa yang terjadi jika pada baris pertama pada program diatas nilai i diassign dengan 11? Oleh karena itu kita harus memilih struktur perulangan yang tepat untuk memecahkan masalah.

Memilih Perulangan yang Sesuai

Dalam menentukan struktur perulangan yang akan dipakai perlu diperhatikan beberapa hal. Untuk memudahkan perhatikan masing – masing penggunaan tiap struktur berikut.

For – Do

Struktur ini biasanya digunakan jika kita ingin melakukan aksi yang sama untuk setiap kali pass. Misalnya untuk menginisialisasi atau untuk mengisi array.

While – Do

Struktur ini biasanya digunakan jika kita ingin mencari suatu nilai untuk kemudian digunakan, atau ingin melakukan aksi hanya sampai kondisi tertentu terpenuhi saja, sehingga tidak perlu melakukannya terhadap sisanya. Penggunaan While – Do paling sering untuk algoritma search, contohnya pada fungsi yang mengembalikan nilai boolean apakah ada suatu nilai x dalam array. Repeat – Until

Struktur ini penggunaannya hampir sama dengan While – Do, tetapi untuk menggunakannya kita harus memastikan bahwa untuk lelaran(pass) pertama kondisi pasti belum dipenuhi. Salah satu peggunaan struktur ini ialah pada desain menu. Menu minimal ditampilkan satu kali pada eksekusi program.

Contoh Kasus:

Buatlah program yang terus – menerus menerima masukan integer hingga user mengetikkan angka 999.

Solusi 1, menggunakan For – Do program ambilInteger; var

inputInteger : integer; i : integer;

begin

for i := 1 to 100 do {Kita asumsikan user paling

banyak menginput 100 kali} begin

read(inputInteger);

(13)

exit; end;

end.

Solusi 2, menggunakan While – Do program ambilInteger; var inputInteger : integer; i : integer; begin while (inputInteger <> 999) do begin read(inputInteger); end; end.

Solusi 3, menggunakan Repeat - Until program ambilInteger; var inputInteger : integer; i : integer; begin repeat read(inputInteger); until(inputInteger = 999) end.

Solusi manakah yang lebih mudah diimplementasikan(dibuat)? Yang mana yang lebih tepat untuk diimplementasikan?

(14)

9.

9.

9.

9. Sub

Sub

Sub

Sub Program

Program

Program

Program

Prosedur dan Fungsi

Modulasi Program adalah hal yang begitu penting dalam pemrograman. Kita harus tahu dimana kita akan memecah program menjadi bagian yang lebih mudah untuk diselesaikan dibanding dengan kerumitan yang kita depat dengan tanpa memecah program menjadi modul-modul yang lebih kecil. Dalam Pascal, modul-modul-modul-modul yang lebih kecil tadi dibedakan menjadi prosedur dan fungsi. Hal ini juga penting bila kita ingin melakukan suatu aktivitas yang sejenis lebih dari satu kali. Tentunya akan repot bila kita menuliskan ulang kode untuk aksi tersebut karena bisa saja aksi tesebut akan membutuhkan barisan kode yang sangat panjang.

Beda Prosedur dan Fungsi

Dalam bahasa C, Prosedur adalah fungsi dengan nilai balikan void, atau tak bertipe. Sedang dalam Pascal, prosedur adalah suatu runtutan aktivitas yang spesisfik tanpa menghasilkan/mengembalikan suatu nilai. Misalnya pada kehidupan nyata adalah prosedur bacaBuku dimana kita melakukan aktivitas, membaca kata demi kata, membalik halaman, kembali membaca kata demi kata, membalik halaman, hingga halaman akhir dari buku.

Sedang fungsi adalah aktivitas spesifik yang nantinya aktivitas tersebut akan memberikan suatu nilai yang dibutuhkan. hasil tadi diberikan melalui sebuah nilai yang akan dikembalikan fungsi tadi. Misalanya kita ingin mencari halaman dimana ada judul bab ! berada, maka akan lebih sesuai bila kita mendefinisikan aktivitas tadi sebagai fungsi yang akan mengembalikan nilai halaman dimana judul Bab satu berada.

Mendefinisikan Procedure program mainProgram; var (*Pendeklarasian prosedure*) procedure namaProsedur; type

(*type yang hanya ingin dipakai di dalam procedure*) var

(*variabel lokal yang dideklarasikan di dalam prosedu*) begin

(*Aksi dalam prosedur;*) end;

begin

(*aksi program main utama*)

namaProsedur; (*memanggil prosedur*) end.

Nama Global dan Nama Lokal

Dalam Lingkup Prosedur dan fungsi tentunya kita akan membutuhkan variabel-variabel untuk membantu melakukan instruksi atau memang dibutuhkan untuk memperoleh suatu nilai. Variabel-variabel tersebut dibedakan menjadi 2, yaitu variabel global dan variabel lokal. Variabel Global berasal dari nilai yang ada di lingkup luar prosedur dan dikenali nilainya ileh prosedur. Sedangkan variabel lokal adalah variabel yang hanya dikenali di dalam lingkup prosedur itu sendiri.

(15)

Usahakanlah menggunakan nama-nama global sesedikit mungkin. Nama lokal akan membuat program mudah ditelusuri dan pencaraian kesalahan akan lebih mudah karena variabel akan bermain di lingkupnya dia sendiri. Penggunaan nama global tetap dapat membantu pada masalah-masalah yang memang membutuhkan nilai global yang bisa diakses dimana saja.

Parameter

Untuk pertukaran informasi antara lingkungan di luar variabel/titik dimana ia dipanggil dan lingkungan prosedure adalah dengan memasukkan variabel ke dalam lingkup prosedure melalui mekanisme parameter. Bila sebuah prosedure menggunakan parameter, maka akan terdapat nilai / variabel yang dikurung () baik pada pendeklarasian maupun pemanggilan.

Tiap item data ditransfer antara parameter aktual dan parameter formal. Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan. Sedangkan parameter formal adalah parameter yang dideklarasikan pada header prosedure itu sendiri.

Contoh penggunaan prosedur dengan parameter: program pCetakUlang ;

var

procedure cetakUlang(N : integer) var I : integer; begin for I := 1 to N do writeln(‘cetak’); end; X : integer; begin X := 10; cetakUlang(X); end.

Maka pada contoh diatas, Pendeklarasian prosedure dilakukan didalam program utama dibawah kata kunci var, bersama dengan pendeklarasian variabel X yang digunakan oleh program utama. Variabel N : integer pada header prosedur adalah parameter formal. Ketika pemanggilan pada program utama cetakUlang(X), maka parameter aktual X akan menggantikan parameter formal dari prosedure. Harus diingat bahwa parameter aktual yang digunakan harus sesuai dengan parameter formal yang didefinisikan, baik tipe data maupun jumlah parameter, jika tidak maka compiler akan menampilkan pesan kesalahan.I di dalam prosedure adalah variabel lokal yang tidak dikenali di program utama.

Parameter Masukan, Keluaran, Masukan/Keluaran. Parameter dibedakan menjadi 3 jenis :

a. Parameter Masukan : adalah parameter yang di dalam prosedure tidak dimaksudkan untuk di manipulasi hanya digunakan saja oleh prosedur tersebut.

Parameter aktual di sini tidak akan pernah mengalami perubahan nilai.

b. Parameter Keluaran : adalah parameter yang di dalam prosedure dimaksudkan untuk diubah nilainya, dan perubahan nilainya itu dapat dikenali di titik dimana ia dipanggil. Disini nilai parameter aktual akan berubah nilainya sesuai aksi di dalam prosedure. Parameter ini memang dimaksudkan untuk diubah dalam prosedure.

(16)

c. Parameter Masukan/Keluaran : sama kelakuannya dengan parameter keluaran hanya saja disini parameter juga ikut memberikan nilai yang digunakan oleh prosedur.

Contoh

procedure cetakUlang(N : integer) var I : integer; begin For I := 1 to N do Writeln(‘cetak’); end;

N adalah parameter masukan karena ia masuk ke dalam prosedur tanpa ada maksud untuk mengubah nilainya. Ia hanya digunakan untuk menentukan berapa kali pengulangan dalam prosedure akan dilakukan.

Procedure hitungRata (N : integer, var rata: real) Var i : integer; x : integer; begin jumlah := 0; for i:=1 to N do begin writeln(‘x ?’); readln(x); jumlah := jumlah + x; end; rata := jumlah /N; end; Dengan pemanggilan program mainRataRata; var

Procedure hitungRata(N : integer, var rata : real); x : integer; r : real; begin x := 10; u := 0; hitungJumlahNBilPertama(x,u);

writeln(‘jumlah data adalah :’,x); writeln(‘rata –rata : ’,u);

end.

bila kita eksekusi tampak bahwa nilai x adalah tetap sama dengan yang diinisiasi pertama kali yaitu 10, tetapi bila kita lihat hasil u, u tidak lagi bernilai 0 yang seperti kita inisiasi pertama kali, tetapi berubah menjadi nilai rata-rata yang kita hitung dalam prosedur hitungRata. Hal ini karena pada deklarasi prosedur hitungRata, u adalah sebuah parameter keluaran dengan tambahan kata kunci var di depan parameter formal yang bersangkutan (tidak perlu lagi menulis var pada pemanggilan prosedur).

Mendefinisikan Fungsi

program mainProgram;

(17)

var

(*Pendeklarasian fungsi*)

function namaFungsi(X : tipeSem, Y : tipeSem) : tipeData; Type

(*type yang hanya ingin dipakai di dalam fungsi*) Var

(*variabel lokal yang dideklarasikan di dalam p*) Z : tipeData;

begin

(*Aksi dalam fungsi yang akan memanipulasi Z;*) (*pengembalian nilai*) namaFungsi := Z; end; n : tipeData; x : tipeSem; y : tipeSem; begin

(*aksi program main utama*)

n := namaFungsi(x,y); (*mendapatkan suatu nilai*)

(*balikan fungsi*)

end.

Yang perlu diperhatikan adalah:

- Pendeklarasian tipe data yang akan dikembalikan pada header fungsi

- pada tubuh fungsi di bagian akhir ada aksi pengembalian nilai balik fungsi (di dalam contoh adalah mengembalikan nilai Z) sesuai dengan tipeData balikan yang telah dideklarasikan. - Penangkapan nilai balik oleh suatu variabel di lingkup pemanggil fungsi dengan tipe data yang

sama (dalam contoh dilakukan oleh n ) Contoh

Program fungsiLuas; Var

function hitungLuasSegitiga(x: integer; y: integer):real; var luas : real; begin luas := (x*y)/2; hitungLuasSegitiga := luas; end; alas : integer; tinggi : integer; luas3 : real; (*pogram utama*) begin

writeln(‘masukkan alas segitiga : ’); readln(alas); writeln(‘masukkan tinggi segitiga : ’); readln(tinggi); luas3 = hitungLuasSegitiga(alas,tinggi);

writeln(‘luas segitiga yang dimasukkan : ’,luas3); end.

Dalam contoh diatas pengembalian nilai balik fungsi dilakukan oleh hitungLuasSegitiga := Luas; dan penangkapan nilai balik tadi dilakukan oleh luas3 := hitungLuasSegitiga(alas,tinggi);

(18)

10.

10.

10.

10. File

File

File

File Eksternal

Eksternal

Eksternal

Eksternal

Pascal memiliki kemampuan membaca file eksternal yang cukup mudah. Misalnya bila kita ingin program membaca data karakter dari file berekstensi file.txt, bahasa pascal telah menyediakannya. Selain itu bahasa pascal juga menyediakan fasilitas untuk membaca file biner eksternal yang disimpan untuk menyimpan suatu tipe data baik tide data bawaan ataupun bentukan kita.

Skema dan bentuk yang diperlukan dalam pembacaan file

FileVariable : variabel yang diperlukan untuk menghubungkan program dengan file eksternal.;

Assign (FileVariable, namaFileEksternal) : menghubungkan file variable dengan file yang bernama yang disebutkan di namaFileEksternal;

Reset(FileVariable) : membuka file yang telah dihubungkan dengan file variable, file yang dibuka haruslah sudah eksis;

Rewrite(FileVariable) : membuka file yang baru atau belum pernah ada (untuk merekam data);

Append(FileVariable) : membuka file, dengan kemampuan merekam tetapi tidak

menghapus isi data yang sudah ada melainkan menggabungkan/ append di akhir file yang lama. Close(FileVariable) : menutup file, setelah penggunaan file eksternal yang dihubungkan dengan FileVariable telah selesai.

Eof(FileVariable) : fungsi yang menghasilkan boolean, memberitahukan apakah sudah berada pada akhir file atau belum. Mengembalikan true jika sudah berada pada akhir file.

Untuk menulis dan membaca data dari file

Writeln (FileVariable,v1[v2,v3,…..])

Write (FileVariable,v1[v2,v3,…..]) : akan menulis data yang ada di variable v ke file ekseternal.

Readln (FileVariable,v1[v2,v3,…..])

Read (FileVariable,v1[v2,v3,…..]) : akan membaca data yang ada file eksternal untuk dimasukkan ke dalam variable v.

Contoh pembacaan file teks

(sumber : diktat kuliah algoritma pemrograman oleh Wikan Danar) program BacaText;

(* File: bacatext.pas *)

(* Membaca sebuah text file diakhiri '.', dan menuliskan apa adanya ke layar *)

(* Program ini tidak memanfaatkan EOF *)

(* Jadi tidak boleh ada file yang hanya mengandung EOF. *) (* File kosong berisi sebuah karakter '.' *)

(* Kamus *) var

f : Text;

CC : char; (* karakter yang dibaca *) (* Algoritma *)

begin

assign(f,'pitakar.txt');

(19)

if (CC = '.') then begin writeln('Arsip kosong');

end else (* CC bukan '.' *) begin repeat read(f,CC); write(CC); until (CC = '.'); end; close(f); end. program RekamTexts; (* File : Rekamtxt.pas *) program RekamText;

(* Membaca karakter demi karakter dari keyboard *) (* dan menyimpan ke text file. *)

(* Akhiri pembacaan dengan "#" File diakhiri EOF *) (* Kamus *) var f : text; CC : char; (* Algoritma *) begin assign(f,'TextOut.TXT');

rewrite(f); (* buka dengan modus rekam *) write('Masukkan karakter, akhiri dengan #'); read(CC); while (CC <> '#') do begin write(f,CC); read(CC); end; (* CC='#' *) close(f); end. program Frec; (* File : Frec.pas *)

(* Membaca sebuah file of record, dan menuliskan isinya ke layar *) (* Kamus *) type Point = record x : integer; y : integer; end; var f : file of Point;

T : Point; (* point yang dibaca *) (* Algoritma *)

begin

(* Tahap I : membaca data titik untuk direkam *) assign(f,'mytitik.dat');

rewrite(f);

writeln('Input titik, diakhiri dengan x=-999 dan y=-999'); (* Baca nilai titik yang akan direkam *);

(20)

readln(T.x);

write('Ordinat = '); readln(T.y);

while (T.x <> -999) and (T.y <> -999) do begin

(* rekam ke file *) write(f,T);

(* baca data berikutnya *) write ('Absis = '); readln(T.x); write ('Ordinat = '); readln(T.y); end; close(f);

(* Tahap II : menuliskan hasil rekaman ke layar *) reset(f);

if eof(f) then begin writeln('Arsip kosong'); end else begin

repeat read(f,T);

(* Tulis data titik *)

writeln('T(x,y) = (',T.x, ',',T.y,')'); until eof(f);

end;

close(f); end.

Referensi

Dokumen terkait

Asam lemak bebas pada suatu bahan pangan akan terbentuk karena adanya proses pemanasan bahan pangan pada suhu tinggi yang dapat meningkatkan konsentrasi dari

(2013) menunjukkan bahwa academic achievement motivation khususnya motivasi intrinsik, dan amotivasi memainkan peran utama dalam memprediksi academic burnout siswa. Hasil

Untuk lebih fokus pada pokok penelitian yang akan diteliti, penelitian ini hanya menguji variabel kepemimpinan dan profesionalisme dalam pengaruhnya terhadap kinerja dengan

Kuesioner digunakan untuk mengidentifikasi responden dan mendapatkan persepsi responden terhadap CRM dalam hal untuk mengetahui pengaruh CRM terhadap kepuasan

Berkat rahmatmu yang luar biasa yang telah engkau berikan kepada penulis, sehingga telah selesai kewajiban menyusun skripsi berjudul Analisis Makna Idiomatik pada Kumpulan

Menimbang, bahwa atas jawaban Termohon tersebut Pemohon menyampaikan replik secara lisan yang pada pokoknya tetap pada permohonan Pemohon, karena Termohon cemburu

Kelompok Jabatan Fungsional mempunyai tugas melaksanakan kegiatan yang diatur dalam peraturan perundangan-undangan sesuai dengan profesi dan fungsinya serta melaksanakan

Fenomena tersebut terjadi karena Desa Pakraman hanya mewajibkan Krama Desa Pakraman (krama wed) untuk mendukung apapun yang diselenggarakan oleh Desa Pakraman,