PASCAL
Merupakan
salah satu Bahasa Pemrograman. Sejarah perkembangan Pascal dimulai pada tahun
1960, yaitu ketika bahasa pemrograman ALGOL 60 digunakan sebagai algorithmic
language yang digunakan untuk memecahkan masalah sehari-hari dengan menggunakan
komputer. Nama Pascal sendiri diambil dari nama seorang ahli matematika
dan ilmu pengetahuan bangsa Perancis, yaitu Blaise Pascal (1623-1662). Niklaus
Wirth dari Sekolah Teknik Tinggi Zurich - Swiss, menjadi terkenal sebagai
perancang bahasa Pascal, compiler pertama yang dilaksanakan pada tahun
1970, kemudian direvisi pada tahun 1973 bersama K. Jensen. Kemudian pada tahun
1983 bahasa Pascal dapat dibakukan secara resmi dengan adanya Pascal Standard
dari ISO.
Keunggulan
bahasa Pascal adalah keteraturan dalam pembuatan program dan kelengkapan
struktur data.
Contoh
program dalam bahasa Pascal:
PROGRAM CariMin;
{Mencari Bilangan terkecil dari dua buah
bilangan}
VAR
x,y,min:integer;
BEGIN
WRITE(‘Bilangan pertama : ‘);READLN(x);
WRITE(‘Bilangan kedua : ‘);READLN(y);
IF x>y THEN
Min:=y
ELSE
Min:=x;
WRITE(‘Bilangan terkecil : ‘,min);
END.
|
Sebelum
membahas dengan detail tentang bahasa Pascal (dalam hal ini adalah compiler
Free Pascal), perlu diketahui terlebih dulu struktur program dalam bahasa
Pascal. Bentuk ini harus dipenuhi agar program dapat dikompilasi oleh compiler.
Struktur Bahasa Pascal
Bentuk
umum bahasa Pascal adalah sebagai berikut:
PROGRAM nama(file1,file2,file3);
CONST deklarasikonstanta;
VAR deklarasivariabel;
TYPE deklarasitype;
LABEL deklarasilabel;
FUNCTION deklarasifungsi;
PROCEDURE deklarasiprosedur;
BEGIN
statement1;
statement2;
statement3;
...
END.
|
Program
Pascal terdiri dari 3 bagian pokok, yaitu:
1. Nama Program
Nama
program adalah hanya sekedar menuliskan judul dari program, tidak mempunyai
arti apa-apa
dalam
proses kompilasi. Judul program dapat diikuti oleh file-file data yang
berhubungan dengan
program
tersebut.
Pada
Turbo Pascal, dapat ditambahkan klausa uses yang menunjukkan bahwa program
menggunakan unit.
2. Deklarasi
Bagian
ini berisi deklarasi pengenal maupun data yang dipergunakan di dalam program.
Walaupun
tampaknya
membuang-buang waktu dan tidak berguna, namun sesungguhnya merupakan bagian
terpenting dari rangka penyusunan sebuah program yang terstruktur. Struktur
program sangat penting dalam pembuatan program yang panjang, karena bagian ini
akan mengingatkan programmer tentang variabel, tipe data, konstanta, fungsi,
prosedur yang digunakan dalam program. Selain itu, orang lain yang membaca
program akan lebih dapat mengerti jalannya program dengan deklarasi ini.
3. Program utama
Program
utama berisi statement.
Deklarasi program
Bagian
deklarasi ada 6 macam, yaitu:
1. Deklarasi CONST
Deklarasi
ini gunanya untuk mendeklarasikan nama konstanta tertentu. Nama konstanta
adalah
merupakan
suatu pengenal (identifier) yang nilainya tidak dapat berubah dalam program.
Contoh:
CONST
Pi=3.14
Titikkoma=’;’
|
2. Deklarasi VAR
Deklarasi
ini gunanya adalah untuk menyatakan variabel yang digunakan dalam program.
Variabel
adalah
suatu pengenal (identifier) yang nilainya dapat berubah. Contoh:
VAR
Data:array[1..100] of byte;
Umur: 0..100;
|
3. Deklarasi TYPE
Deklarasi
type dipergunakan untuk menyusun suatu bentuk tipe data yang baru sebagai hasil
penggabungan
dari tipe-tipe yang sudah ada. Contoh:
TYPE
Data=array[1..100] of byte;
Hari=(Senin, Selasa, Rabu, Kamis, Jumat,
Sabtu);
VAR
Nilai:Data;
HariKerja:Senin..Jumat;
|
4. Deklarasi LABEL
Deklarasi
label menjelaskan adanya label atau tujuan yang bisa melompatkan jalannya program
dengan statement goto.
5. Deklarasi FUNCTION
Function
adalah bagian dari program yang melakukan tugas tertentu dan menghasilkan suatu
nilai.
Sintaks
penulisan:
function namafunction:tipehasil;
Atau
function namafunction(daftarparameter):tipehasil;
Contoh:
function UpCaseStr(S: string): string;
var
I: Integer;
begin
for I := 1 to Length(S) do
if (S[I] >= 'a') and (S[I] <= 'z') then
Dec(S[I], 32);
UpCaseStr := S;
end;
begin
writeln(UpCaseStr(‘this is text’));
end.
|
6. Deklarasi PROCEDURE
Procedure
adalah bagian dari program yang melakukan aksi tertentu, seringkali aksi
tersebut dilakukan berdasarkan parameter.
Sintaks
penulisan:
procedure namafunction;
Atau
procedure namafunction(daftarparameter);
Contoh:
procedure WrStr(X, Y: integer; S: string);
var
SaveX, SaveY: Integer;
begin
SaveX := WhereX;
SaveY := WhereY;
GotoXY(X, Y);
Write(S);
GotoXY(SaveX, SaveY);
end;
begin
WrStr(10,20,’This is text’);
end.
|
Aturan penulisan program Pascal
Suatu
bahasa pemrograman selalu mempunyai aturan penulisan program. Hal ini
menunjukkan konsistensi
kompiler
dalam melakukan proses kompilasi. Aturan pada program Pascal adalah sebagai
berikut:
Program
pascal dapat ditulis pada kolom berapa saja dan diakhiri pada kolom berapa
saja.
Antar
statement / perintah dipisahkan dengan tanda ; (titik koma)
Akhir
dari sebuah program Pascal ditandai dengan tanda . (titik) setelah perintah
END. Semua statement / perintah setelah END. tidak akan dianggap sebagai
perintah.
Spasi
antar pengenal (identifier) diabaikan.
Baris
komentar diletakkan di antara tanda (* dan *) atau { dan }. Baris komentar
tidak akan dieksekusi oleh komputer. Baris komentar biasanya dipergunakan untuk
memberikan penjelasan-penjelasan guna memperjelas pengertian variabel atau tipe
atau perintah dalam sebuah program.
Simbol (Symbols)
Pascal
mengenal simbol-simbol yang dapat digunakan dalam program, yaitu:
huruf
: A..Z , a..z
digit
: 0..9
digit
heksadesimal : 0..9, A..F, a..f
Karakter
khusus : + - * / = < > [ ] . , ( ) : ^ @ { } $ #
Pasangan
karakter : <= >= := (* *)
Selain
dari karakter-karakter di atas, adalah karakter yang tidak dikenali oleh bahasa
Pascal.
Kata tercadang (Reserved Words)
Kata
tercadang adalah bagian dari bahasa Pascal dan tidak dapat dipakai untuk
kegunaan lain dalam
program
(tidak dapat didefinisikan ulang). Kata tercadang ini tidaklah case sensitive,
artinya for akan sama dengan FOR.
Pengenal (Identifier)
Identifier
adalah nama yang diberikan untuk elemen -elemen dalam Pascal. Misalnya nama
prosedur, nama tipe, nama fungsi, nama variabel dan nama label. Identifier ini
harus dideklarasikan terlebih dulu agar dapat dikenali.
Contoh
penggunaan identifier:
program coba1;
var
a,b:byte;
type
c=word;
begin
end.
|
Pada
program di atas, terdapat 4 buah indentifier, yaitu coba1, a, b dan c. Coba1 digunakan
sebagai identifier nama program, a dan b digunakan sebagai identifier dari
deklarasi var dan c sebagai indentifier nama type.
Angka (Numbers)
Ada
2 macam penulisan angka dalam bilangan bulat yang dikenal dalam Pascal.
- Normal, dalam format desimal (basis 10).
- Heksadesimal (basis 16), penulisan angka dalam format
heksadesimal harus didahului oleh tanda $.
Misalnya
$FF berarti 255 desimal.
Tipe (Type)
Tipe
data yang dikenal oleh Pascal dapat diklasifikasikan menjadi: tipe sederhana,
tipe string, tipe terstruktur dan tipe data pointer. Ada tipe yang sudah
didefinisikan (built-in) sehingga compiler langsung mengenalinya
Penjelasan Tipe data pada Free Pascal
Tipe
Dasar / Sederhana (Based Types or Simple Types)
Tipe
dasar mendefinisikan suatu nilai yang berurutan. Ada 2 kelas dari tipe
sederhana ini yaitu:
Tipe Ordinal (Ordinal type)
Pada
tipe ordinal, Free Pascal telah mendefinisikan 14 predefined type (apa yang
dimaksud predefined type?), yaitu : bilangan bulat, boolean, char. (dimana 11
buah tipe data yang lain?). Artinya pembuat program tidak perlu mendefinisikan
tipe untuk tipe-tipe data di atas. Sedangkan untuk user defined type pada tipe ordinal
ada 2 macam, yaitu : tipe enumerasi (enumerated types) dan tipe subjangkauan
(subrange types).
Tipe Enumerasi (Enumerated)
Identifier
list mempunyai format penulisan:
Tipe
Enumerasi mendefinisikan nilai yang berurutan ke suatu elemen dalam suatu
daftar identifier. Elemen pertama mempunyai nilai 0, yang kedua mempunyai nilai
1 dan seterusnya.
Tipe Subjangkauan (Subrange)
Tipe
subjangkauan mendefinisikan suatu elemen dari nilai terkecil sampai nilai
terbesar.
Tipe Boolean (Boolean)
Tipe
boolean adalah sebuah tipe yang hanya dapat bernilai false atau true. Dalam
Free Pascal mendukung tipe Bytebool, WordBool dan LongBool.
Karena
masih merupakan tipe ordinal, maka nilainya dapat diketahui urutannya dengan menggunakan
fungsi ord.
ORD(FALSE) = 0
ORD(TRUE) = 1
Operasi-operasi
yang dapat dilakukan pada tipe boolean adalah (diurutkan berdasarkan hirarki
teratas sampai terendah): NOT, AND, OR
Contoh
dalam program:
Var
X:boolean;
A:byte;
Begin
A:=0;
If a>100 then x:=true else x:=true;
End.
var
Ok:boolean;
a,b:byte;
Begin
a:=10;
b:=20;
Ok:=a=b;
End.
|
Tipe Bilangan Bulat (Integer)
Ada
10 tipe bilangan bulat, yaitu:

Tipe
Integer secara standard akan diarahkan pada tipe smallint, sedangkan tipe
cardinal selalu diarahkan pada tipe longword.
Tipe
bilangan bulat ini dapat disebut sebagai predefined type, atau dapat juga
dimasukkan dalam tipe subjangakauan.
Operasi-operasi
yang dapat dilakukan pada tipe bilangan bulat adalah (diurutkan berdasarkan
hirarki teratas
sampai
terendah):
? @, NOT
? *, /, div, mod, and, shl, shr
? +, –, or, xor
? =,
<>, <, >, <=, >=, in
Tipe Real
Sebuah
tipe real adalah anggota bilangan real, yang dinyatakan dalam notasi floating
point. Ada 6 model tipe real, masing-masing mempunyai jangkauan, ketepatan
angka dan ukuran.
Type Jangkauan
Digit Ukuran
Real
2,9.10-39 ..
1,7.1038 11-12 6 byte
Single
1,5.10-45 .. 3,4.1038 7-8 4
byte
Double 5,0.10-324 .. 1,7.10308 15-16 8
byte
Extended
3,4.10-4932 .. 1,1.104932 19-20 10
byte
Comp
-2.1063+1 .. 2.1063-1 19-20 8
byte

Tipe Karakter (Character)
Merupakan
suatu tipe data untuk menyimpan karakter ASCII. Ditulis dengan menggunakan
tanda petik atau diawali dengan #. Karena masih masuk dalam tipe ordinal maka
dapat dioperasikan dengan menggunakan fungsi ord (untuk mengetahui urutannya),
fungsi succ, fungsi pred, prosedur inc, prosedur dec.
Tipe
ini juga dapat menerima fungsi CHR (mengubah suatu bilangan bulat menjadi
karakter yang sesuai dengan ASCII)
Contoh:
Var
A:char;
Begin
A:=’A’;
A:=CHR(65)
A:=#1;
End.
|
Tipe Untai (String)
Tipe
string adalah tipe yang diisi rangkaian karakter.
Format
penulisan:
type
identifier=string[panjang];
Bila
panjang tidak didefinisikan, maka Pascal menganggap panjangnya adalah 255
karakter (panjang
maksimum).
Contoh
penggunaan dalam program
type
str80=string[80]; {bisa dideklarasikan dalam
tipe terlebih dulu}
var
a:str80;
b:string[10]; {atau langsung dalam variabel}
const
Heading: string[7] = 'Section';
NewLine: string[2] = #13#10;
TrueStr: string[5] = 'Yes';
FalseStr: string[5] = 'No';
|
Fungsi
standard dari Length adalah untuk mencari panjang dari string. Perbandingan
antar string
didefinisikan
dengan melihat urutan karakter di dalamnya. Misalnya “AB” lebih besar dari “A”;
sehingga ‘AB’>’A’ menghasilkan TRUE. String kosong (panjangnya 0) adalah string
yang mempunyai urutan terendah. String dapat dicari urutannya seperti halnya
Array. Jika S adalah sebuah variabel string dan I adalah sebuah ekspresi
numerik yang menghasilkan bilangan bulat, maka S[I] akan menghasilkan karakter
dari S yang ke i. Statement MyString[2]:=’A’ akan mengisikan karakter ke-2 dari
MyString dengan karakter A.
Contoh
berikut adalah penggunaan fungsi standard UpCase untuk mengubah sebuah string
menjadi huruf besar.
var I: Integer;
begin
I := Length(MyString);
while I > 0 do
begin
MyString[I] := UpCase(MyString[I]);
I := I - 1;
end;
end;
|
Tipe Untai Pendek (Short String)
Deklarasi
String akan mendeklarasikan sebagai shortstring apabila:
? Opsi dimatikan {$H-}, maka deklarasi string akan selalu
shortstring
? Opsi dinyalakan {$H+} dan diberikan panjang tertentu, maka
deklarasi tersebut adalah shortstring.
Predefined
type untuk shortstring adalah:
ShortString
= String[255];
Tipe Ansistrings
Format
penulisan:
type
identifier=ansistring;
Tipe
ansistring adalah tipe string dengan panjang tanpa batas. Dalam proses
kompilasi, ansistring
diperlakukan
sebagai pointer. Jika string adalah kosong (‘‘), maka pointer akan menunjuk
pada NIL. Jika ada isinya, pointer akan menunjuk suatu alamat pada heap memory.
Ketika tipe ansistring dideklarasikan, Free Pascal hanya mengalokasikan alamat
untuk pointernya saja.
Pointer
ini pasti berisi NIL, sehingga isi mula-mula dari variabel ansistring pasti
kosong (tidak mempunyai nilai apa-apa)
Tipe PChar
Format
penulisan:
type
identifier=PChar;
Pchar
adalah variabel berjenis pointer yang mengarah ke sebuah array dengan tipe Char,
yang diakhiri dengan karakter 0 (#0). Dengan tipe Pchar, dimungkinkan adanya
operasi tambahan pada tipe ini.
Perhatikan
cara pemakaian PChar pada program di bawah ini:
program one;
var p : PChar;
begin
P := 'This is a null-terminated string.';
WriteLn (P);
end.
|
Akan
sama dengan:
program two;
const P : PChar = 'This is a null-terminated
string.'
begin
WriteLn (P);
end.
|
Mungkin
juga nilai sebuah string diberikan pada Pchar, caranya:
Program three;
Var S : String[30];
P : PChar;
begin
S := 'This is a null-terminated string.'#0;
P := @S[1];
WriteLn (P);
end.
|
Tipe Terstruktur (Structured Type)
Tipe
terstruktur dalam pascal adalah tipe yang dapat menampung lebih dari 1 nilai.
Free Pascal
mendefinisikan beberapa tipe terstruktur ini, yaitu:
Tipe Array
Tipe
array adalah suatu tipe yang dapat menampung beberapa nilai dengan tipe yang
sama dalam bentuk satu dimensi atau multidimensi. Tiap nilai dalam array dapat
diacu dengan nama array dan indeksnya yang diletakkan dalam kurung.
Format
penulisan:
type
identifier=array[tipe_indeks] of tipe_data
Tipe_data
mendefinisikan bahwa array tersebut untuk menampung nilai dengan tipe data apa
saja.
Contoh
dalam program:
type
a=array[boolean] of byte;
c=5..10;
b=array[1..10,c] of real; {termasuk tipe data
apa c?}
var
nilai_a:a;
nilai_b:b;
begin
nilai_a[true]:=10;
nilai_b[1,5]:=10.4;
end.
|
Tipe Himpunan (Set)
Himpunan
adalah kumpulan dari beberapa nilai yang bertipe ordinal. Dalam sebuah
himpunan, nilai-nilai di dalamnya akan otomatis terurut dari elemen yang paling
kecil hingga yang paling besar. Dan tidak ada 2 nilai yang sama dalam sebuah
himpunan.
Format
penulisan:
type
identifier=set of ordinal_type;
Contoh dalam program:
type TIntSet = set of 1..250;
var Set1, Set2: TIntSet;
begin
Set1 := [1, 3, 5, 7, 9];
Set2 := [2, 4, 6, 8, 10]
End.
|
Operasi-operasi
yang dapat diberlakukan pada tipe data set:
Operation Operand Result type Example
Union set set Set1
+ Set2
Difference set set
S - T
Intersection set set
S * T
subset set Boolean Q
<= MySet
superset set Boolean S1
>= S2
equality set Boolean
S2 = MySet
inequality
set Boolean MySet
<> S1
membership ordinal, set Boolean A
in Set1
Tipe Record
Untuk
Field list, diagram penulisannya:
Untuk
fixed fields diagram penulisannya:
Sebuah
record dapat terdiri dari sejumlah komponen (atau field), yang masing-masing
field dapat
mempunyai
tipe yang berbeda-beda.
Format
penulisan:
Type identifier = record
fieldList1: type1;
...
fieldListn: typen;
end;
|
Contoh
penulisan sebuah record:
Type
Point = Record
X,Y,Z : Real;
end;
RPoint = Record
Case Boolean of
False : (X,Y,Z : Real);
True : (R,theta,phi : Real);
end;
BetterRPoint = Record
Case UsePolar : Boolean of
False : (X,Y,Z : Real);
True : (R,theta,phi : Real);
end;
TDateRec = record
Year: Integer;
Month: (Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec);
Day: 1..31;
end;
var Record1, Record2: TDateRec;
|
Deklarasi
variabel di atas (Record1 dan Record2) mempunyai tipe data yang sama. Untuk
mengakses nilai untuk tiap field dalam sebuah record, menggunakan format:
Namarecord.namafield
Contoh:
Record1.Year := 1904;
Record1.Month := Jun;
Record1.Day := 16;
|
Atau
dapat juga dengan menggunakan statement With.
with Record1 do
begin
Year := 1904;
Month := Jun;
Day := 16;
end;
|
Untuk
tipe data record yang sama, dapat berlaku statement:
Record2 := Record1;
Tipe File
File
adalah sekumpulan elemen (data).
Sintaks
penulisan untuk tipe data file:
type fileTypeName = file of type
di
mana fileTypeName is sembarang nama identifier dan tipe adalah fixed-size type.
Contoh:
type
PhoneEntry = record
FirstName, LastName: string[20];
PhoneNumber: string[15];
Listed: Boolean;
end;
PhoneList = file of PhoneEntry;
Var
Filephone: PhoneList;
|
Deklarasi
di atas, mendeklarasikan file bertipe record. Deklarasi di atas, dapat juga
secara langsung
dituliskan:
var List1: file of PhoneEntry;
Tipe
data file dapat juga berupa file tidak bertipe. Format penulisan:
Var
MyFile : File;
Tipe Pointer
Pointer
adalah sebuah variabel yang berisi alamat memori dan bukan berisi data numerik
atau string seperti halnya variabel biasa. Format penulisan:
type pointerTypeName = ^type
Contoh
dalam program:
var
X, Y: Integer; // X and Y are Integer
variables
P: ^Integer; // P points to an Integer
begin
X := 17; // assign a value to X
P := @X; // assign the address of X to P
Y := P^; // dereference P; assign the result
to Y
end;
|
Tipe prosedural (Procedural Types)
Tipe
prosedural pada Free Pascal berbeda dengan Turbo Pascal walaupun secara konsep
sama.
Berikut
adalah contoh pemakaian dalam program:
Type TOneArg = Procedure (Var X : integer);
TNoArg = Function : Real;
var proc : TOneArg;
func : TNoArg;
|
Pengubah (Variable)
Variabel
adalah penampung nilai yang nilai di dalamnya dapat berubah pada saat runtime.
Variabel harus mempunyai tipe data tertentu, sehingga compiler dapat memperlakukan
data yang ditampung dengan semestinya. Deklarasi untuk variabel terdiri dari 2
bagian, yaitu nama variabel dan tipe datanya, yang dipisahkan dengan semicolon
(:).
Cara
mendeklarasikan variabel adalah:
Var Identifierlist : type;
Identifierlist
merupakan kumpulan identifier yang dipisahkan dengan tanda koma dan type adalah
sembarang
tipe data.
Contoh
pendeklarasian variabel yang benar:
Var
a:byte;
Var a,b:byte;
Var
X, Y, Z: Double;
I, J, K: Integer;
Digit: 0..9;
Okay: Boolean;
Contoh pendeklarasian variabel yang salah:
Var
a,b;
var
a:8;
|
Konstanta (Constant)
Konstanta
berisi suatu nilai yang tidak dapat dirubah. Pemberian nilai untuk konstanta
ini pada saat
konstanta
dideklarasikan.
Contoh deklarasi
konstanta
const
Pi = 3.14159;
Answer = 342;
ProductName = 'Delphi';
MaxData = 1024 * 64 - 16;
NumChars = Ord('Z') - Ord('A') + 1;
Message = 'Hello world...';
|
Konstanta
seperti di atas disebut sebagai konstanta tak bertipe. Sedangkan konstanta yang
bertipe
mempunyai
sifat seperti variabel. Untuk konstanta bertipe deklarasinya:
const identifier: type = value
Mendeklarasikan konstanta bertipe untuk ARRAY:
const Digits: array[0..9] of Char = ('0',
'1', '2', '3', '4', '5', '6', '7', '8', '9');
Factorial: array[1..7] of Integer = (1, 2, 6,
24, 120, 720, 5040);
|
Mendeklarasikan konstanta bertipe untuk RECORD
type
Point = record
X, Y: Real;
end;
Vector = array[0..1] of Point;
Month = (Jan, Feb, Mar, Apr, May, Jun, Jly,
Aug, Sep, Oct, Nov, Dec);
Date = record
D: 1..31;
M: Month;
Y: 1900..1999;
end;
const
Origin: Point = (X: 0.0; Y: 0.0);
Line: Vector = ((X: -3.1; Y: 1.5), (X: 5.8; Y:
3.0));
SomeDay: Date = (D: 2; M: Dec; Y: 1960);
|
Mendeklarasikan konstanta bertipe untuk SET
type
Digits = set of 0..9;
Letters = set of 'A'..'Z';
const
EvenDigits: Digits = [0, 2, 4, 6, 8];
Vowels: Letters = ['A', 'E', 'I', 'O', 'U',
'Y'];
HexDigits: set of
'0'..'z' = ['0'..'9', 'A'..'F', 'a'...f'];
|
Mendeklarasikan konstanta bertipe untuk tipe data sederhana
const
Maximum: Integer = 9999;
Factor: Real = -0.1;
Breakchar: Char = #3;
|
Mendeklarasikan konstanta bertipe untuk tipe data string
const
Heading: string[7] = 'Section';
NewLine: string[2] = #13#10;
TrueStr: string[5] = 'Yes';
FalseStr: string[5] = 'No';
|
OPERASI
DI PASCAL
Operasi Aritmatika
Operasi
Aritmatika adalah operasi untuk melaksanakan suatu proses perhitungan. Hasil
dari operasi ini diberikan pada variabel yang dapat menampung nilai numerik.
Seperti yang telah ditulis pada pembahasan tipe bilangan bulat dan real,
operator pada operasi aritmatika adalah:

Operasi Logika
Operasi
logika menggunakan sistem bilangan biner untuk perhitungannya. Ada 6 buah
operator logika yang
dikenal
Pascal, yaitu:

Operasi Boolean
Operasi
boolean menggunakan operand yang bertipe boolean serta hasil boolean untuk
operasinya. Ada 4 operator boolean yang dikenal Pascal, yaitu:

Operasi String
Operasi
string pada Pascal hanya mengenal sebuah operator yaitu operator + atau
penggabungan antar string.
Operasi himpunan
Pada
operasi himpunan selalu menggunakan tipe data himpunan (set) untuk operator
maupun operannya.
Ada
3 macam operator pada operasi himpunan, yaitu:

Operasi Relasi
Operasi
ini digunakan untuk melakukan perbandingan dan menghasilkan boolean (true atau
false) yang menunjukkan perbandingan tersebut bernilai benar atau salah.

STATEMENT
Statement
adalah perintah yang dikenal oleh Pascal. Dalam bahasa Pascal terdapat 11
statement, artinya SEMUA program dalam Pascal hanya menggunakan kombinasi dari
ke-11 statement ini saja. Statementstatement
yang
dikenal Pascal adalah :
1.
Assignment (pemberian nilai)
2.
Compound (penggabungan)
3.
IF – THEN – ELSE
4.
CASE – OF
5.
FOR – TO – DO
6.
REPEAT – UNTIL
7.
WHILE – DO
8.
WITH
9.
Procedure Call
10.
Goto
11.
Inline
1. Assignment (Pemberian nilai)
Statement
Assignment digunakan untuk memberikan nilai pada sebuah variabel.
Sintaks penulisan:
Variabel := nilai
Contoh
1:
var a,b:byte;
begin
a:=10;
a:=a*4;
if a>5 then b:=40;
end.
2. Compound Statement
Digunakan
untuk menggabungkan beberapa statement. Dalam teks lain disebutkan:
Compound statements are a group of statements, separated by
semicolons, that are surrounded by the keywords
Begin and End. The Last statement doesn't need to be followed
by a semicolon, although it is allowed.
Sintaks Penulisan:
begin
statement;
statement;
…
statement
end
Contoh:
if a>5 then
begin
a:=a*4;
b:=a-4
end.
3. IF – THEN – ELSE Statement
Merupakan
perintah percabangan yang akan menjalankan statement sesuai dengan kondisi yang
ada. Ada 2 macam sintaks penulisan IF – THEN – ELSE:
IF kondisi THEN statement
Dan
IF kondisi THEN statement ELSE statement
Contoh:
If a>5 then a:=a+1;
If a-4=2 then begin a:=2;b:=a end;
if (a=3) and (b=2) then
begin
a:=a-1;
b:=a
end else b:=3;
if a>5 then a:=4
else begin
a:=4 mod b;
b:=b-1
end;
4. FOR – TO / DOWNTO – DO Statement
Digunakan
untuk mengulang statement
Sintaks penulisan
FOR variabel := awal TO akhir DO statement
Atau
FOR variabel := akhir DOWNTO awal DO statement
Catatan:
Statement
akan diulang sebanyak akhir-awal+1. Selama perulangan, nilai variabel akan
bernilai dari
awal
sampai akhir
Contoh:
{Program 1} {Program
2}
var var
a:byte; a,b:byte;
begin begin
for a:=1 to 5 do for
a:=5 downto 2 do
write(a); for
b:=1 to a do write(a+b)
end. end.
5. CASE OF Statement
Statement
case digunakan untuk perintah bercabang dengan banyak kondisi. Terdiri dari
ekspresi (atau biasa disebut dengan selector) dan serangkaian statement.
Sintaks penulisan:
case expression of
case: statement;
...
case: statement;
end
Atau:
case expression of
case: statement;
...
case: statement;
else
statement
end
Catatan:
Jika pada sebuah kondisi dapat terdiri dari banyak range, maka
dapat kondisi-kondisi yang ada dapat dipisahkan
dengan koma.
Contoh:
case Ch of
'A'..'Z', 'a'..'z': WriteLn('Letter');
'0'..'9': WriteLn('Digit');
'+', '-', '*', '/': WriteLn('Operator');
else
WriteLn('Special character');
end;
6. Repeat – Until Statement
Perintah
yang ada di dalam statement repeat – until akan diulang sehingga kondisi
boolean pada until bernilai true.
Sintaks penulisan:
repeat
statement;
statement;
...
statement
until expression
Contoh:
repeat Ch := GetChar until Ch <> ' ';
repeat
Write('Enter value: ');
ReadLn(I);
until (I >= 0) and (I <= '9');
Catatan:
GetChar pada contoh pertama merupakan statement procedure call.
7. While – Do Statement
Statement
while terdiri terdiri dari sebuah ekspresi boolean yang mengontrol eksekusi
dari sebuah
statement.
Sintaks Penulisan:
While expression do statement;
Atau
While expression do
Begin
Statement;
Statement;
...
End.
Contoh:
while Ch = ' ' do Ch := GetChar;
while not Eof(InFile) do
begin
ReadLn(InFile, Line);
WriteLn(OutFile, Line);
Inc(LineCount);
end;
Catatan:
Contoh kedua adalah statement while yang menggunakan compound
statement di dalamnya.
8. Statement With
Statement
with digunakan untuk mereferensi field pada sebuah record.
Sintaks Penulisan:
with var, var, ... var do statement
Contoh:
with Date[I] do
begin
month := 1;
year := year + 1;
end;
Ekivalen
dengan perintah:
Date[I].month := 1;
Date[I].year := Date[I].year + 1;
Standard Input / Output
Sebuah
program komputer, selalu bekerja dengan 3 tahap, yaitu:
- Tahap 1 : MASUKAN
- Tahap II : PROSES
- Tahap III : KELUARAN
Contoh:
Program
untuk menghitung nilai dua bilangan bulat A dan B, maka:
- masukan : A dan B
- proses : C=A + B
- keluaran : C
Dalam
bahasa Pascal:
var a,b,c:word;
begin
write(‘Nilai A : ‘);readln(a); {masukan}
write(‘Nilai B: ‘);readln(b); {masukan}
c:=a+b; {proses}
write(‘Hasil penjumlahan A+B : ‘,c) {keluaran}
end.
Standard Masukan
Standard
masukan pada Pascal adalah keyboard. Artinya semua masukan dimasukkan lewat
keyboard. Standard output pada Pascal adalah monitor. Artinya semua output
ditampilkan pada layar monitor. Misalkan diminta untuk membuat program yang
mencari nilai terbesar dari 1.000 buah data. Untuk program tersebut, entry data
satu persatu melalui keyboard menjadi cara yang tidak efisien, karena setiap
kali program di-RUN, akan meminta 1.000 masukan. Untuk itu, standard input
dapat dialihkan ke sebuah file teks. Artinya, input tidak lagi dimasukkan dari
keyboard, melainkan lewat sebuah file teks. Nantinya file teks inilah yang
dibaca setiap kali program di-RUN (sehingga user tidak perlu menginput lagi).
Pada
Pascal, untuk merubah standard input ke file teks adalah dengan perintah:
Assign(input,namafile);
Reset(input);
Namafile
pada perintah assign berupa string yang menunjukkan nama file untuk file yang
hendak dibaca.
Setelah
kedua perintah tersebut, semua perintah READLN, langsung akan membaca dari
namafile.
Standard Keluaran
Standard
keluaran pada Pascal adalah layar monitor. Namun layar monitor hanya dapat menampilkan
maksimal 25 baris dan 80 karakter tiap barisnya. Jika diminta untuk membuat
program yang dapat menampilkan output lebih dari 25 baris, maka layar monitor
tidak lagi dapat menjadi standard output yang baik.
Untuk
merubah standard output pada Pascal:
Assign(output,namafile);
Rewrite(output);
Namafile
berupa string yang menunjukkan nama file yang hendak dibuat / ditulis. nSetelah
kedua perintah tersebut, hasil output (dari perintah write), akan ditulis pada
namafile.
Cara
lain untuk merubah standard input atau output adalah dengan mendeklarasikan
sebuah variabel bertipe text.
Contoh:
Var
finput, foutput:text;
Begin
assign(finput,’Input.in’);
reset(finput);
readln(finput,a,b,c);
close(input)
{... proses ...}
assign(foutput,’output.out’);
rewrite(foutput);
write(foutput,’something’);
close(foutput);
End.
Perlu
diperhatikan agar seperlunya saja membuka file. Jika file tersebut sudah tidak
diperlukan lagi, maka sebaiknya diberikan perintah close(f). Begitu juga untuk
membuat file, jika output belum siap ditulis karena masih dalam proses,
sebaiknya file tersebut tidak di-rewrite terlebih dulu.
Perintah –perintah berikut ini adalah perintah –perintah yang tidak perlu menggunakan perintah USES pada awal program, lebih tepatnya tidak perlu menggunakan Uses System. Semua perintah yang tergabung dalam Unit System bisa langsung diterjemahkan oleh kompiler turbo pascal. Sebab perintah – perintah yang ada dalan Unit System adalah perintah – perintah utama dalam Turbo Pascal. Tetapi jika anda memasukkan perintah dari unit lain, maka perintah USES harus diberikan pada awal program diikuti nama unit dari perintah yang bersangkutan.
Berikut adalah perintah-perintah Unit System Golongan Arithmatic:
Int :
Perintah untuk mengabaikan angka dibalik koma. Penggunaannya : Int(45,78)=45
Frac:
Mengambil desimal suatu bilangan. Frac(45,78)=0,78 . (Frac=Fraction)
Sqr:
Mencari pangkat 2 dari suatu bilangan. Sqr(3)=9. (Sqr=Square)
Sqrt:
Mencari akar pangkat dua dari suatu bilangan. Sqrt(16)=4. (Sqrt=Square Root)
Exp:
Untuk mencari eksponensial (exponential) dari suatu bilangan. Contoh Exp dari 1 =2,72
Ln:
Mencari logaritma natural dari suatu bilangan. (Ln=logarithma natural).
Pi :
Untuk memasukkan bilangan pi (3,1415926536)
Sin :
Untuk mencari Sinus dari suatu bilangan dalam satuan radian.
Bentuk umumnya adalah: Sin(angka)
Untuk mengkonversi kedalam derajat, maka harus ditambahkan rumus:Sin(Angka/(180/Pi).
Cos:
Untuk mencari Cosinus dari suatu bilangan dalam satuan radian.
Bentuk umumnya adalah : Cos(angka)
Untuk mengkonversi kedalam derajat maka harus ditambahkan rumus:Cos(angka/(180/Pi)
Tan:
Turbo pascal tidak menyediakan perintah untuk mencari tangen dari suatu bilangan. Tetapi dengan perintah Sinus dan Cosinus, maka Tangen dari suatu bilangan dengan dicari dengan rumus : Tan=Sin(angka)/Cos(angka)
Arctan:
Untuk mencari Arctangen dari suatu bilangan.
ArcSin:
Sama dengan Tan, Turbo Pascal tidak menyediakan perintah untuk mencari Arcsinus dari suatu bilangan. Tetapi dengan adanya perintah Arctan, Sqr dan Sqrt, maka ArcSin dari suatu bilangan dapat dicari dengan rumus : ArcSin(x)=ArcTan(x/Sqrt (1-Sqr(x))), dimana x adalah bilangan Real.
ArcCos:
Turbo pascal tidak menyediakan ArcCos.Rumusnya adalah : ArcCos(x)=ArcTan(sqrt(1-sqr(x)) /x), dimana x adalah bilangan Real.
Abs:
Untuk mencari absolut (menghilangkan tanda negatif) dari suatu bilangan.
Tidak ada komentar:
Posting Komentar