Pascal From i Putu Enk

28
Dasar-dasar Pemrograman Pascal Halaman 1 © I Putu ENK - 2005 MODUL 1. KONSEP DASAR PEMROGRAMAN PASCAL 1.1 Tahapan Pemrograman Bahasa Pascal adalah bahasa pemrograman tingkat tinggi (high-level language) yang cu- kup 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 se- yogyanya didokumentasikan dengan baik (algoritma dan kode-kodenya) untuk disempur- nakan 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.

description

tugas

Transcript of Pascal From i Putu Enk

Dasar-dasar Pemrograman Pascal Halaman 1 © I Putu ENK - 2005

MODUL 1. KONSEP DASAR PEMROGRAMAN PASCAL

1.1 Tahapan Pemrograman Bahasa Pascal adalah bahasa pemrograman tingkat tinggi (high-level language) yang cu-kup 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 se-yogyanya didokumentasikan dengan baik (algoritma dan kode-kodenya) untuk disempur-nakan 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 2 © I Putu ENK - 2005

Contoh Kasus I

Misalkanlah ingin dirancang suatu program komputer untuk mencetak pola gambar ber-

ikut: * ** *** **** ***** 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 3 © 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 4 © 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,- Misal-kan 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 5 © 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; {Judul program} uses Crt; {Deklarasi unit CRT} label Label_Saya; {Deklarasi label} const {Deklarasi konstanta} Bahasa = ‘Pascal’; Versi = 7.0; type Nama = string [30]; {Deklarasi tipe} var Umur_Kamu : integer; {Deklarasi variabel} Nama_Kamu : Nama; procedure Baca_dan_Tulis; {Deklarasi procedure} 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; 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 6 © 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 di-laksanakan.

Tidak seperti halnya dengan keluarga BASIC, variabel dalam Pascal harus dideklarasi-kan sebelum dapat digunakan. Seandainya sebuah variabel digunakan dalam suatu bangun program tanpa dideklarasikan, maka saat program dikompilasi, compiler Pascal akan memberi-kan pesan bahwa telah terjadi kesalahan. Hal kedua yang perlu untuk diingat, penamaan vari-abel pada Pascal bersifat case insensitive, dalam artian variabel MyVar didefinisikan sebagai va-riabel sama dengan MYVAR atau myvar. Berikut adalah cara untuk mendeklarasikan variabel pa-da Pascal: var Nama_Variabel_Anda : varType; {Cara I} var Variabel_1, Variabel_2 : varType; {Cara II} var Variabel_1 : varType_1; {Cara III} Variabel_2 : varType_2; Variabel_3 : varType_3;

Untuk mendeklarasikan dan ‘mengisi’ variabel Anda harus memahami 3 konsep berikut:

1. Penamaan Variabel: suatu variabel harus dinamai saat dideklarasikan. Pada Pascal ter-dapat 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, misal-nya 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 ke-butuhan 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; {Mendefinisikan variabel Bilangan_1} Bilangan_1 := 10; {Mengisi Bilangan_1 dengan Angka 10}

Contoh 2 var Nama : string[30]; {Mendefinisikan variabel Nama, panjang maksimum 30} Nama := ‘Putu Algoritma’; {Mengisi variabel Nama}

Contoh 3 var Bil_1, Bil_2: integer; {Mendefinisikan variabel Bil_1 dan Bil_2} Hasil_Bagi : real; {Mendefinisikan variabel Hasil_Bagi} Bil_1 := 10; Bil_2 := 7; Hasil_Bagi := Bil_1/Bil_2; {Mengisi Hasil_Bagi dengan Hasil Pembagian}

Dasar-dasar Pemrograman Pascal Halaman 7 © I Putu ENK - 2005

1.4 Tipe Variabel Salah satu kriteria dalam menilai program komputer adalah efisiensi program dalam me-laksanakan fungsinya. Salah satu cara untuk meningkatkan efisiensi program adalah memilih tipe variabel yang sesuai dengan konteks permasalahan yang dihadapi, mengingat masing-ma-sing tipe membutuhkan alokasi memori yang berbeda. Tabel berikut menunjukkan tipe vari-abel 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 Tipe Bulat

single 4 1.5 x 10-45 hingga 3.4 x 1038 Real - Presisi 7Digit

real 6 2.9 x 10-39 hingga 1.7 x 1038 Real - Presisi 11 Digit

double 8 5.0 x 10-324 hingga 1.7 x 10308 Real - Presisi 15 Digit

extended 10 1.9 x 10-4951 hingga 1.1 x 104932 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 relasio-nal 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 pri-oritas (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

= <> < > <= >= in Keempat (terendah) Relational Operators

Dasar-dasar Pemrograman Pascal Halaman 8 © I Putu ENK - 2005

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

SImbul Operasi Tipe Operan Tipe Hasil Kelompok

integer integer + Penjumlahan real real integer integer

- Pengurangan real real integer integer

* Perkalian real real integer integer

/ Pembagian real real

div Pembagian Bulat integer Integer mod Sisa Pembagian Bulat integer Integer

Binary Arithmetic

integer integer - Pengubahan Tanda

real real Unary Arithmetic

not Negasi Boolean Boolean and Logika AND Boolean Boolean or Logika OR Boolean Boolean xor Logika XOR Boolean Boolean

Boolean

not Bitwise Negasi integer integer and Bitwise AND integer integer or Bitwise OR integer integer xor Bitwise XOR integer integer shl Shift Left integer integer shr Shift Right integer integer

Logical Operators

= Sama Dengan Setara Boolean <> Tidak Sama Dengan Setara Boolean < Lebih Kecil Dari Setara Boolean > Lebih Besar Dari Setara Boolean <= Lebih Kecil atau Sama Dengan Setara Boolean >= Lebih Besar atau Sama Dengan Setara Boolean in Anggota Dari Setara Boolean

Relational Operators

+ Concatenation String atau Char String String Operator

@ Pointer Formation Variable Reference 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 ‘pe-ngenal’ – 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 9 © 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 mene-rima masukan dan mengeluarkan hasil dari suatu proses komputasi. Penanganan instruksi masukan dan luaran pada Bahasa Pascal 7.0 dapat dilakukan dengan mudah melalui instruksi-instruksi 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 kompu-ter. Seperti halnya dengan 2 instruksi masukan, perbedaan dari kedua instruksi ini pada terja-dinya 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); menghasilkan ----14.060 write(Bil_2:10:1); menghasilkan ------10.0 write(Bil_1, ‘ + ‘, Bil_2, ‘ = ‘, Bil_1+Bil_2:5:1); 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 program-program berikut dan kerjakan latihan pemrograman yang disediakan. Ingatlah, tahapan perta-ma dalam pemrograman adalah memahami masalah!

Dasar-dasar Pemrograman Pascal Halaman 10 © 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 tam-pilan 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 pe-naganan masalah komputasi. Misalkanlah ingin dihitung keliling dan luas suatu lingkaran de-ngan 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 11 © I Putu ENK - 2005

Gambar berikut menunjukkan tampilan dari eksekusi program:

Latihan Mandiri: 1. Rancanglah program Pascal untuk mengetahui apakah sebuah segitiga me-

rupakan segitiga siku-siku, segitiga sama kaki, segitiga sama sisi ataukah segitiga sembarang jika panjang ketiga sisi segitiga ditentukan oleh peng-guna!

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 di-masukkan pengguna. Temukanlah kesalahan pada program sehingga ekse-kusi 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 sebe-sar a ms-2 maka setelah t detik, jarak yang ditempuh mobil dapat dihitung dari persamaan berikut: X = V0 t + ½ a t2

Rancanglah algoritma dan program Pascal untuk permasalahan di atas!

4. Dalam sebuah kejuaran gundu ditetapkan pemenang I, II dan III masing-masing 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 12 © 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 con-toh berikut: Frac(10.245) menghasilkan 0.245 dan Frac(-10.245) menghasilkan -0.245.

Dasar-dasar Pemrograman Pascal Halaman 13 © 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 ti-dak 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 ti-dak 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 14 © 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 bahasa-bahasa 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 pemro-gram harus mengalokasikan 100 variabel memori untuk variabel di sebelah kanan tanda penu-gasan 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 eks-presi 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 me-nyebabkan 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 15 © 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; {Inisialisasi Variabel} for Pencacah := Bilangan downto 1 do {Memulai Pengulangan} Faktorial := Faktorial * Pencacah; writeln(‘Faktorial dari ‘, Bilangan, ‘ = ‘, Faktorial); readkey; end.

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 16 © 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 17 © 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 setidak-tidaknya kelompok instruksi tersebut akan dieksekusi satu kali. Kenapa? Berikut adalah pe-nerapan 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; {Inisialisasi Variabel} Bilangan := 1; Pangkat := 0; repeat {Memulai Pengulangan} begin for Counter = 1 to Pangkat do Bilangan := Bilangan * Bilangan; Jumlah := Jumlah + Bilangan; inc(Bilangan, 2); {Menaikkan Nilai Bilangan dengan 2} inc(Pangkat); {Menaikkan Nilai Pangkat dengan 1} end; until Bilangan > (2*Suku – 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 18 © I Putu ENK - 2005

2. Buatlah diagram alir dan program C++ yang digunakan untuk mencetak Segitiga Phy-tagoras 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 2 1 1 3 3 1 1 4 6 4 1

2.4 Percabangan pada Pascal Selain konsep pengulangan satu atau lebih pernyataan dalam suatu program, konsep ten-tang 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 meng-gunakan ‘Rumus ABC’ sebagai berikut:

2

1,2b 4acX = b

2a−

− ±

Perhatikanlah algoritma untuk permasalahan di atas:

Dasar-dasar Pemrograman Pascal Halaman 19 © I Putu ENK - 2005

0. Mulai 1. Baca Nilai A, B dan C 2. Hitung Diskriminan Persamaan = Diskriminan = b2 – 4ac 3. Jika Diskriminan < 0, maka informasikan akar-akar persamaan IMAJINER; ke nomor 6 4. 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 ber-ikut 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 20 © 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 seper-ti 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 mengam-bil mata pelajaran komputer. Kemungkinan nilai tersebut adalah A, B, C, D dan E. Jika un-tuk 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 21 © 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 menerap-kan 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. Keterlambat-an 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 den-da Rp 5.000 per hari;

Jika koleksi yang dipinjam tidak tergolong ke dalam kelompok langka, maka la-ma peminjaman dibatasi maksimal 7 hari. Keterlambatan pengembalian dikena-kan denda Rp. 500 per hari;

Jumlah koleksi yang bisa dipinjam untuk setiap peminjaman dibatasi maksimal 3 judul buku.

Dasar-dasar Pemrograman Pascal Halaman 22 © 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 (pri-mitive/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. Se-dangkan 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 – ada-lah tipe data kompleks yang elemen-elemennya mempunyai tipe data yang sama. Bayangkan-lah kandang merpati berikut:

Kandang di atas dapat dianalogikan sebagai suatu array yang berukuran 10 di mana bu-rung 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 23 © I Putu ENK - 2005

Meskipun kedua cara pendefinisian array di atas bisa dipilih, Penulis lebih menganjur-kan 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. Ber-beda 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 peng-gunaan 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 co-de dari program dimaksud: { Nama File Program : CekHuruf.PAS Tanggal File : 14 Juli 2005 Versi File : 1.01 } Program Cetak_Karakter; Uses Crt; Const MaxLen = 15; Type Kata = array [1 .. MaxLen] of Char; Var Kata_Diperiksa : Kata; Kata_Diinput : String[MaxLen]; Counter, Posisi : 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 24 © 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 Cetak_Nilai_Siswa; Uses Crt; Const Max_Siswa = 40; Type Nama = Array [1 .. Max_Siswa] of String [40]; Nilai = Array [1 .. Max_Siswa] of Byte; Var 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 25 © 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 ele-men-elemennya tersusun dari tipe yang sama. Ingatlah kembali analogi tentang kandang bu-rung merpati. Meskipun demikian, tidak selamanya dalam kasus pemrograman Anda meng-hadapi tipe data yang seragam. Sebagai misal, Kebun Binatang Ragunan memiliki berbagai jenis binatang dengan ukuran kandang yang berbeda-beda disesuaikan dengan besar binatang-nya.

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 26 © I Putu ENK - 2005

Perhatikan modifikasi program sebelumnya dengan melibatkan record sebagai pengganti array: Program Cetak_Nilai_Siswa; Uses WinCrt; Const Max_Siswa = 2; Type Siswa = Record Nama : String [40]; NIS : String [ 7]; Nilai_TIK : Byte; End; Var 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 27 © 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; { Awal Procedure } begin Jumlah := Bil_1 + Bil_2; end; { 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 : ', Jumlah); ReadKey; end.

Dasar-dasar Pemrograman Pascal Halaman 28 © 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.