Anda di halaman 1dari 28

MODUL 1.

KONSEP DASAR PEMROGRAMAN PASCAL


1.1 Tahapan Pemrograman
Bahasa Pascal adalah bahasa pemrograman tingkat tinggi (high-level language) yang cukup populer, khususnya di Indonesia. Hal ini disebabkan bahasa Pascal lebih mudah dipahami
dibandingkan dengan bahasa lainnya, seperti bahasa C, C++, assembly, dan bahasa tingkat
tinggi lainnya. Selain itu, bahasa Pascal adalah bahasa pemrograman yang terstruktur dan
seperti halnya dengan bahasa pemrograman tingkat tinggi lainnya, lebih mendekati bahasa
manusia (bahasa Inggris) sehingga sangat cocok diterapkan dalam dunia pendidikan.
Pembuatan kode-kode program dengan Pascal, sesungguhnya bukan merupakan tahapan
awal dalam pemrograman komputer. Berikut adalah tahapan-tahapan pemrograman komputer
yang dianjurkan:
1. Pemahaman Masalah: memahami masalah yang akan diprogramkan merupakan langkah
awal dan tahapan terkritis dalam membangun suatu program komputer. Setidak-tidaknya
pada tahapan ini ketiga komponen dari Siklus Pengolahan Data Masukan, Proses dan
Luaran teridentifikasi dengan jelas;
2. Pembuatan Diagram Alir, Algoritma atau Pseudocode: pemahaman tentang ketiga komponen
Siklus Pengolahan Data di atas selanjutnya direpresentasikan dalam rancangan diagram
alir (flowchart), algoritma ataupun pseudocode. Salah satu dari ketiga representasi
komponen siklus ini bisa digunakan untuk menjelaskan tahapan eksekusi intruksi yang
akan dikerjakan oleh komputer secara runut dan rinci;
3. Pengodean atau Coding: aktivitas pembuatan kode program seringkali dikenal dengan
nama pemrograman komputer harus dilakukan dengan mengacu kepada hasil-hasil dari
2 tahapan sebelumnya;
4. Pengujian atau Testing: setelah kode program selesai dirancang, untuk mengetahui apakah
kode program telah dieksekusi komputer sesuai dengan yang diharapkan; diperlukan
pengujian. Jika terjadi kesalahan-kesalahan pada kode program, maka kode diperbaiki
pada tahapan ini. Umumnya terdapat tiga jenis kesalahan dalam pembuatan kode
program, yaitu: (1) Kesalahan Sintaks atau syntax error yang disebabkan oleh kekeliruan
dalam menggunakan tata bahasa dari bahasa pemrograman yang dipilih; (2) Kesalahan
Logika atau logical error yang disebabkan oleh ketakcermatan pada tahap 2, dan (3)
Kesalahan Tak Terstruktur atau unstructured error yang lebih banyak disebabkan oleh
kegagalan atau keterbatasan perangkat keras;
5. Dokumentasi dan Maintenance: listing program yang telah berjalan dengan memuaskan seyogyanya didokumentasikan dengan baik (algoritma dan kode-kodenya) untuk disempurnakan seandainya terjadinya modifikasi minor pada permasalahan yang dihadapi.
Seandainya permasalahan yang akan diprogramkan sangat berbeda dengan permasalahan
sebelumnya, alih-alih melakukan modifikasi maka pembuatan kode yang baru lebih
dianjurkan memperhatikan memodifikasi kode program yang lama akan sangat
menyulitkan.

Dasar-dasar Pemrograman Pascal

Halaman 1

I Putu ENK - 2005

Contoh Kasus I
Misalkanlah ingin dirancang suatu program komputer untuk mencetak pola gambar berikut:
*
**
***
****
*****
Pada pola tersebut banyaknya baris akan ditentukan oleh pengguna!

Penyelesaian
Pemahaman Masalah: pada pola di atas terlihat bahwa jumlah simbul * yang dicetak pada
sebuah baris sama dengan nomor baris, sebagai misal pada baris ketiga tercetak 3 simbul
*. Dengan demikian, pada baris ke n akan tercetak n simbul! Luaran (output) dari
masalah sudah jelas dengan masukan (input) berupa jumlah baris yang akan dicetak = n.

Flowchart:

Gambar 1.1. Diagram Alir Kasus I

Dasar-dasar Pemrograman Pascal

Halaman 2

I Putu ENK - 2005

Pseudocode:
1. Read Jumlah_Baris;
2. Count_Baris := 1;
3. While Count_Baris <= Jumlah_Baris;

For Count_Star = 1 to Count_Baris Print X;

Next Line;

Count_Baris = Count_Baris + 1;
4. End.

Algoritma:
1. Mulai
2. Baca jumlah baris yang akan dicetak, simpan di Jumlah_Baris
3. Definisikan peubah Count_Baris untuk menghitung baris yang akan dicetak,
inisialisasi dengan nilai awal = 1
4. Lakukan blok berikut selama Count_Baris <= Jumlah_Baris
4.1. Definisikan dan inisialisasi peubah Count_Star = 1 untuk menghitung jumlah
bintang yang akan dicetak
4.2. Lakukan blok berikut selama peubah Count_Star <= Count_Baris
4.2.1. Cetak *
4.2.2. Count_Star = Count_Star + 1
4.3. Pindah baris baru
4.4. Count_Baris = Count_Baris + 1
5. Selesai

Contoh Kasus II
Misalkanlah ingin dirancang suatu program komputer untuk mencetak pola belah ketupat:
*
* *
* * *
* *
*
Pada pola tersebut panjang sisi belah ketupat ditentukan oleh pengguna!

Penyelesaian
Pemahaman Masalah: berbeda halnya dengan kasus I, pola gambar pada kasus II
memerlukan keberadaan spasi sebelum simbul * sehingga gambar sesuai dengan yang
diharapkan. Jika panjang belah ketupat ditentukan n, maka baris pertama membutuhkan
adanya n 1 spasi sebelum simbul *, aris kedua membutuhkan n 2 spasi dan
seterusnya! Hal kedua yang perlu diperhatikan, untuk setiap 2 simbul * ada spasi yang
memisahkannya!

Dasar-dasar Pemrograman Pascal

Halaman 3

I Putu ENK - 2005

Algoritma:
1. Mulai
2. Baca sisi bujursangkar, simpan di Sisi
3. Bila Sisi <= 1, berikan pesan kesalahan bahwa Sisi Bujursangkar harus lebih besar
dari 1, kembali ke nomor 2
4. Definisikan peubah Baris_Ke untuk menghitung baris yang akan dicetak, inisialisasi
dengan nilai awal = 1
5. Lakukan blok berikut selama Baris_Ke <= 2 * Sisi - 1
5.1. Definisikan Jum_Spasi = 1
5.2. Lakukan blok berikut selama Jum_Spasi <= |(Sisi - Baris_Ke)|
5.2.1 Cetak Spasi
5.2.1 Jum_Spasi = Jum_Spasi + 1
5.3. Definisikan Jum_Bintang = 1
5.4. Bila Baris_Ke <= Sisi, lakukan blok berikut selama Jum_Bintang <= Baris_Ke
5.4.1 Cetak *
5.4.2 Cetak Spasi
5.4.3 Jum_Bintang = Jum_Bintang + 1
5.5. Bila Baris_Ke > Sisi, lakukan blok berikut selama Jum_Bintang <= Baris_Ke
5.5.1 Cetak *
5.5.2 Cetak Spasi
5.5.3 Jum_Bintang = Jum_Bintang - 1
5.6. Cetak Spasi
5.7. Pindah Baris
5.8. Baris_Ke = Baris_Ke + 1
6. Selesai

Latihan
1. Rancanglah diagram alir untuk menghitung keliling dan luas suatu lingkaran!
2. Rancanglah algoritma untuk mengetahui apakah sebuah segitiga merupakan
segitiga siku-siku, segitiga sama kaki, segitiga sama sisi ataukah segitiga
sembarang jika panjang ketiga sisi segitiga ditentukan oleh pengguna!
3. Telah diketahui, jumlah dua bilangan pecahan dihitung dengan menggunakan
persamaan berikut:
a/b + c/d = (a*d + b*c) / (b*d)
Rancanglah pseudocode, di mana kedua bilangan dimasukkan oleh pengguna.
Contoh keluaran program seperti berikut:
Masukkan Pecahan I : 1/2
Masukkan Pecahan II : 2/5
Jumlah Keduanya
: 9/10

4. Misalkanlah Anda membuka rekening tabungan sebesar Rp. 10.000.000,- Misalkan pula per bulan besar bunga tabungan Anda 0,8 persen dan pajak atas bunga
yang ditetapkan pemerintah sebesar 10 persen untuk bunga yang besarnya di atas
Rp. 250.000,- Jika bunga yang diperoleh kurang dari Rp. 250.000,- tidak
dikenakan pajak. Rancanglah diagram alir untuk menentukan jumlah uang Anda
pada setiap akhir bulan selama periode satu tahun Anda menabung.

Dasar-dasar Pemrograman Pascal

Halaman 4

I Putu ENK - 2005

5. Rancanglah algoritma untuk menghitung jumlah deret berikut:


Jumlah = 1 + 32 + 53 + 74 +
Dengan banyaknya suku deret ditentukan oleh pengguna!

1.2 Struktur Program Pascal


Sebagai salah satu bahasa pemrograman komputer yang tergolong ke dalam kelompok
Bahasa Pemrograman Terstruktur (Structured Programming), struktur program Pascal relatif
sederhana. Bangun suatu program Pascal akan mengikuti pola berikut:
1. Judul Program
2. Blok Program, terdiri dari:
2.1 Bagian Deklarasi, meliputi (secara runut):
o Deklarasi Label
o Deklarasi Unit
o Deklarasi Konstanta
o Deklarasi Tipe
o Deklarasi Variabel
o Deklarasi Procedure dan atau Function
2.2 Bagian Pernyataan, yang terdiri dari instruksi-instruksi pemrograman,

Dalam kasus-kasus pemrograman, bangun program Pascal di atas akan bisa berbentuk
seperti berikut:
program Program_Pascal_Saya;
uses Crt;
label Label_Saya;
const
Bahasa = Pascal;
Versi = 7.0;
type Nama = string [30];
var Umur_Kamu : integer;
Nama_Kamu : Nama;

{Judul program}
{Deklarasi unit CRT}
{Deklarasi label}
{Deklarasi konstanta}

procedure Baca_dan_Tulis;
begin
write (Nama Kamu
: ); readln(Nama_Kamu);
write (Umur Kamu
: ); readln(Umur_Kamu);
writeln(Hallo, , Nama_Kamu);
writeln(Umur kamu sekarang , Umur_Kamu, tahun);
end;

{Deklarasi procedure}

{Deklarasi tipe}
{Deklarasi variabel}

begin
{Awal instruksi-instruksi program induk}
clrscr;
writeln(Hallo, Saya I Gede Algoritma);
Tulis;
writeln(Kita sedang belajar Bahasa , Bahasa, Versi , Versi);
end.
{Akhir instruksi program induk}

Dasar-dasar Pemrograman Pascal

Halaman 5

I Putu ENK - 2005

1.3 Variabel pada Pascal


Variabel merupakan salah satu konsep penting pada pemrograman Pascal. Variabel
sesungguhnya merupakan suatu pengalokasian memori (RAM/Random Access Menory) pada
komputer yang digunakan untuk menyimpan informasi secara temporer. Ingatlah sifat dari
RAM. Tanpa kehadiran variabel, pekerjaan pemrograman menjadi hal yang sulit untuk dilaksanakan.
Tidak seperti halnya dengan keluarga BASIC, variabel dalam Pascal harus dideklarasikan sebelum dapat digunakan. Seandainya sebuah variabel digunakan dalam suatu bangun
program tanpa dideklarasikan, maka saat program dikompilasi, compiler Pascal akan memberikan pesan bahwa telah terjadi kesalahan. Hal kedua yang perlu untuk diingat, penamaan variabel pada Pascal bersifat case insensitive, dalam artian variabel MyVar didefinisikan sebagai variabel sama dengan MYVAR atau myvar. Berikut adalah cara untuk mendeklarasikan variabel pada Pascal:
var
var
var

Nama_Variabel_Anda : varType;
Variabel_1, Variabel_2 : varType;
Variabel_1 : varType_1;
Variabel_2 : varType_2;
Variabel_3 : varType_3;

{Cara I}
{Cara II}
{Cara III}

Untuk mendeklarasikan dan mengisi variabel Anda harus memahami 3 konsep berikut:
1. Penamaan Variabel: suatu variabel harus dinamai saat dideklarasikan. Pada Pascal terdapat persyaratan yang harus diikuti dalam menamakan variabel, yaitu: (a) Bukan kata
tercadang (reserved word) dari Pascal, misalnya writeln; (b) Harus diawali dengan abjad
dan dapat diikuti dengan angka, misalnya Bilangan_1; (c) Tidak mengandung spasi, misalnya Bilangan 1 merupakan nama variabel yang tidak sah.
2. Tipe Variabel: Pascal mengenal beberapa tipe variabel, di antaranya integer, longint,
real, char, string, dan boolean. Perbedaan antar-tipe variabel tersebut terletak pada kebutuhan memori yang akan dialokasikan dan jenis data yang akan diletakkan.
3. Pengisian Nilai: untuk mengisi suatu variabel yang telah didefinisikan, maka Anda harus
menggunakan Assigment Operator salah satu operator yang dikenali Pascal yang
disimbulkan dengan tanda := dan mengisi variabel dengan isian yang sesuai dengan tipe
variabel.
Contoh 1
var Bilangan_1 : integer;
Bilangan_1 := 10;

{Mendefinisikan variabel Bilangan_1}


{Mengisi Bilangan_1 dengan Angka 10}

Contoh 2
var Nama : string[30];
Nama := Putu Algoritma;

{Mendefinisikan variabel Nama, panjang maksimum 30}


{Mengisi variabel Nama}

Contoh 3
var Bil_1, Bil_2: integer;
Hasil_Bagi : real;
Bil_1 := 10;
Bil_2 := 7;
Hasil_Bagi := Bil_1/Bil_2;

Dasar-dasar Pemrograman Pascal

{Mendefinisikan variabel Bil_1 dan Bil_2}


{Mendefinisikan variabel Hasil_Bagi}

{Mengisi Hasil_Bagi dengan Hasil Pembagian}

Halaman 6

I Putu ENK - 2005

1.4 Tipe Variabel


Salah satu kriteria dalam menilai program komputer adalah efisiensi program dalam melaksanakan fungsinya. Salah satu cara untuk meningkatkan efisiensi program adalah memilih
tipe variabel yang sesuai dengan konteks permasalahan yang dihadapi, mengingat masing-masing tipe membutuhkan alokasi memori yang berbeda. Tabel berikut menunjukkan tipe variabel dan alokasi memori yang digunakan pada Pascal 7.0:
Tabel 1. Tipe Data, Pengalokasi Memori dan Rentang Nilainya pada Pascal 7.0
Nama Tipe

Byte

Rentang Nilai

Keterangan

boolean

True atau False

Tipe Bulat

shortint

-128 hingga 127

Tipe Bulat

byte

0 hingga 255

Tipe Bulat

integer

-32768 hingga 32767

Tipe Bulat

word

0 hingga 65535

Tipe Bulat

longint

-2147483648 hingga 2147483647


-45

single

1.5 x 10

real

2.9 x 10-39 hingga 1.7 x 1038

double

5.0 x 10

hingga 3.4 x 10

38

-324

hingga 1.7 x 10

-4951

Real - Presisi 7Digit


Real - Presisi 11 Digit

308

hingga 1.1 x 10

Tipe Bulat

4932

Real - Presisi 15 Digit

extended

10

1.9 x 10

Real Presisi 19 Digit

char

Karakter 1 karakter

String [n]

Karakter Tergantung
nilai dari n

1.5 Operator dan Operan


Pernyataan-pernyataan program yang melibatkan operasi matematika dan atau relasional membutuhkan adanya operan dan operator. Perhatikan contoh pernyataan berikut:
Jumlah := Bilangan_1 + Bilangan_2;

Ketiga variabel pada pernyataan ini disebut Operan dan tanda + disebut Operator. Bahasa
Pascal mengenal beberapa operator dan 3 kelompok operator yang biasa digunakan dalam
pernyataan-pernyataan program adalah: Operator Aritmatika (arithmetic operator), Operator
Logika (logical operator) dan Operator Relasional (relational operator). Berikut adalah urutan prioritas (precedence) dari kelompok operator yang dikenali Pascal:
Tabel 2. Operator Precedence pada Pascal 7.0
Operator

Precedence

Kategori

@ not

Pertama (tertinggi)

Unary Operators

* / div mod and shl shr

Kedua

Multiplying Operators

+ - or

xor

Ketiga

Adding Operators

= <> <

>

Keempat (terendah)

Relational Operators

<= >=

in

Dasar-dasar Pemrograman Pascal

Halaman 7

I Putu ENK - 2005

Tabel 3. Simbul, Makna dan Kelompok Operator pada Pascal 7.0


SImbul

Operasi

Penjumlahan

Pengurangan

Perkalian

Pembagian

div
mod
not
and
or
xor
not
and
or
xor
shl
shr
=
<>
<
>
<=
>=
in

Pembagian Bulat
Sisa Pembagian Bulat
Pengubahan Tanda
Negasi
Logika AND
Logika OR
Logika XOR
Bitwise Negasi
Bitwise AND
Bitwise OR
Bitwise XOR
Shift Left
Shift Right
Sama Dengan
Tidak Sama Dengan
Lebih Kecil Dari
Lebih Besar Dari
Lebih Kecil atau Sama Dengan
Lebih Besar atau Sama Dengan
Anggota Dari

Concatenation

Pointer Formation

Tipe Operan

Tipe Hasil

integer
real
integer
real
integer
real
integer
real
integer
integer
integer
real
Boolean
Boolean
Boolean
Boolean
integer
integer
integer
integer
integer
integer
Setara
Setara
Setara
Setara
Setara
Setara
Setara
String atau
Char
Variable
Reference

integer
real
integer
real
integer
real
integer
real
Integer
Integer
integer
real
Boolean
Boolean
Boolean
Boolean
integer
integer
integer
integer
integer
integer
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean

Kelompok

Binary
Arithmetic

Unary
Arithmetic

Boolean

Logical
Operators

Relational
Operators

String

String Operator

Pointer

Pointer
Operation

Keterangan: PChar dan Set Operator tidak dicantumkan pada tabel di atas.

1.6 Kata-kata Tercadang (Reserved Word)


Kata tercadang (reserved word) merupakan kata yang tidak bisa digunakan sebagai pengenal sebagai misal nama sebuah variabel memperhatikan kata tersebut telah memiliki
makna tertentu pada lingkup Pascal. Berikut adalah daftar kata tercadang pada lingkup Pascal
versi 7.0:
and asm array begin case const constructor destructor div do downto
else end exports file for function goto if implementation in inline
interface label library mod nil not object of or packed procedure
program record repeat set shl shr string then to type unit until
uses var while with xor
Dasar-dasar Pemrograman Pascal

Halaman 8

I Putu ENK - 2005

MODUL 2.
LEBIH JAUH TENTANG PEMROGRAMAN PASCAL
2.1 Instruksi Masukan dan Luaran
Fasilitas dasar yang harus dimiliki oleh setiap program adalah kemampuan untuk menerima masukan dan mengeluarkan hasil dari suatu proses komputasi. Penanganan instruksi
masukan dan luaran pada Bahasa Pascal 7.0 dapat dilakukan dengan mudah melalui instruksiinstruksi berikut:

read dan readln

{Instruksi Masukan}

Instruksi read dan readln digunakan untuk memberi masukan (meng-input) kepada
komputer. Perbedaan dari kedua instruksi ini pada terjadinya perpindahan baris pada instruksi
readln setelah pengguna menekan tombol E. Berikut adalah sintaks dari kedua instruksi:
read(Var_1 [,Var_2, Var_3, ] );
readln(Var_1 [,Var_2, Var_3, ] );
Pada kedua sintaks di atas, Var_1,Var_2, Var_3, menyatakan variabel-variabel yang
akan diisi. Perhatikan contoh berikut:
read(Nama_Anda);
Pada contoh ini, variabel akan diisi dengan sesuatu yang dimasukkan pengguna.

write dan writeln

{Instruksi Luaran}

Instruksi write dan writeln digunakan untuk menghasilkan luaran proses dari komputer. Seperti halnya dengan 2 instruksi masukan, perbedaan dari kedua instruksi ini pada terjadinya perpindahan baris pada instruksi writeln. Berikut adalah sintaks dari kedua instruksi:
write(var_1[:f[:d]] [,Var_2[:f:[:d]]]);
writeln(var_1[:f[:d]] [,Var_2[:f:[:d]]]);
Pada kedua sintaks di atas, Var_1,Var_2, Var_3, menyatakan variabel-variabel yang
akan diisi, f dan d masing-masing menyatakan jumlah tempat yang disediakan dan jumlah
desimal yang hendak ditampilkan. Perhatikan contoh berikut:
Misalkanlah variabel Bil_1 terisi bilangan 14.06 dan Bil_2 terisi bilangan 10; maka:
write(Bil_1:10:3);
write(Bil_2:10:1);
write(Bil_1, + , Bil_2, = , Bil_1+Bil_2:5:1);

menghasilkan ----14.060
menghasilkan ------10.0
menghasilkan 14.06 + 10 = -24.1

Keterangan: pada ketiga contoh di atas, tanda yang ada di depan masing-masing luaran menyatakan
spasi.

Untuk memperjelas pemahaman Anda tentang instruksi masukan dan luaran pada Pascal
serta untuk memperjelas konsep variabel pada modul sebelumnya, simak contoh programprogram berikut dan kerjakan latihan pemrograman yang disediakan. Ingatlah, tahapan pertama dalam pemrograman adalah memahami masalah!

Dasar-dasar Pemrograman Pascal

Halaman 9

I Putu ENK - 2005

X Contoh 1.
program Tampilkan_Salam;
uses Crt;
var Nama_Anda: string;
begin
Clrscr;
{Membersihkan layar}
writeln(Hallo, Saya Pascal 7.0);
write (Siapakah Nama Anda: ); readln(Nama_Anda);
writeln;
{Menyisipkan baris}
writeln(Nama_Anda, , Salam Kenal!);
readkey;
{Instruksi untuk menunggu!}
end.

Jika program di atas dieksekusi (dengan menekan kombinasi tombol C() maka tampilan di monitor Anda seperti berikut:
Hallo, Saya Pascal 7.0
Siapakah Nama Anda: IPENK

{Anda menjawab IPENK}

Hallo IPENK, Salam Kenal!

Contoh kedua akan digunakan untuk mengilustrasikan penggunaan Pascal 7.0 pada penaganan masalah komputasi. Misalkanlah ingin dihitung keliling dan luas suatu lingkaran dengan diameter ditentukan oleh pengguna. Berikut adalah listing code dari Pascal.

X Contoh 2.
{ Nama Program
: Hitung_Lingkaran
Tanggal File
: 11 Juli 2005
Versi Program
: 1.00
-------------------------------}
program Hitung_Lingkaran;
uses Crt;
const PHI = 3.14;
var Diameter, Keliling, Luas : real;
begin
Clrscr;
{Membersihkan layar}
writeln(Menghitung Keliling dan Luas Lingkaran);
writeln(--------------------------------------);
write (Masukkan Diameter Lingkaran : ); readln(Diameter);
Keliling := PHI * Diameter;
Luas
:= 0.25 * PHI * Sqr(PHI);
{Fungsi SQR untuk Menghitung Kuadrat}
writeln(Keliling Lingkaran
: , Keliling:7:2);
writeln(Luas Lingkaran
: , Luas:7:2);
readkey;
{Instruksi untuk menunggu!}
end.

Dasar-dasar Pemrograman Pascal

Halaman 10

I Putu ENK - 2005

Gambar berikut menunjukkan tampilan dari eksekusi program:

Latihan Mandiri:
1. Rancanglah program Pascal untuk mengetahui apakah sebuah segitiga merupakan segitiga siku-siku, segitiga sama kaki, segitiga sama sisi ataukah
segitiga sembarang jika panjang ketiga sisi segitiga ditentukan oleh pengguna!
2. Program Pascal berikut dibuat untuk mengetahui berapakah keranjang yang
diperlukan pedagang kol bila 1 keranjang bisa terisi oleh maksimum 25 kol
(diasumsikan besar setiap kol sama). Jumlah kol yang dimilikinya akan dimasukkan pengguna. Temukanlah kesalahan pada program sehingga eksekusi program tidak sesuai dengan yang diharapkan:
program Hitung_Keranjang;
uses Crt;
const Maksimum = 25;
var Jumlah_Kol: byte;
begin
writeln(Menentukan Jumlah Keranjang Kol yang Diperlukan);
writeln(===============================================);
write (Berapakah jumlah kol yang dimiliki? );
readln (Jumlah_Kol:3:0);
{ --- Menghitung Keranjang --- };
Jumlah_Keranjang := Jumlah_Kol div Maksimum;
writeln(Keranjang yang diperlukan adalah = , Jumlah_Keranjang);
write (Tekan sembarang tombol!); readkey;
end.

3. Hukum Fisika menyatakan bahwa bila sebuah mobil bergerak pada lintasan
lurus dengan kecepatan awal V0 ms-1 dan percepatan mobil konstan sebesar a ms-2 maka setelah t detik, jarak yang ditempuh mobil dapat dihitung
dari persamaan berikut:
X = V0 t + a t 2

Rancanglah algoritma dan program Pascal untuk permasalahan di atas!


4. Dalam sebuah kejuaran gundu ditetapkan pemenang I, II dan III masingmasing mendapat gundu dengan prosentase pembagian sebagai berikut:
40% dari total gundu untuk pemenang I; dan sisanya ditetapkan 60% dan
40% untuk pemenang II dan III. Rancanglah program untuk menetapkan
gundu yang diterima ketiga pemenang jika total hadiahnya 75 gundu!

Dasar-dasar Pemrograman Pascal

Halaman 11

I Putu ENK - 2005

2.2 Fungsi Bawaan Pascal


Pada beberapa program sebelumnya telah digunakan 2 buah fungsi bawaan Pascal
fungsi Sqr dan Clrscr yang masing-masing digunakan untuk menghitung pangkat (dua) dari
sebuah bilangan dan membersihkan layar tampilan. Fungsi bawaan Pascal (built-in function)
jika digunakan secara tepat akan sangat membantu aktivitas pemrograman. Berikut akan
diuraikan beberapa jenis fungsi bawaan Pascal yang akan sering Anda gunakan:

Fungsi Manipulasi String


Concat(String_1, String_2, )

Fungsi ini digunakan untuk menggabungkan isi dari 1 atau lebih variabel bertipe string.
Sebagai misal, Concat(Nasi, goreng) akan menghasilkan Nasi goreng.
Length(String)

Fungsi ini digunakan untuk mengetahui panjang dari variabel bertipe string. Sebagai
misal, Length(Nasi goreng) akan menghasilkan nilai 11.
Copy(String, Start, N)

Fungsi ini digunakan untuk mengambil N karakter pada string dimulai dari posisi
Start. Sebagai misal, Copy(Nasi goreng,3,5)akan menghasilkan si go
Pos(SubString, String)

Fungsi ini digunakan untuk mengetahui apakah SubString ada pada String. Jika tidak
ada, maka fungsi ini akan memberikan nilai 0! Perhatikan contoh berikut:
IsPresent := Pos(Telur,Nasi goreng);

Hasil dari ekspresi di atas adalah 0 karena tidak ada substring Telur pada string Nasi
goreng.

Fungsi Aritmatika
Abs(Bilangan)

Fungsi ini digunakan untuk mengambil nilai mutlak (absolut) sebuah bilangan. Sebagai
misal, Abs(-4) akan menghasilkan 4.
ArcTan(Bilangan)

Fungsi ini digunakan untuk menghitung arc tangen dari suatu bilangan (dalam radian).
Cos(Bilangan)

Fungsi ini digunakan untuk menghitung cosinus sudut yang dinyatakan dalam radian.
Exp(Bilangan)

Fungsi ini digunakan untuk menghitung nilai dari eBilangan


Frac(Bilangan)

Fungsi ini digunakan mengetahui bagian fraksional suatu bilangan real. Perhatikan contoh berikut: Frac(10.245) menghasilkan 0.245 dan Frac(-10.245) menghasilkan -0.245.

Dasar-dasar Pemrograman Pascal

Halaman 12

I Putu ENK - 2005

Int(Bilangan)

Fungsi ini digunakan mengetahui bagian bulat suatu bilangan real. Perhatikan contoh
berikut: Int(10.245) menghasilkan 10.0 dan Int(-10.245) menghasilkan -10.0
Ln(Bilangan)

Fungsi ini digunakan untuk menghitung nilai logaritma dengan basis e sebuah bilangan.
Pi

Fungsi ini digunakan mengambil Phi () yang didefinisikan = 3.1415926535897932385.


Sin(Bilangan)

Fungsi ini digunakan untuk menghitung sinus sudut yang dinyatakan dalam radian.
Sqr(Bilangan)

Fungsi ini digunakan untuk menghitung nilai dari Bilangan2.


Sqrt(Bilangan)

Fungsi ini digunakan untuk menghitung nilai dari Bilangan.

Fungsi Ordinal
Dec(Bilangan [; Pengurang])

Fungsi ini digunakan untuk mengurangi nilai variabel Bilangan yang jika Pengurang tidak didefinisikan dengan 1, sebaliknya dengan nilai dari Pengurang. Misalkan variabel X
terisi nilai 10, maka Dec(X) akan menghasilkan 9 dan Dec(X; 3) menghasilkan 7.
Inc(Bilangan [; Penambah])

Fungsi ini digunakan untuk menambah nilai variabel Bilangan yang jika Penambah tidak didefinisikan dengan 1, sebaliknya dengan nilai dari Penambah. Misalkan variabel X
terisi nilai 10, maka Inc(X) akan menghasilkan 11 dan Inc(X; 3) menghasilkan 13.
Odd(Bilangan)

Fungsi ini digunakan untuk mengetahui apakah variabel Bilangan merupakan bilangan
ganjil ataukah tidak.

Fungsi Transfer
Chr(Bilangan)

Fungsi ini digunakan untuk mengambil karakter ASCII dari Bilangan yang diberikan.
Round(Bil_Real)

Fungsi ini digunakan untuk membulatkan suatu bilangan real ke bilangan bulat (integer)
terdekat.
Trunc(Bilangan)

Fungsi ini digunakan untuk memotong suatu bilangan real ke bilangan bulat (integer)
terdekat.

Dasar-dasar Pemrograman Pascal

Halaman 13

I Putu ENK - 2005

2.3 Pengulangan pada Pascal


Konsep pengulangan satu atau lebih pernyataan dalam suatu program merupakan salah
satu konsep terpenting dalam pemrograman komputer. Pengulangan sekelompok pernyataan
program komputer sering disebut dengan nama Looping. Adanya kemampuan dari bahasabahasa pemrograman komputer untuk mengerjakan satu atau lebih pernyataan-pernyataan
program sebanyak jumlah yang ditentukan menyebabkan proses komputasi menjadi lebih
efisien. Sebagai misal, untuk menghitung jumlah dari 100 bilangan asli yang pertama yang
ekspresinya dapat dituliskan dalam bentuk Jumlah = 1 + 2 + 3 + + 100, tidaklah berarti pemrogram harus mengalokasikan 100 variabel memori untuk variabel di sebelah kanan tanda penugasan dan satu variabel untuk Jumlah. Pengulangan memungkinkan proses komputasi tersebut
dilakukan secara efisien.
Bahasa Pascal mengenal 3 jenis pengulangan yaitu pengulangan for, pengulangan while
dan pengulangan repeat until. Ketiga jenis pengulangan ini membutuhkan keberadaan ekspresi kondisional yang digunakan untuk mengetahui apakah sebuah blok pernyataan masih akan
dieksekusi ataukah pengulangan berakhir. Selama ekspresi kondisional ini memberikan nilai
True, blok pernyataan terus diulangi hingga ekspresi menghasilkan nilai False. Hal kedua yang
perlu diperhatikan, ketiga jenis pengulangan ini jika diperhatikan secara seksama memiliki
konsep yang berbeda dalam melakukan pengulangan blok program, seperti yang ditulis pada
penjelasan berikut.

Pengulangan for
Pengulangan for pada Pascal akan memiliki salah satu dari 2 sintaks berikut:
for Variabel := First to Last do
begin
statement_1;
statement_2;

statement_N;
end;

atau
for Variabel := First downto Last do
begin
statement_1;
statement_2;

statement_N;
end;

Pada kedua sintaks di atas, tipe dari Variabel, First dan Last harus ordinal (integer atau
char). Klausa to akan menyebabkan nilai dari Variabel bertambah 1 dan klausa downto menyebabkan nilai Variabel berkurang 1. Untuk mempermudah pemahaman Anda, misalkanlah
ingin diketahui jumlah dari 10 bilangan asli yang pertama, yaitu:
Jumlah = 1 + 2 + + 10

Seperti biasa, cobalah untuk membuat algoritma atau diagram alir dari permasalahan tersebut.
Berikut adalah listing code dengan Pascal 7.0:

Dasar-dasar Pemrograman Pascal

Halaman 14

I Putu ENK - 2005

program Hitung_Jumlah_Asli;
uses Crt;
var Jumlah, Pencacah: byte;
begin
Clrscr;
writeln(Menghitung Jumlah 10 Bilangan Asli yang Pertama);
writeln(===============================================);
Jumlah := 0;
{Inisialisasi Variabel}
for Pencacah := 1 to 10 do
{Memulai Pengulangan}
Jumlah := Jumlah + Pencacah;
writeln(1 + 2 + + 10 = , Jumlah);
readkey;
end.

Memperhatikan bahwa hanya ada 1 instruksi yang diulangi setelah do, maka pasangan
kata begin end bisa dihilangkan. Namun jika terdapat lebih dari 1 instruksi, Anda harus
meletakkan instruksi-instruksi tersebut di antara pasangan begin end. Perhatikan kembali
program di atas dan sintaks pada halaman sebelumnya!
Sintaks kedua akan digunakan untuk mengetahui nilai faktorial suatu bilangan. Seperti
yang Anda ketahui, faktorial dari X (X > 1) didefinisikan sebagai X! = X (X-1) (X-2) (1).
Berikut adalah program untuk menghitung faktorial suatu bilangan.

program Faktorial_1;
uses Crt;
var Bilangan, Pencacah: byte;
Faktorial
: longint;
begin
Clrscr;
writeln(Menghitung Nilai Faktorial Sebuah Bilangan);
writeln(==========================================);
write (Masukkan Bilangan yang Dihitung: ); readln(Bilangan);
Faktorial := 1;
for Pencacah := Bilangan downto 1 do
Faktorial := Faktorial * Pencacah;
writeln(Faktorial dari , Bilangan, = , Faktorial);
readkey;
end.

{Inisialisasi Variabel}
{Memulai Pengulangan}

Latihan Mandiri:
Dengan menggunakan pengulangan for, rancanglah program untuk menghitung jumlah
dari deret berikut:
1, 9, 25, 49, 81,
di mana banyak suku dari deret ditentukan pengguna program!
Dasar-dasar Pemrograman Pascal

Halaman 15

I Putu ENK - 2005

Pengulangan while
Pengulangan while pada Pascal akan memiliki sintaks berikut:
while Logical_Expression do
begin
statement_1;
statement_2;

statement_N;
end;

Pada sintaks di atas, selama Logical_Expression bernilai True, maka kelompok instruksi pada
blok begin end akan tetap dieksekusi. Perhatikan contoh berikut:

program Faktorial_2;
uses Crt;
var Bilangan : byte;
Faktorial : longint;
begin
Clrscr;
writeln(Menghitung Nilai Faktorial Sebuah Bilangan);
writeln(==========================================);
write (Masukkan Bilangan yang Dihitung: ); readln(Bilangan);
Faktorial := 1;
{Inisialisasi Variabel}
while Bilangan > 1 do
{Memulai Pengulangan}
begin
Faktorial := Faktorial * Bilangan;
dec(Bilangan);
{Mengurangi Nilai Bilangan}
end;
writeln(Faktorial dari , Bilangan, = , Faktorial);
readkey;
end.

Pengulangan repeat until


Pengulangan repeat until pada Pascal akan memiliki sintaks berikut:
repeat
begin
statement_1;
statement_2;

statement_N;
end;
until Logical_Expression;

Dasar-dasar Pemrograman Pascal

Halaman 16

I Putu ENK - 2005

Pada sintaks di atas, kelompok instruksi yang terletak di antara pasangan begin end
akan dieksekusi Logical_Expression menghasilkan nilai True. Jika dicermati, maka setidaktidaknya kelompok instruksi tersebut akan dieksekusi satu kali. Kenapa? Berikut adalah penerapan pengulangan tersebut yang digunakan untuk menghitung jumlah dari deret berikut:
Jumlah = 11 + 32 + 53 + 74 +

program Jumlah_Deret;
uses Crt;
var Counter, Suku, Bilangan, Pangkat : byte;
Jumlah : longint;
begin
Clrscr;
writeln(Menghitung Jumlah dari Deret);
writeln(============================);
write (Masukkan Jumlah Suku Deret: ); readln(Suku);
Jumlah := 1;
Bilangan := 1;
Pangkat := 0;
repeat
begin
for Counter = 1 to Pangkat do
Bilangan := Bilangan * Bilangan;
Jumlah := Jumlah + Bilangan;
inc(Bilangan, 2);
inc(Pangkat);
end;
until Bilangan > (2*Suku 1);

{Inisialisasi Variabel}

{Memulai Pengulangan}

{Menaikkan Nilai Bilangan dengan 2}


{Menaikkan Nilai Pangkat dengan 1}
{Akhir Pengulangan}

writeln(Jumlah Deret, = , Jumlah);


readkey;
end.

Latihan Mandiri:
1. Nilai dari Cos (X) bisa dihampiri dengan menggunakan Perluasan Deret Maclaurin
yang dinyatakan dalam bentuk berikut:
Cos (X) = 1 - (x2/2!) + (x4/4!) - (x6/6!) + (x8/8!) - ...
Buatlah diagram alir untuk menyelesaikan persoalan di atas dengan masukan dari
pengguna adalah nilai X yang dinyatakan dalam radian (2 rad = 3600) dan jumlah
suku yang digunakan untuk menghampirinya. Mengacu kepada diagram alir yang
Anda buat, rancanglah program C++.

Dasar-dasar Pemrograman Pascal

Halaman 17

I Putu ENK - 2005

2. Buatlah diagram alir dan program C++ yang digunakan untuk mencetak Segitiga Phytagoras di mana ketinggian segitiga ditentukan oleh pengguna program. Sebagai
contoh, jika pengguna memasukkan ketinggian segitiga 5 satuan maka luaran dari
program seperti berikut:
1
1
1
1
1

1
2 1
3 3 1
4 6 4 1

2.4 Percabangan pada Pascal


Selain konsep pengulangan satu atau lebih pernyataan dalam suatu program, konsep tentang penentuan aliran program (program flow) merupakan konsep pemrograman yang tidak
kalah pentingnya. Percabangan aliran program dalam teori-teori pemrograman dikenal
dengan nama branching atau conditioning.
Pascal 7.0 memiliki 2 bentuk pengaturan cabang program yaitu: if then else dan
case of. Berikut adalah penjelasan tentang ketiga bentuk tersebut secara ringkas:

Percabangan if then else


Percabangan if then else pada Pascal akan memiliki sintaks berikut:
if Expression then
begin
statement_11;
statement_21;

statement_N1;
end
else
begin
statement_12;
statement_22;

statement_N2;
end;

Pada sintaks di atas, seandainya hasil dari ekspresi logika Expression bernilai True, maka
pernyataan-pernyataan pada kelompok begin end yang pertamalah yang akan dieksekusi.
Sebaliknya, begin end yang kedua yang akan dilaksanakan. Untuk menambah pemahaman
Anda, misalkanlah akan dicari akar-akar persamaan kuadrat aX2 + bX + c = 0 dengan menggunakan Rumus ABC sebagai berikut:
X1,2 = b

b 2 4ac
2a

Perhatikanlah algoritma untuk permasalahan di atas:

Dasar-dasar Pemrograman Pascal

Halaman 18

I Putu ENK - 2005

0.
1.
2.
3.
4.

Mulai
Baca Nilai A, B dan C
Hitung Diskriminan Persamaan = Diskriminan = b2 4ac
Jika Diskriminan < 0, maka informasikan akar-akar persamaan IMAJINER; ke nomor 6
Jika Diskriminan = 0, maka informasikan akar-akar persamaan tunggal = X = b; ke
nomor 6
5. Hitung X1 = b + (Diskriminan)/(2a) dan X2 = b - (Diskriminan)/(2a)
6. Tanya pengguna, ada persamaan lain yang akan dihitung? Jika Ya; ke nomor 1
7. Selesai

Perhatikanlah algoritma di atas! Saat ada pernyataan jika maka dalam algoritma,
maka saatnya Anda menggunakan konsep percabangan dalam program. Perhatikan kode berikut dengan mengacu kepada algoritma tersebut.

program Cari_Akar;
uses Crt;
var A, B, C : real;
Diskriminan, Akar_1, Akar_2 : real;
Jawab : char;
begin
repeat
Clrscr;
writeln(Mencari Akar Persamaan Kuadrat dari aX^2 + bX + c = 0);
writeln(=====================================================);
write (Masukkan Koefisien Kuadrat Persamaan (A) : ); readln(A);
write (Masukkan Koefisien Linier Persamaan (B) : ); readln(B);
write (Masukkan Konstanta Persamaan
(C) : ); readln(C);
writeln;
{Mencetak Baris Kosong}
Diskriminan := Sqr(B) 4*A*C;
{Menghitung Diskriminan}
if Diskriminan < 0 then writeln(Akar-akar Persamaan Imajiner)
else
begin
if Diskriminan = 0 then
begin
Akar_1 := -B;
writeln(Akar-akar Persamaan Tunggal = X = , Akar_1:7:2);
end
else
begin
Akar_1 := -B + Sqrt(Diskriminan)/(2*A);
Akar_2 := -B - Sqrt(Diskriminan)/(2*A);
writeln(Akar Persamaan I = X1 = , Akar_1:7:2);
writeln(Akar Persamaan I = X2 = , Akar_2:7:2);
end;
end;
writeln;
{Mencetak Baris Kosong}
write (Ada Persamaan Lainnya [Y/T]);
repeat
read(Jawab);
until Jawab in [Y,y,T,t];
until Jawab in [T,t];
end.

Dasar-dasar Pemrograman Pascal

Halaman 19

I Putu ENK - 2005

Percabangan case of
Saat cabang alur program bertambah banyak, maka penggunaan if then else
menjadi semakin rumit. Jika Anda menjumpai kondisi pemrograman di mana cabang dari
program lebih dari 3, maka disarankan untuk menggunakan case of yang sintaksnya seperti berikut:
case Expression of
case_1: statement_1;
case_2: statement_2;

case_N: statement_N;
else
statement_X;
end;

Misalkanlah terdapat 5 kemungkinan nilai yang diperoleh seorang murid yang mengambil mata pelajaran komputer. Kemungkinan nilai tersebut adalah A, B, C, D dan E. Jika untuk setiap huruf ada predikatnya maka akan ada 5 kemungkinan predikat yang disandang
murid. Perhatikan program berikut:
program Cari_Predikat;
uses Crt;
var Nilai
: char;
Predikat : string;
Nama
: string;
NIS
: string[10];
begin
writeln(Program untuk Mengetahui Predikat Kelulusan Siswa);
writeln(-------------------------------------------------);
write (Nama Siswa
: ); readln(Nama);
write (Nomor Induk
: ); readln(NIS);
write (Nilai yang Diperoleh : );
repeat
read(Nilai);
until UpCase(Nilai) in [A..E];
case UpCase(Nilai) of
{Fungsi UpCase untuk Menjadikan Huruf Kapital}
A : Predikat := Genius!
B : Predikat := Sangat Berbakat!;
C : Predikat := Cukup Berbakat!;
D : Predikat := Kurang Berbakat!;
E : Predikat := Tidak Berbakat!;
end;
writeln(Predikat Kelulusan : , Predikat);
readkey;
end.

Dasar-dasar Pemrograman Pascal

Halaman 20

I Putu ENK - 2005

Latihan Mandiri:
1. Buatlah program Pascal untuk mengetahui apakah sebuah bilangan merupakan
prima mengacu kepada diagram alir berikut:

2. Buatlah diagram alir dan program untuk menghitung deret berikut:


Jumlah = 1(-2) + (-1)2 + 1(-2) + (-1)2 + 1(-2) + (-1)2 +
Sebagai masukan, jumlah suku dari deret!
3. Rancanglah program untuk mengetahui denda jika perpustakaan sekolah menerapkan aturan peminjaman koleksi perpustakaan sebagai berikut:
Koleksi yang bisa dipinjam hanyalah koleksi berupa buku-buku teks;
Jika koleksi yang dipinjam tergolong ke dalam kelompok langka (jumlah koleksi
3 eksemplar), maka lama peminjaman dibatasi maksimal 3 hari. Keterlambatan pengembalian untuk 4 hari pertama dikenakan denda Rp 1.000 per hari, 3 hari
berikutnya dikenakan Rp. 2.500 per hari dan hari-hari berikutnya dikenakan denda Rp 5.000 per hari;
Jika koleksi yang dipinjam tidak tergolong ke dalam kelompok langka, maka lama peminjaman dibatasi maksimal 7 hari. Keterlambatan pengembalian dikenakan denda Rp. 500 per hari;
Jumlah koleksi yang bisa dipinjam untuk setiap peminjaman dibatasi maksimal 3
judul buku.
Dasar-dasar Pemrograman Pascal

Halaman 21

I Putu ENK - 2005

MODUL 3.
ARRAY DAN RECORD PADA PASCAL
3.1 Latar Belakang
Pascal pada umumnya mengenal 2 macam tipe data yaitu yaitu tipe data sederhana (primitive/simple type) dan tipe data kompleks (complex type). Contoh tipe data sederhana adalah
tipe numerik (integer dan real), tipe data charakter, tipe data boolean dan tipe enumerasi.
Beberapa dari tipe ini telah kita gunakan pada kasus-kasus pemrograman sebelumnya. Sedangkan contoh dari tipe data kompleks adalah string, array, record dan object.
Tipe data sederhana bisa diartikan tipe data yang hanya mampu menyimpan satu nilai
tiap satu variabelnya, sedangkan tipe data kompleks adalah tipe data yang mampu menyimpan
lebih dari satu nilai dalam tiap satu variabelnya. Pada modul ini memperhatikan waktu yang
tersedia hanya akan dibahas 2 tipe data kompleks yaitu array dan record.

3.2 Array
Array sebagian buku-buku pemrograman menyebutkannya dengan nama Larik adalah tipe data kompleks yang elemen-elemennya mempunyai tipe data yang sama. Bayangkanlah kandang merpati berikut:

Kandang di atas dapat dianalogikan sebagai suatu array yang berukuran 10 di mana burung yang bisa menempati setiap lubang pada kandang adalah merpati! Perhatikan ukuran
setiap lubang sama untuk ke-sepuluh lubang pada kandang. Untuk membedakan sebuah
lubang dengan lubang lainnya, dibutuhkan adanya pengenal lubang. Pengenal elemen
array seringkali disebut dengan nama Indeks dari Array, yang dinomori dari 1 hingga jumlah
dari seluruh elemen array. Pada kandang kita, pengenal lubang adalan 1, 2, , 10.
Untuk mendefinisikan sebuah array pada Pascal, Anda bisa menggunakan salah satu
dari cara berikut:
Cara I:
type Nilai = array [1..10] of real;
var Nilai_Siswa : Nilai;

Cara II:

{Tidak Dianjurkan!!!}

var Nilai_Siswa : array [1..10] of real;

Dasar-dasar Pemrograman Pascal

Halaman 22

I Putu ENK - 2005

Meskipun kedua cara pendefinisian array di atas bisa dipilih, Penulis lebih menganjurkan untuk menggunakan cara pertama. Pemanfaatan keyword type untuk mendefinisikan tipe
data kompleks yang diikuti keyword var untuk mendefinisikan sebuah variabel yang bertipe
kompleks lebih banyak diikuti oleh para penulis buku-buku teks pemrograman Pascal.
Untuk mengakses elemen-elemen suatu array, maka dibutuhkan indeks dari array. Berbeda dengan bahasa C atau C++ di mana indeks array diawali dengan angka 0 dan diakhiri
dengan n 1 (n merupakan jumlah elemen array), pada Pascal (seperti juga BASIC) elemen
array diawali dengan angka 1. Sebagai misal, untuk mengakses elemen kedua dari variabel
Nilai_Siswa pada contoh di atas bisa digunakan pernyataan Nilai_Siswa[2]. Perhatikan penggunaan pasangan [ ] untuk mengakses elemen array.
Misalkanlah ingin dirancang suatu program Pascal untuk mengetahui karakter di posisi
ke n dari suatu kata yang panjangnya dibatasi maksimal 15 huruf. Berikut adalah listing code dari program dimaksud:

{ Nama File Program : CekHuruf.PAS


Tanggal File
: 14 Juli 2005
Versi File
: 1.01 }
Program
Uses
Const
Type
Var

Cetak_Karakter;
Crt;
MaxLen = 15;
Kata = array [1
Kata_Diperiksa
Kata_Diinput
Counter, Posisi

.. MaxLen] of Char;
: Kata;
: String[MaxLen];
: Byte;

Begin
Clrscr;
Write(Masukkan Kata, Panjang Maksimal 15 Karakter : ); ReadLn(Kata_Diinput);
For Counter := 1 to MaxLen do
{Menyalin Kata_Diinput ke Kata_Diperiksa}
Kata_Diperiksa[Counter] := Kata_Diinput[Counter];
Write(Tentukan Posisi Karakter yang Ingin Diketahui: ); ReadLn(Posisi);
Write(Karakter pada Posisi ke , Posisi:2, adalah Huruf: );
WriteLn(Kata_Diperiksa[Posisi]);
WriteLn;
WriteLn(Gitu, lho!);
ReadKey;
End.
(* End of File *)

Luaran dari program di atas dapat berbentuk seperti berikut:


Masukkan Kata, Panjang Maksimal 15 Karakter : Putu Bagus
Tentukan Posisi Karakter yang Ingin Diketahui: 8
Karakter pada Posisi ke - 8 adalah Huruf: g
Gitu, Lho!

Dasar-dasar Pemrograman Pascal

Halaman 23

I Putu ENK - 2005

Program berikut digunakan untuk mencetak Daftar Nilai Pelajaran Teknologi Informasi dan
Komunikasi di Sekolah Banyak Siswa, Denpasar. Perhatikan dengan baik kode program!
Program
Uses
Const
Type
Var

Cetak_Nilai_Siswa;
Crt;
Max_Siswa = 40;
Nama = Array [1 .. Max_Siswa] of String [40];
Nilai = Array [1 .. Max_Siswa] of Byte;
Nama_Siswa : Nama;
Nilai_Siswa : Nilai;
Counter, Nilai_Max, Nilai_Min : Byte;
Total : Word;
Rataan : Real;

Begin
WriteLn('Merekam Nama serta Nilai Siswa untuk Pelajaran TIK');
WriteLn('--------------------------------------------------');
for Counter := 1 to Max_Siswa Do
Begin
Clrscr;
Write('Nama Siswa: '); ReadLn(Nama_Siswa [Counter]);
Write('Nilainya : '); ReadLn(Nilai_Siswa[Counter]);
End;
Nilai_Max := 0;
{ Memroses Array Nilai_Siswa }
Nilai_Min := 100;
Total
:= 0;
for Counter := 1 to Max_Siswa Do
Begin
Total := Total + Nilai_Siswa[Counter];
if Nilai_Max < Nilai_Siswa[Counter] then Nilai_Max := Nilai_Siswa[Counter];
if Nilai_Min > Nilai_Siswa[Counter] then Nilai_Min := Nilai_Siswa[Counter];
End;
Rataan := Total/Max_Siswa;
{ Mencetak Nama dan Nilai Siswa }
{ --------------------------------------------------------- }
{
12345678901234567890123456789012345678901234567890 }
{
0--------1---------2---------3---------4---------5 }
Clrscr;
WriteLn(==================================================);
WriteLn('NAMA SISWA
N I L A I');
WriteLn('--------------------------------------------------');
for Counter := 1 to Max_Siswa Do
Begin
Write(Nama_Siswa[Counter]);
Write(Nilai_Siswa[Counter]:50-Length(Nama_Siswa[Counter]));
WriteLn;
End;
WriteLn('--------------------------------------------------');
WriteLn('Nilai Maksimum : ',Nilai_Max:3);
WriteLn('Nilai Minimum : ',Nilai_Min:3);
WriteLn('Nilai Rata-rata : ',Rataan:6:2);
WriteLn('==================================================');
ReadKey;
End.

Dasar-dasar Pemrograman Pascal

Halaman 24

I Putu ENK - 2005

Gambar berikut menunjukkan contoh luaran dari program di atas:

Latihan Mandiri:
1. Palindrom merupakan kalimat yang jika dibaca dari belakang sama dengan dibaca
dari depan. Sebagai misal, kalimat kasur ini rusak merupakan sebuah palindrom.
Rancanglah program Pascal untuk mengetahui apakah sebuah kalimat merupakan
palindrom atau bukan!
2. Buatlah sebuah program Pascal untuk melakukan penjumlahan 2 buah vektor yang
berukurun sama (Vektor merupakan sebuah besaran berarah yang dimensinya adalah
n x 1 dengan n menyatakan banyaknya baris pada vektor dan 1 jumlah kolom).
3. Buatlah sebuah program Pascal untuk menjumlahkan, mengurangi dan mengalikan 2
buah matriks yang berikuran 4 x 4.

3.3 Record
Di bagian sebelumnya kita telah membahas tentang array sebuah tipe data yang elemen-elemennya tersusun dari tipe yang sama. Ingatlah kembali analogi tentang kandang burung merpati. Meskipun demikian, tidak selamanya dalam kasus pemrograman Anda menghadapi tipe data yang seragam. Sebagai misal, Kebun Binatang Ragunan memiliki berbagai
jenis binatang dengan ukuran kandang yang berbeda-beda disesuaikan dengan besar binatangnya.
Untuk mendefinisikan record seperti halnya mendefinisikan array Anda harus
memanfaatkan keyword Type dan Var secara simultan. Misalkanlah seorang siswa memiliki 3
jenis informasi, yaitu: Nama Siswa, Nomor Induk Siswa dan Nilai Pelajara TIK . Perhatikan
contoh pendefinisian record Siswa berikut:
Type Siswa = Record
Nama_Siswa : String[40];
NIS
: string[ 7];
Nilai_TIK : Byte;
End;
Var

Siswa_Saya

: Siswa;

Dasar-dasar Pemrograman Pascal

Halaman 25

I Putu ENK - 2005

Perhatikan modifikasi program sebelumnya dengan melibatkan record sebagai pengganti


array:
Program
Uses
Const
Type

Var

Cetak_Nilai_Siswa;
WinCrt;
Max_Siswa = 2;
Siswa = Record
Nama
: String [40];
NIS
: String [ 7];
Nilai_TIK : Byte;
End;
Siswa_Saya : Array [1 .. Max_Siswa] of Siswa;
Counter, Nilai_Max, Nilai_Min : Byte;
Total : Word;
Rataan : Real;

Begin
WriteLn('Merekam Nama serta Nilai Siswa untuk Pelajaran TIK');
WriteLn('--------------------------------------------------');
for Counter := 1 to Max_Siswa Do
Begin
Clrscr;
Write('Nama Siswa: '); ReadLn(Siswa_Saya[Counter].Nama);
Write('N I S
: '); ReadLn(Siswa_Saya[Counter].NIS);
Write('Nilai TIK : '); ReadLn(Siswa_Saya[Counter].Nilai_TIK);
End;
Nilai_Max := 0; { Memroses Array Nilai_Siswa }
Nilai_Min := 100;
Total
:= 0;
for Counter := 1 to Max_Siswa Do
Begin
Total := Total + Siswa_Saya[Counter].Nilai_TIK;
if Nilai_Max < Siswa_Saya[Counter].Nilai_TIK then Nilai_Max := Siswa_Saya[Counter].Nilai_TIK;
if Nilai_Min > Siswa_Saya[Counter].Nilai_TIK then Nilai_Min := Siswa_Saya[Counter].Nilai_TIK;

End;
Rataan := Total/Max_Siswa;
{ --------------------------------------------------------- }
{
12345678901234567890123456789012345678901234567890 }
{
0--------1---------2---------3---------4---------5 }
Clrscr;
WriteLn('==================================================');
WriteLn('NAMA SISWA
NILAI');
WriteLn('--------------------------------------------------');
for Counter := 1 to Max_Siswa Do
Begin
Write(Siswa_Saya[Counter].Nama);
Write(Siswa_Saya[Counter].Nilai_TIK:50-Length(Siswa_Saya[Counter].Nama));
WriteLn;
End;
WriteLn('--------------------------------------------------');
WriteLn('Nilai Maksimum : ',Nilai_Max:3);
WriteLn('Nilai Minimum : ',Nilai_Min:3);
WriteLn('Nilai Rata-rata : ',Rataan:6:2);
WriteLn('===================================================');
ReadKey;
End.

Dasar-dasar Pemrograman Pascal

Halaman 26

I Putu ENK - 2005

3.4 Procedure
Prosedur adalah subprogram yang menerima masukan tetapi tidak mempunyai luaran
secara langsung. Cara mendeklarasikan sebuah prosedur adalah sebagai berikut :
{ Nama Procedure adalah A }
procedure A;
begin
statement_11;
statement_21;

statement_N1;
end;

Perhatikan contoh-contoh berikut:


Contoh Procedure I
program Jumlah;
uses Crt;
var Bil_1, Bil_2, Jumlah: Integer;
procedure Hitung_Jumlah;
begin
Jumlah := Bil_1 + Bil_2;
end;

{ Awal Procedure }

{ Akhir Procedure }

{ Awal Program Utama }


begin
Clrscr;
Write('Masukkan Bilangan Pertama: '); Readln(Bil_1);
Write('Masukkan Bilangan Kedua : '); Readln(Bil_2);
Hitung_Jumlah; (* Pemanggilan Procedure *)
Writeln;
Writeln('Jumlah Kedua Bilangan
ReadKey;

: ', Jumlah);

end.

Dasar-dasar Pemrograman Pascal

Halaman 27

I Putu ENK - 2005

Contoh Procedure II
Program Procedure_Aritmatika;
Uses Crt;
Var Bil_1, Bil_2: Integer;
{Procedure Jumlah}
Procedure Jumlah(Bil_1, Bil_2: Integer);
Var Jumlah: Integer;
Begin
Jumlah := Bil_1 + Bil_2;
WriteLn('Jumlah Kedua Bilangan : ', Jumlah);
End;
{Procedure Kurang}
Procedure Kurang(Bil_1, Bil_2: Integer);
Var Kurang: Integer;
Begin
Kurang := Bil_1 - Bil_2;
WriteLn('Selisih Kedua Bilangan : ', Kurang);
End;
{Procedure Kali}
Procedure Kali(Bil_1, Bil_2: Integer);
Var Kali: Real;
Begin
Kali := Bil_1 + Bil_2;
WriteLn('Perkalian Kedua Bilangan: ', Kali: 7:2);
End;
{Procedure Bagi}
Procedure Bagi(Bil_1, Bil_2: Integer);
Var Bagi: Real;
Begin
Bagi := Bil_1 / Bil_2;
WriteLn('Pembagian Kedua Bilangan: ', Bagi: 7:2);
End;
{Program Utama}
{-------------}
Begin
Clrscr;
Write('Masukkan Bilangan Pertama : '); ReadLn(Bil_1);
Write('Masukkan Bilangan Kedua : '); ReadLn(Bil_2);
Write('-------------------------------'); WriteLn;
Jumlah(Bil_1, Bil_2);
Kurang(Bil_1, Bil_2);
Kali(Bil_1, Bil_2);
Bagi(Bil_1, Bil_2);
ReadKey;
End.

Sementara, selesai di sini.

Dasar-dasar Pemrograman Pascal

Halaman 28

I Putu ENK - 2005

Anda mungkin juga menyukai