Senin, 05 Oktober 2009

BAHASA PEMROGRAMAN PASCAL

A. Sejarah Singkat Bahasa PASCAL
Bahasa PASCAL pertama kali dikembangkan pada awal tahun 70-an oleh NICLAUS WIRTH di Technical University, Zurich – Swiss. Nama PASCAL diambil dari nama seorang ahli matematika bangsa Perancis, yaitu BLEISE PASCAL yang telah berjasa menemukan alat hitung mekanis pertama didunia pada abad ke-17.
Bahasa pemrograman ini termasuk kategori “High Level Language”. Instruksi-instruksi yang digunakan dalam bahasa pemrograman ini sangat sistematis dan terstruktur. Pada Awalnya bahasa pemrograman ini diperkenalkan dengan tujuan untuk menjelaskan masalah pemrograman komputer bagi mahasiswa yang belajar pemrograman komputer. Ternyata dalam waktu singkat, nbhasa pemrograman ini menjadi salah satu bahasa yang sangat populer di kalangan universitas, sehingga menjadi julukan sebagai bahasa universitas. Mulai dari awal perkembangannya hingga saat ini banyak sekali jenis bahasa pemrograman ini, masing-masing merupakan hasil pengembangannya, antara lain UCSD Pascal, Microsoft Pascal, Apple Pascal, Turbo Pascal, dsb. Di antara versi-versi yang ada, Turbo Pascal merupakan versi yang sangat populer saat ini.

B. Struktur Dan Komponen Dasar Program Pascal
1. Struktur Program
Struktur program Pascal dapat dikelompokkan dalam tiga bagian, yaitu:
1. Kepala Program
2. Bagian Deklarasi
3. Bagian Pernyataan/Statemen
Kepala program terdiri dari kata program dan nama program. Kepala program bisa tidak dituliskan. Bagian deklarasi berisi konstanta dan variabel yang akan dipakai. Bagian statemen berisi perintah-perintah yang harus harus dikerjakan dan dimengerti oleh bahasa Pascal.
Struktur:
Judul Program PROGRAM nama-program;
Blok Program
Bagian deklarasi
- deklarasi label LABEL nama-label;
- deklarasi konstanta CONST…………..;
- deklarasi tipe TYPE …………….;
- deklarasi variabel VAR ……………...;
- deklarasi prosedur PROCEDURE nama-prosedur;
……………………………….;
- deklarasi fungsi FUNCTION nama-fungsi;
………………………….;
Bagian Pernyataan
Begin
(statement)
…………;
…………;
end.

Contoh : Menghitung luas bidang berbentuk empat persegi panjang dengan panjang P
dan lebar L.
PROGRAM Luas; {Judul}
VAR P,L,Luas : real; {Deklarasi variabel}
BEGIN
Read (P,L); {Statemant}
Luas := P*L; {Statement}
Write (P,L,Luas); {Statement}
END.

Beberapa aturan dalam program Pascal :
Akhir sebuah program Pascal ditandai dengan tanda baca titik (.) setelah END yang paling akhir.
Tanda titik koma (;) merupakan pemisah antar instruksi satu dengan lainnya. Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma (;), contoh : simpan := akhir; akhir := simpan + awal;
Baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan }
Contoh : Var rerata : real; (*nilai rata-rata*)
Nil1 : real; {nilai ujian}
Statement (pernyataan)
Adalah instruksi atau gabungan instruksi, yang menyebabkan komputer melakukan aksi.
Type statement dalam Pascal terdiri atas :
1.Sederhana :
menandai sebuah item data ke sebuah variabel (assigment statement)
contoh : X := Y * 4.135
pemanggilan procedure dan goto statement
2.Terstruktur:
Compound Statement
contoh : Begin
read (x) ;
y := x + 5;
write (y)
End.
- Repetitive Statement
contoh : For I := 1 to 100 do
write (count);
- Conditional Statement
contoh : If x > 100 then write (s)
else write (p) ;

2. Komponen Dasar Program
Pola susun bahasa Pascal dibentuk dengan menggunakan komponen bahasa pemrograman yang umum, yaitu :
1)Simbol Dasar
2)Reserved Word (kata pasti)
3)Identifier (penyebut)
1)Simbol Dasar.
Simbol dasar terdiri atas :
1.Simbol huruf, yaitu huruf A sampai dengan Z atau a sampai dengan z .(huruf besar dan kecil).
2.Simbol angka atau digit yaitu : 0,1,2,3,4,5,6,7,8,9 dan simbol khusus, yaitu + - * / ; := , ‘ = < > <= >= <> : { } ( ) [ ]
2)Reserved Word (kata pasti)
Reserved Word adalah suatu kata yang secara mutlak tidak boleh diartikan lain dan harus digunakan sebagaimana yang telah didefinisikan atau ditentukan kegunaanya oleh bahasa Pascal. Reserved word ini tidak boleh didefinisikan ulang oleh pemakai, sehingga tidak dapat dipergunakan sebagai pengenal (identifier). Reserved Word ini jumlahnya berbeda untuk masing-masing bahasa Pascal.
Contoh beberapa reserved word yang telah didefinisikan oleh bahasa pascal antara lain AND, ELSE, LABEL, SET, ARRAY, END, OF, TYPE, BEGIN, FUNCTION, OR, UNTIL, CASE, FOR, PROCEDURE VAR, CONST, GOTO, PROGRAM, WHILE, DO, IF, RECORD, WITH, DOWNTO, IN, REPEAT, dsb

3)Identifier (sebutan/pengenal)
Identifier merupakan sebuah kata yang digunakan sebagai nama atau sebutan terhadap sesuatu didalam program. Pemakai dapat mendefinisikan sendiri suatu nama sebagai identifier.
Identifier ini terdiri atas :
1.Identifier Standar, yaitu identifier yang telah didefinisikan oleh bahasa pascal.
Contoh dari Identifier standar ini antara lain: ABS, LN, ARCTAN, ODB, BOOLEAN, PRED, CHAR, ROUND, CHR, READ, COS, READLN, EOF, SQR, EOLN, SQRT, EXP, SUCC, dan masih banyak lagi.
2. Identifier Non Standar; yaitu identifier yang didefinisikan oleh pemakai bahasa pascal; misalnya; nama suatu program, nama suatu konstanta, nama suatu variable, nama suatu procedure. Identifier ini bebas, tetapi dengan ketentuan-ketentuan sebagai berikut :
a. terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Huruf besar dan huruf kecil dianggap sama.
b. Tidak boleh mengandung blank.
c. Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah.
d.Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan.
Contoh :
Identifier
Keterangan
GajiKaryawan
Benar
No_Mhs
Benar
P3K
Benar
1X
Salah, karakter pertama harus huruf
A&B
Salah, tidak boleh mengandung simbol khusus
A B
Salah, tidak boleh mengandung blank

C. |PROSEDUR (PROCEDURE)
Deklarasi :
Procedure NamaProcedure(DaftarParameter) ;
{Deklarasi}
Begin
.............
.............
End ;
Pemanggilan Procedure :
Suatu procedure bukan merupakan program yang berdiri sendiri sehingga tidak dapat dieksekusi secara langsung. Untuk itu suatu procedure memerlukan sebuah akses pada program utama / modul lain yang befungsi sebagai pemanggil. Sedangkan cara pemanggilannya adalah dengan : menuliskan nama procedurenya berikut parameternya (jika ada).
Hal-hal yang berhubungan dengan procedure :
Ada beberapa hal yang berhubungan dengan penulisan sebuah procedure program yaitu:
– Variabel Global dan variabel Lokal
Variabel Global adalah variabel yang dapat dikenali diseluruh bagian program biasanya variabel ini merupakan variabel yang dideklarasikan pada deklarasi program umum.
Variabel Lokal adalah variabel yang dikenal pada lingkup yang lebih sempit dari pada variabel global.
– Parameter
Ada 2 paramete yang berlaku dalam sebuah procedure, yaitu :
– Parameter Aktual
Yaitu parameter yang dideklarsikan mengikuti pendeklarasian program utama
– Paramete Formal
Yaitu parameter yang dituliskan mengikuti pemanggilan procedure

Aturan antara parameter formal dan parameter aktual :
– Banyaknya parameter aktual harus sama dengan banyaknya parameter formal
– Tiap-tiap parameter aktual harus bertipe sama dengan parameter formal yang bersesuaian
– Tiap-tiap parameter aktual harus diekspresikan yang sesuai dengan parameter formal

Pengiriman parameter :
– Pengiriman parameter secara nilai (by Value)
– Tiap-tiap parameter dalam prosecure utama akan beisi nilai yang dikirim oleh parameter aktual dan bersifat lokal diprocedure
– Pengiriman nilai parameter secara by value merupakan pengiriman searah, artinya hanya dari parameter aktual ke parameter formal
– Perubahan parameter formal tifak mempengaruhi terhadap nilai parameter aktual
– Pengiriman parameter secara acuan (by Reference)
– Merupakan pengiriman dua arah yaitu dari parameter aktual ke parameter formal dan dari parameter formal ke parameter aktual sebagai hasil output dari procedure
– Perubahan nilai pada parameter formal mempengaruhi pada parameter aktual
– Dicirikan dengan pengunaan deklarasi VAR , pada parameter procedurenya

Contoh program yang menggunakan procedure :
Program KOMBINASI;
uses crt;
var f1,f2,f3:longint;
n,r,delta:integer;
c: real;
Procedure facto( n:integer; var f:longint);
var i:integer;
begin
f:=1;
for i:=1 to n do
f:= f * i;
end;
{======================PROGRAM UTAMA=======================}
Begin
clrscr;
gotoxy(12,3);
write('Kita akan menghitung nilai kombinasi dari suatu angka');
gotoxy(19,4);
writeln('Yang mempunyai rumus : rCn = n!/(r!(n-r)!)');
gotoxy(20,5);
writeln('Nilai r harus lebih kecil/sama dengan n');
writeln;gotoxy(28,6);
write('Masukkan nilai n :',' ');readln(n);
writeln;gotoxy(28,8);
write('Masukkan nilai r :',' ');readln(r);
facto(n,f1);
facto(r,f2);
delta:=(n-r);
facto(delta,f3);
c:= f1/(f2*f3);gotoxy(30,10);
write('Hasilnya :',' ',c:2:0);
readln;
end.
Hasil Run Program :
Menghitung nilai kombinasi dari suatu angka
Yang mempunyai rumus : rCn = n!/(r!(n-r)!)
Nilai r harus lebih kecil/sama dengan n
Masukkan nilai n : 6
Masukkan nilai r : 2
Hasilnya : 15

|D. FUNGSI (FUNCTION)
Deklarasi :
Function NamaFungsi(NamaParameter) : TipeData ;
{Deklarasi}
Begin
...........
...........
End ;
Struktur dari fungsi ini hampir sama dengan procedur hanya saja function harus dideklarasikan beserta tipe datanya dan fungsi ini adalah mengembalikan nilai sehingga Tipe data dalam sebuah function menunjukkan tipe dari data akhir dari deklarasi sebuah fungsi.
Suatu fungsi dapat dipanggil dengan menggunakan beberapa cara, misalkan :
Nama Fungsinya adalah Rata, maka ia akan dapat dipanggil dengan menggunakan
Rata2 : = Rata(vector,Ukuran) ;
X : = Y + Rata(vector,Ukuran) ;
Write(‘Nilai rata-ratanya = ‘, rata(vector,ukuran));
Perbedaan prinsip antara procedure dengan function :
Pada function nilai yang dikirim balik terdapat nama fungsinya (Karena nama fungsi digunakan untuk menampung nama fungsi yang terakhir)
Function dapat langsung ditampikan hasilnya. Misal : writeln( Hitung(X,Y)) ;

Contoh Fungsi Pangkat3
function pangkat3 (N:integer):
integer;
(* fungsi yg menghasilkan pangkat3 *)
(* dari sebuah bilangan integer *)
begin
pangkat3 := N * N * N;
end (*pangkat3*);


Contoh Fungsi Pemanggil Pangkat3
program mainP3;
(* program pemanggil pangkat3 *)
function pangkat3 (N:integer): integer;
(* fungsi yg menghasilkan pangkat3 *)
(* dari sebuah bilangan integer *)
begin
pangkat3 := N * N * N;
end (*pangkat3*);
var N,P3:integer;
begin
readln(N);
writeln(pangkat3(N));
N := N + 10;
P3 := pangkat3(N);
writeln(P3);
end (*mainP3*).

E. ARRAY
Array merupakan tipe data berstruktur yang berisi sekumpulan komponen elemen dengan tipe sama, yang menggunakan identifier yang sama, dengan masing-masing elemen memiliki indeks tersendiri, yang biasa dinamakan indeks array. Melalui indeks array ini, setiap elemen dalam array dapat diakses secara langsung. Pendefinisian tipe array terdiri dari kata baku ARRAY diikuti dengan tipe indeks yang diletakkan dalam tanda kurung siku, kata baku OF dan kemudian tipe-komponen.
ARRAY[tipe-indeks-1,…..,tipe-indeks-n] OF tipe-komponen
Jumlah tipe- indeks dapat terdiri lebih dari satu. Jika terdapat lebih dari satu tipeindeks, maka tipe-indeks yang satu dengan lainnya dipisahkan dengan tanda koma. Masing- masing tipe dari tipe-indeks dapat berbeda. Perlu diketahui, tipe dari tipe- indeks dapat berupa sembarang tipe ordinalm kecuali integer. Jadi dapat berupa tipe cahr, boolean atau tipe skalar buatan dan juga tipe subrange. Tipe indeks menyatakan tipe nilai dari indeks array. Tipe-komponen menyatakan tipe dari elemen yang terdapat dalam array dan dapat berupa sembarang tipe. Contoh deklarasi tipe array :
TYPE
Buahcatur = (Pion, Gajah, Benteng, PerdanaMenteri, Raja);
Warna=(Putih, Hitam);
Pilihan = ARRAY [warna,1..6] of BuahCatur
Pada contoh di atas, Pilihan mengandung dua tipe indeks, dengan tipe pertama
berupa skalar buatan dan tipe kedua berupa subrange.
1. Array Berdimensi Satu
Array berdimensi satu merupakan array dengan ciri memiliki tipe- indeks hanya sebuah dan tipe-komponen tidak berupa array. Contoh array berdimensi satu :
VAR x : ARRAy [1..8] of real;] Menyatakan bahwa indeks-array dari variabel x dapat berupa 1,2,3,…,8 dan isi array bertipe real. Sedangkan VAR Huruf : ARRAy [‘A’..”Z’] of integer; Menyatakan bahwa indeks-array dari variabel Huruf dapat berupa karakter A, B, C, …, Z dan tipe isi array adalah integer. Ukuran Array x sama dengan 8. Ukuran Array Huruf sama dengan 26.
Pengaksesan terhadap suatu array, dapat dibedakan dalam dua macam operasi, yaitu penyimpanan dan pengambilan elemen array. Untuk menjelaskan hal ini, diambil contoh :
TYPE
DaftarNilai = ARRAY[1..3] OF integer;
VAR
D : DaftarNilai;
Pendeklarasian seperti di atas menginstruksikan kepada compiler supaya menyediakan 3 lokasi memori untuk menyimpan data integer dari variabel D, yaitu lokasi dari D[1], D[2], dan D[3]. Jadi masing-masing indeks-array[1..3] dari D memiliki lokasi penyimpanan tersendiri. Untuk menyimpan suatu nilai ke dalam lokasi penyimpanan, dapat dilakukan dengan instruksi dengan instruksi D[i] := nilai, dengan i merupakan indeks-array dan nilai adalah bilangan yang hendak disimpan di D[i]. Sebagai contoh :
D[1]:=320;
setelah pengeksekusian pernyataan, D[1] bernilai 320.
Untuk mengambil isi array D, misalnya D[1], dapat digunakan instruksi :
Writeln(D[1]); yang akan menampilkan nilai D[1] pada layar. Contoh lain :
X:=D[1]; memberikan nilai dari D[1] ke variabel X.
2. Array Multidimensi
Yang termasuk dalam array multidimensi yaitu array yang memiliki lebih dari satu dimensi. Ciri dari tipe array ini, yakni mempunyai tipe- indeks lebih dari satu atau tipe-komponen berupa array yang lain. Contoh array dengan tipekomponen berbentuk array :
TYPE Matriks2D = ARRAY [1..3] OF ARRAY [1..5] OF integer; Matriks3D = ARRAY [1..2] OF ARRAY [1..3] OF ARRAY [1..5] OF char;
Matrik2D mengandung 3 elemen, dengan masing-masing elemen terdiri dari 5 elemen. Dengan kata lain, Matrik2D mempunyai 3 x 5 elemen. Tipe dari elemen integer. Matrik3D merupakan tipe array yang mengandung 2 x 3 x 5 elemen, dengan tipe elemen yaitu char. Bentuk seperti Matrik2D dan Matrik3D dapat disederhanakan menjadi :
TYPE Matriks2D = ARRAY [1..3 ,1..5] OF integer; Matriks3D = ARRAY [1..2 ,1..3 ,1..5] OF char;
Bentuk penulisan yang lain :
TYPE Matriks2D = ARRAY [1..3] [1..5] OF integer;
Matriks3D = ARRAY [1..2] [1..3] [1..5] OF char;
Tipe seperti Matriks2D dinamakan array berdimensi dua. Sedangkan bentuk seperti Matriks3D dinamakan array berdimensi tiga. Penggambaran array berdimensi dua, misalnya untuk variabel yang dideklarasikan :
VAR X : Matriks2D ;
kolom 1 kolom 2 kolom 3 kolom 4 kolom 5
Untuk mengakses setiap elemen dari X diperlukan dua buah indeks array. Indeks-array pertama untuk menunjuk baris, indeks-array kedua untuk menentukan kolom. Secara umum dapat dituliskan sebagai berikut :
X[ i , j]
Baris 1
Baris 2
Baris 3
Yang menyatakan elemen pada baris idan kolom j. Pada diagram, elemen yang ditandai dengan * memiliki identitas X[2,3]. Untuk array berdimensi tiga, identitas dari suatu elemen array ditentukan oleh tiga buah indeks-array. Contoh berikut menunjukkan car membuat isi keseluruhan elemen array X bernilai nol.
for i := 1 to 3 do
for j := 1 to 5 do
X [ i , j] := 0;
Proses membuat elemen array X sama dengan nol untuk perintah di atas dimulai dari X[1,1] kemudian X[1,2], X[1,3], X[1,4], X[2,1], X[2,2], X[2,3], X[2,4], X[3,1], X[3,2], X[3,3], X[3,4], X[4,1], X[4,2], X[4,3] dan terakhir X[4,4]
Contoh 1 :
Program deviasi_standar;
{ untuk menghitung nilai rata-rata, }
{ varians dan deviasi standart }
uses crt;
const maksdata = 25;
type arraydata = array[1..maksdata] of real;
var
i, n : integer;
data : arraydata;
jumlah, rerata, temp, varians, standev : real;
begin
clrscr;
write('Banyak Data : ');
readln(n);
writeln;
for i:= 1 to n do
begin
write('Data ke - ',i:2,' = ');
readln(data[i]);
end;
{menghitung jumlah dan rata-rata data}
jumlah :=0;
for i:=1 to n do
jumlah:=jumlah+data[i];
rerata:=jumlah/n;
{menghitung varian dan deviasi standar}
temp:=0;
for i:=1 to n do
temp:=temp+sqr(data[i]-rerata);
varians:=temp/n;
standev:=sqrt(varians);
{cetak hasil}
writeln;
writeln('Cacah data = ',n:10);
writeln('Jumlah data = ',jumlah:10:4);
writeln('Nilai rata-rata = ',rerata:10:4);
writeln('Varians = ',varians:10:7);
writeln('Deviasi standart = ',standev:10:7);
readln;
end.
Contoh 2 :
Program MengurutkanDataString;
{untuk mengurutkan data menurut abjad}
uses crt;
Type MaksString = string[30];
Var
i,j,n : integer;
temp : MaksString;
data : array[1..20] of MaksString;
begin
clrscr;
write('Jumlah Data : '); readln(n);
writeln; writeln('Data Semula : ');
writeln;
for i:=1 to n do
begin
write(i:2,'. ');
readln(data[i]);
end;
{proses pengurutan}
for i:=1 to n do
for j:=1 to n do
if data[i] < data[j] then
begin
temp:=data[i];
data[i]:=data[j];
data[j]:=temp;
end;
{cetak hasil}
writeln; writeln('Data setelah diurutkan : ');
writeln;
for i:=1 to n do
writeln(i:2,'. ',data[i]);
readln;
end.

















DAFTAR PUSTAKA

Hartono, Jogiyanto.2005. Teori dan Aplikasi Program Computer Bahasa Turbo Pascal(Jilid-1). Yogyakarta: ANDI OFFSET.
Mauirz, Ivan. Konsep Dasar Pemrograman Pascal.http://ivan_maurits.staff.gunadarma.ac.id/ :20 September 2009 pukul 13.59 WIB.
Novian, Agung. INOCHISoftware – Pascal. http: //IlmuKomputer.com : 20 September 2009 pukul 14.00 WIB.
http://www.scribd.com/doc/13491747/Bahasa-Pemrograman-Pascal.
http://id.wikipedia.org/w/index.php?title=TOKI&action=edit&redlink=1.

Tidak ada komentar:

Posting Komentar