Anda di halaman 1dari 20

Bahan Praktikum I : Pengenalan Lingkungan Kerja Turbo Pascal

Pascal merupakan suatu bahasa komputer tingkat tinggi yang dibuat sekitar tahun
1970 oleh Niklaus Wirth dan digunakan untuk pendidikan komputer. Nama Pascal
diambil dari seorang ahli matematika yang bernama Blaise Pascal yang menemukan
mesin hitung pertama. Bahasa Pascal dirancang untuk menyelesaikan masalah dari
berbagai kalangan pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan.

Struktur Sederhana Bahasa Pascal

program ... ; { Program heading }


uses ... ; { Uses clause }
const ... ; { Constants }
type ... ; { Types }
var ... ; { Variables }
begin
statement; { Statements }
.................;
end.

Uses Clause
Bagian uses clause digunakan untuk menentukan library (berupa sub-program) yang
dibutuhkan saat proses program. LIBRARY berupa file yang menyimpan subroutine yang
secara berulang digunakan saat proses program. Library ini diistilahkan sebagai unit
dalam Turbo PASCAL yang terdiri dari SYSTEM, OVERLAY, GRAPH, DOS, CRT yang
ditempatkan dalam file TURBO.TPL.
Contoh :
Uses WinCrt; (jika anda memakai Unit WinCrt )

Declaration (Bagian di bawah Uses Clause sebelum BEGIN)


Bagian ini meliputi deklarasi untuk label, const, type, var, procedure dan function. Syarat
terpenting dalam pembentukan suatu program adalah, bahwa setiap variabel, type non-
standard, label, procedure non-standard, serta function non-standard yang dipakai
didalamnya harus nyatakan (deklarasi) terlebih dahulu pada bagian deklarasi.
Setiap deklarasi tersebut harus bersifat unik (tidak boleh serupa satu sama yang lain).
Penulisan nama dalam deklarasi tersebut harus memenuhi syarat-syarat sebagai
berikut :
- panjang nama maximum 63 character, diawali dengan alphabet
- tidak ada special character kecuali tanda garis bawah ("_")
- tidak boleh serupa dengan reserved word (kata tercadang)
- tidak boleh serupa dengan indentifier lainnya.

Variabel Declaration
Setiap variabel yang digunakan dalam program harus didefinisikan terlebih dahulu
sebelum digunakan.
Cara penulisan ini adalah :
Var
<nama var> : <type variable>;
Adapun type variable yang disediakan pada TURBO PASCAL :
1. Ordinal types
Type data yang mempunyai urutan pasti, dan masih terbagi menjadi
- Integer
Type variable yang beguna untuk pengolahan data yang bulat, type ini
masih terbagi
atas berberapa menurut jangkauan data dan ukurannya :
Type Jangkuan Ukuran

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -1-


Shortint -128..127 8 bit
Integer -32768..32767 16 bit
Longint -2147483648..2147483647 32 bit
Byte 0..255 8 bit
Word 0..65535 16 bit
- Char
Type variabel yang berguna untuk pengolahan character ASCII, type
character ini
penulisannya ditandai dengan dua buah petik tunggal seperti : 'A', '3','*',#7
untuk
menyatakan ' harus ditulis ''''
- Boolean
Type varibale yang berguna untuk pengolahan hal yang hanya mempunyai
dua
ketentuan yaitu benar(TRUE) dan salah(FALSE) saja.
2. Real types
Type variable yang beguna untuk pengolahan data yang tidak bulat, untuk type
real
ini juga terbagi atas beberapa :
Type Jangkauan Ketelitian Ukuran
Real 2.9e-39..1.7e38 11-12 digit 6 bit
Single 1.5e-45..3.4e38 7-8 7-8 digit 4 bit
Double 5.0e-324..1.7e308 15-16 digit 8 bit
Extended 3.4e-4932..1.1e4932 19-20 digit 10 bit
Comp -9.2e18..9.2e18 19-20 digit 8 bit
Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator
antara lain

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -2-


Bagian #1: Terbimbing
Contoh 1:
Program Contoh1;
Uses Wincrt;
{Deklarasi variable}
Var
Umurku : Byte;
{*Program anda*}
Begin
Umurku :=19;
Writeln(saya berumur ,Umurku, tahun);
End.

Contoh 2
Program Contoh2;
Uses Wincrt;
Var
Umurku : Byte;
Begin
Write(Berapa umur anda ? );readln(Umurku);
Writeln(Umur anda,Umurku, tahun);
End.

Aktivitas Anda:
o Ketik program Contoh1, kompilasi dan eksekusilah.
o Idem untuk program Contoh2.
o Apa perbedaan yang sangat nampak dari kedua program ?.
o Ubahlah perintah write dengan writeln. Kompilasi dan eksekusilah. Apa perbedaan
kedua perintah ?.
o Pada program contoh2, khususnya perintah terakhir yaitu: Writeln(Umur
anda,Umurku, tahun);
Berilah tanda single-quote pada bagian Umurku, sehingga perintah menjadi:
Writeln(Umur anda,Umurku, tahun);
Kompilasi ulang dan eksekusilah. Adakah perbedaan eksekusi kedua perintah
tersebut ?.
Kesimpulan apa yang dapat anda petik dari aktivitas di atas, terkait dengan perintah
Write dan Writeln

Bagian #2: Mandiri


Buatlah latihan berikut.
Buatlah program dengan 2 masukan yang berbeda tipe, dan keluaran berupa
keterangan (bebas) yang mengkaitkan nilai kedua masukan tersebut.
Buatlah program dengan 6 masukan semua bertipe string (S1 dan S2 string
berupa subjek, nama orang; S3 dan S4 string berupa predikat; S5 dan S6 string
berupa objek). Buatlah keluaran berupa semua kalimat yang mungkin dari ke-6
input tersebut.

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -3-


BAHAN PRAKTIKUM II : Ekspressi, Perintah Penyimpanan, dan Penataan I/O

Bagian #1: Terbimbing


Program Contoh3;
Uses Wincrt;
Const
Beda = 4;
Var
Umurku,Umurmu : Byte;
Keterangan : String;
Begin
Write(Berapa umur anda ? );
readln(Umurku);
Umurmu := Umurku + Beda;
Writeln(Umurku = ,Umurku, tahun);
Writeln(Umurmu = ,UmurMu, tahun);
End.

Aktivitas Anda:
o Ketik program Contoh3, kompilasi dan eksekusilah.
o Perhatikan bahwa contoh program tersebut memiliki 1 input yaitu data tipe byte yang
mengisi variabel Umurku. Namun, keluaran (output) program tersebut ada 2 yaitu:
Umurku = .... tahun dan Umurmu = ... tahun (isi bagian titik-titik di depan berbeda 4
dari isian bagian titik-titik di belakang). Mengapa berbeda 4 ?. Tunjukkan perintah
mana yang mengakibatkan hal itu ?.
o Coba berikan penataan output untuk variabel Umurku dan variabel Umurmu, sehingga
2 perintah terakhir menjadi: Writeln(Umurku = ,Umurku:20, tahun);
Kompilasi ulang, dan eksekusilah. Apa bedanya dengan perintah yang belum diberi
format penataan output ?.
Cobalah penataan output untuk data tipe yang lain, seperti: string, real.
.
o
Pada perintah baris ke-3 (yaitu: Umurmu := Umurku + Beda;), komputer akan
menambahkan isi variabel Umurku dengan isi konstanta Beda, dan hasil operasi
tersebut disimpan ( perhatikan perintah := ) ke dalam variabel Umurmu
Bagian #2: Mandiri
Buatlah latihan berikut.
o Buat program untuk mengkonversikan :
Suhu ruangan dari satuan C ke F
Suhu ruangan dari satuan C ke R
Suhu ruangan dari satuan C ke K
Suhu ruangan dari satuan F ke C
Suhu ruangan dari satuan F ke R
Suhu ruangan dari satuan F ke K
Suhu ruangan dari satuan R ke C
Suhu ruangan dari satuan R ke F
Suhu ruangan dari satuan R ke K
Suhu ruangan dari satuan K ke C
Suhu ruangan dari satuan K ke R
Suhu ruangan dari satuan K ke F
o Buat program untuk mengkonversikan :
Dollar ke Rupiah
Rupiah ke Dollar

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -4-


BAHAN PRAKTIKUM III : Percabangan (Conditional)

Bagian #1: Terbimbing


Program Contoh4;
Uses winCrt;
Var
Nilai : Real;
Begin
Write ('Jumlah Nilai :');
Readln (nilai);
If nilai > 60 Then { seleksi kondisi variabel nilai }
Writeln('Lulus') {jika isi variabel nilai > 60 }
Else
Writeln('Tidak lulus'); {jika isi variabel nilai 60 }
End.

Aktivitas Anda:
o Ketik program contoh4, kompilasi, dan eksekusilah.
o Eksekusilah beberapa kali, variabel nilai diisi dengan: 60; kurang dari 60; dan lebih
dari 60. Bandingkan apa yang terjadi ?. Bandingkan pula dengan flowchart perintah
IF-THEN-ELSE.
o Apa yang anda simpulkan dari perintah: If Nilai > 60 then writeln(Lulus) else
writeln(Tidak Lulus); ?.

Program Contoh5;
Uses winCrt;
Var
Bulan : Integer;
NamaBulan : string;
Begin
Write ('Kode Bulan :');
Readln (Bulan);
{Bagian ini akan menampilkan nama bulan. Karena ada 12 kasus berbeda
untuk nama bulan, maka tidak lagi dipakai If-Then-Else, meskipun bisa}

case bulan of
1 : NamaBulan := Januari;
2 : NamaBulan := Februari;
3 : NamaBulan := Maret;
4 : NamaBulan := April;
5 : NamaBulan := Mei;
6 : NamaBulan := Juni;
7 : NamaBulan := Juli;
8 : NamaBulan := Agustus;
9 : NamaBulan := September;
10 : NamaBulan := Oktober;
11 : NamaBulan := November;
12 : NamaBulan := Desember;
end;
End.

Aktivitas Anda:
o Ketik program contoh5, kompilasi, dan eksekusilah.
o Eksekusilah beberapa kali, variabel bulan diisi dengan: 1..12; kurang dari 1; dan lebih
dari 12. Bandingkan apa yang terjadi ?. Bandingkan pula dengan flowchart perintah
CASE-OF
o Apa yang terjadi jika pada kasus terakhir diubah menjadi:
case bulan of
...........................;
11 : NamaBulan := November;
Else NamaBulan := Desember;
end;
o Apa yang dapat anda simpulkan dengan perintah CASE-OF ?.
Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -5-
Bagian #2: Mandiri
Buatlah latihan berikut.
Buatlah program Pascal untuk menghitung gaji dengan ketentuan:
Tunjangan
Jika masa kerja >30 maka tunjangan = 300,000
Jika 10 <masa kerja 30 maka tunjangan = 200,000
Jika masa kerja 10 maka tunjangan = 100,000

Gaji Pokok
Jika golongan = 1 maka gapok = 700,000
Jika golongan = 2 maka gapok = 1,200,000
Jika golongan = 3 maka gapok = 1,900,000
Jika golongan = 4 maka gapok = 2,300,000

Sedangkan gaji dihitung dengan rumus :

Gaji = gapok+tunjangan (10%gapok)

Buatlah program Pascal untuk menampilkan usia bulan, dalam satuan hari.
Buatlah program Pascal untuk menentukan bilangan terbesar dari sejumlah N
buah bilangan (N diisi ketika program dieksekusi).

BAHAN PRAKTIKUM IV : Looping (Bagian 1)


Bagian #1: Terbimbing
Ada 3 bentuk perulangan, yaitu: For-to-Do; While-Do; Repeat-Until. Pelajari bagaimana
masing-masing perintah ditulis dan dikerjakan oleh komputer. Selanjutnya, ketik contoh-
contoh program berikut, eksekusilah dan cocokkanlah dengan apa yang telah anda pelajari.

Perulangan For-to-Do
Program Contoh6;
Uses winCrt;
Var
i : Integer;
Begin
For i := 1 To 5 Do
Writeln ('I Love Dinda);
END.

Maka bila program di atas dieksekusi, hasilnya sbb:


I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
Penjelasan : statemen writeln(I Love Dinda) akan diulang sebanyak 5 kali, hal itu sejalan
dengan nilai variabel i (running variabel) yang bergerak dari nilai awal 1 sampai dengan 5.
Program Contoh7;
Uses winCrt;
Var
I,P : Integer;
Begin
P := 0;
For i := 1 To 5 Do
begin
Writeln ('I Love Dinda);
Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -6-
P := P + i;
End;
Writeln(P);
END.

Aktivitas Anda:
o Ketik program contoh6, kompilasi, dan eksekusilah. Idem program contoh7.
o Isi perintah di dalam For-to-Do antara kedua program berbeda. Bagaimanakah for-to-
do pada contoh7 dikerjakan ?. Bagaimana seandainya begin end; sebagai penanda
blok perintah dihilangkan, bagaimana eksekusi program tsb ?.

Perulangan For DownTo


Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil.
Statement yang digunakan adalah For-DownTo-Do
Program contoh8;
Uses winCrt;
Var
i : Integer;
Begin
For i := 10 DownTo 1 Do
Write (i:3);
End.

Program Contoh9;
Uses wincrt;
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.
Aktivitas Anda:
o Ketik program contoh8, kompilasi, dan eksekusilah.
o Apa beda (proses dan hasil eksekusi) antara for-to-do dan for-downto-do ?.
o Ketik program contoh9, kompilasi dan eksekusilah.
o Dengan mengamati hasil eksekusi, bagaimanakah perintah For-to-do bersarang
(nested), dikerjakan komputer ?.
Perulangan While - Do
Program Contoh10;
Uses winCrt;
Var i : Integer;
Begin
i := 0;
While < 5 do
Begin
Write (i:3);
i:=i+1;
End;
End.
Aktivitas Anda:
o Ketik program contoh10, kompilasi, dan eksekusilah.
o Bagaimanakah perintah while-do di atas dikerjakan komputer ?.

Perulangan While Do tersarang


Program Contoh11;
Uses winCrt;
Var
a, b : Integer;
Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -7-
Begin
ClrScr;
a:=1;
b:=1;
While a < 4 Do{ loop selama a masih lebih kecil dari 4 }
Begin
a := a+1;
While b < 3 Do{ loop selama b masih lebih kecil dari 3 }
Begin
Write (a:3,b:2);
b:=b+1;
End;
End;
Readln;
End.
Aktivitas Anda:
o Ketik program contoh11, kompilasi, dan eksekusilah.
o Dengan mengamati hasil eksekusi, bagaimanakah perintah while-do bersarang di atas
dikerjakan komputer ?.
Bagian #2. Mandiri
o Modifikasilah program Contoh6 sampai dengan Contoh9, tanpa mengubah esensi
program, namun memakai perulangan while-do
o Modifikasilah program Contoh 10 dan Contoh11, tanpa mengubah esensi program,
namun memakai perulangan for-to-do.

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -8-


BAHAN PRAKTIKUM V : Looping (Bagian 2)

Bagian #1: Terbimbing

Perulangan Repeat - Until.


Program Contoh12;
Uses wincrt;
Var i : Integer;
Begin
i:=0;
Repeat
i:= i+1;
Writeln (i);
Until (i=5);
End.

Aktivitas Anda:
o Ketik program contoh12, kompilasi, dan eksekusilah.
o Bagaimanakah perintah repeat-until di atas dikerjakan komputer ?.

Repeat Until tersarang


Progam Contoh13;
Uses wincrt;
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.

Aktivitas Anda:
o Ketik program contoh13, kompilasi, dan eksekusilah.
o Dengan mengamati hasil eksekusi, bagaimanakah perintah repeat-until bersarang di
atas dikerjakan komputer ?.

Bagian #2. Mandiri


1. Buatlah program untuk menghitung rata-rata dari N buah data
2. Buatlah program untuk mengurutkan (dari kecil ke besar) N buah data bilangan
bulat
3. Hitunglah fungsi matematika berikut dengan sampai suku ke-n
F(x) = 1 + 1/2x + 1/4x + 1/6x + 1/8x .1/((2n)x)

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -9-


BAHAN PRAKTIKUM VI: Fungsi dan Prosedur

Apa itu procedure dan function ?


Procedure dan function merupakan sub-program yang memiliki bagian deklarasi dan
begin-end; tersendiri layaknya suatu program pascal. Tujuan pemakaian procedure
maupun function adalah untuk memecah program kita menjadi kesatuan logika yang lebih
kecil (sub-sub program) untuk menghindari perulangan pengetikan dan memudahkan
pembacaan.
Bagian #1: Terbimbing
Program Contoh14;
uses wincrt;
var A, B, I, J : integer;
begin
clrscr;
write('Ketik Bilangan Positip A :'); readln(A);
write('Ketik Bilangan Positip B :'); readln(B);
{Proses Mengenali A bilangan prima atau bukan}
J := 0; {var. J dipakai untuk menampung banyaknya faktor dari A}
For i := 1 to A do
If A mod i = 0 then J := J + 1;
If J = 2 then writeln(A, adalah bilangan prima)
Else writeln(B, adalah bukan bilangan prima);
end.

Aktivitas Anda:
o Ketik program contoh14, kompilasi, dan eksekusilah.
o Lanjutkanlah program di atas, jika B harus juga diidentifikasi apakah bilangan prima
atau bukan.

Program Contoh15;
uses wincrt;
var A, B : integer;
function IsPrima(P:integer): boolean;
{P adalah sebarang integer positip.}
{Fungsi mengirim nilai true jika P bilangan prima, false jika bukan}
Var K,L : integer;
Begin
K := 0;
For L := 1 to P do
If P mod L = 0 then K := K + 1;
IsPrima := (P = 2);
End;
begin
clrscr;
write('Ketik Bilangan Positip A :'); readln(A);
write('Ketik Bilangan Positip B :'); readln(B);
{Proses yi: eksekusi fungsi IsPrima, dan output}
If IsPrima(A) then writeln(A, bilangan prima)
else writeln(A, bukan prima);
If IsPrima(B) then writeln(B, bilangan prima)
else writeln(B, bukan prima);
End.
Aktivitas Anda:
o Ketik program contoh15, kompilasi, dan eksekusilah. Isikan nilai A dan B yang
berbeda-beda, perhatikan perubahan apa yang terjadi pada output, mengapa ?.
o Bandingkan program ini dengan hasil pekerjaan anda di atas. Dilihat dari perintah-
perintah yang menyusun algoritma kedua program, program contoh15 akan tampak
lebih kompak, lebih mudah membacanya.
A,B merupakan variabel global, K dan L merupakan variabel lokal. P adalah parameter
formal, sedangkan A pada IsPrima(A) adalah parameter aktual.
o Gantilah IsPrima(A) dengan IsPrima(10), IsPrima(B) dengan IsPrima(15). Perubahan
apa yang terjadi, dan mengapa ?.
Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -10-
Bagian #2. Mandiri
o Buatlah fungsi, berikut program untuk menguji kebenaran nilai fungsi:
Menerima 2 integer, mengirim nilai integer terbesar.
Menerima 3 integer, mengirim nilai integer terbesar.
Menerima 4 integer, mengirim nilai integer terkecil
Menerima 5 integer, mengirim nilai integer terkecil

BAHAN PRAKTIKUM VII: Prosedur dan Fungsi Rekursif

Prosedur

Mirip dengan fungsi, prosedur juga diperlukan agar sejumlah langkah / perintah
yang selalu dikerjakan berulang-ulang, dapat disederhanakan sehingga program
nampak mampat dan mudah dibaca.
Perbedaan yang mendasar adalah bahwa pada fungsi ada nilai yang dikirim balik
ke pemanggilnya, sedangkan prosedur pada dasarnya tidak. Namun pada bahasa
Pascal, prosedur dapat pula berperilaku seperti fungsi yaitu mengembalikan nilai
kepada pemanggilnya.
Bagian #1: Terbimbing
Program Contoh16;
uses wincrt;
var A, B, C, D, Temp : integer;
begin
clrscr;
write('Ketik Bilangan Positip A :'); readln(A);
write('Ketik Bilangan Positip B :'); readln(B);
write('Ketik Bilangan Positip C :'); readln(C);
write('Ketik Bilangan Positip C :'); readln(D);

{Saling mengganti isi: A dan B, dilanjutkan C dan D}


{Cetak Sebelum Diganti}
Writeln;
Writeln(Isi A semula : ,A, Isi B Semula , B);
Writeln;
Writeln(Setelah saling ditukar, maka );
{Langkah Menukar}
Temp := A;
A := B;
B := Temp;
Writeln(Isi A = ,A, isi B = ,B);
end.
Aktivitas Anda:
o Ketik program contoh16, kompilasi, dan eksekusilah. Bandingkan isi A dan B mula-
mula dengan isi A dan B akhir.
o Lengkapkanlah program tsb agar dapat menukar Isi C dan isi D.
o Perhatikan prosedur berikut.
Program Contoh17;
uses wincrt;
var A, B, C, D, Temp : integer;
Procedure Tukeryadi(P,Q:integer);
{IS: P dan Q sembarang integer}
{FS: Isi P dan Q saling bertukar}
Var tempe : integer;
Begin
Tempe := P;
P := Q;
Q := Tempe;
End;

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -11-


begin
clrscr;
write('Ketik Bilangan Positip A :'); readln(A);
write('Ketik Bilangan Positip B :'); readln(B);
write('Ketik Bilangan Positip C :'); readln(C);
write('Ketik Bilangan Positip C :'); readln(D);

{Saling mengganti isi: A dan B, dilanjutkan C dan D}


{Cetak Sebelum Diganti}
Writeln;
Writeln(Isi A semula : ,A, Isi B Semula , B);
Writeln(Setelah saling ditukar, maka );
{Langkah Menukar}
Tukeryadi(A,B);
Writeln(Isi A = ,A, isi B = ,B);
Writeln(Isi C semula : ,C, Isi D Semula , D);
Writeln(Setelah saling ditukar, maka );
{Langkah Menukar}
Tukeryadi(C,D);
Writeln(Isi C = ,C, isi D = ,D);
end.

Aktivitas Anda:
o Ketik program contoh17, kompilasi, dan eksekusilah. Bandingkan isi A dan B mula-
mula dengan isi A dan B akhir. Demikian juga dengan isi C dan D. Apakah sudah
saling tertukar ?.
o Perbaiki pada saat prosedur Tukeryadi didefinisikan, dari: Procedure
Tukeryadi(P,Q:integer); menjadi Procedure Tukeryadi(var P,Q:integer); .
Kompilasi dan eksekusi ulang. Bandingkan kembali isi A dan B, serta isi C dan D ?.

Fungsi Rekursif.

Program Contoh18;
uses wincrt;
var A, B, Hasil : integer;
function HasilKaliPQ(P,Q:integer):integer;
{P dan Q sembarang integer positip.}
{fungsi mengirim nilai PxQ }
Var i : integer;
Begin

End;
begin
clrscr;
writeln(Ketik bilangan bulat positip A : ); readln(A);
writeln(Ketik bilangan bulat positip B : ); readln(B);
writeln;
writeln(A, x , B, = , HasilKaliPQ(A,B));
end.

Aktivitas Anda:
o Ketik program contoh18, lengkapilah fungsi HasilKaliPQ agar mengirim nilai PxQ.
Anda hanya boleh memakai operasi + saja, untuk mendefinisikan operasi x.
o Perhatikan fungsi tsb jika dikerjakan dengan cara rekursif (permasalahan yang
dikerjakan memiliki nuansa proses yang rekursif, a x b = (a-1) x b + b. Perhatikan
contoh19 berikut.
Program Contoh19;
uses wincrt;
var A, B, Hasil : integer;
function HasilKaliPQ(P,Q:integer):integer;
{P dan Q sembarang integer positip.}
{fungsi mengirim nilai PxQ }
Begin
If P = 1 then HasilKaliPQ := Q else
HasilKaliPQ := HasilKaliPQ(P-1,Q) + Q;

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -12-


End;
begin
clrscr;
writeln(Ketik bilangan bulat positip A : ); readln(A);
writeln(Ketik bilangan bulat positip B : ); readln(B);
writeln;
writeln(A, x , B, = , HasilKaliPQ(A,B));
end.
Aktivitas Anda:
o Ketik program contoh19, eksekusilah. Adakah perbedaan hasil dan proses eksekusi
jika dibandingkan program contoh18 ?.
Bagian #2: Mandiri
Buatlah fungsi dan prosedur (jika bernuansa rekursif, buat pula fungsi rekursifnya), berikut
program untuk mengevaluasinya.
o Menghitung nilai P!
o Menghitung nilai C(p,q) = p! / (p-q)!
o Mengitung modal + bunga bank yang memakai sistem bunga majemuk, dengan
periode bunga-ber-bunga p bulan.

BAHAN PRAKTIKUM VIII : Fungsi String Fungsi Aritmetika


Berikut ini adalah sejumlah fungsi yang disediakan oleh Pascal. Kegiatan anda adalah
mencoba memakai dan menguji nilai fungsi dari masing-masing fungsi.

Fungsi String.
# 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).

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

# 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 di dalam 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);
Keterangan :
N = data tipe integer,
S = data tipe string.

Fungsi dan Procedure Aritmatika

# Abs [fungsi].

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -13-


Memberikan nilai mutlak dari suatu
Sintaks: ABS(x);

# ArcTan[fungsi].
Memberikan nilai dari fungsi arctangent
goniometri.
Sintaks: ArcTan (x);
dimana x dapat bertipe real atau
kan 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.

# 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 a-
kan sama dengan tipe dari x.

# Sqrt (fungsi).
Digunakan untuk menghitung nilai akar dari suatu bilangan.

Contoh Pemakaian
Program Contoh20;
Uses Wincrt;
Var x : Real;
Begin
Clrscr;
Write('Masukkan nilai dari X = ');
Readln (x);
If x <0 Then x:=Abs (x);
Writeln('Nilai X = ',x:5:2);
Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -14-
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:
Writeln ('Nilai X dipangkatkan = ',SQRT(x):
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.
Kegiatan Mandiri
Buatlah program untuk menghitung panjang kalimat yang diisikan
Buatlah program untuk mengevaluasi apakah sebuah string termasuk palindrom
atau bukan. (contoh beberapa palindrom: MALAM, KATAK, KASURRUSAK)
Buat Program untuk mengganti tiap huruf a yang ditemukan menjadi i dari
kalimat yang diisikan.

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -15-


BAHAN PRAKTIKUM IX : Array (Bagian I)
Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang
mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type,
larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam
larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan
menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti
byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik
mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data
tersebut.

Contoh:
Var Untai : array[1..50] of Integer;

Pada contoh Array dengan nama untai telah dideklarasikan dengan tipe integer, dengan
jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas harus bertipe
integer.

Contoh Program :
Program Contoh21;
Uses WinCrt;
Var Bilangan : array[1..50] of Integer;
Begin
ClrScr;
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);
Readln;
End.
Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh
dibawah ini :
Program Contoh22;
Uses WinCrt;
Var
NPM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
Begin
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NPM =');Readln(NPM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NPM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.

Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :
Type Angka = String[20];

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -16-


Var Nama : Array [1..50] of Angka;
Begin
.
.
End.
Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange,
tetapi tidak bisa real.

Contoh:
Var
Nilai : Array[1..10] of Integer;
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array
tersebut dapat dideklarasikan dengan type seperti berikut ini :
Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;
atau :
Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;
atau :
Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;
atau :

Const
Atas =1;
Bawah = 5;
type
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;

Array Dua Dimensi


Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array
dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array
2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama
menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
12
123
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat
pada listing program dibawah ini .

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -17-


Contoh Program:
Program Contoh23; {Array 2 dimensi}
Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel[1,1]:=1; Tabel[1,2]:=2;
Tabel[2,1]:=3; Tabel[2,2]:=4;
Tabel[3,1]:=5; Tabel[3,2]:=6;
For I := 1 to 3 Do
For J:= 1 to 2 Do
Begin
Writeln('Elemen ',i,',',j,'= ',tabel[i,j]);
End;

Readln;
End.
Kegiatan #1: Terbimbing
o Ketiklah masing-masing program contoh21 s.d. program contoh23. Kompilasi dan
eksekusilah.
o Buatlah percobaan kecil untuk mengubah batas indeks pada variabel array, dan indeks
pada saat variabel array dipakai. (mengubah = membesarkan atau mengecilkan batas
indeks). Kompilasi dan eksekusi ulang. Kenalilah apa pengaruhnya ?.

Kegiatan #2: Mandiri


Buatlah program penjumlahan 2 matrik dengan ukuran mxn
Buatlah program untuk menampilkan transpose matriks ukuran m x n
Buatlah program untuk perkalian skalar dengan matrik ukuran m x n

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -18-


BAHAN PRAKTIKUM X : Array (Pemrosesan Sekuensial Array)

Kegiatan #1: Terbimbing

Model pemrosesan terhadap Array, yang paling banyak dipakai adalah model pemrosesan
sekuensial.
Pola pemrosesan:
For i := Imin to Imax do
Proses(T[i]);
Jika array berdimensi lebih dari 1, maka pola tersebut tinggal dikembangkan dengan
mamakai nested-for.
Misal:
For i := Imin to Imax do
For J := Imin to Imax do
Proses(T[i,j]);

Contoh Pemakaian:
Program Contoh24;
Uses WinCrt;
Var Skor : array[1..100] of integer;
Nilai: array[1..100] of real;
I : integer;
Begin
{Bagian Input Skor}
For i := 1 to 100 do
Begin
Write(Ketik skor #,i, : );
readln(skor[i]);
End;
{Bagian menghitung dan mengisi array Nilai. Nilai = skor/100}
For i := 1 to 100 do
Begin
Nilai[i] := skor[i] / 100;
end;
{Bagian menampilkan isi array Nilai}
For i := 1 to 100 do
Begin
Writeln(nilai[i]);
End;
End.
Keterangan:
o Perhatikan bagian input skor, bagian menghitung nilai, dan juga bagian menampilkan
isi array Nilai. Semua bagian tsb bersentuhan dengan data bertipe array, dan
memakai pola pemrosesan sekuensial. (Cocokkan dengan pola di atas).

Program Contoh25;
Uses WinCrt;
Type Mhs = record
Nim : string[9];
Skor : integer;
Nilai: real;
Kuali: char;
End;
Var NilaiMhs : array[1..100] of Mhs;
I : integer;
Begin
{Bagian Input Nim, dan Skor}
For i := 1 to 100 do
Begin
Write(Ketik Nim : );
readln(NilaiMhs[i].Nim);
Write(Ketik skor: );
readln(NilaiMhs[i].Skor);
End;

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -19-


{Bagian menghitung dan mengisi array Nilai, dan Kualitas. Nilai = skor/100}

For i := 1 to 100 do
Begin
NilaiMhs[i].Nilai := Nilai[i].Skor / 100;
If NilaiMhs[i].Nilai > 70 then NilaiMhs[i].Kuali := A;
If (NilaiMhs[i].Nilai > 60) and (NilaiMhs[i].Nilai <= 70)
then NilaiMhs[i].Kuali := B;
If (NilaiMhs[i].Nilai > 55) and (NilaiMhs[i].Nilai <= 60)
then NilaiMhs[i].Kuali := C;
If (NilaiMhs[i].Nilai > 50) and (NilaiMhs[i].Nilai <= 55)
then NilaiMhs[i].Kuali := D;
If NilaiMhs[i].Nilai < 50 then NilaiMhs[i].Kuali := E;
end;
{Bagian menampilkan isi array Nilai}
For i := 1 to 100 do
Begin

End;
End.

Kegiatan Anda:
o Ketik program Contoh24, kompilasi dan eksekusilah.
o Ubahlah urutan for-to-do menjadi for-downt-to. Kompilasi dan eksekusi ulang.
Apakah ada perbedaannya ?.
o Ketik program Contoh25, lengkapilah bagian untuk menampilkan record-record
NilaiMhs. Kompilasi dan eksekusilah.

Kegiatan #2: Mandiri


o Buatlah program untuk membaca data dari sejumlah KTP, dan tampilkanlah siapa
saja yang berumur: <30; 30 40; 41- 50; 51 60; 61 - ... (aturan pembulatan: 0.5
dibulatkan ke atas).
o Modifikasilah program Contoh25, untuk menampilkan siapa saja yang memperoleh
nilai: A, B, C, D, dan E.

Bahan Praktikum Pemrograman Komputer(JPMIPA)-Januari 2011 -20-

Anda mungkin juga menyukai