Anda di halaman 1dari 88

MATERI PEMROGRAMAN KOMPUTER 1

Disusun guna memenuhi tugas Mata Kuliah Pemrograman Komputer 1


Dosen Pengampu Zaenal Abidin, S.Si., M.Cs.

Disusun Oleh:
Dian Insani Abdullah (4101411086)

UNIVERSITAS NEGERI SEMARANG


SEMARANG
2013
DAFTAR ISI

DAFTAR ISI .................................................................................................................iii


BAB I ALGORITMA ....................................................................................................1
BAB II FLOWCHART..................................................................................................6
BAB III PASCAL ..........................................................................................................10
BAB IV TIPE DATA ....................................................................................................16
BAB V PENGULANGAN ............................................................................................ 18
BAB VI ARRAY ...........................................................................................................24
BAB VII RECORD .......................................................................................................31
BAB VIII PROCEDURE .............................................................................................. 45
BAB IX FUNGSI ..........................................................................................................52
BAB X PARAMETER ..................................................................................................66
BAB XI DATA FILE ....................................................................................................76
DAFTAR PUSTAKA ....................................................................................................86

ii
BAB I
ALGORITMA
Langkah-langkah Pemrograman Komputer
1. Mendefinisikan masalah.
2. Menentukan solusi.
3. Memilih algoritma.
4. Menulis program.
5. Menguji program.
6. Menulis dokumentasi.
7. Merawat program.
Apa itu Algoritma?
Algoritma adalah urutan langkah berhingga untuk memecahkan masalah logika atau
matematika.
Dalam kehidupan sehari-hari sering menggunakan algoritma untuk melakukan sesuatu.
contoh: Algoritma MENULIS SURAT
1. Mempersiapkan kertas dan amplop
2. Mempersiapkan alat tulis.
3. Mulai menulis.
4. Memasukkan kertas ke dalam amplop.
5. Pergi ke tempat pengiriman surat untuk mengeposkan surat.
Apa itu Algoritma?
Dalam kasus lain, Anda mungkin harus melakukan langkah-langkah tertentu beberapa
kali.
Dalam dunia pemrograman disebut pengulangan.
Contoh Algoritma
Menghitung luas daerah lingkaran.
Rumus luas daerah lingkaran: L= R2.
Contoh algoritmanya:
1. Masukkan R.
2. Pi 3.14.
3. L Pi*R*R.
4. Tulis L
Tanda dibaca assigned atau diberi input/nilai

1
Percabangan (Conditional)
Contoh berikut adalah algoritma untuk menuliskan nilai mutlak dari nilai yang
dimasukkan oleh pengguna.
Definisi nilai mutlak
Contoh Percabangan
Berikut ini adalah algoritma untuk melukiskan nilai absolut dari masukkan pengguna.
1. Masukkan x.
2. Jika (x<0) maka kerjakan baris 3, jika tidak kerjakan baris 4.
3. x -x
4. Tulis x
Pengulangan
Mencari rata-rata dari data xi yang berjumlah N.
1. Masukkan N.
2. i 1.
3. jum 0.
4. Selama (i<=N) kerjakan baris 4 sampai dengan 7.
5. Masukkan dt
6. i i+1.
7. jum jum + dt
8. Rata jum/N
9. Tulis Rata

Sifat Algoritma
1. Input: suatu algoritma memiliki input atau kondisi awal sebelum algoritma
dilaksanakan dan bisa berupa nilai-nilai pengubah yang diambil dari himpunan-
himpunan khusus.
2. Output: suatu algoritma akan menghasilkan output setelah dilaksanakan, atau
mengubah kondisi awal menjadi kondisi akhir, dimana nilai output diperoleh dari
nilai input yang telah diproses melalui algoritma.
3. Definiteness: langkah-langkah yang dituliskan terdefinisi dengan jelas.
4. Finiteness: algoritma harus memberi kondisi akhir.
5. Effectiveness: algoritma dapat dilaksanakan dalam selang waktu tertentu sehingga
memberi solusi seperti yang diharapkan.

2
6. Generality: langkah-langkah algoritma berlaku untuk setiap himpunan input yang
sesuai dengan persoalan yang akan diberikan tidak hanya untuk himpunan tertentu.

Algoritma adalah alur berfikir yang disusun untuk menyelesaikan suatu masalah dan
mempunyai karakteristik.
Karakteristik tersebut antara lain:
a. Setiap instruksi dalam algoritma harus jelas dan bermakna unik/ tunggal.
b. Seluruh rangkaian instruksi harus selesai dalam waktu yang berhingga
c. Bersifat umum , artinya dapat dipakai untuk menyelesaikan berbagai masalah yang
tipenya serupa tanpa perlu modifikasi.
Sebuah algoritma memuat komponen-komponen antara lain:
Masukan (input)
Langkah-langkah
Keluaran (output)
Penulisan algoritma dapat dilakukan denga dua cara, yaitu:
Kode semua (psedu code)
Diagram alir (flow chart)

Contoh :
Versi 1
{ Status awal : 4 buah bola tampilannya sama, 3 bola beratnya sama.
Status akhir : ditemukan 1 bola yang beratnya berbeda }
Algoritma
1. Letakkan 2 buah bola pada masing-masing pada bandul A dan B.
2. Timbang masing-masing yang ada pada bandul A.
3. Timbang masing-masing bola yang ada pada bandul B.
Versi 2
{ Status awal : terdapat 4 bola yang tampilannya sama, 3 bola beratnya sama.
Status akhir : ditemukan 1 bola yang beratnya berbeda }
Algoritma
1. Ambil salah satu bola, letakkan pada bandul A.
2. Ambil bola kedua, letakkan pada bandul B.
3. Jika berat bola sama, ambil bola ketiga dan seterusnya sampai ditemukan yang tidak
beratnya sama.

3
KODE SEMU ( PSEUDO CODE )
Pseudo code merupakan salah satu bentuk penulisan algoritma. Penulisannya
menggunakan deskripsi kata-kata biasa, bahasa yang digunakan bebas, asalkan
deskripsinya jelas. Dengan menggunakan kode semu ini penulisan program sudah
terpola menyerupai program yang sebenarnya. Namun demikian dalam penulisannya
harus bersifat umum, artinya tidak terkonsentrasi pada bahasa program tertentu.
Dalam kode semu ini setiap langkah diawali dengan komentar singkat yang dituliskan
dalam kurung siku, apabila tujuan dari langkah tersebut sudah jelas, komentar ini bias
dihilangkan. Pada dewasa ini, karena penggunaan kode semu ini lebih mendekati
program yang sesungguhnya sehingga banyak digunakan dikalangan programmer.
Alasan yang lain juga dikarenakan dengan kode semu struktur nya lebih baik
dibandingkan dengan diagram alir dan penulisan lebih sederhana sehingga menyisihkan
diagram alir dalam pemrograman. Dalam diktat ini untuk memudahkan penyebutan
algoritma yang menggunakan kode semu ini dinamakan algoritma dan untuk algoritma
yang menggunakan diagram alir dinamakan diagram alir.
Contoh 1. menghitung sisi miring dengan menggunakan pseudo code.
[ masukan / input berupa kedua sisi siku-siku ]
read {siku_1, siku_2}
[ menghitung kuadrat dari masing-masing sisi siku-siku]
SQ1:= Siku_1^2
SQ2:= Siku_2^2
[ Menghitung panjang sisi miring ]
Hypotenusa := SQRT ( SQ1 + SQ2 )
[ keluaran / output ] Write ( panjang sisi miring = , Hypotenusa)
5. [ mengakhiri algoritma ]
Exit
Untuk memeriksa aliran logika dan mencari kesalahan di dalam algoritma tersebut, perlu
dilakukan pelacakan algoritma. Pelacakan algoritma adalah proses menjalankan
algoritma tersebut langkah demi langkah secara detail dengan urut-urutannya. Pelacakan
dapat dilakukan dengan memberikan data uji pada bagian masukan. Ada beberapa hal
yang penting dalam pelacakan algoritma ini, diantaranya pertama: proses pelacakan
dilakukan beberapa kali dengan uji yang berbeda-beda, kedua: memilih data yang dapat
mencakup seluruh inistruksi yang ada dalam algoritma ( data dipilih agar seluruh

4
instruksi pada algoritma terlewati) , ketiga: Pilih data uji yang jawabannya muda / sudah
diketahui.
Namun demikian pelu diingat bahwa hasil proses pelacakan tidak membuktikan bahwa
sebuah algoritma sudah benar. Hasil maksimal hanyalah memberikan kesimpulan bahwa
algoritma tidak ada kesalahan. Sebagai contoh pelacakan algortma dapat dilihat pada
tabel 2.1. di bawah, yang membahas pecakan terhadap algoritma Phytagoras yang di
buat di atas.
Tabel 2.1.
Pelacakan Algoritma / Algorithm Tracing ( pada algoritma phytagoras)
Langkah Siku_1 Siku_2 SQ1 SQ2 Hypotenusa Out
1 3 4 ? ? ? put

2 3 4 9 16 ?
2 3 4 9 16 5
4 3 4 9 16 5

Panjang sisi miring = 5

5
BAB II
FLOW CHART (DIAGRAM ALIR)

Sebelum mempelajari pemrograman computer akan lebih baik jika mahasiswa


mempelajari diagram alir (flow chart). Diagram ini memberikan gambaran alur befikir
secara sistematis di dalam computer. Flow chart bukan termasuk salah satu bahasa dalam
pemrograman computer, tetapi ia merupakan alat untuk memudahkan cara berpikir atau
mengatur jalannya program yang akan di buat. Ini terasa sekali manfaatnya dalam
membuat program yang cukup rumit. Hal ini diperlukan apabila teradi kesalahan, maka
dengan mudah kesalahan tersebut dap dilacak dengan cepat.
Flowchart adalah untaian simbol gambar (chart) yang menunjukkan aliran (flow) dari
proses terhadap data. Flowchart yaitu :
Bagan-bagan yang mempunyai arus
Menggambarkan langkah-langkah penyelesaian suatu masalah
Merupakan salah satu cara penyajian algoritma
Tujuan Flowchart :
Menggambarkan suatu tahapan penyelesaian masalah
Secara sederhana, terurai, rapi dan jelas
Menggunakan simbol-simbol standar
Dengan flow chart maka kesalahan program mudah diketahui, dan dengan
bantuan flow chart juga pekerjaan yang dapat disederhanakan sehingga menjadi
beberapa pekerjaan yang kecil-kecil dan mudah dikerjakan.
Flowchart dibedakan menjadi 2 bagian:
1. Program Flowchart
2. System Flowchart
System Flowchart
Menggambarkan suatu sistem peralatan komputer yang digunakan dalam proses
pengolahan data serta hubungan antar peralatan tersebut
Tidak digunakan untuk menggambarkan urutan langkah untuk memecahkan
masalah
Hanya untuk menggambarkan prosedur dalam sistem yang dibentuk
Sistem flow chart dipelajari seseorang yang akan mempelajari system computer
yaitu seseorang yang dapat menentukan apakah sebuah pekerjaan layak dibuat

6
dengan computer atau tidak, sebab tidak semua pekerjaan dapat
dikomputerisasikan.

Program Flowchart
Menggambarkan urutan logika dari suatu prosedur pemecahan masalah
Dua jenis metode penggambaran program flowchart :
1. Conceptual flowchart, menggambarkan alur pemecahan masalah secara global
2. Detail flowchart, menggambarkan alur pemecahan masalah secara rinci

Program flow chart dipelajari seseorang yang di sebut programmer yaitu seseorang
yang bertugas untuk membuat program computer dari suatu masalah yang diberikan
oleh seseorang analisi, jadi program yang di buat programmer adalah sebagian dari
suatu system pekerjaan dalam komputerisasi.

7
1. Flow Direction Symbols
a. Simbol arus / flow yaitu Menyatakan jalannya arus suatu proses
b. Simbol communication link yaitu Menyatakan transmisi data dari satu lokasi
ke lokasi lain
c. Simbol connector yaitu Menyatakan sambungan dari proses ke proses
lainnya dalam halaman yang sama
d. Simbol offline connector yaitu Menyatakan sambungan dari proses ke proses
lainnya dalam halaman yang berbeda
2. Processing Symbols
a. Simbol process
Menyatakan suatu tindakan (proses) yang dilakukan oleh
komputer
b. Simbol manual
Menyatakan suatu tindakan (proses) yang tidak
dilakukan oleh komputer
c. Simbol decision
Menujukkan suatu kondisi tertentu yang akan
menghasilkan dua kemungkinan jawaban : ya / tidak
d. Simbol predefined process
Menyatakan penyediaan tempat penyimpanan suatu
pengolahan untuk memberi harga awal
e. Simbol terminal
Menyatakan permulaan atau akhir suatu program
Gambar dari simbol dapat dilihat dibawah secara urut
f. Simbol keying operation
Menyatakan segal jenis operasi yang diproses dengan
menggunakan suatu mesin yang mempunyai keyboard

g. Simbol offline-storage
Menunjukkan bahwa data dalam simbol ini akan
disimpan ke suatu media tertentu
h. Simbol manual input
Memasukkan data secara manual dengan menggunakan
online keyboard

8
i. Simbol input/output
Menyatakan proses input atau output tanpa tergantung
jenis peralatannya
j. Simbol punched card
Menyatakan input berasal dari kartu atau output ditulis
ke kartu

k. Simbol magnetic tape


Menyatakan input berasal dari pita magnetis atau output
disimpan ke pita magnetis
l. Simbol disk storage
Menyatakan input berasal dari dari disk atau output
disimpan ke disk

m. Simbol document
Mencetak keluaran dalam bentuk dokumen (melalui
printer)
n. Simbol display
Mencetak keluaran dalam layar monitor

Menurut bentuknya flow chart di bedakan menjadi tiga jenis:

1. Flow chart runtunan, yaitu bentuk flow chart yang bentuknya runtun ke bawah dan
biasanya hanya menyelesaikan satu persoalan dengan satu penyelesaian.

2. Flow chart memilih, yaitu bentuk flow chart yang bentuknya digunakan untuk
menyelesaikan persoalan dengan penyelesaian lebih dari satu, biasa memilih satu
diantara dua penyelesaian.

3. flow chart berulang (loop), yaitu bentuk flow chart yang bentuknya
digunakan untuk menyelesaikan persoalan dengan bentuk berulang (loop).

9
BAB III
PASCAL

Pascal adalah Bahasa pemrograman yang terstruktur Menyediakan suatu lingkungan


terpadu yang disebut Integrated Development Environment (IDE) yang diantaranya
berisi:
- Kompiler (mengkompilasi program menjadi suatu objek yang dipahami oleh
komputer)
- Debugger (membantu mencari kesalahan program)
- Linker (menggabungkan file objek dan file pustaka serta membentuk file executable)
- Editor (tempat menuliskan program sumber)
Kelebihan bahasa pemrograman Pascal
a. Tipe Data Standar, tipe-tipe data standar yang telah tersedia pada kebanyakan
bahasa pemrograman. Pascal memiliki tipe data standar: boolean, integer, real,
char, string,
b. User defined Data Types, programmer dapat membuat tipe data lain yang
diturunkan dari tipe data standar.
c. Strongly-typed, programmer harus menentukan tipe data dari suatu variabel, dan
variabel tersebut tidak dapat dipergunakan untuk menyimpan tipe data selain dari
format yang ditentukan.
d. Terstruktur, memiliki sintaks yang memungkinkan penulisan program dipecah
menjadi fungsi-fungsi kecil (procedure dan function) yang dapat dipergunakan
berulang-ulang.
e. Sederhana dan Ekspresif, memiliki struktur yang sederhana dan sangat
mendekati bahasa manusia (bahasa Inggris) sehingga mudah dipelajari dan
dipahami.
Struktur Program Pascal
Struktur dari suatu program Pascal terdiri dari suatu blok program atau badan
program.
a. Judul program (program heading)
b. Blok program dibagi lagi menjadi dua bagian, yaitu
1) bagian deklarasi (declaration part). Bagian deklarasi dapat terdiri dari:
deklarasi label (label declaration),

10
deklarasi konstanta (constant declaration),
deklarasi tipe (type declaration),
deklarasi variabel (variabel declaration),
deklarasi prosedur (procedure declaration) dan
deklarasi fungsi (function declaration).
2) Bagian pernyataan (statement part)
Contoh:
Program berikut ini adalah program Pascal yang sederhana yang bertujuan untuk
mencetak kalimat Selamat Belajar Turbo Pascal pada layar.
program tutorial1;
uses wincrt;
var
kalimat: string;
begin
kalimat := 'Selamat Belajar Turbo Pascal';
writeln(kalimat);
end.

Elemen Dasar Program Pascal


Karakter adalah terkecil dalam Turbo Pascal. Karakter dapat berupa:
Huruf (A samapai Z, a sampai z)
Angka (0 sampai 9)
Simbol khusus
Spasi
Karakter control (karakter dengan nilai ASCII di bawah 32, misalnya tab dan
backspace)
Karakter ASCII tidak standar pada PC (karakter dengan nilai ASCII 128 255)
Simbol khusus terdiri dari + - * / = < > [ ] , ( ) : ; ^ . @ { } $ #
Selain itu ada symbol khusus yang terdiri dari dua karakter <= >= := <> (* *)
(. .) ..
Puctuation (Pungtuasi/Delimiter) Dipakai sebagai penanda awal (begin) dan penanda
akhir (end).

11
Contoh dalam bahasa pascal:
1. Pungtuasi untuk suatu blok:
begin
end;
2. Pungtuasi untuk blok berisi keterangan:
misal: { } atau (* *)
Contoh Pungtuasi di Pascal
{Bagian ini merupakan komentar}
(* Komentar juga bisa ditulis seperti ini *)
begin {pungtuasi awal blok}
end. {pungtuasi akhir blok}

IDENTIFIER
Identifiers adalah nama yang digunakan untuk menyimpan nilai pada variabel dan
konstanta. Judul atau nama program pun disebut dengan identifier.
Ada beberapa aturan yang berlaku untuk membuat identifier :
1. Harus diawali dengan huruf alfabet
2. Huruf berikutnya dapat berupa karakter alphanumerik, karakter alfabet atau
underscore ( _ )
3. Tidak boleh mengandung karakter berikut :
~!@#$%^&*()_+`-={}[]:";'<>?,./|\

RESERVED WORD
beberapa identifier yang sudah digunakan Pascal, sehingga tidak boleh lagi digunakan
sebagai identifier adalah sebagai berikut :
AND ARRAY BEGIN CASE CONST
DIV DO DOWNTO ELSE END
FILE FOR FORWARD FUNCTION GOTO

12
IF IN LABEL MOD NIL
NOT OF OR PACKED PROCEDURE
PROGRAM RECORD REPEAT SET
THEN TO TYPE UNTIL VAR
WHILE WITH XOR IMPLEMENTATION
INHERITED OBJECT UNIT USES
STRING INTERFACE LIBRARY
CONSTRUCTOR DESTRUCTOR EXPORT
Qualifier
Dalam bahasa alami disebut modifier.
Qualifier mengubah makna (untuk keluar dari konteks implisit).
Misal: kata presiden saat bicara di Indonesia mengacu pada presiden Indonesia.
Bila ingin mengacu pada presiden Singapura, kualifikasinya dengan kata Singapura
Qualifier (lanjutan)
Peran qualifier di bahasa pemrograman mirip dengan permisalan tadi.
Sebagai contoh di Pascal, ketika mendeklarasikan objek harus secara eksplisit
menyatakan apakah obyek tersebut konstanta atau variabel.
Pascal menyediakan 2 qualifier:
Const untuk konstanta
Var variabel.
KONSTANTA
Konstanta juga merupakan salah satu identifier. Sebuah konstanta dapat diberi
nilai atau ditetapkan pada awal sebuah program. Nilai yang disimpan pada sebuah
konstanta tidak dapat diubah.
Sintak penulisan konstanta adalah sebagai berikut :
const
Identifier1 = value;
Identifier2 = value;
Identifier3 = value;
Contoh
const
Nama = 'Agus Wahyudi';
Huruf = 'z';
Tahun = 2006;

13
pi = 3.1415926535897932;
Ketemu = TRUE;
Variabel
Variabel adalah identifier yang digunakan untuk menyimpan suatu nilai. Berbeda
dengan konstanta, nilai sebuah variabel dapat berubah pada saat program
dijalankan (run time). Sintak dari variabel adalah sebagai berikut :
var
IdentifierList1 : DataType1;
IdentifierList2 : DataType2;
IdentifierList3 : DataType3; ...
IdentifierList dengan tipe data yang sama dapat ditulis dalam satu baris. Untuk
memisahkan variabel yang berbeda tersebut, digunakan tanda koma ( , ).
Tipe Data
Tipe data yang dapat digunakan untuk variabel antara lain :
Integer : adalah bilangan bulat, dengan kisaran nilai antara 32768 sampai 32767
Real : adalah bilngan desimal, dengan kisaran 3.4x10-38 sampai 3.4x1038. Tipe
data real dapat ditulis dengan notasi fixed-point atau notasi scientific. Sebagai
contoh 452.13 dapat ditulis dengan 4.5213e2.
Char : adalah bagian dari tipe data karakter. Sebagai contoh a, 1, + dan lain-
lain. Tipe data ini harus menggunakan tanda kutip ( ).
Boolean : adalah tipe data yang hanya bernilai benar (TRUE) atau salah (FALSE)
Contoh
var
umur, tahun, tingkat : integer;
IPK : real;
Huruf_mutu : char;
Status : Boolean;
Pemberian Nilai
Variabel adalah salah satu identifier yang dapat menyimpan nilai. Pemberian nilai
kedalam sebuah variabel disebut dengan assignment (pemberian nilai). Untuk pemberian
nilai tersebut dapat dilakukan dengan menggunakan sintak berikut :
variable_name := expression;
Tidak seperti bahasa pemrograman lainnya, untuk pemberian nilai, Pascal menggunakan
tanda titik dua diikuti dengan tanda sama dengan ( := ).

14
Nilai yang diberikan kepada sebuah variabel dapat berupa nilai tunggal (single value)
atau berupa beberapa nilai (arithmetic sequence)
x := 385.385837;
x := 37573.5 * 37593 + 385.8 / 367.1;
Operator
Operator Pembandingan/Relasional
Operator Boolean
Komentar (Comments)
Komentar adalah teks yang ditulis dengan tujuan untuk menjelaskan maksud dari kode
program yang ditulis.
Komentar ditulis dengan menggunakan tanda { atau (* untuk tanda pembukan dan }
atau *) untuk tanda penutup.

15
BAB IV
TIPE DATA

Tipe data yang disediakan oleh PASCAL meliputi:


1. Tipe Data Sederhana
merupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan
bulat), real (bilangan pecahan), char (alpha numerik dan tanda baca) dan boolean
(logika). Untuk data integer dan real masing-masing terbagi menjadi beberapa kategori.
a. Bilangan Integer
merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti
terlihat dalam tabel 1. Tabel 1 menunjukkan jenis data, ukuran dalam memori dan
rentang nilainya.
Tabel 1. Tipe Data Bilangan Integer
Tipe Data Ukuran Tempat Rentang Nilai
Byte 1 byte 1 sd 225
Shortint 1 byte -28 sd 127
Integer 2 byte -32768 sd 32767
Word 2 byte 0 sd 65535
Longint 4 byte -2147483648 sd 2147483647
b. Bilangan Real
Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta
numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan ketelitian yang
signifikan sampai dengan 11 digit. E
menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori
sebesar 6 byte.
c. Char (Karakter)
Tipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 266
macam yang terdapat dalam tabel ASCII (American Standard Code for
Information Interchange). Contoh: 'a' 'B' '+', dsb. yang perlu diingat bahwa dalam
menuliskannya harus dengan memakai tanda kutip tunggal. Jenis data ini
memerlukan alokasi memori sebesar 1(satu) byte untuk masing-masing data.

d. String

16
Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda
petik tunggal. Nilai data string akan menenpati 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.
Contoh :
Var
Kota : string[10];
Begin
Kota := Lampung;
Write(Kota);
End.
Hasil output:

e. Boolean
merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE (benar)
atau FALSE (salah). Turbo Pascal for Windows memiliki tiga macam jenis ini
yaitu: Boolean, WordBool, dan LongBool. Tipe boolean memakai memori paling
kecil, sedangkan WordBool dan LongBool dipakai untuk menulis program yang
sesuai dengan lingkungan Windows.
Tabel 2. Tipe Data Boolean
Tipe Data Ukuran Tempat
Boolean 1 byte
Wordbool 2 byte
Longbool 3 byte

17
BAB V
PENGULANGAN

Konsep pengulangan satu atau lebih pernyataan dalam suatu program merupakan
salah satu konsep terpenting dalam pemrograman komputer. Pengulangan sekelompok
pernyataan program komputer sering disebut dengan nama looping. Adanya kemampuan dari
bahasa-bahasa pemrograman komputer untuk mengerjakan satu atau lebih pernyataan-
perntyataan program sebanyak jumlah yang ditentukan menyebabkan proses komputasi
menjadi lebih efisien. Misalnya untuk menghitung jumlah 100 bilangan asli yang pertama,
yang ekspresinya dapat ditulis alam bentuk Jumlah = 1+2+3+...+100, tidaklah berarti
pemrogram harus mengalokasikan 100 variabel memori untuk variabel di sebelah kanan
tanda penugasan dan satu variabel untuk Jumlah. Pengulangan memungkinkan proses
komputasi tersebut dilakukan secara efisien.
Bahasa Pascal mengenal 3 jenis pengulangan yaitu pengulangan for, pengulangan
while, dan pengulangan repeat...until. Ketiga jenis pengulangan ini membutuhkan
keberadaan ekspresi kondisional yang digunakan untuk mengetahui apakah sebuah blok
pernyataan masih akan dieksekusi ataukah pengulangan berkhir. Selama ekspresi kondisional
ini memberikan nilai True, blok pernyataan terus diulangi hingga ekspresi menghasilkan nilai
false. Hal kedua yang perlu diperhatikan, ketiga jenis pengulangan ini jika diperhatikan
secara seksama memiliki konsep yang berbeda dalam melakukan pengulangan blok program,
seperti yang ditulis dalam penjelasan berikut:
1. Pengulangan FOR
Pengulangan for pada Pascal akan memiliki salah satu dari 2 sintak berikut:
For variabel:=first to last do
Begin
Statement_1;
Statement_2;
...
Statement_n;
End;

Atau
For variabel:=first downto last do
Begin
18
Statement_1;
Statement_2;
...z
Statement_n
End;
Pada kedua sintak diatas, tipe dari variabel, first, dan last harus ordinal (integer
atau char). Klausa to akan menyebabkan nilai dari variabel bartambah 1 dan klausa
downto menyebabkan nilai dari variabel berkurang 1. Untuk mempermudah
pemaahaman, misalkan ingin diketahui jumlah dari 10 bilangan asli yang pertama, yaitu:
Jumlah = 1+2+...+10
Seperti biasa, cobalah untuk membuat algoritma atau diagram alir dari permasalahan
tersebut.
Berikut adalah listed code dengan Pascal:
program hitung_jumlah_asli;
uses wincrt;
var
jumlah, pencacah:byte;
begin
clrscr;
writeln('Menghitung Jumlah 10 Bilangan Asli Pertama');
writeln('=================================');
jumlah:=0;
for pencacah:=1 to 10 do
jumlah:=jumlah + pencacah;
writeln('Jumlah dari 1+2+...+10 = ', jumlah);
end.
Hasil output:

19
Perhatikan contoh diatas, hanya ada 1 instruksi yang diulangi setelah do, maka
pasangan kata begin...end bisa dihilangkan. Namun jika terdapat lebih dari 1 instruksi,
anda harus meletakkan instruksi-instruksi tersebut diantara pasangan begin...end.
perhatikan kembali program diatas dan sintak pada halaman sebelumnya.
Sintak kedua akan digunakan untuk mengetahui nilai faktorial suatu bilangan.
Seperti yang diketahui, faktorial dari X(X>1) didefinisikan sebagai X! = X(X-1) (X-2) ...
(1). Berikut adalah program untuk menghitung faktorial suatu bilangan:
program faktorial_1;
uses wincrt;
var
bil, pencacah:byte;
fak:longint;
begin
clrscr;
writeln('Menghitung Nilai Faktorial);
writeln(' ');
write('Masukkan Bilangan = ');readln(bil);
fak:=1;
for pencacah := bil downto 1 do
fak:=fak*pencacah;
writeln('Faktorial dari ',bil, '= ', fak);
end.
Hasil output:

Program Menampilkan Bintang


program bintang;
uses wincrt;
var
i, n, j:integer;

20
begin
write ('Masukkan n = '); readln(n);
for i:= 1 to n do
begin
for j:= 1 to i do
write (' * ');
writeln;
end;
end.
Hasil output:

2. Pengulangan WHILE
Pengulangan while pada Pascal memiliki sintak berikut:
While logical_ekspression do
Begin
Satetment_1;
Statement_2;
...
Statement_n;
End;
Pada sintak diatas, selama logical_ekspression bernilai True, maka kelompok instruksi pada
blk begin...end akan tetap dieksekusi. Perhatikan contoh berikut:
program faktorial_1;
uses wincrt;
var
bil:byte;
fak:longint;
begin

21
clrscr;
writeln('Menghitung Nilai Faktorial');
writeln(' ');
write('Masukkan Bilangan = ');readln(bil);
fak:=1;
while bil>1 do
begin
fak:=fak*bil;
dec(bil);
end;
writeln('Faktorial dari ', bil, '=', fak);
end.
Hasil output:

3. Pengulangan REPEAT...UNTIL
Pengulangan repeat...until pada Pascal memiliki sintak berikut:
Repeat
Begin
Statement_1;
Statement_2;
...
Statement_n;
End;
Until logical_expression;

Pada sintaks diatas, kelompok instruksi yang terletak diantara pasangan


begin...end akan dieksekusi logical_expression menghasilkan nilai True. Jika dicermati,
maka setidak-tidaknya kelompok instruksi tersebut akan dieksekusi satu kali. Kenapa?
Berikut adalah penerapan engulangan tersebut yang digunakan untuk menghitung jumlah
darii deret berikut:

22
Jumlah = 11+32+53+74+...

program jumlah_deret;
uses wincrt;
var
counter, suku, bil, pangkat:byte;
jumlah:longint;
begin
writeln('Menghitung Jumlah Deret Bilangan');
writeln(' ');
write('Masukkan Jumlah Suku Bilangan ');
readln(suku);
jumlah:=1;
suku:=1;
pangkat:=0;
repeat
begin
for counter:=1 to pangkat do
bil:=bil*bil;
jumlah:=jumlah+bil;
inc(bil,2);
inc(pangkat);
end;
until bil >(2*suku-1);
writeln('Jumlah Deret',' = ',jumlah);
end.
Hasil output:

23
BAB VI
ARRAY

Array (larik) adalah suatu tipe terstruktur yang terdiri dari sejumlah komponen-
komponen yang mempunyai tipe yang sama. Komponen-komponen ini disebut sebagai tipe
komponen. Banyaknya komponen dalam suatu larik jumlahnya selalu tetap. Suatu indeks
yang disebut tipe indeks (bertipe ordinal) menunjukkan banyaknya komponen dalam suatu
larik. Tiap komponen dalam suatu larik dapat diakses dengan menunjukkan nilai indeksnya.
Larik dapat bertipe data sederhana byte, word, integer, real, boolean, char atau string dan
dapat juga bertipe skalar atau subrange.
Ada 2 cara untuk mendefinisikan sebuah array pada Pascal, yaitu:
Sebagai tipe data baru
Type larik = array [1..n] of datatype;
Var x : larik;
Sebagai variabel
var x : Array [1..n] of datatype;

1. Array Berdimensi Satu


Array berdimensi satu dapat dikatakan sebagai suatu daftar yang linier atau sebuah kolom.
Bentuk deklarasi dari array jenis ini dalam bahasa Pascal adalah :
Var nama_array : array [tipe indeks] of tipe data;
Contoh :
X : array [1..100] of integer;
dengan
X : nama larik
[1..100] : tipe indeks
Integer : tipe data

Larik X telah dideklarasikan sebagai larik bertipe integer dengan jumlah


elemennya maksimum sebanyak 100 elemen. Nilai elemen dalam larik X harus bertipe
atau berisi nilai-nilai integer. Misal elemen-elemen dari Larik X adalah :
X[1] :=10;
X[2] := 5;
X[3] := 8;

24
X[4] := 10
Menunjukkan bahwa X adalah nama larik, 1 adalah nilai indeks, 10 menunjukkan nilai
integer. Jika nilai ke-2 dari larik X akan ditampilkan, maka dalam pascal penulisannya
menggunakan statemen
Writeln (X[2]);
Array dalam program pascal, banyak dipergunakan dalam statemen-statemen
pengulangan misalnya dalam statemen For...to...do dengan menggunakan variabel
indeks.
1. Contoh 1:
Program Larik1;
uses wincrt;
var data:array[1..20] of integer;
m,n,i : integer;
Begin
Write('Banyaknya data : '); readln(n);
for i:=1 to n do
begin
write('Data ke-',i,'= ');readln(data[i]);
end;
Write('Ingin melihat data ke : ');
readln(m);
write('Data Ke-',m,' = ',data[m]);
end.
Output :

2. Contoh 2:
program max_min;

25
uses wincrt;
var
bil:array[1..100] of integer;
terbesar :integer;
terkecil :integer;
i,n :integer;
begin
write(' Ada berapa bilangan =');readln(n);
writeln;
for i:= 1 to n do
begin
write(' Bilangan ke ',i,' = ');
readln(bil[i]);
end;
terbesar:=bil[1];
terkecil:=bil[1];
for i:= 2 to n do
if bil[i] > terbesar then terbesar:=bil[i]
else
if bil[i] < terkecil then
terkecil:=bil[i];
writeln(' -----------------');
writeln(' Bilangan terbesar =',terbesar);
writeln(' Bilangan terkecil =',terkecil);
readln;
end.
Output:

26
2. Array Berdimensi Dua
Array (larik) berdimensi dua mewakili suatu bentuk tabel atau matrik, yaitu indeks yang
pertama dapat menunjukkan baris dan indeks yang kedua menunjukkan kolom dari tabel
atau matriks. Bentuk penulisan array berdimensi dua adalah sebagai berikut :
Nama_larik : Array [tipe-indeks1] of array [tipe-indeks2] of tipe larik
Atau
Nama_larik : Array [tipe-indeks1,tipe-indeks2] of tipe-larik
Contoh
X : array [1..3,1..4] of integer
X menunjukkan suatu larik yang mempunyai jumlah baris maksimum 3 baris dan jumlah
kolom maksimum 4 kolom.
1. Contoh 1:
program matriks;
uses wincrt;
var
tabel:array[1..3] of array [1..4] of integer;
i,j,n,m:integer;
begin
write('Masukkan jumlah baris = '); readln(n);
write('Masukkan jumlah kolom = '); readln(m);
writeln;
for i:= 1 to n do
begin
for j:= 1 to m do
begin
write ('data [',i,',',j,'] = ');
readln(tabel[i,j]);
end;
end;
writeln;
writeln('**** MATRIKS ****');
for i:= 1 to n do
begin
27
for j:= 1 to m do
write (tabel[i,j],' ':5);
writeln;
end;
end.
Output:

2. Contoh 2:
program perkalian_matriks;
uses wincrt;
type
larik=array [1..25, 1..25] of integer;
var
a,b,c:larik;
i,j,k,m,n,p:byte;
begin
writeln('PROGRAM PERKALIAN MATRIKS');
writeln('*************************');
write('Baris Matriks Pertama = '); readln(m);
write('Kolom matriks pertama dan Baris Matriks kedua = '); readln(n);
write('Kolom Matriks kedua = '); readln(p);
writeln;
writeln('Elemen-Elemen Matriks Pertama');
for i:= 1 to m do
begin
for j:=1 to n do

28
begin
write('A[',i,',',j,'] = ');
readln(a[i,j]);
end;
end;
writeln;
writeln('Elemen-Elemen matriks kedua');
for i:= 1 to n do
begin
for j:= 1 to p do
begin
write('B[',i,',',j,'] = ');
readln(b[i,j]);
end;
end;
writeln;
writeln('Hasil Kali dua Matriks');
for i:= 1 to m do
begin
for j:= 1 to p do
begin
c[i,j]:=0;
for k:=1 to p do
c[i,j]:=c[i,j]+a[i,k]*b[k,j];
end;
end;
writeln;
for i:= 1 to m do
begin
for j:= 1 to p do
write(c[i,j],' ');
writeln;
end;
end.
29
Output:

30
BAB VII
RECORD

Tipe data ini merupakan perluasan dari tipe data Array, yaitu karena pada array
masing-masing komponennya harus menggunakan tipe data yang sama, maka pada
record hal itu tidak berlaku lagi. Artinya diperbolehkan untuk menggunakan tipe data
yang berbeda pada masing-masing komponen (field) dari record tersebut. Pendeklarasian
record :
Type
Nama_record = record
Field1: tipe data1 ;
Field2: tipe data2 ;

Fieldn: tipe datan ;


End ;
Contoh :
Type Barang = record
Nama : string[20] ;
Jenis : string [20]
Jumlah : integer ;
End ;
Memasukkan data ke dalam record :
Untuk memberikan nilai dari masing-masing field maka kita harus menuliskan
Nama_record.field := (nilainya); Misalkan : dari contoh diatas kita akan mengisikan
nama barang dengan Piring, jenis barang yaitu barang pecah belah dan jumlah barang 3
lusin maka kita harus menuliskan pada program utama.
Barang.Nama := Piring ;
Barang.Jenis := Pecah belah ;
Barang.Jumlah:= 36 ;
Nilai-nilai dari field ini akan disimpan dalam record. Untuk melihat apakah benar data
yang dimasukkan telah tersimpan dalah ecord maka pada var kita deklarasikan suatu
variable misal :
X : array[1..n] of Nama_record ; dari soal di atas yaitu

31
X : array[1..n] of Barang ;
Maka apabila nanti kita lakukan pemanggilan dengan mengetikkan
Write(Barang[i].nama),
data dari field yang tersimpan dalam record tersebut akan ditampilkan.
Statement WITH DO
Dengan menggunakan statement with do, kita tidak perlu untuk menggunakan pengenal.
Contoh:
With mahasiswa do
Begin
Write(Masukkan NIM = );readln(nim);
End;
Type data record juga dapat berupa type data record lainnya
Contoh :
Pegawai = Record
Tgl masuk : Tgl;
Alamat : almt:
End;

Record Bervariasi
Kondisi ini tergantung pada suatu kondisi case. Field yang bervariasi letaknya setelah
field yang tetap.
Contoh:
Tipe Bacaan = (buku teks, majalah)
Bacaan = Record
KodePerpus : string[7];
TglBeli : string [8];
CaseType: type bacaan of
Majalah: (nomor : string[10]);
BukuTeks : (Pengarang : string ; edisi : byte)
End;
Contoh 1:
program record;
uses wincrt;
type

32
mahasiswa=record
nama:string [20];
UTS,UAS:integer;
end;
var
mhs: mahasiswa;
Grade : char;
begin
clrscr ;
write (' Masukan Nama : ' ) ; readln (mhs.nama) ;
write(' Nilai UTS : ' ); readln (mhs.UTS);
Write( ' Nilai UAS : ' ) ; readln (mhs.UAS);
writeln;
writeln (' Nama : ',mhs.nama);
writeln (' Nilai akhir : ',(mhs.UTS+mhs.UAS)/2:2:2);
begin
if mhs.UTS*mhs.UAS/2 >=80 then Grade:='A'
else
if mhs.UTS*mhs.UAS/2 >=60 then Grade:='B'
else
if mhs.UTS*mhs.UAS/2 >=50 then Grade:='C'
else
if mhs.UTS*mhs.UAS/2 >=40 then Grade:='D'
else
Grade :='E';
writeln (' Grade : ',Grade );
end;
end.
Output Hasil:

Contoh2:
program database;

33
uses wincrt;
type
mahasiswa=record
nama:array[1..20]of string;
nim:array[1..20]of string;
ipk:array[1..20]of real;
end;
var
mhs:mahasiswa;
i,n,no:integer;
begin
write('Masukkan jumlah mahasiswa = ');readln(n);
writeln;
for i:=1 to n do
begin
writeln('masukkan data mahasiswa ke- ',i);
write('Nama mahasiswa = ');readln(mhs.nama[i]);
write('NIM = ');readln(mhs.nim[i]);
write('IPK = ');readln(mhs.ipk[i]);
writeln;
end;
writeln;
writeln('Data Mahasiswa');
writeln;
writeln('=====================================================');
writeln('|','No':5,'Nama':20,'NIM':10,'IPK':10,'|':2);
writeln('=====================================================');
for i:=1 to n do
writeln('|',i:5,mhs.nama[i]:20,mhs.nim[i]:10,mhs.ipk[i]:10:2, '|':2);

writeln('=====================================================');
writeln;
end.
Output Hasil:

34
Contoh 3:
program record1;
uses wincrt;
type
karyawan=record
nama:string[30];
alamat:string[50];
agama:string[10];
end;
var
datakaryawan:karyawan;
begin
{ini adalah bagian untuk memasukkan nilai}
write('Masukkan nama = ');
readln(datakaryawan.nama);
write('Masukkan alamat = ');
readln(datakaryawan.alamat);
write('Masukkan agama = ');
readln(datakaryawan.agama);

{ini cara menampilkan data}

35
writeln('=== Hasil ke-1 ===');
writeln('Nama : ',datakaryawan.nama);
writeln('Alamat: ',datakaryawan.alamat);
writeln('Agama : ',datakaryawan.agama);
writeln;
writeln('=== Hasil ke-2 ===');

{ini cara lain menampilkan data}


with datakaryawan do
begin
writeln('Nama: ',nama);
writeln('Alamat: ',alamat);
writeln('Agama: ',agama);
end;
end.
Output Hasil:

Ternyata baik dengan deklarasi record biasa maupun dengan menggunakan statement
with do memberikan hasil yang sama.
Contoh4:
program record2;
uses wincrt;
type
mhs=record
nim:array [1..20] of real;
nama:array [1..20] of string[30];
alamat:array [1..20] of string[50];

36
IPK:array[1..20] of real;
end;
var
mahasiswa:mhs;
i,n:byte;
begin
clrscr;
write(' Masukkan jumlah data mahasiswa ');
readln(n);
for i:=1 to n do
begin
writeln('========== Data ke-',i,' ===========');
write('NIM : ');readln(mahasiswa.nim[i]);
write('Nama : ');readln(mahasiswa.nama[i]);
write('Alamat : ');readln(mahasiswa.alamat[i]);
write('IPK : ');readln(mahasiswa.IPK[i]);
writeln;
end;
{ini adalah kode untuk menampilkan data}
writeln('========================================================');
writeln('|','No':5,'NIM':11,'Nama':20,'Alamat':20,'IPK':10,'|':5);
writeln('========================================================');
with mahasiswa do
begin
for i:=1 to n do
begin
writeln('|',i:5,nim[i]:11:0,nama[i]:20,alamat[i]:20,IPK[i]:10:2,'|':5)
end;
end;
writeln('========================================================');
end.
Output Hasil:

37
Contoh 5:
program record3;
uses wincrt;
type
mhs=record
nim:array [1..20] of real;
nama:array [1..20] of string[30];
alamat:array [1..20] of string[50];
IPK:array[1..20] of real;
end;
var
mahasiswa:mhs;
i,n,no:byte;
IPK1,NIM1:real;
nama1,alamat1:string[30];
pilih,tekan:char;
begin
clrscr;
write(' Masukkan jumlah data mahasiswa ');
readln(n);
for i:=1 to n do

38
begin
writeln('========== Data ke-',i,' ===========');
write('NIM : ');readln(mahasiswa.nim[i]);
write('Nama : ');readln(mahasiswa.nama[i]);
write('Alamat : ');readln(mahasiswa.alamat[i]);
write('IPK : ');readln(mahasiswa.IPK[i]);
writeln;
end;
{ini adalah kode untuk menampilkan data}
writeln('=========================================================');
writeln('|','No':5,'NIM':11,'Nama':20,'Alamat':20,'IPK':10,'|':5);
writeln('=========================================================');
with mahasiswa do
begin
for i:=1 to n do
begin
writeln('|',i:5,nim[i]:11:0,nama[i]:20,alamat[i]:20,IPK[i]:10:2,'|':5)
end;
end;
writeln('=========================================================');
{program pencarian data}
write(' Apakah Anda ingin mencari data tertentu(y/n)?');readln(pilih);
writeln;
case pilih of
'y':begin
tekan:='Y';
while upcase(tekan)='Y' do
begin
clrscr;
writeln;
writeln('MENU PILIHAN');
writeln;
writeln('[1] NAMA');
writeln('[2] NIM');

39
writeln('[3] ALAMAT');
writeln('[4] IPK');
writeln;
write('Pilihan Anda : ');readln(no);
case no of
1:begin
write('Masukkan Nama mahasiswa : ');readln(nama1);
writeln;

writeln('=======================================================
=====');
writeln('|','No':5,'NIM':11,'Nama':20,'Alamat':20,'IPK':10,'|':5);

writeln('=======================================================
=====');
for i:=1 to n do
if(nama1=mahasiswa.nama[i]) then
begin

writeln('|',i:5,mahasiswa.nim[i]:11:0,mahasiswa.nama[i]:20,mahasiswa.alamat[i]:20,
mahasiswa.IPK[i]:10:2,'|':5);
end;

writeln('=======================================================
=====');
writeln;
end;
2:begin
write('Masukkan Nim mahasiswa : ');readln(nim1);
writeln;

writeln('=======================================================
=====');
writeln('|','No':5,'NIM':11,'Nama':20,'Alamat':20,'IPK':10,'|':5);

40
writeln('=======================================================
=====');
for i:=1 to n do
if(nim1=mahasiswa.nim[i]) then
begin

writeln('|',i:5,mahasiswa.nim[i]:11:0,mahasiswa.nama[i]:20,mahasiswa.alamat[i]:20,
mahasiswa.IPK[i]:10:2,'|':5);
end;

writeln('=======================================================
=====');
writeln;
end;
3:begin
write('Masukkan alamat mahasiswa : ');readln(alamat1);
writeln;

writeln('========================================================
====');
writeln('|','No':5,'NIM':11,'Nama':20,'Alamat':20,'IPK':10,'|':5);

writeln('=======================================================
=====');
for i:=1 to n do
if(alamat1=mahasiswa.alamat[i]) then
begin

writeln('|',i:5,mahasiswa.nim[i]:11:0,mahasiswa.nama[i]:20,mahasiswa.alamat[i]:20,
mahasiswa.IPK[i]:10:2,'|':5);
end;

41
writeln('=======================================================
=====');
writeln;
end;
4:begin
write('Masukkan IPK mahasiswa : ');readln(IPK1);
writeln;
writeln('=======================================================
=====');
writeln('|','No':5,'NIM':11,'Nama':20,'Alamat':20,'IPK':10,'|':5);

writeln('=======================================================
=====');
for i:=1 to n do
if(IPK1=mahasiswa.IPK[i]) then
begin
writeln('|',i:5,mahasiswa.nim[i]:11:0,mahasiswa.nama[i]:20,mahasiswa.alamat[i]:20,
mahasiswa.IPK[i]:10:2,'|':5);
end;
writeln('=======================================================
=====');
writeln;
end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);
end;
end;
end;
end.
Output Hasil:
Memasukkan data:

42
Pencarian data:

SUB RUTIN
Ada dua macam sub rutin dalam pemrogaman pascal, yaitu Procedure dan Function.
Mengapa dalam pemrogaman Pascal diperlukan adanya suatu subrutin? Jawabannya
adalah dengan menggunakan sub rutin, Program Pascal yang besar akan dipecah
menjadi sub program yang lebih kecil sehingga program akan akan lbih mudah dibaca.
Sintak penulisan Procedure:
Procedure nama_procedure (parameter1,parameter2,,parameter-n);

43
Begin
(pernyataan-pernyataan)
End.
Sintak penulisan Function:
Function nama_fungsi (parameter1,parameter2,,parameter-n):tipe kembalian;
Begin
(pernyataan-pernyataan)
End.

44
BAB VIII
PROCEDURE

1. Variabel Global dan Variabel Lokal


Variabel Global adalah variabel yang dapat dikenali diseluruh bagian program
biasanya variabel ini merupakan variabel yang dideklarasikan pada deklarasi program
umum.
Variabel Lokal adalah variabel yang dikenal pada lingkup yang lebih sempit
dari pada variabel global. Biasanya dideklarasikan dalam procedure ataupun function.
2. Ada 2 parameter yang berlaku dalam sebuah procedure, yaitu :
a. Parameter Formal yaitu parameter yang dideklarsikan mengikuti pendeklarasian
program utama
b. Parameter Aktual yaitu parameter yang dituliskan mengikuti pemanggilan procedure
Contoh:
Procedure coba(b:string;x:string);
Begin
(pernyataan-pernyataan)
End.
Catatan: untuk beberapa parameter dengan tipe sama, maka penulisannya dipisahkan
dengan tanda koma (,).
Contoh1:
program prosedure1;
uses wincrt;
procedure tanya_hitung;
var x,y:real;
begin
write('Nilai X = '); readln(x);
y:=x+x;
writeln('Nilai Y = ',y:0:2);
end;

{ini adalah program utama}


begin
tanya_hitung

45
end.
Output Hasil:

Contoh2:
program konversi_fahrenheit;
uses wincrt;
var
f,c:real;
procedure konversi;
begin
f:=(5/9)*c+32;
writeln('suhu dalam celcius : ',c:0:2, 'hasil konversi : ',f:0:2);
end;

begin
write('Masukkan suhu dalam celcius : ');readln(c);
konversi;
end.
Output Hasil:

Contoh3:
program konversi_suhu;
uses wincrt;
procedure konversi1(c:real);
var f:real;
begin
f:=(5/9)*c+32;
writeln('suhu dalam celcius : ',c:0:2, 'hasil konversi : ',f:0:2);
end;

46
var
suhu:real;
begin
write('masukkan suhu dalam celcius : ');readln(suhu);
konversi1(suhu);
end.
Output Hasil:

Contoh4:
program menghitung_luas_volume;
uses wincrt;
var
no,pilihan:byte;
pilih,tekan:char;
L,V:real;
procedure luas_segitiga;
var a,t:real;
begin
write('Masukkan alas segitiga = ');readln(a);
write('Masukkan tinggi segitiga = '); readln(t);
L:=(1/2)*a*t;
writeln(' Luas segitiga = ',L:0:2);
end;

procedure luas_persegi;
var s:real;
begin
write('Masukkan panjang sisi persegi = ');readln(s);
L:=s*s;
writeln(' Luas persegi = ',L:0:2);
end;

47
procedure luas_persegipanjang;
var p,l:real;
begin
write('Masukkan panjang persegi panjang = ');readln(p);
write('Masukkan lebar persegi panjang = '); readln(l);
L:=p*l;
writeln(' Luas persegi panjang = ',L:0:2);
end;

procedure luas_lingkaran;
var r,phi:real;
begin
write('Masukkan jari-jari lingkaran = ');readln(r);
phi:=3.14;
L:=phi*r*r;
writeln(' Luas lingkaran = ',L:0:2);
end;

procedure volume_balok;
var p,l,t:integer;
begin
write('Masukkan panjang balok = ');readln(p);
write('Masukkan lebar balok = ');readln(l);
write('Masukkan tinggi balok = ');readln(t);
V:=p*l*t;
writeln(' Volume Balok = ',V:0:2);
end;

procedure volume_limassegiempat;
var p,l,t:integer;
begin
write('Masukkan panjang limas segiempat = ');readln(p);
write('Masukkan lebar limas segiempat = ');readln(l);

48
write('Masukkan tinggi limas segiempat = ');readln(t);
V:=(1/3)*p*l*t;
writeln(' Volume limas segiempat = ',V:0:2);
end;

procedure volume_bola;
var r:integer; phi:real;
begin
write('Masukkan jari-jari bola = ');readln(r);
phi:=3.14;
V:=(4/3)*phi*r*r*r;
writeln(' Volume bola = ',V:0:2);
end;
begin
write('Apakah Anda ingin menghitung luas dan volume (y/n)?');readln(pilih);
writeln;
case pilih of
'y':begin
tekan:='Y';
while upcase(tekan)='Y' do
begin
clrscr;
writeln('==============================');
writeln('PILIHAN MENU');
writeln('[1] Menghitung Luas');
writeln('[2] Menghitung Volume');
writeln('==============================');
write('Ketikkan nomor pilihan Anda = ');readln(no);
case no of
1:begin
writeln('==============================');
writeln('PILIHAN MENU LUAS');
writeln('[1] Segitiga');
writeln('[2] Persegi');

49
writeln('[3] Persegi Panjang');
writeln('[4] Lingkaran');
writeln('==============================');
write('Ketikkan nomor pilihan Anda = ');readln(pilihan);
if (pilihan=1) then luas_segitiga else
if (pilihan=2) then luas_persegi else
if (pilihan=3) then luas_persegipanjang else
luas_lingkaran;
end;
2:begin
writeln('==============================');
writeln('PILIHAN MENU VOLUME');
writeln('[1] Balok');
writeln('[2] Limas Segi Empat');
writeln('[3] Bola');
writeln('==============================');
write('Ketikkan nomor pilihan Anda = ');readln(pilihan);
if (pilihan=1) then volume_balok else
if (pilihan=2) then volume_limassegiempat else
volume_bola;
end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);
end;
end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);

end.
Output Hasil:

50
51
BAB IX
FUNGSI

Struktur dari fungsi ini hampir sama dengan procedur hanya saja function harus
dideklarasikan beserta tipe datanya dan fungsi ini adalah mengembalikan nilai sehingga
tipe data dalam sebuah function menunjukkan tipe dari data akhir dari deklarasi sebuah
fungsi.
Deklarasi:
Function Nama_Fungsi(formal parameter) : tipe kembalian ;
Contoh :
Function MAX(x,y:integer):integer;
Begin
If x<y then max:=y
Else max:=x;
End;
Untuk memanggil fungsi tersebut adalah
P:=MAX(x,y)
Perbedaan Procedure dan Function:
1. Pada function nilai yang dikirim balik/tipe kembaliannya terdapat nama fungsinya,
sedangkan pada prosedur terdapat pada parameter yang dikirimkan sebagai acuan.
Contoh : Fungsi Hitung;
Hitung:=A+B; (Nama fungsi berisi nilai yang akan dikirim).
2. Karena nilai balik ada pada nama fungsinya maka Function dapat digunakan
langsung untuk mencetak hasilnya. Misal : writeln Hitung(X,+,Y,=) ;
Keuntungan menggunakan deklarasi procedure atau function:
1. Program mudah dipahami
2. Program mudah diperbaiki jika terjadi kesalahan (error)
Jika terdapat error, baik sintax error, running error ataupun output error, maka akan mudah
ditelusuri dimana letak errornya apakah pada program utama atau pada procedure hitung
atau pada waktu menentukan frekuensi.
3. Program mudah dimodifikasi atau dikembangkan.
4. Program akan menjadi lebih ringkas.
Jika terdapat suatu procedure yang akan digunakan berulang kali, maka kita hanya perlu
untuk memanggil nama dari procedure atau fungsi tersebut.
52
REKURSIF

Rekursif merupakan suatu proses untuk memanggil dirinya sendiri. Dengan


keistimewaan yang dimiliki Turbo Pascal ini, Procedure atau Function dapat
memanggil dirinya sendiri.
Contoh Program:
Program fungsi_faktorial;
Uses wincrt;
{subrutin faktorial}
Function faktorial(n:integer):longint;
Begin
If n<=1 then faktorial:=1
Else faktorial:=n*faktorial(n-1);
End;
{program utama}
Var
Angka:integer;
Begin
Write(Masukkan angka = );readln(angka);
Write(angka. ! = ,faktorial(angka));
End.
Hasil Output:

Contoh 2:
Program fungsi_konversi_suhu;
Uses wincrt;
{subrutin konversi}
Function reamur(c:real):real;
Begin
reamur:=(4/5)*c;
End;

53
Function fahrenheit(c:real):real;
Begin
fahrenheit:=(9/5)*c+32;
End;
Function kelvin(c:real):real;
Begin
kelvin:=c+273;
End;
{program utama}
Var
Suhu:real;
Begin
Write(Masukkan suhu dalam celcius = );
Readln(suhu);
Writeln(suhu:3:2,C =,reamur(suhu):3:2,R);
Writeln(suhu:3:2,C =,fahrenheit(suhu):3:2,F);
Writeln(suhu:3:2,C =,kelvin(suhu):3:2,K);
End.
Output Hasil

Contoh 3:
program fungsi_pangkat;
uses wincrt;
function pangkat(x:real; n:integer):real;
begin
if n= 0 then pangkat:=1
else
pangkat:=x*pangkat(x,n-1);
end;
var
d:real;

54
m:integer;
begin
write('Masukkan nilai = ');readln(d);
write('masukkan pangkat = ');readln(m);
write('Hasil = ',pangkat(d,m):0:2);
end.
program visualisasi_rekursif;
uses wincrt;
var maxrekursi:integer;
procedure rekursi(n:integer);
begin
if (n=maxrekursi) then
write ('Anda masuk instance ke-',maxrekursi,' paling dalam')
else
begin
write('Anda masuk instance ke-',n);readln(n);
rekursi(n+1);
write('anda kembali ke instance ke-');readln(maxrekursi);readln;
end;
end;
begin
writeln('Program Visualisasi Rekursi');
writeln('===========================');
write('Jumlah maksimum rekursi = ');readln(maxrekursi);
rekursi(1);
writeln('kembali ke program utama');
end.
Output Hasil:

Contoh 4:
program menu_luas;

55
uses wincrt;
Const pi=3.14;
var
pilih:byte;
a,c,d,t,r:real;
function segitiga(a,t:real):real;
begin
segitiga:=(a*t)/2;
end;
function lingkaran(r:real):real;
begin
lingkaran:=(pi*r*r);
end;
function trapesium(c,d,t:real):real;
begin
trapesium:=(c+d)*t/2;
end;
procedure menu;
begin
writeln('======================');
writeln(' PILIHAN MENU ');
writeln;
writeln('[1] Luas Segitiga ');
writeln('[2] Luas Lingkaran ');
writeln('[3] Luas Trapesium Sama Kaki ');
writeln('[4] Exit ');
writeln;
writeln('======================');
write('ketikkan nomor pilihan anda = ');readln(pilih);
writeln;
case pilih of
1:begin
writeln('masukkan panjang alas (cm) = ');readln(a);
writeln('masukkan tinggi (cm) = ');readln(t);

56
write('Luas Segitiga = ',segitiga(a,t):2:2);
end;
2:begin
writeln('masukkan jari-jari (cm) = ');readln(r);
write('Luas Lingkaran = ',lingkaran(r):2:2);
end;
3:begin
writeln('masukkan panjang alas (cm) = ');readln(c);
writeln('masukkan panjang atas (cm) = ');readln(d);
writeln('Masukkan tinggi (cm) = ');readln(t);
write('Luas Trapesium = ',trapesium(c,d,t):2:2);
end;
4:begin
exit;
end;
end;end;
begin
menu;
end.
Output Hasil:

Parameter CH:N

57
Digunakan untuk membentuk format tampilan char selebar n karakter dengan blank di
muka sebanyak n-1.
Contoh:
program format_char;
uses wincrt;
var
ket1, ket2:char;
begin
ket1:='Z';
ket2:='A';
writeln(ket1:5,ket2:3);
end.
Output Hasil :

5 3
k k
Parameter S:N
a a
Digunakan untuk
r membentuk
r format tampilan string dengan lebar n karakter.
Contoh: a a
k k
program format_string;
uses wincrt;t t
var e e
r
kata:string[6]; r

begin
write('Masukkan kata = ');readln(kata);
writeln('katanya = ', kata:10);
end.

Output Hasil :

58
Parameter I:N
Digunakan untuk membentuk format tampilan integer dengan lebar n digit rata sebelah
kanan.
Contoh
program format_integer;
uses wincrt;
var
N:integer;
begin
write('Masukkan angka = ');readln(N);
writeln('angkanya = ', N:10);
end.
Outputn Hasil:

Parameter R:N
Digunakan untuk membentuk format tampilan numerik real dengan lebar n digit rata
sebelah kanan.
program format_real;
uses wincrt;
var
N:real;
begin
write('Masukkan angka = ');readln(N);
writeln('angkanya = ', N:5:3);
end.

59
Output Hasil:

Prosedur R:N:M
Digunakan untuk membentuk format tampilan numerik REAL dengan lebar n digit rata
sebelah kanan, dengan m digit angka dibelakang koma tidak dalam bentuk eksponensial
Contoh:
program format_real2;
uses wincrt;
var
N:real;
begin
write('Masukkan angka = ');readln(N);
writeln('angkanya = ', N:12:3);
end.
Output Hasil :

PENGATURAN LETAK DI LAYAR


procedure CLRSCR
Procedure standar ini digunakan untuk membersihkan layar dari tampilan tampilan
sebelumnya dan meletakkan kursor di posisi ujung kiri atas dari layar.
Procedure standar ini bila digunakan harus menyebutkan terlebih dahulu unit standar
WINCRT, karena procedure ini ada di dalam unit tersebut.
Contoh:
program prosedur_clearscreen;
uses wincrt;
begin

60
writeln('kata 1 ');
writeln('kata 2 ');
writeln('tekan enter ');
readln;
clrscr;
writeln('kata 1 baru ');
end.
Output Hasil:
Sebelum menekan enter Setelah menekan enter

Prosedur GOTOXY
Prosedur standar ini digunakan untuk meletakkan kursor di posisi layar yang
ditunjukkan oleh nilai XPOS dan YPOS. Nilai XPOS menunjukkan posisi sumbu X
(posisis horisontal atau posisi kolom di antara kolom 1 s.d 80). Nilai YPOS
menunjukkan posisi sumbu Y (posisis vertikal atau posisi baris di antara kolom 1 s.d
25).
Prosedur standar ini bila digunakan harus melibatkan unit WINCRT.
Contoh:
program latih_gotoxy;
uses wincrt;
begin
writeln('ini posisi pertama di [0,0]');
GOTOXY(5,4);
writeln(' ini posisi kedua di [5,4]');
end.
Output Hasil:

61
Prosedur CLREOL
Prosedur standar ini digunakan untuk menghapus semua karakter dalam satu baris
disebelah kanan posisi kursor tanpa mengubah posisi dari kursor.
Prosedur standar ini bila digunakan harus melibatkan uses WINCRT.
Contoh:
program latihan_clreol;
uses wincrt;
var angka:integer;
begin
clrscr;
gotoxy (5,2);
writeln('posisi saat ini (5,2)');
gotoxy(5,4);
writeln('posisi saat ini (5,4)');
gotoxy(5,6);
write('masukkan bilangan bulat keberuntunganmu = ' );
readln(angka);
gotoxy(5,2);
clreol;
writeln('SELAMAT ANDA SUKSES');
end.

Output Hasil:
Mula-Mula

Selanjutnya

62
Prosedur CONCAT
Di dalam bahasa Pascal, penggabungan dua buah string atau lebih dapat
dilakukan dengan dua cara, yaitu dengan menggunakan operator plus dan fungsi
CONCAT, yang memiliki bentuk deklarasi sebagai berikut:
Function Concat [,s1,...,sn]:string:string;
Contoh:
program gabung_string;
uses wincrt;
var kata1,kata2,spasi:string;
begin
write('kata 1 = ');readln(kata1);
write('kata 2 = ');readln(kata2);
spasi:=' ';
writeln('cara pertama');
writeln('Hasil penggabungan = ',kata1+spasi+kata2);
writeln('cara kedua');
writeln('hasil penggabungan = ',concat(kata1,spasi,kata2));
end.
Output Hasil:

Prosedur delete
Untuk melakukan penghapusan substringdari suatu string, dapat digunakan prosedur
delete yang memiliki bentuk deklarasi sebagai berikut.
Procedure Delete(Var S:String; i:integer; n:integer);
Prosedure tersebut akan menghapus substring sebanyak n karakter dari string S dimulai
dari karakter ke i.
Contoh:
Program hapus_substring;

63
Uses wincrt;
var kata:string[10];
i,n:integer;
begin
write('masukkan kata = ');readln(kata);
write('banyak karakter yang akan dihapus = ');readln(n);
write('Mulai indeks berapa =');readln(i);
writeln('hasil hapus substring =');
delete(kata,n,i);
write(kata);
end.
Output Hasil

Fungsi COPY
Proses penyalinan string dilakukan dengan fungsi copy yang memiliki bentuk deklarasi
sebagai berikut:
Function Copy(S:string; index:i; n:integer):string;
Fungsi akan melakukan penyalinan substring sebanyak n karakter dimulai dari posisi
atau index ke-i.
Contoh:
program copy_substring;
uses wincrt;
var
kata, hasil:string;
i,n:byte;
begin
write('masukkan kata = ');readln(kata);
write('banyak karakter yang akan dicopy = ');readln(n);
write('Mulai indeks ke - ');readln(i);
hasil:=copy(kata,n,i);
writeln('Hasil copy = ',hasil);

64
end.

Output Hasil

Prosedur insert
Untuk melakukan penyisipan substring ke dalam string tertentu adalah dengan
menggunakan prosedur INSERT, yang memiliki deklarasi sebagai berikut:
Procedure insert(s1:string; var s2:string;i:integer);
Prosedur ini akan menyisipkan string S1 ke dalam s2pada posisi indeks ke i
Contoh
Program insert_substring;
Uses wincrt;
var
kata1,kata2:string;
i:byte;
begin
kata1:='EM';
kata2:='SARANG';
writeln('Kata1: ',kata1);
writeln('kata2 : ',kata2);
writeln('Hasil Penyisipan');
insert(kata1,kata2,2);
write(kata2);
end.
Output hasil

65
BAB X
PARAMETER
Parameter CH:N
Digunakan untuk membentuk format tampilan Char selebar n karakter dengan blank
dimuka sebanyak n-1.
Contoh:
program format_char;
uses wincrt;
var
ket1, ket2:char;
begin
ket1:='Z';
ket2:='A';
writeln(ket1:5,ket2:3);
end.
Bila program dijalankan maka akan keluar output hasil:

5 3
k k
a a
Parameter
r S:N r
a
Digunakan untuka membentuk format tampilan string dengan lebar n karakter.
k k
Contoh: t t

programe format_string;
e
r r
uses wincrt;
var kata:string[6];
begin
write('Masukkan kata = ');
readln(kata);
writeln('Katanya = ',kata:10);
end.
Output hasil:

66
Parameter I:N
Digunakan untuk membentuk format tampilan integer dengan lebar N digit.
Contoh:
program format_integer;
uses wincrt;
var N:integer;
begin
write('Masukkan angka = ');
readln(N);
writeln('Angkanya = ',N:10);
end.
Output hasil:

Parameter R:N
Parameter digunakan untuk membentuk format tampilan numerik real dengan lebar n
digit rata sebelah kanan.
Contoh:
program format_real1;
uses wincrt;
var N:real;
begin
write('Masukkan angka = ');
readln(N);
writeln('Angkanya = ',N:12);
end.
Output hasil:

67
Parameter R:N:M
Parameter digunakan untuk membentuk format tampilan numerik real dengan lebar n
digit rata sebelah kanan, dengan m digit angka dibelakang koma tidak dalam bentuk
eksponensial.
Contoh:
program format_real2;
uses wincrt;
var N:real;
begin
write('Masukkan angka = ');
readln(N);
writeln('Angkanya = ',N:12:3);
end.
Output hasil:

PENGATURAN LETAK DILAYAR


Prosedur CLRSCR
Prosedur standar ini digunakan untuk membersihkan layar dari tampilan tampilan
sebelumnya dan meletakkan kursor di posisi ujung kiri atas dari layar. Prosedur standar
ini bila digunakan harus menyebutkan terlebih dahulu unit standar WINCRT, karena
prosedur ini ada di dalam unit tersebut.
Contoh:
program prosedur_clearscreen;

68
uses wincrt;
begin
writeln('Kata 1');
writeln('Kata 2');
writeln('Tekan Enter');
readln;
clrscr;
writeln('Kata 1 baru');
end.
Output hasil:
Mula-mula

Setelah menekan tombol Enter string Kata 1 baru berada di posisi ujung atas kiri

Prosedur GOTOXY
Prosedur standar ini digunakan untuk meletakkan kursor di posisi layar yang
ditunjukkan oleh nilai XPOS dan YPOS. Nilai XPOS menunjukkan posisi sumbu X
(posisi horisontal atau posisi kolom diantara kolom 1 s.d. 80). Nilai YPOS menunjukkan
posisi sumbu Y (posisi vertikal atau posisi baris diantara 1 s.d. 25). Prosedur standar ini
bila digunakan harus melibakan unit WINCRT.
Contoh:
Program latih_gotoxy;
69
Uses wincrt;
Begin
Clrscr;
Writeln(Ini posisi pertama di [0,0]);
GOTOXY(5,4);
Writeln(Ini posisi kedua di [5,4]);
End.
Output hasil:

Baris 4

Kolom 5

Prosedur CLREOL
Prosedur standar ini digunakan untuk menghapus semua karakter dalam satu baris
disebelah kanan posisi kursor tanpa mengubah posisi dari kursor. Prosedur standar ini
bila digunakan harus melibatkan unit WINCRT.
Contoh:
program latihan_clreol;
uses wincrt;
var angka:integer;
begin
clrscr;
GOTOXY(5,2);
writeln('Posisi saat ini (5,2)');
GOTOXY(5,4);
writeln('Posisi ini di (5,4)');
GOTOXY(5,6);
70
write('Masukkan bil. bulat keberuntunganmu = ');
readln(angka);
GOTOXY(5,2);
clreol;
writeln('SELAMAT ANDA SUKSES');
end.
Output hasil:
Mula-mula

Selanjutnya:

Fungsi CONCAT
Di dalam bahasa Pascal, penggabungan dua buah string atau lebih dapat diakukan
dengan 2 cara, yaitu dengan menggunakan operator plus dan fungsi CONCAT, yang
memeiliki bentuk deklarasi sebagai berikut:
function Concat(s1 [, s2,..., sn]: String): String;
Contoh:
program gabung_string;
uses wincrt;
var kata1,kata2:string;
spasi:string[1];

71
begin
write('Kata 1 = ');
readln(kata1);
write('kata 2 = ');
readln(kata2);
spasi:=' ';
writeln('Cara Pertama');
writeln('Hasil penggabungan = ',kata1+spasi+kata2);
writeln('Cara Kedua');
writeln('Hasil penggabungan = ',concat(kata1,spasi,kata2));
end.
Output hasil:

Prosedur DELETE
Untuk melakukan penghapusan substring dari suatu string, dapat digunakan prosedur
DELETE yang memiliki bentuk deklarasi sebagai berikut.
procedure Delete(var S: String; i: Integer; n:Integer);
prosedur tersebut akan menghapus substring sebanyak n karakter dari string S, dimulai
dari karakter ke-i.
Contoh:
program hapus_substring;
uses wincrt;
var kata:string[10];
n,i:integer;
begin
write('Masukkan kata = ');
readln(kata);
write('Banyak karakter yang akan dihapus = ');
readln(n);

72
write('Mulai indeks berapa = ');
readln(i);
writeln('Hasil hapus substring = ');
delete(kata,i,n);
GOTOXY(5,5);
writeln(kata);
end.
Output hasil:

Fungsi COPY
Proses penyalinan string dilakukan dengan fungsi COPY yang memiliki bentuk
deklarasi sebagai berikut:
function Copy(S: String; Index: i; n: Integer): String;
fungsi ini akan melakukan penyalinan substring sebanyak n karakter dimulai dari posisi
atau indeks ke-i.
Contoh:
program copy_substring;
uses wincrt;
var kata,hasil:string;
n,i:byte;
begin
write('Kata = ');readln(kata);
write('banyak karakter yang akan dicopy = ');readln(n);
write('mulai indeks ke - ');readln(i);

73
hasil:=copy(kata,i,n);
writeln('Hasil copy = ',hasil);
end.
Output hasil:

Prosedur INSERT
Untuk melakukan penyisipan substring ke dalam string tertentu adalah dengan
menggunakan prosedur INSERT, yang memiliki deklarasi sebagai berikut:
procedure Insert(S1: String; var S2: String; i: Integer);
prosedur ini akan menyisipkan string S1 ke dalam S2 pada posisi indeks ke-i.
Contoh:
program insert_string;
uses wincrt;
var kata1,kata2:string;
i:byte;
begin
kata1:='EM';
kata2:='SARANG';
writeln('Kata 1: ',kata1);
writeln('kata 2: ',kata2);
write('Hasil penyisipan = ');
insert(kata1,kata2,2);
write(kata2);
end.
Output hasil:

74
75
BAB XI
DATA FILE

Seringkali pada program-program aplikasi untuk sistem informasi, data perlu disimpan
untuk keperluan penegelolaan lebih lanjut. Bila data yang perlu disimpan mempunyai
volume yang cukup besar, maka penggunaan variabel, larik, atau pointer sudah tidak
tepat lagi, karena variabel, larik, atau pointer menggunakan memori internal komputer,
sehingga tidak cukup untuk menampungnya. Variabel, larik, dan pointer hanya tepat
digunakan untuk menyimpan data yang sedang digunakan untuk proses saja.

Untuk menyimpan data dengan volume yang besar harus digunakan cara yang lain, yaitu
dapat dengan menyimpannya di external memory yang relatif mempunyai kapasitas
penyimpanan lebih besar daripada internal memory serta involatile (tidak hilang bila
aliran listrik terputus, sehingga dapat menyimpan data lebih permanen).

Data yang ada di external memory disimpan dalam bentuk file. File ini dapat diibaratkan
dengan map-map yang berisi dengan data di filling cabinet dan filling cabinet itu sendiri
dapat diibaratkan sebagai simpanan luarnya. Seperti halnya filling cabinet yang dapat
menyimpan beberapa map, demikian juga dengan disk dapat menyimpan beberapa file.

Suatu file terdiri dari urutan komponen yang mempunyai tipe yang sama. Berbeda
dengan larik yang jumlah komponennya sudah pasti, jumlah komponen dalam file
sifatnya luwes, yaitu dapat ditambah dan dikurangi sewaktu-waktu.

Di dalam bahasa Pascal dikenal 3 macam tipe file, yaitu file teks (text file), file bertipe
(typed file), dan file tak bertipe (untyped file).

Procedure dan Function Standard Untuk Semua Tipe File


Assign (f:file;name:string) : digunakan untuk menghubungkan nama dari external
file ke suatu variabel file.
Rewrite (f[:file; recsize:word]): digunakan untuk membuka file yang baru atau yang
belum pernah ada di disk.
Reset (f[:file; recsize:word]) : digunakan untuk membuka file yang sudah ada.

76
Close (f:file) : digunakan untuk menutup file yang telah dibuka
dengan procedure standard Rewrite, Reset, atau Append
(procedure khusus untuk membuka file teks).
Erase (f:file) : digunakan untuk menghapus suatu external file. Dalam
penggunaanya harus didahului dengan procedure
standard Close.
Rename (f:file;newname:string): digunakan untuk mengganti nama suatu external file.
GetDir (d:byte; var s:string) : digunakan untuk mengetahui direktori yang aktif pada
suatu drive.
ChDir (s:string) : digunakan untuk mengubah posisi dari direktori.
MkDir (s:string) : digunakan untuk membuat suatu direktori.
RmDir (s:string) : digunakan untuk menghapus suatu direktori.
Eof (f:file):boolean : fungsi ini akan menghasilkan status apakah file sudah
berada di posisi akhir dari file atau tidak.
File Teks
File tekas merupakan file yang berisi karakter yang dibentuk dalam baris-
baris dan masing-masing baris dengan end-of-line marker berupa karakter carriage
return dan karakter line feed (CR/LF). Sedangkan akhir dari file ditunjukkan dengan
karakter Ctrl-Z.
Panjang dari tiap-tiap baris dari file teks dapat berbeda-beda, sehingga posisi
dari suatu baris tertentu dari file teks tidak dapat dihutung dan akibatnya file tekas
hanya dapat diakses secara urut.
File teks sebenarnya merupakan file dengan tipe Char, tetapi mempunyai
perbedaan, yaitu nilai yang bukan tipe Char dapat direkam dan dibaca oleh file teks.
Nilai yang bukan tipe Char ini akan secara otomatis dirubah ke atau dari tipe Char.
Deklarasi
var
variabelFile : Text;
begin

end.
Prosedur dan Fungsi Standard File Teks
Append(var f:text); : digunakan untuk membuka file yang telah ada
untuk keperluan menambah data ke dalam file.

77
Write([var f:text;] v1 [v2,,vn]) : digunakan untuk merekam data ke dalam file.
Writeln([var f:text;] v1 [v2,,vn]) : digunakan untuk merekam data ke dalam file dan
memberikan end-of-line marker.
Flush(var f:text) : digunakan untuk segera merekam data yang ada
di dalam buffer ke dalam file teks.
Read([var f:text;] v1 [v2,,vn]) : digunakan untuk membaca satu atau lebih nilai
dari file ke dalam satu variabel atau lebih.
Readln([var f:text;] v1 [v2,,vn]) : kegunaannya sana dengan procedure Read, tetapi
procedure ini akan menggeser pembacaan ke awal
baris beikutnya dalam file.
Eoln[(var f:text)]:boolean : digunakan untuk mengetahui apakah posisi dari
file berada di end-of-line marker atau tidak.
SeekEof[(var f:text)]:boolean : kegunaannya sama dengan Eof, yaitu
menghasilkan status akhir dari file.
SeekEoln[(var f:text)]:boolean : kegunaannya sama dengan Eoln, yaitu
menghasilkan status akhir dari baris.
Contoh program:
Membuat file teks baru
program membuat_teks_baru;
uses wincrt;
var
berkasText: Text;
kodeBrg:string[5];
namaBrg : string[20];
unitBrg:integer;
hargaBrg:real;
lagi:char;
begin
{hubungkan dengan external file}
assign(berkasText,'Barang.txt');
{buka file}
Rewrite(berkasText);
Lagi:='Y';
while upcase(lagi)='Y' do

78
begin
clrscr;
gotoxy(5,6);write('kode barang = ');
gotoxy(5,8) ;Write('Nama Barang = ');
gotoxy(5,10);Write('Unit Barang = ');
gotoxy(5,12);Write('Harga Satuan Barang = ');
gotoxy(27,6) ;readln(kodeBrg);
gotoxy(27,8) ;readln(namaBrg);
gotoxy(27,10);readln(unitBrg);
gotoxy(27,12);readln(hargaBrg);
{rekam di file}
writeln(berkasText,kodebrg:5,namaBrg:20,unitBrg,hargaBrg:10:2);
gotoxy(5,15);write('ada data lagi(Y/T) ? ');readln(lagi);
end;
{tutup file}
close(berkasText);
end.
Output Hasil: Tampilan File Teks baru:

Menampilkan semua isi file


program menampilkan_semua_isi_file;
uses wincrt;
var

79
berkasText : Text;
kodeBrg : String[5];
namaBrg : String[20];
unitBrg : String;
hargaBrg : real;
begin
{hubungkan dengan external file}
Assign(berkasText,'Barang.txt');

{buka file}
Reset(berkasText);
clrScr;
While not(Eof(berkasText)) do
begin
Readln(berkasText,kodeBrg,namaBrg,unitBrg,hargaBrg);
Writeln(kodeBrg,namaBrg:22,unitBrg:7,hargaBrg:10:2);
end;
{tutup file}
close(berkasText);
end.

Output Hasil:

File Bertipe
Berbeda dengan file teks yang hanya dapat diakses secara urut, file bertipe
(typed file) disamping dapat juga diakses secara urut (sequential access), dapat juga
dikases secara acak (random access). Ini berarti komponen-komponen di dalam file
bertipe dapat dibaca atau direkam dari manapun di dalam file.

80
Dalam file bertipe, kita dapat menambahkan variabel terdefinisi dalam unit
standard System untuk menentukan kode akses file bertipe. Adapun kode aksesnya
adalah:
0 read only
1 write only
2 read/write (default)

Deklarasi
var
fileData : File of tipeData;
begin

end.

tipeData dapat berupa integer, real, char, string, array, record, dan sebagainya.

Prosedur dan Fungsi Standard File Bertipe


Write (f,v1[v2,,vn]) : digunakan untuk merekam satu atau lebih nilai ke
dalam file.
Read (f,v1[v2,,v3]) : digunakan untuk membaca satu atau lebih nilai
dari file.
Seek (f; n : longint) : digunakan untuk mengarhkan penunjuk file ke
suatu komponen tertentu, sehingga memungkinkan
kita untuk membaca komponen atau menuliskan
komponen secara acak.
Truncate(f) : digunakan untuk menghapus sejumlah komponen
atau record mulai dari posisi record tertentu.
FilePos(f):longint : digunakan untuk menghasilkan letak posisi
sekarang dari penunjuk file.
FileSize(f):longint : digunakan untuk menghasilkan jumlah dari
komponen atau record yang sudah ada di file.
Fungsi ini harus digunakan setelah file dibuka.

81
Contoh Program:
Membuat file bertipe (typed file) baru
program typed_file;
uses wincrt;
type
mahasiswa = record
nomor : integer;
nama : string[25];
nilai : real;
end;
var
fileMhs : File of mahasiswa;
recordMhs : mahasiswa;
lagi : char;
begin
assign(fileMhs,'MHS.dat');
rewrite(fileMhs);
lagi:='Y';
while upcase(lagi)='Y' do
begin
clrscr;
with recordMhs do
begin
gotoxy(5,6) ;write('Nomor Mahasiswa : ');
gotoxy(5,8) ;write('Nama Mahasiswa : ');
gotoxy(5,10);write('Nilai Mahasiswa : ');
gotoxy(27,6) ;readln(nomor);
gotoxy(27,8) ;readln(nama);
gotoxy(27,10);readln(nilai);
end;
write(fileMhs,recordMhs);
gotoxy(5,15);write('Memasukkan data lagi (Y/T)? ');
readln(lagi);

82
end;
close(fileMhs);
end.
Output hasil:

Menampilkan semua data di file bertipe


program tampil_file_bertipe;
uses wincrt;
type
mahasiswa = record
nomor : integer;
nama : string[25];
nilai : real;
end;
var
fileMhs : File of mahasiswa;
recordMhs : mahasiswa;
begin
assign(fileMhs,'MHS.dat');
reset(fileMhs);
while not(Eof(fileMhs)) do
begin
read(fileMhs,recordMhs);
with recordMhs do
write(nomor:5,nama:17,nilai:10:2);
end;

83
close(fileMhs);
end.
Output Hasil:

program tampil_file_bertipe;
uses wincrt;
type
mahasiswa = record
nomor : integer;
nama : string[25];
nilai : real;
end;
var
fileMhs : File of mahasiswa;
recordMhs : mahasiswa;
i:integer;
begin
assign(fileMhs,'MHS.dat');
reset(fileMhs);
writeln('----------------------------------------------------');
writeln('NIM Nama Nilai ');
writeln('----------------------------------------------------');
with recordMhs do
begin
for i:=1 to filesize(fileMhs) do
begin
seek(fileMhs,i-1);
read(fileMhs,recordMhs);
writeln(nomor,nama:20,nilai:16:2);
end;
end;

84
writeln('----------------------------------------------------');
close(fileMhs);
end.
Output Hasil:

File Tak Bertipe


File tak bertipe (untyped file) adalah channel I/O (Input/Output) level rendah
(low level I/O channel) yang digunakan untuk mengakses langsung suatu file di disk
tidak peduli bagaimana tipe dan strukturnya.
Deklarasi
FileData : File;
Karena file tak bertipe tidak memandang tipe dan struktur filenya, maka file
tak bertipe ini sifatnya kompatibel dengan file apapun dan tepat digunakan untuk
operasi-operasi mengecek keberadaan suatu file di dalam disk, menghapus suatu file,
mengganti nama dari suatu file, menyalin suatu file, dan operasi-operasi lainnya
yang tidak langsung melibatkan operasi I/O.
Prosedur dan fungsi standard yang dapat digunakan di file bertipe dapat juga
digunakan di file tak bertipe, kecuali prosedur standard Read dan Write yang diganti
dengan prosedur standard BlockRead dan BlockWrite. Kedua prosedur ini
digunakan untuk transfer data dengan kecepatan tinggi.
BlockRead(var f:file;var buf;countword[;result:word]);
BlockWrite(var f:file;var buf;countword[;result:word]);

85
DAFTAR PUSTAKA

Abdul Kadir, 2002. Pemrogaman Pascal Menggunakan Turbo Pascal 7.0/Borland


Pascal 7.0 Membahas Pemrogaman Berorientasi Objek. Penerbit Andi Yogyakarta.
Jogiyanto, 2001. Turbo Pascal Teori dan Aplikasi Program Komputer Bahasa Turbo
Pascal Termasuk Database Toolbox. Penerbitan Andi, Yogyakarta.
IBM Blue Gene Team (F.Allen, G,dkk).2001. A Vision for Protein Science Using a
Petaflop Supercomputer. IBM System Journal, 40:2 310-327.
J.G. Brookshear, 1994. Computer Science An Overview, Edisi ke-4.
Benjamin/Cummings Pub, Redwood City.
J.P Tremblay dan R.B. Bunt, 1981. An Introduction to Computer Science; An
Algorithmic Approach, McGraw-Hill. Tokyo.
The Electric Book, 1995. Overview of Computational Science. The Computational
Science Education Project.

86

Anda mungkin juga menyukai