BAB I
MENGENAL PASCAL
1.1. Pendahuluan
Pascal adalah bahasa tingkat tinggi (high level language) yang orentasinya dirancang pada segala tujuan, dirancang oleh Professor Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama Pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan philosofi terkenal di abad 17 dari Perancis. Professor Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan tujuan untuk membantu mengajar program komputer secara sistematis, khususnya untuk memperkenalkan pemrogaman yang terstruktur (structured programming). Jadi Pascal adalah bahasa yang ditujukan untuk membuat program terstruktur.
Dalam waktu singkat, Pascal telah menjadi bahasa yang populer di kalangan pelajar universitas dan merupakan bahasa yang diajarkan di beberapa perguruan tinggi. Beberapa profesional komputer juga mulai beralih ke bahasa Pascal. Kenyataannya, Pascal merupakan bahasa yang paling cepat populer dibandingkan dengan bahasa-bahasa komputer tingkat tinggi lainnya.
Turbo Pascal adalah copyright oleh BORLAND Inc.dapat digunakan pada sistem operasi PC-DOS, MS-DOS, CPM-86 dan CP/M-80. Buku ini menggunakan Turbo Pascal versi 7.0. Selain itu BORLAND Inc. Juga telah mengembangkan Pascal menjadi bahasa pemrogaman visual yaitu Borland Delphi dengan struktur bahasa pemrogaman Pascal yang telah dikembangkan lebih lanjut lagi.
1.2. Struktur Program Pascal
Struktur dari suatu program Pascal terdiri dari sebuah judul program (program heading) dari suatu blok program (program block) atau badan program (body program). Blok program dibagi lagi menjadi dua bagian, yaitu bagian deklarasi (declaration part) dan bagian pernyataan (statement part). Bagian deklarasi ini dapat terdiri dari deklarasi label (labels declaration), deklarasi konstanta (constants declaration), deklarasi tipe (type declaration), deklarasi variabel (variables declaration), deklarasi prosedur (procedures declaration), dan deklarasi fungsi (function declaration). Secara ringkas, stuktur program Pascal dapat terdiri dari :
1. Judul program
2. Blok program Judul program
a. Bagian deklarasi
deklarasi label Bagian deklarasi deklarasi konstanta
definisi tipe
deklarasi variabel Bagian pernyataan deklarasi prosedur
deklarasi fungsi
b. Bagian pernyataan
1.3. Deklarasi
identifier tersebut dikenalkan terlebih dahulu sebelum digunakan, yaitu dideklarasikan terlebih dahulu pada bagian ini.
1.3.1. Deklarasi Konstanta
Definisi konstanta diawali dengan kata const diikuti oleh kumpulan identifier yang diberi suatu nilai konstanta.
program contoh_konstanta; uses crt;
const
potongan = 0.2; gaji = 25000;
nama_perusahaan = 'PT Lali Jaya'; begin
clrscr;
writeln('potongan = ',potongan); writeln('gaji = ',gaji);
writeln('nama = ',nama_perusahaan); readln;
end.
1.3.2. Deklarasi Variabel
Variabel adalah identifier yang diberi data yang dapat berubah-ubah nilainya di dalam program.
program contoh_variabel; uses crt;
var
total,gaji,tunjangan : real; menikah : boolean;
jumlahanak : integer; keterangan : string[25]; begin
keterangan := 'karyawan Teladan'; writeln('Gaji Bulanan : Rp. ',gaji); writeln('Tunjangan : Rp. ',tunjangan); writeln('Total gaji : Rp. ',total); writeln('Sudah Menikah : ',menikah); writeln('Jumlah Anak : ',jumlahanak); writeln('keterangan : ',keterangan); readln;
end.
1.3.3. Deklarasi Tipe
Deklarasi ini terdiri dari:
1. Tipe data sederhana (simple-type data) terdiri dari : a. Tipe data standar (standard data type) :
integer
real
char
string boolean
b. Tipe data didefinisikan pemakai (user-defined data type)
subrange type
2. Tipe data terstruktur (structured-type data), terdiri dari : a. array
total,gaji,tunjangan: pecahan; menikah : logika;
keterangan := 'karyawan Teladan'; writeln('Gaji Bulanan : Rp. ',gaji); writeln('Tunjangan : Rp. ',tunjangan); writeln('Total gaji : Rp. ',total); writeln('Sudah Menikah : ',menikah); writeln('Jumlah Anak : ',jumlahanak); writeln('keterangan : ',keterangan); readln;
end.
1.3.4. Deklarasi Label
Kalau program anda menggunakan statemen goto untuk meloncat ke suatu statemen yang tertentu, maka dibutuhkan suatu label pada statemen yang dituju dan label tersebut harus dideklarasikan terlebih dahulu pada bagian deklarasi. Mendeklarasikan label diawali dengan kata cadangan label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan diakhiri dengan titik koma.
1.3.5. Deklarasi Prosedur
Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan dimanapun di dalam program. Prosedur dapat berupa prosedur standar (sudah disediakan oleh Pascal) maupun prosedur yang akan dibuat sendiri oleh pemakai. Prosedur dibuat sendiri bilamana program akan dibagi-bagi menjadi beberapa blok modul. Prosedur dibuat di dalam program dengan cara mendeklarasikannya di bagian deklarasi prosedur. Kata cadangan procedure digunakan sebagai judul dari bagian deklarasi prosedur, diikuti oleh identifier yang merupakan nama dari prosedurnya dan secara optional dapat diikuti lagi oleh kumpulan parameter yang diakhiri dengan titik koma.
program contoh_prosedur; uses crt;
procedure tambah(x,y :integer; var hasil: integer); begin
hasil := x+y; end;
{program utama} var
z : integer; begin
clrscr;
tambah(2,3,z);
writeln('2 + 3 = ',z); readln;
end.
1.3.6. Deklarasi Fungsi
Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada beberapa perbedaanya. Fungsi dapat berupa fungsi standar (sudah disediakan oleh Pascal) atau Fungsi yang akan dibuat sendiri oleh pemakai. Bila pemakai akan membuat sendiri suatu fungsi, maka harus dideklarasikan terlebih dahulu. Kata cadangan function mengawali bagian deklarasi fungsi diikuti oleh identifier yang merupakann nama dari fungsinya dan secara optional dapat diikuti oleh kumpulan parameter, tipe dari fungsinya dan diakhiri dengan titik koma.
program contoh_fungsi; uses crt;
function tambah(x,y :integer) : integer; begin
tambah := x+y; end;
{program utama} var
z : integer; begin
clrscr;
writeln('2 + 3 = ',tambah(2,3)); readln;
1.4. Penggunaan Pascal
Gambar Tampilan Pascal
Turbo Pascal memiliki 10 buah menu utama yang terdiri dari : File, Edit, Search, Run, Compile, Debug, Tools, Options, Window dan
Help. Untuk memilih salah satu dari menu itu anda bisa menekan tombol Alt + F (untuk memanggil menu file), atau menekan Alt + [huruf pertama dari menu]. Jika anda ingin kembali ke menu utama anda bisa saja menekan tombol F10, untuk pindah dari menu satu ke menu yang lain anda juga bisa menekan panah kanan () atau panah kiri (). Contohnya ketika
anda berada di menu File maka untuk pindah ke menu Compile
anda cukup menggunakan tombol panah kanan () atau panah kiri
(), dan anda juga bisa langsung menekan huruf C. Untuk menutup
menu anda bisa menggunakan tombol Esc. Sebetulnya akan lebh mudah jika memanggil sebuah menu dengan menggunakan hotkey, table dibawah ini adalah hotkey yang digunakan dalam turbo pascal :
KUNCI FUNGSI EKIVALEN MENU
F1 Mengaktifkan jendela pertolongan.
F2 Menyimpan berkas yang ada pada editor. File / Save F3 Memanggil program kedalam editor. File / Load
F4 Mengeksekusi program sampai posisi kursor. Run / Go to cursor F5 Memperbesar atau memperkecil jendela yang aktif.
F6 Mengganti jendela yang aktif.
F7 Melacak kedalam subrutin. Run / Trace into F8 Melompati pemanggil subrutin.
F9 Mengaktifkan perintah ‘Make’. Compile / Make F10 Berpindah dari menu-menu ke jendela yang aktif.
Alt + F1 Memanggil jendela pertolongan yang terakhir dibaca.
Alt + F3 Memilih berkas untuk dimuat. File / Pick
Alt + F5 Memperlihatkan hasil eksekusi. File / user screen Alt + F6 Mengganti isi jendela yang aktif.
Alt + F9 Mengkompilasi program.
Alt + C Mengaktifkan menu compile. Alt + D Mengaktifkan menu debug. Alt + E Mengaktifkan editor. Alt + F Mengakaktifkan menu fle. Alt + O Mengaktifkan menu option. Alt + R Mengaktifkan menu run.
Alt + X Keluar dari Turbo Pascal dan kembali ke DOS. Ctrl + F1 Menampilkan menu pertolongan bahasa.
Ctrl + F2 Menghentikan pembetulan. Run / Program reset Ctrl + F3 Menampilkan isi tumpukan. Debug / Call Stack Ctrl + F4 Melakukan penghitungan atau mengubah nilai
peubah. Debug / Evaluate Ctrl + F7 Menambahkan ungkapan pada jendela watch. B / Add Watch Ctrl + F8 Toggles Breakpoint. B / Toggle breakpoint Ctrl + F9 Menjalankan program. Run / Run
Ctrl +
F10 Menampilkan versi layar monitor
1.5. Unit Pascal
Unit standar sudah merupakan kode mesin(sudah dikompilasi), bukan kode sumber Pascal lagi dan sudah diletakkan di memori pada waktu Anda menggunakan Turbo Pascal 7.0. Sebagai akibatnya, penggunaan suatu unit atau beberapa unit sekaligus hanya membutuhkan tambahan waktu yang sangat sedikit sekali atau sangat cepat (kurang dari satu detik) dari seluruh waktu kompilasi program Pascal yang menggunakannya. Dengan demikian penggunaan suatu unit akan dapat mempercepat waktu kompilasi program Pascal Anda. Untuk menggunakan suatu unit, maka Anda harus meletakkan suatu anak kalimat (clause) uses di awal blok program, diikuti oleh daftar unit yang digunakan. Beberapa unit yang sering digunakan sebagai berikut :
1.5.1. Unit System
Unit standar system sebenarnya adalah pustaka (library) dari runtime Turbo Pascal yang mendukung semua proses yang dibutuhkan pada waktu runtime (pengerjaan program).
1.5.2. Unit Crt
Unit standar crt digunakan untuk memanipulasi layar teks (windowing, peletakan cursor di layar, Color untuk teks, kode extended keyboard dan lain sebagainya).
1.5.3. Unit Printer
Unit standar printer merupakan unit yang sangat kecil dirancang untuk penggunaan printer di dalam program.
1.5.4. Unit Dos
Unit standar dos digunakan bilamana Anda menggunakan prosedur-rosedur dan fungsi-fungsi standar yang berhubungan dengan DOS call, semacam GetTime, SetTime, DiskSize, DiskFree dan lain sebagainya.
1.5.5. Unit Graph
BAB II
ELEMEN PROGRAM PASCAL
2.1. Tipe Data
Kalau Anda menggunakan pengenal variabel di dalam program, maka variabel tersebut harus Anda deklarasikan terlebih dahulu. Pada waktu Anda mendeklarasikan suatu variabel, maka Anda harus menentukan tipe dari datanya. Tipe data ini menunjukkan suatu nilai yang dapat digunakan oleh variabel yang bersangkutan.
2.1.1. Tipe Data Numerik Integer
Data numerik integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadesimal. Nilai integer hexadesimal diawali dengan tanda dollar ($). Turbo Pascal menyediakan 5 macam tipe data integer yang masing-masing mempunyai jangkauan nilai yang berbeda seperti pada label berikut ini.
Tipe Ukuran Memori
(dalam byte) Jangkauan
Byte 1 0...255
Shortint 1 -128...127
Integer 2 -32768...32767
Word 2 0...65535
Longint 4 -2147483648...2147483647
2.1.2. Tipe Data Numerik Real
Nilai konstanta numerik berkisar dari 1E-38 sampai dengan 1E+38 dengan mattisa yang signifikan sampai denga 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta nemerik real menempati memori sebesar 6 byte. Penggunaan tipe data real menurut IEEE (Institute of Electrical and Electronic Engineers) seperti berikut.
Tipe Ukuran Memori
(dalam byte) Jangkauan Nilai
Digit Signifikan
Single 4 1.5 x 10E-45 … 3.4 x 10E38 7-8
Double 8 5.0 x 10E-324 … 1.7 x 10E308 15-16
Extended 10 1.9 x 10E-4951 … 1.1 x 10E4932 19-20
Comp 8 -2E+63+1 … 2E+63-1 19-20
2.1.3. Tipe Data Karakter
Nilai karakter berupa sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’, ‘a’, ‘!’, ‘’%’, ‘5’ dan sebagainya. Penggunaan variabel untuk menyimpan dat tipe karakter ini harus dideklarasikan dengan tipe char.
Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Bila karakter yang terletak di antara tanda petik tunggal. Bila karakter petik merupakan bagian dari konstanta string, maka dapat ditulis dengan menggunakan dua buah petik tunggal berurutan. Nilai data string akan menempati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.
2.1.5. Tipe Data Boolean
Tipe data boolean mempunyai dua buah nilai, yaitu true dan false. Anda dapat mendeklarasikan suatu variabel dengan tipe boolean dan mengisi variabe tersebut dengan nilai data boolean true dan false.
program tipe_data; uses crt;
var
jumlah : integer; nilai1,nilai2 : real; karakter : char; kata : string; lagi : boolean;
begin clrscr;
jumlah := 5000;
writeln('Nilai jumlah = ',jumlah);
nilai1 := 12345678901.2345; nilai2 := 12345;
writeln('Nilai 1 = ',nilai1); writeln('Nilai 2 = ',nilai2);
karakter := 'A';
writeln('Karakter tersebut = ',karakter);
kata := 'Turbo Pascal'; writeln(kata);
lagi := true;
writeln('Nilai Lagi = ',lagi); readln;
end.
2.1.6. Tipe Data Pointer
Suatu pointer adalah suatu variabel yang berisi alamat (address) di memori (RAM) dimana suatu data disimpan, bukannya berisi data itu sendiri. Dengan kata lain, pointer akan menunjukkan letak dari data di memori.
program pointer; uses crt;
type
tipestring = string; pointerstring = ^tipestring; var
letaknama : pointerstring; begin
clrscr;
letaknama^ := 'Pascal'; writeln(letaknama^); readln;
2.1.7. Tipe Data Ordinal
Tipe data ordinal adalah tipe data yang merupakan subset dari tipe data sederhana (tipe data standar dan tipe data yang didefinisikan sendiri oleh pemakai). Yang dimaksud denga tipe data sederhana sebenarnya adalah semua tipe data sederhana kecuali tipe data numerik real. Jadi yang termasuk tipe data ordinal adalah :
Tipe data standar (integer, shortint, longint, byte, word, boolean, dan char). Tipe data yang didefinisikan sendiri oleh pemakai (enumerated type dan
subrange type).
2.2. Tanda Operasi
Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori, yaitu :
1. Assignment operator 2. Binary operator 3. Unary operator 4. Bitwise operator 5. Relational operator 6. Logical operator 7. Address operator 8. Set operator 9. String operator
2.2.1. Assignment Operator
Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=) A := B
2.2.2. Binary Operator
Disebut dengan binary operator (tanda operasi biner) karena operator ini digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real.
Operator Operasi Tipe Operand Tipe Hasil
* Perkalian real, real
integer, integer real, integer
Real integer real
DIV Pembagian bulat integer,integer Integer
/ Pembagian real real, real
integer, integer real, integer
Real real real MOD Modulus (sisa hasil bagi) integer, integer Integer
+ Pertambahan real, real
integer, integer real, integer
Real integer real
- Pengurangan real, real
integer, integer
real, integer real
program binary_operator; uses crt;
begin clrscr;
writeln(15*5); writeln(20/3); writeln(20 div 3); writeln(20 mod 3); readln;
end.
2.2.3. Unary Operator
Disebut dengan unary operator karena operator ini hanya menggunakan sebuah operand saja. Unary operator dapat berupa unary minus dan unary plus. Unary minus adalah operator yang berupa tanda minus yang hanya digunakan pada sebuah numerik operand saja untuk menunjukan nilai negatif, baik pada operand numerik real, maupun numerik integer. Unary plus adalah operator untuk memberi tanda plus. Contoh :
-5
-7 a+(-b)
-2.5 a+(+b)
+2.5
Unary Operator
2.2.4. Bitwise Operator
Bitwise operator digunakan untuk operasi bit per bit pada nilai integer.
Operator Operasi Tipe Operand Tipe hasil
NOT bitwise negation integer integer
AND bitwise AND integer,integer integer
OR bitwise OR integer,integer integer
XOR bitwise XOR integer,integer integer
Shl shirt left integer,integer integer
Shr shift right integer,integer integer
program bitwise_operator; uses crt;
begin clrscr;
end.
2.2.5. Relational Operator
Relational operator (operator hubungan) digunakan untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu true dan false.
Operator Operasi
= sama dengan <> tidak sama dengan
> lebih besar dari
>= lebih besar sama dengan dari < lebih kecil dari
<= lebih kecil sama dengan dari IN seleksi dari anggota himpunan
program relational_operator; uses crt;
var
a,b : integer; begin
clrscr; a := 5; b := 3;
writeln (a=b); writeln (a=5); writeln (a<>b); writeln (a>b); writeln (a>=b); writeln (a<b); writeln (a<=b); readln;
end.
2.2.6. Logical Operator
Terdapat 4 buah logical operator (operator logika), yaitu not, and, or, dan xor. Bentuk operator ini sama dengan bitwise operator, tetapi penggunaannya lain. Logical operator bekerja dengan nilai-nilai logika, yaitu true dan false
program logical_operator; uses crt;
begin clrscr;
writeln(not true); writeln(not false); writeln(true and false); writeln(true or false); writeln(true xor false); readln;
end.
2.2.7. Address Operator
operator (^). Operator @ akan menghasilkan alamat dari suatu nilai variabel dan operator ^ akan memberikan nilai di alamat yang ditunjukkan.
program address_operator; uses crt;
type
tipestring = string; pointerstring = ^tipestring; var
nama : tipestring; letaknama : pointerstring; begin
clrscr;
nama := 'Pascal'; letaknama := @nama;
writeln('Nama adalah : ',nama); writeln('Nama adalah : ',letaknama^); readln;
end.
2.2.8. Set Operator
Set operator (operator himpunan) digunakan untuk operasi himpunan.
Operator Operasi
+ Union
- Perbedaan himpunan * Perkalian himpunan
2.2.9. String Operator
String operator (operator string) digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabung dua buah nilai string.
program string_operator; uses crt;
var
nama1,nama2,nama3 :string; begin
clrscr;
nama1 := 'Turbo'; nama2 := 'Pascal'; nama3 := nama1 + nama2; writeln(nama3);
readln; end.
2.3. Komentar Program
Untuk keperluan dokumentasi program, sehingga program mudah dibaca dan dipahami dapat ditambahkan komentar-komentar di dalam program yang tidak akan mempengaruhi proses dari program. Komentar program dapat diletakkan dimanapun di dalam program. Suatu komentar program ditulis dengan pembatas { dan } atau pembatas (* dan *)
Statemen adalah perintah pengerjaan program. Kumpulan dari statemen membentuk suatu program. Bila suatu program Pascal tidak mengandung statemen atau disebut statemen kosong (empty statemen), maka tidak akan ada yang dikerjakan oleh program. Statemen terletak dibagian deklarasi statemen dengan diawali oleh kata cadangan begin dan ditutup dengan kata cadangan end. Masing-masing akhir dari statemen diakhiri denga titik koma. Di dalam bahasa Pascal statemen dapat berupa statemen dapat berupa statemen sederhana (simple statement) dan statemen terstruktur (structured statement).
2.4.1. Statemen Sederhana
Statemen sederhana adalah statemen yang tidak mengandung statemen yang lainnya. Yang termasuk dengan statemen sederhana statemen pengerjaan (assignment statement), statemen prosedur (procedure statement) dan statemen goto.
2.4.1.1. Statemen Pengerjaan
Statemen pengerjaan (assignment statement) merupakan statemen yang paling mendasar dari semua statemen yang ada. Statemen ini digunakan untuk memasukkan suatu nilai tertentu ke dalam suatu variabel. Bentuk dari statemen ini terdiri dari pengenal variabel diikuti oleh operator := dan suatu ungkapan sebagai berikut :
Pengenal-variabel := ungkapan;
Contoh : nilai :=5; nilai :=nilai+1; D := B*B-4*A*C; lulus :=(nilai>65.5) benar := true;
lolos := (kode = sandi);
2.4.1.2. Statemen Prosedur
Statemen prosedur digunakan untuk mengaktifkan suatu prosedur yang telah didefinisikan oleh pemakai atau prosedur standar yang telah didefinisikan oleh Pascal.
Contoh :
cari(nama,alamat); tambah(2,3,z); urutkan(nilai); writeln(fahrenheit);
2.4.1.3. Statemen GOTO
Statemen goto diawali dengan kata goto yang diikuti oleh pengenal label. Pengenal label yang dipergunakan harus sudah dideklarasikan di bagian deklarasi label.
2.4.2. Statemen Terstruktur
Statemen terstruktur (structured statement) merupakan statemen yang dibentuk dari komposisi beberapa statemen. Statemen terstruktur dapat berupa statemen jamak (compound statement), statemen penyeleksian kondisi (conditioanal statement), Statement perulangan (repetitive statement) serta statemen with dibahas dibab selanjutnya.
Statemen jamak digunakan bilamana lebih dari sebuah statemen harus dikerjakan, sedang bentuk umum dari Pascal hanya memungkinkan sebuah statemen saja yang disebutkan. Statemen jamak ditulis di dalam kata cadangan begin dan end yang tersendiri. Misalnya statemen if-then hanya memungkinkan diikuti oleh sebuah statemen saja, sebagai berikut :
program statemen_jamak; uses crt;
var
nilai : real;
keterangan,komentar : string; begin
clrscr;
nilai := 55.5;
keterangan := 'Tidak Lulus'; komentar := 'Mengecewakan'; if nilai > 60 then
begin
keterangan := 'Lulus'; komentar := 'memuaskan'; end;
writeln('Keterangan : ',keterangan); writeln('Komentar : ',komentar); readln;
end.
2.4.2.2. Statemen Penyeleksian Kondisi
Statemen penyeleksian kondisi menunjukkan bahwa suatu statemen akan dikerjakan bila suatu kondisi adalah benar. Jika kondisinya salah, maka statemen yang lainnya atau statemen setelah kata cadangan else yang akan dikerjakan (else tidak boleh diawali dengan titik koma, karena titik koma menunjukkan akhir dari statemen).
Contoh :
if kondisi1 then if kondisi2 then
statemen1 else
statemen2
Penulisan statemen diatas dapat juga dengan menggunakan blok statemen sehingga lebih mudah terbaca, sebagai berikut :
if kondisi1 then begin
if kondisi2 then statemen1 else
statemen2 end;
Statemen yang digunakan untuk menyeleksi kondisi selaian statemen if juga statemen case of
2.4.2.3. Statemen Perulangan
BAB III
INPUT DAN OUTPUT
3.1. Pendahuluan
Setiap program aplikasi pasti membutuhkan operasi input dan output. Memasukkan data input secara interaktif merupakan ciri dari program aplikasi yang banyak ditemukan. Pada bab ini akan dibahas mengenai cara-cara memasukkan data secara interaktif dan cara-cara menampilkan output.
3.2. Memasukkan Data
Turbo Pascal menyediakan prosedur standar untuk memasukkan data dengan cara mengetikkan lewat keyboard. Turbo Pascal menyediakan prosedur untuk maksud tersebut, yaitu read dan readln yang mempunyai aturan tertentu untuk beberapa tipe pengenal variabel. Tiap-tiap data yang dimasukkan harus sesuai dengan tipe variabelnya.
Tipe
Variabel Keterangan
Char Memasukkan sebuah karakter, bila lebih akan terpotong, yang di anggap hanya yang pertama.
String Memasukkan string maksimum sepanjang yang definisikan.
Integer Memasukkan data numerik bulat antara nilai 32767 sampai –32768 Word Memasukkan data numerik bulat diantara nilai 0 sampai dengan
65535
Byte Memasukkan data numerik bulat diantara 0 sampai dengan 255
ShortInt Memasukkan data numerik bulat diantara nilai –128 sampai dengan 127
LongInt Memasukkan data numerik bulat diantara nilai –2147483648 sampai dengan 2147483647
Real Memasukkan data numerik real maksimum 30 digit dapat tanpa titik desimal
Boolean Data tipe ini tidak diijinkan
Contoh :
program Masuk1(layar); uses crt;
var
clrscr; readln(A); readln(B); readln(C); readln(D); readln(E); writeln;
writeln('A = ',A,' B = ',B,' C = ',C); writeln('D = ',D);
writeln('E = ',E); readln;
end.
Prosedur standar Readln untuk memasukkan data perbaris, artinya setelah anda menekan tombol Enter, maka akan ganti baris, sedang prosedur standar Read tidak ganti baris, masih dalam baris sama.
3.2.1. Tampilan sewaktu memasukkan data
Pada contoh program data sebelumnya, pemakai program kadangkala menjadi bingung disebabkan tidak adanya tampilan keterangan tentang data apa yang seharusnya dimasukkan. Supaya lebih interaktif, maka dapat ditampilkan penjelasan tentang data yang akan dimasukkan. Untuk maksud ini sebelum prosedur standar read atau readln dapat digunakan prosedur standar write terlebih dahulu untuk menampilkan penjelasan tentang data yang akan dimasukkan lewat prosedur standar read atau readln.
Contoh :
program masuk2(input,output); uses crt;
var
C,F : real; begin
clrscr;
write('berapa celcius = '); readln(C);
F:= 1.8*C+32; writeln;
writeln(C,' celcius adalah',F,' fahrenheit'); readln;
end.
3.2.2. Teknik Memasukkan Data Tipe Boolean
Telah disebutkan pada tabel bahwa data tipe boolean tidak dapat di masukkan sebagai data input. Akan tetapi hal ini dapat di atasi dengan cara memasukkan data dengan tipe char terlebih dahulu, kemudian baru di lakukan pengerjaan boolean. Contoh :
Program Masuk5(input,output); uses crt;
var
jawab_C : char; jawab_B : boolean; begin
clrscr;
write('Benar atau Salah (B/S) ? '); readln(Jawab_C);
jawab_B := (Jawab_C = 'B');
readln; end.
3.3. Menampilkan Hasil
Untuk menampilkan hasil dengan bahasa pascal digunakan prosedur standar Write atau Writeln. Perbedaannya adalah prosedur Write menampilkan hasil tanpa ganti baris dan tampilan beikutnya akan disambung pada baris yang sama, sedang prosedur Writeln digunakan untuk menampilkan tampilan perbaris, akan ganti baris untuk tampilan berikutnya.
Contoh:
Program tampil1(Output); uses crt;
var
nama : string; begin
clrscr;
nama := 'Dewi'; write('Nama : '); write(nama); readln; end.
Coba Jalankan Program di atas kemudian ganti prosedur Write dengan Writeln kemudian jalankan kembali
3.3.1. Tampilan Default
Merupakan tampilan yang mengikuti bentuk pengaturan default yang sudah ditentukan oleh Pascal.
3.3.1.1. Default Tampilan Integer
Tampilan nilai integer akan ditampilkan dengan bentuk : ddddd
Contoh :
Program Tampil3(output); uses crt;
var
bulat1,bulat2 : integer; begin
clrscr;
bulat1 := 123; bulat2 := 12345;
writeln(Bulat1,Bulat2); readln;
end.
3.3.1.2. Default Tampilan Real
Tampilan real menempati posisi lebar 18 digit dengan menggunakan bentuk eksponensial. Bentuknya :
Untuk nilai real negatif akan ditampilkan dengan bentuk : -d.ddddddddddEsdd
Dengan : b = blank d = digit
s = tanda (+) pangkat positif / tanda (-) pangkat negatif tanda (-) untuk biilangan negatif
Contoh :
Program Tampil4(output); uses crt;
var
pecahan1, pecahan2 : real; begin
clrscr;
pecahan1 := 123.45; pecahan2 := -123.45;
writeln(Pecahan1, Pecahan2); readln;
end.
3.3.1.3. Default Tampilan Char
Karakter di tampilkan tanpa mengandung blank dimuka maupun di belakang. Contoh :
Program Tampil5(output); uses crt;
var
huruf1,huruf2: char; begin
clrscr;
huruf1 := 'A'; huruf2 := 'B';
Writeln(Huruf1,Huruf2); readln;
end.
3.3.1.4. Default Tampilan String
Tampilan string ditunjukkan dengan panjang sesuai dengan panjang isinya, tanpa mengandung blank dimuka atau blank dibelakang.
Contoh :
Program Tampil6(output); uses crt;
var
string1, string2: String[10]; Begin
clrscr;
string1 := 'BASIC'; string2 := 'COBOL';
writeln(String1, String2); readln;
3.3.1.5. Default Tampilan Boolean
Tampilan Boolean, TRUE atau FALSE ditampilkan dengan tidak mengandung blank di muka atau belakang.
Contoh :
Program Tampil7(output); uses crt;
var
logika1,logika2 : boolean; Begin
clrscr;
logika1 := True; logika2 := False;
writeln(Logika1,Logika2); readln;
end.
3.3.2. Tampilan Terformat
Walaupun bentuk default dianggap cukup untuk menampilkan bentuk pada program yang sederhana, tetapi untuk program-program aplikasi dibutuhkan bentuk format tertentu yang harus diatur kembali. Untuk mengatur format tampilan dengan prosedur standar Write atau Writeln dipergunakan parameter-parameter sebagai berikut ini
Parameter CH:N
Digunakan untuk membentuk format tampilan char selebar n karakter dengan blank di muka sebanyak n-1
Parameter S:N
Digunakan untuk membentuk format tampilan string selebar n karakter.
Parameter I:N
Digunakan untuk membentuk format tampilan integer selebar n digit.
Parameter R:N
Digunakan untuk membentuk format tampilan nilai numerik real selebar n digit rata sebelah kanan.
Parameter R:N:M
Digunakan untuk membentuk format tampilan nilai numerik real selebar n digit rata sebelah kanan, dengan m digit angka dibelakang koma tidak dalam bentuk eksponensial.
Parameter B:N
Digunakan untuk membentuk format tampilan nilai boolean true atau false selebar n karakter rata sebelah kanan.
Program Tampil8(Output); uses crt;
var
ket1,ket2 : char; karakter : string[6]; N : integer;
nilai : real; logika : boolean; begin
clrscr;
{parameter CH:N} ket1 := 'A'; ket2 := 'B';
writeln(ket1:5,ket2:3);
{parameter S:N} karakter := 'Pascal';
writeln('Bahasa :',karakter:10);
{parameter I:N} N := 275;
writeln('Jumlah Data =',N:5);
{parameter R:N} nilai := 123.45;
writeln('Nilai Real =',nilai:12);
{parameter R:N:M} nilai := 123.45;
writeln('Nilai Real =',nilai:12:3);
{parameter B:N} logika := true;
writeln('Nilai Boolean =',logika:6); readln;
end.
3.3.3. Pengaturan letak di layar
Berikut beberapa prosedur standar yang disediakan oleh pascal untuk mengatur tampilan di layar terminal. Semua prosedur menggunakan unit standar crt.
3.3.3.1. Prosedur Clrscr
Digunakan untuk membersihkan layar dari tampilan sebelumnya dan meletakkkan cursor di posisi ujung kiri atas layar.
3.3.3.2. Prosedur GotoXY
Digunakan untuk meletakkkan cursor di posisi layar yang di tunjukkan oleh nilai XPOS dan YPOS. Nilai XPOS menunjukkan posisi sumbu X (posisi horizontal atau posisi kolom diantara kolom 1 sampai dengan kolom 80). Nilai YPOS
menunjukkan posisi sumbu Y (posisi vertikal atau posisi baris, diantara baris 1 sampai dengan baris 25).
Program Tampil9(Output); uses crt;
begin clrscr;
gotoxy(10,15);
writeln('Bahasa Pascal'); readln;
end.
3.3.3.3. Prosedur Clreol
Digunakan untuk menghapus semua karakter dalam satu baris disebelah kanan posisi kursor tanpa mengubah posisi kursor.
Program Tampil10(Output); uses crt;
var
nilai : integer; begin
clrscr;
gotoxy(10,15);
write('Masukkan sebuah nilai integer ? '); readln(nilai);
gotoxy(10,15); clreol;
writeln('Anda Pintar'); readln;
end.
3.3.3.4. Prosedur Delay
Digunakan untuk menghentikan sejenak proses program selama nilai dari argumen tempo, yaitu dalam waktu millisecond (1/1000 detik). Nilai argumen tempo ini harus dalam nilai integer.
Program Tampil11(Output); uses crt;
begin clrscr;
writeln('5 detik lagi akan tampak tulisan menarik'); delay(5000);
writeln;
writeln('Anda kena tipu, ... tidak ada tulisan menarik !!!'); readln;
BAB IV
PERULANGAN
5.1. Pendahuluan
Didalam pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan statemen For,While-Do dan Repeat…Until.
5.2. Struktur Perulangan For
Perulangan dengan statemen for digunakan untuk mengulang statemen atau blok statement berulang kali sejumlah yang ditentukan. Perulangan ini dapat berbentuk perulangan positif, negatif dan perulangan bersarang, sintaks statemen for adalah sebagai berikut :
for variabel kontrol := nilai awal to nilai akhir do statemen
atau
for variabel kontrol := nilai awal downto nilai akhir do statemen
5.2.1. Perulangan positif
Perulangan positif adalah dengan penghitung (counter) dari kecil ke besar. Perulangan positif dibentuk dengan menggunakan statemen For-To-Do.
Contoh : uses crt; var
i : integer; begin
clrscr;
{ada begin dan end} for i:=1 to 5 do begin
write(i);
writeln(' Pascal'); end;
{tidak ada begin dan end} for i:=1 to 5 do
write(i); writeln(' Pascal'); readln;
end.
5.2.2. Perulangan negatif
Perulangan negatif adalah perulangan dengan penghitung (counter) dari besar ke kecil. Perulangan negatif. Perulangan ini dibentuk dengan menggunakan statemen For-DownTo-Do.
uses crt; var
celcius : integer; fahrenheit : real; begin
clrscr;
writeln('=========================='); writeln(' Celcius Fahrenheit '); writeln('---'); celcius := 0;
for celcius:=15 downto 0 do begin
fahrenheit := 1.8 * celcius + 32; writeln(celcius:8,Fahrenheit:14:2); end;
writeln('---'); readln;
end.
5.2.3. Perulangan tersarang
Merupakan perulangan yang berada didalam perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai nilai awalnya dan seterusnya.
Contoh : uses crt; var
i,j : integer; begin
clrscr;
for i := 1 to 5 do begin
for j := 1 to 3 do write(i:8,j:3); writeln;
end; readln; end.
5.3. Struktur Perulangan While-Do
Perulangan ini menggunakan statement While-Do yang memiliki sintaks sebagai berikut:
while ungkapan logika do statemen
Statement while-do digunakan untuk melakukan proses perulangan suatu statemen atau blok statemen terus-menerus selama kondisi ungkapan-logika pada while masih berlogika benar’
uses crt;
5.3.1. Struktur perulangan While-Do bersarang
Merupakan perulangan while-do yang satu di dalam perulangan while-do yang lainnya.
Contoh : uses crt; var
nilai,total,ratarata : real; n,i : integer;
{memasukkan nilai-nilai data dan langsung dihitung nilai totalny} i := 0;
begin
writeln('Rata-rata nilai = ',ratarata:8:2); writeln;
write('Akan menghitung lagi (Y/T) ? '); readln(lagi);
end; end.
5.4. Struktur Repeat … Until
Struktur repeat … until digunakan untuk mengulang (repeat) statemen-statemen atau blok statemen-statemen sampai (until) kondisi yang di seleksi di until tidak terpenuhi. Sintaks dari statement ini adalah sebagai berikut :
repeat statemen until ungkapan
Contoh :
5.4.1. Struktur perulangan Repeat…Until bersarang
Merupakan suatu perulangan repeat … until yang satu berada dalam perulangan Repeat ... Until yang lainnya.
b := b + 5; until b > 25; a := a + 1; until a > 3;
writeln('---'); readln;
BAB V
PENYELEKSIAN KONDISI
5.1. Pendahuluan
Untuk menyeleksi kondisi, di dalam bahasa pascal dapat di pergunakan statemen if dan statement case.
5.2. Statemen
Struktur dari statemen if adalah if-then atau if-then-else dengan sintaks : if ungkapan then statemen
else statemen
5.2.1. Struktur Statemen if-then
Bentuk dari statement if-then adalah sebagai berikut : if ungkapan then statemen
Ungkapan adalah kondisi yang akan di seleksi oleh statemen if. Bila kondisi yang diseleksi terpenuhi, maka statemen yang mengikuti then akan diproses. Sebaliknya, bila kondisi tidak memenuhi, maka yang akan diproses adalah statemen berikutnya. Contoh 1 :
uses crt; var
nilaiujian : real; ket : string; begin
clrscr;
ket := 'Tidak Lulus';
write('Nilai yang didapat ? '); readln(nilaiujian);
if nilaiujian > 60 then ket := 'Lulus'; writeln(ket);
readln; end.
Contoh 2 : uses crt; label 10; var
r,t,isi : real; jawab : string; begin
10 : clrscr;
write('Jari-jari lingkaran = '); readln(r);
write('Tinggi Silinder = '); readln(t);
isi := pi * r * r * t; writeln;
write('Akan menghitung lagi (Y/T) ? '); readln(jawab);
if (jawab = 'Y') or (jawab = 'y') then goto 10; end.
5.2.2. Struktur if-then ... else
Struktur if-then … Else memiliki sintaks sebagai berikut : if kondisi then
stetemen1 else
statemen2
Statement1 atau dapat pula blok statement akan diproses apabila kondisi yang diseleksi memenuhi sedang statemen2 atau dapat berupa blok statemen akan diproses apabila kondisi yang diseleksi tidak memenuhi.
Contoh : uses crt; var
nilaiujian : real; begin
clrscr;
write('Nilai yang didapat = '); readln(nilaiujian);
if nilaiujian > 60 then writeln('Lulus') else
writeln('Tidak Lulus'); readln;
end.
5.2.3. Struktur If Bersarang
Merupakan bentuk dari statemen if berada di dalam lingkungan statemen if lainnya. Misalnya bentuk statemen if bersarang sebagai berikut :
if kondisi1 then if kondisi2 then stetemen1 else
statemen2;
Atau :
if kondisi1 then begin
if kondisi2 then stetemen1 else
statemen2; end;
uses crt; var
a,b,c,d,z1,z2,x1,x2 : real; lagi : char;
5.3. Statemen Case
Statemen case dapat berbentuk struktur case-of atau case-of … else.
5.3.1. Struktur Case-Of
case ungkapan of
daftar case-label 1 : statemen1; daftar case-label 2 : statemen2; daftar case-label 3 : statemen3; .
. .
daftar case-label n : statemenn; end;
write('Nilai huruf yang didapat ? '); readln(nilai);
5.3.2. Struktur Case-Of … Else
Struktur case-of … else merupakan pengembangan dari struktur case-of dan juga merupakan pengembangan dar standar Pascal. Pada struktur case-of bila tidak ada kondisi yang terpenuhi berarti tidak ada statemen di dalam lingkungan case-of yang diproses. Dengan struktur case-of … else, bila tidak ada kondisi yang terpenuhi, maka statemen yang akan diproses di dalam lingkungan case-of adalah statemen yang ada di else. gotoxy(10,4); writeln('1. Menghitung Luas Lingkaran'); gotoxy(10,6); writeln('2. Menghitung Luas Segitiga'); gotoxy(10,8); writeln('3. Menghitung Luas Bujur Sangkar'); gotoxy(10,20); write('Pilih (1-3) ? '); readln(pilihan);
readln(L);
write('Tinggi segitiga = '); readln(t);
luas := 0.5 * l * t; writeln;
writeln('Luas segitiga = ',luas:9:2); end;
3 : begin
write('Panjang bujur sangkar = '); readln(t);
write('Lebar bujur sangkar = '); readln(l);
luas := t * l; writeln;
writeln('Luas bujur sangkar = ',luas:9:2); end;
else begin
writeln('Pilihannya hanya 1,2 atau 3');
writeln('Anda tadi pilih nomor berapa ? ... Ngawur !!!!'); end;
BAB VI
PROSEDUR
6.1. Pendahuluan
Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur.
Prosedur banyak digunakan pada program yang terstruktur, karena:
1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
2. untuk hal-hal yang sering dilakukan berulang-ulang, sukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.
uses crt;
procedure garis; begin
writeln('---'); end;
begin clrscr; garis;
writeln('Pascal'); garis;
readln; end.
6.2. Parameter Dalam Prosedur
Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.
uses crt;
procedure tanya_hitung; var
x,y : real; begin
write('nilai x = '); readln(x);
y := x + x;
writeln('Nilai y = ',y:6:2); end;
Pada contoh, variabel x dan y sifatnya adalah lokal untuk prosedur tanya_hitung, yang artinya hanya dapat digunakan pada modul tersebut saja. Pada modul yang lain, variabel tersebut tidak dapat digunakan. Bila digunakan, maka salah.
Procedure tanya_hitung; Var
X,Y :real; Begin
writeln(‘nilai x ? ‘); readln(x);
y:= x * x; Salah End;
Begin
tanya_hitung;
writeln('Nilai y = ',y:6:2); End.
Supaya nilai-nilai variabel daat digunakan di modul lainnya yang membutuhkannya, maka dapat dilakukan dengan beberapa cara, yaitu :
1. Dibuat bersifat global.
Supaya suatu nilai dapat bersifat global, maka harus dideklarasikan di atas modul yang akan menggunakannya.
procedure kesatu; var
c,d : real; begin
. .
end; (. . . akhir dari procedure kesatu . . . )
var
A,B : word
procedure kedua; begin
. .
end; (. . . akhir dari procedure kedua . . . )
procedure ketiga; begin
. .
end; (. . . akhir dari procedure ketiga . . . )
begin . .
end. (. . .akhir dari awal modul utama. . .)
2. Dikirimkan sebagai parameter ke modul yang membutuhkannya.
Parameter yang dikirimkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Di Pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).
6.2.1. Pengiriman Parameter Secara Nilai
Bila parameter dikirim secara nilai (by value), parameter formal di prosedur akan berisi nilai yang dikirim yang kemudian bersifat lokal di prosedur.
Contoh : uses crt;
procedure hitung(a,b : integer); var
c: integer; begin
c := a + b;
writeln(#10'Nilai c = ',c); end;
var
x,y : integer; begin
clrscr;
write('Nilai y = '); readln(x);
write('Nilai x = '); readln(y);
hitung(x,y); readln; end.
6.2.2. Pengiriman Parameter Secara Acuan
Bila pengiriman secara acuan (by reference), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter nyata.
procedure hitung(var A,B,C : integer);
Contoh : uses crt;
procedure faktorial(var fak,hasil : integer); var
i:integer; begin
hasil:=1;
for i:=2 to fak do hasil := hasil*i; end;
var
n,f : integer; begin
write('Berapa faktorial ? '); readln(N);
faktorial(n,f); writeLn;
writeLn(n,' Faktorial = ',f); readln;
end.
6.2.3. Pengiriman Parameter Sebagian Nilai Sebagaian Secara Acuan
Pengiriman parameter dapat dicampur sebagian secara nilai dan sebagian secara acuan dalam suatu prosedur. Parameter yang hanya dibutuhkan pada prosedur saja dapat dikirimkan secara nilai dan yang ingin dikirimkan balik dapat dilakukan secara acuan, sebagai berikut :
procedure hitung(a,b : integer var c : integer);
Pengiriman Pengiriman Secara nilai Secara umum
Contoh : uses crt;
procedure hitung(a,b : integer; var c : integer); begin
c := a + b; end;
var
x,y,z : integer; begin
clrscr;
x:=2; y:=3; hitung (x,y,z);
writeln('x = ',x ,' y = ',x ,' z = ',z); readln;
end.
6.2.4. Tipe Parameter Formal
Telah dibahas tipe parameter formal harus dideklarasikan. Parameter yang diijinkan adalah adalah berupa variabel atau konstanta, sedang pada Turbo Pascal prosedur dan fungsi tidak diijinkan aalah sebagai parameter formal (standar Pascal mengijinkan). Tipe sederhana, seperti integer, byte, char, real dan boolean dapat langsung dipergunakan sebagai tipe dari parameter formal. Sedang kan tipe yang komplek seperti misalnya string, array, dan itidak dapat digunkana langsung sebagai tipe parameter formal, tetapi harus dideklarasikan terlebih dahulu di bagian deklarasi
type. Contoh : uses crt; type
huruf = string[100];
procedure hitungpanjang(nama: huruf; var panjang: integer); begin
panjang:=length(nama); end;
n : integer;
namaanda : string[30]; begin
clrscr;
write('Nama Anda ? '); readln(namaanda);
hitungpanjang(namaanda,n);
writeln('Panjang nama anda adalah ',n,' Karakter'); readln;
end.
6.3. Prosedur Memanggil Prosedur yang Lain Contoh :
uses crt;
procedure pro1(x1 : integer); begin
writeln('nilai x = ',x1,' ada di prosedur pro1'); end;
procedure pro2(x2 : integer); begin
writeln('nilai x = ',x2,' ada di prosedur pro2'); pro1(x2);
Pada modul utama, nilai X sebesar 5 dan dikirimkan sebagai parameter ke prosedur Pro2. Pada prosedur Pro2 nilai ini ditampilkan dan pada prosedur ini memanggil prosedur yang lainnya, yaitu prosedur Pro1 juga dengan mengirimkan nilai X2 ke prosedur Pro1. Pada prosedur Pro1 nilai tersebut ditampilkan.
6.4. Prosedur Tersarang
Prosedur tersarang (nested tersarang) adalah prosedur yang berada di dalam prosedur yang lainnya.
Contoh : uses crt;
procedure kesatu; procedure kedua; begin
writeln('procedure KEDUA ini ada di dalam prosedur KESATU'); end;
procedure ketiga; begin
writeln('procedure KETIGA ini juga ada di dalam prosedur KESATU'); end;
begin
writeln('ini prosedur KESATU'); writeln;
begin clrscr;
writeln('ini di modul utama'); writeln;
kesatu; readln; end.
6.5. Prosedur Mamanggil Dirinya Sendiri
Prosedur memanggil dirinya sendiri merupakan suatu prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Walaupun proses ini merupakan algoritma yang baik, tetapi membutuhkan banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkannya.
Contoh : uses crt; var
I : integer;
procedure rekursi; begin
writeln('Halo saya Pascal'); I := I + 1;
if I < 10 then rekursi; end;
begin clrscr; I:= 1; rekursi; readln; end.
6.6. Acuan Forward
Acuan forward (forward reference) digunakan untuk mendeklrasikan dimuka judul prosedur terpisah dari bloknya. Judul prosedur yang berisi parameter terpisah ini merupakan judul yang semestinya dan dideklarasikan dengan menambahkan kata cadangan forward. Blok prosedur ini letaknya terpisah dari judulnya, juga diawali dengan judul prosedur, tetapi hanya mencantumkan judul atau nama prosedurnya saja, tanpa mencantumkan parameter formal-nya.
Contoh :
uses crt;
procedure pro2(var I:integer); begin
writeln('prosedur PRO',1); end;
procedure pro1; begin
writeln('prosedur PRO',1); end;
var
I:integer; begin
clrscr; I:=1; pro1(I); I:=2; pro2(I); readln; end.
FUNGSI
7.1. Pendahuluan
Blok fungsi hampir sama dengan blok prosedur, hanya harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Tipe tersebut ditulis pada akhir deklarasi fungsi yang didahului dengan titik koma, sebagai berikut :
function identifier(daftar-parameter) : type;
Blok fungsi sama dengan blok prosedur yang diawali dengan kata cadangan begin dan diakhiri dengan kata cadangan end dan titik koma.
uses crt;
function hitung(var A,B : integer): integer; begin
hitung:= A + B; end;
var
x,y : integer; begin
clrscr;
write('nilai x = '); readln(x);
write('nilai y = '); readln(y);
writeln;
writeln(x,' + ',y,' = ',hitung(x,y)); readln;
end.
7.2. Fungsi Tanpa Parameter
Suatu fungsi yang tanpa menggunakan parameter berarti nilai balik yang akan dihasilkan merupakan nilai yang sudah pasti. Parameter digunakan untuk memberikan input pada fungsi dan fungsi akan memberikan hasil balik sesuai dengan parameter yang diberikannya. Sedang pada fungsi yang tidak mempunyai parameter, maka hasil fungsi tersebut tidak dapat diatur dari modul yang menggunakannya, karena tidak ada parameter yang dikirimkannya. Dengan demikian fungsi yang tanpa menggunakan parameter jarang dipergunakan.
Contoh : uses crt;
function garis : string; begin
garis := '---'; end;
begin clrscr;
writeln(garis); writeln('PASCAL'); writeln(garis); readln;
end.
Sama dengan prosedur, parameter dalam fungsi dapat dikirim sebcara nilai (by value) atau secara acuan (by reference). Penulisan judul fungsi yang menggunakan parameter dengan pengiriman secara nilai adalah tampak sebagai berikut :
function hitung(A,B :integer) : integer;
Contoh : uses crt;
function terbesar(x,y : real) : real; begin
writeln('Nilai terbesar adalah ',terbesar (Nilai1,Nilai2):9:3); readln;
end.
7.4. Fungsi Pangkat
Pascal tidak menyediakan fungsi untuk perpangkatan tinggi, yang ada hanyalah fungsi standar sqr, yaitu pemangkatan kuadrat saja. Bila akan melakukan perangkatan lebih dari pangkat , maka harus dibuat program tersendiri. Pada bagian ini akan diberikan beberapa fungsi untuk perpangkatan tinggi, yang sangat berguna di dalam program-program aplikasi. pangkat1 := pangkat
end;
function pangkat(x,n : real) : real; begin
write('Nilai akan dipangkatkan = '); readln(A);
writeln;
writeln(A:9:3,' pangkat ',B,' adalah ',pangkat1(A,B):9:3); writeln;
writeln(A:9:3,' pangkat ',B,' adalah ',pangkat(A,B):9:3); readln;
end.
7.5. Fungsi Memanggil Dirinya Sendiri
Sama dengan prosedur, fungsi juga dapat memanggil dirinya sendiri. Proses fungsi memanggil dirinya sendiri juga merupakan proses recursioni.
Contoh : uses crt;
function faktorial(nilai : integer) : real; begin
if nilai = 0 then faktorial := 1 else
faktorial := nilai * faktorial(nilai-1); end;
var
n : integer; begin
clrscr;
write('Berapa faktorial = '); readln(n);
writeln(n,' Faktorial = ',faktorial(n):9:0); readln;
end.
7.6. Fungsi Memanggil Fungsi Yang Lain
Suatu fungsi dapat juga memanggil fungsi yang lainnya. Fungsi yang dipanggil letaknya harus berada di atas fungsi yang memanggil.
Contoh : uses crt;
function fungsi2(y : integer) : integer; begin
fungsi2:= y * 2; end;
function fungsi1(x : integer) : integer; begin
fungsi1 := fungsi2(x) + 5; end;
begin clrscr;
writeln(fungsi1(3)); readln;
end.
fungsi1 := y * 2 + 5;
maka untuk nilai fungsi1(3) adalah 3 * 2 + 5 = 11
7.7. Acuan Forward Pada Fungsi
Sama dengan prosedur, fungsipun dapt dideklarasikan terpisah dengan bloknya. Deklarasi fungsi yang terpisah dengan blok fungsinya dipergunakan kata cadangan forward dan blok fungsinya juga dideklarasikan ulang, tetapi tidak perlu menyebutkan parameternya.
Contoh : uses crt;
function fungsi1(x : integer) : integer; forward; function fungsi2(y : integer) : integer;
begin
fungsi2 := y * 2; end;
function fungsi1; begin
fungsi1 := fungsi2(x) + 5; end;
begin clrscr;
writeln(fungsi1(3)); readln;
end.
7.8. Fungsi Tersarang
Fungsi tersarang (nested fuction) merupakan fungsi yang letaknya berada di dalam fungsi yang lainnya.
Contoh : uses crt;
function fungsi1(x : integer) : integer; function fungsi2(y : integer) : integer; begin
fungsi2 := y * 2; end;
begin
fungsi1 := fungsi2(x) + 5; end;
begin clrscr;
writeln(fungsi1(3)); readln;
end.
8.1. Pendahuluan
Suatu larik (array) adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Komponen-komponen ini disebut dengan tipe komponen (component type) atau tipe basis (base type). Suatu array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu array ditunjukkan oleh suatu indeks yang disebut dengan tipe indeks (index type).
8.2. Deklarasi Array
Suatu array yang akan dipergunakan dalam program Pascal, harus dideklarasikan terlebih dahulu. Deklarasinya adalah sebagai berikut :
var
X : array[1..100] of integer
Keterangan :
X : nama array [1..100] : tipe indeks integer : tipe dari array
8.3. Deklarasi Tipe Indeks
Indeks dari array menunjukkan maksimum banyaknya elemen-elemen dari array. Indeks array ini bisa berupa tipe subrange atau tipe skalar apapun kecuali tipe real.
8.3.1. Deklarasi Tipe Indeks Subrange Integer
Indeks dari array ini dapat dideklarasikan terlebih dahulu dibagian deklarasi tipe sebagai berikut :
type
jangkauan = 1..5; var
nilaihuruf = array(jangkauan) of char;
Deklarasi ini dapat ditulis sebagai berikut :
type
jangkauan = 1..5;
x = array[jangkauan] of char; var
nilaihuruf : x;
Atau dapat juga ditulis : type
x = array[1..5] of char; var
nilaihuruf : x;
Atau dapat juga ditulis : const
maksimum = 5; type
x = array[minimum..maksimum] of char; var
nilaihuruf : x;
8.3.2. Deklarasi Tipe Indeks Subrange Byte
Kalau indeks dari array ini tidak sampai 255 karakter, maka indeks dari array ini bisa dideklarasikan dengan tipe byte.
var
x : array[0..255] of real;
Karena nilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini dapat juga ditulis :
var
x : array[byte] of real;
Contoh :
Program Standar_Deviasi; uses crt;
var
i,n : byte;
total,rata,sigma,sd : real; x : array[byte] of real; begin
clrscr;
write('Jumlah Data (Maksimum 255) = '); readln(n);
writeln;
{memasukkan data array sekaligus menghitung nilai totalnya} total := 0;
for i:= 1 to n do begin
write('Nilai data ke ',i,' = '); readln(x[i]);
total := total + x[i]; end;
{menghitung rata-rata} rata := total / n;
{menghitung sigma kuadrat dari (xi-rata)} sigma := 0;
for i:= 1 to n do
sigma := sigma + sqr(x[i]-rata);
{menghitung standard deviasi} sd := sqrt(sigma/n);
{menampilkan hasilnya} writeln;
writeln('Jumlah data = ',n:7); writeln('Total nilai data = ',total:7:2); writeln('Rata-rata nilai data = ',rata:7:2); writeln('Standard deviasi data = ',sd:7:2); readln;
8.3.3. Deklarasi Tipe Indeks Subrange Word
Demikian juga bila indeks dari array mempunyai jangkauan indeks dari 0 sampai dengan 65355, maka indeks dari array ini dapat dideklarasikan dengan tipe word.
Contoh : var
x : array[byte] of real;
8.3.4. Deklarasi Tipe Indeks Subrange Boolean
Tipe indeks dari array ini juga bisa berupa tipe boolean. Nilai boolean hanya mempunyai dua buah nilai saja, yaitu true dan false. Jadi indeks array yang bertipe boolean, hanya mempunyai maksimum 2 buah elemen saja.
Contoh : type
keterangan = string[11]; var
X : array[Boolean] of keterangan;
8.3.5. Deklarasi Tipe Indeks Subrange Char
Tipe char sebenarnya adalah tipe subrange yang mempunyai nilai sebanyak 256 buah (dari 0 samapi dengan 255) sesuai dengan urutan kode ASCII. Indeks dari array dapat dideklarasikan berupa subrange char.
Contoh : var
x : array[char] of intger;
8.3.6. Deklarasi Tipe Indeks Skalar
Indeks dari array dapat juga berupa tipe skalar atau enumerated. Contoh :
uses crt; var
jumlah : array[(jan,feb,mar,apr,mei)] of integer; begin
clrscr;
jumlah[jan] := 125; jumlah[feb] := 75; jumlah[mar] := 67; jumlah[apr] := 123; jumlah[mei] := 200;
writeln('Jumlah untuk bulan Februari = ',jumlah[feb]); readln;
8.4. Deklarasi Konstanta Array
Suatu array tidak hanya dapat berupa suatu variabel yang dideklarasikan dibagian deklarasi variabel, tapi juga dapat berupa suatu konstanta yang dideklarasikan dibagian deklarasi konstanta.
uses crt; const
x : array[1..5] of integer = (6,25,375,5,2); var
i: word; begin clrscr;
for i := 1 to 5 do
writeln('Nilai kostanta larik ke ',i,' = ',x[i]); readln;
end.
8.5. String Sebagai Array tipe Char
Suatu string dapat dianggap sebagai suatu array tipe char dengan indeks dari 0 sampai dengan panjang dari string yang didefinisikan.
Contoh : uses crt; var
i : word;
nama : string[255]; begin
clrscr;
write('Nama Anda ? '); readln(nama);
writeln;
writeln('Nama Anda kalau dibaca terbalik adalah :'); for i := ord(nama[0]) downto 1 do
write(nama[i]); readln;
end.
8.6. Array Berdimensi Banyak
Pada pembahasan sebelumnya indeks atau subscript pada array jumlahnya hanya sebuah saja. Array yang demikian disebut dengan array dimensi satu (one dimensional array). Array bisa juga berdimensi lebih dari satu, atau yang disebut dengan array berdimensi banyak (multidimensional array). Salah satu bentuk deklarasi array berdimensi 2 yaitu :
nama-array = array[tipe-indeks1] of array[tipe-indeks2] of tipe-array
Atau dapat ditulis
Nama-array = array[tipe-indeks1,tipe-indeks2] of tipe-array
uses crt;
Array dapat juga digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara acuan (by reference) ke prosedur atau ke fungsi. Prosedur yang menggunakan parameter berupa array harus dideklarasikan didalam judul prosedur yang menyebutkan parameternya bertipe array.
Contoh :
Program Perkalian_Matrik; uses crt;
type
larik = array[1..25,1..25] of real; var
i,j,k : byte; m,n,l : byte; a,b,c : larik;
procedure matrik(var x,y : byte); begin
writeln('Matrik yang pertama'); for i := 1 to m do
procedure tampil_matrik(var x,y : byte); begin
{program utama} begin
clrscr;
write('Baris matrik ? '); readln(m);
write('kolom matrik ? '); readln(n);
writeln; matrik(m,n);
tampil_matrik(m,n); readln;
BABA IX
RECORD
9.1. Pendahuluan
Pascal menyediakan suatu type data terstruktur yang disebut dengan record. Dengan tipe data record, dapat dikumpulkan beberapa item data yang masing-masing mempunyai tipe data yang berbeda-beda. Masing-masing item data disebut dengan field. Jadi record terdiri dari kumpulan beberapa field yang dapat berbeda tipe.
9.2. Deklarasi Record
Deklarasi tipe data record diawali dengan kata cadangan record dan diikuti oleh suatu daftar field dan diakhiri dengan kata cadangan end.
Contoh : type
lgn = record
kode : integer; nama : string[35]; alamat : string[45]; piutang : real; end;
var
langganan : lgn;
Atau var
langganan : record
kode : integer; nama : string[35]; alamat : string[45]; piutang : real; end;
9.3. Menggunakan Tipe Data Record
Tiap-tiap komponen field dari record dapat dipergunakan dengan cara menuliskan :
pengenal-record.pengenal-field[.pengenal-field]
Contoh : uses crt; type
hasil = record
jarijari : real; keliling : real; luas : real; end;
var
lingkaran : hasil; begin
clrscr;
lingkaran.keliling := 2*pi*lingkaran.jarijari; lingkaran.luas := pi*sqr(lingkaran.jarijari); writeln;
writeln('Keliling lingkaran = ',lingkaran.keliling:7:2); writeln('Luas lingkaran = ',lingkaran.luas:7:2); readln;
end.
9.4. Statemen With
Penggunaan field didalam record seperti contoh sebelumnya dapat menyebabkan statement menjadi panjang sebagai berikut :
lingkaran.keliling := 2*pi*lingkaran.jarijari;
Akan lebih mudah bila ditulis sebagai berikut : keliling := 2*pi*jarijari;
Untuk memudahkan dalam hal penyingkatan penulisan ini, Pascal menyediakan statement yang bernama with.
Contoh :
jumlahbrg,i,j : byte;
totalunit,total1,total2,total3,totaltotal : word; barang :array[1..50] of databrg;
total3 := 0;
writeln(' *** Total',total1:10,total2:10,total3:10,totaltotal:10); readln;
end.
9.5. Tipe Data Record Dengan Field Tipe Record
Tipe data record dapat juga mempunyai field berupa tipe data record yang lainnya.
datapegawai : pegawai; totalgaji : real; begin
clrscr;
datapegawai.nama := 'Badu'; datapegawai.tglmasuk.hari := 15; datapegawai.tglmasuk.bulan := 3; datapegawai.tglmasuk.tahun := 1980;
datapegawai.alamat.jalan := 'Gang Buntu 22'; datapegawai.alamat.kota := 'Kediri';
datapegawai.gaji.gajipokok := 75000; datapegawai.gaji.tunjangan := 25000; datapegawai.gaji.lembur := 10000;
with datapegawai do begin
with tglmasuk do
9.5. Record Bervariasi
Sejauh ini, tipe data record yang telah dibahas adalah merupakan struktur record yang pasti (fixed record structure), yaitu field-field didalam record sudah tertentu dan pasti. Disamping itu juga dapat dibuat suatu record yang mempunyai field yang tidak pasti atau bervariasi, yang disebut dengan record bervariasi (variant record). Didalam variant record, dapat mengandung suatu field yang bervariasi tergantung dari suatu kondisi. Dalam Pascal, hanya dapat terdiri dari sebuah field yang bervariasi saja. Bila di dalam suatu variant record terdapat field yang tetap, maka field yang bervariasi letaknya harus setelah field yang tetap.
Contoh : uses crt; type
statusmenikah = (single,menikah,cerai); datapribadi = record
nama : string[20];
karyawan : array[1..20] of datapribadi; jawab : char;
jumlahdata,i : byte;
write('Gaji tiap bulan ? '); readln(gaji);
write('Status menikah (S/M/C) ? '); readln(jawab);
if upcase(jawab) = 'S' then status := single;
if upcase(jawab) = 'M' then begin
status := menikah; write('Jumlah anak = '); readln(anakm);
end;
if upcase(jawab) = 'C' then begin
status := cerai;
write('Jumlah anak = '); readln(anakc);
write('Menikah lagi (Y/T) ? '); readln(menikahlagi);
end; end; end; end;
procedure tampilkanhasil; begin
clrscr;
writeln(' D A F T A R K A R Y A W A N'); writeln;
writeln('---'); writeln(' Gaji Status Jumlah Menikah'); writeln(' Nama karyawan sebulan S/M/C Anak Lagi'); writeln('---'); for i := 1 to jumlahdata do
begin
with karyawan[i] do begin
write(nama:20,gaji:15:2); case status of
single : writeln(' S');
menikah : writeln(' M',anakm:11);
cerai : writeln(' C',anakc:11,menikahlagi:7); end;
end; end;
writeln('---'); end;
begin
masukkandata; tampilkanhasil; readln;
BAB X
ELEMEN PROGRAM PASCAL
10.1. Menggunakan Grafik
Untuk mulai menggunakan grafik, maka prosedur standar initgraph harus disebutkan terlebih dahulu dengan sintak :
Initgraph(var graphdriver : integer; var graphmode : integer; driver path : string);
Graphdriver merupakan yang dipergunakan pada komputer Anda. Beberapa konstanta mengenai graphics driver ini telah didefinisikan di unit standar graph, yaitu :
Detect = 0;
CGA = 1;
MCGA = 2;
EGA = 3;
EGA64 = 4;
EGAMono = 5; RESERVED = 6; HercMono = 7; ATT400 = 8;
VGA = 9;
PC3270 = 10;
Kalau Anda menggunakan Color graphics Adapter (CGA), maka graphics driver yang harus disebutkan adalah CGA atau nilai konstanta 1. Kalau Anda tidak mengetahui graphics adapter yang dipergunakan, maka dapat dilakukan pendeteksian secara otomatis (autodetection) oleh Turbo Pascal, yaitu dengan menggunakan konstanta Detect atau nilai 0.
uses graph; var
drivergrafik, modegrafik : integer; begin
drivergrafik := detect;
initgraph(drivergrafik, modegrafik, 'd:\tp\bgi'); end.
Pada sintak prosedur standar initgraph, graphmode adalah mode grafik yang dipergunakan untuk driver yang bersangkutan. Kalau Anda menggunakan autodetection, maka mode grafik juga akan dipilih secara otomatis. Sebaliknya kalau tidak secara autodetection, maka graphmode juga harus disebutkan. Beberapa konstanta telah didefinisikan di unit standar graph untuk nilai graphmode sebagai berikut :