Official Site of LILIS SETYOWATI - Gunadarma University
Transcript of Official Site of LILIS SETYOWATI - Gunadarma University
0
MODUL ALGORITMA & PEMROGRAMAN 2 (PASCAL) Lilis Setyowati, ST., MMSI
9/1/2018
Lilis Setyowati, ST., MMSI 1
KATA PENGANTAR
Puji Syukur kehadirat Tuhan Yang Maha Esa karena atas limpahan rahmat-Nya sehingga
modul Algoritma & Pemrograman 2 (Pascal) dapat diselesaikan. Modul ini disusun
berdasarkan Satuan Acara Perkuliahan (SAP) Jurusan Teknik Informatika, Fakultas
Teknologi Industri Universitas Gunadarma. Modul ini juga dilengkapi dengan contoh
program dan output yang dapat digunakan untuk latihan mahasiswa terkait dengan
materi yang terdapat pada modul.
Disadari masih banyak kekurangan dalam penyusunan modul ini. Oleh karena itu, kritik
dan saran demi perbaikan dan kesempurnaan modul ini sangat diharapkan. Semoga
modul ini dapat bermanfaat bagi kita semua, khususnya para mahasiswa.
Jakarta, September 2018
2 Lilis Setyowati, ST., MMSI
DAFTAR ISI
KATA PENGANTAR .......................................................................................................... 0
DAFTAR ISI ...................................................................................................................... 2
1. KONSEP DASAR BAHASA PASCAL ............................................................................. 8
1.1. Sejarah Bahasa Pascal ...................................................................................... 8
1.2. Compiler Pascal: UCSD Pascal, Microsoft Pascal dan Turbo Pascal .................... 8
1.3. Versi Turbo PASCAL ......................................................................................... 9
1.4. Kelebihan dan Kekurangan PASCAL ................................................................ 10
1.4.1. Kelebihan Pascal .................................................................................... 10
1.4.2. Kekurangan Pascal ................................................................................. 10
1.5. Struktur dan Komponen Dasar Program Pascal .............................................. 10
1.5.1. Aturan dalam Pascal............................................................................... 11
1.5.2. Judul/ Nama Program ............................................................................ 12
1.5.3. Bagian Deklarasi ..................................................................................... 12
1.5.4. Bagian Statement (Pernyataan) .............................................................. 12
1.6. Komponen Dasar Program Pascal .................................................................. 13
1.6.1. Simbol Dasar .......................................................................................... 13
1.6.2. Identifier (penyebut) .............................................................................. 14
1.6.3. Identifier Standar ................................................................................... 14
1.6.4. Jangkauan Identifier ............................................................................... 15
1.7. Tipe Data Pada Pascal .................................................................................... 16
1.7.1. Tipe Data Scalar ..................................................................................... 17
1.7.1.1. Tipe Data Standar ........................................................................... 17
1.7.1.2. Tipe Data Integer ............................................................................ 17
1.7.1.3. Tipe Data Real ................................................................................ 18
1.7.1.4. Char ............................................................................................... 19
1.7.1.5. Tipe Data Boolean .......................................................................... 20
1.7.2. Tipe Data User Defined (Bentukan) ........................................................ 20
1.7.3. Tipe Data Structured .............................................................................. 21
1.7.3.1. Tipe Data Array .............................................................................. 21
Lilis Setyowati, ST., MMSI 3
1.7.4. Tipe Data Pointer ................................................................................... 23
1.8. Variabel ......................................................................................................... 23
1.9. Konstanta ...................................................................................................... 24
1.10. Ekspresi ..................................................................................................... 25
1.11. Operand dan Operator ............................................................................... 26
1.11.1. Operand ................................................................................................. 26
1.11.2. Operator ................................................................................................ 26
1.11.2.1. Asignment operator ....................................................................... 26
1.11.2.2. String operator ............................................................................... 27
1.11.2.3. Set operator ................................................................................... 27
1.11.2.4. Relational operator (Operator Perbandingan) ................................. 27
1.11.2.5. Aritmatika Operator ....................................................................... 28
1.11.2.6. Unary , Binary, dan Ternary Operator ............................................. 29
1.11.2.6.1. Unary Operator ......................................................................... 29
1.11.2.6.2. Binary Operator ......................................................................... 29
1.11.2.6.3. Ternary Operator ....................................................................... 29
1.11.2.7. Logical Operator (Operator logika).................................................. 29
1.11.2.8. Bitwise operator ............................................................................. 30
1.11.2.9. Address Operator (Pointer)............................................................. 30
1.12. Input dan Output pada Pascal .................................................................... 30
1.12.1. Statement Read dan Readln ................................................................... 30
1.12.1.1. Penggunan Read dan Readln pada tipe data angka (integer/real) ... 31
1.12.1.2. Penggunaan Read dan Readln pada tipe data char .......................... 33
1.12.1.3. Penggunaan read dan readln untuk tipe data string ........................ 34
1.12.2. Statement Write dan Writeln ................................................................. 36
1.13. Format Output ........................................................................................... 38
1.13.1. Parameter CH:N ..................................................................................... 39
1.13.2. Parameter S:N ........................................................................................ 39
1.13.3. Parameter I:N......................................................................................... 39
1.13.4. Parameter R:N ....................................................................................... 40
1.13.5. Parameter R:N:M ................................................................................... 40
4 Lilis Setyowati, ST., MMSI
1.13.6. Parameter B:N ....................................................................................... 40
1.14. Pengaturan Letak Di Layar.......................................................................... 40
1.14.1. Prosedur CLRSCR .................................................................................... 41
1.14.2. Prosedur GOTOXY .................................................................................. 41
1.14.3. Prosedur CLREOL ................................................................................... 41
1.14.4. Prosedur Delline .................................................................................... 42
1.14.5. Prosedur Insline ..................................................................................... 43
1.14.6. Prosedur Delay....................................................................................... 44
1.15. Pengaturan Bentuk Di Printer .................................................................... 44
2. MANIPULASI STRING ............................................................................................. 45
2.1. Prosedur Standar Pada String ........................................................................ 45
2.1.1. Prosedur DELETE .................................................................................... 45
2.1.2. Prosedure INSERT .................................................................................. 46
2.1.3. Prosedur STR.......................................................................................... 46
2.1.4. Prosedur VAL ......................................................................................... 47
2.2. Fungsi Standar Pada String............................................................................. 47
2.2.1. Fungsi CONCATE .................................................................................... 48
2.2.2. Fungsi COPY ........................................................................................... 48
2.2.3. Fungsi POS ............................................................................................. 48
2.2.4. Fungsi LENGTH ....................................................................................... 49
3. PERULANGAN PADA PASCAL ................................................................................. 50
3.1. Struktur Perulangan FOR-DO ......................................................................... 50
3.1.1. Perulangan FOR-TO-DO .......................................................................... 50
3.1.2. Perulangan FOR-DOWNTO-DO ............................................................... 52
3.2. Struktur Perulangan WHILE -DO ..................................................................... 53
3.2.1. Membuat Perulangan Hitung Mundur dengan WHILE-DO ...................... 54
3.2.2. Membuat Perulangan Lompat dengan WHILE-DO .................................. 55
3.3. Struktur Perulangan REPEAT -UNTIL............................................................... 55
3.3.1. Membuat Perulangan Lompat dengan REPEAT-UNTIL ............................ 57
3.4. Perulangan Bersarang .................................................................................... 58
3.4.1. Perulangan bersarang pada FOR-DO ...................................................... 58
Lilis Setyowati, ST., MMSI 5
3.4.2. Perulangan bersarang pada WHILE-DO ................................................... 59
3.4.3. Perulangan bersarang pada REPEAT UNTIL ............................................. 60
3.4.4. Perintah BREAK ...................................................................................... 61
3.4.5. Perintah CONTINUE ................................................................................ 61
4. PERCABANGAN PADA PASCAL ............................................................................... 64
4.1. Statement IF .................................................................................................. 64
4.1.1. IF - THEN ................................................................................................ 64
4.1.2. IF-THEN-ELSE.......................................................................................... 65
4.1.3. IF Bersarang (Nested IF) ........................................................................ 66
4.2. Statement CASE ............................................................................................. 69
5. PROCEDURE PADA PASCAL .................................................................................... 72
5.1. Procedure Dengan Parameter ........................................................................ 73
5.1.1. Dibuat bersifat global: Harus dideklarasikan di atas modul yang
menggunakannya. ................................................................................................. 74
5.1.2. Cara kedua adalah dengan mengirimkan variabel sebagai parameter ke
modul yang membutuhkannya. ............................................................................. 75
5.1.2.1. Pengiriman parameter secara nilai ................................................. 75
5.1.2.2. Pengiriman Parameter Secara Acuan .............................................. 77
5.1.2.3. Pengiriman Parameter Secara Nilai Sebagai Acuan ......................... 77
5.2. Procedure Memanggil Procedure Yang Lain ................................................... 78
5.3. Procedure Tersarang ...................................................................................... 78
5.4. Procedure Memanggil Dirinya Sendiri ............................................................ 79
5.5. Acuan Forward .............................................................................................. 79
5.6. Procedure Standar ......................................................................................... 80
5.6.1. Procedure Standar EXIT .......................................................................... 80
5.6.2. Procedur Standar Halt ............................................................................ 80
5.6.3. Procedur Standar Move ......................................................................... 80
5.6.4. Procedur Standar FillChar ....................................................................... 81
6. FUNGSI PADA PASCAL ........................................................................................... 82
6.1. Perbedaan Fungsi Dengan Prosedur ............................................................... 82
6.2. Fungsi Tanpa Parameter ................................................................................ 83
6.3. Parameter Dalam Fungsi ................................................................................ 84
6 Lilis Setyowati, ST., MMSI
6.4. Fungsi Pangkat............................................................................................... 85
6.5. Fungsi Rekursif .............................................................................................. 86
6.6. Fungsi Standar ............................................................................................... 86
6.6.1. Fungsi Standar Aritmatika ...................................................................... 86
6.6.2. Fungsi Standar Transfer.......................................................................... 88
6.6.3. Fungsi Standar Lainnya........................................................................... 90
7. ARRAY DAN RECORD PADA PASCAL ....................................................................... 91
7.1. ARRAY ........................................................................................................... 91
7.1.1. Deklarasi Array ....................................................................................... 91
7.1.1.1. Deklarasi Tipe Index Subrange Integer ............................................ 92
7.1.1.2. Deklarasi Tipe Index Subrange Integer ............................................ 92
7.1.1.3. Deklarasi Tipe Index Subrange Byte ................................................ 92
7.1.1.4. Deklarasi Tipe Index Subrange Word .............................................. 93
7.1.1.5. Deklarasi Tipe Index Subrange Boolean .......................................... 93
7.1.1.6. Deklarasi Tipe Index Subrange Char ................................................ 93
7.1.1.7. Deklarasi Tipe Index Skalar ............................................................. 93
7.1.1.8. Deklarasi konstanta Array ............................................................... 94
7.1.2. String Sebagai Array Tipe Char ............................................................... 94
7.1.3. Parameter Array .................................................................................... 95
7.1.4. Array Dimensi Banyak ............................................................................ 95
7.1.5. Dynamic Array Pascal ............................................................................. 96
7.2. RECORD ......................................................................................................... 97
8. FILE DAN OPERASINYA PADA PASCAL .................................................................... 99
8.1. File Teks......................................................................................................... 99
8.1.1. Membuat File Text ................................................................................. 99
8.1.1.1. Mendeklarasikan Variabel File ........................................................ 99
8.1.1.2. Menghubungkan variabel file dengan nama file ........................... 100
8.1.1.3. Membuat file text aktif ................................................................. 100
8.1.1.4. Menulis ke dalam file text ............................................................ 100
8.1.1.5. Menutup file ................................................................................ 100
8.1.2. Membaca File Teks............................................................................... 101
Lilis Setyowati, ST., MMSI 7
8.1.2.1. Mendeklarasikan variabel file ....................................................... 101
8.1.2.2. Menghubungkan variabel file dengan nama file ............................ 101
8.1.2.3. Membaca isi file dan menampilkannya di layar ............................. 101
8.1.2.4. Menutup file ................................................................................ 102
8.1.3.1. Mendeklarasikan variabel file ....................................................... 102
8.1.3.2. Menghubungkan variabel file dengan nama file ............................ 103
8.1.3.3. Menambah isi file ......................................................................... 103
8.1.3.4. Menampilkannya di layar ............................................................. 103
8.1.3.5. Menutup file ................................................................................ 103
8.1.4. Metode Pembacaan file oleh Turbo Pascal ........................................... 104
8.2. File Bertipe .................................................................................................. 104
8.2.1. Membuat File Bertipe .......................................................................... 105
8.2.1.1. Mendeklarasikan variabel file ....................................................... 105
8.2.1.2. Menghubungkan variabel file dengan nama file ............................ 105
8.2.1.3. Membuat/ membuka file bertipe.................................................. 106
8.2.2. Menulis/ Membaca File Bertipe............................................................ 106
8.2.3. Menutup File........................................................................................ 106
8.2.4. Fungsi-fungsi yang digunakan dalam file Bertipe .................................. 108
8.3. File Tak Bertipe ............................................................................................ 109
8.4. Menangani Kesalahan I/O pada File ............................................................. 112
8.5. Manipulasi File ............................................................................................. 113
8.5.1. Parameter ............................................................................................ 113
8.5.2. Atribut File ........................................................................................... 113
8.5.3. Menghapus File .................................................................................... 114
8.5.4. Mengubah nama file ............................................................................ 114
8.5.5. Tanggal dan waktu File ......................................................................... 115
8.5.6. Mencari File ......................................................................................... 116
8.5.7. Mengecek Keberadaan File .................................................................. 117
8.5.8. Memberikan directory File ................................................................... 117
DAFTAR PUSTAKA ....................................................................................................... 118
8 Lilis Setyowati, ST., MMSI
1. KONSEP DASAR BAHASA PASCAL
1.1. Sejarah Bahasa Pascal
Bahasa Pascal dirancang oleh Prof. Nicklaus Wirth dari Technical University di Zurich,
Switzerland pada tahun 1971. Nama Pascal dipilih untuk menghormati Blaise Pascal,
seorang ilmuwan matematis Prancis yang pada tahun 1642 pembuat kalkulator mekanis
pertama di dunia. Kalkulator ini menjadi cikal bakal komputer modern. Bahasa Pascal
merupakan pengembangan dari bahasa Algol 60 dan Algol W (turunan Algol 60).
Niklaus Wirth pada awalnya merancang bahasa Pascal untuk mengajarkan
pemrograman kepada mahasiswa di Universitas ETH Zürich di Swiss. Pascal di desain
menggunakan structured programming yang kemudian menjadi populer dan banyak
digunakan oleh bahasa pemrograman setelahnya.
Sejak dipublikasikan oleh pada 1970, bahasa pemrograman Pascal mulai digunakan oleh
berbagai universitas di Eropa dan Amerika. Walaupun demikian, compiler pascal
(program untuk menjalankan perintah-perintah bahasa pascal) masih terbatas untuk
kalangan tertentu. Karena saat itu harga komputer masih sangat mahal dan umumnya
hanya terdapat di perusahaan atau universitas besar.
Pascal merupakan bahasa pemrograman data-oriented. Programmer bisa membuat tipe
data sendiri (selain tipe data standar yang disediakan seperti integer, real,
char, dan boolean). Walaupun demikian, pascal sangat ketat aturan. Setiap variabel
hanya bisa menggunakan tipe data tertentu dan harus dideklarasikan terlebih dahulu.
Tidak seperti bahasa pemograman lain pada saat itu, bahasa Pascal mirip dengan bahasa
inggris sehari-hari, sehingga mudah bagi programmer pemula untuk mulai membuat
kode program.
Bahasa Pascal bersaing dengan bahasa pemrograman lain pada era tersebut,
seperti Algol, Basic, Fortran dan C.
1.2. Compiler Pascal: UCSD Pascal, Microsoft Pascal dan Turbo Pascal
University of California, San Diego (UCSD) membuat salah satu compiler pertama pascal,
yakni UCSD Pascal. Compiler ini ditujukan untuk sistem operasi buatan UCSD sendiri,
yang dikenal dengan UCSD p-System. UCSD p-System merupakan salah satu sistem
operasi yang bisa dipilih jika membeli IBM PC pada saat itu, selain UCSD p-System, IBM
juga menyediakan PC dengan sistem operasi CP/M-86 dan PC DOS buatan Microsoft
(cikal bakal Windows).
Lilis Setyowati, ST., MMSI 9
Melihat perkembangan Pascal, Microsoft juga mengeluarkan produk Microsoft Pascal.
Namun karena harga yang relatif mahal, compiler ini tidak terlalu populer, dan segera
digantikan dengan Microsoft QuickPascal untuk dapat bersaing dengan Turbo Pascal.
Pada saat itu, untuk menjalankan sebuah kode program (termasuk Pascal), seorang
programmer harus menulis kode program pada text editor, kemudian menjalankannya
(men-compile-nya) menggunakan program terpisah. Jika membutuhkan library
tambahan, maka perlu melakukan proses berikutnya, yakni linker. Alur kerja pembutan
program ini dikenal dengan istilah edit/compile/link cycle.
Philippe Kahn (seorang enterpreneur yang baru saja mendirikan sebuah perusahaan
software Borland pada tahun 1983) melihat peluang bisnis dalam bahasa Pascal dan
menggabungkan proses edit, compile dan link dalam satu produk, yakni Turbo
Pascal. Borland, adalah perusahaan software yang saat itu berbasis di Scotts Valley,
California (sekarang pindah ke Austin, Texas).
Turbo Pascal merupakan compiler Pascal yang revolusioner: cepat dan murah, terutama
jika dibandingkan dengan UCSD Pascal dan Microsoft Pascal. Sebagai gambaran, harga
compiler pascal saat itu berkisar antara US $400 – $600, namun Turbo Pascal dijual
seharga $45. Selain itu, Turbo Pascal mampu menjalankan kode program jauh lebih
cepat dan membutuhkan sedikit memory. Karena inilah Borland menggunakan kata
“turbo” untuk compiler pascal buatan mereka.
Pada awal kemunculannya, Turbo Pascal mendukung 3 sistem operasi, yakni CP/M,
CP/M-86, and DOS.
1.3. Versi Turbo PASCAL
Selama periode 1983 – 1992, Borland merilis 10 versi Turbo Pascal, terdiri dari 8 versi
untuk MS DOS, dan 2 versi untuk Windows. Berikut adalah tanggal release Turbo Pascal:
Turbo Pascal 1 – November 20, 1983 – versi pertama, 64kb limit, CP/M-80, CP/M-86, DOS
Turbo Pascal 2 – April 17, 1984 – 8087 support via optional compiler
Turbo Pascal 3 – September 17, 1986 – overlays, 8087 compiler, BCD compiler
Turbo Pascal 4 – November 20, 1987 – separately compiled units
Turbo Pascal 5 – August 24, 1988 – integrated debugging, dynamic overlays
Turbo Pascal 5.5 – May 2, 1989 – mendukung pemrograman object
Turbo Pascal 6 – October 23, 1990 – Dirilis juga dengan nama Turbo Vision
Turbo Pascal for Windows 1.0 – February 13, 1991 – versi pertama untuk 16-bit Windows 3.0, Object Windows Library, Whitewater Resource Toolkit (WRT)
10 Lilis Setyowati, ST., MMSI
Turbo Pascal for Windows 1.5 – June 8, 1992 – Windows 3.1, Resource Workshop, versi terakhir untuk Windows.
Turbo/Borland Pascal 7 – October 27, 1992 – DPMI 16/32 bit, versi terkahir untuk MS DOS.
1.4. Kelebihan dan Kekurangan PASCAL
Setiap Bahasa pemrograman pasti memiliki keunggulan (kelebihan) dan kekurangan,
begitu juga pada bahasa pemrograman pascal. Berikut kelebihan dan kekurangan
Bahasa Pascal:
1.4.1. Kelebihan Pascal
Tipe Data Standar, tipe-tipe data standar yang telah tersedia pada kebanyakan bahasa pemrograman.
Pascal memiliki tipe data standar: boolean, integer, real, char, string,
User defined Data Types, programmer dapat membuat tipe data lain yang diturunkan dari tipe data standar.
Strongly-typed, programmer harus menentukan tipe data dari suatu variabel, dan variabel tersebut tidak dapat dipergunakan untuk menyimpan tipe data selain dari format yang ditentukan.
Terstruktur, memiliki sintaks yang memungkinkan penulisan program dipecah menjadi fungsi-fungsi kecil (procedure dan function) yang dapat dipergunakan berulang-ulang.
Sederhana dan Ekspresif, memiliki struktur yang sederhana dan sangat mendekati bahasa manusia (bahasa Inggris) sehingga mudah dipelajari dan dipahami.
1.4.2. Kekurangan Pascal
Versi awal Pascal kurang cocok untuk aplikasi bisnis. Hal ini berkaitan dengan keterbatasan dukungan basis data.
TIdak mendukung pemrograman berorientasi objek.
Pascal tidak fleksibel dan banyak kekurangan yang dibutuhkan untuk membuat aplikasi yang besar.
1.5. Struktur dan Komponen Dasar Program Pascal
Struktur dari suatu program Pascal terdiri atas sebuah judul program dan suatu blok
program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu
bagian deklarasi dan bagian pernyataan (statement).
Lilis Setyowati, ST., MMSI 11
Program Nama_Program;
uses…..
Label Nama_Label;
CONST…..;
TYPE……..;
VAR………;
Procedure Nama_Prosedur;
……………………………………..;
……………………………………..;
Function Nama_Fungsi……;
……………………………………..;
……………………………………..;
begin
(instruksi program)
……………………………………..;
……………………………………..;
……………………………………..;
……………………………………..;
end.
Contoh Program (Menghitung luas bidang berbentuk empat persegi panjang dengan
panjang P dan lebar L.)
Program Luas; {Judul} Var P, L, Luas : real; {Deklarasi Variabel} Begin {awal program utama} Read (P,L); {statement} Luas := P*L; {statement} Write (P,L,Luas); {statement} End. {akhir program}
1.5.1. Aturan dalam Pascal
Akhir sebuah program Pascal ditandai dengan tanda baca titik (.) setelah END
yang paling akhir.
Tanda titik koma (;) merupakan pemisah antar instruksi satu dengan lainnya.
Judul/ Nama Program (Penjelasan mengenai program yang berisi uraian singkat mengenai apa yang dilakukan oleh program)
Deklarasi piranti
Deklarasi label
Deklarasi konstanta
Deklarasi tipe
Deklarasi variabel
Deklarasi prosedur
Deklarasi fungsi
Bagian awal program utama
Bagian akhir program
Bagian Pernyataan (statement)
Bagian Deklarasi
Blok Program/ Badan Program
12 Lilis Setyowati, ST., MMSI
Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda
baca titik koma (;)
Contoh : simpan := akhir; akhir := simpan + awal;
Baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan }
Contoh : Var rerata : real; (*nilai rata-rata*)
Nil1 : real; {nilai ujian}
1.5.2. Judul/ Nama Program
Judul program sifatnya adalah optional dan tidak signifikan di dalam program
(sebagai dokumentasi saja). Jika judul ditulis dapat digunakan untuk memberi nama
program dan daftar dari parameter tentang komunikasi program dengan lingkungannya
yang sifatnya sebagai dokumentasi saja. Judul program bisa ditulis, namun harus terletak
pada awal dari program dan diakhiri dengan titik koma ( ; ).
Judul program tidak signifikan terhadap proses program.Misalnya program Anda hanya
menampilkan hasil saja, tetapi tidak meminta data input pada judul program dapat
didokumentasikan dengan ditulis sebagai berikut :
program contoh (output); atau
program contoh (layar);
Parameter tentang komunikasi program dengan lingkungan ditulis di dalam tanda
kurung buka dan tutup ( ) dan dapat ditulis apapun dengan dipisahkan oleh koma.
Contoh penulisan judul program yang benar :
program Nilai (UTS,UAS);
1.5.3. Bagian Deklarasi
Bagian deklarasi digunakan bila di dalam program digunakan pengenal (identifier).
Identifier dapat berupa label, konstanta, tipe, variabel, prosedur dan fungsi. Jika suatu
program menggunakan identifier, Pascal menuntut supaya identifier tersebut
diperkenalkan terlebih dahulu sebelum digunakan, yaitu dengan dideklarasikan terlebih
dahulu pada bagian ini.
1.5.4. Bagian Statement (Pernyataan)
Statement (pernyataan) merupakan instruksi atau gabungan instruksi yang
menyebabkan komputer melakukan aksi.
Lilis Setyowati, ST., MMSI 13
Type statement dalam Pascal terdiri atas :
a. Sederhana :
- menandai sebuah item data ke sebuah variabel (assigment statement)
contoh : X := Y * 4.135
- pemanggilan procedure dan goto statement
b. Terstruktur:
- Compound Statement
contoh : Begin read (x) ; y := x + 5; write (y) End.
- Repetitive Statement
contoh :
For I := 1 to 100 do write (count);
- Conditional Statement
contoh :
If x > 100 then write (s) else write (p) ;
1.6. Komponen Dasar Program Pascal
Pola susun bahasa Pascal dibentuk dengan menggunakan komponen bahasa
pemrograman yang umum, yaitu Simbol Dasar, Reserved Word (kata pasti), dan
Identifier (penyebut).
1.6.1. Simbol Dasar
Simbol dasar pada Pascal terdiri atas :
a. Simbol huruf, yaitu huruf A sampai dengan Z atau a sampai dengan z. (huruf besar dan kecil).
b. S imbol angka atau digit yaitu : 0,1,2,3,4,5,6,7,8,9. c. Simbol khusus, yaitu + - * / ; := , ‘ = < > <= >= <> : { } ( ) [ ]
14 Lilis Setyowati, ST., MMSI
1.6.1. Reserved Word (kata pasti)
Reserved Word adalah suatu kata yang secara mutlak tidak boleh diartikan lain dan harus digunakan sebagaimana yang telah didefinisikan atau ditentukan kegunaanya oleh bahasa Pascal. Reserved word ini tidak boleh didefinisikan ulang oleh pemakai, sehingga tidak dapat dipergunakan sebagai pengenal (identifier). Reserved Word ini jumlahnya berbeda untuk masing-masing bahasa Pascal.
Contoh beberapa reserved word yang telah didefinisikan oleh bahasa pascal antara lain
AND ELSE LABEL SET
ARRAY END OF TYPE
BEGIN FUNCTION OR UNTIL
CASE FOR PROCEDURE VAR
CONST GOTO PROGRAM WHILE
DO IF RECORD WITH
DOWNTO IN REPEAT dsb
1.6.2. Identifier (penyebut)
Identifier merupakan sebuah kata yang digunakan sebagai nama atau sebutan terhadap
sesuatu didalam program. Pemakai dapat mendefinisikan sendiri suatu nama sebagai
identifier. Identifier ini terdiri atas :
1.6.3. Identifier Standar
Identifier standar yaitu identifier yang telah didefinisikan oleh bahasa pascal. Contoh
dari Identifier standar ini antara lain:
ABS LN ARCTAN ODB
BOOLEAN PRED CHAR ROUND
CHR READ COS READLN
EOF SQR EOLN SQRT
EXP SUCC dsb.
1.6.1.1. Identifier Non Standar
Identifier non standar yaitu identifier yang didefinisikan oleh pemakai bahasa pascal;
misalnya;
Lilis Setyowati, ST., MMSI 15
nama suatu program
nama suatu konstanta
nama suatu variabel
nama suatu procedure
Identifier bersifat bebas, tetapi dengan ketentuan-ketentuan sebagai berikut :
1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa
huruf.
2. Huruf besar dan huruf kecil dianggap sama.
3. Tidak boleh mengandung blank.
4. Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah.
5. Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan.
Contoh penulisan identifier:
1.6.4. Jangkauan Identifier
Identifier yang dideklarasikan dalam suatu blok program hanya berlaku pada blok
dimana identifier tersebut didefinisikan.
Contoh:
Program p; Var x : real;
Procedure pl; Var y : integer;
begin ……………………….; ……………………..;
end; begin
……………………….; ……………………..;
end.
Identifier Keterangan
NamaMahasiswa Benar
Nama_Mahasiswa Benar
Nama3Mahasiswa Benar
3NamaMahasiswa Slah, Karakter pertama harus huruf
Nama&NPM Salah, tidak boleh mengandung symbol khusus
Nama Mahasiswa Salah, tidak boleh mengandung blank (spasih)
Derah berlakunya y
(y sebagai variabel lokal)
Derah berlakunya x
(x sebagai variabel global)
16 Lilis Setyowati, ST., MMSI
CONTOH 2:
Program p; Var x, y : real; ……………… ………………
Procedure P1; Var y : integer;
………………………… begin
………………………; ………………………;
end; Procedure P2; Var x : char;
………………………… begin
………………………; ………………………; end; begin
x:=………………………; y:=………………………;
end.
1.7. Tipe Data Pada Pascal
Terdapat beberapa kelompok tipe data pada Bahasa pemrograman PASCAL yang biasa
digunakan untuk sebuah variable atau konstanta pada program. Tipe data secara garis
besar dikelompokkan menjadai 3 jenis yakni tipe data scalar,pointer, dan structured.
Kelompok tipe data scalar dibagi menjadi tipe data standard an user defined. Tipe data
structured dibagi menjadi tipe data Array, Record, File, dan Set. Pembagian kelompok
tipe data dapat dilihat pada gambar 1.
Hanya berlaku di P1 saja (lokal)
x dan y yang dimaksud adalah x dan y real (variabel global)
y (real) berlaku di semua blok program P, kecuali di P1 x (real) berlaku di semua blok program P, kecuali P2
Hanya berlaku di P2 saja (lokal)
Lilis Setyowati, ST., MMSI 17
Gambar 1. Kelompok tipe data
1.7.1. Tipe Data Scalar
Tipe Data Scalar adalah tipe data yang digunakan untuk menyimpan nilai tunggal. Tipe
data scalar dibagi menjadi dua, yaitu tipe data standard an tipe data user defined.
1.7.1.1. Tipe Data Standar
Kelompok pertama adalah tipe data standar pada pascal. Kelompok ini terdiri dari 4 tipe
data: Integer, Real, Character dan Boolean.
1.7.1.2. Tipe Data Integer
Tipe data integer adalah tipe data yang terdiri dari angka bulat (tidak mengandung nilai
pecahan atau nilai desimal). Nilai ini bisa berbentuk angka positif maupun negatif,
contohnya 3, 99, 1114, -44, 10000, atau 128730123.
18 Lilis Setyowati, ST., MMSI
Pascal mendukung beragam tipe data integer, seperti byte, shortint, smallint, word,
integer, cardinal, longint, longword, int64, dan qword. Tipe-tipe ini dibedakan
berdasarkan jangkauan nilai dan kapasitas memory yang dibutuhkan. Berikut contoh
cara pendefenisian tipe data integer di dalam pascal:
var a:integer;
Berikut contoh penggunaan tipe data ini:
program tipe_integer; uses crt; var x:shortint; y:longword; z:int64; begin clrscr; x:=-128; y:= 4294967295; z:=9223372036854775807; writeln('x: ',x); writeln('y: ',y); writeln('z: ',z); readln; end.
1.7.1.3. Tipe Data Real
Dalam bahasa pemrograman Pascal, tipe data real digunakan untuk angka desimal
(pecahan), seperti 0.11, 3.14, atau 999.99. Tipe data ini dikenal juga dengan tipe data
float atau floating point. Penulisan nilai real di dalam Pascal menggunakan karakter titik
sebagai penanda angka ‘desimal’, bukan karakter koma sebagaimana yang kita gunakan
sehari-hari. Hal ini dilakukan karena penggunaan format amerika.
Pascal mendukung beberapa tipe data yang termasuk kategori float, yakni: Real, Single,
Double, Extended, Comp dan Currency. Berikut contoh cara pendefenisian tipe data real
di dalam pascal:
var a:real;
Berikut contoh penggunaan tipe data ini: program tipe_real;
uses crt; var a:real; begin
Lilis Setyowati, ST., MMSI 19
clrscr; a:=3.14; writeln('a: ',a); a:=999.99; writeln('a: ',a); a:= a + 0.01; writeln('a: ',a); readln; end.
1.7.1.4. Char
Tipe data Char adalah tipe data yang hanya bisa diisi dengan 1 karakter saja dari 1 digit,
seperti ‘a’, ‘A’, ‘x’, atau ‘#’. Karakter ini harus ditulis diantara tanda kutip. Karena hanya
bisa diisi dengan 1 karakter saja, tipe data char hanya membutuhkan 1 byte memory (1
byte = 8 bit).
Selain itu, variabel bertipe data char juga bisa diisi dengan urutan karakter ASCII. Di
dalam compiler FreePascal, selain tipe data Char, didukung juga tipe data AnsiChar dan
WideChar.
Berikut contoh cara pendefenisian tipe data char di dalam pascal:
var a:char;
Berikut contoh penggunaan tipe data ini:
program tipe_char; uses crt; var a:char; begin clrscr; a:='A'; writeln('a: ',a); a:='9'; writeln('a: ',a); a:='x'; writeln('a: ',a); readln; end.
Selain menulis karakter secara langsung, penulisan tipe data char juga bisa dituliskan
menggunakan karakter berdasarkan nomor urut tabel ASCII. Karakter ASCII (American
20 Lilis Setyowati, ST., MMSI
Standard Code for Information Interchange) adalah 256 karakter dasar yang digunakan
secara internal oleh computer. Pada tabel karakter ASCII, dimana huruf ‘A’ disimpan
dengan nilai biner: 01000001, dimana dalam bentuk desimal (basis 10) dikonversi
menjadi angka 65. Oleh karena itu, karakter ‘A’ berada pada urutan ke 65 pada tabel
karakter ASCII. Daftar lengkap tabel ASCII ini bisa anda lihat di www.ascii-code.com. Cara
penulisan karakter berdasarkan no urut tabel ASCII adalah dengan menambahkan tanda
pagar “#” sebelum angka no urut. Sebagai contoh, karakter ‘A’ yang mimiliki nilai ASCII:
65 bisa ditulis sebagai berikut:
a:=#65;
1.7.1.5. Tipe Data Boolean
Tipe data boolean adalah tipe data yang hanya bisa diisi dengan 1 diantara 2 nilai: True
atau False (benar atau salah). Tipe data boolean biasanya digunakan untuk percabangan
kode program seperti struktur IF atau perulangan (looping).
Berikut contoh cara pendefenisian tipe data boolean di dalam pascal:
var a:boolean;
1.7.2. Tipe Data User Defined (Bentukan)
Kelompok kedua dari tipe data scalar pada pascal adalah tipe data user defined
(bentukan) atau dikenal juga dengan tipe data non standar. Tipe data bentukan ini
terdiri dari 2 tipe: enumerated dan subrange. Kedua tipe data ini harus didefenisikan di
dalam bagian type struktur pascal.
1.7.2.1.1. Tipe Data Enumerated
Tipe data enumerated adalah tipe data yang isinya terdiri dari kelompok data yang
sudah ditentukan. Sebagai contoh, kita bisa membuat tipe enumerated warna yang
berisi: merah, kuning, biru dan ungu. Atau tipe nama_hari yang berisi nama-nama hari
seperti senin, selasa, rabu, dst. Tipe data enumerated sering juga disebut enumeration
atau enum saja.
Berikut contoh cara pendefenisian tipe data enumerated di dalam pascal:
type nama_hari= (senin,selasa,rabu,kamis,jumat,sabtu,minggu); var a: nama_hari;
Lilis Setyowati, ST., MMSI 21
1.7.2.1.2. Tipe Data Subrange
Tipe data subrange adalah tipe data bentukan yang berasal dari bagian (sub) tipe data
lain dan berada dalam sebuah jangkauan (range). Contohnya, kita bisa membuat tipe
data baru yang hanya terdiri dari angka 0 sampai 9, atau hanya dari huruf ‘a’ hingga ‘e’.
Berikut contoh cara pendefenisian tipe data subrange di dalam pascal:
type satuan= 1..9; var a: satuan;
1.7.3. Tipe Data Structured
Kelompok tipe data berikutnya adalah tipe data structured atau tipe data terstruktur.
Kelompok tipe data ini terdiri dari tipe data Array, String, Record, Set dan File.
1.7.3.1. Tipe Data Array
Tipe data array adalah tipe data yang terdiri dari kumpulan tipe data lain yang masih
satu tipe. Anggota dari array ini dikenal dengan element. Di dalam pascal, jumlah
element array harus sudah di tentukan di awal program. Berikut contoh cara
pendefenisian tipe data array di dalam pascal:
var nilai: array[0..9] of integer;
Sebagai contoh, perhatikan kode program berikut ini:
Program tipe_array; uses crt; var nilai1, nilai2, nilai3, nilai4: integer; begin clrscr; nilai1:= 100; nilai2:= 19; nilai3:= 17; nilai4:= 2008; writeln('nilai1: ',nilai1); writeln('nilai2: ',nilai2); writeln('nilai3: ',nilai3); writeln('nilai4: ',nilai4); readln; end.
22 Lilis Setyowati, ST., MMSI
1.7.3.2. Tipe Data String
Tipe data string adalah tipe data yang bisa menampung banyak karakter sekaligus,
seperti kata, atau kalimat. Secara internal di dalam pascal, string merupakan array dari
tipe data char, oleh karena itu, tipe data ini sering dimasukan ke dalam array. Berikut
contoh cara pendefenisian tipe data string di dalam pascal:
var mahasiswa: record nama: string[20]; umur: integer; kelas: string[30]; end;
1.7.3.3. Tipe Data Set
Tipe data set adalah tipe data yang isinya terdiri dari sebuah himpunan tipe data lain,
seperti hipunan angka 1 sampai dengan 9, himpunan huruf vokal, dll. Tipe data set
digunakan untuk membuat operasi himpunan seperti gabungan, irisan, atau selisih.
Tipe data set adalah tipe data yang terdiri dari kelompok data yang sama. Tipe data ini
sedikit mirip dengan tipe data enumeration, dimana kita bisa menentukan sendiri isi dari
tipe data set. Secara khusus, tipe data set ini sangat mirip dengan konsep himpunan di
dalam matematika. Sebagai contoh, misalnya saya membuat sebuah himpunan huruf
fokal, himpunan ini terdiri dari huruf ‘a’, ’i’, ’u’, ’e’ dan ‘o’. Kemudian, saya bisa
melakukan beberapa proses terhadap himpunan ini, apakah itu penambahan dengan
himpunan lain (union), pengurangan dengan himpunan lain (irisan), dll.
Untuk membuat tipe data set di dalam pascal, kita cukup mendeklarasikan variabel
sebagai set of tipe_data. Sebagai contoh, untuk membuat variabel yang merupakan
himpunan dari tipe data char, bisa ditulis seperti berikut ini:
var himpunan1: set of char;
Variabel himpunan1 merupakan tipe data set yang bisa diisi dengan sembarang karakter (char). Jumlah anggota yang bisa diterima oleh himpunan ini dapat dibatasi. Untuk membatasi anggota dapat dituliskan seperti berikut: var himpunan1: set of 1..9; himpunan2: set of 99..999; himpunan3: set of ‘a’..’z’;
Lilis Setyowati, ST., MMSI 23
Pengisian anggota himpunan, dilakukan dengan menggunakan tanda kurung siku. Sebagai contoh, jika himpunan1 merupakan set of char, saya bisa mengisinya dengan karakter huruf vokal seperti berikut ini:
himpunan1 := ['a','i','u','e','o']; Sekarang, himpunan 1 akan berisi 5 anggota yakni huruf ‘a’, ‘i’, ‘u’, ‘e’, dan ‘o’. 1.7.3.4. Tipe Data File
Tipe data file adalah tipe data yang digunakan untuk mengakses file. Tipe data ini
digunakan jika kita ingin membaca file atau menulis sesuatu kedalam file. Berikut contoh
cara pendefenisian tipe data file di dalam pascal:
var myfile: file of single;
1.7.4. Tipe Data Pointer
Kelompok tipe data terakhir adalah tipe data Pointer. Kelompok tipe data ini hanya
terdiri dari jenis: pointer. Tipe data pointer adalah tipe data yang berisi alamat memory
dari sebuah variabel. Tipe data ini digunakan jika kita butuh memanipulasi variabel
langsung dari memory komputer. Biasanya pointer digunakan ketika mempelajari
struktur data.
Berikut contoh cara pendefenisian tipe data pinter di dalam pascal:
var pointer : ^string;
Ketika sebuah variabel (misalkan variabel ‘angka’) dideklarasikan, pascal akan
menyiapkan sebuah tempat di memory komputer. Tempat ini memiliki alamat, yang
berfungsi untuk menandai lokasi variabel tersebut. Agar lebih mudah dipahami, anggap
sebuah memory komputer sebagai sebuah lemari besar. Variabel disimpan di dalam
setiap laci lemari. Setiap laci tentunya memiliki nomor agar mudah diakses. Nomor laci
inilah yang akan disimpan sebagai pointer.
Sebagai contoh, variabel ‘angka’ bisa ditempatkan di alamat 10023 pada memory
komputer. Variabel lain, misalnya ‘huruf’, akan disimpan di alamat 19920, variabel ‘i’
bisa disimpan di alamat 10033, dst. Alamat memory inilah yang disimpan ke dalam tipe
data pointer.
1.8. Variabel
Variabel adalah suatu identifier non-standar yang digunakan untuk menampung suatu
nilai. Variabel nilainya tidak tetap atau nilainya merupakan hasil dari suatu proses.
Secara teknis, variabel merujuk kepada suatu alamat di memory komputer. Setiap
24 Lilis Setyowati, ST., MMSI
variabel memiliki nama yang sebagai identitas variabel tersebut. Bentuk umum deklarasi
variabel adalah sebagai berikut:
a) Jika hanya 1 (satu) variabel yang dideklarasikan :
VAR identifier : jenis data;
b) Jika lebih dari 1 (satu) variabel dan masing-masing memiliki jenis data yang
sama:
VAR id-1, id-2, …., id-3 : jenis data;
c) Jika beberapa variabel yang berbeda jenis datanya :
VAR identifier-1 : jenis data; identifier-2 : jenis data; . . identifier-n : jenis data;
d) Jika variabel yang dideklarasikan berjenis data non-standar :
TYPE id = (data_item_1,data_item_2,…,data_item_n); VAR id-v : id; SUB-RANGE : TYPE id = data_item_pertama .. data_item_terakhir; VAR id-v : id;
Berikut ini merupakan contoh pendeklarasian variabel:
a) VAR x : integer;
b) VAR p,q,r : real;
c) VAR a,b : char;
a. m,n : boolean;
d) TYPE warna = (merah,hitam,biru,putih,kuning);
a. VAR x1,x2 : warna;
e) TYPE tahun = 1900 .. 1993;
a. VAR thn-1,thn-2,thn-3 : tahun;
1.9. Konstanta
Konstanta merupakan suatu identifier non-standar yang nilainya telah ditetapkan dalam
suatu program, tidak dapat berubah (tetap) sepanjang program, dan dideklarasikan
pada bagian deklarasi. Umumnya konstanta digunakan untuk nilai yang tidak akan
berubah, seperti nilai phi dalam matematika yang bernilai 3.14, atau kecepatan cahaya
yang bernilai 299.792.458 m/s.
Lilis Setyowati, ST., MMSI 25
Di dalam pascal, sebuah konstanta hanya dapat diisi dengan tipe data dasar, yakni char,
integer, real, boolean, serta tipe data string dan set. Penulisan nama konstanta juga
mengkuti aturan penulisan identifier sebagai berikut:
Karakter pertama harus berupa huruf.
Karakter kedua dan seterusnya bisa berupa huruf, angka, atau karakter
underscore “_”.
Penulisan konstanta tidak boleh menggunakan karakter selain angka, huruf dan
underscore. Kita tidak bisa menggunakan spasi, dan tanda-tanda khusus seperti
*, +, -, &, %, $, #, atau @.
Maksimal panjang konstanta tergantung kepada compiler yang digunakan.
Beberapa mendukung 32 karakter hingga 63 karakter.
Konstanta tidak bisa diubah nilainya sepanjang kode program.
Berbeda dengan variabel, konstanta harus diisi nilai pada saat deklarasi. Berikut format
dasar penulisan konstanta:
Konstanta dapat dideklarasinya sebagai berikut :
CONST Nama_konstanta = nilai_konstanta;
Contoh penggunaan konstanta dalam program adalah sebagai berikut:
CONST phi = 3.14; x= 2; y = ‘S’;
*pascal menggunakan tanda sama dengan ‘ = ’ untuk memberikan nilai kepada
konstanta saat dideklarasikan (proses inisialisasi).
1.10. Ekspresi
Ekspresi merupakan kumpulan dari operand-operand (seperti : bilangan, konstanta,
variabel, dll) yang bersama-sama dengan operator membentuk suatu bentuk aljabar dan
menyatakan suatu nilai.
Terdapat 2 (dua) jenis ekspresi dalam bahasa Pascal, yaitu :
1. Ekspresi numerik / aritmatika, yaitu suatu ekspresi yang menghasilkan nilai
numerik / aritmatika.
Contoh :
(b * b – 4 * a * c) / (2*a) / (2 * a) ekspresi numerik, jika a, b dan c adalah bilangan
(variabel bernilai numerik).
26 Lilis Setyowati, ST., MMSI
2. Ekspresi Boolean atau ekspresi logika, yaitu suatu ekspresi yang menghasilkan
nilai boolean / logika (true/false).
Contoh :
Upah < 1000.0 ekspresi boolean (“upah” adalah suatu variabel bernilai real).
1.11. Operand dan Operator
Dalam pengoperasian tipe data yang telah dibahas pada poin sebelumnya, diperlukan
sebuah operator. Operator lekat hubungannya dengan istilah operand. Berikut
pembahasan mengenai operand dan operator.
1.11.1. Operand
Operand adalah nilai asal yang digunakan di dalam sebuah proses operasi. Sebagai
contoh, pada operasi: 10 + 2. Angka 10 dan 2 disebut sebagai operand, sedangkan tanda
tambah (karakter +) adalah operator.
1.11.2. Operator
Operator atau tanda operasi adalah instruksi yang diberikan untuk mendapatkan hasil
dari proses tersebut. Biasanya operator berupa karakter matematis atau perintah
singkat sederhana.
Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori,
yaitu:
a. Assignment operator. b. String operator. c. Set operator. d. Relational operator. e. Aritmatika operator. f. Unary, Binary, dan Ternary operator. g. Logical operator. h. Bitwise operator. i. Address operator.
1.11.2.1. Asignment operator
Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh
tanda sama dengan (:=).
Lilis Setyowati, ST., MMSI 27
1.11.2.2. String operator
Di dalam pascal, hanya terdapat 1 jenis operator string, yakni tanda tambah ‘ + ’ yang
digunakan untuk menyambung string (concatenated).
Operator Penjelasan Contoh
+ Penggabungan (Concate) “belajar” + “Pascal”
1.11.2.3. Set operator
Operator set khusus digunakan untuk tipe data set (himpunan).
Operator Action
+ Union
– Selisih (Difference)
* Irisan (Intersection)
>< Selisih simetri (Symmetric difference)
<= Beranggotakan (Contains)
include Menambahkan element baru
exclude Mengeluarkan element baru
in Cek apakah ada di dalam himpunan
1.11.2.4. Relational operator (Operator Perbandingan)
Operator Penjelasan Contoh
:= Pemberian nilai (Assignment) a := “belajar pascal»
28 Lilis Setyowati, ST., MMSI
Relational operator digunakan untuk membandingkan 2 buah angka, apakah angka
tersebut sama besar, lebih kecil, lebih besar, dll. Nilai dari operator perbandingan ini
adalah True atau False (boolean).
Operator Penjelasan Contoh
= Sama dengan 5 = 5 -> True
<> Tidak sama dengan 5 <> 5 -> False
> Lebih besar 5 > 6 -> False
< Lebih kecil 5 < 6 -> True
>= Lebih besar atau sama dengan 5 >= 3 -> True
<= Lebih kecil atau sama dengan 5 <= 5 -> True
1.11.2.5. Aritmatika Operator
Operator aritmatika adalah operator yang biasa kita temukan untuk operasi
matematika. Berikut jenis-jenis operator aritmatika di dalam pascal:
Operator Penjelasan Contoh
+ Penambahan 2 + 3 = 5
– Pengurangan 5 – 2 = 3
* Perkalian 2 * 3 = 6
/ Pembagian (real/pecahan) 14 / 4 = 3.5
div Pembagian (integer/angka bulat) 14 div 4 = 3
mod Sisa hasil bagi 14 mod 4 = 2
Contoh penggunaan operator aritmatika dapat dilihat di bawah ini:
15*5 hasilnya 75
20/3 hasilnya 6.6666666667E+00
20 div 3 hasilnya 6
Lilis Setyowati, ST., MMSI 29
20 mod 3 hasilnya 2
1.11.2.6. Unary , Binary, dan Ternary Operator
Berdasarkan jumlah operand-nya, operator dibagi menjadi 3 jenis: Operator Unary,
Operator Binary dan Operator Ternary.
1.11.2.6.1. Unary Operator
Unary Operator adalah operator yang hanya terdiri dari 1 operand. Contohnya adalah
operator positif (plus): +7, +9, +10.111. Operator aritmatika unary dapat dilihat pada
table di bawah ini:
Operator Penjelasan Contoh
+ Positif (plus) 5
– Negatif (min) -3
1.11.2.6.2. Binary Operator
Operator Binary digunakan untuk mengoperasikan dua buah operand. Operand dapat
berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika
yang berhubungan dengan nilai tipe data integer dan real.
1.11.2.6.3. Ternary Operator
Operator Ternary adalah operator yang terdiri dari 3 operand. Khusus di dalam pascal,
tidak terdapat operator ternary.
1.11.2.7. Logical Operator (Operator logika)
Logical operator digunakan untuk menghasilkan nilai boolean TRUE atau FALSE dari 2
buah kondisi.
Operator Penjelasan Contoh
and Akan menghasilkan TRUE jika kedua operand TRUE
TRUE and FALSE, hasilnya: FALSE
or Akan menghasilkan TRUE jika salah satu operand TRUE
TRUE or FALSE, hasilnya: TRUE
xor Akan menghasilkan TRUE jika kedua operand berbeda
TRUE xor FALSE, hasilnya: TRUE
not Akan menghasilkan TRUE jika operand FALSE not TRUE , hasilnya: FALSE
30 Lilis Setyowati, ST., MMSI
1.11.2.8. Bitwise operator
Operator ini mirip dengan operator logika / boolean, tapi dilakukan pada level bit.
Operator Penjelasan Contoh
not Bitwise NOT not 1100, hasilnya: 0011
and Bitwise AND 1100 and 0101, hasilnya: 0100
or Bitwise OR 1100 and 0101, hasilnya: 1101
xor Bitwise exclusive OR 1100 xor 0101, hasilnya: 1001
shl Bitwise shift left 0100 shl 1, hasilnya: 1000
shr Bitwise shift right 0100 shr 1, hasilnya: 0010
<< Bitwise shift left 0100 << 1, hasilnya: 1000
>> Bitwise shift right 0100 >> 1, hasilnya: 0010
1.11.2.9. Address Operator (Pointer)
Operator address khusus digunakan untuk tipe data pointer. Operator ini berfungsi
untuk mencari alamat memory dari sebuah variabel.
Operator Penjelasan Contoh
@ Menampilkan alamat memory sebuah variabel @nama_variabel
^ Menampilkan nilai variabel dari alamat memory nama_variabel^
1.12. Input dan Output pada Pascal
Pada Bahasa pemrograman pascal terdapat dua buah perintah input dan dua perintah
output. Perintah input pada pascal terdiri dari statement Read dan Readln. Sedangkan
perintah output pada pascal terdiri dari statement Write dan Writeln.
1.12.1. Statement Read dan Readln
Dalam bahasa Pascal untuk keperluan input (membaca input) digunakan identifier
standar READ atau READLN. Perintah read dan readlndapat digunakan ketika variabel
yang akan menampung hasil inputan dari pengguna sudah disiapkan. Variabel harus
memiliki tipe data yang sama dengan apa yang akan diinput.
Lilis Setyowati, ST., MMSI 31
Perintah read dan readln sama-sama digunakan untuk meminta input dari pengguna.
Namun, keduanya memiliki perbedaan dari cara pembacaan data. Perintah read akan
membaca data secara ‘horizontal’. Setelah proses input selesai, posisi kursor akan tetap
berada di baris yang sama. Karakter ‘spasi’ atau ‘enter’ dapat digunakan untuk
memisahkan 1 input dengan input lainnya (dengan beberapa pengecualian).
Perintah readln akan membaca data secara ‘vertikal’. Setelah proses input selesai, posisi
kursor akan pindah ke baris baru. Kita bisa menggunakan karakter ‘enter’ untuk
memisahkan 1 input dengan input lainnya.
Defenisi perbedaan diatas ‘hanya’ secara teori. Dalam prakteknya, kedua perintah ini
akan membuat prilaku berbeda tergantung tipe data yang digunakan.
Catatan:
Statement Read tidak memperhatikan batas baris, rinci data yang tersedia akan
selalu dibaca tidak tergantung apakah mereka ada yang baris yang sama atau
tidak.
Statement Readln memulai pembacaan data pada posisi baris saat itu dan pergi
ke awal baris baru setelah pembacaan selesai.
Contoh statement Read dan Readln:
Read(A,B,C); Read(A); Read(B); Read(C);
1.12.1.1. Penggunan Read dan Readln pada tipe data angka (integer/real)
Perintah read akan membaca seluruh inputan yang dipisah dengan spasi maupun enter.
Berikut contoh penggunaannya:
a) Statement Read
program input; uses crt; var a,b,c:integer; begin clrscr; writeln('Input 3 angka, dipisah dengan spasi:'); read(a); read(b); read(c); read(d); writeln;
32 Lilis Setyowati, ST., MMSI
writeln('Hasil Input:'); writeln('a: ',a,', b: ',b,', c: ',c); readln; readln; end.
* Perintah readln di akhir program ditulis 2 kali. Hal inidigunakan untuk ‘menahan’
jendela program agar tidak langsung menutup ketika dijalankan. Jika tidak menggunakan
2 kali perintah readln, hasil program dapat dilihat dari menu Debug->User Screen atau
menekan tombol ALT+F5.
ATAU program input; uses crt; var a,b,c:integer; begin clrscr; writeln('Input 3 angka, dipisah dengan spasi:'); read(a,b,c,d); writeln; writeln('Hasil Input:'); writeln('a: ',a,'. b: ',b,'. c: ',c); readln; end.
OUTPUT: Input 3 angka, dipisah dengan spasi: 17 9 29 Hasil Input: a: 17, b: 9, c: 29
b) Statement Readln program input; uses crt; var a,b,c:integer; begin clrscr; writeln('Input 3 angka, dipisah dengan enter:'); readln(a); readln(b); readln(c); writeln; writeln('Hasil Input:'); writeln('a: ',a,'. b: ',b,'. c: ',c); readln; end.
Lilis Setyowati, ST., MMSI 33
OUTPUT:
Input 3 angka, dipisah dengan enter: 17 9 29 Hasil Input: a: 17. b: 9. c: 29 *Khusus untuk tipe data angka (integer/real), perintah read bisa digunakan dengan pemisah spasi, maupun enter. 1.12.1.2. Penggunaan Read dan Readln pada tipe data char
Perintah read akan membaca seluruh karakter teks (termasuk spasi dan enter) dalam 1 baris secara vertikal. Contoh program dapat dilihat di bawah ini:
program input; uses crt; var a,b,c,d,e,f:char; begin clrscr; writeln('Input Teks Sembarang (6 karakter)'); read(a); read(b); read(c); read(d); read(e);
read(f); writeln; writeln('Hasil Teks:'); write(a,' ',b,' ',c,' ',d,' ',e, ' ',f); readln; readln; end.
OUTPUT Input Teks Sembarang (6 karakter) mahasiswa Hasil Teks: m a h a s i *Ketika diinput sebanyak 6 karakter atau lebih, dan mengakhiri dengan tombol enter, tiap-tiap varibel akan diisi dengan 6 karakter pertama dari teks (teks ke-7 dan seterusnya akan diabaikan).
34 Lilis Setyowati, ST., MMSI
Ketika statement read dengan readln, pembacaan karakter akan dilakukan secara vertikal. Setiap karakter dipisahkan dengan enter, seperti contoh kode program berikut:
program input; uses crt; var a,b,c,d,e:char; begin clrscr; writeln('Input Teks Sembarang (5 karakter) :'); readln(a); readln(b); readln(c); readln(d); readln(e); writeln; writeln('Hasil Teks:'); write(a,' ',b,' ',c,' ',d,' ',e); readln; end.
OUTPUT Input Teks Sembarang (5 karakter) : mahasiwa teknik informatika universitas gunadarma Hasil Teks: m t i u g * Ketika ada penambahan karakter setelah karakter pertama di sebuah baris, karakter kedua dst akan diabaikan oleh Readln 1.12.1.3. Penggunaan read dan readln untuk tipe data string
Penggunaan perintah read pada tipe data string menghasilkan sesuatu yang sedikit
berbeda. Perhatikan contoh kode berikut:
program input;
uses crt; var a,b,c,d:string; begin clrscr; writeln('Input 4 kata:');
Lilis Setyowati, ST., MMSI 35
read(a); read(b); read(c); read(d); writeln; writeln('Hasil Teks:'); writeln('a: ',a); writeln('b: ',b); writeln('c: ',c); writeln('d: ',d); readln; readln; end.
OUTPUT a) Ketika 4 kata diinput dengan spasih sebagai pemisah dan menekan tombol enter,
keempat kata ini akan diinput kedalam variabel a: Input 4 kata: Mahasiswa Informatika Universitas Gunadarma Hasil Teks: a: Mahasiswa Universitas Gunadarma b: c: d:
b) Ketika sebuah kata dibuat dan menekan enter, program akan ‘melewati’ variabel b, c, dan d:
Input 4 kata: Mahasiswa Hasil Teks: a: Mahasiswa b: c: d:
Guna menghindari output seperti di atas, maka digunakan perintah Readln. program input;
uses crt; var a,b,c,d:string; begin clrscr; writeln('Input 4 kata:'); readln(a); readln(b);
36 Lilis Setyowati, ST., MMSI
readln(c); readln(d); writeln; writeln('Hasil Teks:'); writeln('a: ',a); writeln('b: ',b); writeln('c: ',c); writeln('d: ',d); readln; end.
OUTPUT
Input 4 kata: Teknik Informatika Universitas Gunadarma Akreditasi A Hasil Teks: a: Teknik Informatika b: Universitas Gunadarma c: Akreditasi d: A
1.12.2. Statement Write dan Writeln
Guna keperluan output (menampilkan luaran ke jendela tampilan) pada pascal
digunakan identifier standar WRITE atau WRITELN.
Perbedaan Statement Write dan Writeln adalah sebagai berikut:
• Write menampilkan hasil tanpa ganti baris dan tampilan berikutnya akan
disambung dalam baris yang sama.
• WriteLn adalah bahwa Sedang WriteLn digunakan untuk menampilkan tampilan
perbaris, akan ganti baris untuk tampilan berikutnya.
• Statement Write digunakan untuk mencetak pada baris yang sama dari
beberapa argumen
• Writeln yang tidak diikuti argumen hanya mencetak satu baris kosong
• Writeln yang diikuti argumen akan mencetak nilai argumen tersebut dan
berpindah ke baris berikutnya
Lilis Setyowati, ST., MMSI 37
Cara penulisan Write dan Writeln:
Data-output yang ingin ditampilkan dengan perintah write dan writeln, harus
ditulis diantara tanda tanda kurung “ ( “ dan “ ) ”.
Jika data tersebut berjenis ‘teks’ yang terdiri dari karakter (char) atau kumpulan
karakter (string), perlu ditambahkan tanda tanda kutip satu ( ‘ ) diantara teks
tersebut.
Jika data yang akan ditampilkan berjenis angka, variabel, atau konstanta, maka
tidak perlu menggunakan tanda kutip.
Contoh penggunaan statement Write dan WriteLn:
program tampil;
uses crt; begin clrscr; write('Nama : '); writeln('Adifa'); writeln('Nama: '); writeln('Alesha'); write('D'); write('i'); write('n'); write('a'); write('r'); writeln('D'); writeln('h'); writeln('a'); writeln('a'); writeln('f'); readln; end.
OUTPUT Nama : Adifa Nama: Alesha Dinard h a a f
38 Lilis Setyowati, ST., MMSI
* Hasil kode program pada baris 6 dan 7 ditampilkan dalam 1 baris. Hal ini karena perintah write akan membuat teks berikutnya tetap di baris yang sama. Hasil tampilan juga memperlihatkan kata “Dinard”, bukan “Dinar” seperti yang diinginkan. Ini terjadi karena perintah writeln hanya akan memindahkan teks selanjutnya ke baris baru, bukan teks saat ini. Khusus untuk tipe data angka (integer/real) pascal menyediakan instruksi tambahan untuk mengatur bagaimana angka tersebut ditampilkan. Jika data berupa angka bulat (integer), kita bisa mengatur seberapa banyak ‘tempat’ untuk angka yang dipersiapkan. Apabila angka tersebut adalah angka pecahan (real), kita bisa mengatur berapa digit angka dibelakang koma. Berikut format penulisannya:
Angka bulat (integer) = angka:jumlah_digit.
Angka desimal (real) = angka:jumlah_digit:jumlah_digit_dibelakang_koma. Berikut contoh kode programnya:
program tampil; uses crt; var angka_int:integer=12345; angka_real:real=1234.123456; begin clrscr; writeln(angka_int); writeln(angka_int:4); writeln(angka_int:8); writeln(angka_real); writeln(angka_real:4:2); writeln(angka_real:2:4); readln; end.
OUTPUT 12345 12345 12345 1.23412345600000E+003 1234.12 1234.1235 1.13. Format Output
Dalam Pascal kita dapat menampilkan hasil yang lebih menarik dengan format Write dan
Writeln menggunakan beberapa parameter. Bentuk-bentuk dari format tersebut adalah
sebagai berikut :
Lilis Setyowati, ST., MMSI 39
1.13.1. Parameter CH:N
Parameter CH:N digunakan untuk membentuk format tampilan Char selebar N karakter
dengan blank dimuka sebanyak N-1.
Contoh :
Program Tampil1; Output : Var _ _ _ _ A _ _ B Ket1, Ket2 : Char; Begin Ket1 :=’A’; Ket2 :=’B’; Writeln(Ket1:5; Ket2:3); End.
1.13.2. Parameter S:N
Parameter S:N digunakan untuk membentuk format tampilan String dengan lebar N
karakter.
Contoh :
Program Tampil2; Output : Var Bahasa : _ _ _ _ Pascal Karakter : String; Begin Karakter := ‘Pascal’; Writeln(‘Bahasa :’, Karakter:10); End.
1.13.3. Parameter I:N
Parameter I:N digunakan untuk membentuk format tampilan integer dengan lebar N
digit.
Contoh :
Program Tampil3; Output : Var Jumlah Data = _ _275 N : Integer; Begin N := 275; Writeln(‘Jumlah Data =’, N:5); End.
40 Lilis Setyowati, ST., MMSI
1.13.4. Parameter R:N
Parameter R:N digunakan untuk membentuk format tampilan nilai numeric Real dengan
lebar N digit rata sebelah kanan.
Contoh :
Program Tampil4; Output : Var Nilai Real = _ _1.23450E+02 Nilai := 123,45; Writeln(‘Nilai Real =’, Nilai:13) End.
1.13.5. Parameter R:N:M
Parameter R:N:M digunakan untuk membentuk format tampilan nilai numeric Real
dengan lebar N digit rata sebelah kanan, dengan M digit angka dibelakang koma tidak
dalam bentuk eksponential.
Contoh : Program Tampil5; Output : Var Nilai Real = _ _ _ _ _123,450 Nilai : Real; Begin Nilai := 123,45; Writeln(‘Nilai Real =’.Nilai:12:3); End.
1.13.6. Parameter B:N
Parameter B:N digunakan untuk membentuk format tampilan nilai Boolean True atau
False dengan lebar N karakter rata sebelah kanan.
Contoh :
Program Tampil6; Output : Var Nilai Boolean =_ _True Nilai : Boolean; Writeln(“Nilai Boolean =’,Nilai:6); End.
1.14. Pengaturan Letak Di Layar
Pada Pascal ada beberapa prosedur untuk mengatur letak di layar. Berikut beberapa
perintah yang dimaksud:
Lilis Setyowati, ST., MMSI 41
1.14.1. Prosedur CLRSCR
Prosedur CLRSCR digunakan untuk membersihkan layar dari tampilan-tampilan
sebelumnya dan meletakkan kursor diposisi ujung kiri atas dari layar. Prosedur standar
ini bila digunakan harus menyebutkan terlebih dahulu Unit Standar Crt.
Contoh :
Program Tampil7; Output : Uses Crt; Bahasa Pascal Begin (berada diposisi ujung kiri atas) Clrscr; Writeln(‘Bahasa Pascal’); End.
1.14.2. Prosedur GOTOXY
Prosedur GOTOXY digunakan untuk meletakkan kursor diposisi layar yang ditunjukkan
oleh nilai Xpos dan Ypos. Nilai Xpos menunjukkan posisi sumbu X (posisi horizontal atau
posisi kolom diantara kolom 1 sampai dengan kolom 80), nilai Ypos menunjukkan posisi
sumbu Y (posisi Vertikal atau posisi baris diantara baris 1 sampai dengan baris 25).
Prosedur standar ini bila digunakan harus melibatkan Unit Standar Crt.
Contoh :
Program Tampil8; Uses Crt; Begin Clrscr; Gotoxy(10,15); Writeln(‘Bahasa Pascal’); Readln; End.
Output:
Bahasa Pascal Baris 15
Kolom 10
1.14.3. Prosedur CLREOL
Prosedur CLREOL digunakan untuk menghapus semua karakter dalam satu baris
disebelah kanan posisi kursor tanpa merubah posisi kursor. Prosedur standar ini bila
digunakan harus melibatkan Unit Standar Crt.
Contoh :
Program Tampil9; Uses Crt; Var
42 Lilis Setyowati, ST., MMSI
Nilai : Integer; Begin Clrscr; Gotoxy(10,15); Write(‘Masukkan sebuah nilai Integer ?’); Readln(Nilai); Gotoxy(10,15); Clreol; Writeln(‘Anda Pintar !!!’); Readln; End.
Output 1 :
Masukkan sebuah nilai Integer ? 9 baris 15
kolom 10
Output 2 :
Anda Pintar !!! baris 15
Kolom 10
1.14.4. Prosedur Delline
Prosedur Delline digunakan untuk menghapus sebuah baris diposisi kursor dan
menggeser naik tampilan-tampilan dibawahnya. Prosedur standar ini bila digunakan
harus melibatkan Unit Standar Crt.
Contoh :
Program Tampil10; Uses Crt; Var Tekan : Char; Begin Clrscr; Gotoxy(5,8); Writeln (‘Satu’); Gotoxy(5,9); Writeln (‘Dua’);
Gotoxy(5,10); Writeln (‘Tiga’); Gotoxy(5,11); Writeln (‘Empat’); Gotoxy(5,12); Writeln (‘Lima’); Gotoxy(5,20); Writeln (‘Tekan Sembarang Tombol’);
Read(Tekan); Gotoxy(5,20); Clreol; End.
Output 1: Satu Baris 8 Dua Baris 9 Tiga Baris 10 Empat Baris 11
Lilis Setyowati, ST., MMSI 43
Lima Baris 12 Tekan Sembarang Tombol Baris 20
Kolom 5 Output 2: Satu Tiga Empat 1.14.5. Prosedur Insline
Prosedur Insline digunakan untuk menyisipi sebuah baris pada posisi kursor dan
menggeser ke bawah tampilan-tampilan baris dibawahnya. Prosedur standar ini bila
digunakan harus melibatkan Unit Standar Crt.
Contoh :
Program Tampil10; Uses Crt; Var Tekan : Char; Begin Clrscr; Gotoxy(5,8); Writeln (‘Satu’); Gotoxy(5,9); Writeln (‘Dua’);
Gotoxy(5,10); Writeln (‘Tiga’); Gotoxy(5,11); Writeln (‘Empat’); Gotoxy(5,12); Writeln (‘Lima’); Gotoxy(5,20); Writeln (‘Tekan Sembarang Tombol’);
Read(Tekan); Gotoxy(5,20); Clreol; Gotoxy(5,20); Insline; End.
Output 1: Output 2: Satu Baris 8 Satu Dua Baris 9 Dua Tiga Baris 10 Tiga Empat Baris 11 Empat Lima Baris 12 Lima Tekan Sembarang Tombol Baris 20
Kolom 5
44 Lilis Setyowati, ST., MMSI
1.14.6. Prosedur Delay
Prosedur Delay digunakan untuk menghentikan sejenak proses program selama nilai dari
argumen tempo, yaitu dalam ukuran waktu millisecond (1/1000 detik). Nilai argumen ini
harus dalam bentuk numeric integer. Prosedur standar ini bila digunakan harus
melibatkan unit Standar Crt.
Contoh :
Program Tampil12;
Uses Crt; Begin Clrscr; Writeln(‘5 Detik Lagi Akan Tampil Tulisan Menarik !!’); Delay(5000); Writeln; Writeln(‘Hallo Apa Kabar ?’); End.
Output:
5 Detik Lagi Akan Tampil Tulisan Menarik !!
Hallo Apa Kabar ?
1.15. Pengaturan Bentuk Di Printer
Selain ditampilkan di layar, hasil program juga dapat ditampilkan di Printer yaitu dengan
menyebutkan alat outputnya. Alat output pada pascal yaitu Lst untuk printer. Untuk
menggunakan alat output printer, maka Unit standar Printer harus disebutkan.
Contoh :
Program Tampil13; Uses Printer; Begin Writeln(‘Lst,’Ini tercetak di printer’); Writeln(‘Lst,’Ini juga tercetak di printer’); Writeln(‘Kalau ini dilayar’); Writeln(‘Kalau ini juga dilayar’); Writeln(‘Lst,’Sekarang tercetak lagi di printer’); End.
Output 1 : Output 2:
Ini tercetak di printer Kalau ini dilayar Ini juga tercetak di printer Kalau ini juga dilayar Sekarang tercetak lagi di printer
Lilis Setyowati, ST., MMSI 45
2. MANIPULASI STRING
Suatu String dalam Bahasa Pascal dapat dioperasikan dengan berbagai macam tujuan.
Pascal menyediakan berbagai prosedur standar dan fungsi standar untuk operasi string.
Pada table dibawah ini ditampilkan prosedur standar dan fungsi standar pada pascal:
Prosedur Standar Fungsi Standar
DELETE CONCAT
INSERT COPY
STR POS
VAL LENGTH
Dalam operasinya, String hanya mempunyai sebuah operator yaitu operator ‘+’. Bila
operator ini digunakan untuk dua buah elemen string maka akan menggabungkan dua
buah string menjadi satu string. Panjang maksimal suatu string yang diijinkan oleh Pascal
adalah 255 karakter. Di bawah ini ada sebuah contoh penggunaan operator ‘+’ untuk
menggabungkan string:
Const Jenis = ‘Bahasa’; Nama = ‘Turbo Pascal’;
Var Sifat : String[10]; Kalimat : String[80];
Begin Sifat := ‘Terstruktur’; Kalimat := Jenis + ‘ ‘ + Nama + ‘ ‘ + ‘Merupakan’ + Jenis + ‘ ‘ + Sifat; WriteLn(Kalimat);
End.
Output: Bahasa Turbo Pascal Merupakan Bahasa Terstruktur
2.1. Prosedur Standar Pada String
Pascal menyediakan beberapa prosedur standar yang berguna untuk memanipulasi string, yaitu DELETE, INSERT, STR, dan VAL. 2.1.1. Prosedur DELETE
Prosedur DELETE digunakan untuk melakukan penghapusan terhadap substring dalam string yang dimulai dari posisi X sebanyak N karakter. Bentuk umum prosedur DELETE adalah sebagai berikut: DELETE(STRING :X :N);
46 Lilis Setyowati, ST., MMSI
*Jika jumlah i lebih besar dari jumlah karakter dalam string maka tidak ada karakter yang dihapus.
Contoh program menghapus substring dalam string:
Program delete_string; Uses Var awal : string; Begin Clrscr; Awal : = ‘Program Pascal’; DELETE (awal 2,3); Writeln (‘string awal = ,’awal); Readln; End.
2.1.2. Prosedure INSERT
Prosedur INSERT berfungsi untuk menyisipkan substring 1 ke dalam substring 2 mulai posisi karakter x. Bentuk umum prosedur INSERT adalah sebagai berikut:
Insert (string 1, string 2, n); * Bila hasil penyisipan string panjangnya lebih dari 255 karakter maka yang dianggap signifikan hanya sampai 255 karakter. Contoh program menyisipkan sebuah string ke dalam string lain:
Program insert_substring; Uses crt; Var s : string; Begin Clrscr; S : = ‘free pascal adalah karakter gratis pascal!’; Writeln (‘string s awal = ‘,s); Insert (‘bukan’,s,20); Writeln (‘string s setelah di insert =’,s); Readln; End.
2.1.3. Prosedur STR
Mengubah bentuk numerik (x) menjadi nilai string (s). Bentuk umum penulisan prosedur STR adalah sebagai berikut:
STR (x[:n[:m]], string); Nilai ‘n’ adalah format panjang dari nilai dan nilai ‘m’ menunjukkan format panjang
Lilis Setyowati, ST., MMSI 47
desimal (nilai dibelakang koma). Contoh penggunaan prosedur STR dapat dilihat pada program di bawah ini:
Uses Crt; Var N1,N2:integer;
S1,S2: string; Begin
N1:=1234; N2:=567; Writeln (N1+N2); Readln; Str (N1:4,S1); Str (N2:4,S2); Writeln(S1+S2); Readln;
End.
2.1.4. Prosedur VAL
Prosedur VAL berfungsi untuk mengubah nilai suatu argumen string menjadi nilai
numerik. Bentuk umum penulisan prosedur VAL adalah sebagai berikut:
VAL (Var_string_angka, Var_nilai, kode);
Keterangan :
Var_string_angka: berisi data string yang berupa angka.
Var_nilai berisi data hasil konversi.
Jika terjadi kesalahan data makaposisi kesalahan disimpan pada
kode.
Uses Crt; Var X1,X2:real; Y1,Y2:string[6]; Z1,Z2:integer;
Begin Y1 := ‘123.45’; Y2 := ‘765.13’;
Val (Y1, X1, Z1); Val (Y2, X2,Z2); Writeln(‘Nilai String 1 = ‘,’Y1);
Writeln(‘Nilai String 2 = ‘, Y2); Writeln(‘Nilai Real 1 = ’, X1); Writeln(‘Nilai Real 2 = ’, X2); Writeln(‘Posisi Salah X1 = ‘, Y1); Writeln(‘Posisi Salah X2 = ‘, Y2);
End.
2.2. Fungsi Standar Pada String
Pascal menyediakan beberapa fungsi standar yang berguna untuk memanipulasi
string, yaitu CONCATE, COPY, POS, dan LENGTH.
48 Lilis Setyowati, ST., MMSI
2.2.1. Fungsi CONCATE
Memiliki kesamaan fungsi dengan operator penggabungan “+” seperti yang telah
dijelaskan pada sub bab penggabungan diatas. Bentuk umum penulisan fungsi CONCATE
adalah sebagai berikut:
CONCATE (string1, string2, ... string N);
Contoh program untuk menggabungkan 2 string menggunakan fungsi concat:
Program concat_string; Uses crt;
Var Kata 1, kata 2, hasil : string; Begin
Clrscr; Kata 1 := ‘Belajar pemrograman’ Kata 2 := ‘Dengan free pascal’; Hasil := concat (kata 1, kata 2); Readln;
End.
2.2.2. Fungsi COPY
Fungsi COPY digunakan untuk menyalin substring dan string yang dimulai pada posisi x
sebanyak n karakter. Format umum penulisan fungsi COPY adalah adalah sebagai
berikut:
COPY (STRING, x, n)
Contoh program untuk menyalin substring ke dalam string :
Program cth_copy string; Uses crt;
Var awal, akhir : string; Begin
Clrscr; Awal :=’1234567’; Writeln (‘nilai string awal : ‘,awal); Akhir : = copy (awal, 1, 2); {akhir : ‘12’} Writeln (‘nilai akhir =’,akhir); Akhir := copy (awal, 4,2); {s := ‘45’} Writeln (‘nilai akhir copy, 4,2 =’,akhir); Readln;
End.
2.2.3. Fungsi POS
Perintah POS berfungsi unutk mencari posisi suatu substring di dalam string dengan output data
berupa integer.
Lilis Setyowati, ST., MMSI 49
POS akan mengembalikan nilai indeks substring ke dalam string jika string mengandung yang
dicari. Format umum penulisan fungsi POS adalah sebagai berikut:
POS (substring, string);
Contoh program mencari substring dalam string: Program pos_string; Uses crt;
Var Kata, cari : string; Posisi : integer; Begin
Clrscr; Kata := ‘Belajar pemrograman’; Cari := ‘aj’; Posisi := pos (cari,kata); Writeln (posisi); Readln;
End.
2.2.4. Fungsi LENGTH
Fungsi LENGTH digunakan untuk memberikan nilai panjang atau jumlah karakter dari
suatu string. Format umum penulisan fungsi LENGTH adalah sebagai berikut:
LENGTH (string);
Contoh program memberikan nilai panjang string:
Program length_string; Uses crt;
Var s:string[20]; i:word; Begin
s:=‘program pascal’; i:=length(s); writeln(‘Panjang String’,’ ‘,s,’ ‘,’adalah’,’ ‘,i,’
‘,’karakter’); Readln;
End.
50 Lilis Setyowati, ST., MMSI
3. PERULANGAN PADA PASCAL
Perulangan, atau looping dalam bahasa inggris, adalah konsep pemrograman dimana
kita mengulang baris program beberapa kali. “Beberapa kali” disini bisa dikatakan tidak
terbatas, selama komputer masih bisa mengolahnya.
Struktur perulangan (atau dalam bahasa inggris disebut dengan loop) merupakan
instruksi program yang bertujuan untuk mengulang beberapa baris perintah. 3
komponen utama yang harus diketahui ketika menggunakan struktur perulangan
looping adalah kondisi awal dari perulangan, perintah program yang akan diulang,
serta kondisi akhir dimana perulangan akan berhenti. Pada Bahasa pemrograman
pascal terdapat beberapa struktur perulangan yang dapat digunakan, antara lain :
Struktur perulangan FOR-DO
Struktur perulangan WHILE-DO
Struktur perulangan REPEAT-UNTIL
3.1. Struktur Perulangan FOR-DO
FOR DO merupakan salah satu struktur perulangan di dalam Pascal. Flowchart
perulangan FOR DO dapat dilihat pada gambar di bawah ini,
Perulangan FOR DO dibagi menjadi 2 yaitu perulangan FOR-TO-DO dan FOR-DOWNTO-
DO.
3.1.1. Perulangan FOR-TO-DO
Perulangan FOR TO DO merupakan perulangan dengan nilai awal lebih rendah dibanding
nilai akhir (perulangan maju/meningkat). Flowchart dari perulangan ini adalah sbb;
Lilis Setyowati, ST., MMSI 51
Bentuk umum penulisan perulangan FOR-TO-DO adalah sbb:
FOR (variabel_counter):= (nilai_awal) TO (nilai_akhir) DO begin (kode program yang ingin diulang disini...) end;
variabel_counter adalah variabel yang berfungsi sebagai counter, atau penghitung di
dalam perulangan. Variabel ini otomatis menaik dari nilai_awal hingga nilai_akhir. Dalam
setiap kenaikan, blok kode program yang berada di dalam begin dan end; akan
dijalankan. Variabel_counter ini bisa digunakan sepanjang perulangan (jika diperlukan).
Contoh Program perulangan FOR-TO-DO:
program for_do_loop; uses crt; var i: integer; begin clrscr; for i := 1 to 5 do begin writeln('Hello World ke - ',i); end; readln; end.
52 Lilis Setyowati, ST., MMSI
OUTPUT :
Hello Word Ke – 1 Hello Word Ke - 2 Hello Word Ke - 3 Hello Word Ke - 4 Hello Word Ke - 5
3.1.2. Perulangan FOR-DOWNTO-DO
Jenis perulangan FOR DO yang kedua adalah perulangan FOR-DOWNTO-DO. Jenis
perulangan ini merupakan kebalikan dari perulangan FOR-TO-DO, jika pada perulangan
FOR-TO-DO nilai awal lebih rendah dibanding nilai akhir (perulangan maju/meningkat),
maka nilai awal pada FOR-DOWNTO-DO adalah leboh ringgi dibandingkan dengan nilai
akhir (perulangan mundur/ menurun). Flowchart dari perulangan ini adalah sbb;
Bentuk umum penulisan perulangan FOR-DOWNTO-DO adalah sbb :
FOR (variabel_counter) := (nilai_awal) DOWNTO (nilai_akhir) DO begin (kode program yang ingin diulang disini...) end;
Contoh Program perulangan FOR-DOWNTO-DO:
program for_do_loop2; uses crt;
Lilis Setyowati, ST., MMSI 53
var i: integer; begin clrscr; for i := 5 downto 1 do begin writeln('Hello World ke - ',i); end; readln; end.
OUTPUT :
Hello Word Ke - 5 Hello Word Ke - 4 Hello Word Ke - 3 Hello Word Ke - 2 Hello Word Ke - 1
3.2. Struktur Perulangan WHILE -DO
Perulangan WHILE-DO adalah perulangan yang dapat digunakan pada situasi dimana
jumlah perulangan belum bisa dipastikan. Bentuk umum penulisan perulangan WHILE-
DO adalah sebagai berikut:
WHILE (condition) DO begin (kode program yang ingin diulang disini...) (kode program untuk mengubah condition..) end;
Kunci dari perulangan WHILE DO ada di condition dan kode program untuk mengubah
condition. Condition bisa dikatakan sebagai syarat agar perulangan bisa dijalankan.
Selama syarat ini terpenuhi (bernilai TRUE), perulangan akan terus dijalankan. Jika syarat
ini tidak terpenuhi (bernilai FALSE), perulangan tidak akan berjalan.
Contoh program perulangan WHILE-DO
program while_do; uses crt; var i: integer; begin clrscr;
54 Lilis Setyowati, ST., MMSI
i:= 6; while i <= 10 do begin writeln('Variabel i sekarang bernilai: ',i); i:= i + 1; end; readln; end.
OUTPUT: Variabel i sekarang bernilai: 6 Variabel i sekarang bernilai: 7 Variabel i sekarang bernilai: 8 Variabel i sekarang bernilai: 9 Variabel i sekarang bernilai: 10
3.2.1. Membuat Perulangan Hitung Mundur dengan WHILE-DO
Program dengan perulangan yang mundur dengan WHILE-Do dapat dibuat dengan
mengubah nilai awal variabel counter dan kondisi syarat dari perulangan WHILE-DO.
Berikut ini merupakan contoh program hitung mundur menggunakan WHILE-DO:
program while_do; uses crt; var i: integer; begin clrscr; i:= 3; while i >= 0 do begin writeln('Hitung mundur: ',i); i:= i - 1; end; readln; end.
OUTPUT:
Hitung mundur: 3 Hitung mundur: 2 Hitung mundur: 1 Hitung mundur: 0
Lilis Setyowati, ST., MMSI 55
3.2.2. Membuat Perulangan Lompat dengan WHILE-DO
Program perulangan lompat dengan menggunakan WHILE-DO dapat dibuat dengan
memodifikasi bagian counter. Variabel counter yang naik misalnya dari 3, 6, 9, 12, dst
dapat dibuat dengan memodifikasi bagian counter. Contoh program perulangan lompat
menggunakan WHILE-Do adalah sbb;
program while_do; uses crt; var i: integer; begin clrscr; i:= 3; writeln('Berikut deret untuk kelipatan 3: '); while i <= 30 do begin write(i,' '); i:= i + 3; end; readln; end.
OUTPUT:
Berikut deret untuk kelipatan 3: 3 6 9 12 15 18 21 24 27 30
3.3. Struktur Perulangan REPEAT -UNTIL
Perulangan REPEAT -UNTIL digunakan untuk mengulang (repeat) statement-statement
atau blok statement sampai (until) kondisi yang diseleksi di Until tidak terpenuhi.
Pada dasarnya, perulangan REPEAT-UNTIL mirip dengan perulangan WHILE-DO.
Pengecekan dalam setiap iterasi apakah nilai variabel counter masih dipenuhi atau tidak
selalu dilakukan pengecekan.
Perbedaan REPEAT-UNTIL dengan WHILE-DO terletak pada proses pemeriksaan kondisi.
Pemeriksaan kondisi pada perulangan REPEAT-UNTIL dilakukan di akhir perulangan,
sedangkan WHILE-DO dilakukan di awal. Format dasar penulisan perulangan REPEAT-
UNTIL dalam bahasa pemrograman PASCAL adalah sebagai berikut:
REPEAT begin (kode program yang ingin diulang disini...) (kode program yang untuk mengubah condition..) end; UNTIL (condition)
56 Lilis Setyowati, ST., MMSI
Karena condition dicek di akhir, setidaknya isi perulangan akan dijalankan minimal 1
kali, meskipun condition tidak dipenuhi. Inilah perbedaan mendasar dari REPEAT-UNTIL
dengan perulangan lain seperti FOR-DO dan WHILE-DO.
Flowchart dari perulangan REPEAT-UNTIL dapat dilihat pada gambar di bawah ini:
Contoh program yang menggunakan perulangan REPEAT-UNTIL dapat dilihat di bawah
ini:
program repeat_until; uses crt; var i: integer;
begin clrscr; i:= 0; repeat begin
writeln('Variabel i sekarang bernilai: ',i); i:= i + 1; end; until i = 4; readln; end.
OUTPUT:
Variabel i sekarang bernilai: 0 Variabel i sekarang bernilai: 1 Variabel i sekarang bernilai: 2 Variabel i sekarang bernilai: 3
Lilis Setyowati, ST., MMSI 57
3.3.1. Membuat Perulangan Lompat dengan REPEAT-UNTIL
Program perulangan lompat dengan menggunakan REPEAT-UNTIL dapat dibuat dengan
memodifikasi bagian counter. Variabel counter yang naik misalnya dari 3, 6, 9, 12, dst
dapat dibuat dengan memodifikasi bagian counter. Contoh program perulangan lompat
menggunakan REPEAT-UNTIL adalah sbb;
program repeat_until;
uses crt; var i: integer;
begin clrscr; i:= 3;
writeln('Berikut deret untuk kelipatan 3: '); repeat begin write(i,' '); i:= i + 3; end;
until i > 20; readln;
end.
OUTPUT:
Berikut deret untuk kelipatan 3: 3 6 9 12 15 18
HARAP DIPERHATIKAN: Hati-hati terhadap Infinity Loop Infinity Loop adalah sebuah perulangan yang tidak pernah berhenti. Ini terjadi karena
variabel kondisi akan selalu bernilai TRUE.
58 Lilis Setyowati, ST., MMSI
Contoh program Infinity Loop:
program while_do; uses crt; var i: integer; begin clrscr; i:= 5; while i < 11 do begin writeln('Variabel i sekarang bernilai: ',i); end;
readln; end.
Jika program di atas dijalankan akan terjadi Ifinity Loop. Ifinity Loop terjadi karena
kondisi while i <= 10 do akan selalu TRUE. Infinity Loop biasanya terjadi karena
kesalahan logika dari programmer, terutama untuk perulangan WHILE-DO dan REPEAT-
UNTIL. Infinity loop dapat dihentikan dengan menekan kombinasi tombol CRTL + C, atau
menutup paksa Free Pascal.
3.4. Perulangan Bersarang
Perulangan bersarang atau dalam bahasa inggris sering disebut sebagai nested loop
adalah perulangan di dalam perulangan.
3.4.1. Perulangan bersarang pada FOR-DO
Format dasar nested loop menggunakan perulangan FOR-DO:
FOR (variabel_counter_1) := (nilai_awal_1) TO (nilai_akhir_1) DO begin
(kode program yang ingin diulang disini...) FOR (variabel_counter_2) := (nilai_awal_2) TO (nilai_akhir_2) DO
Begin (kode program yang ingin diulang disini...) end; end;
Lilis Setyowati, ST., MMSI 59
Contoh Kode Program Pascal untuk Nested Loop menggunakan FOR-DO :
program nested_loop; uses crt; var i,j: integer; begin clrscr; for i := 1 to 5 do begin for j := 1 to 5 do begin write(i*j); write(' '); end; writeln; end; readln; end.
OUTPUT: 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25 3.4.2. Perulangan bersarang pada WHILE-DO
Dalam perulangan bersarang menggunakan WHILE-DO harus dipastikan variabel counter
dinaikkan pada saat yang tepat, jika tidak maka akan terjadi infinty loop.
Berikut kode program nested loop dari contoh sebelumnya, namun menggunakan
perintah WHILE-DO:
program nested_loop; uses crt; var i,j: integer; begin clrscr;
60 Lilis Setyowati, ST., MMSI
i := 1; while i <= 5 do begin j := 1; while j <= 5 do begin write(i * j,' '); j := j + 1; end; writeln; i := i + 1; end; readln; end.
3.4.3. Perulangan bersarang pada REPEAT UNTIL
Sama seperti perulangan bersarang pada WHILE-DO, perulangan bersarang
menggunakan REPEAT-UNTIL juga harus dipastikan variabel counter dinaikkan pada saat
yang tepat, jika tidak maka akan terjadi infinty loop.
Berikut kode program nested loop dari contoh sebelumnya, namun menggunakan
perintah REPEAT-UNTIL:
Var a,b,c : Real; Begin
Writeln(‘========================================’); Writeln(‘ sisi A sisi B Sisi C ‘); Writeln (‘ =======================================’);
a:= 1; Repeat b := 0;
Repeat c:=Sqrt (a*a+b*b);
Writeln (a:6:2, b:9:2, c:9:2); b:=b+5;
Until b>25; a:=a+1;
Until a>3; Writeln(‘ =======================================’); End.
Lilis Setyowati, ST., MMSI 61
3.4.4. Perintah BREAK
Perintah break digunakan untuk berhenti dari perulangan yang sedang berlangsung.
Perulangan yang dimaksud adalah perulangan FOR-DO, WHILE-DO, maupun REPEAT-
UNTIL. Ketiga perulangan tersebut akan dipaksa berhenti saat ketemu perintah break.
Umumnya perintah break disimpan dalam sebuah kondisi IF ELSE. Selama kondisi belum
terpenuhi, perulangan tetap terus berlangsung. Jika kondisi sesuai, maka akan berhenti
(break).
Contoh Kode Program Penggunaan Break Pascal:
program penggunaan_break; uses crt; var i: integer; begin clrscr; for i := 12 downto 10 do begin writeln(i ,' * 3 = ',i*3); if (i = 5) then break; end;
readln; end.
OUTPUT:
12 * 3 = 36 11 * 3 = 33 10 * 3 = 30
CATATAN: Di dalam perulangan di atas terdapat 1 kondisi break: if (i = 5) then break. Perintah ini
tidak akan pernah dijalankan karena secara logika variabel counter i tidak akan pernah
bernilai 5. Hal ini juga dikarenakan perulangan akan berhenti lebih dulu, yakni saat i
bernilai 10.
3.4.5. Perintah CONTINUE
Perintah continue digunakan untuk menghentikan 1 iterasi yang sedang berlangsung.
62 Lilis Setyowati, ST., MMSI
Perulangan tidak berhenti total, yang dihentikan hanya 1 kali perulangan yang sedang
terjadi, kemudian kode program akan melanjutkan perulangan. contoh kode program
pascal untuk penggunaan perintah continue dapat dilihat di bawah ini:
program penggunaan_continue; uses crt; var i: integer; begin clrscr; for i := 2015 to 2020 do begin writeln('Mahasiswa Gunadarma ',i); if (i = 2017) then continue; end; readln; end.
OUTPUT:
Mahasiswa Gunadarma 2015 Mahasiswa Gunadarma 2016 Mahasiswa Gunadarma 2017 Mahasiswa Gunadarma 2018
Mahasiswa Gunadarma 2019 Mahasiswa Gunadarma 2020
CATATAN: Terlihat baris Mahasiswa Gunadarma 2017 tetap tampil, bahkan seluruh baris tampil.
Hal ini terjadi karena pada saat i = 2017, baris writeln('Mahasiswa Gunadarma
',i) sudah dijalankan terlebih dahulu, barulah perintah continue di proses. Akibatnya,
sudah terlambat untuk melompati iterasi saat itu. Solusinya, kita harus jalankan perintah
continue sebelum writeln('Mahasiswa Gunadarma ',i).
Pada perulangan while do, penggunaan perintah continue harus ditambahkan dengan
menaikkan nilai variabel counter. Berikut contohnya:
program penggunaan_break; uses crt; var i: integer; begin clrscr; i:= 0;
Lilis Setyowati, ST., MMSI 63
while i < 10 do begin if (i = 6) then begin i:= i + 1; continue; end; writeln('Variabel i sekarang bernilai: ',i); i:= i + 1; end; readln; end.
OUTPUT: Variabel i sekarang bernilai: 0 Variabel i sekarang bernilai: 1 Variabel i sekarang bernilai: 2 Variabel i sekarang bernilai: 3 Variabel i sekarang bernilai: 4 Variabel i sekarang bernilai: 5 Variabel i sekarang bernilai: 7 Variabel i sekarang bernilai: 8 Variabel i sekarang bernilai: 9 CATATAN:
Perintah untuk menaikkan nilai variabel counter i, yakni baris i:= i + 1 harus
ditambahkan sebelum perintah continue. Jika tidak, akan terjadi infinity loop.
Jika perintah if (i = 6) then continue ditulis tanpa menaikkan nilai variabel counter, perulangan while do akan berputar di i = 6 dan tidak akan bisa lanjut ke i = 7 (karena memang tidak ada perintah untuk menaikkan nilai i ke 7). Baris i:= i + 1 ditempatkan di akhir perulangan, sehingga akan dilompati oleh perintah continue.
Tambahan perintah begin dan end digunakan sebagai block kode program ketika
kondisi if (i = 6) dipenuhi. Jika ini tidak ditulis, perintah continue tidak akan dianggap sebagai bagian dari if (i = 6).
64 Lilis Setyowati, ST., MMSI
4. PERCABANGAN PADA PASCAL
Dalam pembuatan program ada saatnya diperlukan perintah percabangan. Perintah
percabangan diperlukan akan dilakukan aksi ketika sebuah kondisi terpenuhi maka
jalankan kode program. Jika kondisi tidak terpenuhi, jalankan kode program yang lain. Di
dalam Pascal terdapat beberapa struktur kondisi yakni:
4.1. Statement IF
Kondisi percabangan If memiliki beberapa bentuk umum, antara lain:
4.1.1. IF - THEN
Konsep dasar dari percabangan perintah IF THEN dalam bahasa pemrogram Pascal
adalah sebagai berikut:
IF (kondisi) THEN begin
(statement)
end;
Kondisi berperan sebagai penentu dari stuktur percabangan ini. Jika kondisi terpenuhi
(menghasilkan nilai TRUE), kode program akan dijalankan. Jika kondisi tidak terpenuhi
(menghasilkan nilai FALSE), tidak terjadi apa-apa.
Bentuk flowchart dari bentuk IF kondisi THEN statement adalah sebagai berikut,
Lilis Setyowati, ST., MMSI 65
Contoh program yang menggunakan bentuk umum percabangan IF kondisi THEN
statement:
program struktur_if_then; uses crt; var nilai: integer; begin clrscr; nilai := 100; if (nilai > 50) then begin writeln('Nilai "UTS" lebih besar dari 50'); end; writeln(Mahasiswa Teknik Informatika Universitas Gunadarma'); readln; end.
OUTPUT: Nilai “UTS” lebih besar dari 50 Mahasiswa Teknik Informatika Universitas Gunadarma * Saran: Selalu buat blok begin dan end; ketika membuat sebuah percabangan. Hal ini dilakukan untuk memastikan baris mana saja yang termasuk ke dalam blok if. 4.1.2. IF-THEN-ELSE
kondisi IF THEN ELSE adalah tambahan dari kondisi IF THEN. Bagian ELSE digunakan
untuk menjalankan kode program apabila sebuah kondisi tidak terpenuhi.
Konsep dasar dari percabangan IF THEN ELSE dalam bahasa pemrogram Pascal adalah
sebagai berikut:
IF (kondisi) THEN begin (statement 1) end ELSE begin (statement 2) end;
Bentuk flowchart dari bentuk IF kondisi THEN statement ELSE Statement 2 adalah
sebagai berikut,
66 Lilis Setyowati, ST., MMSI
Contoh program:
program struktur_if_then_else; uses crt; var nilai: integer; begin clrscr; nilai := 45; if (nilai > 50) then begin writeln('Nilai "UTS" lebih besar dari 50'); end else begin writeln('Nilai "UTS" lebih kecil dari 50'); end; readln; end.
OUTPUT: Nilai “UTS” lebih kecil dari 50 Catatan: Penutup block sebelum perintah ELSE tidak boleh ada titik koma “ ; ”
4.1.3. IF Bersarang (Nested IF)
IF bersarang atau nested IF adalah penggunaan struktur IF di dalam IF. Kondisi seperti ini
sering digunakan untuk kode program yang sudah cukup kompleks. Banyak variasi
dari nested IF, tergantung kode program yang ingin dirancang. Salah satunya adalah
sebagai berikut:
Lilis Setyowati, ST., MMSI 67
IF (kondisi 1) THEN begin (statement 1) IF (kondisi 1.1) THEN begin (statement 1.1) end; end ELSE begin (statement 2) end;
Keterangan: Sebuah kondisi IF di dalam IF (nested IF). Statement 1.1 hanya akan
dijalankan jika kondisi 1 dan kondisi 1.1 terpenuhi. Jika kondisi 1 tidak terpenuhi,
program akan langsung lompat ke bagian ELSE.
Variasi nested IF berikutnya adalah sebagai berikut:
IF (kondisi 1) THEN begin (statement 1) IF (kondisi 1.1) THEN begin (statement 1.1) IF (kondisi 1.1.1) THEN begin (statement 1.1.1) end; end; end ELSE begin (statement 2) IF (kondisi 2.1) THEN begin (statement 2.1) end; end;
Keterangan: Struktur IF di dalam IF di dalam IF (2 level nested IF). Untuk program di atas
diperlukan kehati-hatian dalam menentukan statement mana yang masuk ke dalam blok
IF.
68 Lilis Setyowati, ST., MMSI
Penulisan indenting (meletakkan statement dengan mendahului penambahan beberapa
spasi di awal) juga akan membantu untuk membedakan statement ini masuk IF yang ini,
dan statement itu masuk ke IF yang itu.
contoh program nested IF:
program struktur_if_then_else_nested; uses crt; var angka:integer; begin clrscr; write('Masukkan sebuah angka: '); readln(angka); if (angka mod 2 = 0) then begin write('Angka yang anda masukkan merupakan bilangan genap '); if (angka > 10) then begin writeln('dan besar dari 10'); end else begin writeln('dan kecil dari 10'); end; end else begin write('Angka yang anda masukkan merupakan bilangan ganjil '); if (angka > 10) then begin writeln('dan besar dari 10'); end else begin writeln('dan kecil dari 10'); end; end; readln; end.
OUTPUT 1: Masukkan sebuah angka : 7 Angka yang anda masukkan merupakan bilangan ganjil dan kecil dari 10 OUTPUT 2: Masukkan sebuah angka : 12 Angka yang anda masukkan merupakan bilangan genap dan besar dari 10
Lilis Setyowati, ST., MMSI 69
4.2. Statement CASE
Struktur percabangan CASE mirip seperti struktur percabangan IF THEN ELSE yang
berulang. Jika di dalam IF THEN ELSE kita memiliki format penulisan seperti berikut:
IF (kondisi1) THEN (statement 1) ELSE IF (kondisi2) THEN (statement 2) ELSE IF (kondisi3) THEN (statement 3)
Maka di struktur CASE, format penulisannya adalah seperti berikut:
CASE (expression) OF kondisi 1 : (statement 1); kondisi 2 : (statement 2); kondisi 3 : (statement 3); end;
Catatan: Expression adalah ‘sesuatu’ yang akan di periksa nilainya. Jika nilai dari
expression ini sama dengan kondisi 1, maka yang dijalankan adalah (kode program 1),
jika sesuai dengan kondisi 2, maka yang akan dijalankan adalah (kode program 2), dst.
Contoh program:
program struktur_case; uses crt; var bulan: integer; begin clrscr; write('Silahkan input angka untuk bulan (1-8): '); readln(bulan); case (bulan) of 1 : writeln('Januari'); 2 : writeln('Februari'); 3 : writeln('Maret'); 4 : writeln('April'); 5 : writeln('Mei'); 6 : writeln('Juni'); 7 : writeln('Juli'); 8 : writeln('Agustus'); end; readln; end.
70 Lilis Setyowati, ST., MMSI
OUTPUT: Silahkan input angka untuk bulan (1-8): 8 Agustus
CASE ELSE Contoh program CASE ELSE :
program struktur_case; uses crt; var grade: string; begin
clrscr; write('Silahkan input grade anda (A-E): '); readln(grade); case (grade) of 'A' : writeln('Sangat Memuaskan'); 'B' : writeln('Memuaskan'); 'C' : writeln('Kurang Baik'); 'D' : writeln('Kurang Baik'); 'E' : writeln('Maaf, anda tidak lolos'); else writeln('Maaf, format yang anda masukkan salah'); writeln('Harap input grade berupa huruf: A, B, C, D, atau E'); end; readln; end.
OUTPUT: Silahkan input grade anda (A-E) : E Maaf, anda tidak lolos OUTPUT 2: Silahkan input grade anda (A-E) : Y Maaf, format yang anda masukkan salah Harap input grade berupa huruf: A, B, C, D, atau E
Lilis Setyowati, ST., MMSI 71
Batasan Struktur CASE:
Struktur CASE menawarkan penulisan yang lebih singkat dan efisien dibandingkan struktur IF THEN, namun kondisi yang bisa dipakai hanya sederhana seperti yang saya contohkan, misalkan apakah sebuah variabel bernilai angka atau string tertentu.
Untuk kondisi yang lebih rumit seperti perbandingan lebih besar ” > ” atau lebih kecil ” <“, atau perbandingan yang melibatkan lebih dari 1 kondisi, kita tidak bisa menggunakan CASE. Kode program untuk menentukan apakah sebuah angka genap atau ganjil, tidak bisa dikonversi ke dalam CASE.
Dalam pemrograman yang “sebenarnya”, kita juga lebih sering menggunakan IF daripada CASE. Tapi untuk situasi yang melibatkan banyak perulangan sederhana, struktur CASE lebih rapi dan singkat daripada IF.
Perbedaan CASE dan IF THEN
Jika statement if menyeleksi suatu kondisi dan terpenuhi, setelah memproses statement dalam lingkungan yang terpenuhi tersebut, proses penyeleksian masih dilakukan terhadap statement if berikutnya yang lain. Sedangkan pada struktur CASE-OF bila salah satu kondisi terpenuhi dan statement tersebut telah diproses, selanjutnya statement-statement yang lainnya dalam lingkungan CASE tidak akan diseleksi lagi.
Daftar case label dapat berupa sebuah konstanta, atau range dari konstanta yang bukan bertipe real.
72 Lilis Setyowati, ST., MMSI
5. PROCEDURE PADA PASCAL
Procedure adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-
program (modul program) yang merupakan sebuah program kecil untuk memproses
sebagian dari pekerjaan program utama.
Procedure diawali dengan kata cadangan Procedure di dalam bagian deklarasi
procedure. Procedure dipanggil dan digunakan di dalam blok program yang lainnya
dengan menyebutkan judul procedurenya.
Procedure banyak digunakan pada program yang terstruktur. Hal ini disebabkan kerena:
1. Merupakan penerapan konsep program modular, yaitu memecah-mecah
program yang rumit menjadi program-program bagian yang lebih sederhana
dalam bentuk procedure-procedure.
2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja
dalam procedure dan dapat dipanggil atau dipergunakan sewaktu-waktu bila
diperlukan.
Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block.
Perbedaan bentuk procedure dengan program hanyalah pada bagian header-nya saja.
Bentuk Umum header suatu procedure adalah sbb:
PROCEDURE nama; Atau
PROCEDURE nama (formal parameter : jenis);
Jika procedure digunakan dalam suatu program, maka procedure tersebut harus
dituliskan pada bagian deklarasi.
Contoh 1:
Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara
tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut :
PROCEDURE maksimum; VAR max : integer; BEGIN IF a > b THEN max := a ELSE max := b; IF c > max THEN max := c; WRITELN(max); END.
Lilis Setyowati, ST., MMSI 73
Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk
penulisan sebagai berikut :
Program contoh_1; uses crt; var a,b,c : integer; procedure maksimum; var max : integer;
begin IF a > b then max := a else max := b;
IF c > max THEN max := c; Writeln (max); end;
begin
readln (a, b, c); maksimum
end.
5.1. Procedure Dengan Parameter
Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat
digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat
digunakan pada modul atau unit program yang lainnya. Contoh procedure dengan
parameter dapat dilihat di bawah ini:
procedure tanya_hitung; uses crt; var x,y : real;
begin write ('nilai x ?'); readln (x); y := x*x; writeln ('Nilai Y = ', y:6:2);
end; begin tanya_hitung; end.
OUTPUT: Nilai X ? 5 Nilai Y = 25.00
Header program
utama
Deklarasi program
utama
Statement program
utama
74 Lilis Setyowati, ST., MMSI
CONTOH 2:
procedure tanya_hitung; uses crt; var x,y : real; begin write ('nilai x ?'); readln (x); y := x*x; end; begin tanya_hitung; writeln ('Nilai Y = ', y:6:2); end.
OUTPUT: Error 31: Unknown identifier Solusi agar output tidak error !!!
Pastikan nilai variabel dapat digunakan di modul lainnya, dengan cara :
5.1.1. Dibuat bersifat global: Harus dideklarasikan di atas modul yang
menggunakannya.
Pada contoh di bawah ini, variabel A dab B bersifat global untuk procedure kedua, ketiga dan utama, tetapi tidak bersifat global untuk procedure pertama, sehingga procedure pertama tidak dapat menggunakan variabel-variabel tersebut.
procedure pertama; uses crt; begin ...........; ...........; end; (*akhir proceduree pertama....*) var A,B : char; procedure kedua; begin ...........; ...........; end;(*akhir proceduree kedua....*) procedure ketiga; begin ...........; ...........; end; (*akhir proceduree ketiga....*) begin ...........; ...........; end. (*akhir dari modul utama*)
Lilis Setyowati, ST., MMSI 75
Berbeda dengan contoh sebelumnya, pada contoh ini, variabel A dan B bersifat global.
Variabel berlaku untuk semua modul.
var A,B : real;
procedure pertama; begin ...........; ...........; end; (*akhir proceduree pertama....*) procedure kedua; begin ...........; ...........; end;(*akhir proceduree kedua....*) procedure ketiga; begin ...........; ...........; end; (*akhir proceduree ketiga....*) begin ...........; ...........; end. (*akhir dari modul utama*)
5.1.2. Cara kedua adalah dengan mengirimkan variabel sebagai parameter ke modul
yang membutuhkannya.
Parameter yang dikirim dari modul utama ke modul procedure disebut actual
parameter, dan parameter yang ada dan dituliskan pada judul procedure disebut formal
parameter. Ada beberapa cara pengiriman parameter, yaitu:
5.1.2.1. Pengiriman parameter secara nilai
parameter yang dikirimkan secara nilai berarti bahwa parameter formal yang ada di
procedure akan berisi nilai yang dikiirmkan , yang kemudian bersifat lokal di procedure.
contoh :
procedure konversi; begin f := (5/9) * c + 32 writeln (c,f); end;
Keterangan : f dan c variabel global, c sebagai input dan f sebagai output.
76 Lilis Setyowati, ST., MMSI
Procedure di atas dapat dipanggil dengan variabel yang berbeda, tetapi penulisannya
harus diubah dengan menggunakan parameter sbb:
procedure konversi (var f: real; c: real; begin f := (5/9) * c + 32 (disebut formal parameter) writeln (c,f); end;
Selanjutnya procedure di atas dapat dipanggil dengan parameter lain, misalnya: konversi (x,y); (disebut actual parameter)
Pada eksekusinya, x akan menggantikan c dan y akan menggantikan f. x dan y dapat
berupa : konstanta, variabel, procedure, atau fungsi.
Contoh: procedure Hitung (A,B : integer); var C : integer; begin C := A + B; writeln('Nilai C = ', C); end; var X,Y : integer; begin write ('Nilai X ? "); readln(X); write ('Nilai Y ? "); readln(Y); Hitung(X,Y); end. OUTPUT: Nilai X ? 6 Nilai Y ? 4 Nilai C = 10
Keterangan:
Procedure dimulai dengan deklarasi procedure dengan judul procedure Hitung. Variable A dan B merupakan parameter formal dengan tipe parameter integer
Variable local yang hanya dipergunakan di procedure dan tidak termasuk parameter formal (parameter nilai), harus didefinisikan sendiri, yaitu : variable C.
Hubungan antara parameter formal di procedure dengan parameter nyata di
modul utama adalah : nilai parameter nyata X dan Y di modul utama dikirimkan
ke parameter formal A dan B di procedure. Dengan demikian nilai parameter A
Lilis Setyowati, ST., MMSI 77
dan B di procedure akan berisi nilai yang sama dengan parameter X dan Y di
modul utama.
5.1.2.2. Pengiriman Parameter Secara Acuan
Jika pengiriman parameter dilakukan secara acuan (by reference), maka perubahan-
perubahan yang terjadi pada nilai parameter formal di procedure akan mempengaruhi
nilai actual parameter. Parameter-parameter ini disebut dengan variable parameter
serta dideklarasikan di deklarasi procedure dengan menggunakan kata cadangan Var,
seperti tampak di bawah ini:
Procedure hitung(var A,B,C : integer);
Contoh program:
Procedure Hitung ( var A, B, C : integer ) ; Begin C : = A + B ; End ; Var X, Y, Z : integer ; Begin X : = 2 ; Y : = 3 ; Hitung ( X, Y, Z ) ; Writeln (‘ X = ‘, X , ‘ Y = ‘ , Y, ‘ Z = ‘ , Z ) ; End.
Output: X = 2 Y = 3 Z = 5
Keterangan :
Pengiriman parameter secara acuan merupakan pengiriman dua arah, bolak-balik,
sehingga perubahan nilai di parameter formal akan mempengaruhi nilai parameter
nyata juga. Pada contoh, nilai parameter nyata Z akan mengikuti perubahan nilai dari
parameter formal C.
5.1.2.3. Pengiriman Parameter Secara Nilai Sebagai Acuan
Pengiriman parameter dapat dicampur sebagian secara nilai dan sebagian secara acuan
dalam suatu procedure. Parameter yang hanya dibutuhkan pada procedure saja dapat
dikirimkan secara nilai dan yang ingin dikirimkan balik dapat dilakukan secara acuan,
sebagai berikut :
PROCEDURE Hitung ( A, B : integer ; Var C : integer ) ;
78 Lilis Setyowati, ST., MMSI
Contoh program :
Procedure Hitung ( A, B : integer ; Var C ; integer ) ; Begin C : = A + B ; End ; Var X, Y, Z : integer ; Begin X : = 2 ; Y : = 3 ; Hitung ( X, Y, Z ) ; Writeln ( ‘ X = ‘, X , ‘ Y = ‘, Y , ‘ Z = ‘, Z ) ; End.
OUTPUT: X = 2 Y = 3 Z = 5
5.2. Procedure Memanggil Procedure Yang Lain
Sebuah procedure dapat digunakan untuk memanggil procedure yang lainnya. Berikut
contoh program pemanggilan procedure menggunakan procedure:
Procedure Pro1 ( X1 : integer ); Begin
Writeln (‘Nilai X = ‘, X1, ‘ada di procedure Pro1’); End;
Procedure Pro2 (X2 : integer ); Begin
Writeln (‘Nilai X = ‘, X2, ‘ada diprocedure Pro2’); Pro1 (X2);
End; Var
X : integer ; Begin
X : = 5; Pro2 ( X );
End.
OUTPUT: Nilai X = 5 ada diprocedure Pro2 Nilai X = 5 ada diprocedure Pro1 5.3. Procedure Tersarang
Procedure tersarang merupakan sebuah keadaan dimana procedure berada di dalam
procedure lain. Adalah procedure yang berada didalam procedure yang lainnya. Bentuk
umum pembuatan procedure di dalam procedure adalah sebagai berikut:
Lilis Setyowati, ST., MMSI 79
Program Procedure
Procedure Begin
…… ……
End ; Begin
… …
End ; Begin
… …
end. 5.4. Procedure Memanggil Dirinya Sendiri
Procedure memanggil dirinya sendiri merupakan procedure yang memanggil atau
menggunakan procedure itu juga. Proses dari suatu program bagian yang memanggil
dirinya sendiri dikenal dengan istilah recursion. Tidak semua bahasa menyediakan
kemampuan untuk melakukan proses recursion. Pascal merupakan salah satu Bahasa
pemrograman yang dapat melakukan proses recursion. Walaupun proses ini merupakan
algoritma yang baik, tetapi membutuhkan banyak memori, karena setiap kali program
bagian dipanggil oleh dirinya sendiri, maka dibutuhkan sejumlah ruang memori
tambahan. Contoh:
Var I : integer ; Procedure Rekursi ; Begin
Writeln ( ‘Hallo saya Pascal ‘ ) ; I : = I + 1 ; If I < 10 Then Rekursi ;
End ; Begin
I : = 1 ; Rekursi ;
End.
5.5. Acuan Forward
Acuan forward digunakan untuk mendeklarasikan di muka judul procedure terpisah dari
bloknya. Judul procedure yang berisi parameter terpisah ini merupakan judul yang
semestinya dan di deklarasikan dengan menambahkan kata cadangan “ Forward ”. Blok
80 Lilis Setyowati, ST., MMSI
procedure ini letaknya terpisah dari judulnya, juga diawali dengan judul procedure,
tetapi hanya mencantumkan judul atau nama procedurenya saja, tanpa mencantumkan
parameter formalnya. Contoh program :
Procedure Pro1 (Var I : integer ) ; Forward ; Procedure Pro2 (Var I : integer ) ; Begin
Writeln ( ‘ Procedure PRO’, I ) ; End ; Procedure Pro1 ; Begin
Writeln ( ‘Procedure PRO’, I ) ; End ; Var
I : integer ; Begin
I : = 1 ; Pro1 ( I ) ; I : = 2 ; Pro2 ( I ) ;
End. Output : Procedure PRO1 Procedure PRO2
5.6. Procedure Standar
5.6.1. Procedure Standar EXIT
Procedure standar EXIT digunakan untuk keluar dari suatu blok. Bila diletakkan pada
program bagian, prosedur standar exit akan menyebabkan proses di program bagian
berhenti dan proses kembali ke blok program yang memanggilnya. Bila berada di
program utama, menyebabkan proses program berhenti.
5.6.2. Procedur Standar Halt
Digunakan untuk menghentikan proses program baik di program bagian maupun
program utama.
5.6.3. Procedur Standar Move
Procedure standar MOVE digunakan untuk menyalinkan suatu blok sebanyak count byte
memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
Bentuk umum procedure standar move adalah sebagai berikut:
Lilis Setyowati, ST., MMSI 81
Move ( var source, dest; count : word )
Contoh program :
Var Sumber, Tujuan : string [5] ; Sejumlah : word ;
Begin Sumber : = ‘ABCDE’ ; Tujuan : = ‘FGHIJ’ ; Sejumlah : = 4 ; Move (Sumber, Tujuan, Sejumlah ) ; Writeln (Sumber : 7, Tujuan : 7 ) ;
End.
OUTPUT: ABCDE ABCIJ
5.6.4. Procedur Standar FillChar
Procedure standar FillChar digunakan untuk mengisi sejumlah byte nilai ke dalam suatu
variable, sbb :
FillChar (x ; count : word ; ch )
X adalah variable yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal ch
sebanyak count byte.
82 Lilis Setyowati, ST., MMSI
6. FUNGSI PADA PASCAL
Blok fungsi hampir sama dengan blok prosedur, hanya saja fungsi harus dideklarasikan
dengan tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi.
Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr, succ dan
sebagainya. Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function.
Sedangkan function yang akan bicarakan disini adalah fungsi yang kita buat sendiri.
Berbeda dengan procedure, function merupakan modul program yang menghasilkan
suatu kuantitas. Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis
data dari kuantitas yang dihasilkan.Secara umum bentuk header suatu function adalah :
FUNCTION nama : jenis hasil; ATAU
FUNCTION nama (formal parameter : jenis ) : jenis_hasil;
Blok Fungsi diawali dengan kata cadangan Begin dan diakhiri dengan kata cadangan End
dan titik koma.
6.1. Perbedaan Fungsi Dengan Prosedur
1. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada
prosedur pada parameter yang dikirimkan secara acuan). Pada contoh, nama fungsi
tersebut adalah Hitung dan nilai yang dikirim balik berada pada nama fungsi
tersebut. Sehingga nama fungsi ini harus digunakan untuk menampung hasil yang
akan dikirimkan dari fungsi, sebagai berikut :
Hitung := A + B; Nama fungsi yang berisi nilai yang akan dikirimkan
2. Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat
langsung digunakan untuk dicetak hasilnya, sebagai berikut :
Writeln(X, ‘+’ ,Y, ‘=‘ ,Hitung(X,Y));
Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel
yang lainnya, sebagai berikut :
Hasil := Hitung(X,Y);
Nama fungsi yang langsung digunakan untuk ditampilkan hasilnya
Lilis Setyowati, ST., MMSI 83
Writeln(X, ‘+’ ,Y, ‘+’ ,Hasil); Sedang pada prosedur, nama prosedur tersebut tidak dapat digunakan langsung, yang
dapat langsung digunakan adalah parameternya yang mengandung nilai balik.
6.2. Fungsi Tanpa Parameter
Suatu Fungsi yang tanpa menggunakan parameter berarti nilai balik yang akan dihasilkan
merupakan nilai yang sudah pasti. Pada Fungsi yang tidak mempunyai parameter, maka
hasil tersebut tidak dapat diatur dari modul yang menggunakannya, karena tidak ada
parameter yang dikirimkan.
Contoh:
Contoh :
Program Contoh1; Type Huruf = String; Function Garis : Huruf; Begin Garis := ‘-----------‘; End; Begin Writeln(Garis); Writeln(‘Pascal’); Writeln(Garis); End.
Output: ----------- Pascal ----------- Atau dapat juga didefinisikan sebagai suatu konstanta dibagian definisi konstanta,
sebagai berikut :
Contoh :
Program Contoh2; Const Garis:=’---------‘; Begin Writeln(Garis); Writeln(‘Pascal’); Writeln(Garis); End.
84 Lilis Setyowati, ST., MMSI
Output: ----------- Pascal ----------- 6.3. Parameter Dalam Fungsi
Parameter dalam fungsi dapat dikirimkan secara Nilai (By Value) atau secara Acuan (By
Reference). Penulisan judul Fungsi yang menggunakan parameter dengan pengiriman
sevara Nilai adalah tampak sebagai berikut :
Function Hitung(A,B : Integer): Integer;
Contoh : Suatu Fungsi yang akan menghasilkan nilai terbesar dari 2 buah Nilai Real.
Function Terbesar(X,Y:Real):Real; Begin If X>Y then Terbesar :=X Else Terbesar :=Y; End; Var Nilai1,Nilai2 :Real; Begin Write(‘Nilai Pertama ?’);Readln(Nilai1); Write(‘Nilai Kedua ?’); Readln(Nilai2); Writeln(‘Nilai Terbesar adalah’ , Terbesar(Nilai1,Nilai2):9:3); End.
Sedang Penulisan judul Fungsi yang menggunakan parameter dengan pengiriman secara
Acuan adalah dengan menambahkan katan cadangan Var sebagai berikut :
Function Hitung(Var A,B : Integer):Integer;
Pengiriman parameter dengan secara Acuan akan mengakibatkan perubahan nilai
parameter di Fungsi juga merubah nilai parameter dimodul yang mengirimkannya.
Contoh :
Program Contoh3:
Function Hitung(Var A,B,C : Integer):Integer; Begin Hitung :=A+B; C :=A*B; End; Var X,Y,Z : Integer;
Lilis Setyowati, ST., MMSI 85
Begin Write(‘Nilai X ?’); Readln(X); Write(‘Nilai Y?’); Readln(Y); Writeln; Writeln(X,’+’,Y, ‘=’,Hitung(X,Y,Z); Writeln(X,’*’,Y, ‘=’,Z); End. Output:
Nilai X ? 2 Nilai Y ? 3 2 + 3 = 5 2 * 3 = 6 6.4. Fungsi Pangkat
Pascal tidak menyediakan Fungsi untuk perpangkatan tinggi, yang ada hanyalah SQR,
yaitu untuk pemangkatan kuadrat. Bila akan melakukan perpangkatan lebih dari pangkat
2, maka harus dibuat program tersendiri.
Contoh :
Program Contoh4; Function PangkatI(X:Real; Y:Integer):Real; Var Pangkat :=1; For I := 1 to Y do Pangkat := Pangkat * X; PangkatI := Pangkat; End; Var A: Real; B : Integer; Begin Write(‘Nilai akan dipangkatkan ?’); Readln(A); Write(‘Dipangkatkan dengan ?’); Readln(B); Writeln(A:9:3, ‘Pangkat’ ,B, ‘adalah’,PangkatI(A,B):9:3); End. Output : Nilai akan dipangkatkan ? 1.5 Dipangkatkan dengan ? 3 1.500 pangkat 3 adalah 3.375
86 Lilis Setyowati, ST., MMSI
6.5. Fungsi Rekursif
Suatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. Artinya, fungsi
atau prosedur tersebut dapat memanggil dirinya sendiri. Berikut ini sebuah contoh
fungsi dan prosedur yang rekursif.
function faktorial (nilai : integer) : integer; begin if nilai <= 0 then faktorial := 1; else faktorial := nilai * faktorial (nilai-1) end; Var N : integer; Begin Write(‘Berapa faktorial ?’ ); Readln(N); Writeln(N, ‘faktorial = ‘,faktorial(N):9:0); End.
6.6. Fungsi Standar
Pada Bahasa pemrograman pascal terdapat beberapa fungsi standar yang dapat
digunakan, yaitu:
6.6.1. Fungsi Standar Aritmatika
a) Fungsi standar ABS : Digunakan untuk memutlakkan suatu nilai yang ditunjukkan
oleh argumen x.
Bentuk umum : ABS(x);
Contoh :
Begin X:=-2.3; Write(Nilai X = ,X, Nilai mutlaknya = ,Abs(X):3:1); End.
b) Fungsi standar EXP : Digunakan untuk menghitung nilai pangkat dari bilangan e
yaitu sebesar ex. Hasilnya berupa nilai real.
Bentuk Umum : EXP(x:):real;
c) Fungsi standar LN : Digunakan untuk menghitung nilai logaritma alam (natural
logarithm) dari nilai x. Hasilnya berupa nilai real.
Bentuk umum : LN(x):real;
Lilis Setyowati, ST., MMSI 87
d) Fungsi standar INT : Digunakan untuk menghasilkan nilai integer dari x. hasil dari
fungsi adalah tipe real dengan nilai yang berupa pembulatan ke bawah (nilai
pecahan dibuang) dari nilai x.
Bentuk umum : INT(x:real):real;
Contoh :
Begin X:=9.99; Write(‘Nilai yang akan dibulatkan = ‘ ,X); Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2); End. Hasil : Nilai yang akan dibulatkan = 9.99 Nilai pembulatannya = 9.00
e) Fungsi standar FRAC : Digunakan untuk mendapatkan nilai pecahan dari argumen x.
Argumen x dapat bernilai real maupun integer dan hasil dari fungsi adalah real.
Bentuk umum : FRAC(x:):real;
Contoh :
Begin X:=9.99; Write(‘Nilai X = ‘,X, ‘Nilai pecahannya = ‘,Frac(X):4:3); End. Hasilnya : Nilai X = 9.99 Nilai pecahannya = 0.990
f) Fungsi standar SQR : Digunakan untuk menghitung nilai pangkat kuadrat dari
argumen X. Argumen X dapat berbentuk tipe Real atau Integer dan hasil Fungsinya
akan sama dengan tipe argumennya.
Bentuk umum : SQR(x);
Contoh :
Program Misal5; Var X : Real; Begin Write(‘Nilai yang akan dikuadratkan ?’); Readln(X); Writeln(‘Nilai kuadratnya =’, SQR(X):9:2); End.
88 Lilis Setyowati, ST., MMSI
Output : Nilai yang akan dikuadratkan ? 5 Nilai kuadratnya = 25.00
g) Fungsi standar SQRT : Digunakan untuk menghitung nilai akar dari argumen X.
Argumen X dapat berbentuk tipe Real atau Integer dan hasil dari Fungsinya adalah
Real.
Bentuk umum : SQRT(x) : real;
Contoh :
Program Misal6; Var A,B,C : Real; Begin Write(‘Panjang Sisi Tegak ?’);Readln(A); Write(‘Panjang Sisi Datar ?’); Readln(B); C := SQRT(SQR(A) + SQR(B)); Writeln(‘Panjang Sisi Miring = ‘,C:9:2); End.
Output :
Panjang Sisi Tegak ? 30 Panjang Sisi Datar ?40 Panjang Sisi Miring = 50.00
6.6.2. Fungsi Standar Transfer
Digunakan untuk merubah suatu nilai ke bentuk nilai yang lain. Fungsi-fungsi standar
transfer yang tersedia, yaitu Fungsi Standar Chr, Ord, Round dan Trunc.
a) Fungsi Standar CHR : Digunakan untuk merubah nilai dari Byte X ke bentuk karakter
yang sesuai dengan kode ASCII nya.
Bentuk Umum : Chr(X:Byte):Char;
Contoh : Program Misal7; Var X : Byte; Begin Write(‘Nilai kode ASCII (0-255) ?; Readln(X); Writeln(‘Karakter kode ASCII ini adalah : ‘, Chr(X)); End.
Lilis Setyowati, ST., MMSI 89
Output : Nilai kode ASCII (0-255) ? 66 Karakter kode ASCII ini adalah : B b) Fungsi Standar ORD : Digunakan untuk merubah nilai X ke bentuk nilai Longint yang
sesuai dengan kode ASCIInya.
Bentuk Umum : Ord(X):Longint;
Contoh :
Program Misal8; Var Karakter : Char; Begin ‘Write(‘Karakter ?’); Readln(Karakter); Writeln(Karakter,’adalah kode ASCII : ‘,Ord(Karakter)); End. Output :
Karakter ? B B adalah kode ASCII : 66 c) Fungsi Standar ROUND : Digunakan untuk membulatkan nilai dari Real X ke nilai
Longint yang terdekat. Bila nilai pecahan sama dengan taua lebih besar dari 0.5 akan
dibulatkan ke atas, sedang bila nilai pecahan lebih kecil dari 0.5 akan dibulatkan ke
bawah.
Bentuk Umum : Round(X:Real):Longint;
Contoh :
Program Misal9; Begin
Writeln(’10 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(10/3)); Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(20/3);
End.
Output :
10 dibagi 3 hasil pembulatan terdekat adalah 3 20 dibagi 3 hasil pembulatan terdekat adalah 6 d) Fungsi Standar TRUNC : Digunakan untuk membulatkan nilai Real X ke nilai Longint
terkecil atau dengan kata lain membulatkan ke bawah.
Bentuk Umum : Trunc(X:Real):Longint;
90 Lilis Setyowati, ST., MMSI
Contoh :
Program Misal10; Begin Writeln(’10 dibagi 3 hasil pembulatan ke bawah adalah ‘,Trunc(10/3)); Writeln(’20 dibagi 3 hasil pembulatan ke bawah adalah ‘,Trunc(20/3));
End. Output :
10 dibagi 3 hasil pembulatan ke bawah adalah 3 20 dibagi 3 hasil pembulatan ke bawah adalah 6
6.6.3. Fungsi Standar Lainnya
Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas antara lain:
a) Fungsi standar Random : Digunakan untuk menghasilkan angka random berkisar
dari nilai lebih besar atau sama dengan nol dan lebih kecil dari satu. Bila range tidak
disebutkan, hasil dari fungsi ini adalah real, bila range disebutkan, hasilnya adalah
word.
Bentuk umum : Random [(range :word)];
b) Fungsi standar SizeOf : Digunakan untuk menunjukkan besarnya byte yang digunakan
oleh suatu variabel x, hasilnya berupa nilai word.
Bentuk umum : SizeOf(x):word;
Fungsi standar UPCASE : Digunakan untuk merubah argumen suatu karakter yang
ditunjukkan oleh Ch menjadi bentuk karakter huruf besar (upper case).
Bentuk umum : UpCase(Ch:char):char;
Lilis Setyowati, ST., MMSI 91
7. ARRAY DAN RECORD PADA PASCAL
7.1. ARRAY
Larik / array adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen
yang mempunyai tipe yang sama. Daripada membuat 10 variabel yang terdiri dari
nama1, nama2, nama3, dst, akan lebih efisien jika variabel nama ini disimpan ke dalam
array.
Contoh pembuatan array:
program tipe_array; uses crt; var nilai1, nilai2, nilai3, nilai4: integer; begin clrscr; nilai1:= 23; nilai2:= 13; nilai3:= 98; nilai4:= 106; writeln('nilai1: ',nilai1); writeln('nilai2: ',nilai2); writeln('nilai3: ',nilai3); writeln('nilai4: ',nilai4); readln; end.
Untuk membuat tipe data array di pascal, kita harus menentukan seberapa banyak
element array yang ingin dibuat. Element adalah sebutan untuk ‘anggota’ / isi dari array.
Sebagai contoh, untuk membuat 10 element array bertipe integer dapat dilihat pada
kode berikut:
var nilai: array[0..9] of integer; Contoh di atas merupakan contoh array satu (1) dimensi. Array satu dimensi merupakan
array yang setiap elementnya hanya terdiri dari satu ‘lapis’. Setiap element array
dibahas dengan 1 index, seperti nilai[0], nilai[1] dan nilai[2].
7.1.1. Deklarasi Array
Array yang akan dipergunakan harus di deklarasikan terlebih dahulu. Deklarasi dari Array
diawali dengan kata cadangan Array diikuti oleh tipe index yang diletakkan diantara
92 Lilis Setyowati, ST., MMSI
tanda “[ ]” diikuti lagi oleh kata cadangan of dan tipe arraynya. Array dapat bertipe
sederhana byte, word, integer, real, boolean, char, string dan tipe scalar atau subrange.
7.1.1.1. Deklarasi Tipe Index Subrange Integer
Array yang akan dipergunakan harus di deklarasikan terlebih dahulu. Deklarasi dari Array
diawali dengan kata cadangan Array diikuti oleh tipe index yang diletakkan diantara
tanda “ [ ] ” diikuti lagi oleh kata cadangan of dan tipe arraynya.
Array dapat bertipe sederhana byte, word, integer, real, boolean, char, string dan tipe
scalar atau subrange.
Contoh:
Var X : array [ 1..100 ] of integer ;
Array X dideklarasikan sebagai array tipe integer dengan jumlah elemen maksimum 100
elemen, dimana nilai elemen array ini harus berisi nilai integer. Misalkan :
X [1] : = 18 ;
X [2] : = 5 ;
Bila nilai elemen ke-1 dari array X akan ditampilkan, dapat dipergunakan perintah :
Writeln ( x[1] ) ;
7.1.1.2. Deklarasi Tipe Index Subrange Integer
Deklarasi tipe index subrange integer adalah sebagai berikut :
Var NilaiHuruf : array [1..5] of char ;
Nilai [1..5] inilah yang dimaksud dengan index subrange integer. Index dari array diatas
dapat dideklarasikan terlebih dahulu di bagian deklarasi tipe :
Type Jangkauan = 1..5 ; {tipe subrange integer}
Var NilaiHuruf : array [Jangkauan] of char ;
Begin … end.
7.1.1.3. Deklarasi Tipe Index Subrange Byte
Kalau index dari array tidak sampai dengan 255, maka index dari array ini dapat
dideklarasikan dengan tipe byte.
Lilis Setyowati, ST., MMSI 93
Var X : array [0..255] of real ;
Karen anilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini dapat
ditulis :
Var X : array [byte] of real ;
7.1.1.4. Deklarasi Tipe Index Subrange Word
Jika jangkauan index dari 0 sampai 65525, maka index dari array dapat dideklarasikan
dengan tipe word.
Var X : array [byte] of word ;
7.1.1.5. Deklarasi Tipe Index Subrange Boolean
Index array yang bertipe Boolean, hanya mempunyai maksimum 2 buah elemen saja.
Type Keterangan = string [11] ;
Var X : array [Boolean] of keterangan ;
7.1.1.6. Deklarasi Tipe Index Subrange Char
Tipe char adalah tipe subrange yang mempunyai nilai sebanyak 256 buah (0 – 255)
sesuai dengan urutan kode ASCII. Berikut pendeklarasian index subrange char.
Var X : array [char] of integer ;
7.1.1.7. Deklarasi Tipe Index Skalar
Index dari array dapat berupa tipe scalar atau enumerated. Berikut contoh pembuatan
array menggunakan tipe indeks scalar.
Contoh program:
Var Jumlah : array [(Jan, Peb, Mar)] of integer ;
Begin Jumlah[Jan] : = 125 ; Jumlah{Peb] : = 75 ; Jumlah[Mar] : = 18 ; Writeln ( ‘Jumlah untuk bulan maret = ‘, Jumlah{Mar});
End.
94 Lilis Setyowati, ST., MMSI
Output program : Jumlah untuk bulan Maret = 18 Contoh diatas dapat ditulis : Type Bulan = (Jan, Peb, Mar) ; Var Jumlah : array [Bulan] of integer ;
7.1.1.8. Deklarasi konstanta Array
Array tidak hanya dapat berupa suatu variable yang dideklarasikan di bagian deklarasi
variable, tetapi juga dapat berupa suatu konstanta yang dideklarasikan di bagian
deklarasi konstanta.
Contoh program : Const
X : array [1..5] of integer = (6, 25, 375, 5, 2) ; Var
I : word ; Begin
For I : = 1 to 5 do Writeln ( ‘Nilai konstanta array ke ‘, I, ‘=’,
X[I] ) ; End.
Output program : Nilai Konstanta array ke 1 = 6 Nilai Konstanta array ke 2 = 25 Nilai Konstanta array ke 3 = 375 Nilai Konstanta array ke 4 = 5 Nilai Konstanta array ke 5 = 2 7.1.2. String Sebagai Array Tipe Char
String dapat dianggap sebagai suatu array tipe char dengan index dari 0 sampai dengan
panjang dari string yang di definisikan. Contoh program :
Var I : word ; Nama : string [255] ;
Begin Write ( ‘Nama Anda ?’ ) ; readln ( Nama ) ; Writeln ; Writeln ( ‘Nama Anda kalau dibaca terbalik adalah : ‘ ); For I : = ord (Nama [0] ) down to 1 do Write (Nama [I] ) ;
End.
Lilis Setyowati, ST., MMSI 95
Output program : Nama Anda ? Alesha Nama Anda kalau dibaca terbalik adalah : ahselA 7.1.3. Parameter Array
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai atau secara
acuan ke prosedur atau ke fungsi. Prosedur yang menggunakan parameter berupa array
harus dideklarasikan di dalam judul prosedur yang menyebutkan parameternya bertipe
array.
Contoh program :
Type Array = array [1..50, 1..50] of real ;
Var I, J, K : byte ; Procedure inverse (Var X: Array ; N : byte ) ; ….
Begin …. …
end. 7.1.4. Array Dimensi Banyak
Array dapat juga berdimensi lebih dari satu yang disebut dengan array dimensi banyak,
yang dapat berdimensi dua, dimensi tiga dan seterusnya. Array dimensi 2 mewakili suatu
bentuk table atau matrik, yaitu index yang pertama dapat menunjukkan baris dan index
kedua dapat menunjukkan kolom dari table atau metric. Bentuk Umum penulisan array
dimensi banyak :
Nama_array = array [tipe index1] of array [tipe index2] of tipe array
Atau Nama_array = array [tipe index1, tipe index2] of tipe array
Contoh program :
Var Tabel : array [1..3, 1..2] of byte ; I, J : byte ;
Begin Tabel[1,1] : = 5 ; Tabel[1,2] : = 25 ; Tabel[2,1] : = 200 ; Tabel[2,2] : = 22 ;
96 Lilis Setyowati, ST., MMSI
Tabel[3,1] : = 75 ; Tabel[3,2] : = 50 ; For I : = 1 to 3 do
Begin For J : = 1 to 2 do Write ( table [I,J] : 10 ) ; Writeln ;
End ; End.
Output program : 5 25 200 22 75 50 7.1.5. Dynamic Array Pascal
Dynamic array adalah tipe array yang jumlah element-nya belum ditentukan (masih nol).
Contoh penulisan dynamic Array adalah sebagai berikut:
var nilai: array of integer; kata: array of string[20];
Pada contoh dynamic array jumlah element akan ditentukan menggunakan fungsi
setlength() di bagian kode program utama. Sebagai contoh, jika variabel ‘nilai’ memiliki
10 element, maka perintah ditulis dengan setlength(nilai, 10). Contoh program
dynamic array pada array dua dimensi:
program tipe_array; uses crt; var nilai: array of array of integer; begin clrscr; setlength(nilai,4,4); nilai[0,0]:= 34; nilai[2,3]:= 99; nilai[3,0]:= 15; writeln('nilai [0,0]: ',nilai[0,0]); writeln('nilai [2,3]: ',nilai[2,3]); writeln('nilai [3,0]: ',nilai[3,0]); readln; end.
Lilis Setyowati, ST., MMSI 97
OUTPUT:
nilai [0, 0] : 34 nilai [2, 3] : 99 nilai [3, 0] : 15 7.2. RECORD
Tipe data Record adalah tipe data khusus. Tipe data record memiliki komponennya yang
terdiri dari berbagai jenis tipe data lain. Sebuah record berisi beberapa variabel lain yang
‘dipaketkan’. Konsep struktur data seperti ini sedikit mirip dengan konsep object dalam
bahasa pemrograman modern (walaupun di dalam pascal juga terdapat konsep tentang
object).
Record juga mirip dengan array, dimana sebuah variabel yang berisi berbagai element
dapat dibuat. Perbedaannya dengan array, record bisa menampung berbagai jenis tipe
data, tidak hanya 1 tipe data seperti array.
Untuk membuat record di dalam pascal, dapat dideklarasikan terlebih dahulu di bagian
type atau di bagian var. Jika digunakan di dalam bagian var, cara penulisannya adalah
sebagai berikut:
var nama_record: record variabel: tipe_data; variabel: tipe_data; variabel: tipe_data; end;
Pembuatan record diawali dengan nama_record. Nama_record adalah variabel yang
akan menampung seluruh isi record. Setelah itu, pembuatan ‘isi’ record berada di antara
perintah record dan end;. Di sinilah seluruh variabel yang menjadi ‘isi’ record di
definisikan. Berikut ini merupakan contoh perintah untuk membuat record ‘siswa’ yang
terdiri dari nama, umur, sekolah, dan kota:
var siswa: record nama: string[20]; umur: integer; sekolah: string[30]; kota: string[20]; end;
Untuk mengakses variabel di dalam record (atau disebut juga sebagai field), digunakan
karakter titik ( . ), seperti contoh berikut:
98 Lilis Setyowati, ST., MMSI
siswa.nama:= 'Alesha'; siswa.umur:= 17; siswa.sekolah:= 'SMA 104 Jakarta'; siswa.kota:= 'Jakarta';
Dalam kode di atas, beberapa data diisi ke dalam record ‘siswa’. Isi masing-masing data
harus bersesuaian dengan tipe data saat merancang record. Untuk nama, bisa diisi
dengan string[20], sedangkan untuk umur bisa diisi dengan angka bulat (integer). Kode
lengkap cara penggunaan struktur record di dalam pascal dapat dilihat di bawah ini:
program tipe_record; uses crt; var siswa: record nama: string[20]; umur: integer; sekolah: string[30]; kota: string[20]; end; begin clrscr; siswa.nama:= 'Alesha'; siswa.umur:= 17; siswa.sekolah:= 'SMA 104 Jakarta'; siswa.kota:= 'Jakarta'; writeln('Nama : ',siswa.nama); writeln('Umur : ',siswa.umur); writeln('Sekolah : ',siswa.sekolah); writeln('Kota : ',siswa.kota); readln; end.
OUTPUT:
Nama : Alesha Umur : 17 Sekolah: SMA 104 Jakarta Kota : Jakarta
Lilis Setyowati, ST., MMSI 99
8. FILE DAN OPERASINYA PADA PASCAL
File adalah kumpulan byte-byte yang disimpan dalam media penyimpanan. Merupakan
komponen yang bertipe data sama, yang jumlahnya tidak tentu, yang dapat ditambah
atau dikurangi jika dibutuhkan.
Pointer fileadalah bagian yang menunjuk ke komponen file yang akan diakses (dibaca
atau direkam) untuk keperluan pengaksesan file (akan dibahas kemudian).
File pada Pascal dikenal dalam 3 jenis, yaitu :
File Text
File bertipe
File tidak bertipe
Selain membuat, menambahkan isi sebuah file, manipulasi File juga dapat dilakukan
pada pascal. Manipulasi yang dimaksud antara lain:
• Menggunakan parameterMengenai Atribut File • Menghapus file • Mengubah nama file • Mengenai tanggal dan waktu file • Mencari file • Mengecek keberadaan file • Memberikan directory file
8.1. File Teks
File teks pada Bahasa pascal memiliki beberapa karakteristik. Karakteristik file teks pada
pascal antara lain:
1. Karakteristik File Teks Berisi data karakter ASCII. 2. Tiap record pada file teks boleh memiliki panjang yang bervariasi. 3. Setiap record diakhiri dengan tanda EOL (end of Line). 4. File teks hanya dapat diakses secara sequensial (berurutan). 5. Isi filenya dapat dilihat oleh perintah dos type atau editor text
Bentuk Umum penulisan file teks pada pascal adalah sebagai berikut:
Var TipeFile : Text; Begin Assign(TipeFile,’Data.txt’);
8.1.1. Membuat File Text
Urutan proses dalam membuat file text pada pascal adalah sebagai berikut:
8.1.1.1. Mendeklarasikan Variabel File
Var NmVar:TEXT;
100 Lilis Setyowati, ST., MMSI
Keterangan : NmVar : Nama variabel file text 8.1.1.2. Menghubungkan variabel file dengan nama file
Assign (NmVar, nama file);
Keterangan : NmVar : Nama variabel file text nama file : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis dalam bentuk string. 8.1.1.3. Membuat file text aktif
Rewrite(NmVar);
Keterangan : NmVar : Nama variabel file text yang sudah di- assign 8.1.1.4. Menulis ke dalam file text
Write / writeln (NmVar, data item1, data item 2, …)
Keterangan: NmVar : Nama variabel file text Data item : text / string yang akan dituliskan, atau bisa juga berupa isi suatu variabel 8.1.1.5. Menutup file
Close (NmVar);
Keterangan: NmVar : Nama variabel file text Contoh program Membuat File Text:
Lilis Setyowati, ST., MMSI 101
8.1.2. Membaca File Teks
Urutan proses dalam membaca file text pada pascal adalah sebagai berikut:
8.1.2.1. Mendeklarasikan variabel file
Mendeklarasikan variabel file dengan perintah sebagai berikut,
Var NmVar:TEXT;
8.1.2.2. Menghubungkan variabel file dengan nama file
Menghubungkan variabel file dengan nama fime menggunakan perintah sebagai berikut,
Assign (NmVar, nama file)
8.1.2.3. Membaca isi file dan menampilkannya di layar
Membaca isi file dan menampilkan isi file di layar dapat dilakukan menggunakan
perintah sebagai berikut
While not eof (NmVar) do Begin Read / readln ( NmVar, data item 1, data item 2, … ); Write / writeln ( data item1, data item 2, … ); End;
102 Lilis Setyowati, ST., MMSI
8.1.2.4. Menutup file
Menutup file text pada pascal dapat dilakukan mengguunakan perintah sebagai berikut,
Close (NmVar);
Contoh Program Membaca File Text
OUTPUT:
8.1.3. Menambah isi file teks
Urutan proses dalam menambah isi file text pada pascal adalah sebagai berikut:
8.1.3.1. Mendeklarasikan variabel file
Mendeklarasikan variabel file dengan perintah sebagai berikut,
Var NmVar:TEXT;
Lilis Setyowati, ST., MMSI 103
8.1.3.2. Menghubungkan variabel file dengan nama file
Menghubungkan variabel file dengan nama file menggunakan perintah sebagai berikut,
Assign (NmVar, nama file)
8.1.3.3. Menambah isi file
Menambah isi file menggunakan perintah sebagai berikut,
Append(NmVar)
8.1.3.4. Menampilkannya di layar
Menambah file di layar menggunakan perintah sebagai berikut,
Write / writeln (NmVar, data item1, data item 2, …)
8.1.3.5. Menutup file
Menutup file text pada pascal dapat dilakukan menggunakan perintah sebagai berikut,
Close (NmVar);
Contoh program menambah isi file teks adalah sebagai berikut:
104 Lilis Setyowati, ST., MMSI
8.1.4. Metode Pembacaan file oleh Turbo Pascal
Metode pembacaan file pada turbo pascal adalah sebagai berikut:
a. Menggunakan statemen operasi READ / READLN
b. Bergantung pada tipe data variabel yang digunakannya, yaitu :
1. Variabel berjenis numerik (byte,integer, real)
Tanda batas akhir pembacaan variabel jika ditemui blank(spasi), EOL (end of
line), EOF (End of File) atau TAB.
Jika sebelum membaca data (atau dengan kata lain tidak ada datanya) pointer
pascal menemukan EOL / EOF, maka variabel tersebut akan diisi NOL.
Jika string yang dibaca oleh variabel numerik tidaksah, maka terjadi kesalahan
I/O : Invalid numerik format.
2. Variabel berjenis string
Karakter-karakter file aakan dibaca sampai ditemui EOL / EOF tercapai atau lebih besar
dari ukuran stringnya.
3. Variabel berjenis Char
Pada variabel berjenis char yang dibaca hanya satu karakter saja. Agar pembacaan file
sesuai dengan yang diharapkan, terkadang perlu kita deklarasikan secara jelas jumlah
byte yang disediakan untuk suatu variabel, atau mesti kita selipkan pencetakan spasi
diantara dua variabel yang akan dibaca. Perlu diperhatikan kesesuaian tipe data, antara
yang dituliskan dengan metode WRITE/WRITELN dan dengan yang akan kita baca.
8.2. File Bertipe
File bertipe pada Bahasa pascal memiliki beberapa karakteristik. Karakteristik file bertipe
pada pascal antara lain:
Lilis Setyowati, ST., MMSI 105
1. Berisi data format biner, ukurannya lebih kecil dari file teks. 2. Tiap record memiliki tipe dan panjang yang sama. Bisa saja memiliki berbagai
tipe asalkan dikelompokkan dalam RECORD. 3. Dapat diakses secara random, elemen-elemennya bisa dibaca secara acak yang
keberapa saja.
Bentuk Umum penulisan file bertipe pada pascal adalah sebagai berikut:
Var
FileData : file of byte;
Begin
Assign(FileData,’Abc’);
Rewrite(fileData);
8.2.1. Membuat File Bertipe
Urutan proses dalam membuat file bertipe pada pascal adalah sebagai berikut:
8.2.1.1. Mendeklarasikan variabel file
Perintah pendeklarasian variabel file bertipe adalah:
Var NmVar:FILE OF TypeVariabel; Keterangan : NmVar : Nama variabel file bertipe TypeVariabel : Char, variabel tipe RECORD, variabeltipe array, real, variabel array tipe record. Untuk satu file satu tipe elemen. Contoh : Type DaftarBarang = Array [1..100] of integer;
DataKonsumen = RECORD Nama :string[15]; Alamat :string[30]; Kode :1..3; DaftarKonsumen = Array [1..100] of Datakonsumen ; Var FileBarang : File of Daftarbarang; FileJumlah : File of integer; FileData : File of DataKonsumen; FileKode : File of Char; 8.2.1.2. Menghubungkan variabel file dengan nama file
Perintah untuk menghubungkan variabel file dengan nama file dapat dilihat di bawah ini:
Assign (NmVar, nama file);
106 Lilis Setyowati, ST., MMSI
Keterangan : NmVar : Nama variabel file bertipe nama file : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis
dalam bentuk string.
8.2.1.3. Membuat/ membuka file bertipe
Perintah untuk membuat/ membuat file bertipe pada pascal adalah sebagai berikut:
Rewrite(NmVar); => perintah untuk membuat
Reset(NmVar); =>perintah untuk membuka
8.2.2. Menulis/ Membaca File Bertipe
Menulis/ membaca file bertipe pada pascal dapat dilakukan menggunakan perintah
sebagai berikut:
Write (NmVar, data item1, data item 2, …) =>perintah untuk menulis
Read (NmVar, data item1, data item 2, …) =>perintah untuk membaca
Keterangan:
Data item1, data item 2 dan seterusnya, harus berupa variabel, tidak bisa dituliskan
secara langsung dalam bentuk konstanta. Variabelnyaharus sama dengan deklarasi tipe
file-nya.
Fungsi Writeln dan Readln tidak dapat digunakan pada file bertipe.
8.2.3. Menutup File
Menutup file bertipe pada pascal dapat dilakukan menggunakan perintah sebagai
berikut,
Close (NmVar);
Contoh program file bertipe dapat dilihat di bawah ini:
Lilis Setyowati, ST., MMSI 107
108 Lilis Setyowati, ST., MMSI
Contoh Program membaca file bertipe:
8.2.4. Fungsi-fungsi yang digunakan dalam file Bertipe
Di bawah ini ada beberapa fungsi yang digunakan pada file bertipe:
a. Menempatkan pointer ke posisi record ke-N
Seek (VarFile,N);
Contoh :
Seek(namafile,4); {pointer akan menunjuk posisi record ke-4, dengan nomor
record 3}
b. Menunjuk nomor record (nomor record dimulai dari record 0)
FilePOS (VarFile);
Lilis Setyowati, ST., MMSI 109
Contoh :
Posisi:=Filepos(Varfile);
{mengetahui posisi pointer aktual di record mana, dan hasilnya diletakkan pada
variabel posisi}.
c. Mengukur besar file bertipe, yaitu mengetahui jumlah record yang berada
dalam suatu file (jika file baru dibuat = 0)
Filesize(VarFile);
Contoh :
.. Begin Write(‘input nomor record yang ingin dilihat’);readln(NoRec);dec(NoRec) If NoRec >=filesize(VarFile) then Writeln(‘Nomor record terlalu besar’); Else begin seek(VarFile,NoRec); {Pointer menuju nomor record yang dimaksud} Read(VarFile,data); End;
.. end.
d. Menunjuk akhir dari file.
EOF(VarFile);
e. Menghapus sebagian file
Truncate(VarFile);
Contoh : Seek(varfile,5); {pointer menuju record nomor 5} Truncate(VarFile); {menghapus mulai record nomor 5 sampai habis } 8.3. File Tak Bertipe
File tak bertipe pada Bahasa pascal memiliki beberapa karakteristik. Karakteristik file tak
bertipe pada pascal antara lain:
File yang mengakses langsung ke media penyimpanan tanpa adanya pengenalan
record dan sebagainya.
110 Lilis Setyowati, ST., MMSI
Digunakan untuk tugas-tugas yang berhubungan dengan file biner yang dapat
diproses tanpa mengenal jenis recordnya.
File tak bertipe (untyped file) adalah channel I/O (Input/output) level rendah
yang terutama digunakan untuk mengakses langsung suatu file di disk tidak
perduli bagaimana tipe dan strukturnya.
Membuat File Tak Bertipe
Urutan proses pembuatan file tak bertipe adalah sebagai berikut:
1. Mendeklarasikan variabel
Perintah untuk mendeklarasikan variabel pada file tak bertipe adalah:
Var NmVar:FILE;
2. Menghubungkan variabel file dengan nama file
Perintah untuk menghubungkan variabel file dengan nama file adalah:
Assign (NmVar, nama file);
Keterangan :
NmVar : Nama variabel file bertipe
nama file : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis dalam
bentuk string.
3. Membuka file bertipe
Perintah untuk membuka file tak bertipe adalah sebagai berikut:
Rewrite(NmVar[,brec]); => untuk membuat
Reset(NmVar[,brec]); => untuk membuka
Keterangan :
Brec : Menunjukkan besar file dalam byte, opsional,boleh ditulis, boleh tidak, dan
besarnya kita tentukan sendiri. Defaultnya 128 Byte.
4. Menulis/ membaca file tidak terbatas
Perintah untuk menulis/ membaca file tidak bertipe adalah sebagai berikut:
Blockwrite (NmVar, Buffer, jumlah[,jumtulis]) => untuk menulis
Keterangan :
Buffer : daerah penyimpanan data yang akan ditulis ke dalam file. Buffer dapat
berupa suatu variabel dengan tipe apa saja sesuai dengan ukuran data yang
akan ditulis di file.
Lilis Setyowati, ST., MMSI 111
Jumlah : jumlah data yang akan ditulis ke file dalam ukuran byte.
Jumtulis : suatu parameter yang tidak tetap yang boleh digunakan dan boleh juga
tidak digunakan, bila digunakan akan berisi jumlah byte yang dapat ditulis ke file.
Read (NmVar, data item1, data item 2, …) => untuk membaca
Keterangan :
Buffer : daerah penyimpanan yang tipe variabelnya disesuaikan dengan jumlah data
yang dibaca.
Jumlah : jumlah byte yang akan dibaca dari file, dapat merupakan suatu variabel
dengan tipe word. Jumlah harus sama dengan besar buffer yang diberikan
dan tidak boleh lebih dari 64 Kilobyte.
Jumbaca : merupakan variabel yang berisi laporan jumlah byte yang dapat dibaca
dari file.
Contoh File tidak bertipe :
Program menyalin_file Uses crt; Var
Fileasal, filetuju :file; Besar :real; Buf :array [1..10240] of char; Hbaca, Hatulis :word; nfile1,nfile2 :string;
Begin besar:=0; clrscr; write (‘Input nama file asal :’);readln(nfile1); write (‘Input nama file tujuan :’);readln(nfile2); {$I-} Assign(fileasal,nfile1); Assign(filetuju,nfile2); Reset(fileasal,1); If IOResult <>0 then
Begin Writeln(‘File asal tidak ada !’); Halt(0);
End; Rewrite(filetuju,1); If IOResult <>0 then
Begin Writeln(‘File tujuan tidak bisa dibuat !’); Halt(0); End; {$I+}
Repeat Blockread(fileasal,buf,10240,hbaca); Besar:=besar + hbaca;
Blockwrite(filetuju,buf,hbaca,htulis);
112 Lilis Setyowati, ST., MMSI
If hbaca <> htulis then Begin
Writeln(‘Tujuan tidak bisa menampung besar file’); Halt(0);
End; Until hbaca <>10240; Close (fileasal); Close (filetuju); Writeln (‘Besar file yang dipindahkan :‘,besar:10:0);
End.
8.4. Menangani Kesalahan I/O pada File
Beberapa operasi pada file yang dapat mengalami kesalahan I/O : Reset, rewrite, read,
readln, write, writeln, close, append, seek Agar program tidak berhenti, maka harus
digunakan Compiler Directive Fungsi I/O result Untuk pengecekan I/O file tersebut.
Bentuk umum :
{$ Kode Kondisi}
Keterangan :
• Kode : Karakter kode, untuk fungsi I/O result adalah I. • Kondisi : OFF (-) / ON (+) • Secara default {$I+} => ON • I/O Result => bernilai 0 jika operasi berhasil • Isi nilai selalu dihapus sendiri setiap kali dipanggil • Penulisannya mengapit operasi-operasi yang rentan kesalahan
Contoh: … Assign(VarFile, ‘data.dat’); {$I-} Reset(VarFile); {$I+} fileada := IOResult = 0; if fileada then begin
writeln(‘file sudah ada…’); …
end else { Kondisi bila file tidak ada }
begin rewrite(VarFile); { Buat file baru } … write (VarFile, var1, var2, …); … close(VarFile);
end; …
Lilis Setyowati, ST., MMSI 113
8.5. Manipulasi File
Manipulasi pada file dapat dilakukan dengan beberapa cara, antara lain:
8.5.1. Parameter
Parameter disebut juga command tail, merupakan informasi tambahan bagi program
utama yang dapat diketikkan sesuai keperluan, untukmenjalankan rutin khusus dalam
program tersebut.
Contoh : program scan.exe
Biasanya dituliskan pada prompt : C:\scan a: /clean
String ‘a:’ dan string ‘/clean’ merupakan parameter, yang akan membuat scan program
ke drive a dan kemudian menjalankan prosedur CLEAN.
Ada dua perintah untuk membuat parameter :
1. ParamCount: untuk mengetahui jumlah parameter yang diberikan
Bentuk Umumnya : Var_word := ParamCount;
2. ParamString: untuk mengambil parameter tersebut dalam bentuk string
Bentuk Umumnya : Var_string := ParamString(index);
8.5.2. Atribut File
Atribut file adalah satu byte data yang berisi keterangan dari suatu file. Karena bit–nya
merupakan kode biner, maka dibuat lambang untuk mewakili bit-bit tersebut, sebagai
berikut :
Lambang Angka
ReadOnly 1
Hidden 2
SysFile 4
VolumeId 8
Directory 16
Archive 32
Ada 2 perintah yang berhubungan dengan atribut file, yaitu :
114 Lilis Setyowati, ST., MMSI
1. GetFAttr (Get File Atribut): Mengambil informasi atribut file.
Bentuk umumnya : GetFAttr(nm_var,attr);
2. SetFAttr (Set File Atribut): Mengeset atribut file.
Bentuk umumnya : GetFAttr(nm_var,attr);
Keterangan :
Nm_var : nama suatu file yang telah di-assign dengan tipe apa saja. Attr : Bilangan atribut yang akan diambil/diketahui dari suatu file. Catatan : a. File yang akan dilihat atau diset atributnya mesti di-assign terlebih dahulu. b. Kedua perintah ini berada pada unit DOS dan WINDOWSTurbo Pascal, maka perlu
menggunakan ‘Uses DOS’ atau ‘Uses Windows;’ pada deklarasi unit. 8.5.3. Menghapus File
Untuk menghapus suatu file, file tersebut harus di-assign terlebih dahulu. Bentuk umum
perintahnya :
Erase(nm_var); Contoh :
Program hapus; Uses crt;
Var f:file; Begin
Clrscr; Assign(f,paramstr(1)); Write( ‘File ‘,paramstr(1)); {$I-} erase(f); {$I+} if IOResult <> 0 then writeln(‘Gagal mengapus’); else writeln(‘Menghapus sukses …’);
end.
8.5.4. Mengubah nama file
Untuk mengubah nama file, file tersebut harus di-assign terlebih dahulu. Bentuk umum
perintahnya adalah :
Rename(nm_var,nm_baru); Contoh :
Program Ubah_nama; Uses crt;
Var f:file;
Lilis Setyowati, ST., MMSI 115
Begin Clrscr; Assign(f,paramstr(1)); Write( ‘File ‘,paramstr(1)); {$I-} rename(f,ParamStr(2)); {$I+} if IOResult <> 0 then writeln(‘Gagal mengubah nama’); else writeln(‘Mengubah nama menjadi ’, ParamStr(2));
end.
8.5.5. Tanggal dan waktu File
Guna memanipulasi tanggal dan waktu file, Turbo Pascal menyediakan variabel khusus
bernama DateTime dengan tipe data record dengan field-field sebagai berikut :
Type datetime = record; Year, month,day,hour,min,sec:word; End;
Setelah dideklarasikan, menset informasi date dan time baru dapat diambil dengan
menggunakan perintah :
• GetFTime: mengambil informasi tanggal dan jam file. Bentuk Umum :
GetFTime(nm_var,waktu);
• SetFTime: mengeset informasi tanggal dan jam file. BentukUmum :
SetFTime(nm_var,waktu);
Keterangan : Nm_var : variabel file yang telah di-assign. Waktu : waktu yang akan diambil (dalam bentuk LongInt). Keterangan :
1. Pada saat GetFTime, variabel waktu masih merupakantipe data sistem(LongInt),
maka perlu diubah terlebih dahulu sebelum ditampilkan, yaitu dengan perintah :
UnpackTime(waktu,var_datetime);
Waktu : dideklarasikan dalam bentuk longint Var_datetime : variabel dari record datetime. 2. Sebelum melakukan SetFTime, variabel waktu masih merupakan variabel dari record
datetime, maka perlu dikembalikan ke tipe data sistem(LongInt), yaitu dengan
perintah :
116 Lilis Setyowati, ST., MMSI
(var_datetime, waktu);
Var_datetime : variabel dari record datetime. Waktu : dideklarasikan dalam bentuk tipe data sistem (longint). 3. Harus menggunakan deklarasi unit ‘Uses DOS;’ atau ‘Uses WinDOS;’
8.5.6. Mencari File
Mencari file pada pascal dapat dilakukan dengan meggunakan perintah :
Findfirst(path,attr,var_searchrec); FindNext(var_searcRec);
Keterangan :
Path : file yang akan dicari, dapat diisi dengan wildcard seperti ‘*’ dan ‘?’. Pada unit DOS menggunakan tipe string. Harus deklarasi unit ‘Uses Dos;’.
Attr : atribut file yang dicari Var_searchrec : variabel dengan tipe searchrec sebagai berikut ini :
Type Searchrec = record
Fill : array [1..2] of char; Attr : byte; Time : longint; Size : longint; Name : string;
End;
Contoh program:
Program cari; Uses crt,dos; Var dirinfo :searchrec;
Begin Clrscr; Findfirst(paramstr(1),archive,dirinfo); Writeln (‘File-file yang dicari adalah :’); While doserror=0 do Begin
Write(dirinfo.name:15, ‘ ‘); Writeln(dirinfo.size:10); Findnext(dirinfo);
End; End.
Lilis Setyowati, ST., MMSI 117
8.5.7. Mengecek Keberadaan File
Mengecek keberadaan file pada pascal dapat dilakukan menggunakan perintah :
1. Fsearch: untuk deklarasi unit DOS
Bentuk penulisan : Var_pathstr := Fsearch(path,dirlist)
Keterangan:
Path : file yang akan dicari
Dirlist : letak dimana akan dicari yang didefinisikan di path tersebutuntuk deklarasi unit
Windows
2. FileSearch: untuk deklarasi unit Windows
Bentuk penulisan: FileSearch(var_string1, var_string2, var_string3)
Keterangan :
Var_string1 : variabel tempat menaruh hasil proses. Var_string2 : variabel tempat menaruh file yang dicari. Var_string3 : variabel tempat melakukan pencarian file. 8.5.8. Memberikan directory File
Pemberian directory file dapat dilakukan dengan dua perintah:
1. FExpand
Bentuk umum perintah FExpand : Var_pathstr1 := FExpand(Var_pathstr2);
Keterangan :
Var_pathstr1 : hasil dari proses dengan penulisan file secara panjang Var_pathstr2 : nama file yang akan diperpanjang penulisannya Fungsi ini tidak mengecek keberadaan file yang dimanipulasinya. Bila file tidak ada, maka
tetap akan menghasilkan path yang sedang aktif.
2. FileExpand
Bentuk umum perintah FileExpand : FileExpand(hasil,file_asal);
Keterangan :
Hasil : merupakan hasil proses. File_asal : nama file yang akan diperpanjang penulisannya.
118 Lilis Setyowati, ST., MMSI
DAFTAR PUSTAKA
Anonim. 1990. Algoritma & Pemrograman II, Jakarta: Gunadarma
Ediman Lukito. 1993. Belajar Sendiri Pemrograman dengan Turbo Pascal 7.0. Jakarta:
Elex Media Komputindo
https://www.duniailkom.com/
http://www.stackoverflow.com/questions/5693186/pascal-read-readln-function-
impurities
http://www.stackoverflow.com/questions/8997678/pascal-read-function-strange-
behavio