Docstoc

Materi Pascal

Document Sample
Materi Pascal Powered By Docstoc
					Menampilkan bilangan ganjil

Berikut ini contoh bahasa Pascal untuk kasus pengulangan menggunakan: repeat .. until

Program pengulangan;

{program pengulangan menggunakan Repeat - Until
menampilkan bilangan ganjil
kerjakan aksi SAMPAI kondisi terpenuhi yaitu i>50
proses akan berhenti ketika nilai akhir i=51
}

uses wincrt; {ganti dengan uses crt; jika menggunakan compiler free pascal}

var
i:integer;

Begin
clrscr;
i:=1;
repeat
write(’ ‘,i);
i:=i+2;
until(i>50);
readln;
end.

Menampilkan bilangan genap

Berikut ini adalah contoh pengulangan while .. do dalam bahasa pascal.

Program Pengulangan;

{program pengulangan menggunakan (while - do)
tampilkan Bilangan GENAP
kerjakan aksi SELAMA kondisi terpenuhi yaitu i<50
proses akan berhenti ketika nilai akhir i=49
}

uses wincrt; {ganti dengan uses crt; jika menggunakan compiler free pascal}

var
i : integer;

Begin
clrscr;
i := 0;
while ( i<50 )
do
begin
i := i+2;
write(’ ‘,i);
end;
readln;
end.




                                                                                        1
 Penjumlahan Dua matriks

program penjumlahan_matrik;

uses crt;

const
j_baris=2;
j_kolom=2;

var
a,b,c : array[1..j_baris,1..j_kolom] of integer;
baris, kolom : integer;

begin
clrscr;
color_background(white);
textcolor(blue);
writeln(’Penetapan nilai matrik A’);
for baris:=1 to j_baris do
for kolom:=1 to j_kolom do begin
write(’Baris ke-’,baris,’ Kolom ke-’,kolom,’:');
readln(A[baris,kolom]);
end;

textcolor(red);
writeln(’Penetapan nilai matrik B’);
for baris:=1 to j_baris do
for kolom:=1 to j_kolom do begin
write(’Baris ke-’,baris,’ Kolom ke-’,kolom,’:');
readln(B[baris,kolom]);
end;

textcolor(green+blink);
writeln(’Perhitungan sedang dilakukan’);
for baris:=1 to j_baris do
for kolom:=1 to j_kolom do begin
C[baris,kolom]:= A[baris,kolom]+B[baris,kolom];
end;

textcolor(yellow);
writeln(’Nilai matrik C’);
for baris:=1 to j_baris do begin
for kolom:=1 to j_kolom do
write(C[baris,kolom]);
writeln;
end;
readln;
end.




Program Perkalian Dua Matriks

program perkalian_matriks;
uses crt;

const n_i=2;
n_j=2;
n_k=1;

var
A: array [1..n_i,1..n_j] of integer;
B: array [1..n_j,1..n_k] of integer;
C: array [1..n_i,1..n_k] of integer;
i,j,k:integer;



                                                   2
begin
clrscr;
writeln(’penetapan nilai matriks A’);

for i:=1 to n_i do
for j:=1 to n_j do
begin

write(’baris ke-’,i,’kolom ke-’,j,’ :’);
readln(A[i,j]);
end;

writeln(’penetapan nilai matriks B’);

for j:=1 to n_j do
for k:=1 to n_k do
begin

write(’baris ke-’,j,’kolom ke-’,k,’ :’);
readln(B[j,k]);
end;
writeln(’Perhitungsn sedang dilakukan ..’);
for i:= 1 to n_i do
for k:= 1 to n_k do
begin
C[i,k] :=0;

for j:= 1 to n_j do
C[i,k] := C[i,k]+A[i,j] * B[j,k];
end;
writeln(’Maka nilai matriks C’);

for i:=1 to n_i do
begin
for k:=1 to n_k do
write(C[i,k]:4);
writeln;

end;

readln;
end.

silahkan diperiksa kembali listing diatas, kemungkinan terjadi kesalahan dalam perhitungan. mohon kritik dan
saran demi pengembangan program ini..

thx. Joel...

Operator-Operator Matematika

- Operator
Exp :
+ : tambah
- : kurang
/ : bagi
* : kali
> : lebih dari
< : kurang dari = : sama dengan >= : lebih dari sama dengan
<= : kurang dari sama dengan <> : tidak sama dengan

- Penjumlahan
Exp :
Panjang:=10+A;
Sisi:=B+A+G+56;

- Pengurangan


                                                                                                               3
Exp :
Panjang:=10-A;
Hasil:=Laba-Pajak;

- Perkalian
Exp :
Panjang:=10*A*K;
Luas:=P*l;
L:=s*s;

- Pembagian
Exp :
Panjang:=A/3;
Hasil:=100/3;

- Campuran
Exp :
Hasil:=(((A+B)/2)-100)*3;
Luas:=(P*l)/2;

- Pangkat Dua
Exp :
Hasil:=SQR(5); -----> lima kuadrat.
Hasil:=SQR(r); -----> r kuadrat.

- Akar Dua
Exp :
Hasil:=SQRT(5); -----> Akar 2 dari 5
Hasil:=SQRT(n); -----> Akar 2 dari n

- Campuran
Exp :
LuasLing:=3.14*SQR(r);
K:=2*3.14*r;

Pensyaratan logika/Penyeleksian kondisi

Tingkat 1 _________________________________

If (Syarat) Then
(yang dilakukan saat syarat terpenuhi);

Keterangan :
Pernyataan Logika yang jika syaratnya terpenuhi, akan dikerjakan satu perintah. Jika syarat tidak terpenuhi, tidak dikerjakan
sesuatu.

Contoh :

If A:=10 Then
WriteLn('Selamat. Anda benar.');


Tingkat 2 _________________________________

If (Syarat) Then
(yang dilakukan saat syarat terpenuhi)
Else
(yang dilakukan saat syarat tidak terpenuhi);

Keterangan :
Pernyataan Logika yang jika syaratnya terpenuhi, akan dikerjakan satu perintah. Jika syarat tidak terpenuhi, akan dikerjakan
satu perintah lainnya.

Contoh :

If A:=10 Then
WriteLn('Selamat. Anda benar.')
Else



                                                                                                                                4
WriteLn('Anda belum beruntung.');


Tingkat 3 _________________________________

If (Syarat) Then
Begin
(yang dilakukan saat syarat terpenuhi);
(...);
End
Else
(yang dilakukan saat syarat tidak terpenuhi);

Keterangan :
Pernyataan Logika yang jika syaratnya terpenuhi, akan dikerjakan beberapa perintah. Jika syarat tidak terpenuhi, akan
dikerjakan satu perintah lainnya.

Contoh :

If B<>0 Then
Begin
H:=A/B;
WriteLn;
WriteLn('Harga H = ',H:13:2);
End
Else
WriteLn('Harga H Imajiner.');


Tingkat 4 _________________________________

If (Syarat) Then
Begin
(yang dilakukan saat syarat terpenuhi);
(...);
End
Else
Begin
(yang dilakukan saat syarat tidak terpenuhi);
(...);
End;

Keterangan :
Pernyataan Logika yang jika syaratnya terpenuhi, akan dikerjakan beberapa perintah. Jika syarat tidak terpenuhi, akan
dikerjakan beberapa perintah lainnya.

Contoh :

If B<>0 Then
Begin
H:=A/B;
WriteLn;
WriteLn('Harga H = ',H:13:2);
End
Else
Begin
WriteLn;
WriteLn('Harga H Imajiner.');
WriteLn('Harga B tidak boleh NOL.');
WriteLn('Silahkan coba lagi.');
End;




                                                                                                                        5
Tingkat 5.A _________________________________

If (Syarat1) Or (Syarat2) Then
Begin
(yang dilakukan saat salah satu syarat terpenuhi);
(...);
End
Else
Begin
(yang dilakukan saat kedua syarat tidak terpenuhi);
(...);
End;

Keterangan :
Pernyataan Logika yang jika salah satu syaratnya terpenuhi, akan dikerjakan beberapa perintah. Jika kedua syarat tidak
terpenuhi, akan dikerjakan beberapa perintah lainnya.

Contoh :

If (B<0) Or (C=0) Then
Begin
WriteLn;
WriteLn('Harga H Imajiner.');
WriteLn('Harga B tidak boleh kurang dari NOL dan.');
WriteLn('Harga C tidak boleh NOL.');
End
Else
Begin
H:=SQRT(B)/C;
WriteLn;
WriteLn('Harga H = ',H:13:2);
End;

Tingkat 5.B _________________________________

If (Syarat1) And (Syarat2) Then
Begin
(yang dilakukan saat Kedua syarat terpenuhi);
(...);
End
Else
Begin
(yang dilakukan saat salah satu / kedua syarat tidak terpenuhi);
(...);
End;

Keterangan :
Pernyataan Logika yang jika kedua syaratnya terpenuhi, akan dikerjakan beberapa perintah. Jika salah satu syarat tidak
terpenuhi, akan dikerjakan beberapa perintah lainnya.

Contoh :

If (B>=0) And (C<>0) Then
Begin
H:=SQRT(B)/C;
WriteLn;
WriteLn('Harga H = ',H:13:2);
End
Else
Begin
WriteLn;
WriteLn('Harga H Imajiner.');
WriteLn('Harga B tidak boleh kurang dari NOL dan.');
WriteLn('Harga C tidak boleh NOL.');
End;




                                                                                                                         6
Tingkat 5.C* _________________________________

Rumus Umum, sama seperti Tingkat 5.A

Keterangan :
Pernyataan Logika yang memadukan model-model di atas. Hasil yang diperoleh dari pernyataan seperti ini akan menampilkan
hasil yang lebih akurat dan efisien.

Contoh :

If (B<0) Or (C=0) Then
Begin
WriteLn;
If B<0 Then
WriteLn('Harga B tidak boleh kurang dari NOL.');
If C=0 Then
WriteLn('Harga C tidak boleh NOL.');
WriteLn('Harga H Imajiner.');
End
Else
Begin
H:=SQRT(B)/C;
WriteLn;
WriteLn('Harga H = ',H:13:2);
End;

Tingkat 5.D* _________________________________

Rumus Umum, sama seperti Tingkat 5.B

Keterangan :
Pernyataan Logika yang memadukan model-model di atas. Hasil yang diperoleh dari pernyataan seperti ini akan menampilkan
hasil yang lebih akurat dan efisien.

Contoh :

If (B>=0) And (C<>0) Then
Begin
H:=SQRT(B)/C;
WriteLn;
WriteLn('Harga H = ',H:13:2);
End
Else
Begin
WriteLn;
If B<0 Then
WriteLn('Harga B tidak boleh kurang dari NOL.');
If C=0 Then
WriteLn('Harga C tidak boleh NOL.');
WriteLn('Harga H Imajiner.');
End;




Bentuk Perulangan & penyeleksian kodisi

1. Bentuk – bentuk Perulangan

Dalam hampir setiap program yang kompleks mutlak memerlukan suatu perulangan dan
percabangan. Tujuan perulangan disini adalah untuk mengulang statement atau blok
statement berulang kali sesuai
sejumlah yang ditentukan pemakai. Dalam materi ini akan memberikan gambaran konsep
dasar dari pengertian diatas.

a) Perulangan For.
Perulangan dengan statemen For digunakan untuk mengulang statemen atau suatu blok
statemen berulang kali. Perulangan dengan statemen For dapat berupa perunlangan
positif dan perulangan negatif.



                                                                                                                          7
• Perulangan For positif
contoh : perulangan positif untuk satu statement :
Uses Crt;
Var
i : Integer;
Begin
For i := 1 To 5 Do Writeln ('I Love Dinda’);
END.
Maka bila program diatas dicompile
hasilnya :
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
Penjelasan : Berati statemen I Love Dinda akan diulang sebanyak 5 kali yaitu dengan
menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5.

# Contoh dengan menggunakan blok statement: cara penulisannya dengan pada awal blok
diawali dengan Begin dan pada akhir blok diakhiri dengan End;
Uses Crt;
Var
i : Integer;
Begin
For i:= 1 To 10 Do
Begin
Writeln ('I Love Dinda'); { blok statement }
End;
End.
Hasil yang akan didapat akan sama dengan contoh yang pertama, tapi yang harus diingat
disini untuk penggunaan blok pada perulangan For biasanya mempunyai banyak statement
[lebih dari 1 statement]


# Contoh 3 : Penggunaan perulangan For dalam blok statement untuk membuat tabel

Uses Crt;
Var
a,b,c : Integer;
bagi : Real;
Begin
Writeln('----------------------------------------------');
Writeln(' a a*a a*a*a 1/a ');
Writeln('----------------------------------------------');
For a := 1 To 10 Do
Begin
b:= a*a;
c:=a*a*a;
bagi := 1/a;
Writeln(a:4,c:10,d:10,bagi:12:3);
End;
Writeln ('----------------------------------------------');
End.
maka hasilnya :
----------------------------------------------
a a*a a*a*a 1/a
----------------------------------------------
1 1 1 1.000
2 4 8 0.500
3 9 27 0.333
4 16 64 0.250
5 25 125 0.200
6 36 216 0.167
7 49 343 0.143
8 64 512 0.125
9 81 729 0.111
10 100 1000 0.100
----------------------------------------------




                                                                                      8
• Perulangan For negatif : Perulangan negatif adalah perulangan dengan menghitung
(counter) dari besar ke kecil.

Statement yang digunakan adalah For-DownTo-Do
contoh :
Uses Crt;
Var
i : Integer;
Begin
For i := 10 DownTo 1 Do Write (i:3);
End.
Hasil :
10 9 8 7 6 5 4 3 2 1

• Perulangan For tersarang
Perulangan For tersarang adalah perulangan For yang berada pada perulangan yang
lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis,
kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang
lebih dalam lagi mulai dari nilai awalnya dan seterusnya.
Contoh :
Var
a,b : Integer;
Begin
For a := 1 To 3 Do
Begin
For b := 1 To 2 Do Write (a :4,b:2);
Writeln;
End;
End.
Hasil :
1 1 1 2
2 1 2 2
3 1 3 2

• Perulangan While - Do
Penyeleksian kondisi digunakan untuk agar program dapat menyeleksi kondisi, sehingga
program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari kondisi
yang diseleksi tersebut. Perulangan While – Do tidak dilakukan jika kondisi tidak
terpenuhi.
Contoh :
Uses Crt;
Var i : Integer;
Begin
i := 0;
While <>
Begin
Write (i:3);
Inc (i); { sama dengan i:=i+1 }
End;
End.
Hasilnya :
0 1 2 3 4

• Perulangan While – Do tersarang
Perulangan While – Do tersarang (nested While - Do) merupakan perulangan While – Do
yang satu di dalam perulangan While – Do yang lainnya.
Contoh :
Uses Crt;
Var
a, b : Integer;
Begin
ClrScr;
a:=1;
b:=1;
While a <>
Begin
a := a+1;
While b <>
Begin
Write (a:3,b:2);


                                                                                       9
b:=b+1;
End;
End;
Readln;
End.

• Perulangan Repeat - Until.
Repeat – Until digunakan untuk mengulang statement-statemen atau blok statement
sampai (Until) kondisi yang diseleksi di Until tidak terpenuhi.
Sintak dari statement ini adalah :
Contoh :
Var
i : Integer;
Begin
i:=0;
Repeat
i:= i+1;
Writeln (i);
Until i=5;
End.
hasil :
1
2
3
4
5

• Repeat – Until tersarang
Repeat – Until tersarang adalah suatu perulangan Repeat - Until yang satu berada
didalam perulangan Repeat – Until yang lainnya.
Contoh :
Var
a,b,c : Real;
Begin
Writeln('========================================');
Writeln(' sisi A sisi B Sisi C ');
Writeln (' =======================================');
a:= 1;
Repeat { perulangan luar }
b := 0;
Repeat{ perulangan dalam }
c:=Sqrt (a*a+b*b);
Writeln (a:6:2, b:9:2, c:9:2);
b:=b+5;
Until b>25; { berhenti jika b lebih besar dari 5 untuk
perulangan dalam }
a:=a+1;
Until a>3; { berhenti jika a lebih besar dari 3 untuk
perulangan luar }
Writeln(' =======================================');
End.



• Percabangan

 If - Then
Bentuk struktur If – Then adalah sebagai berikut :
If Kondisi Then Statement
Ungkapan adalah kondisi yang diseleksi oleh statement If. Bila kondisi yang diseleksi
terpenuhi, maka statement yang mengikuti Then akan diproses, sebaliknya bila kondisi
tidak terpenuhi, maka yang akan diproses statement berikutnya.
Misalnya :
If Pilihan = 2 Then
Begin{ jika kondisi terpenuhi, Yaitu jika pilihan = 2 }
......
......
End
Else{ jika kondisi tidak terpenuhi, yaitu jika pilhan tidak sama dengan 2}



                                                                                   10
Begin
.......
.......
End;
Contoh Program :
Uses Crt;
Var
Nilai : Real;
Begin
Write ('Jumlah Nilai :');
Readln (nilai); { Pemasukan data }
If nilai > 60 Then { seleksi kondisi variabel nilai }
Writeln('Lulus') { Dilaksanakan jika nilai lebih besar dari 60 }
Else
Writeln('Tidak lulus'); { Dilaksanakan jika variabel nilai lebih kecil dari 60 }
End.
Hasil :
Jika kita Memasukan 40 pada varibel nilai, Maka program diatas akan mencetak Tidak
lulus.

 If tersarang (nested If)
Struktur If tersarang merupakan bentuk dari suatu statement If berada di dalam
lingkungan statemen If yang lainya. Bentuk statement If tersarang sebagai berikut :

If kodisi1 Then atau If Kondisi1 Then
If kondisi2 Then Begin
statemen1 IF kondisi2 Then
Else statemen1
statemen2; Else
statemen2
End;

 Case - Of
Struktur Case – Of mempunyai suatu ungkapan logika yang disebut dengan selector dan
sejumlah statemen yang diawali dengan suatu label permasalahan (case label) yang
mempunyai tipe sama dengan selector.
Statement yang mempunyai case label yang bernilai sama dengan case label yang
bernilai sama dengan nilai selector akan diproses sedang statemen yang lainya tidak.

Bentuk struktur dari Case - Of:

Case Variabel Kondisi Of
Case – Label 1; Statement 1;
Case – Label 2; Statement 2;
Case – Label 3; Statement 3;
Case – Label 4; Statement 4;
........
........
Case – Label n ; Statement n ;
End ; { end dari case }

Daftar Case label dapat berupa konstanta, range dari konstanta yang bukan bertipe
real.
Contoh program ;
Program nilai;
Var
nil : Char ;
Begin
Write ('Nilai Numerik yang didapat :');
Readln (nil);
Case nil Of
'A': Writeln ('Sangat Baik’);
'B': Writeln('Baik’);
'C': Writeln('Cukup');
'D': Writeln('Kurang');
'E': Writeln('Sangat Kurang');
End;
End.
hasil : Nilai Numerik yang didapat : B Input Baik



                                                                                      11
Contoh Listing Program untuk Dicoba

1. Program input data dengan array.
Program Pemakaian_Array_Untuk_10_data_dengan_menggunakan_For;

Uses Crt;
Const
garis='------------------------------------------------------';
Var
nil1,nil2 : Array [1..10] Of 0..100; {Array dgn Type subjangkauan}
npm : Array [1..10] Of String [8];
nama : Array [1..10] Of String [15];
n,i,bar : Integer;
jum : Real;
tl : Char;
Begin
ClrScr;
{ pemasukan data dalam array }
Write ('Mau Isi Berapa Data:');
Readln (n);
For i:= 1 To n Do
Begin
ClrScr;
GotoXY(30,4+1); Write('Data Ke-:',i:2);
GotoXY(10,5+i); Write('NPM :'); Readln (npm[i]);
GotoXY(10,6+i); Write('Nama :'); Readln (nama[i]);
GotoXY(10,7+i); Write('Nilai 1 :'); Realdn(nil 1[i]);
GotoXY(10,8+i); Write('Nilai 2 :'); Readln(nil 2[i]);
End;
{ proses data dalam array }
ClrScr;
GotoXY(5,4); Write(Garis);
GotoXY(5,5); Write ('No');
GotoXY(9,5); Write ('NPM');
GotoXY(18,5); Write ('Nama');
GotoXY(34,5); Write ('Nilai 1');
GotoXY(41,5); Write ('Nilai 2');
GotoXY(47,5); Write ('Rata');
GotoXY(54,5); Write ('Abjad’);
GotoXY(5,6); Write (Garis);
{ proses Cetak isi array dan seleksi kondisi }
bar := 7;
For i:= 1 To n Do
Begin
jum:=(nil1[i]+nil2[i])/2;
If jum>= 90 Then tl:='A'
Else
If jum>80 Then tl:='B'
Else
If jum>60 then tl:='C'
Else
If jum 50 Then tl:='D'
Else
tl:='E';
{ cetak hasil yang disimpan di array dan hasil }
{ penyeleksian kondisi }
GotoYX(5,bar); Writeln(i:2);
GotoYX(9,bar); Writeln (NPM[i]);
GotoYX(18,bar); Writeln (NAMA[i]);
GotoYX(34,bar); Writeln (NIL1[i]:4);
GotoYX(41,bar); Writeln (NIL2[i]:4);
GotoYX(47,bar); Writeln (jum:5:1);
GotoYX(54,bar); Writeln (tl);
bar:=bar+1;
End;
GotoXY(5,bar+1);Writeln(garis);
Readln;
End.




                                                                     12
2. Program jendela bergerak.
Program Window_Bergerak_dgn_delay;
Uses Crt;
Var i : Integer;
Begin
For i:=1 To 15 Do
Begin
Sound (i*100);
Delay (100);
NoSound;
End;
TextBackGround(black);
ClrScr;
For i := 1 To 9 Do
Begin
TextBackGround(white);
Window (42-i*4,10-i,38+i*4,15+i);
ClrScr;
Delay(100);
End;
TextColor(15);
GotoXY(28,2);Writeln('c');
GotoXY (8,3); Writeln ('3');
GotoXY (28,4); Writeln ('A');
TextColor(black);
GotoXY (44,3); Writeln ('3');
GotoXY (44,2); Writeln ('&');
TextColor (29,4); Writeln ('U');
TextColor (red*25);
GotoXY (30,3); Writeln ('B E L A J A R');
TextColor (black);
GotoXY (5,5); Write('c');
For i := 6 To 64 Do
Begin
GotoXY (i,5); Writeln ('');
End;
For i := 6 To 20 Do
Begin
GotoXY(5,i); Writeln('3 ');
End;
GotoXY (5,21); Writeln (' ');
TextColor(white);
GotoXY(65,5); Write('U');
For i := 6 To 65 Do
Begin
GotoXY (i,21); Writeln(' `);
End;
For i := 6 To 20 Do
Begin
GotoXY(65,i); Writeln('3');
End;
GotoXY (65,21); Writeln ('c');
TextColor(yellow);
Readln;
End.

Agar lebih mahir silahkan lakukan latihan-latihan seperti contoh diatas dengan program yang berbeda key...!

Statement-statement pada Turbo pascal

Nah, sekarang anda sudah masuk ke bab statement pemrograman ….selamat mencoba…
Reserved Word Reserved Word adalah kata-kata baku yang digunakan dalam program dan
sudah terintergrated dalam pascal dan juga mempunyai bentuk serta kegunaan tertentu
yang telah didefinisikan oleh Pascal. Reserved Word tidak boleh didefinisikan kembali
oleh pemakai, sehingga tidak dapat digunakan sebagai pengenal (Identifier). Dalam
bahasa pemrograman Pascal, beberapa Reserved Word dalam Pascal anatra lain:
AND DOWNTO IN OF STRING
ASM ELSE INHERITED OR THEN
ARRAY END INLINE PACKED TO



                                                                                                              13
BEGIN EXPORTS INTERFACE PROCEDURE TYPE
CASE FILE LABEL PROGRAM UNIT
CONST FOR LIBRARY RECORD UNTIL
CONSTRUCTOR FUNCTION MOD REPEAT USES
DESTRUCTOR GOTO NIL SET VAR
DIV IF NOT SHL WHILE
DO IMPLEMENTATION OBJECT SHR WITH
.
Selain dari Reserved Word di atas, Turbo Pascal masih memiliki tambahan Reserved Word
berikut:
ABSOLUTE ASSEMBLER () FAR FORWARD INDEX

Beberapa Statemen Turbo Pascal
Statemen adalah perintah untuk pengerjaan program pascal. Statemen terletak di bagian
deklarasi statemen dengan diawali oleh kata cadangan BEGIN dan diakhiri dengan kata
cadangan END. Akhir dari setiap statemen diakhiri dengan titik koma [;]. Statemen
statemen dalam bahasa Pascal terdiri dari pernyataan yang berupa fungsi dan prosedur
yang telah disediakan sebagai perintah standar Turbo Pascal.

1. Statemen-statemen yang digunakan untuk input/output.

# Read/Readln [prosedur]. Perintah ini digunakan untuk memasukkan [input] data lewat
keyboard ke dalam suatu variabel.
Sintaks: Read/Readln(x); (ingat, selalu diakhiri dengan titik koma [;])
Keterangan : x = variabel.
Read = pada statemen ini posisi kursor tidak pindah ke baris selanjutnya.
Readln = pada statemen ini posisi kursor akan pindah ke baris selanjutnya setelah di
input.

# ReadKey [fungsi]. Untuk pembacaan sebuah karakter dari keyboard. Tipe data yang
dihasilkan adalah char.
Sintaks: ReadKey;

# Write/Writeln [prosedur]. Digunakan untuk menampilkan isi dari suatu nilai variable
dilayar.
Sintaks: Write/Writeln(x);
Keterangan : x = variabel.
Write/Writeln= statement ini digunakan untuk mencetak variable ke dalam monitor
Contoh :
Program input;
Uses Crt;
Var nm : String;
npm : String;
Begin
Clrscr;
Writeln ('masukkan nama dan NPM ');
Writeln ('------------------------------');
Write ('nama anda : ');
Readln (nm);
Writeln ('NPM anda : ');
Readln (npm);
End.
Bila dijalankan hasilnya adalah:
masukkan nama dan NPM
------------------------------
nama anda : ( di input )
NPM anda : ( di input )

2. Statemen-statemen yang digunakan untuk pengaturan letak layar.

# ClrScr [prosedur]. Perintah ini digunakan untuk membersihkan layar.
sintaks: ClrScr; [Clear screen]

# GotoXY[prosedur]. Untuk menempatkan posisi kursor pada layar.
Sintaks: GotoXY(X, Y: Byte);
Keterangan : X = sumbu X (posisi horisontal)
Y = sumbu Y (posisi vertikal)

# DelLine [prosedur]. Untuk menghapus sebuah baris pada posisi kursor dan menaikkan



                                                                                      14
baris-baris dibawahnya.
Sintaks: DelLine;

# InsLine [prosedur]. Untuk menyisipkan sebuah baris pada posisi kursor dan menggeser
kebawah tampilan-tampilan baris dibawahnya.
Sintaks: InsLine;

# Delay [prosedur]. Untuk menghentikan sejenak proses program.
Sintaks: Delay (MS: Word);
Keterangan : variable MS = ukuran waktu dalam milisecond.
Contoh :
Program Layar;
Uses Crt;
Var x : Char;
Begin
ClrScr;
GotoXY(35,10);Writeln (‘I Love Dinda');
Write (tunggu sebentar...!!');
Delay (5000);
InsLine;
GotoXY (35,11);Writeln ('Bayi sehatku');
GotoXY(01,13);Writeln ('Tekan Enter !');
Delay(1000);
GotoXY(15,12);
DelLine;
Read(x);
End.
Hasilnya adalah :
I Love Dinda
Bayi sehatku
tunggu sebentar...!!
Tekan Enter !

3. Statemen yang digunakan untuk memanipulasi string.

# ConCat[fungsi]. Untuk menggabungkan 2 atau beberapa variabel string.
Sintaks: ConCat (s1 [,s2,...,sn]: String) : String;
contoh: ConCat ('ABC','DEF') { ABCDEF }

# Copy [fungsi]. Mengambil satu atau beberapa karakter dari sebuah string.
Sintaks: Copy (S,Index,Count) : String;
Keterangan : S = sebuah string (string).
Index = posisi awal kita akan mengambil beberapa karakter (integer)
Count = banyaknya karakter yang akan diambil (integer).

# Delete [prosedur]. Menghapus sebagian karakter dari sebuah string.
Sintaks: Delete (S,Index,Count);
Keterangan : sama dengan statemen Copy.

# Insert [prosedur]. Menyisipkan satu atau beberapa karakter ke dalam sebuah string.
Sintaks: Insert (Source,var S,Index);
Keterangan : Source = sumber string untuk disisipi (string)
var S = string tujuan yang akan disisipi oleh string Source (string)
Index = posisi mulai (integer).

# Length [fungsi]. Memberikan nilai panjang dari suatu string (jumlah karakter dalam
string).
Sintaks: Length (S);
Keterangan : S = string
Length(S) menghasilkan nilai integer.

# Pos [fungsi]. Mencari posisi sebuah bagian string (substring) didalam sebuah
string.
Sintaks: Pos (Substr,S); {menghasilkan nilai Byte}
Keterangan : Substr = substring yang akan dicari posisinya didalam sebuah string S.
Bila bernilai 0 berarti nilai string yang dicari tidak ada.

# Str [prosedur]. Merubah nilai numerik ke dalam nilai string.
Sintaks: Str (N,S);



                                                                                      15
Keterangan :
N = data tipe integer,
S = data tipe string.

# Val [prosedur]. Merubah nilai string ke dalam nilai numerik.
Sintaks: Val (S,N,P);
Keterangan :
S = nilai string,
N = nilai real,
P = posisi salah.
Nilai string harus berisi angka, plus atau minus, bila tidak berarti kesalahan dan
letak kesalahannya ditunjukkan oleh variabel posisi salah. Jika benar, maka nilai
variabel tsb = 0 (nol).

# UpCase [fungsi]. Memberikan huruf kapital dari argumen.
Sintaks: UpCase (S);
Keterangan :
S = variabel bertipe karakter.
Contoh :
Program Man_String;
Uses Crt;
Var s : String;
l : Integer;
h : String;
Const a='Dinda';
b='Bayi ';
c='Sehatku';
Begin
ClrScr;
s:= ConCat (a,b,c);
Writeln (s);
Insert (' & ',s,6);
Writeln(s);
Delete (s,7,7);
Writeln (s);
h:=Copy (s,1,5);
Writeln (h);
l:= Length(s);
Writeln ('Panjangnya string S : ',l);
Writeln ('Posisi "Sehat" pada nilai S : ',POS('Sehat',s));
END.
Hasilnya adalah :
DindaBayiSehatku
Dinda & Bayi Sehatku
Dinda Sehatku
Dinda
Panjangnya string S : 16
Posisi "Sehat" pada nilai S : 7

4. Statemen-statemen untuk perhitungan aritmatik.

# Abs [fungsi]. Memberikan nilai mutlak dari suatu argumen.
Sintaks: ABS(x);

# ArcTan[fungsi]. Memberikan nilai dari fungsi arctangent dari perhitungan
goniometri.
Sintaks: ArcTan (x); ‘dimana x dapat bertipe real atau integer dan akan menghasilkan
nilai bertipe real.’

# Cos [fungsi]. Memberikan nilai dari fungsi Cosinus.
Sintaks: Cos (x);

# Exp [fungsi]. Menghitung nilai pangkat dari bilangan e (bilangan alam),yaitu
sebesar x.
Sintaks: Exp (x); ‘x dapat bertipe real atau integer dan akan menghasilkan nilai
bertipe real. ‘

# Frac [fungsi]. Untuk mendapatkan nilai pecahan dari suatu bilangan.
Sintaks: Frac (x); ‘Tipe dari x sama seperti yang diatas. ‘



                                                                                     16
# Int [fungsi]. Memberikan nilai integer (bilangan bulat) dari suatu variabel dengan
membuang bilangan di belakang koma.
Sintaks: Int (X);

# Ln [fungsi]. Digunakan untuk menghitung nilai logaritma alam (natural logarithm)
dari nilai x.
Sintaks: Ln (x);

# Sin [fungsi]. Memberikan nilai dari fungsi Sinus.
Sintaks: Sin (x);

# Sqr [fungsi]. Digunakan untuk menghitung nilai pangkat kuadrat dari suatu bilangan.
Sintaks: Sqr (x);
Tipe dari x bisa berupa real maupun integer. Dan hasilnya akan sama dengan tipe dari
x.

# Sqrt (fungsi). Digunakan untuk menghitung nilai akar dari suatu bilangan.
Sintaks: Sqrt (x);
Contoh :
Program Aritmatik;
Uses Crt;
Var x : Real;
Begin
Clrscr;
Write('Masukkan nilai dari X = ');
Readln (x);
If x <0>
Writeln('Nilai X = ',x:5:2);
Writeln ('Nilai eksponentialnya = ',EXP(x):9:3);
Writeln ('Nilai logaritma alamnya = ',LN(x):9:3);
Writeln ('Nilai integernya = ',INT(x):5:2);
Writeln ('Nilai fraksionalnya = ',FRAC(x):5:2);
Writeln ('Nilai X dipangkatkan = ',SQRT(x):9:3);
Writeln ('Nilai X diakarkan = ',SQRT(x):9:3);
Write('Nilai X jika dimasukkan dalam ');
Writeln('fungsi Sin,Cos,Tangen: ');
Writeln('- Sinus = ',Sin(x):9:3);
Writeln('- Cosinus = ',Cos(x):9:3);
Writeln('- Tangen = ',ArcTan(x):9:3);
End.
Hasilnya :
masukkan nilai dari X = -2.5
Nilai X = 2.50
Nilai eksponensialnya = 12,182
Nilai logarima alamnya = 0,196
Nilai integernya = 2.00
Nilai fraksionalnya = 0.50
Nilai X dipangkatkan = 6.250
Nilai X diakarkan = 1.581
Nilai X jika dimasukkan dalam fungsi Sin,Cos,Tangen:
- Sinus = 0.598
- Cosinus = -0.801
- Tangen = 1.190

5. Statemen-statemen untuk transfer nilai dari suatu variabel.

# Chr [fungsi]. Merubah nilai dari byte ke bentuk karakter yang sesuai dengan kode
ASCII.
Sintaks: Chr (x);
Keterangan : x bertipe byte
contoh : Writeln (Chr (61));
hasilnya : a

# Ord [fungsi]. Merubah nilai suatu variabel dari bentuk karakter ke bentuk longint.
Sintaks: Ord (x);
Keteranagn : x bertipe char
contoh : Writeln(Ord ('B'));
hasilnya : 42



                                                                                     17
# Round [fungsi]. Membulatkan data tipe real ke data tipe longint.
Sintaks: Round (x);
Keterangan : Jika nilai pecahan <> 0,5 maka dibulatkan keatas.
contoh : Writeln('10/3 dibulatkan = ',Round(10/3));
hasilnya : 10/3 dibulatkan = 3

# TRUNC [fungsi]. Membulatkan kebawah data tipe real ke data tipe longint.
Sintaks: Trunc (x);
contoh : Writeln('20/3 dibulatkan kebawah = ',Trunc (20/3));
hasilnya : 20/3 dibulatkan kebawah = 6

6. Statemen-statemen untuk memanipulasi data.

# Pred [fungsi]. Memberikan nilai sebelum nilai argumen dalam urutannya dalam ASCII.
Sintaks: Pred (x);

# Succ [fungsi]. Memberikan nilai sesudah nilai argumen dalam urutannya dalam ASCII.
Sintaks: Succ (x);

# Inc[fungsi]. Menambah (increments) nilai suatu variabel.
Sintaks: Inc (x,i); {i >= 1}

# Dec [fungsi]. Mengurangi (decrements) nilai suatu variabel.
Sintaks: DEC(x,i); {i >=1}

Contoh :
Progam Man_Data;
Uses Crt;
Type
hari = (hr0,hr1,hr2,hr3,hr4,hr5,hr6,hr7)
Var
urutanhr : hari;
Const
namahr : Array [hr1..hr7] of String
[6]=('Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu');
Begin
Writeln('Daftar Nama Hari);
urutanhr := hr0;
While Urutanhr <>
Begin
urutanhr := Succ(urutanhr);
Write('hari ke ',Ord(Urutanhr):2,' adalah ');
Writeln(namahr[urutanhr]);
End;
End.
hasilnya adalah :
Daftar Nama Hari
hari ke 1 adalah Senin
hari ke 2 adalah Selasa
hari ke 3 adalah Rabu
hari ke 4 adalah Kamis
hari ke 5 adalah Jumat
hari ke 6 adalah Sabtu
hari ke 7 adalah Minggu

7. Statemen-statemen tambahan (warna,suara dan window).

# TextColor [prosedur]. Untuk mengatur warna dari karakter-karakter di layar.
Sintaks: TextColor (color : Byte);
Catatan : untuk pilihan warna lihat pada buku Turbo Pascal yang anda miliki.
Daftar TextColor :
(2) Hijau Muda (3)Hijau pupus (4)Merah
(5)Ungu Tua (6) Kuning (7)Putih
(8)Biru Tua (9)Biru Cerah (10)Hijau Muda
(12)Merah Muda (13)Ungu Cerah (14)Kuning Muda
(15) Ungu Pupus (16)Hitam




                                                                                   18
Daftar TextColor dengan Blink :
(17)Biru Tua (18)Hijau Muda (19)Hijau Pupus
(20)Merah (21)Ungu Tua

# TextBackGround [prosedur]. Untuk mengatur warna latar belakang dari karakter-
karakter dilayar.
Sintaks: TextBackGround (Color : Byte);

# Window [prosedur]. Untuk membuat suatu jendela (window) yang terletak pada layar.
Sintaks: Window (x1,x2,y1,y2 : Byte);
x1,x2 = kordinat kiri atas dengan nilai maksimal sesuai dengan mode layar.
y1,y2 = kordinat kanan bawah dengan nilai maksimal sesuai dengan mode layar.

# TextMode [prosedur]. Untuk mengatur lebar layar, 80 kolom atau 40 kolom.
Sintaks: TextMode(Mode: Byte);
Default = C80

# Sound [prosedur]. Untuk mengaktifkan suara (beep) pada internal speaker.
Sintaks: Sound (Hz : word);
Untuk mengnonaktifkannya, gunakan statemen NoSound.
Contoh :
Program Layar2;
Uses Crt;
Begin
ClrScr;
Window (5,5,20,75);
TextBackGround(Red); ‘anda juga bisa menggunakan angka (4)
TextColor(Yellow);
Sound (220);
GotoXY(10,7);
Writeln('I Love Dinda');
GotoXY(11,7);
Writeln('Bayi Sehatku');
NoSound;
End.

PENDAHULUAN
Pascal adalah sebuah bahasa pemograman tempo dulu. Mungkin itu saja yang dapat
saya definiskan, karena saya yakin pembaca lebih tahu mengenai definisi lengkap dari
Pascal. Saya ingin berbagi ilmu walaupun cuma sedikit tentang pemograman dengan
Pascal.
Melalui tulisan ini, saya mencoba untuk mengulas program, prosedur dan fungsi
menarik yang bisa Anda coba dan terapkan dalam pemograman Pascal.
Beberapa yang dapat saya sampaikan, diantaranya:
1. Fungsi-fungsi String
2. Fungsi-fungsi Date
3. Fungsi-fungsi Konversi
4. Program Permainan
Semoga bahasan ini menjadi menarik dan bermanfaat untuk Anda semua.
FUNGSI-FUNGSI STRING
Berikut ini adalah fungsi-fungsi untuk memanipulasi data String. Jalankan aplikasi
Pascal Anda, ketikkan kode berikut:
PROGRAM MANIPULASISTRING;
USES CRT;
a. Lower Case
Fungsi ini akan mengubah string yang diinputkan menjadi Lower Case (huruf kecil).
Ketikkan fungsi berikut ini:
b. Upper Case
Fungsi ini akan mengubah string yang diinputkan menjadi Upper Case (huruf besar).
Ketikkan fungsi berikut ini:
c. Proper Case
Fungsi ini akan mengubah string yang diinputkan menjadi Proper Case (huruf besar
untuk huruf awal setiap kata). Ketikkan fungsi berikut ini:

FUNCTION LCASE(S:STRING):STRING;
VAR I:INTEGER;
BEGIN
FOR I:= 1 TO LENGTH(S) DO
IF (S[I] >= 'A') AND (S[I] <= 'Z') THEN


                                                                                       19
INC(S[I], 32);
LCASE := S;
END;
FUNCTION UCASE(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);
UCASE := S;
END;

Untuk mencoba fungsi-fungsi di atas, ketikkan program utama sebagai berikut:
{program utama}
BEGIN
CLRSCR;
WRITE(LCASE('Created By vian sastra '));
WRITE(UCASE('Created By vian sastra '));
WRITE(PCASE('Created By vian sastra '));
READLN;
END.

Lihatlah tampilan pada layar monitor Anda!
Baris pertama, tiap kata ditulis dengan huruf kecil, baris ke-2 tiap kata ditulis dengan
huruf besar, dan baris ke-3, tiap kata hanya huruf awal saja yang ditulis dengan huruf
besar.
FUNCTION PCASE(S:STRING):STRING;
VAR I, J:INTEGER;
BEGIN
IF (S[1] >= 'a') AND
(S[1] <= 'z') THEN
DEC(S[1], 32);
FOR I:= 2 TO LENGTH(S) DO
IF (S[I] >= 'A') AND
(S[I] <= 'Z') THEN
INC(S[I], 32);
FOR I:= 2 TO (LENGTH(S)-1) DO
IF (S[I] = ' ') THEN
BEGIN
J := I;
IF (S[J + 1] >= 'a') AND
(S[J + 1] <= 'z') THEN
DEC(S[J + 1], 32);
END;
PCASE := S;
END;

FUNGSI-FUNGSI DATE
Berikut ini adalah fungsi-fungsi untuk memanfaat sistem date dari unit Dos, untuk
menampilkan tanggal atau hari sesuai data pada sistem komputer. Jalankan aplikasi
Pascal Anda, ketikkan kode berikut:

PROGRAM TAMPILTANGGAL;
USES CRT, DOS;
(* FUNGSI UNTUK MENGKONVERSI
NILAI INTEGER MENJADI STRING *)
FUNCTION INTTOSTR(I: LONGINT): STRING;
VAR
S: STRING[12];
BEGIN
STR(I, S);
INTTOSTR := S;
END;

a. Menampilkan Tanggal Sistem
Fungsi ini akan menampilkan tanggal dari sistem komputer Anda.
b. Menampilkan Nama Hari
Fungsi ini akan menampilkan tanggal dari sistem komputer Anda.



                                                                                           20
FUNCTION TANGGAL:STRING;
VAR
Y, M, D, DOW : Word;
BEGIN
GETDATE(Y,M,D,DOW);
TANGGAL := INTTOSTR(D) + '-'
+ INTTOSTR(M) + '-' + INTTOSTR(Y);
END;
FUNCTION HARI_INI:STRING;
CONST
DAYS : ARRAY [0..6] OF STRING[9] =
('MINGGU','SENIN','SELASA',
'RABU','KAMIS','JUMAT',
'SABTU');
VAR
Y, M, D, DOW : Word;
BEGIN
GETDATE(Y,M,D,DOW);
HARI_INI := 'HARI INI : ' + DAYS[DOW] + ', ';
END;

Untuk mencoba fungsi-fungsi di atas, ketikkan program utama sebagai berikut:
(* program utama *)
BEGIN
CLRSCR;
WRITELN(HARI_INI, TANGGAL);
READLN;
END.
Lihatlah tampilan pada layar monitor Anda!

FUNGSI-FUNGSI KONVERSI
Berikut ini adalah fungsi-fungsi untuk mengkonversi suatu nilai ke nilai lain. Jalankan
aplikasi Pascal Anda, ketikkan kode berikut:

PROGRAM KONVERSI;
USES CRT, STRINGS;
VAR MASUKAN : INTEGER;
(* FUNGSI UNTUK MENGKONVERSI
NILAI {INTEGER} MENJADI STRING *)
FUNCTION INTTOSTR(I: LONGINT): STRING;
VAR
S: STRING;
BEGIN
STR(I, S);
INTTOSTR := S;
END;

a. Konversi Desimal ke Angka Romawi
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke angka Romawi. Contoh:
1234 menjadi: MCCXXXIV.
(* FUNGSI UNTUK MENGKONVERSI
BILANGAN DESIMAL MENJADI ANGKA ROMAWI*)
FUNCTION CONVROMAN(INTANGKA : INTEGER): STRING;
VAR
I: INTEGER;
INTSERIBU, INTLIMARATUS : INTEGER;
INTSERATUS, INTLIMAPULUH : INTEGER;
INTSEPULUH, INTLIMA, INTSATU : INTEGER;
STRSERIBU, STRLIMARATUS :STRING;
STRSERATUS, STRLIMAPULUH : STRING;
STRSEPULUH, STRLIMA, STRSATU : STRING;
STRROMAWI : STRING;
BEGIN
I := 0;
STRROMAWI :='';INTSERIBU := 0;
INTLIMARATUS := 0;INTSERATUS := 0;
INTLIMAPULUH := 0;INTSEPULUH := 0;
INTLIMA := 0;INTSATU := 0;
STRSERIBU :='';STRLIMARATUS :='';


                                                                                          21
STRSERATUS :='';STRLIMAPULUH :='';
STRSEPULUH :='';STRLIMA :='';
STRSATU :='';
(*===============================*)
INTSATU := INTANGKA;
INTSERIBU := INTANGKA DIV 1000;
INTSATU := INTSATU - (INTSERIBU * 1000);
INTLIMARATUS := INTSATU DIV 500;
INTSATU := INTSATU - (INTLIMARATUS * 500);
INTSERATUS := INTSATU DIV 100;
INTSATU := INTSATU - (INTSERATUS * 100);
INTLIMAPULUH := INTSATU DIV 50;
INTSATU := INTSATU - (INTLIMAPULUH * 50);
INTSEPULUH := INTSATU DIV 10;
INTSATU := INTSATU - (INTSEPULUH * 10);
INTLIMA := INTSATU DIV 5;
INTSATU := INTSATU - (INTLIMA * 5);
(*=================================*)
FOR I := 0 TO INTSERIBU-1 DO
STRSERIBU := STRSERIBU + 'M';
IF INTSERATUS <> 4 THEN
FOR I := 0 TO INTLIMARATUS-1 DO
STRLIMARATUS := STRLIMARATUS + 'D';
FOR I := 0 TO INTSERATUS-1 DO
STRSERATUS := STRSERATUS + 'C';
IF INTSERATUS = 4 THEN
IF INTLIMARATUS = 1 THEN
STRSERATUS := STRROMAWI + 'CM'
ELSE
STRSERATUS := STRROMAWI + 'CD';
IF INTSEPULUH <> 4 THEN
FOR I := 0 TO INTLIMAPULUH-1 DO
STRLIMAPULUH := STRLIMAPULUH + 'L';
FOR I := 0 TO INTSEPULUH-1 DO
STRSEPULUH := STRSEPULUH + 'X' ;
IF INTSEPULUH = 4 THEN
IF INTLIMAPULUH = 1 THEN
STRSEPULUH := STRROMAWI + 'XC'
ELSE
STRSEPULUH := STRROMAWI +'XL';
IF INTSATU <> 4 THEN
FOR I := 0 TO INTLIMA-1 DO
STRLIMA := STRLIMA + 'V';
FOR I := 0 TO INTSATU-1 DO
STRSATU := STRSATU + 'I' ;
IF INTSATU = 4 THEN
IF INTLIMA = 1 THEN
STRSATU := STRROMAWI + 'IX'
ELSE
STRSATU := STRROMAWI +'IV';
STRROMAWI := STRSERIBU + STRLIMARATUS
+ STRSERATUS + STRLIMAPULUH
+ STRSEPULUH + STRLIMA + STRSATU;
CONVROMAN := STRROMAWI;
END;
b. Konversi Desimal ke Binear
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke basis Binear. Contoh:
123 menjadi: 1111011.
FUNCTION BINEAR(INTANGKA : INTEGER): STRING;
VAR

INTNILAI     ONGINT;
INTLEN :INTEGER;
J :INTEGER;
STRHASIL :STRING;
STREND :STRING[1];
STRSUB : STRING;
BEGIN



                                                                                       22
STRHASIL := '';
STREND := '';
STRSUB := '';
REPEAT
INTNILAI := INTANGKA MOD 2;
INTANGKA := INTANGKA DIV 2;
STRHASIL := STRHASIL + IntToStr(INTNILAI);
UNTIL INTANGKA = 1;
INTLEN := LENGTH(STRHASIL);
STREND := IntToStr(INTANGKA);
FOR J := INTLEN DOWNTO 1 DO
STRSUB := STRSUB + COPY(STRHASIL, J, 1);
BINEAR := STREND + STRSUB;
END;
c. Konversi Desimal ke Hexadecimal
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke basis Hexadecimal.
Contoh: 123 menjadi: 7B.
FUNCTION HEXADEC(INTANGKA : INTEGER): STRING;
VAR

INTNILAI         ONGINT;
INTLEN :INTEGER;
J :INTEGER;
STRHASIL :STRING;
STRHEXA :STRING;
STREND :STRING[1];
STRSUB :STRING;
BEGIN
STRHASIL := '';
STRHEXA := '';
STRSUB := '';
STREND := '';
REPEAT
INTNILAI := INTANGKA MOD 16;
INTANGKA := INTANGKA DIV 16;
CASE INTNILAI OF
10: STRHEXA := 'A';
11: STRHEXA := 'B';
12: STRHEXA := 'C';
13: STRHEXA := 'D';
14: STRHEXA := 'E';
15: STRHEXA := 'F';
ELSE
STRHEXA := IntToStr(INTNILAI);
END;
STRHASIL := STRHASIL + STRHEXA;
UNTIL INTANGKA < 16;
INTLEN := LENGTH(STRHASIL);
STREND := IntToStr(INTANGKA);
FOR J := INTLEN DOWNTO 1 DO
STRSUB := STRSUB + COPY(STRHASIL, J, 1);
HEXADEC := STREND + STRSUB;
END;
d. Konversi Desimal ke Nominal
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke huruf nominal. Contoh:
123 menjadi: Seratus duapuluh tiga.
Function DlmHuruf(Var nHuruf:String):String;
Begin
If nHuruf ='1' Then DlmHuruf:='satu' Else
If nHuruf ='2' Then DlmHuruf:='dua' Else
If nHuruf ='3' Then DlmHuruf:='tiga' Else
If nHuruf ='4' Then DlmHuruf:='empat' Else
If nHuruf ='5' Then DlmHuruf:='lima' Else
If nHuruf ='6' Then DlmHuruf:='enam' Else
If nHuruf ='7' Then DlmHuruf:='tujuh' Else
If nHuruf ='8' Then DlmHuruf:='delapan' Else
If nHuruf ='9' Then DlmHuruf:='sembilan' Else
DlmHuruf:=' ';



                                                                                        23
End;
{-------------------------------------------}
Function Terbilang(Angka:LongInt):String;
var
ChrS : Array[1..10] of String;
StrT : Array[1..10] of String;
Huruf:String;Indeks,Panjang:Integer;
Begin
Huruf:=''; Panjang:=0;
For Indeks := 1 to 10 do begin
ChrS[Indeks]:='';
StrT[Indeks]:='';End;
Panjang:=Length(IntToStr(Angka));
For Indeks := 1 to Panjang do
ChrS[Indeks] :=
Copy(IntToStr(Angka),
(Panjang-(Indeks-1)),1);
If ChrS[8] ='0' Then
Begin
StrT[8] :='';
StrT[7]:=DlmHuruf(ChrS[7]) + 'juta ';
End
Else If ChrS[8] ='1' Then
Begin
StrT[8]:='';
If ChrS[7] = '0' Then
StrT[7]:='Sepuluh juta ' Else
If ChrS[7] = '1' Then
StrT[7]:='Sebelas juta ' Else
StrT[7]:= DlmHuruf(ChrS[7]) +
'belas juta';
End
Else If ChrS[8] >'1' Then
Begin
StrT[7]:=DlmHuruf(ChrS[7]) + 'juta ';
StrT[8]:=DlmHuruf(ChrS[8]) + 'puluh ';
End;
Begin
End;
If ChrS[6] = '0' Then
StrT[6]:=''
Else
Begin
If ChrS[6] <> '1' Then
StrT[6]:=DlmHuruf(ChrS[6]) + 'ratus '
Else
StrT[6]:='Seratus ';
End;
If ChrS[5] = '0' Then
Begin
StrT[5]:='';
If ChrS[4] = '1' Then
StrT[4]:= 'Seribu '
Else
StrT[4] := DlmHuruf(ChrS[4]) + 'ribu ';
End
Else If ChrS[5] = '1' Then
Begin
StrT[5]:='';
If ChrS[4] = '0' Then
StrT[4]:='Sepuluh ribu ' Else
If ChrS[4] = '1' Then
StrT[4]:='Sebelas ribu ' Else
StrT[4]:= DlmHuruf(ChrS[4]) +
'belas ribu ';
End
Else
Begin
StrT[4]:=DlmHuruf(ChrS[4]) + 'ribu ';


                                                24
StrT[5]:=DlmHuruf(ChrS[5]) + 'puluh ';
End;
If ChrS[3] = '0' Then
StrT[3]:=''
Else If ChrS[3] ='1' Then
StrT[3]:='Seratus '
Else If ChrS[3] > '1' Then
StrT[3]:=DlmHuruf(ChrS[3]) + 'ratus ';
{========================================}
If ChrS[2] = '0' Then
Begin
StrT[2]:='';
StrT[1]:=DlmHuruf(ChrS[1]);
End
Else If ChrS[2] ='1' Then
Begin
StrT[2]:='';
If ChrS[1] = '0' Then
StrT[1]:='Sepuluh' Else
If ChrS[1] = '1' Then
StrT[1]:='Sebelas' Else
StrT[1]:= DlmHuruf(ChrS[1]) +'belas';
End
Else If ChrS[2] > '1' Then
Begin
StrT[1]:=DlmHuruf(ChrS[1]);
StrT[2]:=DlmHuruf(ChrS[2])+'puluh ';
End;
For Indeks := 1 to 8 Do
If Panjang <= Indeks Then
StrT[Indeks + 1] :='';
For Indeks := 8 DownTo 1 Do
Huruf:=Huruf + StrT[Indeks];
Terbilang := Huruf;
Untuk mencoba fungsi-fungsi di atas, ketikkan program utama sebagai berikut:
(* program utama *)
BEGIN
CLRSCR;
WRITE ('MASUKAN ANGKA : ');
READLN(MASUKAN);
WRITELN('ROMAWI = ', CONVROMAN(MASUKAN));
WRITELN('BINEAR = ', BINEAR(MASUKAN));
WRITELN('HEXA = ','&H', HEXADEC(MASUKAN));
WRITELN('TERBILANG = ', TERBILANG(MASUKAN));
READLN
END.
Tampilan akhir program seperti gambar di bawah ini:

PROGRAM PERMAINAN
Berikut ini adalah contoh pembuatan sebuah program permainan, sulap angka. Program
ini akan menebak sebuah angka yang dipilih oleh seorang pemain, setelah menempuh
beberapa wizard. Jalankan Pascal dan ketikkan kode yang banyak ini:
PROGRAM SULAPANGKA;
USES CRT;
VAR I, J, K, L: INTEGER;
YT: CHAR;
NILAI:INTEGER;
FUNCTION CSTR(I: INTEGER): STRING;
VAR
S: STRING[11];
BEGIN
STR(I, S);
CSTR := S;
END;
PROCEDURE TULIS(POSISI:INTEGER; TEKS:STRING);
VAR A, B, C: INTEGER;
BEGIN
A := POSISI;
B := POSISI MOD 10;


                                                                                     25
C := 1;
IF B = 0 THEN
BEGIN B := 10;C := 0; END;
GOTOXY(B * 8 - 5,
(A DIV 10 + C) * 3 + 1);
WRITE(TEKS);
END;
(* Untuk symbol-symbol seperti : ÉÍÍ,
dapat Anda ganti dengan symbol: # atau lainnya *)
PROCEDURE BIKIN_KOTAK(KOLOM, BARIS: INTEGER);
BEGIN
CLRSCR;
FOR I:= 1 TO KOLOM DO
BEGIN
FOR J := 1 TO BARIS DO
BEGIN
GOTOXY (J * 8 - 7, (I * 3));
WRITE('ÉÍÍÍÍ»');
GOTOXY (J * 8 - 7, (I * 3 + 1));
WRITE('º º');
GOTOXY (J * 8 - 7, (I * 3 + 2));
WRITE('ÈÍÍÍͼ');
END;
END;
END;
PROCEDURE WIZARD7;
BEGIN
CLRSCR;
WRITELN('ANGKA YANG ANDA PILIH = ', NILAI);
WRITELN;
WRITE('INGIN MENGULANG (Y/ESC.)? ');READKEY;
YT := READKEY;
END;
PROCEDURE WIZARD6;
BEGIN
BIKIN_KOTAK(2, 10);
FOR I := 1 TO 19 DO
TULIS(I, CSTR(I + 31));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 32;
WIZARD7;
{===============================}
END;
PROCEDURE WIZARD5;
BEGIN
BIKIN_KOTAK(2, 10);
FOR I := 1 TO 16 DO
TULIS(I, CSTR(I + 15));
FOR J := 17 TO 19 DO
TULIS (J, CSTR(J + 31));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
{===============================}
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 16;
WIZARD6;
END;
PROCEDURE WIZARD4;
BEGIN


                                                    26
BIKIN_KOTAK(3, 10);
FOR J := 0 TO 2 DO
FOR I := 1 TO 8 DO
TULIS(J * 8 + I, CSTR(J * 16 + I + 7));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 8;
WIZARD5;
{===============================}
END;
PROCEDURE WIZARD3;
BEGIN
BIKIN_KOTAK(3, 10);
FOR J := 0 TO 5 DO
FOR I := 1 TO 4 DO
TULIS(J * 4 + I, CSTR(J * 8 + I + 3));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T'];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 4;
WIZARD4;
{===============================}
END;
PROCEDURE WIZARD2;
BEGIN
BIKIN_KOTAK(3, 10);
J:=0;
FOR J := 0 TO 12 DO
FOR I := 1 TO 2 DO
TULIS(J * 2 + I, CSTR(J * 4 + I + 1));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 2;
WIZARD3;
{===============================}
END;
PROCEDURE WIZARD1;
BEGIN
BIKIN_KOTAK(3, 10);
L:= 1;
REPEAT
TULIS ((L + 1) DIV 2,CSTR(L));
L:= L + 2;
UNTIL L > 50;
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := 1;
WIZARD2;
{===============================}
END;


                                             27
PROCEDURE TULIS_NOMOR;
BEGIN
BIKIN_KOTAK(5, 10);
FOR K:= 1 TO 50 DO
TULIS(K, CSTR(K));
GOTOXY(1, 20);
WRITE ('PILIH SEBUAH ANGKA, ',
'TEKAN: Y, KALO MAU TERUS! ');
WRITE ('TEKAN ESC UNTUK KELUAR ');
REPEAT
YT := READKEY;
IF UPCASE(YT) = 'Y' THEN
BEGIN
NILAI := 0;
WIZARD1;
END;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
{===============================}
END;
(* Program Utama *)
BEGIN
CLRSCR;
TEXTATTR := $1F;
REPEAT
TULIS_NOMOR;
UNTIL YT = #27;
END.




                                         28

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:12
posted:1/29/2013
language:
pages:28