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
1
True atau False
Tipe Bulat
shortint
1
-128 hingga 127
Tipe Bulat
byte
1
0 hingga 255
Tipe Bulat
integer
2
-32768 hingga 32767
Tipe Bulat
word
2
0 hingga 65535
Tipe Bulat
longint
4
-2147483648 hingga 2147483647 -45
single
4
1.5 x 10
real
6
2.9 x 10-39 hingga 1.7 x 1038
double
8
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
1
-
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