Page 1
FERDINAL. R, S.KOM
AMIK DEPATI PARBO KERINCI
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 2
PROGRAM STUDI MANAJEMEN INFORMATIKA DAN KOMPUTER
AMIK DEPATI PARBO KERINCI
.
Nama Matakuliah : Bahasa Pemrograman Pascal Tgl. Penyusunan
: 6 Februari 2006
Tujuan Utama : 1. Memahami latar belakang, prinsip dan konsep dasar Bahasa Pemrograman Pascal 2. Memberikan gambaran tentang konsep dam teknik pembuatan aplikasi dengan menggunakan Bahasa Pemrograman Pascal
DAFTAR ISI BAB I
BAB II
BAB III
PENDAHULUAN
1
1.1
Sejarah Singkat Turbo Pascal
1
1.2
Jenis-Jenis File Yang Dimiliki Turbo Pascal
1
1.3
Menjalankan Program Turbo Pascal
2
1.4
Operasi File
3
1.5
Mengatur Konfigurasi Turbo Pascal Dengan TPX.TP
4
1.6
Bagian-Bagian Program Dalam Turbo Pascal
6
1.7
Meng-Compile dan Me-Link File
7
1.8
Menjalankan Program
9
1.9
Fungsi-Fungsi Tombol Lainnya
9
1.10 Struktur Bahasa Pascal
10
1.11 Penulisan Program Pascal
10
1.12 Latihan
15
TYPE DATA
17
2.1
Type Data Sederhana
17
2.2
Type Data String
19
2.3
Type Data Terstruktur
20
2.4
Type Data Pointer
21
STATEMENT INPUT/OUTPUT
23
3.1
Statement Output
23
3.1.1 Fungsi Write() dan Writeln()
23 Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 3
3.1.2 Menentukan Lebar Field (Field Width Specifier)
24
3.1.3 Mencetak Kode ASCII
25
Statement Input
26
3.2.1 Fungsi Read() dan Readln()
26
3.3
Mencetak Ke Printer
27
3.4
Latihan
27
3.2
BAB IV
BAB V
BAB VI
OPERASI ARITMATIKA
30
4.1
Operator Aritmatika
30
4.2
Hierarki Operator Aritmatika
31
4.3
Operator Boolean
32
4.4
Operator Relational (Hubungan)
32
STRUCTURE DICISION (STATEMENT IF DAN CASE)
34
5.1 Struktur IF
34
5.2 Struktur CASE
36
5.3 Latihan
37
STRUCTURE LOOP
46
(STATEMENT FOR / WHILE / REPEAT) 6.1
Struktur FOR
46
6.2
Struktur WHILE
48
6.3
Struktur REPEAT .. UNTIL
49
6.4
Latihan
50
BAB VII ARRAY
53
7.1
Deklarasi Variabel Array
53
7.2
Array Satu Dimensi
54
7.3
Array Dua Dimensi
55
7.4
Array Multi Dimensi
57
7.5
Mengurutkan Array
59
BAB VIII PROSEDUR DAN FUNGSI
63
8.1
Sifat-Sifat dan Manfaat Prosedur/Fungsi
63
8.2
Parameter (Argumen)
63 Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 4
8.3
Variabel Global
64
8.4
Variabel Lokal
65
8.5
Prosedur
65
8.5.1
Pendeklarasian Prosedur
65
8.5.2
Pemanggilan Prosedur
66
8.6
BAB IX
BAB X
BAB XI
Fungsi
67
8.6.1
Pendeklarasian Fungsi
67
8.6.2
Pemanggilan Fungsi
68
8.7
Rekursi
68
8.8
Latihan
70
DISAIN LAYAR
74
9.1
Unit CRT
74
9.2
Menghapus Layar
74
9.3
Mengatur Atribut Teks
74
9.4
Kursor
75
9.5
Mode Teks
76
9.6
Jendela Teks (Window)
77
9.7
Menghapus dan Menyisipkan Baris Pada Window
78
TYPE DATA RECORD
80
10.1 Defenisi
80
10.2 Pendeklarasian Record
81
10.3 Operasi Pada Record
82
10.3.1 Mengakses Record Dengan Notasi Titik
82
10.3.2 Mengakses Record Dengan Pernyataan With
83
10.4 Latihan
85
TYPE DATA HIMPUNAN
89
11.1 Deklarasi Type Himpunan
89
11.2 Operasi Himpunan
89
11.3 Latihan
90
BAB XII TYPE DATA FILE 12.1 File Acak (Random) / File Bertipe
93 93 Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 5
12.1.1 Pernyataan Assign
94
12.1.2 Pernyataan Rewrite
94
12.1.3 Pernyataan Reset
95
12.1.4 Pernyataan Close
95
12.1.5 Pernyataan Write
96
12.1.6 Pernyataan Read
96
12.1.7 Pernyataan Seek
97
12.1.8 Fungsi EOF
97
12.1.9 Fungsi Filesize
97
12.2 Menangani Kesalahan I/O
97
12.3 Latihan
98
BAB XIII SUARA & GRAFIK
102
13.1 Mode Suara
102
13.2 Mode Grafik
102
13.2.1 Mode Untuk Graphmode
103
13.2.2 Mode Untuk Graph Color Mode
104
13.2.3 Mode Untuk Hires
104
13.2.4 Fungsi Grafik Lainnya
105
13.3 Latihan
106
LAMPIRAN 1 TABEL ASCII
108
LAMPIRAN 2 DAFTAR TOMBOL PERLUASAN
110
LAMPIRAN 3 PESAN KESALAHAN
111
DAFTAR PUSTAKA
118
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 6
BAB I PENDAHULUAN 1.13 SEJARAH SINGKAT TURBO PASCAL Pascal merupakan salah satu bahasa tingkat tinggi (Hight Level Language) yang orientasinya pada segala tujuan, yang dirancang oleh Prof. Niklaus Wirth dari Technical University di Zurich, Switzarland. Nama pascal diambil dari nama ahli matematika abad 17 asal Perancis yaitu Blaise Pascal yang menemukan mesin hitung mekanik pertama. Prof. Niklaus Wirth memperkenalkan komputer bahasa pascal dengan pertama kali untuk komputer CDC-600 (Control Data Corporation) yang dipublikasikan tahun 1971, dengan tujuan untuk membantu mengajar program komputer secara sistematis khususnya untuk memperkenalkan pemrograman yang terstruktur, jadi pascal adalah yang ditujukan untuk membuat program yang terstruktur. Standar pascal adalah bahasa yang didefinisikan oleh K. Jensen dan Prof. Niklaus Wirth. Penerapan nyata dari standar pascal banyak yang berbeda seperti apa yang telah didefinisikan oleh K. Jensen dan Prof. Niklaus Wirth. Standar pascal di Eropa didefinisikan oleh ISO (International Standard Organization) dan di Amerika oleh kerja sama antar ANSI (American National Standard Institute) dan IEEE (Institute of Electrical Electronic Engineer). Beberapa versi dari pascal telah beredar dipasaran, diantaranya UCSD Pascal (University Of California at San Diego Pascal), MS-Pascal (Microsoft Pascal), APPLE Pascal, Turbo Pascal dan lain sebagainya. Sampai saat ini untuk komputer micro dan personal, Turbo Pascal merupakan versi bahasa pascal yang paling populer dan banyak digunakan. 1.14 JENIS-JENIS FILE YANG DIMILIKI TURBO PASCAL 1. File Editor File Editor adalah program yang anda buat / anda susun dalam Turbo Pascal. Nama file program harus selalu berakhiran dengan “.pas”. 2. File Object File Object adalah hasil file program anda setelah melewati proses COMPILE. File ini berakhiran .obj. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 7
3. File Eksekusi File Eksekusi adalah hasil file program setelah melewati proses LINK. File ini berakhiran .exe. 1.15 MENJALANKAN PROGRAM TURBO PASCAL Program Turbo Pascal sebenarnya dapat dijalankan dengan 2 cara, yakni : 1. cara command-line, yaitu program disunting/dibuat, dicomplile serta di link secara terpisah dengan menggunakan programnya masing-masing dan dilaksanakan dari DOS (dalam Turbo Pascal dapat melalui file TPC.EXE). 2. dengan Integrated Development Environment (IDE). IDE melayani penyuntingan program, compile dan link secara terpadu. Untuk menjalankan Turbo Pascal dengan cara IDE dapat dilakukan dengan meng-click (double click) file TPX.EXE (dari desktop Windows) atau cari file TPX.EXE yang ada dalam directory pascal atau dari C prompt (C>) anda ketik C>TPX (tekan Enter). Tunggu sejenak, hingga dilayar tampil gambar seperti berikut : Baris Menu
Nama File
Editor Penyuntingan Posisi Kursor
Kotak Pesan
Gambar 1.1 Tampilan layar Integrated Development Environment (IDE)
Keterangan : - Editor penyuntingan merupakan tempat untuk membuat atau menyusun program anda. - Kotak Pesan (message) adalah tempat berbagai pesan kesalahan ditampilkan. Kursor dapat dipindahkan dari kotak PENYUNTINGAN ke kotak MESSAGE / PESAN atau sebaliknya dengan menggunakan tombol “F6”. Memilih MENU dari kotak PENYUNTINGAN dapat dilakukan dengan dua cara : Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 8
1. Tekan tombol ALT dan huruf depan nama menu yang bersangkutan Contoh : Memilih menu
OPTIONS
: [ALT] O
FILE
: [ALT] F dts…
2. dengan menekan tombol F10. Sedangkan
untuk
menutup
kembali
menu
yang
telah
dipilih
dapat
menggunakan/menekan tombol ESC. 1.16 OPERASI FILE Perintah-perintah yang ada pada menu file :
Gambar 1.2 Tampilan Menu File
1. NEW Perintah ini berfungsi untuk mempersiapkan layar IDE yang baru untuk penyuntingan program yang baru pula. 2. OPEN (F3) Perintah ini digunakan untuk mengaktifkan atau memanggil kembali suatu file yang pernah anda buat. Caranya, yaitu dengan menyorot perintah ini kemudian dilanjutkan dengan menekan tombol ENTER. Setelah tombol ENTER ditekan, dilayar akan tampil seperti gambar berikut :
Gambar 1.3 submenu Open dari Menu File Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 9
3. SAVE (F2) Digunakan untuk menyimpan program anda. Dalam Turbo Pascal, nama file yang diberikan harus berakhiran .pas (titik pas). misalnya : coba.pas 4. SAVE AS Perintah ini digunakan untuk menyimpan suatu program kedalam file yang lain atau file baru. 5. SAVE ALL Perintah ini digunakan untuk menyimpan semua file program yang dibuka pada saat bersamaan. 6. CHANGE DIR Untuk memindahkan directory yang aktif dari suatu directory ke directory yang lain.
Ketikkan directory yang akan diaktifkan Misalnya c:\pascal\data
Gambar 1.4 submenu Change dir dari Menu File
7. PRINT Untuk mencetak listing suatu program ke printer. 8. OS SHELL OS Shell (operating system shell) digunakan bila anda ingin bekerja dengan sistem operasi (prompt) yang sifatnya sementara tanpa ingin keluar dari program Turbo Pascal. Untuk kembali ke editor cukup dengan mengetikkan : C> EXIT. 9. EXIT (ALT-X) Perintah ini digunakan bila anda ingin keluar dari Turbo Pascal. 1.17 MENGATUR KONFIGURASI TURBO PASCAL DENGAN TPX.TP Konfigurasi yang akan diatur disini terutama yang menyangkut penggunaan directory. Konfigurasi akan diatur melalui menu OPTIONS dan hasilnya akan disimpan ke dalam file TCCONFIG.TC. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 10
Pengaturan Directory Untuk pengaturan directory, pilihlah submenu DIRECTORIES dari menu OPTIONS. Dalam submenu DIRECTORIES terdapat perintah-perintah sebagai berikut : EXE & TPU Directories Include Directories Unit Directories Object Directories Untuk lebih jelasnya dapat anda lihat dalam tampilan gambar berikut ini :
Gambar 1.5 submenu DIRECTORIES dari MENU OPTIONS
EXE & TPU Directories, Semua file ber_extensi .EXE dan .TPU disimpan dalam direktori ini. Jika dibiarkan kosong (tidak diisi), file ber_extensi .EXE dan .TPU akan di simpan pada direktori tempat program sumber ditemukan. Direktori ini juga digunakan untuk menyimpan file yang berakhiran MAP. Include Directories, Direktori ini menyatakan tempat file yang disertakan melalui ($i nama_file). Pilihan ini bisa di isi dengan sejumlah nama direktori yag dipisahkan dengan tanda titik koma (;). Unit Directories, Direktori yang menyatakan letak file unit Turbo Pascal. Dapat di isi dengan sejumlah nama directori. Dalam hal ini gunakan tanda titik koma (;) sebagai pemisah. Object Directories, Menyatakan direktori tempat file ber_extensi .OBJ (file yang berisi rutin dalam bahasa assembly). Direktori ini dapat juga di isi dengan sejumlah direktori, dimana digunakan tanda titik koma (;) sebagai pemisahnya. Untuk menjalankan/mengatur perintah-perintah yang ada dalam directories tersebut pilihlah / sorot perintah yang akan anda atur. Misalnya anda akan mengatur perintah Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 11
EXE & TPU directories. Langkah pertama pindahkan kursor di mana direktori akan kita ketik. Misalnya anda menyimpan file .EXE dan .TPU dalam directory C:\PASCAL\UNITS maka ketikkan nama directory tersebut dalam kotak kecil EXE & TPU directories lalu tekan ENTER.
Gambar 1.6 Pengaturan DIRECTORIES dari MENU OPTIONS
Setelah selesai mengisi EXE & TPU directories, lanjutkan pengaturan untuk perintahperintah yang lainnya sesuai dengan directory tempat file-file disimpan atau akan disimpan seperti terlihat pada gambar 1.6 diatas. Setelah semua perintah dalam submenu Directories diatur tekan ESC untuk keluar. Langkah berikutnya setelah anda mengisi/mengatur semua perintah yang ada dalam Directories tersebut adalah menyimpan hasil pengaturan konfigurasi tadi kedalam file “TPX.TP”, dengan memilih perintah “Save TPX.TP” yang juga ada dalam menu OPTIONS.
Gambar 1.7 Menyimpan hasil pengaturan konfigurasi
1.18 BAGIAN-BAGIAN PROGRAM DALAM TURBO PASCAL Program dalam Turbo Pascal tersusun dari fungsi-fungsi yang didalamnya mengandung satu atau lebih pernyataan-pernyataan atau perintah-perintah. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 12
Komentar awal program Titik koma “;” untuk mengakhiri setiap pernyataan/perintah akhir program
Gambar 1.8 Contoh program sederhana
Beberapa petunjuk yang dapat anda gunakan dalam menuliskan program adalah : 1. Sebaiknya dalam satu baris hanya terdiri dari satu perintah saja. 2. Perintah/pernyataan yang merupakan bagian dari suatu fungsi dituliskan agak menjorok kedalam. 3. Bila sebuah perintah tidak cukup dituliskan dalam satu baris, anda dapat menuliskan kebaris berikutnya. 4. Bila perlu gunakan spasi untuk memisahkan suatu kelompok perintah dengan kelompok perintah yang lain. 1.19 MENG-COMPILE DAN ME-LINK FILE Proses COMPILE adalah mengubah file program (file berakhiran .pas) menjadi file Object (berakhiran .obj). Sedangkan proses LINK akan mengubah file object tersebut menjadi file eksekusi (berakhiran .exe). Proses COMPILE dapat dilakukan dari kotak penyuntingan dengan menggunakan tombol : Alt + F9 atau lewat menu COMPILE dengan memilih perintah : Compile atau (tekan tombol Alt + C) kemudian dilanjutkan dengan menekan tombol ENTER.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 13
Gambar 1.9 submenu Compile dari Menu File
Sedangkan untuk melakukan proses LINK atau RUN (merubah file .obj ke file .exe) dapat dilakukan dari kotak penyuntingan dengan menggunakan
tombol : Ctrl + F9
atau lewat menu RUN dengan memilih perintah : Run kemudian dilanjutkan dengan menekan tombol ENTER.
Gambar 1.10 submenu Run dari Menu File
Proses
COMPILE
dan
LINK
dapat
dilakukan
bersama-sama
dari
kotak
PENYUNTINGAN dengan menggunakan tombol : F9 atau lewat menu COMPILE dengan perintah : Make.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 14
Gambar 1.11 Pesan yang tampil setelah proses COMPILE dan LINK sukses
Pesan ini dapat dihilangkan dari layar dengan menekan tombol : ENTER atau sembarang tombol 1.20 MENJALANKAN PROGRAM Program yang telah selesai di-COMPILE dan di-LINK dengan sukses dapat anda jalan dengan tombol : CTRL + F9 atau Lewat menu RUN, dengan memilih RUN dan dilanjutkan dengan ENTER 1.21 Fungsi-Fungsi Tombol Lainnya Jenis Tombol
Fungsi / Kegunaan
ALT + F5
Melihat Output / Tampilan Hasil Program dilayar
F5
untuk menampilkan kotak penyuntingan saja atau kotak pesan saja
F6
Untuk memindahkan kursor dari kotak pesan ke kotak penyuntingan atau sebaliknya
F10
Memindahkan kursor kebaris MENU
CTRL + F4
Untuk menghitung suatu variabel atau suatu rumus tertentu
F7 atau F8
Untuk menjalankan program langkah demi langkah
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 15
1.22 STRUKTUR BAHASA PASCAL Judul Program Bagian Deklarasi : - Deklarasi Label - Deklarasi Konstanta - Deklarasi Type - Deklarasi Variabel - Deklarasi Procedure - Deklarasi Fungsi
Kepala Program bersifat optional
Tubuh Program
Bagian Pernyataan : Begin ---------End.
1.23 PENULISAN PROGRAM PASCAL Program pascal tidak mengenal aturan penulisan di kolom tertentu jadi boleh ditulis mulai kolom berapapun. Penulisan statement-statement pada contoh program yang menjorok kedalam masuk beberapa kolom tidak mempunyai pengaruh diproses, hanya dimaksudkan untuk mempermudah pembacaan program, sehingga lebih terlihat bagianbagiannya. 1). Judul Program Dalam Turbo Pascal, judul program sifatnya adalah optional dan tidak signifikan di dalam program. Jika ditulis dapat digunakan untuk memberi nama program dan daftar dari parameter tentang komunikasi program dengan lingkungannya yang sifatnya sebagai dokumentasi saja. Judul program bila ditulis, harus terletak pada awal dari program dan diakhiri dengan titik koma. 2). Bagian Deklarasi Bagian deklarasi digunakan bila di dalam program menggunakan pengenal (identifier). Identifier dapat berupa label, konstanta, type, variabel, prosedur dan fungsi. Supaya identifier tersebut dikenal di dalam pascal maka terlebih dahulu sebelum digunakan, yaitu dideklarasikan pada bagian deklarasi.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 16
A. Deklarasi Label Deklarasi label digunakan untuk mendefenisikan label yang akan dipakai dalam program pascal. Dan digunakan untuk pernyataan “GOTO”. Cara Penulisan : LABEL N1, N2, …; Contoh : Program Contoh Deklarasi Label ; Label DP, Selesai ; Begin write (‘AMIK’); GOTO DP ; write (‘Kerinci’); DP : write (‘Depati Parbo’); GOTO Selesai; Selesai : write(‘AMIK-DP’); End. B. Deklarasi Konstanta Digunakan untuk mendefenisikan nilai konstanta (tetap) yang dipakai dalam program. Cara Penulisan : CONST N1 = Nilai ; Contoh : Program Contoh Deklarasi Konstanta ; Const DP = ‘AMIK Depati Parbo’ ; Alt = ‘Jl. Pancasila’ ; Telp = 21719; Begin write (‘Nama Akademi : ‘, DP); write (‘Alamat : ‘, Alt); write (‘Nomor Telpon : ‘,Telp); End. C. Deklarasi Type Pada turbo pascal menyediakan beberapa macam tipe dari data yakni : 1. Data Type Sederhana (Simple Type Data) Type data ini dihubungkan dengan sebuah identifier untuk sebuah data. Simple type data dapat digolongkan menjadi type data standar (standard type data) dan type data yang didefenisikan oleh pemakai (user defined data). Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 17
Yang termasuk type data standar adalah : - Integer
- Word
- Shortint
- Byte
- Longint
- Extended
- Real
- Char
- Double
- String
- Single
- Boolean
- Comp Contoh : Program Contoh Deklarasi Type Sederhana ; Type Pecahan = real; Angka = integer; Nama = string[25]; Logika = boolean; Begin ….. End. 2. Data Type Terstruktur (Struktured Type Data) Data type ini terdiri dari beberapa item yang dihubungkan satu dengan yang lainnya. Masing-masing huruf dari data item di hubungkan dengan satu identifier tertentu. Yang termasuk type data terstruktur : - Array
- File
- Record
- Set
Contoh : Program Contoh Deklarasi Type Terstruktur ; Type Mahasiswa = record Bp : string[9]; Nama : string[25]; matakuliah : array [1..9] of string[25]; end; hari = (Senin, Selasa, Rabu, Kamis); namahari = set of hari; Var File_mhs : file of mahasiswa; Begin ….. End. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 18
3. Data Type Penunjuk (Pointer Type Data) Data ini digunakan untuk membuat data terstruktur type dynamic. Untuk mendefenisikan type dari data yang akan dipergunakan di dalam program, dapat dilakukan dengan mendeklarasikan pengenal variabelnya di bagian deklarasi variabel sesuai dengan type data yang dipergunakan. Bentuk umum deklarasi pointer : Type
Pengenal =^simpul; Simpul = tipe;
Keterangan : Pengenal : nama pengenal yang menyatakan data bertipe pointer Simpul
: nama simpul
Tipe
: tipe data dari simpul
Tanda ^ di depan nama simpul harus di tulis seperti apa adanya dan menunjukkan bahwa pengenal adalah suatu tipe data pointer. Contoh :
D. Deklarasi Variabel Variabel adalah identifier yang berisi data yang dapat berubah nilainya di dalam program. Cara Penulisan : Var N1,N2, … = type data ; Contoh : Program Contoh Deklarasi Variabel ; Const Jml = 10; Harga = 1500; Var Total : integer; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 19
Potongan : real; Namabrg : string[25]; Begin write (‘Nama Barang : ‘);readln(namabrg); total := jml * harga ; potongan := 0.1 * total ; writeln (‘Total : ‘,total); writeln (‘Potongan : ‘,potongan); End. Beberapa hal yang perlu diperhatikan dalam membuat nama variabel : 1. Nama variabel hanya boleh terdiri dari abjad, bilangan & tanda hubung ( _ ) Contoh : nama no_bp no1 2. Nama variabel boleh dimulai oleh tanda hubung ( _ ) Contoh : _nama _bp jml_anak 3. Nama variabel tidak boleh dimulai oleh angka Contoh variabel yang salah : 3nm 1no_bp 50_bulan 4. Nama variabel tidak boleh menggunakan operator aritmatika seperti tanda : + - / * % Contoh variabel yang salah : nama+kecil jml%anak angka*lahir 5. Nama variabel tidak boleh menggunakan karakter-karakter khusus seperti tanda : # @ & ! ^ $ : ; . (titik) , (koma) Contoh variabel yang salah : nama&kecil no;bp status,anak jenis@alat
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 20
6. Nama variabel tidak boleh mengandung spasi Contoh variabel yang salah : nama kecil no bp jam kerja 7. Tidak boleh menggunakan nama fungsi atau kata-kata lain yang mempunyai arti khusus dalam Turbo Pascal (reserved words) kecuali digabungkan dengan kata-kata lain Contoh variabel yang salah : readln clrscr Contoh variabel yang benar : nama_read write_masuk 8. Turbo Pascal tidak membedakan antara huruf besar dan huruf kecil Contoh : NAMA nama
NO no
JUMLAH jumlah
E. Deklarasi Procedure Prosedur merupakan bagian yang terpisah dari program dan dapat di aktifkan dimanapun didalam program. Contoh : Procudure hitung (x, y : integer); F. Deklarasi Fungsi Blok fungsi hampir sama dengan prosedur hanya saja fungsi harus di deklarasikan dengan typenya. Contoh : Function hitung (x, y : integer) : integer ; 1.24 LATIHAN 1. Suatu persegi panjang dengan panjang = 50.5 dan lebar tidak diketahui (nilainya di inputkan). Carilah :
Luas = Panjang * Lebar Keliling = 2 * (Panjang + Lebar)
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 21 uses crt; var panjang, luas, lebar, keliling : real; begin clrscr; panjang := 50.5; writeln('Menghitung Luas Persegi Panjang'); write('Lebar : ');readln(lebar); luas := panjang * lebar; keliling := 2 * (panjang + lebar); writeln('Luas : ',luas:5:2); writeln('Keliling : ',keliling:5:2); end.
2. Hitunglah nilai diskriman (D = B2 – 4AC). Dimana nilai A=4, C = 2.5 sedangkan nilai dari B tidak diketahui (nilai B di inputkan). uses crt; var A,B,C,D : real; begin clrscr; A := 4; C := 2.5; writeln('Menghitung Nilai Diskriminan'); writeln('-----------------------------------'); writeln('Nilai A = ',A:4:2); writeln('Nilai C = ',C:4:2); write('Nilai B = ');readln(B); D := sqr(B) - 4 * A * C; writeln('Nilai Diskriminan = ',D:4:2); readln; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 22
BAB II TYPE DATA Type data adalah suatu kelas dari objek-objek data bersama-sama dengan himpunan operasi untuk membuat dan memanipulasinya. Setiap bahasa pemrograman mempunyai sekumpulan tipe data primitif yang menjadi bawaan bahasa tersebut (built in) dan ada juga yang menyediakan fasilitas bagi programer untuk mendefenisikan tipe data baru. 2.1
TYPE DATA SEDERHANA Merupakan tipe data dasar yang sering dipakai oleh program. Yang termasuk tipe data sederhana adalah : Type Ordinal Type Real Type Ordinal Yang termasuk tipe ordinal adalah : -
Type Integer Byte Shortint Word
-
Longint Char Boolean Enumerasi Subrange
Range -32768 s/d 32767 0 s/d 255 -128 s/d 127 0 s/d 65535 -2147483638 s/d 2147483647 1 Character True & False -----
Ukuran Memori 2 byte 1 byte 1 byte 2 byte 4 byte 1 byte 1 byte -----
Contoh : - Deklarasi type integer, byte, shortint, word, longint, char dan boolean : var nilai angka a, i, j huruf benar
: integer; : word; : byte; : char; : boolean;
- Deklarasi type Enumerasi, type ini dapat di defenisikan pada TYPE. Pada type anumerasi terdapat istilah pendahulu (predecessor) dan pengikut (successor).
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 23
uses crt; { Deklarasi type data anumerasi } type bulan = (Januari, Februari, Maret, April, Mei); var nama_bulan : bulan; begin clrscr; nama_bulan := Januari; { Dengan perintah Succ data akan menuju ke data berikutnya} nama_bulan := succ(nama_bulan); case nama_bulan of Januari : writeln('Januari'); Februari : writeln('Februari'); Maret : writeln('Maret'); April : writeln('April'); Mei : writeln('Mei'); end; writeln; nama_bulan := Mei; { Dengan perintah Pred data akan menuju ke data sebelumnya} nama_bulan := pred(nama_bulan); case nama_bulan of Januari : writeln('Januari'); Februari : writeln('Februari'); Maret : writeln('Maret'); April : writeln('April'); Mei : writeln('Mei'); end; readln; end.
Jika program diatas dijalankan maka di peroleh hasil tampilan seperti berikut : Februari April - Deklarasi type Subrange, merupakan type yang didefenisikan dengan menyebutkan kemungkinan nilai yang terbesar dan terkecil. Bentuk umum penulisan : Type nama_variabel = nilai_terkecil .. nilai_terbesar; uses crt; type huruf = (A,B,C,D,E,F,G,H,I,J,K,L,M,N, O,P,Q,R,S,T,U,V,W,X,Y,Z); var n1 : 1..26; { merupakan tipe sub range} h_awal,nama_huruf : huruf; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 24
begin clrscr; write('Nomor urutan huruf yang akan di tampilkan : ');readln(n1); h_awal := huruf(n1-1); writeln; write('Huruf dari urutan ',n1:2,' adalah : '); for nama_huruf := h_awal to Z do begin case nama_huruf of A : write(' A'); B : write(' B'); C : write(' C'); D : write(' D'); E : write(' E'); F : write(' F'); G : write(' G'); H : write(' H'); I : write(' I'); J : write(' J'); K : write(' K'); L : write(' L'); M : write(' M'); N : write(' N'); O : write(' O'); P : write(' P'); Q : write(' Q'); R : write(' R'); S : write(' S'); T : write(' T'); U : write(' U'); V : write(' V'); W : write(' W'); X : write(' X'); Y : write(' Y'); Z : write(' Z'); end; end; readln; end.
Type Real (Bilangan Pecahan) Yang termasuk tipe real adalah : 2.2
Type Real Single Double Extended Comp
Range 2.9 x 10 s/d 1.7 x 1038 1.5 x 10-45 s/d 3.4 x 1038 5.0 x 10-324 s/d 1.7 x 10308 5.0 x 10-4951 s/d 1.1 x 104932 -9.2 x 1018 s/d 1.1 x 1018 -39
Ukuran Memori 6 byte 4 byte 8 byte 10 byte 8 byte
TYPE DATA STRING String di gunakan untuk menangani data yang bertipe teks. Misalnya nama, alamat, asal_sekolah dan lain-lain. Di dalam Turbo Pascal, string dianggap sebagai array dari karakter. Suatu konstanta string di tulis dengan diapit oleh tanda petik tunggal (‘ ‘). Contoh : Const nama : string[20] = ‘AMIK-DP Kerinci’; Var alamat : string[30]; Begin Clrscr ; alamat := ‘Sungai Penuh’; writeln(nama); writeln(alamat);readln; End. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 25
2.3
TYPE DATA TERSTRUKTUR Type data terstruktur secara umum terdiri dari : 1. Type data Array 2. Type data Record 3. Type data Set (Himpunan) 4. Type data File (Berkas) 1. Type Array Merupakan type data yang mempunyai komponen dalam jumlah yang tetap dan setiap komponen mempunyai type data yang sama. Cara Penulisan : Type pengenal = array [type index] of type_data ; Contoh : Type Nilai = array [1..5] of real ; Jml = array [1..10] of array [1..5] of real ; atau Jml = array [1..10,1..5] of real ; 2. Type Rekaman (Record) Hampir sama dengan typa data array, perbedaannya bahwa dalam array semua elementnya harus bertipe sama sedangkan dalam rekaman (record) bisa sebaliknya. Contoh : Type
nilai = record NA : byte ; NH : char ; Rata_rata : real ; end ;
3. Type Himpunan (Set) Merupakan kumpulan obyek yang mempunyai tipe data yang sama dan urutan penulisannya tidak diperhatikan. Salah satu manfaat penggunaan type data set adalah untuk mengecek apakah suatu nilai muncul dalam suatu range tertentu.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 26
Contoh : uses crt; type huruf = set of char; { type set atau himpunan } var j_huruf : char; aksara : huruf; begin clrscr; write('Masukkan Nomor atau Huruf : ');readln(j_huruf); writeln; aksara:=['A'..'Z']; { pemberian nilai sebuah set/himpunan } if j_huruf in aksara then writeln(j_huruf,' Merupakan Karakter') else writeln(j_huruf,' Merupakan Numerik'); readln; end. 4. Type Berkas (File) Merupakan sejumlah komponen yang betipe data sama, yang jumlahnya tidak tertentu dan biasanya tersimpan dalam suatu media penyimpanan luar. Bentuk umum deklarasi type file : FILE OF
Contoh : Type
nilai = record NA : byte ; NH : char ; Rata_rata : real ; end ;
Var f_nilai : file of nilai; 2.4
TYPE DATA POINTER Pointer merupakan variabel yang nilainya berupa alamat atau lokasi memori dari data atau variabel lain. Type pointer di defenisikan dengan simbol ^ diikuti dengan tipe yang ditunjuk oleh pointer.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 27
Bentuk umum deklarasi type pointer : TYPE = ^ Secara umum pembagian type data dalam turbo pascal dapat digambar sebagai berikut :
Type Ordinal Type Sederhana Type Real
Integer ShortInt LongInt Boolean Char Byte Word Subrange Terbilang
Type String TYPE DATA
Type Terstruktur
Array Record Set (Himpunan) File (Berkas)
Type Pointer
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 28
BAB III STATEMENT INPUT / OUTPUT Input dan Output memegang peranan yang penting dalam suatu program, karena bagian dari program inilah yang membuka jalur komunikasi dengan manusia. 3.5
STATEMENT OUTPUT Merupakan proses untuk menampilkan data dalam media output (dapat berupa printer, monitor atau media lainnya). Untuk menampilkan proses tersebut, tentunya diperlukan adanya perintah-perintah atau fungsi-fungsi yang mengatur output tersebut. Dalam Pascal, salah satu fungsi yang paling umum adalah Write() atau Writeln(). 3.5.1
Fungsi Write() dan Writeln() Fungsi Write() dan Writeln() dapat digunakan untuk mencetak data baik yang bertipe numerik ataupun teks, baik konstanta ataupun variabel. Bentuk pernyataan Write() dan Writeln() : Write (, , … ) Writeln (, , … ) Contoh : Uses crt; begin write(‘AMIK Depati Parbo Kerinci ’); write(‘Jumlah 10 + 2 = ‘,12); end.
Contoh program diatas bila dijalankan akan memberikan hasil sebagai berikut : AMIK Depati Parbo Kerinci Jumlah 10 + 2 = 12 Jika kita lihat dari tampilan yang dihasilkan terlihat kurang indah dipandang dan sulit untuk di baca. Sebenarnya tampilan program dapat kita atur sesuai dengan selera kita.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 29
Contoh : Uses crt; begin writeln(‘AMIK Depati Parbo Kerinci ’); writeln(‘A’); writeln(‘Jumlah 10 + 2 = ‘,12); end.
Program diatas bila kita jalankan akan memberikan hasil sebagai berikut : AMIK Depati Parbo Kerinci A Jumlah 10 + 2 = 12 3.5.2
MENENTUKAN LEBAR FIELD (FIELD WIDTH SPECIFIER) Penentuan lebar field terkadang sangat diperlukan dalam suatu program terutama untuk menambah keindahan tampilan program. Misalnya untuk mencetak decimal dalam suatu program, terkadang terlalu panjang. Contoh : Uses crt; begin clrscr; writeln(‘Nilai
= ’, 5.5);
writeln(‘Jumlah = ‘, 25.62); end.
Contoh program diatas jika dijalankan akan memberikan hasil sebagai berikut : Nilai
= 5.5000000000E+00
Jumlah = 25.620000000E+01 Dilihat dari tampilan yang dihasilkan dari contoh program diatas meskipun hasilnya sudah benar tetapi tidak sesuai dengan tampilan yang kita harapkan. Angka desimal yang dihasilkan sebenarnya dapat anda atur sesuai dengan keinginan saudara sehingga tampilan program terlihat lebih indah.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 30
Contoh : Uses crt; begin clrscr; writeln(‘Nilai
= ‘, 5.5:2);
writeln(‘Jumlah = ‘, 5.5:2:2); writeln(‘Angka = ‘, 25.62:2:2); end.
Contoh program diatas jika dijalankan akan memberikan hasil sebagai berikut : Nilai
= 5.5E+00
Jumlah
= 5.50
Angka
= 25.62
Pengaturan lebar field juga berlaku untuk data yang bertipe integer. Bila lebar field ditentukan, data umumnya di cetak/ditampilkan rata kanan. Sebagai ilustrasi bandingkan kedua hasil/tampilan program dibawah ini : Uses crt; Begin Clrscr; writeln(“Nilai
= ”,12);
write(“Jumlah = ”,156); end.
Uses crt; Begin Clrscr; writeln(“Nilai
= ”,12:8);
write(“Jumlah = ”,156:8); end.
3.5.3
MENCETAK KODE ASCII Untuk mencetak kode ASCII digunakan notasi : Chr(angka_desimal)
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 31
Contoh : Uses crt Begin clrscr; writeln (chr(73),chr(32),chr(77),chr(73),chr(83), chr(83),chr(32),chr(89)chr(79),chr(85)); readln; end.
3.6
STATEMENT INPUT Fungsi input digunakan untuk memasukkan data untuk selanjutnya diproses oleh komputer sebelum dikeluarkan dengan fungsi output. 3.6.1
FUNGSI READ() DAN READLN() Penggunaan Read() atau Readln() seringkali dikombinasikan bersama dengan fungsi Write() atau Writeln() untuk sekedar memberi keterangan tentang data apakah yang harus dimasukkan dalam Read() atau Readln(), karena fungsi Read() atau Readln() itu sendiri tidak dapat digabungkan dengan teks. Bentuk umum penggunaan fungsi Read() atau Readln() : read (variabel_1, variabel_2, … variabel_n); readln (variabel_1, variabel_2, … variabel_n);
Perbedaan antara Read() atau Readln() : Read()
: Jika ada kelebihan data (yang dimasukkan melalui keyboard), data tersisa akan dimasukkan ke variabel pada pernyataan Read() atau Readln() selanjutnya.
Readln()
: Jika ada kelebihan data, data tersisa akan diabaikan.
Contoh : { -------------------------------------------------------- } { Contoh Program Penggunaan Write dan Read } { -------------------------------------------------------- } Uses crt Var nama : string[25]; bp : string[8]; mtk : string[25]; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 32
mid, sem,rata : real; Begin clrscr; write(‘Nama Mahasiswa
: ‘);readln(nama);
write(‘Nomor Bp
: ‘);readln(bp);
write(‘Matakuliah
: ‘);readln(mtk);
write(‘Nilai Mid: ‘);readln(mid); write(‘Nilai Semester
: ‘);readln(sem);
rata := 0.4 * mid + 0.6 * sem; write(‘Nilai Rata-rata
: ‘,rata:4:2);
readln; end.
3.7
MENCETAK KE PRINTER Selain menampilkan data dilayar monitor, turbo pascal juga menyediakan fasilitas untuk menampilkan data di printer dengan menggunakan perintah Lst. Contoh : Uses printer; Begin Writeln(lst,’Hanafa Azzahra’); Wtiteln(lst,’Ferdinal’); End.
3.8
LATIHAN 1. Buatlah program untuk menampilkan luas persegi panjang dengan ketentuan sebagai berikut : Luas = Panjang * Lebar Nilai dari variabel Panjang dan lebar di inputkan Ketentuan variabel yang digunakan : Nama Variabel
type data
keterangan
Panjang Lebar Luas
integer integer integer
Panjang Persegi Panjang Lebar Persegi Panjang Luas Persegi Panjang
Bentuk Tampilan : Panjang = ……. M Lebar = ……. M Jadi Luas Persegi Panjang = ……… M2 Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 33 uses crt; var panjang, lebar, luas : integer; begin clrscr; writeln('Menghitung Luas Persegi Panjang'); writeln('-----------------------------------------'); writeln; write('Panjang : ');readln(panjang); write('Lebar : ');readln(lebar); luas := panjang * lebar; writeln('Jadi Luas Persegi Panjang : ',luas); readln; end.
2. Buatlah suatu program untuk menghitung nilai rata-rata mahasiswa, dengan rumus sebagai berikut : Nilai_rata = 0.6 * nilai_sem + 0.4 * nilai_mid Bentuk tampilan : Nama Mahasiswa
: ……………
Nomor Bp
: ……………
Nama Matakuliah
: ……………
Nilai Mid
: ……………
Nilai Semester
: ……………
Nilai Rata-rata
: ……………
Ketentuan variabel yang digunakan : Nama Variabel
type data
keterangan
Nama
string
Nama Mahasiswa
Bp
string
Nomor Bp
Mtk
string
Nama Matakuliah
Mid
real
Nilai Mid Semester
Sem
real
Nilai Semester
NA
real
Nilai Rata-rata
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 34 uses crt; var nama : string[20]; bp : string[9]; mtk : string[20]; mid, sem, na : real; begin clrscr; writeln('Menghitung Nilai Mahasiswa'); writeln('----------------------------------'); write('Nama Mahasiswa : ');readln(nama); write('Nomor Bp.
: ');readln(bp);
write('Matakuliah
: ');readln(mtk);
write('Nilai Mid
: ');readln(mid);
write('Nilai Semester
: ');readln(sem);
na := 0.4 * mid + 0.6 * sem; writeln('Nilai Rata-rata
: ',na:4:2);
readln; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 35
BAB IV OPERASI ARITMATIKA Operasi aritmatika hampir selalu dapat anda jumpai pada setiap program, baik programprogram untuk masalah-masalah teknik maupun masalah-masalah umum lainnya. 4.1
OPERATOR ARITMATIKA Operator aritmatik ada yang bersifat binary dan ada yang bersifat unary. Suatu operator termasuk binary jika operator melibatkan dua buah operand sedangkan yang termasuk unary jika operator hanya melibatkan sebuah operand. Contoh : a*b
→ bersifat binary
*b
→ bersifat unary
Daftar Operator Aritmatik Operator Type Argument
Type Hasil
Tujuan
Real – Real Real – Integer Integer – Integer Real – Real Real – Integer Integer – Integer Real – Real Real – Integer Integer – Integer Real – Real Real – Integer Integer – Integer
Real Real Integer Real Real Integer Real Real Integer Real Real Real
div
Integer – Integer
Integer
Pembagian bilangan bulat
mod
Integer – Integer
Integer
Sisa pembagian
+ * /
Penjumlahan Pengurangan Perkalian Pembagian
Fungsi Standard untuk Operasi Aritmatik Operator Type Argument
Type Hasil
Abs(x)
Integer Real
Integer Real
Sqr(x)
Integer Real
Integer Real
Tujuan Menghitung nilai absulut atau mutlak dari x Menghitung kodrat (pangkat 2) dari x Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 36
Operator Type Argument
Type Hasil
Tujuan
Sin(x)
Integer Real
Real Real
Menghitung nilai sinus dari x
Cos(x)
Integer Real
Real Real
Menghitung nilai cosinus dari x
Arctan(x)
Integer Real
Real Real
Menghitung nilai arctangen dari x
Exp(x)
Integer Real
Real Real
Ln(x)
Integer Real
Real Real
Sqrt(x)
Integer Real
Real Real
Akar x
Trunc(x)
Integer Real
Integer
Pemotongan nilai
Round(x)
Integer Real
Integer
Pembulatan nilai
Menghitung nilai bilangan pokok © dengan pangkat x Menghitung logaritma dengan bilangan pokok x
Contoh : 1. F =
a − b + c2
→ Sqrt(Abs(a - b) + Sqr(c))
2. F = Trunc(45,65) → 45 3. F = Round(45,65) → 46 4.2
HIERARKI OPERATOR ARITMATIKA Dalam suatu ekspresi matematika anda sering menjumpai penggunaan beberapa operator Aritmatika yang berbeda secara bersamaan. Jika anda menjumpai hal tersebut maka pengetahuan tentang hierarki operator aritmatika menjadi hal yang sangat penting untuk anda ketahui. Hierarki Operator Aritmatika dalam Turbo Pasal Hierarki
Operator
1
()
Operasi Operasi aritmatika yang terletak dalam tanda kurung ‘( )’ akan didahulukan Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 37
4.3
Hierarki
Operator
Operasi
2
*, /, div, mod
3
+, -
Tergantung letak, yang didepan yang didahulukan
OPERATOR BOOLEAN Dalam turbo pascal terdapat 4 (empat) buah operator boolean yaitu : 1. Operator Not 2. Operator And 3. Operator Or 4. Operator Xor Sifat-sifat Operasi Operator Boolean : Operator AND OR XOR NOT
Sifat Operasi Jika salah satu operand bernilai False, maka hasil operasi akan bernilai False Jika salah satu operand bernilai True, maka hasil operasi akan bernilai True Jika hanya satu operand yang bernilai True, hasil operasi akan bernilai True Jika operand bernilai True, maka hasil operasinya bernilai False begitu juga sebaliknya.
Untuk lebih jelasnya, hasil operasi berbagai And, Or, Xor dan Not untuk berbagai kemungkinan nilai operand, dapat dilihat pada tabel dibawah ini :
4.4
Operand 1
Operand 2
False False True True
False True False True
Hasil Operasi And Or Xor False False False False True True False True True True True False
OPERATOR RELATIONAL (HUBUNGAN) Operator relasi digunakan untuk membandingkan nilai dua ekspresi aritmatika yang berbeda. Operator hubungan dapat dikenakan pada berbagai jenis operand, seperti, byte, char, integer dan boolean. Kedua operand harus bertipe sejenis atau bersifat kompatibel. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 38
Daftar Operator Relational (Hubungan) Operator =
Keterangan Sama dengan
<>
Tidak sama
>
Lebih besar
<
Lebih kecil
>=
Lebih besar atau sama dengan
<=
Lebih kecil atau sama dengan
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 39
BAB V STRUCTURE DICISION (STATEMENT IF DAN CASE) Seleksi dalam Pascal dipakai untuk mengontrol jalannya program agar memilih salah satu dari sekian banyak kondisi. Pascal menyediakan 2 (dua) struktur untuk melakukan seleksi, yaitu : 1. Struktur IF 2. Struktur CASE 5.4 STRUKTUR IF Statement IF membagi suatu alur proses menjadi dua cabang, berdasarkan persyaratan yang diberikan. Cabang yang pertama dijalankan bila persyaratan dipenuhi, sedangkan cabang kedua dijalankan apabila persyaratan tidak dipenuhi. Bila satu keadaan yang dapat dipilih dalam statement IF mengandung lebih dari satu pernyataan, maka pernyataan-pernyataan tersebut dimasukkan dalam blok Begin dan End. Dalam bentuk diagram alir proses percabangan IF dapat digambarkan sebagai berikut : Struktur If … Then … If Kondisi True Then
IF
Pernyataan ; False
True Pernyataan
Struktur If … Then … Else
IF True Pernyataan Pernyataan
False Pernyataan Pernyataan
If Kondisi True Then Begin Pernyataan; Pernyataan; End else { jika tidak } Begin Pernyataan; Pernyataan; End;
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 40
Contoh :
1. If A = X then Begin C := ……. ; D := ……. ; End Else If A = Z then E := ……. ; Else Begin F := ……. ; G := ……. ; End; 2.
If A < 0 then Write(‘Nilai : ‘,A); Else Begin If A = 0 then Begin A1 = …….. ; A2 = …….. ; End Else Begin A1 = …….. ; A2 = …….. ; End; Writeln(A1); Writeln(A2); End; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 41
5.5 STRUKTUR CASE Perintah Case memiliki sifat yang hampir sama dengan If .. Else, namun penggunaannya lebih sempit, karena perintah ini hanya khusus untuk memeriksa data yang bertipe karakter dan integer. Perintah Case ini juga digunakan untuk menyelesaikan program yang memiliki banyak cabang atau alternatif. Bentuk penulisan perintah CASE : Case Of Konstanta_1 : Statement_1; Konstanta_2 : Statement_2; Konstanta_3 : Statement_3; Konstanta_4 : Statement_4; … Konstanta_N : Statement_5; End;
Dimana variabel adalah nama variabel yang sudah dideklarasikan sebelumnya, dan konstanta_1 sampai konstanta_N
adalah harga yang dibandingkan dengan harga
variabel. Perintah statement_1 akan dilaksanakan apabila nilai konstanta_1 sama dengan nilai variabel, statement_2 akan dilaksanakan apabila nilai konstanta_2 sama dengan nilai variabel, dan seterusnya. Bila satu keadaan yang dapat dipilih dalam statement CASE mengandung lebih dari satu pernyataan (statement), maka pernyataan-pernyataan tersebut dimasukkan dalam blok Begin dan End. Bentuk penulisan perintah CASE dengan lebih dari satu statement : Case Of Konstanta_1 : Begin Statement_1; Statement_2; Statement_N; End; Konstanta_2 : Begin Statement_1; Statement_2; Statement_N; End; … Konstanta_N : Begin Statement_1; Statement_2; Statement_N; End; End; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 42
Bila konstanta terdiri dari lebih dari satu nilai, antara satu nilai dengan nilai berikutnya dipisahkan dengan tanda koma. Sedangkan untuk konstanta yang bernilai subrange maka antara nilai konstanta terkecil dengan nilai konstanta terbesar digunakan tanda ‘..’ (titik dua kali). Contoh : Case aksara of ‘a’ , ‘A’ : writeln (“Karakter Pertama”); ‘b’ , ‘B’ : writeln (“Karakter Kedua”); ‘a’ .. ‘z’ : writeln (“Merupakan Karakter”); 1 .. 99 : writeln (“Merupakan Numerik”); End;
5.6 LATIHAN 1. Dari persamaan kuadrat ax2 + bx + c = 0 dapat diketahui nilai akarnya berdasarkan diskriminannya (D) yaitu D = B2 – 4AC. Jika D < 0 → tidak didapat akar nyata Jika D = 0 → di dapat dua akar kembar yaitu x1 = x 2 = − B 2 A Jika D > 0 → di dapat dua akar yaitu x 2 = (− B − D ) 2 A
Data yang diinputkan adalah A, B, C dengan syarat A ≠ 0, jika A = 0 maka proses dihentikan. { Program menghitung persamaan kuadrat }
uses crt; var A, B, C , D, x1, x2 : real; begin clrscr; writeln('MENGHITUNG PERSAMAAN KUADRAT'); writeln('----------------------------------------------'); writeln; write('Input Nilai A : ');readln(A); write('Input Nilai B : ');readln(B); write('Input Nilai C : ');readln(C); writeln; if A = 0 then exit else begin D := sqr(B)-4*A*C; if D < 0 then writeln('Akar tidak nyata') else begin Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 43
if D = 0 then begin x1 := -B / 2 * A; x2 := -B / 2 * A; end else begin x1 := (-B+sqrt(D))/2 * A; x2 := (-B-sqrt(D))/2 * A; end; writeln('Nilai X1 = ',x1:4:2); writeln('Nilai X2 = ',x2:4:2); end; end; readln; end. 2. Buatlah suatu program untuk menghitung nilai rata-rata mahasiswa, dengan rumus sebagai berikut : Nilai_rata = 0.6 * nilai_sem + 0.4 * nilai_mid Bentuk tampilan Input : Nama Mahasiswa
: ……………
Nomor Bp
: ……………
Nama Matakuliah
: ……………
Nilai Mid
: ……………
Nilai Semester
: ……………
Bentuk tampilan Output : Nama Mahasiswa
: ………….
Nomor Bp
: ………….
No
Matakuliah
Nil. Mid
Nil. Sem Nil. Rata
NA
NH
Ketentuan variabel yang digunakan : Nama Variabel
type data
keterangan
Nama
string
Nama Mahasiswa
Bp
string
Nomor Bp
Mtk
string
Nama Matakuliah
Mid
real
Nilai Mid Semester
Sem
real
Nilai Semester Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 44
Rata
real
Nilai Rata-rata
NA
byte
Nilai Angka
NH
char
Nilai Huruf
Ketentuan proses : Nilai NA dan NH diperoleh dari perhitungan nilai rata-rata dimana : Jika Nilai rata-rata > 80 maka NA = 4, NH = ‘A’ Jika Nilai rata-rata > 70 maka NA = 3, NH = ‘B’ Jika Nilai rata-rata > 60 maka NA = 2, NH = ‘C’ Jika Nilai rata-rata > 50 maka NA = 1, NH = ‘D’ Jika Nilai rata-rata < 50 maka NA = 0, NH = ‘E’ { Program Menghitung Nilai Mahasiswa }
uses crt; var nama, mtk : string[25]; bp : string[8]; i, na : byte; nh : char; mid, sem, rata : real; begin clrscr; i := 0; writeln('ENTRY DATA NILAI MAHASISWA'); writeln('----------------------------------------'); writeln; write('Nama Mahasiswa: ');readln(nama); write('Nomor Bp : ');readln(bp); write('Matakuliah : ');readln(mtk); write('Nilai Mid : ');readln(mid); write('Nilai Semester : ');readln(sem); rata := 0.4 * mid + 0.6 * sem; if (rata <= 100) and (rata >= 80) then begin nh := 'A'; na := 4; end else if (rata < 80) and (rata >= 70) then begin nh := 'B'; na := 3; end else if (rata < 70) and (rata > 60) then Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 45
begin nh := 'C'; na := 2; end else if (rata <= 60) and (rata > 50) then begin nh := 'D'; na := 1; end else begin nh := 'E'; na := 0; end; clrscr; i := i + 1; writeln; writeln('Nama Mahasiswa : ',nama); writeln('Nomor Bp : ',bp); writeln('------------------------------------------------------------------------'); writeln(' No Matakuliah Nil.Mid Nil.Sem Rata-rata NA NH'); writeln('------------------------------------------------------------------------'); writeln(i:2,' ',mtk,' ',mid:4:2,' ',sem:4:2,' ',rata:4:2,' ',na,' ',nh); writeln('------------------------------------------------------------------------'); readln; end. 3. Sebuah hotel ingin mengetahui jumlah pembayaran kamar oleh pelanggan yang menginap di hotel tersebut. Untuk itu diperlukan suatu program untuk menghitung besarnya biaya yang harus dikeluarkan oleh pelanggan hotel berdasarkan jumlah hari dan jenis kamar yang pakai Ketentuan Proses : Tarif kamar dan jenis kamar diperoleh dari
Jika kd_kamar = ‘1’ maka jns_kamar ‘VIP 1’ dengan tarif = 125.000 Jika kd_kamar = ‘2’ maka jns_kamar ‘VIP 2’ dengan tarif = 100.000 Jika kd_kamar = ‘3’ maka jns_kamar ‘VIP 3’ dengan tarif = 95.000 Jika kd_kamar = ‘4’ maka jns_kamar ‘Kelas’ dengan tarif = 70.000 Jika lama menginap lebih dari 4 hari maka pelanggan akan mendapat discount
sebesar 10% dari jumlah tarif dan lama menginap Jumlah bayar = lama inap * tarif – discount Ketentuan Variabel yang digunakan :
Untuk definisi variabel yang digunakan ditentukan sendiri ! Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 46
Disain Input >> ENTRY DATA PELANGGAN HOTEL << ------------------------------------------------------------
Nama Pelanggan Alamat Pelanggan Tanggal Masuk Kode Kamar Jenis Kamar Tarif Kamar Nomor Kamar Lama Menginap
: ...... : ...... : ...... : ...... : ...... : Rp. …………...... : ...... : ......
Disain Ouput
Nama Pelanggan : …………………. ----------------------------------------------------------------------------------------No Jns_Kmr Trf_Kmr No_Kmr Lm_Inap Discount Jml_Bayar ----------------------------------------------------------------------------------------1 xxxxx 999999 99 999 999999 999999 ----------------------------------------------------------------------------------------{ Program menghitung tarif kamar hotel }
uses crt; var nama : string[20]; alt : string[25]; tgl : string[12]; kode_k : char; jns_k : string[15]; trf_k : longint; no_k : string[5]; lama : integer; disc, jml_bayar : real; begin clrscr; writeln('>> ENTRY DATA PELANGGAN HOTEL <<'); writeln('--------------------------------------------------'); write('Nama Pelanggan : ');readln(nama); write('Alamat Pelanggan : ');readln(alt); write('Tanggal Masuk : ');readln(tgl); write('Kode Kamar : ');readln(kode_k); if (kode_k = '1') then begin jns_k := 'VIP 1'; trf_k := 125000; end else if (kode_k = '2') then begin Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 47
jns_k := 'VIP 2'; trf_k := 100000; end else if (kode_k = '3') then begin jns_k := 'VIP 3'; trf_k := 95000; end else if (kode_k = '4') then begin jns_k := 'Kelas'; trf_k := 75000; end else begin jns_k := ' '; trf_k := 0; end; writeln('Jenis Kamar : ',jns_k); writeln('Tarif Kamar : Rp. ',trf_k); write('Nomor Kamar : ');readln(no_k); write('Lama Menginap : ');readln(lama); if lama > 4 then disc := 0.1 * trf_k * lama else disc := 0; jml_bayar := lama * trf_k - disc; writeln; writeln('Nama Pelanggan : ',nama); writeln('------------------------------------------------------------------'); writeln('Jns_Kamar Trf_Kamar Lm_Inap Discount Jml_Bayar'); writeln('------------------------------------------------------------------'); writeln(jns_k,' ',trf_k,' ',lama,' ',disc:8:0,' ',jml_bayar:9:0); writeln('------------------------------------------------------------------'); readln; end. 4. Sebuah perusahaan air minum (PDAM) ingin menghitung rekening/ jumlah tagihan yang harus dibayar pelanggan tiap bulannya, format output/tampilan yang diinginkan adalah sebagai berikut : Disain Input PDAM DAERAH X DAFTAR PEMAKAIAN AIR/M3 -------------------------------------------Nomor Rekening : .......... Nama Pelanggan : .......... Kode Wilayah : .......... Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 48
Jenis Pelanggan Meter Bulan Lalu Meter Bulan Ini
: .......... : .......... : ..........
Bentuk Output PDAM DAERAH X DAFTAR PEMBAYARAN REKENING AIR
Nomor Rekening : Nama Pelanggan : --------------------------------------------------------------------------------------MBA MBI Terpakai Hrg_Air Dana_M Dana_Adm Jml_Tagih --------------------------------------------------------------------------------------999 999 999 9999 9999 9999 999999 --------------------------------------------------------------------------------------Ketentuan Proses : -
Jumlah pemakaian air, Pakai = MBA – MBI
-
Harga air perkubik diperoleh dari : Jika jenis langganan = ‘1’ maka harga air = 150 perkubik Jika jenis langganan = ‘2’ maka harga air = 200 perkubik Jika jenis langganan = ‘3’ maka harga air = 250 perkubik Jika jenis langganan = ‘4’ maka harga air = 275 perkubik
-
Dana administrasi dan dana meteran diperoleh berdasarkan kode wilayah : Jika kode wilayah = ‘a’ maka dana_adm = 1500, dana_m = 850 Jika kode wilayah = ‘b’ maka dana_adm = 1750, dana_m = 1000 Jika kode wilayah = ‘c’ maka dana_adm = 2000, dana_m = 1500 Jika kode wilayah = ‘d’ maka dana_adm = 2500, dana_m = 2000
-
Jumlah tagihan = pemakaian * harga air + dana_m + dana_adm
Ketentuan Variabel yang digunakan :
Untuk definisi variabel yang digunakan ditentukan sendiri ! Program menghitung_jumlah_tagihan_pemakaian_air;
uses crt; var no_rek : string[6]; nm_lang : string[25]; kd_wil,jns_lang : char; mba,mbi,i,pakai,hrg_air,dana_m,dana_adm : integer; jml_tagih : longint; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 49
begin clrscr; gotoxy(2,2);write('PDAM DAERAH'); gotoxy(2,3);write('DAFTAR PEMAKAIAN AIR/M3'); gotoxy(2,4);write('---------------------------------------'); gotoxy(2,6);write('Nomor Rekening : ');readln(no_rek); gotoxy(2,7);write('Nama Pelanggan : ');readln(nm_lang); gotoxy(2,8);write('Kode Wilayah : ');readln(kd_wil); gotoxy(2,9);write('Jenis Pelanggan : ');readln(jns_lang); gotoxy(2,10);write('MBA : ');readln(mba); gotoxy(2,11);write('MBI : ');readln(mbi); pakai:=mba-mbi; case jns_lang of '1' : hrg_air := 150; '2' : hrg_air := 200; '3' : hrg_air := 250; '4' : hrg_air := 275; end; case kd_wil of 'a','A' : begin dana_m := 850; dana_adm := 1500; end; 'b','B' : begin dana_m := 1000; dana_adm := 1750; end; 'c','C' : begin dana_m := 1500; dana_adm := 2000; end; 'd','D' : begin dana_m := 2000; dana_adm := 2500; end; end; jml_tagih := pakai * hrg_air + dana_m + dana_adm; clrscr; gotoxy(2,5);write('PDAM DAERAH X'); gotoxy(2,6);write('DAFTAR REKENING'); gotoxy(2,8);write('Nomor Rekening : ',no_rek); gotoxy(2,9);write('Nama Langganan : ',nm_lang); gotoxy(2,10);write('---------------------------------------------------------------------------'); gotoxy(2,11);write('MBA MBI Terpakai Harga_Air Dana_M Dana_Adm Jml_Tagihan'); gotoxy(2,12);write('---------------------------------------------------------------------------'); gotoxy(3,13);write(mba:4); gotoxy(9,13);write(mbi:4); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 50
gotoxy(16,13);write(pakai:4); gotoxy(28,13);write(hrg_air); gotoxy(37,13);write(dana_m); gotoxy(46,13);write(dana_adm); gotoxy(56,13);write(jml_tagih); gotoxy(2,14);write('---------------------------------------------------------------------------'); readkey; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 51
BAB VI STRUCTURE LOOP (STATEMENT FOR / WHILE / REPEAT) Pernyataan pengulangan (looping) merupakan pernyataan yang berfungsi untuk mengeksekusi suatu pernyataan lain secara berulang-ulang, dengan jumlah pengulangan tergantung dari persyaratan yang diberikan. Dalam Turbo Pascal, proses pengulangan ini dimungkinkan dengan disediakannya berbagai perintah loop, dimana setiap perintah loop memiliki keunikannya sendiri. Dalam Turbo Pascal terdapat 3 macam struktur pengulangan (loop) : 1. Struktur For 2. Struktur While 3. Struktur Repeat .. Until 6.5
STRUKTUR FOR
Bentuk umum pernyataan For adalah sebagai berikut : Perulangan positif (counter naik setiap dilakukan perulangan) For := to do Begin … … Statement ; … … End; Perulangan negatif (counter mundur/turun setiap perulangan) For := downto do Begin … … Statement ; … … End;
Argument dari pernyataan For terdiri dari tiga bagian : variabel, nilai_awal dan nilai_akhir. Variabel merupakan nama variabel untuk menampung nilai awal dan nilai akhir dari
suatu pengulangan. Nilai awal merupakan nilai awal pengulangan dilakukan Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 52
Nilai akhir adalah nilai batas maksimum pengulangan
Baik variabel, nilai_awal maupun nilai_akhir harus memiliki type data yang sama atau kompatibel, dan tipe yang digunakan adalah dalam bentuk tipe integer (bilangan bulat) dan tipe char (karakter). Contoh : 1. Program untuk menampilkan bilangan 1 hingga 5 serta total dari seluruh bilangan tersebut. { Contoh Program Penggunaan For secara manaik } Uses crt Var i, tot : integer; Begin clrscr; tot := 0; For i := 1 to 5 do begin writeln(i); tot := tot + i; end; writeln(‘-----‘); writeln(tot); readln; end. Jika program diatas dijalankan maka diperoleh hasil sebagai berikut : 1 2 3 4 5 ---15 2. Program untuk menampilkan bilangan 10 hingga 1 serta total dari seluruh bilangan tersebut. { Contoh Program Penggunaan For secara menurun } Uses crt Var i, tot : integer; Begin clrscr; tot := 0; For i := 10 downto 1 do begin Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 53
writeln(i); tot := tot + i; end; writeln(‘-----‘); writeln(tot); readln; end.
Output program diatas : 10 9 8 7 6 5 4 3 2 1 ---55 6.6
STRUKTUR WHILE
Pengulangan dengan While merupakan suatu bentuk pengulangan yang mirip dengan For, namun dengan bentuk yang lebih sederhana. Pernyataan While ini merupakan
pengulangan yang dikendalikan oleh suatu syarat tertentu, dalam arti pengulangan akan terus dilaksanakan selama syarat tersebut terpenuhi. Bentuk umum pernyataan while : While <syarat> do Begin … … Statement ; … … End;
Contoh : 1. Program untuk menampilkan bilangan bulat 1 hingga 8 beserta totalnya. { Contoh Program Penggunaan While } Uses crt Var tot, i : integer; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 54
Begin clrscr; tot := 0; i := 1; while i <= 8 do begin tot := tot + i; writeln(i,’ ‘,tot); i := i + 1; end; end. Jika program diatas dijalankan maka diperoleh output sebagai berikut :
6.7
1
1
2
3
3
6
4
10
5
15
6
21
7
28
8
36
STRUKTUR REPEAT .. UNTIL
Pada statement Repeat..Until pengulangan akan dieksekusi selama kondisi tidak terpenuhi. Bentuk umum pernyataan Repeat..Until : Repeat … … Statement ; … … Until
Dimana kondisi merupakan sebuah ekspresi boolean. Jika kondisi bernilai true maka perulangan akan dihentikan dan statement tidak dijalankan lagi, dan sebaliknya jika kondisi bernilai false statement dijalankan lagi. Contoh : 1. Program untuk menampilkan bilangan bulat 1 hingga 8 beserta totalnya. { Contoh Program Penggunaan Repeat..Until } Uses crt Var Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 55
tot, i : integer; Begin clrscr; tot := 0; i := 1; repeat tot := tot + i; writeln(i,’ ‘,tot); i := i + 1; until i > 8 ; readln; end. Jika program diatas dijalankan maka diperoleh output sebagai berikut :
6.8
1
1
2
3
3
6
4
10
5
15
6
21
7
28
8
36
LATIHAN
1. Buatlah sebuah program untuk menghitung total bilangan genap yang terletak diantara 0 sampai dengan 20 Program menghitung_total_bilangan_genap;
uses crt; var i,tot : integer; begin clrscr; tot := 0; for i := 0 to 20 do begin if (i mod 2 = 0) then begin tot := tot + i; writeln(i,' ',tot); end; end; readkey; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 56
2. Buatlah sebuah program untuk menghitung total bilangan ganjil yang terletak diantara 0 sampai dengan 20 Program menghitung_total_bilangan_ganjil;
uses crt; var i,tot : integer; begin clrscr; tot := 0; for i := 0 to 20 do begin if (i mod 2 <> 0) then begin tot := tot + i; writeln(i,' ',tot); end; end; readkey; end. 3. Hitunglah nilai faktorial sebuah bilangan bulat positif, bila rumus untuk faktorial adalah sebagai berikut : Faktorial dari n (n!) = n*(n-1)*…*2*1 Misalnya : 3 ! = 3*2*1 = 6 4 ! = 4*3*2*1=24 Khusus untuk 0 ! = 1 Input
: Bilangan bulat
Output
: Faktorial
Program menghitung_nilai_faktorial;
uses crt; var fak, i, nilai : integer; begin clrscr; nilai := 1; write('Input Sebuah Bilangan : ');readln(fak); for i := fak downto 1 do nilai := nilai * i; writeln('Nilai Faktorial dari ',fak,' = ',nilai); readkey; end. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 57
4. Buatlah sebuah program untuk menghitung gaji harian pegawai, serta total gaji yang dibayarkan oleh PT. MAKMUR kepada para karyawannya, bila gaji seorang karyawan ditentukan sebagai berikut : Gaji per jam = 750 Bila jumlah jam kerja hari itu > 8 jam, maka kelebihannya dihitung lembur yang besarnya 1.5 x gaji per jam Seluruh karyawan PT. MAKMUR berjumlah 10 orang Sebagai input : Jumlah jam kerja setiap pegawai Sebagai output : gaji harian pegawai dan total gaji seluruh pegawai Program menghitung_jumlah_gaji_perjam;
uses crt; var jam_kerja, gaji : longint; total_gaji : real; mad : char; begin clrscr; mad := 'Y'; gaji := 15000; while (upcase(mad)='Y') do begin clrscr; write('Input Jumlah Jam Kerja : ');readln(jam_kerja); if (jam_kerja > 8) then total_gaji := gaji * 8 + (jam_kerja - 8)*1.5*gaji else total_gaji := gaji * jam_kerja; writeln; writeln('Gaji Harian : ',total_gaji:8:0); writeln;write('Masih Ada Data [Y/T] : ');mad:=readkey; if (upcase(mad)='T') then exit; end; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 58
BAB VII ARRAY Array merupakan kelompok data sejenis, yang disimpan ke dalam variabel dengan nama yang sama, hanya sekarang variabel-variabel ini diberi indeks untuk membedakan antara yang satu dengan yang lainnya. 7.6
DEKLARASI VARIABEL ARRAY
Struktur variabel array satu dimensi ditulis sebagai berikut : type tipe_array = array [range_indeks] of tipe_data ; var variabel_array : tipe_array;
atau dapat langsung di tulis : var variabel_array : array [range_indeks] of tipe_data;
variabel_array adalah nama variabel yang dipakai untuk mengidentifikasi array. Range-indeks adalah batasan indeks yang digunakan untuk mengidentifikasi elemen array. Range_indeks menentukan jumlah elemen array, yang jumlahnya tidak akan berubah mulai saat awal program dijalankan sampai program selesai dijalankan. Tipe_data adalah tipe data untuk elemen array. Tipe data untuk elemen array dapat berupa integer, char, boolean, enumerasi (yang termasuk tipe data ordinal kecuali tipe data real atau double) dan dapat juga berupa tipe data terstruktur seperti array. Contoh : 1. type data_nilai = array [1..10] of integer; var nilai : data_nilai; atau var nilai : array [1..10] of integer;
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 59
2. Penggunaan tipe data enumerasi buatan user type nilai_aksara = (a, b, c, d, e, f, g, h); var huruf : array [nilai_aksara] of boolean; 7.7
ARRAY SATU DIMENSI
Struktur array satu dimensi memiliki satu macam indeks yang dituliskan seperti berikut ini : type tipe_array = array [range_indeks] of tipe_data ; var variabel_array : tipe_array; atau var variabel_array : array [range_indeks] of tipe_data;
Contoh : 1. { Contoh Program Penggunaan Array Satu Dimensi } Uses crt Var i, jml : integer; bil : array [1..100] of integer; Begin clrscr; write(‘Input Jumlah Pengulangan : ‘); readln(jml); For i := 1 to jml do begin write(‘Bilangan ke_’,i,’ = ‘);readln(bil[i]); end; For i := 1 to jml do begin writeln(‘Bilangan ke_’,i,’ = ‘,bil[i]); end; readln; end. 2. { Program Mencari Nilai Maksimum dan Minimum } Uses crt; Var mak,min : integer; bil : array [1..50] of integer; i,jml : byte; Begin clrscr; write('Input Jumlah Data : ');readln(jml); For i:= 1 to jml do begin write('Nilai ke_',i,' = ');readln(bil[i]); end; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 60
mak:=0; min:=20000; For i:= 1 to jml do begin if bil[i] > mak then mak := bil[i]; if bil[i] < min then min := bil[i]; end; writeln;writeln('Nilai Maksimum = ',mak); writeln;writeln('Nilai Minimum = ',min); readkey; end.
7.8
ARRAY DUA DIMENSI
Struktur array dua dimensi memiliki dua macam range indeks yang dituliskan seperti berikut ini : type tipe_array =
array [range_indeks1] of [range_indeks2] of tipe_data ;
atau
tipe_array =
array [range_indeks1, range_indeks2] of tipe_data ;
var variabel_array : tipe_array;
atau dapat langsung di tulis : var variabel_array : array [range_indeks1] of [range_indeks2] of tipe_data; atau
variabel_array : array [range_indeks1, range_indeks2] of tipe_data ;
Range_indeks1 menunjukkan jumlah atau nomor baris, sedangkan range_indeks2 menunjukkan jumlah atau nomor kolom. 1
2
3
4
5
1 2
[2,5] … baris 2 kolom 5
3 [3,4] … baris 3 kolom 4
4 Range_indeks1 = [1..4] Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 61
Contoh : Program array_dimensi_dua; Uses crt; Const jml = 100; Var nama : array [1..jml] of string[25]; bp : array [1..jml] of string[8]; nilai : array [1..jml, 1..jml] of real; jms,i,j,col : integer; tot,rata : real; mad : char; Begin clrscr; mad := 'Y'; Repeat write('Input Jumlah Mahasiswa : ');readln(jms); writeln; For i:=1 to jms do begin write(i:2,' Nama Mahasiswa : ');readln(nama[i]); write(' Nomor Bp : ');readln(bp[i]); writeln; For j:=1 to 4 do begin write(' Nilai ke_',j, ' = ');readln(nilai[i,j]); end; writeln; end; mad:='T'; Until upcase(mad)='T'; clrscr; gotoxy(2,04);write('>> DAFTAR NILAI TEST MAHASISWA <<'); gotoxy(2,07);write('---------------------------------------------------------------------'); gotoxy(2,08);write(' No Nama Mahasiswa No. Bp Nilai Test Rata-rata'); gotoxy(2,09);write(' 1 2 3 4 '); gotoxy(2,10);write('---------------------------------------------------------------------'); For i:=1 to jms do begin tot:=0;col:=29; gotoxy(4,10+i);write(i:2); gotoxy(8,10+i);write(nama[i]); gotoxy(25,10+i);write(bp[i]); For j:=1 to 4 do begin col := col + 6; gotoxy(col,10+i);write(nilai[i,j]:2:2); tot := tot + nilai[i,j]; end; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 62
rata := tot / 4; gotoxy(61,10+i);write(rata:2:2); writeln; end; gotoxy(2,11+i);write('--------------------------------------------------------------------'); gotoxy(2,12+i);write('Press anykey ...exit !!!'); readln; end. 7.9
ARRAY MULTI DIMENSI
Struktur array tiga atau multi dimensi dinyatakan dengan tiga buah atau lebih jumlah indeksnya. Bentuk umum penulisan : var variabel_array :
array [range_indeks1, range_indeks2, range_indek_n] of tipe_data ;
Contoh : Program array_multi_dimensi; Uses crt; Const jml = 50; Var nama : array [1..jml] of string[25]; bp : array [1..jml] of string[8]; mtk : array [1..jml, 1..20] of string[25]; nilai : array [1..jml, 1..20, 1..3] of real; jsim : array [1..jml] of byte; ket : string[20]; jms,i,j,k,col : integer; tot,rata : real; mad,mad1,mad2 : char; Begin clrscr; mad := 'Y'; Repeat write('Input Jumlah Mahasiswa : ');readln(jms); writeln; For i:=1 to jms do begin clrscr; write(i:2,' Nama Mahasiswa : ');readln(nama[i]); write(' Nomor Bp : ');readln(bp[i]); writeln; mad1:='Y';j:=1; while upcase(mad1)='Y'do begin Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 63
write(' Matakuliah : ');readln(mtk[i,j]); For k:=1 to 3 do begin case k of 1 : ket := ' Nilai Mid : '; 2 : ket := ' Nilai Sem : '; 3 : ket := ' Lain-lain : '; end; write(ket);readln(nilai[i,j,k]); end; writeln; write('Ada matakuliah lagi [Y/T] : ');readln(mad1); writeln; if upcase(mad1)='Y' then inc(j); jsim[i]:=j; end; end; mad:='T'; Until upcase(mad)='T'; clrscr; For i:=1 to jms do begin gotoxy(2,02);write('>> DAFTAR NILAI MAHASISWA <<'); gotoxy(2,04);write('Nama Mahasiswa : ',nama[i]); gotoxy(2,05);write('Nomor Bp. : ',bp[i]); gotoxy(2,07);write('-----------------------------------------------------------------'); gotoxy(2,08);write(' No Matakuliah Nilai Rata-rata'); gotoxy(2,09);write(' MID SEM Lain '); gotoxy(2,10); write('----------------------------------------------------------------'); For j:=1 to jsim[i] do begin tot:=0;col:=29; gotoxy(2,10+j);write('|'); gotoxy(4,10+j);write(j:2); gotoxy(7,10+j);write('|'); gotoxy(8,10+j);write(mtk[i,j]); gotoxy(34,10+j);write('|'); For k:=1 to 3 do begin col := col + 6; gotoxy(col,10+j);write(nilai[i,j,k]:2:2); gotoxy(col+5,10+j);write('|'); tot := tot + nilai[i,j,k]; end; rata := tot / 4; gotoxy(55,10+j);write(rata:2:2); gotoxy(62,10+j);write('|'); writeln; end; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 64
gotoxy(2,11+j);write('--------------------------------------------------------------'); gotoxy(2,12+j);write('Press anykey ... !'); readln; clrscr; end; end. 7.10 MENGURUTKAN ARRAY
Proses lainnya yang cukup penting untuk dipelajari adalah mengurutkan array. Sebenarnya cukup banyak metode yang digunakan untuk mengurutkan array. Namun pada bab ini hanya dibahas metode bubble sort. Bubble sort dipilih karena metode ini memiliki logika yang mudah di ikuti dan lebih sederhana dibandingkan dengan metode pengurutan lainnya. BUBBLE SORT
Untuk mempermudah memberikan gambaran tentang proses bubble sort, maka disini akan dijelaskan lewat suatu contoh. Misalkan anda memiliki empat buah bilangan yang akan diurutkan mulai dari bilangan terkecil sampai bilangan terbesar. Langkah-langkah pelaksanaan pengurutan dengan metode bubble sort : Langkah Pertama : bandingkan bilangan pertama dengan bilangan-bilangan yang lain. Bila bilangan-bilangan yang lain lebih kecil
dari pada bilangan
pertama, maka akan dilakukan penukaran tempat antara bilangan pertama dengan bilangan tadi
Langkah Kedua : Membandingkan bilangan kedua dengan bilangan-bilangan yang terletak dibawahnya (bilangan ketiga, keempat, dst). Jika bilanganbilangan tersebut lebih kecil dari pada bilangan kedua, maka akan dilakukan pertukaran tempat.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 65
Langkah Ketiga : bandingkan bilangan ketiga dengan bilangan-bilangan dibawahnya (bilangan keempat). Penukaran tempat akan dilakukan bila bilanganbilangan lain lebih kecil daripada bilangan ketiga.
Dari penjelasan diatas, maka dapat dibuat suatu bagan alir (flow chart) metode bubble sort sebagai berikut :
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 66
Contoh : uses crt; Var i,j,jml : byte; bil1,bil2 : array [1..20] of byte; carry : byte; Begin clrscr; write('Input Jumlah Data : ');readln(jml); writeln; For i:=1 to jml do begin write(' Bilangan ke_',i,' = ');readln(bil1[i]); bil2[i]:=bil1[i]; end; writeln; writeln('Bilangan Setelah Diurut'); writeln('-----------------------'); For i:=1 to jml do begin For j:=1 to jml-1 do begin if bil1[i] < bil1[j] then begin carry := bil1[i]; bil1[i]:=bil1[j]; bil1[j]:=carry; end; end; end; For i:=1 to jml do begin For j:=1 to jml-1 do begin if bil2[i] > bil2[j] then begin carry := bil2[i]; bil2[i]:=bil2[j]; bil2[j]:=carry; end; end; end; writeln;write(' Dari Terkecil hingga Terbesar :'); For i:=1 to jml do begin write(bil1[i]:4); end; writeln;writeln; write(' Dari Terbesar hingga Terkecil :'); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 67
For i:=1 to jml do begin write(bil2[i]:4); end; readkey; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 68
BAB VIII PROSEDUR DAN FUNGSI Program yang anda susun dalam Turbo Pascal sebenarnya merupakan kumpulan dari fungsi. Fungsi-fungsi ini dapat berupa fungsi yang telah disediakan oleh Turbo Pascal dalam librarynya, seperti write() atau writeln, read() atau readln(), ataupun fungsi yang dapat anda buat sendiri. 8.9
SIFAT-SIFAT DAN MANFAAT PROSEDUR/FUNGSI
Penggunaan prosedur atau fungsi akan memberikan beberapa manfaat yang antara lain adalah : 1. Menghindari penulisan yang berulang. 2. Prosedur atau Fungsi akan membagi program anda menjadi modul-modul yang lebih kecil, dengan demikian program yang panjang dan kompleks, dapat disederhanakan menjadi modul-modul yang lebih relatif pendek dan mudah. 3. Setiap prosedur atau fungsi memiliki tingkatan yang sama dan berdiri sendiri. Dengan demikian prosedur atau fungsi ini dapat dipanggil dari sembarang prosedur atau fungsi yang lain dengan mudah. 4. Prosedur dapat menghasilkan data, dan Fungsi dapat menghasilkan nilai. 8.10 PARAMETER (ARGUMEN) Parameter merupakan suatu mekanisme untuk melewatkan nilai atau variabel ke dalam
subprogram. Dengan parameter ini, pemberian nilai awal atau nama variabel yang berbeda terhadap subprogram dapat dilakukan. Parameter dapat dibedakan atas dua macam : 1. Parameter Formal Merupakan parameter yang terdapat dalam kepala subprogram. Parameter formal dapat berupa Parameter Nilai atau Parameter Variabel. Parameter nilai adalah parameter yang nilainya tidak berubah sekeluarnya dari subprogram. Nilai dari parameter aktualnya tidak akan berubah ketika keluar dari subprogram, meskipun ada pernyataan dalam subprogram yang mengubahnya. Parameter variabel adalah parameter yang nilainya dapat berubah sekeluarnya dari subprogram. Untuk jenis
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 69
parameter variabel ini, parameter aktual dalam pemanggilan subprogram harus berupa suatu variabel. Sebagai ilustrasi bandingkan hasil/output kedua program berikut : 1. uses crt; var a,b,c : integer; Procedure hitung(x,y,z : integer); begin z := x + y; writeln('Hasil x + y = ',z); end; Begin clrscr; a:=3; b:=4; c:=8; hitung(a,b,c); writeln('Hasil a + b = ',c); readkey; End. 2. uses crt; var a,b,c : integer; Procedure hitung(var x,y,z : integer); begin z := x + y; writeln('Hasil x + y = ',z); end; Begin clrscr; a:=3; b:=4; c:=8; hitung(a,b,c); writeln('Hasil a + b = ',c); readkey; End. 2. Parameter Aktual Parameter aktual merupakan parameter yang diberikan apabila prosedur atau fungsi dipanggil. 8.11 VARIABEL GLOBAL
Dengan mendefenisikan suatu Variabel Global, diharapkan variabel tersebut akan dikenal oleh beberapa prosedur atau fungsi sehingga dapat digunakan bersama-sama tanpa harus dideklarasikan berulang-ulang. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 70
8.12 VARIABEL LOKAL
Variabel-variabel yang di deklarasikan di dalam suatu prosedur atau fungsi tertentu di kenal dengan nama Variabel Lokal. Disebut Lokal karena hanya dikenal oleh prosedur atau fungsi yang bersangkutan sedangkan prosedur atau fungsi lain sama sekali tidak mengenal variabel ini. Contoh penggunaan variabel global dan variabel lokal : uses crt; var a,b,c : integer; Procedure hitung(x,y,z : integer); var i, j : integer; begin i:=x;j:=z; a := i + j; z := x + y; writeln('Hasil x + y = ',z); wtiteln(‘Hasil i + j = ‘,a); end; Begin clrscr; a:=3; b:=4; c:=8; hitung(a,b,c); writeln('Hasil a + b = ',c); readkey; End.
Dari contoh program diatas variabel a, b, c merupakan variabel global sedangkan variabel i, j merupakan variabel lokal karena hanya dikenal oleh prosedur tempat
variabel tersebut di deklarasikan. 8.13 PROSEDUR Prosedur
(Procedure)
adalah
serangkaian
statement
yang
digunakan
untuk
memecahkan sebuah masalah. Prosedur harus dideklarasikan terlebih dahulu sebelum dipanggil ata digunakan. Pascal juga menyediakan beberapa prosedur Built-in yang langsung dapat digunakan, misalnya inc() dan dec(), yang masing-masing digunakan untuk menambah atau mengurang 1 (satu) pada sebuah bilangan integer yang menjadi parameternya. 8.13.1 PENDEKLARASIAN PROSEDUR
Prosedur mempunyai nama dan baris-baris statement yang merupakan implementasi prosedur tersebut. Sebuah prosedur juga dapat mempunyai satu atau lebih variabel. Deklarasi prosedur memiliki struktur yang hampir sama Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 71
dengan program utama. Di dalamnya bisa saja mengandung deklarasi Const, Var, Type, Label dan bahkan subprogram lainnya.
Bentuk umum penulisan deklarasi prosedur : Procedure (parameter_input; var parameter _output); ; <statement>; End;
Sebuah prosedur tidak harus mempunyai parameter atau dengan kata lain prosedur tanpa parameter. Prosedur dengan parameter dapat di bagi menjadi dua, yaitu : 1. Prosedur dengan Parameter Nilai (Value Parameter) atau mempunyai parameter input. Prosedur ini tidak mengirimkan nilai. 2. Prosedur
dengan
Parameter
Variabel
(Variabel
Parameter)
atau
mempunyai parameter output. Prosedur ini dapat mengirimkan nilai. 8.13.2 PEMANGGILAN PROSEDUR
Prosedur dapat dipanggil dengan cara menuliskan nama prosedur
dan
parameternya atau dapat juga tanpa menyertakan parameternya, cukup dengan menuliskan nama prosedurnya saja. Contoh program pemanggilan prosedur : uses crt; var a,b,c : integer; procedure judul; begin writeln('Contoh Program Pemanggilan Prosedur'); writeln('------------------------------------------------'); end; procedure hitung(x,y : integer; var z : integer); var i, j : integer; begin i := x; j := y; a := i * j; z := x + y; writeln('Hasil x + y = ',z); writeln('Hasil i * j = ',a); end; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 72
begin clrscr; a:=3; b:=4; c:=8; judul; hitung(a,b,c); writeln('Hasil a + b = ',c); readkey; end. 8.14 FUNGSI
Konsep fungsi dalam pascal hampir sama dengan konsep fungsi dalam matematika. Sebuah fungsi digunakan untuk menghitung sebuah nilai berdasarkan satu atau beberapa nilai masukan. Seperti halnya prosedur, fungsi juga mempunyai nama dan parameter. Fungsi harus dideklarasikan terlebih dahulu sebelum dipanggil atau digunakan. Pascal juga menyediakan beberapa fungsi built-in yang langsung dapat digunakan, seperti fungsi ord() untuk menentukan urutan atau nilai ordinal sebuah karakter, atau fungsi sqrt() untuk menghitung akar kuadrat sebuah bilangan. 8.14.1 PENDEKLARASIAN FUNGSI
Fungsi memiliki struktur yang hampir sama dengan prosedur. Perbedaannya, nama prosedur tidak bertipe, sedangkan nama fungsi memiliki tipe. Bentuk umum penulisan deklarasi fungsi : Function (nama_fungsi> (parameter) : tipe_hasil : ; <statement>; End;
Aturan penamaan fungsi sama dengan aturan penamaan variabel. Sebuah fungsi tidak harus mempunyai parameter dan tipe-hasil. Nilai yang dapat dikirim oleh suatu fungsi hanya satu. Jika kita ingin mengirim lebih dari satu nilai maka harus dibuat lebih dari satu fungsi lagi. Pada bagian statement fungsi harus dituliskan statement yang menghasilkan hasil dengan memberi harga kepada nama_fungsi dengan hasil atau nilai yang dikirimkan atau dihitung oleh fungsi
tersebut.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 73
8.14.2 PEMANGGILAN FUNGSI
Sebuah fungsi dipanggil dengan menuliskan nama fungsi dan parameternya. Contoh program pemanggilan suatu fungsi : uses crt; var a,b,c : integer; function hitung(x,y : integer ) : integer; begin hitung := x + y; writeln('Hasil i * j = ',a); end;
begin clrscr; a:=3; b:=4; c := hitung(a,b); writeln('Hasil a + b = ',c); end. 8.15 REKURSI
Rekursi merupakan suatu subprogram yang bisa memanggil dirinya sendiri. Rekursi banyak dipakai pada persoalan yang dapat dipecahkan secara induktif. Misalnya untuk menghitung bilangan faktorial dan fibonacci. Contoh : 1. Menghitung nilai faktorial Faktorial 4 atau 4 ! = 4 * 3 * 2 *1 Langkah-langkahnya : 4! =4*3! =3*2! =2*1! 1=1 0!=1 Faktorial 0 = 1 Fakt(n) = n * fakt(n-1) { Program menghitung nilai faktorial }
uses crt; var nl,i : integer; function fakt(n : integer) : integer; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 74
begin if n = 1 then fakt := 1 else fakt := n * fakt(n-1); end; begin clrscr; write('Input Nilai Faktorial : ');readln(nl); writeln; for i:= 1 to nl do begin writeln('Nilai Faktorial dari ',i,' = ',fakt(i)); end; readln; end. 2. Menghitung deret fibonacci ( 1 1 2 3 5 8 13 … dst) Fibo 1 = 1 Fibo 2 = 1 Fibo(n) = fibo(n-1) + fibo(n-2) { Program menghitung deret fibonacci }
uses crt; var nl,i : integer; function fibo(n : integer) : integer; begin if (n = 1) or (n = 2) then fibo := 1 else fibo := fibo(n-1) + fibo(n-2); end; begin clrscr; write('Input Deret Fibonacci : ');readln(nl); writeln; for i := 1 to nl do begin writeln('Nilai Fibonacci dari ',i,' = ',fibo(i)); end; readln; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 75
8.16 LATIHAN 1.
Buatlah program untuk menampilkan Laporan Penumpang pada PT. Angkutan Kerinci. Dengan Ketentuan Proses : - Barang yang dikenakan biaya jika berat barang melebihi 10 Kg dengan tarif
barang Rp. 750 per kilo gramnya. - Nama tujuan dan tarif diperoleh berdasarkan data-data sbb :
Kode Tujuan P J G K B M T
Nama Tujuan Padang Jambi Palembang Jakarta Bandung Medan Bukit Tinggi
Tarif Rp. 65.000 Rp. 75.000 Rp. 85.000 Rp. 125.000 Rp. 200.000 Rp. 90.000 Rp. 75.000
- Ongkos Barang = Berat Barang x 750 - Discount diperoleh dari :
Jika Jumlah berangkat > 3 orang dengan tujuan Padang, Bukit Tinggi atau Jambi maka diberi discount 10% dari tarif Jika Jumlah berangkat > 3 orang dengan tujuan Palembang atau Medan maka diberi discount 25% dari tarif Jika Jumlah berangkat > 3 orang dengan tujuan Jakarta atau Bandung maka diberi discount 35% dari tarif - Jumlah Bayar=Tarif * jumlah berangkat + Ongkos Barang - Discount Bentuk Input :
PT. ANGKUTAN KERINCI ENTRY DATA PENUMPANG Nama Penumpang Jumlah Berangkat Nomor Tiket Kode Tujuan Nama Tujuan Tarif Berat Barang
: ………………. : ………………. : ………………. : ………………. : [tampil berdasarkan kode tujuan] : [tampil berdasarkan kode tujuan] : ……………….
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 76
Bentuk LAY-OUT (tampilan) :
PT. ANGKUTAN KERINCI LAPORAN PENUMPANG Ongkos Barang : 750 / Kg Nomor Nama No Tiket Penumpang 1 xxx xxxxxxx
Tujuan xxxxx
Berat Barang (Kg) 999
Ongkos Barang 999999
Total Pembayaran
Tarif 999999 999999
Ada Data Lagi [Y/T] : … { Program contoh penggunaan prosedur dan fungsi } uses crt; type ukuran = string[15]; var nama_p : string[20]; nama_t : ukuran; notik : string[6]; jml_b : integer; tarif, ong_b, brt_b : longint; kode_t, mad : char; disc, jml_bayar : real; procedure tujuan(kode_x : char ; var xtujuan : ukuran; var trf : longint); begin case kode_x of 'P', 'p' : begin xtujuan := 'Padang'; trf := 65000; end; 'J', 'j' : begin xtujuan := 'Jambi'; trf := 75000; end; 'G', 'g' : begin xtujuan := 'Palembang'; trf := 85000; end; 'K', 'k' : begin xtujuan := 'Jakarta'; trf := 125000; end; 'B', 'b' : begin xtujuan := 'Bandung'; trf := 200000; end; 'M', 'm': begin xtujuan := 'Medan'; trf := 90000; end; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 77
'T', 't' : begin xtujuan := 'Bukit Tinggi'; trf := 75000; end; end; end; function hitung_diskon(jml : integer ; kode_x : char ; trf : longint) : real; begin case kode_x of 'P','p','T','t','J','j' : begin if jml > 3 then hitung_diskon := 0.1 * trf else hitung_diskon := 0; end; 'G','g','M','m' : begin if jml > 3 then hitung_diskon := 0.25 * trf else hitung_diskon := 0; end; 'K','k','B','b' : begin if jml > 3 then hitung_diskon := 0.35 * trf else hitung_diskon := 0; end; end; end; begin mad := 'Y'; while (upcase(mad)='Y') do begin clrscr; gotoxy(15,2);write('PT. ANGKUTAN KERINCI'); gotoxy(15,3);write('ENTRY DATA PENUMPANG'); gotoxy(15,4);write('--------------------------------'); gotoxy(5,6);write('Nama Penumpang : ');readln(nama_p); gotoxy(5,7);write('Jumlah Berangkat : ');readln(jml_b); gotoxy(5,8);write('Nomor Tiket : ');readln(notik); gotoxy(5,9);write('Kode Tujuan : ');readln(kode_t); tujuan(kode_t,nama_t,tarif); gotoxy(5,10);write('Nama Tujuan : ',nama_t); gotoxy(5,11);write('Tarif : ',tarif); gotoxy(5,12);write('Berat Barang : ');readln(brt_b); ong_b := brt_b * 750; jml_bayar := tarif * jml_b + ong_b - hitung_diskon(jml_b,kode_t,tarif); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 78
clrscr; gotoxy(25,2);write('PT. ANGKUTAN KERINCI'); gotoxy(25,3);write(' LAPORAN PENUMPANG'); gotoxy(5,5);write('Ongkos Barang : 750 / Kg'); gotoxy(5,6);write('--------------------------------------------------------------------------------'); gotoxy(5,7);write('|Nomor | Nama | Tujuan |Berat |Ongkos | Tarif |'); gotoxy(5,8);write('|Tiket | Penumpang | |Barang |Barang | |'); gotoxy(5,9);write(‘--------------------------------------------------------------------------------'); gotoxy(5,10);write('|'); gotoxy(6,10);write(notik); gotoxy(12,10);write('|'); gotoxy(13,10);write(nama_p); gotoxy(28,10);write('|'); gotoxy(29,10);write(nama_t); gotoxy(42,10);write('|'); gotoxy(45,10);write(brt_b); gotoxy(49,10);write('|'); gotoxy(50,10);write(ong_b:7); gotoxy(57,10);write('|'); gotoxy(58,10);write(tarif:9); gotoxy(67,10);write('|'); gotoxy(5,11);write('-------------------------------------------------------------------------------'); gotoxy(5,12);write('| Total Pembayaran |', jml_bayar:9:0); gotoxy(67,12);write('|'); gotoxy(5,13);write('-------------------------------------------------------------------------------'); gotoxy(5,14);write('Masih Ada Data [Y/T] : ');mad:=readkey; end; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 79
BAB IX DISAIN LAYAR Untuk membuat output sebuah program tampil lebih semarak, pada BAB ini akan diperkenalkan beberapa fungsi yang dapat anda gunakan untuk mengatur tampilan dalam modus teks. 9.1
UNIT CRT
Unit CRT merupakan fasilitas yang berkaitan dengan disain layar. Klausa USES CRT perlu disertakan dalam program apabila program menggunakan fasilitas dalam unit tersebut. 9.2
MENGHAPUS LAYAR
Untuk menghapus layar dapat digunakan pernyataan CLRSCR. 9.3
MENGATUR ATRIBUT TEKS
Ada beberapa cara yang digunakan untuk mengatur atribut teks, diantaranya adalah sebagai berikut : 1. TextColor(Warna)
: untuk mengatur warna teks. Warna teks dapat berupa nilai 0 sampai dengan 15.
2. TextBackGround(Warna) : untuk mengatur warna latar belakang teks. Warna yang dipilih dapat berupa 0 sampai dengan 7. Warna yang digunakan untuk mengatur warna teks dan warna latar belakang teks dapat dilihat pada tabel berikut ini. Nilai 0 1 2 3 4 5 6 7
Konstanta Black Blue Green Cyan Red Magenta Brown Lightgray
Warna Nilai Konstanta Hitam 8 DarkGray Biru LightBlue 9 Hijau 10 LightGreen Sian 11 LightCyan Merah 12 LightRed Magenta 13 LightMagenta Coklat 14 Yellow Abu-abu 15 White
Warna Abu-abu tua Biru cerah Hijau cerah Sian cerah Merah cerah Magenta cerah Kuning Putih
Jika ingin teks berkedip, tambahkan nilai 128 atau konstanta Blink terhadap warna pada TextColor.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 80
Contoh : Menampilkan tulisan ‘AMIK Depati Parbo Kerinci’ dengan berbagai warna dengan latar belakang (background) warna hijau cerah. uses crt; var j : integer; begin textbackground(10); clrscr; for j := 0 to 15 do begin textcolor(j); writeln('AMIK Depati Parbo Kerinci'); end; readln; end. 9.4
KURSOR
Turbo Pascal juga menyediakan fasilitas untuk mengatur letak kursor maupun untuk mengetahui posisi kursor. • Gotoxy(X, Y) : menempatkan kursor pada posisi baris Y, kolom X • WhereX
: untuk memperoleh posisi baris tempat kursor berada
• WhereY
: untuk memperoleh posisi kolom tempat kursor berada
Contoh pengunaan gotoxy() untuk membuat program animasi teks dengan bermacammacam warna teks. uses crt; const posy = 12; posx = 28; waktutunda = 2000; teks:string[80] = 'AMIK DEPATI PARBO KERINCI'; var i,j,x : byte; begin textbackground(0); clrscr; j := 1; for i := length(teks) downto 1 do begin x := 1; if i > 15 then begin Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 81
textcolor(j); j:=j+1; end else textcolor(i); while x < (posx + i - 1) do begin gotoxy(x, posy); write(teks[i]); delay(waktutunda); gotoxy(x, posy); write(' '); x := x + 1; end; gotoxy(posx + i - 1, posy); write(teks[i]); end; readln; end. 9.5
MODE TEKS
Mode teks dalam Pascal dapat berupa mode 80 kolom atau 40 kolom. Mode ini dapat diperoleh dengan menggunakan prosedur TextMode(). Macam-macam modus teks dalam Turbo Pascal : No. Mode
Nama
Resolusi
LastMode 0 1 2 3 7
BW40 C040 (C40) BW80 C080 (C80) MONO
40 x 25 40 x 25 80 x 25 80 x 25 80 x 25
Fungsi Mengembalikan ke mode teks sebelumnya Hitam putih 40 kolom Berwarna 40 kolom Hitam putih 80 kolom Berwarna 80 kolom Monocrome 80 kolom
Pada kolom resolusi terdapat perkalian dua bilangan, bilangan ini menunjukkan jumlah karakter yang dapat ditampung dalam baris dan kolom pada layar. Contoh : 40 x 25 : menunjukkan bahwa satu baris pada layar mampu menampung 40 karakter, sedangkan satu kolom pada layar mampu menampung 25 karakter. Dengan demikian satu layar mampu menampung 1000 (40 x 25) karakter. Untuk mengubah dari satu modus ke modus yang lain dapat digunakan fungsi : TextMode(Mode) Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 82
Contoh : Uses crt; Begin Textmode(BW40); {mode 40 kolom hitam putih} Writeln(‘Mode 40 kolom hitam putih’); Readln; Textmode(C80); {kembali ke mode 80 kolom berwarna} End.
9.6
JENDELA TEKS (WINDOW)
Window digunakan bila anda ingin bekerja dengan sebagian layar saja. Dengan demikian teks yang anda ketikkan hanya akan ditampilkan dalam batas window saja. Untuk membuat sebuah window dapat digunakan perintah : Window (x1, y1, x2, y2 : Byte)
Dimana : x1 y1 x2 y2
= = = =
batas kiri window batas atas window batas kanan window batas bawah window
Contoh : Untuk membuat window dengan batas kiri 10, kanan 40, atas 5 dan bawah 20, dapat ditulis seperti berikut : Window(10,5,40,20);
Sebagai ilustrasi dapat digambarkan sebagai berikut :
Dengan diaktifkannya suatu jendela, perintah Clrscr akan memberi efek menghapus hanya pada daerah jendela (window) saja. Adapun warna yang digunakan untuk menghapus daerah warna jendela sesuai dengan warna yang terekam pada TextBackground. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 83
Contoh : Uses crt; Begin TextBackgound(Blue) Window(5,10,60,20) Clrscr; Readkey; End.
Jika program diatas dijalankan maka layar akan dibersihkan mulai dari kolom 5 baris ke 10 sampai dengan kolom ke 60 baris ke 20 dengan latar belakang warna layar biru. Contoh program animasi membersihkan layar : uses crt; var i : byte; begin textbackground(0); clrscr; textbackground(9); for i:=1 to 40 do begin window(41-i,1,41-i,25); clrscr; window(40+i,1,40+i,25); clrscr; delay(10000); end; textbackground(14); for i:=40 downto 0 do begin window(41-i,1,41-i,25); clrscr; window(40+i,1,40+i,25); clrscr; delay(10000); end; end. 9.7
MENGHAPUS DAN MENYISIPKAN BARIS PADA WINDOW
Perintah yang digunakan untuk menghapus atau menghilangkan baris adalah : ClrEol
: Untuk menghapus teks mulai posisi kursor hingga akhir baris pada jendela yang sedang aktif
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 84
DelLine
: Untuk menghapus baris pada posisi kursor pada daerah jendela yang aktif. Seluruh baris yang berada di bawah kursor dan berada dalam daerah jendela yang aktif akan bergeser keatas satu baris
InsLine
: Untuk menyisipkan baris pada posisi kursor berada pada daerah jendela yang aktif
Contoh Program penggunaan Delline dan Insline: uses crt; var i : byte; begin textcolor(blue); clrscr; gotoxy(20,11);write('YAYASAN DEPATI PARBO KERINCI'); gotoxy(20,12);write(' AMIK DP KERINCI '); gotoxy(20,13);write(' Jl. Pancasila No. 29, Sungai Penuh '); for i:=1 to 10 do begin window(1,1,80,11); gotoxy(1,1); delline; window(1,13,80,25); gotoxy(1,1); insline; delay(19000); end; readln; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 85
BAB X TYPE DATA RECORD Dengan record, anda dapat mengorganisasikan database dengan lebih baik. Misalkan anda ingin membuat database untuk menyimpan data barang, dimana setiap data akan menyimpan informasi tentang kode, nama dan harga barang. Bila anda menggunakan array biasa, maka anda harus membuat tiga variabel array yang bebas satu sama lain, yaitu variabel-variabel untuk kode, nama dan harga barang. Dengan record data tadi dapat di organisasikan menjadi satu kesatuan, misalnya record untuk barang pertama yang mengandung kode, nama dan harga barang pertama, record data kedua mengandung kode, nama dan harga barang kedua dan seterusnya. kode[] A101 A102 B101 C105
nama[] Roti Kacang Aqua Sprite
harga[] 4.500 10.000 2.500 3.500
A101 Roti 4.500
B101 Aqua 2.500 Array
Record
10.5 DEFENISI Record adalah tipe data terstruktur yang tersusun atas elemen-elemen yang jumlahnya
tertentu dan tipe data elemennya dapat berbeda-beda. Elemen dari record biasa di sebut dengan field dan setiap field memiliki nama pengenal tersendiri. Record dan array merupakan data terstruktur yang panjangnya tertentu (statis). Namun
demikian, terdapat perbedaan diantara keduanya, yakni : 1. Elemen / field record dapat terdiri dari beberapa tipe data, sedangkan elemen / field array bersifat homogen (mempunyai tipe data yang sama). 2. Elemen / field record di identifikasi dengan simbol/identifier, sedangkan Elemen / field array di defenisikan dengan indeks.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 86
10.6 PENDEKLARASIAN RECORD
Sebelum digunakan, Record harus di deklarasikan lebih dahulu. Bentuk umum deklarasi record : Type tipe_record = Record nama_field_1 : tipe_field_1; nama_field_2 : tipe_field_2; … nama_field_n : tipe_field_n; end; var
nama_record : tipe_record;
tipe_record adalah nama/identifier yang digunakan untuk tipe jenis record yang dibuat nama_record adalah variabel bertipe record yang digunakan untuk mengidentifikasikan record suatu objek secara keseluruhan nama_field adalah nama variabel yang digunakan untuk mengidentifikasikan sebuah atribute yang menjadi elemen record. Setiap atribute di identifikasikan dengan nama yang berbeda tipe_field adalah tipe data untuk setiap atribute elemen record. Tipe ini dapat berbedabeda antara elemen yang satu dengan elemen yang lain. Tipe dari field juga dapat berupa array. Sebagai contoh, kita akan mencoba mendeklarasikan sebuah record untuk data barang, yang tersusun dari kode yang bertipe string, nama juga bertipe string dan gaji yang bertipe long integer. type barang = record kode : string[5]; nama : string[25]; harga : longint; end; var r_barang : barang; atau Jika data terdiri dari beberapa record (maks 10 record), maka deklarasi recordnya adalah : type barang = record kode : string[5]; nama : string[25]; harga : longint; end; var r_barang : array [1..10] of barang; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 87
Tipe suatu field dari record bisa berupa record. Sebagai contoh : type
var
tanggal_beli = record tanggal : 1..31; bulan : 1..12; tahun : 2000..2009; end; barang = record kode : string[5]; nama : string[25]; harga : longint; tgl_beli : tanggal_beli; end; r_barang : barang;
10.7 OPERASI PADA RECORD 10.7.1 MENGAKSES RECORD DENGAN NOTASI TITIK
Elemen record (field) dapat diakses dengan notasi titik, yaitu menuliskan nama record diikuti dengan tanda titik (.).
Secara umum dapat dituliskan sebagai berikut : nama_record.nama_field;
Contoh : Buatlah program untuk menampilkan data barang. uses crt; const jml_data = 50; type barang = record kode : string[5]; nama : string[20]; harga : longint; end; var r_barang : array [1..jml_data] of barang; mad : char; i, jml : integer; begin mad := 'Y'; i := 1; while (upcase(mad)='Y') do begin clrscr; writeln('ENTRY DATA BARANG'); writeln('---------------------------'); writeln; write('Kode Barang : ');readln(r_barang[i].kode); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 88
write('Nama Barang : ');readln(r_barang[i].nama); write('Harga Barang : ');readln(r_barang[i].harga); write('Masih Ada Data [Y/T] : ');mad:=readkey; if (upcase(mad)='Y') then i := i + 1; end; clrscr; gotoxy(20,2);writeln('DAFTAR HARGA BARANG'); gotoxy(20,3);writeln('------------------------------'); gotoxy(8,5);writeln('----------------------------------------------------'); gotoxy(8,6);writeln('| No. | Kode | Nama Barang | Harga |'); gotoxy(8,7);writeln('----------------------------------------------------'); for jml := 1 to i do begin gotoxy(8,7+jml);write('|'); gotoxy(10,7+jml);write(jml:2); gotoxy(14,7+jml);write('|'); gotoxy(16,7+jml);write(r_barang[jml].kode); gotoxy(21,7+jml);write('|'); gotoxy(23,7+jml);write(r_barang[jml].nama); gotoxy(39,7+jml);write('|'); gotoxy(41,7+jml);write(r_barang[jml].harga:8); gotoxy(50,7+jml);write('|'); end; gotoxy(8,8+jml);write('------------------------------------------------'); readkey; end. 10.7.2 MENGAKSES RECORD DENGAN PERNYATAAN WITH
Cara lain untuk mengakses field dari record yaitu dengan menggunakan pernyataan With. Bentuk pernyataan With : with do begin ; ; … ; end;
Contoh : Buatlah program untuk menampilkan data barang. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 89
uses crt; const jml_data = 50; type barang = record kode : string[5]; nama : string[20]; harga : longint; end; var r_barang : array [1..jml_data] of barang; mad : char; i, jml : integer; begin mad := 'Y'; i := 1; while (upcase(mad)='Y') do begin clrscr; writeln('ENTRY DATA BARANG'); writeln('---------------------------'); writeln; with r_barang[i] do begin write('Kode Barang : ');readln(kode); write('Nama Barang : ');readln(nama); write('Harga Barang : ');readln(harga); end; write('Masih Ada Data [Y/T] : ');mad:=readkey; if (upcase(mad)='Y') then i := i + 1; end; clrscr; gotoxy(20,2);writeln('DAFTAR HARGA BARANG'); gotoxy(20,3);writeln('------------------------------'); gotoxy(8,5);writeln('----------------------------------------------------'); gotoxy(8,6);writeln('| No. | Kode | Nama Barang | Harga |'); gotoxy(8,7);writeln('----------------------------------------------------'); for jml := 1 to i do begin with r_barang[jml] do begin gotoxy(8,7+jml);write('|'); gotoxy(10,7+jml);write(jml:2); gotoxy(14,7+jml);write('|'); gotoxy(16,7+jml);write(kode); gotoxy(21,7+jml);write('|'); gotoxy(23,7+jml);write(nama); gotoxy(39,7+jml);write('|'); gotoxy(41,7+jml);write(harga:8); gotoxy(50,7+jml);write('|'); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 90
end; end; gotoxy(8,8+jml);write('------------------------------------------------'); readkey; end. 10.8 LATIHAN
1. Sebuah perusahaan air minum (PDAM) ingin menghitung rekening/jumlah tagihan yang harus dibayar pelanggan
tiap bulannya, format output/tampilan yang
diinginkan adalah sebagai berikut : Ketentuan Proses : a. Terpakai = mba - mbi b. Harga air/m3 berdasarkan jenis langganan jika jns_lang = '1', harga_air = 150 jika jns_lang = '2', harga_air = 200 jika jns_lang = '3', harga_air = 250 jika jns_lang = '4', harga_air = 275 c. Dana_M/pelanggan berdasarkan kode wilayah jika kd_wil ='a', dana_m = 850 dan dana_adm = 1500 jika kd_wil ='b', dana_m = 1000 dan dana_adm = 1750 jika kd_wil ='c', dana_m = 1500 dan dana_adm = 2000 jika kd_wil ='d', dana_m = 2000 dan dana_adm = 2500 d. jml_tagihan = terpakai * harga_air + dana_m + dana_adm e. Proses/variabel lainnya anda atur sendiri, sesuai format yang diinginkan Tampilan Input
PDAM DAERAH X DAFTAR PEMAKAIAN AIR/M3 ----------------------------------No_Rek : .......... Nama Pelanggan
: ..........
Kode Wilayah
: ..........
Jenis Pelanggan
: ..........
MBA
: ..........
MBI
: ..........
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 91
Bentuk Output
PDAM DAERAH X DAFTAR REKENING Kode_Wil : ...... No_Rek : ...... Nama Langgan : ........... -------------------------------------------------------------------------------------MBA MBI Terpakai Harga_Air Dana_M Dana_Adm Jml_Tagihan --------------------------------------------------------------------------------------------------------------------------------------------------------------------------Nama Variabel/Record -----------------------------------------------------------------Field Name Type Width Keterangan -----------------------------------------------------------------no_rek string 6 Nomor Rekening nm_lang string 25 Nama Langganan kd_wil character 1 Kode Wilayah jns_lang character 1 Jenis Langganan mba numeric 6 Meter Bulan Akhir mbi numeric 6 Meter Bulan Ini -----------------------------------------------------------------Program menghitung_jumlah_tagihan_pemakaian_air; uses crt; const jml_data = 1000; type langganan = record no_rek : string[6]; nm_lang: string[25]; kd_wil,jns_lang : char; mba,mbi : integer; end; var r_langganan : array [1..jml_data] of langganan; i,jml,pakai,hrg_air,dana_m,dana_adm : integer; jml_tagih : longint; mad : char; begin clrscr; mad:='Y'; i:=1; while (upcase(mad)='Y') do begin with r_langganan[i] do begin gotoxy(2,2);write('PDAM DAERAH'); gotoxy(2,3);write('DAFTAR PEMAKAIAN AIR/M3'); gotoxy(2,4);write('---------------------------------------'); gotoxy(2,6);write('No_Rek : ');readln(no_rek); gotoxy(2,7);write('Nama Pelanggan : ');readln(nm_lang); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 92
gotoxy(2,8);write('Kode Wilayah : ');readln(kd_wil); gotoxy(2,9);write('Jenis Pelanggan : ');readln(jns_lang); gotoxy(2,10);write('MBA : ');readln(mba); gotoxy(2,11);write('MBI : ');readln(mbi); end; gotoxy(2,13);write('Masih Ada Data [Y/T] : ');mad:=readkey; if (upcase(mad) ='Y') then begin i := i + 1; clrscr; end; end; clrscr; for jml := 1 to i do begin with r_langganan[jml] do begin pakai:=mba-mbi; case jns_lang of '1' : hrg_air := 150; '2' : hrg_air := 200; '3' : hrg_air := 250; '4' : hrg_air := 275; end; case kd_wil of 'a','A' : begin dana_m := 850; dana_adm := 1500; end; 'b','B' : begin dana_m := 1000; dana_adm := 1750; end; 'c','C' : begin dana_m := 1500; dana_adm := 2000; end; 'd','D' : begin dana_m := 2000; dana_adm := 2500; end; end; jml_tagih := pakai * hrg_air + dana_m + dana_adm; clrscr; gotoxy(2,5);write('PDAM DAERAH X'); gotoxy(2,6);write('DAFTAR REKENING'); gotoxy(2,8);write('Kode_Wil : ',kd_wil); gotoxy(2,9);write('No_Rek : ',no_rek); gotoxy(35,9);write('Nama Langganan : ',nm_lang); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 93
gotoxy(2,10);write('-----------------------------------------------------------------------------'); gotoxy(2,11);write('MBA MBI Terpakai Harga_Air Dana_M Dana_Adm Jml_Tagihan'); gotoxy(2,12);write('-----------------------------------------------------------------------------'); gotoxy(3,13);write(mba:4); gotoxy(9,13);write(mbi:4); gotoxy(16,13);write(pakai:4); gotoxy(28,13);write(hrg_air); gotoxy(37,13);write(dana_m); gotoxy(46,13);write(dana_adm); gotoxy(56,13);write(jml_tagih); gotoxy(2,14);write('-----------------------------------------------------------------------------'); end; readkey; end; end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 94
BAB XI TYPE DATA HIMPUNAN Type data set (himpunan) termasuk tipe data terstruktur yang berisi sekumpulan dari obyek dengan tipe sama. 11.4 DEKLARASI TYPE HIMPUNAN
Pendeklarasian tipe himpunan dimulai dengan kata tercadang set dan of, diikuti dengan tipe elemen himpunan. Tipe himpunan dapat berupa sebarang tipe ordinal antara 0 sampai dengan 255. Tipe ordinal seperti longint, word, shortint tak diperkanankan. Deklarasi tipe himpunan : type nama_tipe = set of tipe;
Contoh pendeklarasian tipe set (himpunan) : Type Nilai = set of 0..20; Huruf = set of ‘a’ .. ‘z’; Const Bil_genap : nilai = [0, 2, 4, 8, 10, 12, 14, 16, 18, 20]; Bil_ganjil : nilai = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]; Nilai yang bertipe set dapat juga dituliskan secara langsung dalam program dengan memakai konstruktor set, [] (dua kurung siku) yang berarti set kosong. 11.5 OPERASI HIMPUNAN
Operasi himpunan meliputi penambahan, pengurangan, perkalian himpunan serta perbandingan himpunan. Operator yang digunakan dalam himpunan (set) Operasi Operator + Union
-
Difference
*
Intersection
Keterangan Menggabungkan semua elemen, elemen_1 dengan elemen_2 Menghasilkan elemen yang berada pada elemen_1 tetapi tidak pada elemen_2 Menghasilkan elemen yang berada di elemen_1 dan sekaligus di elemen_2 Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 95
Contoh : [‘A’, ’B’, ’C’] + [‘B’, ‘D’, ‘E’] ---> [ ‘A’, ’B’, ’C’, ’D’, ’E’ ] [] + [1]
---> [1]
[‘A’, ’B’, ’C’] - [‘B’, ‘D’, ‘E’]
---> [ ‘A’, ’C’ ]
[] - [1]
---> []
[‘A’, ’B’, ’C’] * [‘B’, ‘D’, ‘E’] ---> [ ’B’ ] [] * [1]
---> []
[1, 2, 4] * [5, 6, 7]
-- []
Operator perbandingan yang digunakan dalam himpunan (set) Perbandingan A=B A <= B A >= B A <> B A in B
Nilai True True True True True
Kondisi Bila himpunan A dan B sama Bila himpunan A merupakan anggota B Bila himpunan B merupakan anggota A Bila himpunan A dan B tidak sama Bila elemen A adalah anggota himpunan B
11.6 LATIHAN
1.
Program untuk menampilkan angka yang diinputkan apakah merupakan bilangan genap atau ganjil dengan batasan angka 1 sampai dengan 10 uses crt; type nilai = set of 1..10; const genap : nilai = [2,4,6,8,10]; ganjil : nilai = [1,3,5,7,9]; var bil : integer; mad : char; begin mad := 'Y'; while (upcase(mad)='Y') do begin clrscr; write('Input Sebuah Bilangan : ');readln(bil); writeln; if bil in genap then writeln(bil,' merupakan bilangan genap !') else if bil in ganjil then writeln(bil,' merupakan bilangan ganjil !') else writeln('angka ',bil,' diluar jangkauan himpunan..!'); writeln; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 96
write('Masih Ada Data [Y/T] : ');mad:=readkey; writeln; end; end. 2.
Program untuk menampilkan daftar tagihan biaya penginapan uses crt; type vkode = set of char; vmad = set of char; const vkode_k : vkode = ['1','2','3','4']; xmad : vmad = ['T','t']; var nama : string[20]; alt : string[25]; tgl : string[12]; mad,Kode_k : char; jns_k : string[15]; trf_k : longint; no_k : string[5]; lama : integer; disc, jml_bayar : real; begin repeat clrscr; gotoxy(5,2);write('>> ENTRY DATA PELANGGAN HOTEL <<'); gotoxy(5,3);write('---------------------------------------------------'); gotoxy(5,5);write('Nama Pelanggan : ');readln(nama); gotoxy(5,6);write('Alamat Pelanggan : ');readln(alt); gotoxy(5,7);write('Tanggal Masuk : ');readln(tgl); repeat gotoxy(5,8);write('Kode Kamar : ');readln(kode_k); until (kode_k in vkode_k); if (kode_k = '1') then begin jns_k := 'VIP 1'; trf_k := 125000; end else if (kode_k = '2') then begin jns_k := 'VIP 2'; trf_k := 100000; end else if (kode_k = '3') then begin jns_k := 'VIP 3'; trf_k := 95000; end else begin jns_k := 'Kelas'; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 97
trf_k := 75000; end; gotoxy(5,9);write('Jenis Kamar : ',jns_k); gotoxy(5,10);write('Tarif Kamar : Rp. ',trf_k); gotoxy(5,11);write('Nomor Kamar : ');readln(no_k); gotoxy(5,12);write('Lama Menginap : ');readln(lama); if lama > 4 then disc := 0.1 * trf_k * lama else disc := 0; jml_bayar := lama * trf_k - disc; clrscr; gotoxy(5,5);write('Nama Pelanggan : ',nama); gotoxy(5,6);write('-----------------------------------------------------------------------'); gotoxy(5,7);write('Jns_Kamar Trf_Kamar Lm_Inap Discount Jml_Bayar'); gotoxy(5,8);write('-----------------------------------------------------------------------'); gotoxy(5,9);write(jns_k); gotoxy(17,9);write(trf_k:6); gotoxy(29,9);write(lama:2); gotoxy(37,9);write(disc:6:0); gotoxy(47,9);write(jml_bayar:7:0); gotoxy(5,10);write('-----------------------------------------------------------------------'); gotoxy(5,11);write('Masih Ada Data [Y/T] : ');mad:=readkey; until (mad in xmad); end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 98
BAB XII TYPE DATA FILE Data yang disimpan pada tipe-tipe data yang telah dibahas pada bab-bab sebelumnya bersifat sementara. Artinya, sewaktu program selesai dijalankan, data yang telah diinputkan akan hilang. Pada banyak aplikasi adakalanya diperlukan untuk menyimpan sekumpulan data yang diinputkan untuk tujuan penggunaan dikemudia hari. Kalau dibutuhkan data tersebut dapat dipanggil secara langsung, tanpa perlu dilakukan penginputan kembali. Untuk keperluan demikian, perlu kiranya menyimpan data ke dalam piranti pengingat (media penyimpanan) seperti disket dan hard disk. Penyimpanan data disusun dalam satu unit yang disebut dengan file. Isi sebuah file dapat terdiri dari beberapa komponen (record) yang memiliki tipe yang sama. 12.1 FILE ACAK (RANDOM) / FILE BERTIPE
File bertipe merupakan file yang bisa diakses secara acak. Data diakses secara langsung pada posisi yang diinginkan, tidak harus dimulai dari awal file. Bentuk Pendeklarasian File Acak (File Bertipe) : file of
menunjukkan tipe komponen dari file. Misalnya : 1. var angka : file of integer;
{ komponen bertipe integer }
huruf : file oh char;
{ komponen bertipe char }
Pada contoh diatas semua komponen file bertipe skalar. 2. type data_mhs = record nama : string[20]; bp : string[9]; alamat : string[25]; mid : real; sem : real; end; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 99
var mahasiswa : file of data_mhs; Contoh kedua, komponen dari file berupa record yang mengandung 5 (lima) buah field yaitu : nama, bp, alamat, mid dan sem. 12.1.1 PERNYATAAN ASSIGN
Pernyataan Assign digunakan untuk mengawali semua operasi yang melibatkan file. Bentuk umum penulisan : Assign (nama_variabel_file, ‘nama_file’);
nama_variabel_file merupakan nama variabel file. nama_file merupakan nama file tempat record akan di simpan dalam disk. Contoh : type data_mhs = record nama : string[20]; bp : string[9]; alamat : string[25]; mid : real; sem : real; end; var mahasiswa : file of data_mhs; begin assign (mahasiswa, ‘mhs.dat’); ... ... ... end. 12.1.2 PERNYATAAN REWRITE
Pernyataan rewrite dipakai untuk membuka dan menciptakan file baru pada disk. Dengan perintah rewrite menyebabkan penunjuk file (pointer file) diletakkan pada awal file dan membuat isi file menjadi kosong. Bentuk umum penulisan : Rewrite (nama_variabel_file);
nama_variabel_file merupakan nama variabel file. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 100
Contoh : type data_mhs = record nama : string[20]; bp : string[9]; mid : real; sem : real; end; var mahasiswa : file of data_mhs; begin assign (mahasiswa, ‘mhs.dat’); { membuat file baru } if ioresult <> 0 then rewrite(mahasiswa); {jika terjadi kesalahan dalam membuka/membentuk file maka dibuka atau dibentuk file baru } ... ... ... end. 12.1.3 PERNYATAAN RESET Reset digunakan untuk membuka suatu file yang sudah ada pada media
penyimpanan (disket atau hard disk). File yang dibuka adalah yang berhubungan dengan variabel file. Perintah ini menyebabkan penunjuk file ditempatkan pada awal file, tetapi tidak menghapus isi file. Bentuk umum penulisan : Reset (nama_variabel_file);
nama_variabel_file merupakan nama variabel file. 12.1.4 PERNYATAAN CLOSE
Perintah Close digunakan untuk menutup file yang aktif (file yang terbuka). Bentuk umum penulisan : Close(nama_variabel_file);
nama_variabel_file merupakan nama variabel file.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 101
12.1.5 PERNYATAAN WRITE
Pernyataan Write digunakan untuk menyimpan atau menyalin data dari variabel file ke dalam media penyimpanan (disket / hard disk). Bentuk umum penulisan : Write(nama_variabel_file, record_ file);
nama_variabel_file merupakan nama variabel file. record_file merupakan nama file tempat record akan di simpan dalam disk. Contoh : type data_mhs = record nama : string[20]; bp : string[9]; alamat : string[25]; mid : real; sem : real; end; var mahasiswa : file of data_mhs; record_mhs : data_mhs; begin assign (mahasiswa, ‘mhs.dat’); ... ... ... write(mahasiswa,record_mhs); end. 12.1.6 PERNYATAAN READ
Read digunakan untuk membaca isi file yang tersimpan pada media penyimpanan. Bentuk umum penulisan : Read(nama_variabel_file, record_ file);
nama_variabel_file merupakan nama variabel file. record_file merupakan nama file tempat record di simpan dalam disk.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 102
12.1.7 PERNYATAAN SEEK
Perintah Seek digunakan untuk memindahkan penunjuk file ke posisi tertentu yang diinginkan. Fasilitas ini memungkinkan untuk mengganti atau membaca komponen (record) tertentu dari file. Bentuk umum penulisan : Seek(nama_variabel_file, nilai_counter);
nama_variabel_file merupakan nama variabel file. nilai_counter merupakan nilai posisi dari penunjuk file. 12.1.8 FUNGSI EOF
Fungsi EOF (End Of File) atau akhir dari file menghasilkan nilai True jika penunjuk file sedang berada pada lokasi akhir file dan akan bernilai False jika penunjuk file sedang berada bukan pada lokasi akhir file. Bentuk umum penulisan : Eof(nama_variabel_file);
nama_variabel_file merupakan nama variabel file. 12.1.9 FUNGSI FILESIZE Filesize berfungsi untuk mengetahui jumlah data (record) yang ada dalam file
yang telah disimpan. Bentuk umum penulisan : FileSize(nama_variabel_file);
nama_variabel_file merupakan nama variabel file. 12.2 MENANGANI KESALAHAN I/O
Jika perintah seperti Reset sedang dieksekusi dan ternyata file yang dilibatkan tidak ada, akan menimbulkan kesalahan I/O yang akan mengakibatkan eksekusi program terhenti. Agar kesalahan I/O tidak menyebabkan terhentinya eksekusi program, maka pengarah I harus dibuat dalam keadaan pasif yaitu {$I-}.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 103
Contoh : {$I-} {kalau ada kesalahan I/O akan dibiarkan} reset (variabel_file) {$I+} { kalau ada kesalahan I/O eksekusi program akan dihentikan} 12.3 LATIHAN
1. Contoh program entri data / menginputkan data baru uses crt; type pasien=record kd_pas : string[4]; nm_pas: string[20]; jekel : char; alt : string[25]; end; var file_pas : file of pasien; r_pas : pasien; ketemu : boolean; i,j,jml : byte; vkode : string[4]; mad, dsb : char; begin assign(file_pas,'c:\pascal\pasien.dat'); {membuat / membentuk file baru } {$I-} reset(file_pas); { buka file yang telah dibuat } {$I+} if ioresult <> 0 then rewrite(file_pas); {jika terjadi kesalahan dalam membuka / membentuk file maka dibuka atau dibentuk file baru } mad := 'Y'; repeat clrscr; gotoxy(10,10);write('>> ENTRY DATA PASIEN <<'); gotoxy(10,11);write('-----------------------------------'); gotoxy(10,13);write('Kode Pasien : '); gotoxy(10,14);write('Nama Pasien : '); gotoxy(10,15);write('Jenis Kelamin : '); gotoxy(10,16);write('Alamat : '); gotoxy(10,18);write('Data Sudah Benar [Y/T] : '); gotoxy(10,19);write('Masih Ada Data [Y/T] : '); gotoxy(27,13);readln(vkode); with r_pas do begin jml:=filesize(file_pas); { set nilai variabel jml dari jumlah record yang telah tersimpan } ketemu:=false; for i:=1 to jml do begin Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 104
seek(file_pas,i-1);
{mengarahkan penunjuk file ke awal komponen (record)} read(file_pas,r_pas); {baca data (record) dari variabel file} if vkode=kd_pas then ketemu:=true; end; end; if ketemu then begin gotoxy(10,21);write('Kode pasien sudah terdaftar ....!'); repeat until keypressed; end else begin with r_pas do begin dsb:='T'; repeat gotoxy(27,14);readln(nm_pas); gotoxy(27,15);readln(jekel); gotoxy(27,16);readln(alt); gotoxy(35,18);readln(dsb); until upcase(dsb)='Y'; kd_pas:=vkode; write(file_pas,r_pas); {simpan data (record) yang telah diinputkan kemedia penyimpanan} end; end; gotoxy(35,19);readln(mad); until upcase(mad)='T'; close(file_pas); end. 2. Contoh program edit/ koreksi data uses crt; type pasien=record kd_pas : string[4]; nm_pas : string[20]; jekel : char; alt : string[25]; end; var file_pas : file of pasien; r_pas : pasien; ketemu : boolean; i,j,jml : byte; vkode : string[4]; mad, dsb : char; begin assign(file_pas,'pasien.dat'); Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 105
{$I-} reset(file_pas); {$I+} if ioresult <> 0 then rewrite(file_pas); mad := 'Y'; repeat clrscr; gotoxy(10,10);write('>> ENTRY DATA PASIEN <<'); gotoxy(10,11);write('-----------------------------------'); gotoxy(10,13);write('Kode Pasien : '); gotoxy(10,14);write('Nama Pasien : '); gotoxy(10,15);write('Jenis Kelamin : '); gotoxy(10,16);write('Alamat : '); gotoxy(10,18);write('Data Sudah Benar [Y/T] : '); gotoxy(10,19);write('Masih Ada Data [Y/T] : '); gotoxy(27,13);readln(vkode); with r_pas do begin jml:=filesize(file_pas); ketemu:=false; for i:=1 to jml do begin seek(file_pas,i-1); {mengarahkan penunjuk file ke awal komponen (record) } read(file_pas,r_pas); if vkode=kd_pas then begin gotoxy(27,14);write(nm_pas); gotoxy(27,15);write(jekel); gotoxy(27,16);write(alt); ketemu:=true; end; end; end; if not ketemu then begin gotoxy(10,21);write('Kode pasien tidak terdaftar ....!'); repeat until keypressed; end else begin with r_pas do begin dsb:='T'; repeat gotoxy(27,14);readln(nm_pas); gotoxy(27,15);readln(jekel); gotoxy(27,16);readln(alt); gotoxy(35,18);readln(dsb); until upcase(dsb)='Y'; Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 106
kd_pas:=vkode; seek(file_pas,filesize(file_pas)); {mengarahkan penunjuk file ke akhir komponen (record)} write(file_pas,r_pas); end; end; gotoxy(35,19);readln(mad); until upcase(mad)='T'; close(file_pas); end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 107
BAB XIII SUARA & GRAFIK 13.1 MODE SUARA
Untuk menampilkan efek suara di speaker dapat menggunakan perintah : Sound (Frekuensi_bunyi)
Sedangkan untuk menghilang efek bunyi dapat digunakan perintah NoSound. Contoh : Uses crt, graph3; Begin Repeat Sound(500); Delay(2000); Sound(145); Delay(2000); Until keypressed; NoSound; End. 13.2 MODE GRAFIK
Dalam turbo pascal, untuk pembuatan grafik disediakan 3 macam mode grafik yang terdapat dalam unit Graph3, yaitu : 1. GraphMode
Grafik hitam putih dengan 320 x 200 pixel
2. GraphColor Mode Grafik warna dengan 320 x 200 pixel 3. HiRes
Grafik resolusi tinggi yang terdiri 640 x 200 pixel
Koordinat pada grafik adalah sebagai berikut :
Dengan pixel pada pojok kiri atas pada layar memiliki koordinat (0 ,0).
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 108
13.2.1 MODE UNTUK GRAPHMODE GraphMode
Pada graphmode, koordinat X mempunyai batasan titik antar 0 sampai dengan 319, dan koordinat Y mempunyai nilai antara 0 sampai dengan 199.
GraphBackGround(warna : integer)
Digunakan
untuk
memilih
warna
latar
belakang
(background). Nilai dari warna antara 0 sampai dengan 15. Nilai 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Konstanta Black Blue Green Cyan Red Magenta Brown Lightgray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White
Warna Hitam Biru Hijau Sian Merah Magenta Coklat Abu-abu Abu-abu tua Biru cerah Hijau cerah Sian cerah Merah cerah Magenta cerah Kuning Putih
Palette(warna_palet : integer)
Untuk memilih kelompok warna. Warna_ palet dapat bernilai 0 atau 1. Plot(X, Y, warna : Integer)
Untuk menggambar sebuah piksel (titik) pada koordinat (X, Y). warna dapat dipilih antara 0 sampai dengan 3. Nilai Warna Palette 0 Palette 1
0 LB LB
1 Biru Biru Cerah
2 Merah Merah Cerah
3 Abu-abu Putih
Draw(X1, Y1, X2, Y2, warna : Integer)
Untuk menggambar garis dari piksel (X1,Y1) ke piksel (X2, Y2). Nilai warna 0–3. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 109
13.2.2 MODE UNTUK GRAPH COLOR MODE GraphColorMode
Pada mode ini , koordinat X mempunyai batasan titik antar 0 sampai dengan 319, dan koordinat Y mempunyai nilai antara 0 sampai dengan 199.
GraphBackGround(warna : integer)
Digunakan
untuk
memilih
warna
latar
belakang
(background). Nilai dari warna antara 0 sampai dengan 15. Palette(warna_palet : integer)
Untuk memilih kelompok warna. Warna_ palet dapat bernilai 0, 1, 2 atau 3. Plot(X, Y, warna : Integer)
Untuk menggambar sebuah piksel (titik) pada koordinat (X, Y). warna dapat dipilih antara 0 sampai dengan 3. Nilai Warna Palette 0 Palette 1 Palette 2 Palette 3
0 LB LB LB LB
1 Hijau Sian Hijau Cerah Sian Cerah
2 Merah Magenta Merah Cerah Magenta Cerah
3 Coklat Abu-abu Kuning Putih
Draw(X1, Y1, X2, Y2, warna : Integer)
Untuk menggambar garis dari piksel (X1,Y1) ke piksel (X2, Y2). Nilai warna 0–3. 13.2.3 MODE UNTUK HIRES HiRes
Pada mode ini, koordinat X mempunyai batasan titik antar 0 sampai dengan 639, dan koordinat Y mempunyai nilai antara 0 sampai dengan 199. Warna latar (background) berwarna hitam.
HiResColor(warna : integer)
Untuk memilih warna piksel yang hendak ditampilkan. Nilai Warna antara 0 sampai dengan 15. Plot(X, Y, warna : Integer)
Untuk menggambar sebuah piksel (titik) pada koordinat (X, Y). Warna sama dengan 1 untuk menampilkan piksel. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 110
Draw(X1, Y1, X2, Y2, warna : Integer)
Untuk menggambar garis dari piksel (X1,Y1) ke piksel (X2, Y2). Nilai warna 1 untuk menampilkan garis. 13.2.4 FUNGSI GRAFIK LAINNYA
GraphWindow(X1, Y1, X2, Y2)
Digunakan untuk membuat jendela pada mode grafik. (X1, Y1) merupakan koordinat pojok kiri atas jendela dan (X2,Y2) menunjukkan koordinat kanan bawah jendela. Ukuran jendela terbesar pada mode 320 x 200 (0,0,319,199) dan untuk mode 640 x 200 (0,0,639,199).
Arc (X, Y, Sudut, Jari, Warna : integer)
Digunakan untuk menggambar sebuah busur mulai koordinat (X, Y), nilai warna (0..3).
Circle(X, Y, Jari, Warna : integer)
Digunakan untuk menggambar lingkaran dengan pusat lingkaran (X, Y).
ColorTable(Warna1,Warna2,Warna3,Warna4 : Integer)
Untuk memperoleh tabel translasi warna, yang memungkinkan warna pada suatu titik menentukan warna barunya jika pada titik tersebut dikenakan operasi penulisan titik kembali.
FillPatern(X1, Y1, X2, Y2, Warna : Integer)
Digunakan untuk memenuhi segi empat yang pojok kiri atasnya (X1, Y1) dan pojok kanan bawah (X2, Y2).
FillScreen(Warna : Integer)
Digunakan untuk mengisi jendela layar yang aktif dengan warna.
FillShape(X, Y, Warna1, Warna 2 : Integer)
Prosedur ini digunakan untuk memenuhi sembarang yang dibatasi oleh warna1 dengan warna2. (X, Y) merupakan koordinat sampel dari titik dalam area yang hendak diwarnai.
GetDot Color(X, Y : Integer) : Integer
Merupakan fungsi yang menghasilkan kode warna dari titik pada koordinat (X, Y).
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 111
GetPic(Var V; X1, Y1, X2, Y2 : Integer)
Untuk menyimpan data gambar dari daerah segi empat yang memiliki koordinat kiri atas (X1, Y1) dan koordinat pojok kanan bawah (X2, Y2) ke dalam variabel V.
PutPic(Var V; X, Y : Integer)
Digunakan untuk menempatkan data gambar yang ada pada variabel V ke lokasi yang memiliki koordinat pojok kiri bawah (X, Y). 13.3 LATIHAN
1. Contoh program grafik lingkaran yang dengan efek suara uses crt, graph3; var i, j, warna : integer; begin graphcolormode; graphwindow(0,0,639,199); fillscreen(0); i:=0; warna := 1; j:=0; repeat circle(80+i,30+i,20,1); circle(200-i,30+i,20,1); circle(140,30+i,20,warna); circle(80+i,90,20,warna); delay(10000); i:=i+5; if (i = 65) then i := i + 10; if (warna=3) then warna:=0; inc(warna); until i >= 130; repeat circle(140,90,0+j,0); delay(10000); sound(50+j); j:=j+1; until j >= 115; nosound; gotoxy(8,24);write('Tekan Enter .... Exit !!'); repeat until readkey=#13; textmode(C80); end.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 112
2. Contoh program grafik lingkaran dengan menggunakan perintah Arc uses crt, graph3; var i : integer; begin graphcolormode; graphwindow(0,0,639,199); fillscreen(0); i:=0; gotoxy(10,24);write('Tekan Enter .... Exit !!'); repeat arc(80+i,30+i,360,20,3); arc(200-i,30+i,360,20,2); arc(140,30+i,360,20,1); arc(80+i,90,360,20,1); delay(10000); i:=i+5 until i >= 130; repeat until readkey=#13; textmode(C80); end. 3. Contoh program grafik animasi garis uses crt, graph3; procedure gambar(warna : byte); var i : integer; begin i := 0; repeat draw(10+i,99,119,105-i+4,warna); draw(230-i,99,119,105-i+4,warna); draw(230-i,99,119,105+i-4,warna); draw(10+i,99,119,105+i-4,warna); delay(10000); i := i + 5; until i >=105; end; begin graphcolormode; gambar(2); gotoxy(1,25);write('Tekan Enter ...!!!'); graphwindow(20,20,319,199); gambar(3); graphwindow(40,40,319,199); gambar(1); repeat until readkey=#13; textmode(C80); end. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 113
LAMPIRAN 1 TABEL ASCII Dec 000
Hex 00H
CHR Null
Dec 039
Hex 27H
CHR ‘
Dec 078
Hex 4EH
CHR N
Dec 117
Hex 75H
CHR u
001
01H
☺
040
28H
(
079
4FH
O
118
76H
v
002
02H
☻
041
29H
)
080
50H
P
119
77H
w
003
03H
♥
042
2AH
*
081
51H
Q
120
78H
x
004
04H
♦
043
2BH
+
082
52H
R
121
79H
y
005
05H
♣
044
2CH
,
083
53H
S
122
7AH
z
006
06H
♠
045
2DH
-
084
54H
T
123
7BH
{
007
07H
•
046
2EH
.
085
55H
U
124
7CH
|
008
08H
◘
047
2FH
/
086
56H
V
125
7DH
}
009
09H
○
048
30H
0
087
57H
W
126
7EH
~
010
0AH
◙
049
31H
1
088
58H
X
127
7FH
DEL
011
0BH
♂
050
32H
2
089
59H
Y
128
80H
Ç
012
0CH
♀
051
33H
3
090
5AH
Z
129
81H
ü
013
0DH
♪
052
34H
4
091
5BH
[
130
82H
é
014
0EH
♫
053
35H
5
092
5CH
\
131
83H
â
015
0FH
☼
054
36H
6
093
5DH
]
132
84H
ä
016
10H
►
055
37H
7
094
5EH
^
133
85H
à
017
11H
◄
056
38H
8
095
5FH
_
134
86H
å
018
12H
↕
057
39H
9
096
60H
`
135
87H
ç
019
13H
‼
058
3AH
:
097
61H
a
136
88H
ê
020
14H
¶
059
3BH
;
098
62H
b
137
89H
ë
021
15H
§
060
3CH
<
099
63H
c
138
8AH
è
022
16H
▬
061
3DH
=
100
64H
d
139
8BH
ï
023
17H
↨
062
3EH
>
101
65H
e
140
8CH
î
024
18H
↑
063
3FH
?
102
66H
f
141
8DH
ì
025
19H
↓
064
40H
@
103
67H
g
142
8EH
Ä
026
1AH
→
065
41H
A
104
68H
h
143
8FH
Å
027
1BH
←
066
42H
B
105
69H
i
144
90H
É
028
1CH
∟
067
43H
C
106
6AH
j
145
91H
æ
029
1DH
č
068
44H
D
107
6BH
k
146
92H
Æ
030
1EH
▲
069
45H
E
108
6CH
l
147
93H
ô
031
1FH
▼
070
46H
F
109
6DH
m
148
94H
ö
032
20H
SPC
071
47H
G
110
6EH
n
149
95H
ò
033
21H
!
072
48H
H
111
6FH
o
150
96H
û
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 114
Dec 034
Hex 22H
CHR “
Dec 073
Hex 49H
CHR I
Dec 112
Hex 70H
CHR p
Dec 151
Hex 97H
CHR ù
035
23H
#
074
4AH
J
113
71H
q
152
98H
ÿ
036
24H
$
075
4BH
K
114
72H
r
153
99H
Ö
037
25H
%
076
4CH
L
115
73H
s
154
9AH
Ü
038
26H
&
077
4DH
M
116
74H
t
155
9BH
¢
156
9CH
£
181
B5H
╡
206
CEH
╬
231
E7H
Τ
157
9DH
¥
182
B6H
╢
207
CFH
╧
232
E8H
Φ
158
9EH
₧
183
B7H
╖
208
D0H
╨
233
E9H
Θ
159
9FH
ƒ
184
B8H
╕
209
D1H
╤
234
EAH
Ω
160
A0H
á
185
B9H
╣
210
D2H
╥
235
EBH
δ
161
A1H
í
186
BAH
║
211
D3H
╙
236
ECH
∞
162
A2H
ó
187
BBH
╗
212
D4H
╘
237
EDH
φ
163
A3H
ú
188
BCH
╝
213
D5H
╒
238
EEH
ε
164
A4H
ñ
189
BDH
╜
214
D6H
╓
239
EFH
∩
165
A5H
Ñ
190
BEH
╛
215
D7H
╫
240
F0H
≡
166
A6H
ª
191
BFH
┐
216
D8H
╪
241
F1H
±
167
A7H
º
192
C0H
└
217
D9H
┘
242
F2H
≥
168
A8H
¿
193
C1H
┴
218
DAH
┌
243
F3H
≤
169
A9H
⌐
194
C2H
┬
219
DBH
█
244
F4H
⌠
170
AAH
¬
195
C3H
├
220
DCH
▄
245
F5H
⌡
171
ABH
½
196
C4H
─
221
DDH
▌
246
F6H
÷
172
ACH
¼
197
C5H
┼
222
DEH
▐
247
F7H
≈
173
ADH
¡
198
C6H
╞
223
DFH
▀
248
F8H
°
174
AEH
«
199
C7H
╟
224
E0H
α
249
F9H
·
175
AFH
»
200
C8H
╚
225
E1H
ß
250
FAH
·
176
B0H
░
201
C9H
╔
226
E2H
Γ
251
FBH
√
177
B1H
▒
202
CAH
╩
227
E3H
π
252
FCH
ⁿ
178
B2H
▓
203
CBH
╦
228
E4H
Σ
253
FDH
²
179
B3H
│
204
CCH
╠
229
E5H
σ
254
FEH
■
180
B4H
┤
205
CDH
═
230
E6H
µ
255
FFH
Blank
Keterangan : Dec
= Decimal (Nilai ASCII)
Hex
= Hexadesimal
CHR = Character Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 115
LAMPIRAN 2 DAFTAR TOMBOL PERLUASAN KODE
TOMBOL
KODE
TOMBOL
3 15 16 17 18 19 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 44 45 46 47 48 49 50 59 - 68 71 72
NUL (Karakter null) Shift – Tab Alt - Q Alt - W Alt - E Alt Alt - T Alt - Y Alt - U Alt - I Alt - O Alt - P Alt - A Alt - S Alt - D Alt - F Alt - G Alt - H Alt - J Alt - K Alt - L Alt - Z Alt - X Alt - C Alt - V Alt - B Alt - N Alt - M F1 .. F10 HOME Panah Atas
73 75 77 79 80 81 82 83 84 .. 93 94 .. 103 104 .. 113 114 115 116 117 118 119 120 .. 128 129 130 131 132 133 134 135 136 137 138 139 140
Page UP Panah Kiri Panah Kanan END Panah Bawah Page Down INS DEL Shift (F1 .. F10) Ctrl (F1 .. F10) Alt (F1 .. F10) Ctrl - Print Scrn Ctrl - Panah Kiri Ctrl - Panah Kanan Ctrl – END Ctrl – Page Down Ctrl – Home Alt (1 .. 9) Alt – 0 Alt – Alt – = Ctrl – Page Up F11 F12 Shift – F11 Shift – F12 Ctrl – F11 Ctrl – F12 Alt – F11 Alt – F12
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 116
LAMPIRAN 3 PESAN KESALAHAN A. KESALAHAN SAAT KOMPILASI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Out Of Memory Memori tidak cukup untuk melakukan proses. Identifier Expected Pengenal diperlukan pada posisi yang ditunjukkan. Unknown Identifier Pengenal belum dideklarasikan. Duplicate Identifier Ada pengenal dengan nama yang sama. Syntax Error Ada karakter yang tidak diperkenankan. Error In Real Constant Salah dalam menuliskan konstanta real. Error In Integer Constant Salah dalam menuliskan konstanta integer. String Constant Exeeds Line Salah karena string belum diakhiri dengan tanda petik. Too Many Nested Files File include yang memanggil file include perlu di kurangi. Unexpected End Of File Biasanya disebabkan salah penulisan begin dan end atau ada suatu komentar yang belum ditutup. Line Too Long Panjang karakter dalam baris melebihi 126 karakter. Type Identifier Expected Pengenal type belum diberikan. Too Many Open File Terlalu banyak file yang dibuka (dapat diatur melalui file CONFIG.SYS). Invalid File Name Nama file salah. File Not Found File tidak ditemukan. Disk Full Disk penuh. Invalid Compiler Directive Pengarah kompiler yang ditunjukkan tidak dikenal. Too Many File Terlalu banyak file yang dilibatkan sewaktu melakukan kompilasi unit atau program. Undifined Type In Pointer Definition Type yang digunakan pada pendefinisian pointer belum dideklarasikan. Variabel Identifier Expected Pengenal yang ditunjuk seharusnya menyatakan sebuah variabel. Error In Type Kesalahan dalam pendefinisian type. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 117
22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Structure Too Large Type terstruktur terlalu besar (ukuran maksimal yang diperkenankan yaitu 65520 byte) Set Base Type Out Of Range Tipe dasar dari himpunan harus berada dalam kawasan 0 sampai dengan 255 atau berupa type enumerasi yang jumlah kemungkinannya tidak lebih dari 256 buah. File Components May Not be Files Komponen dari file tidak boleh berupa file. Invalid String Length Panjang string dalam deklarasi harus terletak antara 1 sampai dengan 255. Type Mismatch Tipe tidak cocok. Invalid Subrange Base Type Kesalahan pada type dasar subrange. Lower Bound Greater Then Upper Bound Dalam mendeklarasikan subrange, nilai awal harus lebih kecil dari pada nilai akhir. Ordinal Type Expected Type yang diperkenankan adalah type ordinal. Integer Constant Expected Membutuhkan konstanta integer. Constant Expected Membutuhkan suatu konstanta. Integer or Real Constant Expected Membutuhkan konstanta real atau integer. Type Identifier Expected Membutuhkan pengenal type. Invalid Function Result Type Tipe keluaran fungsi salah (seharusnya berupa tipe sederhana, string atau pointer). Label Identifier Expected Membutuhkan pengenal type. Begin Expected Membutuhkan pernyataan Begin. End Expected Membutuhkan pernyataan End. Integer Expression Expected Membutuhkan ungkapan integer. Ordinal Expression Expected Membutuhkan ungkapan ordinal. Boolean Expression Expected Membutuhkan ungkapan boolean. Operand Type Do Not Match Operator Type operan tidak sesuai dengan operator. Error In Expression Kesalahan dalam penulisan ungkapan. Illegal Asignment Kesalahan dalam penyataan penugasan. Field Identifier Expected Membutuhkan field dari record. Object File Too Large File .OBJ yang berukuran lebih dari 64 KB tidak dapat di LINK oleh Turbo Pascal. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 118
46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
Undefined External Prosedur atau fungsi eksternal belum didefinisikan. Invalid Object File Record Ada suatu obyek record dalam file .OBJ yang tidak sah. Code Segment Too Large Kode dalam segmen kode terlalu besar. Prosedur atau funsi perlu dipecah dalam beberapa unit. Data Segment Too Large Data dalam segmen data terlalu besar. Tempatkan data dalam heap. Do Expected Membutuhkan pernyataan Do. Invalid Public Definition Invalid Extrn Definition Too Many Extrn Definition Kesalahan yang berkaitan dengan bahasa Assembly. Of Expected Membutuhkan pernyataan Of. Interface Expected Membutuhkan interface. Invalid Relocatable Reference Then Expected Membutuhkan pernyataan Then. To or Downto Expected Membutuhkan pernyataan To atau Downto. Undefined Forward Definisi dari prosedur atau fungsi belum diberikan. Too Many Procedures Terlalu banyak prosedur atau fungsi. Jumlah prosedur atau fungsi per modul tidak boleh lebih dari 512 buah. Invalid Type Cast Kesalahan dalam melakukan typecast (konversi type). Division By Zero Kesalahan karena pembagian bilangan dengan nol. Invalid File Type Tipe file yang digunakan tidak mengenal prosedur atau fungsi penanganan file yang ditunjukkan. Can Not Read or Write Variables of This Type Tipe dari variabel yang ditunjuk tidak dapat digunakan pada instruksi Write dan Writeln atau pada Read atau Readln. Pointer Variabel Expected Membutuhkan variabel pointer. String Variabel Expected Membutuhkan variabel string. String Expression Expected Membutuhkan ungkapan string. Circular Unit Reference Kesalahan disebabkan dua buah unit saling memanggil. Unit Name Mismatch Unit pada file.TPU tidak cocok dengan nama yang dinyatakan klausa USES Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 119
70.
Unit Version Mismatch Versi tidak cocok. (untuk mengatasinya, unit perlu dikompilasi lagi) 71. Duplicate Unit Name Ada duplikasi nama unit 72. Unit File Format Error Ada suatu kesalahan format pada file.TPU 73. Implementation Expected Kurang IMPLEMENTATION 74. Constant And Case Types Do Not Match Antara konstanta dan tipe CASE tidak cocok 75. Record Variabel Expected Membutuhkan variabel record 76. Constant Out Of Range Nilai konstanta melebihi nilai kawasannya (misalnya karena variabel bertipe Byte diberi nilai 567). 77. File Variabel Expected 78. Pointer Expression Expected 79. Integer Or Real Expression Expected 80. Label Not Within Current Blok Kesalahan disebabkan ada penyataan goto yang menunjuk kelabel yang kotaknya diluar blok. 81. Label Already Defined Label sudah ada pada pernyataan 82. Undifined Label In Preceding Statement Part Label belum didefinisikan. 83. Invalid @argument Operator @ hanya dapat dikenalkan pada variabel, prosedur atau fungsi 84. UNIT Expected 85. “;” Expected 86. “:” Expected 87. “,” Expected 88. “(“ Expected 89. “)” Expected 90. “=” Expected 91. “:=” Expected 92. “[“ or “(.“ Expected 93. “]” or “.)” Expected 94. “.” Expected 95. “..” Expected 96. Too Many Variables Jumlah variabel terlalu banyak. Total variabel global dalam sebuah program atau unit tidak boleh melebihi 64 KB. Total variabel lokal dalam prosedur atau fungsi juga tidak melebihi 64 KB. 97. Invalid For Control Variable Variabel control (kendali) dalam FOR harus berupa tipe sederhana. 98. Integer Variable Expected 99. Files Are Not Allowed Here Tipe file tidak diperkenankan diletakkan pada lokasi yang ditunjuk. 100. String Length Mismatch Panjang constanta sering tidak cocok dalam jumlah komponen dalam array karakter. Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 120
101. Invalid Ordering Of Fileds Kesalahan dalam meletakkan urutan field dalam tipe record. 102. String Constant Expected 103. Integer Or Real Variable Expected 104. Ordinal Variable Expected 105. INLINE Error Kesalahan dalam instruksi INLINE 106. Character Expression Expected 107. Too Many Relocation Expected 108. CASE Constant Out Of Range 109. Eror In Statement Kesalahan dalam pernyataan. 110. Cannot Call An Interrupt Procedure Prosedure interrupt tak dapat dipanggil secara langsung. 111. Must Be In 8087 Mode To Compile This Tipe seperti Comp, Doudle, Extended, Single hanya bisa dikompilasi kalau ada prosesor numerik 8087. gunakan pengarah kompiler {N+} supaya bisa dikompilasi. 112. Target Address Not Found Tampil kalau kita melakukan pilihan compile/Find pada IDE dan alamat target tidak ada. 113. Include Files Are Not Allowed Here Setiap bagian dari pernyataan harus secara keseluruhan berada dalam satu file 114. NIL Expected Membutuhkan NIL 115. Invalid Qualifier Kemungkinan kesalahan: - Ada indek terhadap suatu variabel, padahal variabel tersebut bukanlah array - Field diterapkan pada variabel bukan record - Variabel yang bukan pointer diperlakukan sebagai pointer 116. Invalid Variable Reference 117. Too Many Symbol Terlalu banyak simbol 118. Statement Part Too Large Terlalu banyak pernyataan-pernyataan perlu di bagi-bagi kedalam prosedur. 119. Files Must Be Var Parameters Parameter file harus berupa VAR 120. Too Many Conditional Symbols 121. Misplaced Conditional Derictive 122. ENDIF Directive Missing 123. Error In Initial Conditional Defines Kesalahan yang berkaitan dengan pengarah kondisi ({$IFDEF}-{$ENDIF} 124. Critical Disk Error Kesalahan yang berkaitan dengan disk (misalnya Pintu drive belum tertutup) 125. Cannot Evaluate This Expression Sistem turbo pascal tak bisa menghitung ungkapan yang ditunjukkan 126. Expression Incorrectly Terminated Ungkapan kurang lengkap 127. Invalid Format Specifier 128. Invalid Indirect Reference Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 121
129. Struktured Variabel Are Not Allowed Here Operasi yang dilakukan terhadap variabel terstruktur tidak diperkenankan (misalnya melakukan perkalian terhadap dua buah record) 130. Canot Evaluated Without System Unit Unit sytem tidak ada pada TURBO.TPL 131. Cannot Acces This Symbol Tidak dapat mengakses simbol yang ditunjukan 132. Invalid Floayting-Poin Operation Ada pembagian dengan bilangan nol atau operasi terhadap bilangan real menyebabkan oveflow 133. Cannot Compile Overlays To Memory Program yang mengandung ovelay harus dikompilasi ke disk 134. Procedure Or Fungtion Variable Expected Operator @ hanya dapat dikenakan pada variabel prosedur atau fungsi. 135. Invalid Procedure Or Fungtion Reference - Disebabkan adanya prosedur yang dipanggil dalam suatu ungkapan - Prosedur atau fungsi perlu dikompilasi dengan menyertakan pengarah compiler {$F+} 136. Cannon Overlay This Unit Unit hanya bisa di overlay dengan menyertakan pengaruh {$O} B. RUN – TIME ERROR 1. 2.
3. 4. 5. 6. 7. 8. 9. 10. 11.
File Not Found File yang diakses tidak ditemukan. Perintah yang menyebabkan timbulnya kesalahan ini adalah Reset, Rename, Append dan Erase. Path Not Found Path atau directory tidak ditemukan atau nama path atau direktori salah (invalid). Perintah yang menyebabkan timbulnya kesalahan ini adalah Reset, Rename, Append, Erase, ChDir, MkDir dan RmDir. Too Many Open Files Terlalu banyak file yang dibuka. Kesalahan ini dapat ditimbulkan oleh perintah Reset, ReWrite dan Append. File Access Denied Akses terhadap file gagal. Invalid File Handle Kesalahan penanganan file. Invalid File Access Code Kesalahan terjadi karena kode akses terhadap file tidak berlaku (invalid) Invalid Drive Number Kode drive tidak berlaku. Cannot Remove Current Directory Direktori tidak dapat dihapus. Cannot Rename Across Drives Penggantian nama file harus dalam satu drive. Disk Read Error Kesalahan terjadi karena ada operasi pembacaan (read) pada posisi EOF (akhir file) pada file bertipe (acak) Disk Write Error Disk penuh ketika ada penulisan ke disk Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 122
12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
File Not Assigned Variabel file pada reset, Rewrite, Append, Rename atau Erase dikaitkan dengan nama file. File Not Open File belum dibuka File Not Open For Input Ada operasi membaca file pada file dibuka bukan dengan mode input. File Not Open For Output File tidak dibuka untuk output. Invalid Numeric Format Format numerik salah ketika ada pembacaan oleh Read atau Readln pada file teks. Disk Is Write Protected Unknown Unit Drive Not Ready Unknown Command CRC Error In Data Bad Drive Request Structure Length Disk Seek Error Unknown Media Type Printer Out Of Range Device Write Fault Device Read Fault Hardware Failure Devision by Zero Range Check Error Kesalahan yang terjadi karena suatu nilai berada di luar kawasan yang ditentukan. Stack Overflow Error Tidak ada lagi ruang dalam stack. Heap Overflow Error Tidak ada lagi ruang dalam heap. Invalid Pointer Operation Salam dalam melakukan Dispose dan FreeMem. Floating Point Overflow Operasi bilangan real menimbulkan overflow. Floating Point Underflow Terjadinya Underflow. Invalid Floating Point Operation Operasi terhadap bilangan real ada yang tidak berlaku. Overlay Manager Not Installed OverInit belum dipanggil atau pemanggilan terhadapnya gagal. Overlay File Read Error Ada suatu kesalahan sewaktu manajer overlay membaca file overlay.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM
Page 123
DAFTAR PUSTAKA
Abdul Kadir, Pemrograman Dasar Turbo Pascal, Andi Offset, Yogyakarta, 1993. Bambang Harianto, Struktur Data, Bandung, Informatika, 1999. Heri Sismoro, Struktur Data dan Pemrograman dengan Pascal, Andi Offset, 2004. Isap Santoso, Struktur Data Menggunakan Turbo Pascal 6.0, Andi Offset, Yogyakarta. Jogiyanto. HM, Teori dan Aplikasi Program Komputer Bahasa Turbo Pascal, Jilid I & II , Andi Offset, Yogyakarta, 1993. Markus Robijanto Kusuma, Belajar Turbo C dengan Cepat dan Mudah, Elex Media Komputindo, Jakarta, 1995. Munir Renaldi, Algoritma Pemrograman I Dalam Pascal dan C, Bandung, Informatika, 1999. Paulus Bambangwirawan, Struktur Data dengan C, Andi Offset, Yogyakarta, 2004.
Bahasa Pemrograman Pascal FERDINAL. R, S.KOM