• Tidak ada hasil yang ditemukan

BAB I - BAB Total.doc

N/A
N/A
Protected

Academic year: 2018

Membagikan "BAB I - BAB Total.doc"

Copied!
65
0
0

Teks penuh

(1)

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

(2)

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)

(3)

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.

(4)

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;

(5)

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.

(6)

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

(7)

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.

(8)

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;

(9)

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

(10)

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;

(11)

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

(12)

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 *)

(13)

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.

(14)

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

(15)

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

(16)

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');

(17)

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 :

(18)

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;

(19)

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.

(20)

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).

(21)

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;

(22)

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.

(23)

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’

(24)

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;

(25)

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 RepeatUntil bersarang

Merupakan suatu perulangan repeat … until yang satu berada dalam perulangan Repeat ... Until yang lainnya.

(26)

b := b + 5; until b > 25; a := a + 1; until a > 3;

writeln('---'); readln;

(27)

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;

(28)

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;

(29)

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

(30)

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);

(31)

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;

(32)

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;

(33)

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. . .)

(34)

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

(35)

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;

(36)

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;

(37)

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;

(38)

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.

(39)

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.

(40)

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);

(41)

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.

(42)

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.

(43)

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

(44)

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;

(45)

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;

(46)

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

(47)

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

(48)

{program utama} begin

clrscr;

write('Baris matrik ? '); readln(m);

write('kolom matrik ? '); readln(n);

writeln; matrik(m,n);

tampil_matrik(m,n); readln;

(49)

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;

(50)

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;

(51)

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

(52)

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;

(53)

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;

(54)

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 :

Gambar

Gambar Tampilan Pascal
grafik dipergunakan. Kalau keadaan semula adalah mode layar teks, maka closegraphakan mengakibatkan kembali ke keadaan mode layar teks.uses graph;
grafik  EGA  atau  VGA  warna  default  di  pallete,  dapat  dirubah  dengan

Referensi

Garis besar

Dokumen terkait

1438/PER/MENKES/IX/2010 tentang Standar Pelayanan Kedokteran yang menyebutkan bahwa setiap rumah sakit membuat Standar Prosedur Operasional dalam bentuk Panduan

Meyakini kebenaran kisah Nabi Muhammad saw., Menunjukkan sikap jujur., Menyebutkan sikap terpuji dari kisah keteladanan Nabi Muhammad saw., Menjelaskan sikap jujur dari kisah

tersebut, memperlambat bahkan menghambat proses penyakit, disamping juga mengobati keluhan serta gejala gejala yang ditimbulkan oleh penyakit

Melalui MODEL PBL, peserta didik dapat mengkomonikasikan fungsi manajemen dalam kegiatan ekonomi sebagai masalah kontekstual dan dapat menyelesaikan masalah kontekstual

Pendekatan kepada pemilik homestay &amp; warga sekitar Hari 4 Intervensi + Proyek fisik + Persiapan pesta. rakyat + pelatihan

Hasil penelitian yang didapatkan dari 54 responden, secara umum kelompok lanjut usia di Kelurahan Kinilow Kecamatan Tomohon Utara Kota Tomohon paling banyak memiliki

Maka penelitian ini dilakukan untuk menganalisis pengaruh employer attractiveness terhadap retensi karyawan tetap pada Direktorat Sumber Daya Manusia PT Pertamina

Beda halnya dengan pemakaian bahan bakar untuk mendapatkan nilai daya pada reduksi gigi 1,pada reduksi gigi 2 seperti terlihat pada gambar 4.4 menunjukan adanya perbedaan