You are on page 1of 229

...

't
a
f
DAFTAR ·tSf

DJftJt lsi
\'II
l\.1u l'cngantJ r ...... ... ....... .
XIII
I. !'F:"JG/\ ''-iTAH TL:HIH l l' A\C:\1.
l I TUH!l<) I'AS U\ L D!\'•.J l'f,\1HOC H ·\,\it\\i
TEJ<STH UKTUH
1.2. KO!I.-ll'ILEH \Ellr\t; \! Ti< :\~,\1 AT< lH
2
U. PENGLNA!.i\:'--J l'H C'C it·\ ;\1 II !lUI\ ) 1':\\\ ':\I \

II Dt\SAH PEMnOC I~ A .\ 1:\N


(,
I!. I. KAI{AKTEH 1)/\i .'\.\1 l"Ui<ll' ' i ' :\ \C:r\1
h
II.~ . I'E N C;E\i/\ I
ILJ. JENI~ ITI I'E IMT:\
~:
IU. KONSTAN Ti\
1!.5. VARIABEL ..
i t. -\:• iK
11.6. UNGKAPA N
:?It
!1.7. OPE It-\ TUH
)J
Il l. · STJ{UKTUH l'l H lCH.-\ .\ 1 ,.,
111.1. KEJ'ALA PH( l(;IL-'\ :\~ ~I
IIL2. l3ACI.AN DEKLJ\1 ~!\\1 )_-,
ll13. BAGIAN PEilNY ,\ f r\ .-\ ,'.J
~ l•l
1114. I'EH.NYATAAN 1(1
IllS. PEM!SAI! I'EH .'\.IY ATr\ .AN
-ll
111 .6. FOH.MA T PROCRA iv l
-11
lll.7. KOMENTAH I KETERANC AN -1.1
111.8. KLAUSA USES .;:;
TV.
i

1:;
PERNYATAAN PENUGASAN DAN I'EHNYATAAN
MASVKAN-KELUAHAN .... . . .
.,f -17
IV. I.

!
tl PERNYATAAN PENUCt\S t\.N .... .. .. ... . . -17
IV.2. PERNYATAAN PHOSEDUI{ .... . ..... .. ... . .j<)
IV.3. I'ERNYATAAN PROSEDU I{ INC &: DEC . ... .... . 51
IV.-!. PERNYATAAN MASUKAN ~ T..;::
1\'.5. I'EHNYATAAN 1\EU !t\H ,\ N
51 ""'. ·- ~h"
~l ')(, ...t~
\'
l'l.:NC t\ .\IB!L t\1\: 1--: FI'Ul U\r\ "-J I ' -\ N ~()\
1'1 NC.l 'l '\N(;:\N I'Hl '\F\ U) •.o .... ,.
\ I PEH NY!\T!\ :\:--.. \ ;( J lt 1 (I I
:! ,. '\.

\'II ~J f'.,
~0\

........... __ ,. ...., ,. f, · . ••
~I'>JV..( :y' ......
.9

~
\.
~!

r
f "
E}U'JYATAAN MAJEMUK .... ... .. .. ... .... ........... . . . 61
t
!!
X.2. MENGAKSES RECORD .................................... .. 157

j
X.3. MENGGUNAKAN PERNYATAAN WITH ........... .. 165
~GJ{}\PAN NALAR ... .. ...... ............... ....... ... ... . :
p£rtr-1Y
AT AAN BERKONDISI: IF . .. .......... .... ..... .
JV!ENGGUNAKAN IF UNTUK l'vft '. ~ '\ffUKAN
KEPUTUSAN TERHADAP SEJUML\H
61
65
~
;:
X.4.
X .S.
MENGGUNAKAN VARIA NT RECORD ..... .. ....... .
!NlSlALISASl DATA RECORD ....... .. .. ~ ... .. ........... .
168
173 (
6'} X I. i IIMP LJN.AN ... ........ ................................................ .
AL TERNATIF . . .......... ....... ............ .......... .. . .. .... . 176
T2 XLI. PENDEFINISJAN/l'ENDEKLAR!\SIAN
y.6. PENGULANGAN PROSES DENGAN: FOR ....... .. .
PENGULANGAN PROSES DENGA:-.J REPEAT 77 TlPE HIMPUNAN ............ .... ..... .. 176
V.7. <·- X 1.2.
PENGUL ANG AN PROSES DENG:\ 'J WHILE n:> ELEMEN HIMPUNAN ........ ----- · ·· ITl
V.8. XI. .)
PENYELESAIAN SEJUMLAH ALTERNATIF UPERASI DAN I'L\1ll•\NDINC --\ N I !L\11'UNAN i77
V.<J. XI..J
~'I I'EMI3ENTUK AN I lli\I PUNAN . J ~J)
DENCAN PERNYATAAN C:\SE
X!.J. I\ 1ENA MPILKM'l f.LE.\11-N I fL\·1 l'L':'-!.'\N lH3
PROSEDUR DA N FUNGSI .............. _ ........ ... . . .. .... ... .. . 'J7 Xl.6. INISIAL! Si\SI lll.'v1l'UNt\N
VI. ~ ~~
Vl.l MENGENAL FUNGS I ARITMEllK:\ __ .............. . 'J7
Vl.2
VI.3
MENCIPTKAN FUNGS I ......... ..... .... .. . .. . .... . . ..
MENC IP'TA KAN PROSEDUR .. . ......... .. .
'"
ji l_2
.'<ll. F.O.,S ILITAS D t\LAM UNIT CRT .... . ... _
XII. 1. MENGATUR JENDELA TEKS __ .... ..
. · -· - _ ..... i'X)
i'AI
V I.~ MELEWATKAN PARAMETER DE:"JGAN · X II . 2. MENGATUH W.A.HN:\ TEKS . .. .. .. __ .. I'JI
N ILAI ATAU REFERENSI ..................... . 103 XI I .1. MENEMPATKAN KURSOR KE SUATU LOKA';J
Vl.:> PEM BATA SAN PENGENAL .... _ ... ........ . 1117 JENDELA LAYAH ..................... .. .. ___ ... . 1%
XI I -1. MEMPEROLEH POSIS! KURSUR ... ... .... _
:v\ENGGUNAKAN TIPE ENUMERASI DAN SUU RANG!.: II() 1')7
VII. >-:11 . 5. MENG I 1.1\PUS LAYr\H ............. .. ...
VII.l. TIPE ENUMERASI .. .. .. .. ...... .... . .. ...... . ..... . I Ill 197
XII _ t,_ MENGH!LANGKAN BARIS . ........ .... _ ...
VII.2. TIPE SUI3Iu \NGE ..... ...... ..... .. .. .. .... ... ........ .. I l l' 1')7
XII. 7 MENYI SIPKAN U .A!~IS KOSONG ... ... .. . . !·~
PENGOLAHt\N DAT A STRING .......... .. .... .. ......... . 12() '<1!. H. MENGHAPUS SELURU II KARAKTEH MULA !
VIII.
Vlll. l. KONSTANTA STRING .. ..... .. .. .. ........... .. .... . I)) POSISI KURSOH . ____ .... ..... ... ]{JI
VIII.2. T!PE STRING . .. . .. . .. .... . .. . .. .. . .. . .. . .. .. .. . .. . .. l~ J XII ') MENG.ATUR DAN ,\ 1EMERIKSA MODE TEKS ]! II
VllLJ. PENUGASAN TERHA D AP V:\RJAUEL STRING ..... 121 X II 10 MEME R!KSA AD;\ TIDAKNYA TOMUOL
Vll l.4. INISIALISASI STRING ...... .. ...... .. .......... .. 12] Y ANr; DITEK,O.,N __ _ ... __ .... . __ . ]! ( '
VIII.5. PEMBANDINGAN STRING ........................... .. 12.:1 XII. I I. MENGGUNAKAN H. EAD KEY UNTUK
Vlll.(l. MENGAKSES ELEMEN S'ffiiNG ..... ........ ........ .. 124 MEMBACA TOMBOL .. . _______ ------ -- ·-- ··-- ......... . ]{f2
Vlll.7. FUNGSI DAN PROSEDUR UNTUK .'<II 12. MENGATUI~ SUPA YA PHOG RAf\1 T.AK DAPAT
OPERAS! STRING ... ................ ........ .......... : . .. .. .".. 126 DIHENTIKAN DENGA N CTRL-BREAK __ ___ __ 2tX)
VIII. 8. STRING SEBAGAI PARAMETER ATAU X II 13. MENUNDA EK SEKUSI SESAAT ........... .. ... ... .. . .. ']{J7
SEBAGAI HASIL FUNGSI .............. .......... .. ....... .. 132 XII 14. MENGATUR SUARA SPEAKER .. .. ......... .... .. _ ~7
llPE D !\TA TERSTRUKTUR ARRAY ...... ................ ..... .. 137 XII . IS. LArN-LA!N .................... .. ......... .... ... .. . ?£!)
IX. ~
IX.l. ARRAY .. .. .... ... .. .. .. .. .. . .................... .... .. .... .. ... .. 137 XIII. PE NGOLAHAN DATA DENG AN FILE .. ... ... .............. . 2 11
IX. 2. ARRAY BERDIMENSI SATU .... ...... ............... ...... 138 XIII. I FILE BERTIPE ---------- ........... ..... ......... .. .. ... ... . 2 12
IX .J. ARRAY MULTIDIMENSI .. . .... ........ .... .... .... ..... .... 146 X ll!.2. FILE T EKS ...... .. ............... .. ....... .... ........ . 23.1
IX . .:!. MEMERIKSA KAWASAN ARRAY ............ .. ......... . 152 X II U . OPERAS! PERANTI DOS SEBAGAI FILE ...... _ .. 245
IX .5. 1\RHA Y SEBAGAI PARAMETER .... ....................~ !53 X IIL4 . MENGGU NAK AN U NIT PI<INT CH LINTUK
IX .6 PENUGASAN ARRAY .. .... ...... . ..... . . .. . .. .. .. .. .. .. 153 MENCETAK KE PRlNTFn ..... . 24')
X111.5. FILE TAK- 13 Ein iP E .. _ .... ... .. .'?50
X TIPE PArA TERSTRVKTUR HECORD . ... .. ... ... . . ISS • X II U> ,'\IENANGANI KESALAIIAN 1/0 2'i3
X. l. MEN DEFINISIKAN/ MENDEKL AHASIKAN
X11!.7. RANGKU MAN f'EHINTAH FI L E 257
RECO RD ................... .... .... . .................. ... ... 155

IX
Vlll

t
XV1 1.7. MENANGANI SUBPROSES ... ..... ...... ............... .. 337 .
l!f'Jti AN VOINTER -········· ·· ··· ·-·········
260
XV II. 8. LAIN-LAIN ....... .. .. ..... ... .. .... ... ........... .............. .
PEMR0GnMv1"j.J I ~!'I 1 \)JN~R .... .... .... ..... .........: ...... . 260
1
343

XIV .l. l'J\ ,.Jr •t:ltflH ~ l~'"


.._.,,o...._'TER ~
"6.1 XVI II. PEMROGRAMAN GRAF IK ...................... .......... ........... .. 345
XIV . . prHI II: ':'~ I ,\f"l I)AFfAR BERANTAl ....... ......... 263
I ll'< ••• •• ••• ••• ••••• ••••· •• ••• •••• ·
XV III.l. PENGENALAN MODE G RAFIK ....................... . 345
XIV. 2 . pt ' Hnl·r,l ,\It I'N VARIABEL DINAMIS .... ... ... .... 264 XVII1.2. PERINTAH DASAR ............................... ........ .. . 346
XIV A3 . Mllf ·l( II ~I I , -\f t' fi\R BERANTAI .. .... .... ....... ..... 267 XV IIU. MENGAKSES PIKSEL ...... .......... .... .. ...... ......... .. 350
XIV .S. MI ' MII 11 ., \N lSI DAFTAR BERANTAI ... ... ... 271 XVlll.4 . MEMINDAH PENUNJUK GAM!JAR .......... .. ... .. 352
111h Vt\ IUABEL DTNAMIS .. .... .. .......... 272
XIV.6. Ml ' f IAf'JI 1 pll XVJII.S . MEMBUAT GARI S .............. ..... .... ....... ... ...... .. 353
XIV .7. Mflflt ,l~ I ~ ltli'JIO: KEPERLUAN ALOK ASI
X\' 111. 6. MEMB UAT ELEMEN BANGUN ... , .. .. .. ........... .
XVIIL7. MENGATUll WARNA POLA, MENCAHSIH
356
XIV .8. 1'1 11 1' I • 1 ,. · · · ···· · ·· · ··· · · · · · ····· ··· · ····· · ···· •· · ··· 2K."\
' •I, I"~,, I
I I , •I d ..... .. ... .. -.. -...... . .. ... . ... . . . . . . . . . . 2~7
DAN MEMBLOK . .. ..... .. ... .
:\'."! 11 11 f-ASILITA S TEKS DALAM M ODE< ;H r'\fiK
360
:0(,')

XV . MANI I'l 'I /'1'• 1 11 I ' \ I :\I\ I


1 KOMl'uTf. l~
11\"v\-PC .... ...... 2X7 .'\\" !!1.'' - FAS!l.ITA S GHA HK Lt\NjUTAN 37()
XV.l. r-.,.11 f'- 1' •I 11 , q rl I)ALAM TUR!JO l' t\SCr.L ..... . ,:::-;•1 X \ '!!1.1(). ,v \EMPEHOLEH INFOHMAS I GHAfiK .. .......... .. ."17'1
111
XV.2 . 1' 1 I '' t 1 , Ill t\1 AMAT, SEGMEN ATi\. U X \ "Ill 11. ANIMAS! GAMHAR ......... .... ...... ... ...... . 3:-\H
xv .3. tvl l (\ II ' I I I 11 -----··· ···· ···· ..... ....... .... ________ __ 2'JI' :\\"111.12. MENYIMPAN DAN M EMBAC A CAM BAH 392
1 t1 ·, 1 1 , , 1 I I hi REGISTER CS,DS.SP 1),\.N SS 2')11
1 XIX 1-'l:.."IRUG RAMAN MODUL AR DE NGA N UNIT .. ........... . }')(,
XV.-l 1,11 1\ ll : l 11II' 1 1 11 UKUR.A.N MEMORI SU ATU
1 X!X .t STRUKTU R UNIT .................................. .. ..... . 396
XV.j . 1\11 r II I 1 tl'l · ATAU KO N ST.ANTI\. BERTIPE 2'J1
XIX .2 KA ITAN NAMA UNIT DAN NAMA FILE -l/ 12
\' /'1 111 \Ill1 1, \ Il l T IP E DATA TERSTRUKTUH
111 291
XV h. I 11 11 ' ,I ; I ill AI YA NG SAMA ..................... .. .
~l)~
XX PnOCH.AM T AMBAHAN ............. ...... .... ....... ....... .. .. . .. 40-t
1 -t04 .
I ol I 11 ,' \ I I I 1 1', 1 >;EJ UMLAH MEMORI ...... ... ."... . XX . !. EMULASI l'ENGOLA H AN NUMERIK ...... ..... . ..
2').\
~ 11 1 1 ' :~I I ;\ ', I I l ATA BERTIP E \X.'ORD .... ........ . :\X.::' MEMERIKSA NILA I IND EKS Dl LUAH
1!11 II' \II '.1 (; MEN D.AN OFSET :O.~ENj:\DI
XV.
XVX 7 KAWASAN ."-.RRAY .. .. ... ... .... ........ ... .. ... ....... .. .. . 406
r, l ' _ _.,
')t \ ,

1 ·~
·''
.. ·t i ll • · ' I . .. ............ .. .... ......... ... ...... ... .. XX . ."\ . FASILITAS LA Y.I\.R 407
XV 'I ' " . , I ·, t\IF.MORI DAN PORT ')ECARf. X)~. 4 IMPL E~\ENTAS I P!LIHAN PROSES DENGAN
2' 1(,
XV . lil r I l l i' • .
1 p . . . ... .... ............. .. .. SISTEM GESEH ..... .. .. . ... .. .. . ... . .... .. .............. .. 422
11 ........... .. .. ...... ........ . 2'1l'
I ,,II' ' ,I . • ,, • •• . II UT
I
I '. t\ ,- , LA,\·\ I' In t\. 'J A
XV .ll t· l ' ' .301 426
" • I .\ I II' I I "\ 1-i
..... ... ... .. .. N............................. . }(ll
DAFT:\H :\.SCI !
XV I. FASILII · • 11 1\M LANJUTA . .. .. ....... .. ... .. ..... .. . .. 30-\ LAMP!RA~ II
11 1
XVI. I. ' · I 1!11 ' 1' I 111 1:. .............. .................... .... . .3<6 PETUNJUK PENGOPERASIAN TU IH30 PASCAL 432
XVL 2. 11'1' I \p tl l 1111 .. .. ...... ............................. ......... .. ~
LAMPIRA~ C
XVU . lll ·ld (ILIAhl 'llJBP ROGRAM SECARA .307
XVL4 . Ill · I\ I •A lii I .. ....................... .. ........ .... .......... . ~
~ :
DAFTAR PERINTAH ED!TOH. TURBO PASCAL 444
307
t·t Ill W · ltl l l ' tNI. 'ERUPSI
· ..... .... .......... · 30H i.
~\
DAFTAR PU STAKA ......... ....... . 448
~~~ :;, '''"
tll ' l;,., I'' IH l'~ t · IIUR
'
................ ... ..... . . ......... ..
315
1

'I·'
\I M·' , 1NI'f"
DOS .. ................................... .
XVII. FASIL\1
XVII.\
"''I I'""'' ,,c lSERROR .......................... .. ...... .. 316
V ·" 11 1\h 'd ''' WAKTU ............ .... ........ .. .......... .. 321
315
~
XVII.' 1\1\ ·l'-11
111
\'1
11 1 II STATUS DISK ................... ..... .. 322
/\ 11 ·1\ 1, , ~ 1 li\N FILE ....... .. ...... .. ... .... ....... .. .... .. .
1 11
XVIl .' 32<J '
XV!l ·' 1' 1 \-1 , /\ II II I r ERU PSI ................ .... ............ .... .
336
XV!l • I\ I' ' ,1 .-. r U l tNGKUNGAN DOS ... ... ........ .. .
11 1
1 1
XVII.r• I\ I 1·1 xi

~~·"t·· ~'F-!,.~ ,\;,. ..~:: ~ . ,_;;:.:·::::·~}\":1 ~ ... ~ ~ ~ •.


.. .. . ..
""___,-~q-·~ ":· •····~- ...,.~-= - ~.--:~~ ~-·..- ~~!..-,~_,..., #....... . .,. ~. .-_ .....4:)....~.f(~~~~--...-':;rl'i'f.f"'i;.·
?t
KATA PENGANTAR

Turbo Pas cal merupak:: n sabh s ~tu ko mpi k r ' ••: :: ,,mgat tcrkcnal unw k
pem:-,)graman ko rnputcr bah asa P:< sol. Pr. ·, ·· \·ang cimdi \ dcngm
rn c n g~:; unak:~n Turbo Pas cal rncmpu n v.1r ern y:m~ rcrqruktur, scl n n gga
mud.~h dip:~hami maupun dikcmbangkan o kh ?<· rnrograrn . 1-i.J l ya n. ~
mcnarik lainnya adalah bcrupa lcngbpnya f:~~ ·: nas yang discdrab n.
schin gga Turbo Pascal dapat dipakai umuk :-:1c·mec.thkan lx:rba gai
m:~salah. dari m_asalah vang bany:1k mcmcrluL :-: pcrhitungan (bahbn
yang m cnjurus kompleks) sampai kc masalah :p·;:-k mcnt:Jsi pcrmainan.
Hcrdasarkan pengcmbangan terh:~d:~p vcrsr ~ :·:·cl urnnya y:mg ~a ngar
di sukai o lch p ara pcmrogram, kini B,>rland fr ll,· n ... ,•nal scb.1g ai pcrusah a-
an yang menciptakannya telah menshadirka n : .'r bo rascal versi 5. 5.
Banyak kelebihan pada versi ini yang rak ad J ;:-.da \"l'fSi scbclumnya .
Fasilitas-fasilitas yang dimaksudkan untuk m cT:.:J ahkan pcrnr o gr:~m :Hl
tclah disediakan. Schingga tid:1klah tcrl:tmpw ,.1: . ,~Jn mcm:tkan banyak
waktu untuk membuat program gun:~ rncnyt<c>Ji kan suJtu ntas:~l a h.
fasilitas yang disediakan diantaranya berupa kem .:,iah:ll1 untuk mcmbuar
gambar, mcngakscs memo~i :naupu r. pl) n . :;1 cnjabnbn pro gram
bcrjenis .EXE atau . COM dari suJtu progn:·:: mclakukan intc.: rupsi
sccara software bahkan sampai mcmbuat p ru !_:~Jm residcn (program
yang tinggal menctap dalam memori sampai ·,·-boorti11g). Tentu saja
~
masih banyak fasilitas yang lain .
..
L

Bagi yang ingin mengenal ataupun mcndJ!am J r'a;ilitas yang ada dalam
..=- Turbo Pascal termasuk dari segi dasar pcmrogflmJn, buku ini kiranya
sangat bermanfaat scbagai petunjuk . Materi yang ,-ukup lengkap disercai
}
,. lebih dari 130 program contoh. yang bisa dioperasibn dengan
menggunakan Turbo Pascal versi 5.0 mau pun 5.5, akan sangat
r;'
membantu dalam mempercepat penguasaan trrhadap Turbo Pascal,
~ terutama yang m.enggunak.an komputer IBM PC.
Akhirnya, seperci kata pcpatah tak ada gading v.mg tak rct.1k, pcnulis
dcngan scnang hati menerima saran arau kritik untuk pcnycmpurnaan
atas kckurangan d:tn kesabhan-kesal.1han y.lll g r~·rJ J dr. Dan unruk icu ;
pcnulis mengucapkan banyak tcrimJ kasih . T.1k lupa pcnulis j uga

XUI
}.."

'~~
"'
r .

rncngucapkan terima kasih kepada 1~ua pihak yang telah membantu


hingga ter..,vujudnya buku ini.
J~arta, Agustus 1989
f.t I PENGANTAR TURBO PASCAL
l
Penulis r ;

~ /
Bab ini mcn_jdaskan kaiun Tur ~o Pa~cal dcng.m pcmrogr:~!n ~n tn,truk-
ru r, kompikr sch.; ,:.1i tr.l:l,J.I'O r se n 1 lllunbcrikan garnb:1r.11, -~~~~~ k.H
mcngcn:~i progr.1m Turl•o !Ja~ca l.

'f
1.1 TURBO PASCAL DAN PEMROGRAMAN TERSTRUKTUR

Turbo P;jscalmcrupabn ~.1lah ~aru vc r,: bJha~a PJscal yang dlkcmb;u-:g-


kan olch Bvrland lntrmation,!l. B.1has.1 Pascal scndir i tcrmJsuk bai JJ s.l
bcraras tinggi (lu~~~~ !,·I·d i.u:glla,I( C) . Scbagai bahasJ bcraras tinggi . Pa,oi
~- \~:w- sudah cemu beroricntasi ~,a,~a baha~a man usia. Dalam hal ini P .. sol
bcrupa bahasa scmaCJm ln sg r:,. I1~Struksinya menggunak.ln btJ-kau
\ dalam bah:~s:~ lng g ri s. KJrena icu bahasa Pasu l sa ngat mudah ciip~hami
dan dipclaj:~ri. Untuk rncmrclajari bah asa P:~sca l, scscorang ti d.1k ha rus
rncngctahui perill a! tL· knis da;-i m,·si n ko mputcr sccarJ rnc,J..Ialal!!,
melainbn yang pcnt:nf:( .1Jalah rncmahanll kaidah Jari bahas.t rcr-.,cbu!.
Kemudahan dahm mcma11Jn ll dan mcmpcbjari ~ahasa Pascal dnu;1jang
oleh bentuk program Pa,cal yang tcrstruktur. Scbagai b:1h:~s.1 png
tcrstruktu r, program PascJI tcrsusun :ltas scjumlah biok. Blok-hlok y.lllg
kecil selanjutnya dapat dipakai untuk mcmbuat blok yang lcb ih hcs:~r.
i
r dan sccara kcsduruhan membcmu k program kcrja. H.!l ini mcmbcrikan
kemudahan bagi pemrogram daiam mcmbuat, mengcmbangkan dan
t memahami program. Suatu permasalah an dapat dipecah-pecah mcnjadi
r bagian-bagian yang kecil schingga dcngan gampang dapat dik odcb n.
t Keuntungan yang lain, logika program menjadi lebih mudah dipelajari/
dimengcni. Kesalahan-kcsalahan yang terjadi di dalam program akan
rnudah direlusuri. Disamping itu program mudah dirnodifikasi tanpa
kuarir rncnimbulbn cfck sampingan terhadap bagian lain dari program.
Sebab program dalarn bahasa yang terstruktur, mernungkinkan pemb:J-
tasan cfek tindakan hanya di dalam blok am tidak rncmpcngaruhi yang
tcrletak di luar blok.
Dalam Pascal, blt'k kbih dikcnal dcngan ~c butan subprogram .
Subprogram scndiri dibeJakan menjad1 dua golongan . Golongan
pertama dinamakan prosedur dan golongan kcdua discbut fungsi .

XIV
j·. ~ Berbeda dengan kompiler tradisional, fasilitas yang diberikan pada
L2 I(OaiiPILER SEBAGAI TRANSLA'rof. Turbo Pascal tidak sekedar berisi kompiler, tetapi sekaligus juga
program. yang ditulis dalarn bahah- beraras tinggi seperti Pascal, mengandung editor teks. Bahkan eksekusi program bisa dilaks:makan
coBOL (Common Business Oriented Language) ataupun beberapa bahasa langsung dari Turbo Pascal, tanpa harus kduar menuju MS-DOS.
ang lain sebenamya tidak dimengerti oleh komputer secara langsung, Perbedaan yang lain, program sumber yang ditulis tidak haru s disimpan
~ebab kornputer hanya mengenal bahasa khasnya saja yaitu bahasa mesin. i terlebih dahulu kalau mau dikompilasi. Jika prog ram Jiras:1kan sudah
Supaya program bisa dijalankan (di~ksekosi)
haruslah diterjemahkan t sempurna barulah disimpan ke dalam file. Cara ini tentunya mcnghemat
terlebih dahulu ke dalam bahasa.__mesm (bahasa yang hanya mengenal l waktu: Sclain itu, Turbo Pascal memungkinbn hasi! kompibsi bisa ·
ko;nbinasi kode 0 dan 1). Proses penerjemahan dilakukan oleh program t· dipilih dan ditemp:1tbn ke
;:
,·ang disc but translator (penerjemah). r RAM, atau
Disket (media pcnyimp:1n ekstcrnal),
'
Tra nslator dap::.r-berupa:
~
Kompilasi ke dalam RAM mernpunyai kcuntungan : proses kompilasi
i. Interpreter ' sangat cepat. Namun karcn a hasil kompilasi tidak d1 simpan kc dah m
-, Kompiler disket, tcntu saja eksekusi program hanya bisa dijalankan c1 i cLl!am Turbo
Int erpreter mcnerjemahkan instruksi selama ek sek •·-; i program . Jika Pascal. Oleh karcna itu, biasanya kompila:.i kc HAM ha11V:J diiakub n
dikehendaki untuk menjalankan program, mula-muL. 2rogram sumber selama pcngujian program saja. Kalau program sud olh scmpurn.1, baru
(wur.:f prog ram atau program yang ditulis dalam bahasa beraras tinggi) dikompilasi ke disket (dengan harapan dap:lt diekscku si scc arJ l:tnf:'~ung
dit crjemahka n terlebih dahulu ke dalam bentuk kode mesin per instruksi . pada MS-DOS).
Setelah instruksi tersebut dipahami oleh komputer dan dijalankan ,
tran slator kembali mengulang proses scrupa untuk instruksi be rikutn ya.
1.3 PENCENALAN PROGRAM TURBO PASCAL
Ocngan cara seperti ini, suatu instruksi akan dij:1lankan dengan sangat
Contoh yang sedcrhana mengcnai prog ram PasCJ.I ditunjukb n pJ,la
lamBcrbeda
bat . dengar, interpreter, kompiler menerjemahkan inst ruksi scc:na Program 1-1. Prograrri tcrscbu r dipakai un tuk mcnampilkan tuh~ J n
keseluruhan terlebih dahulu ke dalam kode mesin ~ebelum prog ram 'Turbo Pascal' ke layar.
.,
dapat d ijalankan. Setelah penerj emahan (istilahny:J yaitu kompilasi). PROGRAM TP;
kompiler tidak diperlukan lagi, scbab sesudah pcnerjcmahan diperoleh '
~

USES CRT ;

program objek (program ini disimpan pada file tcrpisah dcngan program
sumbcr) yang bersifat 'executable', dalam artian bisa dijalankan secara
langsung pada sistem operasi (MS-DOS). Berdasarkan sifat ini, program
k
<• ------------
<• Contoh program
---------------------- *)
•l
Ii
akan dijalankan dengan sangat cepat, karena pada saat dijalankan tidak
ada lagi proses penerjemahan.
,da-kompiler tradisional, program sumber ditulis dengan mengguna-
(* untuk ••na.pilkan tu1iaan : Turbo Pasc&l •)
<• --------------------------------------- *l iI
kan editor teks (misalnya Wordstar atau SideKick) yang terpisah dengan BEGIN
kompiler . Sesudah program disimpan dalam file , kompiler baru
dilibatkan, untuk melakukan kompilasi. Sesudah kompilasi, hasil
kompilasi baru bisa dijalankan. Seandainya kemudian terjadi kesalahan, ~
,
CLRSCR;
WRITEUl ('Turbo Pasca 1'};
READLN
I
cntah karena kaidah i.nstruksi masih salah atau logika programnya yang ~· END .
s:1\ah, editor teks harus dipanggil lagi untuk mempcrbaiki program. !
~'
Contoh eksekusi :
Selanjutnya proses kompilasi dan pengujian program dilaksanakan lagi .
Cara sepc rti ini, dari proses penulisan program, kompilasi sampai Turbo Pascal
Program 1- t.
pengujian program, akan memakan waktu yang relatif lama .
3
2
1 2r r- - -·~ ·- - --
If' r Tipe sederhana
<
>~

-t
~
Tipe pointer
dan Tipe d:aa - Tipe terstruktur
ltll-ftlerupakansalah_satu..contott..Pengenal_ vang_sangat._pan,lang_seblLnamanva Tipe string ·
oleh Turbo Pascal dianggap sebagai pengenal yang sama d~ngan: L Tipe buatan
Tipe data sederhana dan sekilas tentang tipe string dihahas pada bab
inLmerupakan-salatLSatu-contoh_ pengenal_yang_sangaLpanjang_se lnl.

Bcrdasnkan keleluasaan yang dibcrik.m Turbo Pascal, remherian Tlpe Data Sederhana
naJlll pcngcnal scbaiknya y:.ng rncngandung makna, supaya program Y .• ng tcrmasuk dalan1 tiF· ,LH.l ,cdcrh:111~ vanu ripe bilan~~.1n (bulat
udah dibaca dan dipahami oleh pernrogram. Pengenal scperc; L nng ~ ITLlupun real), k:nakter dan bookan.
111 cwakili r:ibi luas misalnya lcbih baik jika dinyatabn deng:an Luas.
111 Nama pengcnal tidak bolch sanu dcngan nama yang tergolong dalam
kata-tercadang ( reserved_tvord). Yang rcrmasuk dalam kat;-,-tercadang

yaitu:
I
~l
Tlpe Data Bllangan Bulat
OJl.1m Turbo Pa,ui tcrchp:lt 5 buah ripe d.H.l v.mg J,crkaitan dcngJn
bilangan bul:H. Berupa: <h,·· ·1t, intt'ger, !ot~g111t, hytr dJn word. Sctiap t!p~·
mcmilih ka\\'JS:Jll nilai tcro.,:ndiri. Knvasan nd.1i untuk ma~•ng-n1.1sing
·\
Ta'f>el 2-2. Kata-tercaaano dalam TurbO Pascal i, :tpc: d1pcrliharbn pach tal.ll'l berikut:
./
procedure typev (
tnllne
abSolute else v
interface program.; unit i Tabel 2·3. Tlpe data bllangan bulat
anav · end;
interrupt record,; untllv'
arrav v external
labelv repeat v uses
oegin v file.; H:nis Kawasan Nila• Format Nllal MUkuranl
varv
ror.; modv setv - - -emor
--
ose ,.
const v f'JrwardJ
function.-
nlt.J
notv
shl
shr
• virtual
wtllle v
.
/~I
shcrtint
integer
------------
-123
32757 ~
------------~-----

1:7
32757
8 bit bertanda
16 bit bertan<la
1 byte
2 byte
• constructor string wlthv
go to.; • object longint -2147483648 2147483647 32 bit bertanda 4 byte
• destructor
oH thenv xor "• byte o 255 8 bit tak·bertanda 1 byte
t/ dlVv nH~~ ll?<Ji lfJ '
Implementation. or ·1 ·tO'./ word o . 65535 8 bit ta!<·bertanda 2 byte
dCv ~
~o\~ packedv
---~---~------- --------- ---~~-- ------~-----

downto v lnv
i
~
11
s.s ttak ada pada verst sebelumnyaJ t'·
• khusus untuk versl n 1>' J ' P~njelasan:
n bit artinya data dinyatakan dcngan n bit (n/8 byte)
Selain itu, nama pengenal diusahakan agar berbeda dengan nama - Pcngcrtian tak-bertanda artinya data sclalu diperlakukan sebagai
pengenal bawaan yang ada dalam pustaka Turbo Pascal (vaitu nama bilangan positif.
pengenal yang berada dalam unit Systew, Graph, Crt, Dr l Printer,
Turbo3, Graph3 dan Overlay), untuk menghindari kesalah.m. Contoh Dalam suatu program, jika misalnya suatu varibel (pengmgat suatu
nilai) dinvatakan dengan tipe shortint, maka variabcl h.mya dapat
dari pengenal bawaan: ClrS.cr, Window. TextAttr, Writeln.
menyimpan bilangan yang nilainya terlctak antara -l2R samp:ti dengan
127. Pcrnberian nilai di lu;n kawasan itu akan mcnycbabk.Jn t<'rj.tdinya
11.3 JENISnlPE DATA kesalahan.

Pascal merupakan salah satu bahasa pemrograman yang kaya tipe data.
Tlpe Data Real
Selain tipc data bawaan, seorang pcmrogram juga bis3 menciptakan
~ Untuk kepcrluan pengolah.m cb.ta real (pcnh.Hl), Turbo P.lst-al mc-

r
sendiri tipe data baru. Secara garis besar, tipe data dalam Turbo Pascal

8
dibagi menjadi 5 golongan.
I?
~'-·
nyediakan 5 buah jenis data real, yairu: r£'al, sing! f. .J,,;Ihf,., cxrmdt'd d.1n

.,.;.. -~ ... ··:.:r•.,.,.;,··n.l""f~~.':J!t!\.,.~·-;~ ...:;.,._"'.."'=·fi,._,•• ~-!"•·~1.-•.o~J._.,,-:•'-·'r·,·~'.~-w:-~·::·-,::;,-:.,.~, .. ·~-:!:-'•-·\o ·'':'"'-~,,.,.t>~'-£-"1':~ry.~.,..%~


~

r
~--··
comp. Keempat jenis data yang terakhft (single, double, extended dan comp)
ditujukan untuk komputer yang mempunyai prosesor-pendamping yang
disebut 8087 (prosesor untuk pemrosesan numeris dengan ketelitian
Konstanta Bllangan
Konstanta bilangan bisa berupa bilangan bulat dan bilangan pecahan.
Bilangan bulat dapat ditulis dalam bentuk sistem desimal (sistem
ringgi). Seandainya komputer ridak mengandung keping (chip)/prosesor
puluhan) dan sistcm heksaJcsimal (sistem bilangan yang berbasis 16).
8087, keernpat tipe tersebut tetap bisa diiibatkan dalam program dengan
cara emulasi (akan dijelaskan pada Bab XfX).
Tipe data comp merupakall bentuk :-w::sisi ganda dari tipe data
)ongint. Tipe ini sangat cocok dipakai ~mtuk pemrosesan nilai bulat
I
f
Contoh penulisan konstanta bilangan bulat:

f 20 :Bilangan -!))
yang bcsJr Scbab kavvasan nilain v.1 k: ~ J-kir J mcncapai --9,2 x 10 lR +5555
sampai du:;:_.<n 9,2 x 10
1
R.
' (!)!i,,n~an :;ss::;. Tanda -~ bc,lch daulis,
bc,kh tidak ditulis)
-127 lLLu.::.u; lr!!IlUS 1~7)
Tabei 2-4. npe data b!langan real 65000 (EiLngan bulat l•crt1pc word .lt,1u lon,(!inr)
~---~--------
Ukuran
Tlpe DatLi Kawasan Nilai Ketelit!ar.
Memorl
-------~·
-- ---~~-------~------

real .!2,9 X 10 59
. 1,7 X 10~' 11 5/d 12 digit 6 byte
Bilangan dalam o1stc:n hek$;1,ksimal mcnggumL -· simbol berupa 0 .. 9
::!:1,5 x 10-'5 4 byte
dan A. .F (ada ltJ buah _,md.JOI) Pcn~rlisannvJ diawaii dengan tanda dolar
single .. 3.4 x 103,1 7 s/d 8 dlg!t
±5,0 X 10- J. 31
1,7 X 1[0S 15 5/d 16 digit 8 byte
($). Comoh pcr~ulis.1n ;;onscmu dalam sistem heksadesimal:
double
extended .!5,0 X 10 .. 4 ~ 51 .. 1.1 X 1,)AjJ: 19 s/d 20 digit 10 byte
ccmp - 2° 3.. 2° 3 -1 19 $/d 20 digit B byte
~ --- ·------- ·-
---··--- -
$FF
(Bd.Jng.1;] iT da!.Jrn sisrcn1 hcks.JcicsimJ! atau ..;,:)::> aatam
T!pe Data Boolean 'it\tcrn f- 1 ~J!uh..J.n)
D::lam bahasa Pascal tcrd:<pat tl~'c d.Jt.l '. 1;1~; ciJsebut boolean. Tipc ini $2000 (Rihng.];; 21~)1 i cbbm S:·.(l'n: hcLadc~~rn:d Jtau 2 13 dalam
hanyJ mengenal dua buah ndai sap. herc;-1 :r:.c :hcnar) .1taufaise (salah). sisrcr:l r::!uhan)
Data bnolt'all banyak Jihb.Hkan clahn~ prog:-arn, untuk mengatur ---~-~--

pcngambil.m kcputusan terhadar dua kcmungkinan, dcngan harapan


!-
;,gar pro~r:un mcnjadi tcrstruktur.
••~ Konsrant;1 dalam '>istu~J hcksJdc>inH] bcr'.Jsar Jntar;; SOOOOtJOOO dan
~ $FFFFFFFF.
Tlpe Data Karakter l'
Tipc data char mcrupakan ripe dan data yang mengandung sebuah t. Konstanca bdang.m rc~l mcngF unakan tanda pecahan berupa titik.
karaktcr. Karakter dapat berupa ~cbarang demen dalam ASCII. Jadi bisa Tanda pemisah ribuan tldak bolch disertakan. Contoh penulisan

1r'-.:·
konstanta bilangan pecahan:
berupa huruf, angka ataupun simbol khusus.
.
npe Data String
Tipe data strir1g berupa sederetan karakter. Data string banyak dilibatkan 40.57 (BiLmgan pecahan 40. 57)
dalam program, terutama untuk memberikan ketcrangan pada layar +40.57
; (T Jmi 1 + bnleh Jiscrubn. menyatakan nilai
penampil. positii)
1..
<

-6777 (Terrn,Jsuk dahm bilang.1n pccahan)


11:4 KONSTANTA ~
-327778.567 (Biiangan pccah.m -- J::777K, 5(; 7)
Konstanta merupakan nilai yang tidak berubah sclama program berjalan. ~- .5 (Bilang.H! rcc:dun 0,5)
Dahm Turbo Pascal terdapat banyak sebli jcnis konstanta. Beberapa - .. ------~ ----~---~--------...

dialltaranya ak.an dibahas pada bagian in

J()
1
Contt'h pcnulisan kunst.mta pccahan van~ salah:
,.
11

~.,)..,._,,.!OltJ£;.!,""'$',_._.4._..,__.,!ZJ ___ ,,.~!£\ •. ..,._J •. t .. . . .,_ __ .EJS_,~ . 9. 1, .. ,'f¥, _._J,~'i''',.....,.~"¥-~~~-U.,*,-'.Y...,d!l? .. ,lf.,f~~'i~""v.w,.,;s:c,.,..•~ J~"'"''"' ,, ~,.J~.;p.:~;~·'T-'~ . . ·-'""t~~'· ·''"-:'···~,.·~;-:.~;!'--~:..,::-;,..;::'"""~"':'''!t!'""";·.. j':"i~:'!'~':..·~~";-:;vr.:';.~~~"":;;-~.:-::-:~-~~-~:-~¥?-t,..'!!if*.+.t.tdet..•.• tt.r.
!'"
-
r .A

(
(Konstanta pecahan hanya boleh mengandung tanda konstanta yang memiliki nilai ASCII 1
3.000,00
titik. Jika yang dimaksud adalah bilangan tiga ribu,
·c konstanra yang memiliki nilai ASCII 7
.M
5.
penulisannya adalah 3000.00 atau 3000 saja)
(Sesudah tanda titik harus ada angka)
·-----
I ~r
l
konstanta
konstama
yang
yang
memiliki
memiliki
nilai
nilai
ASCll
ASCII
13
27

Konsunta pccah:m juga bisa r:lituli~ dalam bcntuk notasi cksponeiJsial Sc(.<ra terinci, kodc yang digunakan dan hur· :ngannya dengan nii~1
yang mcngg'..makan tanda c auu E (\·,mg diikuti dcnpn scbuah nil;;i .l..SL II dapat dilih;,t p1da tabel ASCII v.;ng tcrdapat pada lamp: ran
pangbt). Contoh: ~: nakrer y;:mg mcm dik; nilai ASCII anrara 1~8 sam pai dcngan ~~.)
,L1: •· d:tt:hc. dcng , . lli:·n·~i'lmakan tanda it diikuti niiai ASCII-nn
'-,·: ~.:JI c·onroh:

2.7E+ 3 (ldcmik Jcnt:an h:l.lJJ~an pccahan


2.7eJ03 ::J(,( t Jt.111 ~ 7 X ] i I;)
~ 218 braktcr r
5.2E-06 (BiJangan pccahan 5.~ X 1()-f, ~ 197 braktn t
JULI ] / (5,2 X ]()~) )
:219 braktcr •
=SBF braktcr •
Contoh p:.·!·~Jii~Jll \·;,r.~ saLh:
2.7 E +3 :D1 ,icp.m dan d: bcL1b.ng randa E arau c tlt.hk bolch
aoa' . '\
~ras1, T~:. .:: ..; · scbcr1Jrnya dapat digunakan umuk 'cmu.1 ndai J\SC:Il. ~t:bL;J!
((Jr. ~,_~h:

··~
Konstanta Karalcter -= I samJ dcnpn ·c;
Pcnulisan konstanta karaktcr cliiakukan dengan mcnemp.Hkan braktcr
:55 sama dcngan 'A·
di an tara t.111da pctik tunggal ( \ Schaga1 contoh:
~117
t
l'
sama dcngan u

'A' Konstanta huruf A t


~.
·a· Konstanta huruf a ~· Ka:.J./;tcr vang rncmiliki kodc ASCI1 antara 12/l dan 255 juga dapat ditulJ~

,I.
' I
Konstanta karaktcr SPAS! dc'1.;:.l:: diawali dan dukhiri tanda pctik tunggal. Ad:tpun karakternya
'*' Konstanta simbol * dir.--.::,lch dcngan cara mcnekan tombol AL T scmbari menekan tiga digit
'"' Konstanta PETIK TUNGGAL yang mcrupakan kode ASCII-nya secara bcnurutan. Tornbol digit yang
digur:akan haruslah y:1ng berada di bagian kanan keyboard.
Concoh:
Untuk konstanta karakter petik tunggal. karaketernya harus ditulis dua
kali. 'w · Konstanra karakter yang memiliki
.!'..ode ASCII 1761
Dalam tabd ASCII tcrdapat s~jumlah karakter yang tombolnya tidak
tersedia dalam papan-kctik (keyboard). Scbagai contoh, karakter yang L~!J & CD r!_lJI] ---- •
!Jlemiliki kodc ASCII 25-(tanda panah bawah). Untuk karakter scmacam berturutdn
ini, Turbo Pascal rncnycdiakan cara pcnulisan yang khusus. C":::.'; program: '~,

K<a•aktn yang lllt'!]1i'liki ~ciilai ASCII antara 0 sampai dengan 31, ditulis Prr·~~1::: henkur ben'! dcklaras1 CONST van~:: d1gun.1k.w urH,J.~:
dengan mcnggumbn tanda · diikuti dcngan suatu huruf.(tanpa diapit r1l•:·;.:c.-,::.n.l~lL1ll pL·ngen.tl v.mg hcrisi konstant.1 karakrcr. f-bsil progr.Hn
dengan tanda petik runggal). Sebagai contoh: beru p1 gam bar kota k.

P J Z
12

( ii!~nf.;;;::;+.,,.ry~~.:,.,~~,.,-,...,..r""...,,~,.~~~..,..+,.~-'"<'·':".....,.~,--."1:,':0.">"-·c.-,,.;,.,._...,. -,..
• 1.1
'
.,._ dengan tanda petik tunggal lagi {tidak ada spasi). Sedangkan apabila I
pROGRAM Kotak; dalam string terkandung karakter petik tunggal, harus ditambahkan i

'
<•----------------------------------•1
scbuah tanda pctik tunggallagi di s.<mping posisi karakter petik tunggal.
(Perhatikan contoh di depan).
<• ~o~en&JIIPilk&n KOTAK BERGARIS GAtlDA •l
<•----------------------------------•)
Konstanta string bokh mengandung karakter yang memiliki nilai
ASCII antara 0 sampai dengan 31 dan antara 128 sampai dengan 255.
(

I
Sebagai contoh:
USES CRT;

CONST
'Baris 1' c# 10'Baris 2' (Konstama 'trin~ mcngandung brakter
KIRI_ATAS : 1201; lj yan~ rllc11liil:; f:,,,ic t\SCil 10)
: 1200;
KIRI_BAWAH
KAtiAti_ATAS
KANAII_BAWAH
: 1187;
: 1188;
'
' "G'Perhatikan hasilnya !'(Konstanu ,tring mcrigarhiung L•r:lkter
yang nH'll1?L1ll\'Jl ko(k ·c; :nau ASCII 7)
---~~~----~----·~--·

OATAR = 1205;
TEGAK : 1186: Penulisan konstanta scpcru:
SPAS I : 132;
'Barts 1#10Baris 2'
··cPerhatlkan hasllnva ,.
BEGIN
CLRSCR; mempunyai nukna yang berbeda dcnpn Lie:~ contoh sebciumnya.
WRITELII (KIRI_ATAS, DATAR, DATAR, DATAR, KAliA!i ATAS). Untuk lebih jcbnya dapat dilihat pada program bcrikut:
WRITELN (TEGAK, SPASI, SPA3I, SPASI, TEGAK);
WRITELN (TEGAK, SPAS!, SPAS!, SPAS!, TEGP-1\;. PROOAAM Konatant•3tr1nv.
WRITELN (TEGAK, SPAS I, SPAS!, SPAS I, TEGAK} .
WRITELN ( KIRI_BAWAH, DATAR, DATAR, DATAR, P<AIIA!i_El;.rd<H) .
(•-------------------------•)
REAOLN ~
<• Contoh konstanta string •1
£tiD.
f.
I·· (•-------------------------•)
Program Z-1.

!f
USES CRT, (• unit yang ber.isi prosecvr :ulSCR •i
Konstanta string.
Konstanta string dapat berupa tanpa atau dengan scjumlah kankter
BEGIN
ASCII yang ditulis dalam satu baris. Penulisannya diapit oleh sepasang f
CLRSCR, (• Hapus layar •l
t
tanda petik tunggal. Sebagai contoh:

'TUrbO Pascal' String: Turbo Pascal


String KOSONG
St<ing y•ng beri>i >ebu•h b"kt" pctik tungg~
t ,
;
WRITELN
WRITELN
WRITELN
WRITELH
('Baris 1'.10'Bari& Z''
(•G'Perhattkan hasilnya '');
('Barts 1110Baria 2');
('"GPerhatikan haailnya ! ');
String: Jum'at ~ READLN
'Jum"at'
I END.
Program }~ l.
f
Konstanta string yang tak mcngandung sebuah brakter pun discbut ~ Jika program dijalanbn. lusilmT

i
string kosong. Penulisannya bcrupa tanda petlk tunggal yang diikutl
15
14

I.•.
:_ ' -sariS 1 . I BEGIN ;ii.
. sans 2 t CLRSCR;
PernatiJcan nasllnya ! .... dlawall dengan bunyt speaker

r
Selesai . : FALSE;
BariS H10Barl52
·c;PernatJJcan nasunva 1 WRITELN (Selesai);
READLII
I
END.
Adanya karakter yang mempunyai kode ASCII 10 (disebut kar:tkter line
Program 2·-J.
feed), pernyataan
Pcrnyat.Lm St'f,·<,Ji ·c_ FA!.SE men\ 1t.1Lm pnnbenan nil.1i komt1nu
WRITELN ('8arls11'*10'Barls 2'l f-'AL:ii: kc varubc! tJcnnma Sdc<.;: Pcrnvaraan IFRi7FLi\' f.SelnaJ)
mcrup:tk 111 pn;:;r.;h '.Wtuk rncn.tmt'';kan nii11 vang tcrk.mdung d,JLtm
menyebabkan tulisan Baris 1 eLm Baris 2 dttempatbli ;.'.iCb b,lm \'Jng
\',lfl.llll'i Selesai_ (Jnnnuan mi mcnunjukkan bahwa nilai boo/em: jugJ
berbeda. Ini disebabkan sifat d.1ri karakter line feed, yang mcmbuat
t'i~a Jiumpilb:; :f\:rm .tua:J ~C!Il,tLam tnJ biasa disisipkan dalam
kursor bergcrak satu baris ke ba wah. Dengan bcrpindahnn k ur>ur pad a
program untuk mcnJcrik,_. nila1 :.u.ltt: \·.mabel hclo/ean o;cwaktu pcnguji:m
baris di bawahnya maka tulisan lanjutannya (VJitu Baris 2) diumpdbn program).
pada baris yang bcrbcda dcngan tulisan Baris 1.

Karakter beJl CG) pada pernyataan: Konstanta yang Dldeldaraslkan


D:1bm program Pascal, d1scdukan bagian yang digunabn untuk
• WRITELN ('G Perhatlkan hasilnya!'l rncndckbrasikar: ko!l~tant,1 Ad:u;q l·.1gian ini bukan berarri ~·Jhwa
scriap konstanu h.1n;s diJL·kb:-asik.m Deklarasi hanya dipakJ1 untuk
menyebabkan terdcngarnya suara speaker sc:jen.;k scbclum t:tmpilnya nih! kon,t;m y,mb dibcri nama pl'r.genal. Pcmberian nama pcngenal
tulisan Perhatikan hasilnya !. tcrh,;Jap suJtu nd.1i k,msran tcruunu hila niLli konstan bersifat unik Jtau
Pada pernyataan: ronmgkm sc:ing titld.;:n~:Jn (ttdJk h,HJ\'.i sekalt) daiarn program. TL0uan-
n;·o 'llf'·n·.l f'i(:,~:-_:::1 >:l":,L1h ,iip.llnnu .;r,;u IlllHi.Jh dimodifikasi. Scbag.1:
WRITELN ('Baris h10Baris 2')

#10 bukanlah mcnyatakan karaktcr bc'rni!Ji ASCII 10, melair:bn tlg.t


! contoh kor:stanr.; \',lilt-: c.it,kki.Jr.bik.m dapat dilihar pada Program ~-1 d;
clcpan. Sl'i:tin iru. Progr.;m berikut yJng digunakan untuk menghitung

I
karakter berturutan #, 1 dan 0. Sedangkar. pada pcrnyaraan: lua> dJn kc!iling hngLr.1n berpri-jari 45 (dcngan mcngabaikan satuan-
nva), juga mcng.lild~mg dekbrasi konstJnta.
WRITELN rGPerhatikan hasllnya !'l
PROGRA~I Li ngi<a~an,
dalam string tidak terdapat karakter bell, melainkan karaktcr dan G. ~j\:
(*----------------------------------------•)
Konstanta Boolean (* ~enghitung LUAS dan KELILING LlNGKARAN *I
. Konstanta boolean bisa berupa TRUE atau FALSE. Contoh program (•-------------------- ------------•)
yang mengandung konstanta hc·.'lean:
USES CRT; (*unit CRT dilibatkan *)
CONST
PROGRAM ContohBoolean; PHI :: 3. 14:
USES CRT; VAR
~
!!,. Jejan, Luas. ¥e 1i 1i r,g : REAL.
VAR !':'

Selea.ili : BOOLEAN; '


:,~~
BEGIN
I~~

1~
t:
~~.
t;;-;::
CLRSCR;
( Selesal : boolean: (
Jejari : = 45; "' Jen!s_kelamln: char;
Luas := PHI • Jejari • Jejari;
Keliling := 2 • PHI • Jejari; Pada contoh ini, variabel x dan y didcklarasikan scbagai variabel bertipe
byte (artinya digunakan untuk menyimpan nilai y.1ng terletak antara 0

I
WRITELtl ( 'Luas : , Lu&s} ;
WRITELN ('Keliling = ', KelilingJ; sampai dcngan 255), variabcl Jumlah sebagai v.1riabel real (untuk
READLN mcnyimpan nilai real), Selesai sebagai varia bel boolean (bemiiai TRUE
atau FALSE) dan Jenis_Kelamin scbagai variabcl bcrjenis char
END. (laraktnl.
Conton ekeet<u.t:
~
SesuJ.1h variabci clllkklarasikan, vanabcl dapJt ,i,gun,<Ln ~: dahm
bagian pcrnyatJJil llrHuk menc·imp.ln data S.ll.1h '.Hu C.l:-.1 rc'!'lhdJ.l;,
Luas : 8.3585000000E+03 r~1hi tcrhadap V.Jriabcl nrtu rncbiui operJ~i pcnu~,lsJn. Bemuk:Jva:
~liling = 2.8280000000E+02
"Jarlabel : = nilal
Program l-4.
Nilai LLlpat dipcrokh
dari konstanu. vanabel, fungsi (sabh 'Jtu dari
Tampak pada contoh ini, nihi 3,14 (ditulis 3.14) Jiberi pcngenal hcrupa _icnis subprogram) arau ungkapan (eksprcsi).
PHI, yang didcfinisikan pada dekbrasi CONST. Nilai scperti .:2 atau 5 Schagai l·ontoh:
juga mcrupakan nilai yang konstan, tctapi tidak didcklarasikan pada
bagian CONST (karena tidak menggunakan nama pengenal). Adapun Jumlah := 0;
Jejari, Luas dan Keliling disebut variabel.
baart1 :11crnbcrikan ni!Ji n;:Jl ke \'Jriabel Jumlah.
~

11.5 VARIABEL Con~oh lain:

Vanabd merup3kan suatu nama yang menyintkan lokasi mcmon •·


~ Jumlah := Jumlah -. 1
komputer yang dapat digunakan untuk mcnyimpan nilai dan nilai yang
tcrkandung di dalamnya bisa diubah-ubah selama program dicksekusi.
~
~~
;!·tinn.: tambahbn is1 •:aria he! Jumlah yang scmula J.:ng;m n11Ji l,
Dalam bahasa Pascal, suatu variabel scbelum dapar digunakan haruslah "' kcrnudian hasilnya sirnp::>.:1 kernbali ke variabcl Jumlah". Pada contoh
terlcbih dahulu dideklarasikan. Deklarasi variabcl bisa di:trtikan sebagai ini Jumlah + 1 mcrupakan suatu ungkapan.
pemesanan tempat dan penentuan jenis data yang akan disimpan di Pengertian nilai variabcl dapat diuhah dan dilihat pada program
dalamnya. Tempat pendeklarasian yaitu pada bagian deklarasi yang berikur:
diawali dengan kata-tercadang VAR.
Bentuk pendeklarasian variabel: PROORAM Var1abel;

Idaftar_varlabel : ttpe_vartabel: l USES CRT;

Jika terdapat sejumlah variabcl, variabel yang mempunya1 t1pe yang


sama boleh ditulis berdampingan dcngan tanda koma scbagai pemisah-
nya. Sebagai contoh:

VAR
I
~

~.
VAR

BEGIN
X : BYTE;

CLRSCR;

i
X, y : byte:
Jumlah : real: X :: 10;

I
18
19
.,

r
WRITELN ('Iai X mu1a-m~-: X); melibatkan dua buah operand. Operator scpcrti
binary. Sebagai contoh:
* termasuk operator I
X := 25; 2•3
X);
WRITELN ('lsi X sekarang =
READLH Operator * mdibatkan dua buah operand, bempa 2 dan 3. Contoh yang
END. bin: 2 + 3. Pada contoh ini, operator + juga bersifat birzary.
Disamping o~er::ttor lnnary terdapat operator jen1s 11nary, yang hanva
mempunyai sehuah operand. Sebagai cuntoh:

+a
x mu1a-mu1a = 10 b
x sekarang = 25
_Pro~~~~m Z-5. Pada contoh Jnl, + Ll.m - bersiflt Jo:,:~r.
n.riabcl X dibcri nilai 10 melalui penugasan: Bcrd:~:oarka:J kcf:ll11.UnnyJ, d.dam Turbo P.bc-.11 terdapat operator
pcnug:1~.1n (bcrupa :==), logik.1, hubung:m/rciJs;, .lbmJt, set (h1mpun:m)
,J.m ~tring. Bcbcrap.1 di:m[JLIJJYJ 3Kan dibJlJJs pa(ia bab-b:~b sehnjumya
T:Jh<.:i h-:rikut rn~'JJunjukkan kcseluruhan npnator dahm Turbo
:s1 X diubah menjadi 25 mclalui penugasan: P.tscal.

iaoel 2- 5. Operator dalam Turbo Pascal


------ -----~-- ---~ ~ ---
Ope rater Derajat
Kelor~pok
Ungk.1pan Li:~entuk uieh operand dan operator- Sel:ngai contoh dari tpriorltasl
---·----------
(u not pertama
sl.latu ungk.l;:: ~n: operator unary
• 1 dlv mod and shl shr kedua ope~ator oengail
or xor ketiga operator penamoanan
operator ~.-_:-><'->=In
keempat operator relas 1
tterendahl
operand
Operator dalam suatu ungkapan d!k<:rpk.ln hcrdJ~..lrk;~n ckrajat at:1u
prioritasnva.
lain: Contoh:

2 t 3•4

kedua contoh di atas, A, B, 2, C dan 4 merupakan operand,


Oper:ltor * mcmpunyai prioritJs yang lebih tingg1 daripada +. nub 3 *
vatakan nilai yang akan diproses. Sedangkan tanda seperti +, * dan
4 yang ak.m dihitung pcrtama kali. Kcmudian hasilnya baru diumbah-
pakan operator, yang menyatakanjenis tindakan yang dikenakan kan dcngan 2.
Dal.m1 su.au ungk;~pan, jika tenhpat St'Jtimlah opcr.~c•Jr dcng:~n
operand_
priorius vang sama, urutan pcrnroscsan ,~ilakuk.m d.tri kin kc k.lnJn.
Scbag:,J cor1t<>h:

operator dalam Pascal bersifat birwry, yaitu operator yang 2 t 3 5

21
"'

.L

dan 3 d~jumlahkan j}Iebih dahulu, selanjutnya hasil BEGW

dikurangt dengan 5.
CLRSCR; J
mengubah urutan pengerjaan dalam suatu ungkapan, tanda WRITEUl ( '4 + 1 .o = 4 + 1.0);
buka dan kurung tutup dapat dipergunakan. Misalnya, diingin- WRITELN ( .•. o + 1 = •. 0 + 1);
untuk menjumlahkan 2 dengan 3, kemudian hasilnya dikalikan WRITELN ('.,0 + 1,0:
•. 0 + 1-0)'
WRITEUI ( '4 + 1
4. Penulis.mnya: :

..'
• + 1)'

WRITEUI (
- 1. 0 = 4 - 1. 0)-
WRITE Lll ('4,0- 1
= 4.0 -

..
1).
WRITEU4 (. 4 '0 - 1 '0 = .:.o - 1- 0).

-6 buah opcrato:- binary yang digunakan dalam opcrasi aritmatika,


WRITEdl ( - 1 ;.: 4 - 1)-
READUI
. + - * 1 Jj,- Jan mod. Operator unary ada 2 buah, yaitu + dan
EIW.

Contoh eksekusi.
___ .,,.,. PenJumlahan I+>
;ib sa!ah satu dari operand bertipe pecahan 4 + 1 ,0 ;.: S.OOOOOOOOOOE+OO
4,0 + 1 = 5.0000000000E+OO
4,0 + 1.0 = 5.0000000000Et00
• + 1 = 5

+ 1,0 - - - - s.c (hasil pecahan) 4 - 1 '0 = 3.0000000000E+OO


1 ---o- 5.0 (hasil pecahan) 4,0 - 1 = 3.0000000000EtOO
1,0 -----=- 5.0 (hasil pccah.:n) 4,0-1,0:: 3.0000000000E+O
+ 1 -----:::-- ;, (hasil bulat) 1 = 3
(_ Program Z-6.
'nn.r.!ltor Pengurangan 1-l f
jika salah sacu dari operand bertipe pecahan ~ Berdasarkan hasil eksekusi J, at as tam pak b.dnva jika sa!ah satu operand
bcrtipc pecahan, hasilnya juga pccahan.

I Operator Perkallan !•l


Sifat dari operator* yaitu apabila salah satu dari operand bcrtipc pccahan,

I
hasilnya juga pecahan.
3,0 (hasil pecahan)
-- 3,0 (hasil pecahan) Contoh:
3,0 (hasil pecahan)
3 (hasil bulat)

I
4 • 2,0 - - · - - 8,0 (hasil pecahan)
4,0 • 2 8,0 (hasil pccah:1n)
4,0 • 2,0 - --- 8,0 (hasil pecahan)
4 • 2 ------ 8 (hasil bulat)
PROGRAM TambahKurang;

USES CRT;
'
~-
...
~-
Operator Pembaglan < 1 dan dlv J
Ada dua buah operator yang ,hgunakJn
untuk pembagian. bcrupa
operator pembag1an dcngan hasil pccahan clan hasil bulat.

23
··~, ~
t;
Operator I menghasilkan bilanga.D"'pecahan, apa pun ripe operand-nya. Contota eksekuai:
10 DIV 2 ,--> 5
- Contoh program:
10 OIV 3 "'-> 3
PROGR~ Pambagian1; 10 OIV 4 --> ,2 ~

USES CRT; Program 1-8.

BEGIN
CLRSCR ; Operator Slsa ~t:nba,glan ....
Bulat rmod>
mcm pcrokh.~~~,b r~llJ~tgi~b,J!at
'
WRITELtl { '4 I 2,0 = 4 I 2. 0):
Operat& mod digurl:Ykarl:,,unruk

'
WRIT EUI ('4,0 I 2 = 4. 0 I 2); Contoh :
WRITEUI ('4-~0- 1 2,0: 4.0 I 2.0);
{
..
I L' ....
•,_
1-IRITELII ( '4
READLN
I 2 = 4 I 2);
f
f
7mod2
20 mod 3•
........
....... 2
END .
contoh eksekusi :
i Penjelasan :
(
.'
' •,
• )
f * Basil bagi dari 7 dengan2 adalah 3 dan sisa pembagiJn sebes:t r 1 (7-
4 I 2 ,o = 2.0000000000E+OO 2 * 3)
4,0 I 2 = 2.0000000000 E+O O * H asil bagi dari 20 dcngan 3 ada!.ah 6 dan si>:J pcmbagi.1n a(blah.? (2U
4,0 I 2,0 = 2.0000000000E+OO - 6 * 3)
I 2 = 2.0000000000E+OO
~csuai
4
Tanda hasil opcrasi yang meliba tkan operator mod dengan
Program 2- 7.
tanda dari operand yang terletak di scbel ah kiri mod,
Contoh :

Dari hasil eksekusi tampak bahwa ~Eillbagi!l_n,\'ang mt: :1 ~gumka n -7 moa 2 -1


operator I selalu dalam bcntuk pccahan. 7 mod - 2 1
Operator div hanya bisa dikenakan tcrhadap operand v ang bntipe
bilangan bulat. Hasilnya juga bertipe bilangan bulat. Operator Unary + dan -
Operator UIUJry + dan - dikenakan di dcpan scbuah operand. Tipe
Contoh program: hasilnya sesuai dengan ripe operand .
PROGRAM Pembagian2 ; Contoh:
-b
USES CRT; Uika b bertipe pecahan , hasiln ya pccahan jika b bertipe bulat,
hasilnya bulat)
+a
BEGIN Uika b bertipe pecahan , hasilnya pccahan jika b benipc bulat,
hasilnya bulat)
CLRSCR;
WRITELN ('10 DIV 2 --> 10 DIV 2}; Operator Loglka
WRITELN (' 10 DIV 3 --> 10 DIV 3):
WRITELN ('10 DIV 4 --> 10 DIV 4) ;
Turbo Pascal menyediak:w 6 buah operator logib, bcrupa : not, and,
READLN or, xor, shl dan shr. Oper:~tor ini h;mya bisa dikmabn tcrhada p
END. operand yang bcnipc bilanga n bulat dJn hasil jug.t d:llam biLmg,l n bular.
Operator logika dipakai umuk mcmanipulasi d.lta Jalam bcntuk bir.
24
25
.,

~ -~
.1 • .:.

Pengertian bit ~dili.!:t digit p~da J~ngan ~iner. Sebua~ bit da~at berupa
B :: -A;
digit 0 atau di~1t 1. Dalam ~Jsten\ bmer,· btlangan 3 mtsalnya dmyatakan
dengan 11. Btlang.m 12 dmyatakan dengan 1100. ·
Pada Turbo Pasal terdapat istilah bit bcrtanda dan bit tak bertanda
(lihat Tabel 2-3) . P1da bit tak bertanda, b_it terkiri me~~akan ?~anda
C :: B;
WRITELN ('A: ', A);
WRITELN ('B: ',B);
WRITELN ( 'C : , C);
I
bilangan (sign .flag) yang menyatakan b1langan berrulat postttf atau REAOLN
negatif Jika bit penanda bilan ~~~ernilai 0 berarti bilangan adalah ! END.
positif Bilangan :::egatif ditandai dengan nilai 1 pada bit penanda r
Contor. ekaekuai:
bilangan. ~

SebJgai contoh: _ A : 12 7
Bilangan 127 desi;;_.;l (puluhan) jika dinyatakan dalam bemuk biner 16 ·- B : - 12 7
bit bertanda: c = 55409
0000 0000 Ol i : 1111 Progra,. Z- 9.

Lbit tanda pos;: i~- Tampak dari hasil cksekusi program . is i C bcr h:t.b dcnpn i ~i D,
sekalipun ada pernyataan penugasan :
dan bilangan -1T .:iesi m al apabila diny atakan dalam bemuk bine r 16
digit adalah sebag;: ~erikut : c := 8;
1111 1111 1(((• 0001
Hal ini disebabkan variabcl C dan B mempunyai tipc yang bcrbcda. C
lbit tan da neg~:::· bertipe bilangan bulat tak bertanda (WORD), scchngkan 13 bercipc
bilangan bulat bertanda (INTEGER ). M cskipun pola bitnya dar i k c:du :-~
Jib dinyata kan da,;:n 16 bit tak ber tanda , pola bit variabel rersebut sama, pcrlakuannya bcrbcd2, sehingga mcmbcrikan
nilai yang berbeda pula.
1111 1111 }(f.( 0001
menyatakan bilangar. 65409 (2° + 27 + 28 + 29 + 2 10 + .. + 2 14 + 2 15) . Operator Negasl CNotl
Perbedaan antara bir tak :bertanda dan bit bertanda dapat dilihat pada Operator not bersifat unary (hanya mclibatkan satu operand). Keg unaan-
program berikur: nya yairu untuk memperolch nilai dengan bit-bit yang berlJ wan an
terhadap bit-bit dari operand. Jika bit operand berupa 1, hasilnya berupa
PROGRAM Bit ; bit bemilai 0. Sebaliknya, hila bit operand bernilai 0, hasilnya berupa bit
bernilai 1.
USES CRT; Contoh:

VAR A dan B bertipe byte. Jika A bernilai 185 dan kemudian diberikan
A, B : ItlTEG.ER; 15 bit bert~nda } penugasan:
c WORD ; 15 bit tak-bert anda
B := NOT A;
BEGIN
maka B akan bcrnilai 70.
CLRSCR ;
A :: 127; Penjelasan dalam bentuk bit:

26 '27
_.
,.
·~s

Contoh:
A = 185 - - - 1011 1001
--not Variabd A, B dan C bertipe byte. A diberi nilai 26 dan B 105. C
B = 70 - - 0100 0110 rnerupakan hasil operasi and antara A dan B. Berapa nilai C?

PROGRAM Operaai_not; PROGRAM Operaat_and;

USES CRT ;
USES CRT;
VAR
A, 8 : BYTE;
VAR
A, B, C : BYTE;
BE Gill
CLRSCR;
BEGIN
A : = 185 ;
CLRSCR;
B : : NOT A;
A := ~ 211;
WP.ITEU< ( ' A : A) ;
B :: 105;
WRITELN ( '8 : B) ;
C :: A AND B;
READL N
WRITELN ( 'A : A);
END.
WRITELN ('B: B);
WRITELN ( 'C : C);
Contoh eksekua i .
REAOLN
END.
A = 185
B = 70 Hastl ekaekuai;
Program 2-10.
~ A : 26

Operator And B : 105


c =8
Bentuk: o~ and operand2 Program 2-11 .
Hasil dari Wlg~"'Wl !:Dcrupakan hasil operasi and dari masing-masing bit
operandl dan ~ pada posisi bit yang sama. Sifat operasi and
Hasil C = 8 bisa dijelaskan m'elalui pola bit berikut:
pada tiap bit: A = 126 0001 1010
B = 105 0110 1001
Bit hasil and
Bit <:>~.:,::~.~ • Bit operand 2
c 8 ()()()() 1000
0 0
1 0 Operator or
0 0 Bentuk: o·p erandl or operand2
1
l-bsil dari ungkapan mcrupakan hasil opcrasi or da ri rna
operandi dan operand2 pada posisi bit yang sama. Sifa
Bit hasil ~ : : _lib k edua bit operand bernilai 1. ti.lp bit:

28 31
·-- I
.6 :=.--,~ ~ .

Bit operand 1
0
I ,
·# ;..; , ,
-~
~ -
B it operand 2
\ _0
" .~
Bit hasir : · •

0
1
Operator Xor r

Bentuk: operandl xor operaud2


--'-·-

Hasil dari ungkapan mempakan hasil operasi xor dari masing-masing bit
(

1 operandl dan operand2 pada posisi bit yang sama. Sifat operasi xor
0 1 pada tiap bit:
0
1 1
~
Bit operand 1 Bit operand 2 Bit hasil
Bit hasil bernilai 1 jib bit operand ada yang bernilai 1. 0 0 0
~ ·o 1
Contoh: 0
Vari abel
A, B dan C bcrtipc b yte. A dibcri nilai 42 dan B 156. C
merupakan hasil operasi or
antara A dan B. Berapa nilai -e? i
f
1 0

t
PROGRAM Operasi_or; t Bit hasil bcrnibi 1 jika hany:t sal4J~ satu dari bit operand bernilai 1.
USES CAT; t C o ntoh: I
VAR Variabcl A, B dan C bempe byte. A diberi nilai 42 dan ·B 156. C
A, B, C BYTE; mcrupakan hasil operasi xor antara A dan ll . Berapa nilai C?

BEGIN PROGRAM Operasi_xor:


CLRSCR;
USES CRT;
A :: 42;
VAR
8 : = 156:
A, B, C BYTE ;
C :: A OR B;
WRITELN ('A: ', A); BEGIN
WRITELN ('B = . I B); CLRSCR;
WRITELN ( 'C : C); A :: 42;
B := 156;
READLN
C :: A XOR B;
END.
WRITELH ('A : A);
Contoh ekaekusi: WRITELH ('B = ', 8);
WRITELH ('C = ~.C);
A : 42
READLH
8 = 1515 END.
c = 190
Contoh ekaekus1 :
Progr"m 2- 11.

Hasil C = 190 bisa dijelaskan melalui pola bit berikut: A = 42


8 = 158
A= 42 0010 1010 c = 182
B = 156 ___.. 1001 1100 or Program 1 - 1).
c = 190--- 1011 1110
31
30
/
I SS 'Cc Q' 'fi . -- --··-

A :: A SHR 1;
Hasil C == 182 bisa dijelasktfl melalui pola bit berikut: WRITELN ('lsi A aetelah A;: A SHR 1 --> ',A);

A= 42 ___.. 0010 1010 A :: A 5Hl 1;


1001 11 00 xor WRITELN ('Isi A setelah A ::A SHL 1 --> ',A);
B == 156 -
1011 0110 P.EAOLN
c == 182 ~ J EHO.
l
operator Shl dan Shr
f Contoh e~. se~uai :
Operator shr digu nakan untuk mcnggcscr bit kc kanan sebanyak nilai
dari operand kedua . Scdangbn o perator shl dipakai untuk mcn ggcsc:r Isi A se~ula = 219
bit kc kiri scbanyaJ.: nilai dari o perand kcduJ . lsi A setelah A :: A SHR 1 -- > 109
C omoh operasi menggun:~kan shr : Iai A aetelah A ::A SHL --) 218
219
110 11 0 11 A Program l - 14
\\\\\\\ 109 (hasil A shr 1)
0 1 10 1 10 1 A Dari hasi l di atas tampak bJhwa pcnggescran 1 bit kc kanan (dcngan shr)
lbit bernilai 0 disisipb.n pada dasarnya merupakan opcrasi pcm bJgian dcn gan 2, scdangbn
pcnggcseran 1 bit ke kiri p~da d;lsJrnya mc rupakan opcrasi pcrblim
pada bagian kiri
dcngan bilangan 2.
Contoh operas! menggun aka n shl:
A = 109 Slfat Operator Binary
0 11011 0 1 - E O - - -
pada Ungkapan Arltmetlka dan Logll<a
/! I I I I I (hasil A shl 1) Sifat operator binary:
A = 21 8
1 10 1 1 0 1 u - - - J
• Apabih kcdu:~ o per and bcnipc bil:mgan buiat, hasil mcnycsuai:.:.an
Lbit bcrnilai 0 disisipkan ~ dengan tipe yang mcncakur Lnnsan kcdua opera nd-nya . Mis:~l,
pad a bagian kanan t operand bertipc byte dan integer, m :~ka hasiln ya bc nipe integer~

Contoh program :
~ Bila operand hertipc integer dan word , hasil bcrtipe longint.
• Jika operand ada ya ng bcnipe real, hasil bcrtipc real (a tau extended
kalau melibatkan proscsor 8087)
1

'
,? ·~
·,
....
1._,)
;.
PROGRAM Operasi_ehr_~,1;
~ \J
USES CRT; '\)\_,
\
VAR
A : BYTE;

BEGIN
CLRSCR;
A :: 219;
WAITELtf ('lsi A •-u)a : A);

3~

..
.. ...t ~

(1

Kep:Ua program hanya bersifat optional dalam Turbo Pascal dan tidak
berpengaruh terhadap programnya sendiri. Sekalipun demikian, judul
Ill STRUKTUR PROGRAM program yang diberikan pada kr.pala program biasanya menyiratkan isi
program .

111.2 BACIAN DEKLARASJ

Bagian deklarasi berisi daftar label, kt .tstanta, tipe data, variabel serta
subp rog ram (berupa fungsi dan proscdur) yang di ciptakan oleh pemro-
Program P:1scal dapat dih.tgi menja di u ga bagian, berup a:
gram . Kaid:th pende klarasian dalam Turbo Paso! disajikan chlam
Garnbar 3-2. ·
(1 ) Kt:pala program
(2) Ba g ian deklara si
t ~ian deklarasi l
(.3) Bagian perny:~taan t
Dabm bcntuk garnb~r . kaidah scbuah prog ram Turbo P:~ so l ad::dah ~an aelclarasl label L
sebagai bcrikut: I

;•
H Bagfan dek:larasl k:onstanta L
programyl ]udul program !---{)~ [ , 1 l
f

Iclause uisJ
I
1
H Bag ian deklarasl tlpeJ
GJmbJr 3 -1. Kaidah program da lam Turbo PJ;c.:./
H sag ian deklarasl label J I
Gambar 3- 1 sekaligus menjelasbn bah'.n kepala prog ra m mcrup:1ka n
optional dalam Turbo Pascal, dalam arrian boleh discrtakan boleh tiJ:~k.
Program mengandung klausa uses hanya bila :~da unit (pus taka d alam H Sagfan deklarasl varlabel l
Turbo Pascal) yang dilibatkan . Sedangkan bl ok (blok program) berupa
bagian deklarasi dan bagian pernyataan. L.i Baglan dek:larasl subprogram l
111.1 KEPALA PROGRAM
Gambar 3-l. Bagian ddtlara•i T,.rbo Paua/
Kepala progra.m diawali oleh kata-tercadang bernama program, yang
diikuti dengan judul program (berupa pengenal) dan diakhiri dengan Sepeni dipcrlihatkan pada Gam bar 3- 2, bagian deklarasi terdiri dari:
tanda titik koma (;) . Sebelum tanda titik koma boleh ada sej umlah • Deklarasi label
parameter (berupa pengenal) yang diapit oleh sepasang kuru ng . Antara • Dckbras i konstanta
sua tu parameter dengan parameter berikutnya Uika ada) dip isahkan • Dck!Jrasi ti pe
dengan tanda--koma . • Dckhrasi label
Bebcrapa contoh judul program : • DekJarasi variabcl
• Dcklarasi subprogram (prosedur dan fungsi)
PROGARAM PemasukanDATA:
PROGRAM KRS !Input, output!; Lengbp tidaknya bagian deklarasi tcrganc ung
PROG~AM cetak lflle_ke_prlnterl: drngan progran 1 iw
sendiri . M ungkin saja sebuah program tidak
mengandung bagun
34
.15
Deklarasi konstanta diawali dengan kata-tercadarig const.

~; """ ,k,li (bahk'" juga. ~ mengandung judul p,l,g.-am),


Sebagai contoh:

...,. ,;.nana te<l.hal d• bawah urif .


· ..
•~ (
·i , .. '
. . CONST
SPASI ~ 32:
1 RETURN = t13;
KOSONC "' SPASI:
BEGIN
YJRITELN !'TURBO pASCAL'!
Contoh di atas mendefinisikan pengenal SPASI sebagai nilai 32, pengenal
END· RETURN berupa karakter yang memiliki kode ASCII 13 dan pengmal
proS'"" di "" hanya m<ngandung bagian p<mYa"'"·
l)rutan d<kla<>" ndak m<nJ'd' m,ahh dalam Turbo Pa<<al. Mi<al- KOSONG idemilCCiengan SPASI (atau nilai 32).
nY'· d<kl""i va<i>bd bi" <>i• dit<mpatkan <<'udah d<klm<i pw<<dm Sclain bentuk pendcfini sian se perti di depan (yang biasa diseb ut
ataU fung» · N,.nun m•<alnya ada v>mbd yang m<mpuny" up< yang dckl arasi konstanta tak bcrtipe) ada juga bcntuk lain yang dinamakan

~
d•dof••"ibn dal.m• dcklara<i ti pe . drkhr,;i tip< mrmang haru< di"m- sebagai dekiarasi konstanta bertipe. Bentuk deklarasi konstanta bcrtipc:
patkan sebclum dcklarasi variabel .
I CONST

mony>~akan } pengenaL1 : t1pe_1 : konstant<L1 ;


peklarasi
Labd Label loka<i p«nY""" yang dituju okh p«nY""" goro
dalam progr>m· Nama hbd dap" b<rupa bihngan bul" anta<> 0 <ampai
dcngan 9999 atau bcrupa pcngenal.
t pengenaLn : tipe_n : konstanta_n;
Pada p,oal, <emua labd yang digunakan dalam program harm Tipt•-- 1 .. Tipe_n dapa t bcrupa sebarang tipe data.
did<klara<ikan dalam deklara<i labd. Brntuk p<nd<klara<ian Sebagai contoh:

CONST
LABEL X : BYTE : 255:
dattar Jabel;
D<klar a>i lahd di>w>h d<ng>n kata-trr<adang label diikuti d<ngao
Berarti mcndefin isikan X bertipc byte dan bcrnilai 255.
J4.,,_lobd . Jib trrdapat l<bih dari <ebuah labd . antara hbd <atU d<ng"'
Berbeda dengan dcklarasi konst anta tak benipe, pada konstanta
lainnya dipisahkan dengan tanda koma. Sebagai contoh: bertipc konstanta yang terletak di sebelah kanan tanda sama dc:ngan tidak
boleh berupa nama pengenal konstama bcrtipe. Nama pengenal
konstanta bertipe juga tidak boleh terletak di sebelah kanan sam a dengan
LABEL
10. selesal; pada pendefi~isian konstanta tak bertipe.
m<nyatakan ada dua buah labd dalam program. berupa 10 d'" Sel.,.i.
Sebagai contoh:

CONST
oeklarasl Konstantadipakai untuk mendefmisikan nama konstanta yan&
Deklarasi konstanta X : BYTE= 255;
y : X;
digunakan dalam program. Bentuk pendefinisiarlllya:
mcrupakan pendefinisian yang salah. Sedangkan:
CONSi CONST
pengenaU = konstanta.J;
y = 255;
X : BYTE= Y; I
pengenaLn == konstanta-n: 37

36

• s slllll
J
......._ -· .. ~--·
.,.
I, tanda koma. Tipe dapat berupa tipc bawaan dari Turbo Pascal atau ripe
akan contoh pendefmisian ·wan g sah . yang didefinisikan dalam deklarasi T Y PE .
rneru P
l{onstanta "
bertipe d apat dianalogikan dengan variabcl yang diberi nilai Contoh:
awal. Ni lainya ju ga b isa di u bah dalam bagian pernyataan.
VAA
JumlahBarang,
oeldarasl npe oata JumlahCudang : BYTE;
Digunakan nntuk m end etinisikan nama ripe da ta baru . Pendefi nisian tipe Karakter : CHAR;
diawali olch kara- tercadang type.
Contoh di atas, mendeklarasikan ':ari.lbcl Jumla hBara n g dan Jum lah-
G uda n g bcrtipc byte dan variJlJc l Ka r a k tcr bcnipe CH.A.ft
TYPE
pengenaL1 = tl pe_1 :
Deklarasl Prosedur dan Fungsl
D ckLnasi p roscdur da n fu ngsi hany :l :~da bila program mcngandung
pengenaLn = ti pe_n; subprog ram (yang diciptakan okh pcmrogram). Subp rogra m dalam
Tip c-1 .. Tipe_n dapat beru.pa scb:u ang ripe d;H:l. Pascal bisa bcrupa prosedur at:~upun fung5i. M odel p rog , Jm Pascal
m emang ba n ya k meli batkan subrrogram. Di:lll tara n ya un tu k mem uc!ah-
Conwh : kan pcnyusunan p rogram.
Perbcdaan uta ma dari prosedur d:m fungsi (pJdJ bagian pcrnya taan):
TYPE
Bulat = INTEGER • Fungs i: - N am a fungsi mcngh:Js ilbn scbu ah nilai jika dipanggil.
Kallmat = STRING; Tidak dapat bcrdiri scndiri scbag.~i pcrnyat aa n, mela in-
berarti mcndcfinisikan pengenal Bulat sebga i ripe integer d an Kalimat ka n sebJg ri i operand.
bcrti pc string. Tipc seperti K alima t J:au Bulat dapat dipakai untuk • P rosedur : - Nama proscdur ticbk mcnghasilkan nibi jika dipang-
menentukan jenis v ariabcl. gil, m clainkan mcnghasilkan ri ndakan tcnent u.
Berd iri scndiri scbagai pernyataa n.
oeklarasl varlabel Contoh fungsi baw aan adalah sqrt , yai tu fungsi yang d ipakai untuk
Scmua variabel yang digunakan dalam program yang diciptakan oleh
memperokh akar kuad rat dari ~mcnnya (nilai yang ditcm patkan
pemrogram harus dinyatakan dalam dek larasi variabcl. Deklarasi
dalam tanda kurung). Fun gsi tid:~k b_isa dikenakan s_cl>a.gai peroyataaQ
variabel dapat diartikan sebagai pcmesanan tcmpat dalam memori
~ang ~erdiri.l; ensli ri . Penulisan:
komputer dan penentuan jenis data yang disimpan di dalamnya. Bentuk
pcndeklarasian: SORT !5!;

merupakan penulisan yang m enya lahi kaidah. Penulisan fun


VAR
dattar_varlabeL1 : tJpe_1: dalam ungka~ atau arg um en da ri prosed u r a~ .. g ·~~·
__. .. .....
Misalny a:

- dattar_varlabeLn = ttpe_n; WRITELN !SORT !5));


Dekl.uasi variabel diawali dengan kata-tercadang var. Setiap dajtar_varia·
untuk menampilkan nilai akar ku:~drar dari 5. Pada contoh ini, fungsi
b.:/ dapat berupa satu atau sejumlah n ama variabel. Jika \ebih da ri satu
sqrt digunakan sebagai argumen dari pcrnyataan writeln .
variabel, antara satu variab el dengan variabel lainnya dipisahkan dcngan
39
38
Sebuah pernyataan bisa diawali denganlabel dan nama label serca tanda
"Writeln mcrupakan salah satu{contoh dari prosedur bawaan.
' titik ganda (:). Contoh:
c ootOh' yan g lain:
Akhir: WRITELN 1'5elesal..'I;
ct.RSCR;
Pernyataan semacam ini digunakan berkaitan dengan pernyataan goto .
ctrscr merupabn prosedur dalam unit crt yang berfungsi untuk
Pcrnyataan juga boleh tidak ada. Dengan demikian:
embcrsihbn atau menghapus layar.
111
BEGIN
END.
111.3 B.AGlAN PiRNYATAAN
Bagian rcrn yar aan da ri program diawali dengan kata-tcrcadang begin, I rcta p rnerupakan program y;:mg SJh , w a!aupun rid.1k m~· nghasilkan apa-
diikuti dcngan sejumlah perny::taan dan dia khi ri dengan kata-rcr o dang
end bcscrta tanda titik/period (.). Tanda titik menyatakan akhir i
i
apa apabila program ai.Jalankan (karen a tak ada pernyaraan sama sekali).
Jenis pernyataan dapat berupa sebarang pcrnyauan.
progr am.
Bcntu k b:~gian pcrnyataan program:
i
i 111.5 PEMISAH PERNYATAAN

Pascal menggunak~n tanda tirik koma (;) scba~ai pcm is~ h Jntarpernyata-
BEGIN

I
Pernvaoan_1: an. Bcrdasarkan hal ini, mun gkin sJja dalam scbuah baris terdiri k bih
pemvarniL1: Ja ri saru pcrnyataan, dengan antarpcrny~t :l .m ,Jipisahkan dengan titik
koma.
Pemrataan_n

:t
END
Bagi an pcrnyataan program sering discbut sebagai prog ram ntama 111.6 FORMAT PROGRAM
(main program). Setiap · progr11m Pa~cal memiliki program utama.
Pascal merupakan bahlsa yang ·mempcrkcnanbn rcnuli san dengan
Biasanya hanya berisi beberapa pernyataan saja dan menyatakan
gambaraf1 proses yang dikerjakan komputcr. Adapun rinciannya (bcr~1pa
format yang dikehendaki oleh pemrograrn, asalka11 tctap rncmenuhi
aturan/kaidah program. Sebagai contoh, pcndeklarasian scperti
subprogram) ditempatkan dalam deklarasi subprogram .
VAR JumlahBarang,
111.4 PERNYATAAN JumlahCudang : BYTE;
Karalcter : CHAR;
Pernyataan menjelaskan tindakan atau kegiatan dalam program . Pernya-
taan sendiri digolongkan menjadi beberapa kelompok, diantaranya boleh ditulis- menjadi:
berupa pemyataan penugasan, pemyataan pengendali aliran dan pernya-
taan majemuk. VAR JumlahBarang, JumlahOudang : BYTE; Karakter : CHAR:
Aturan atau kaidah pernyataan dittmjukkan dalam Gambar 3-3.
atau ditulis dengan format sebagai berikut:
,.;;;,,,..n l~ , 1 i )en• pemvataan 1 - VAR

~1 1 JumlahBarang : byte;
JumlahGudang : byte;
Karalcter :Char;
G•mbar J - J. K•i4tJII pasulu•n pcrnyat4411
41

40

.1.~... :~ " ..... . _ __.,._.,... --


-~'1!-~~~.~~~~.-!''a,:;;:::a:..........~*·"o;:'-4~ 1 i'?)'
r

,. Seblipun program sangat sederhana,. program tidak begitu mudah


:eisa juga ditulis dengan format: untuk dibaca.
Kebiasaan bagi pemrogram Pascal, pernyataan yang terdapat dalam
suatu blok pernyataan (yang diawali begin dan diakhiri end) ditulis
VAR sedikit masuk ke bnan tcrhadap posisi begin dan end. Program 3-1
Jumtansaran9.
JumlahGudang dapat ditulis menjadi:
:byte:
Kara~tter
PROGRA~ Penjumlahan;
: char:
T arnpok banyak cara untuk rncnd iskan format program . Pernilihan USES CRT;
form at yang baik tcntun , ·,, .d.Jiah forma t yang m udah dibaca dan YAR a , b , c ;_ 8 'f'T E ;
BEGIN
dipahami.
Dalam Pascal dikenal ist ib':-1 blok pernyataan, terutama berkaitan CLRSCR;
dcn gan pernyataan m:~jemuk. Pcrnyataan majemuk sendiri dapat a :: 20;
dian ggap scbagai kumpul an rnnyataan yang diperlakukan sebagai b : : 30;

pcrn~·ataan tun ggal. Pernyataan majemuk diawali dengan kata-tercadang c :=a t b;


begin dan diakhiri dcngan bta-tcrc;~ciang
end . Gambar 3-4 mcnjelas- WRITEUI ('lsi a= , a);
WRITEUI ('lsi b : , b);
kan bidah pernyatJJn m aj cH: uk.
WRITELN{'c =a+ b = ',c);
REAOLN
pemyataan ma]emuk END.
~ 1 -[oem~n} \ {~oo] Program ) - 1.

~ Denga11 mcn uliskan sc pc rt i pad a Program 3- ~ . program menjadi lcbih


mudah dibaca · dan dipahami, rneskipun jumlah baris yang diperlukan
lebih b:tnyak dibandingkan dengan Program 3-·1.
Gambar J-4. Kaidah prrnyar.:an m3jtmuk

111.7 · KOMENTARIKETERANCAN
Contoh dari pernyataan majemuk adalah program mama. Dengan
dem ikian, kaidah program utama juga mcngikuti kaidah dalam Gambar Dalam penulisan program, kadang-kadang diperlukan untuk memberi-
kan ketcrangan yang mcnjelaskan isi program secara singkat. M isalnya
3-4.
Format penulisan pernyata an majemuk sebenamya bebas. Hanya saja, untuk menjelaskan masing-masing pengenal, tindakan tertentu dalam
jika salah memilih format akan menyebabkan program sulit dibaca/ prograw beserta kondisin ya, dan sebagainya. Bagi kompilemya sendiri,
dipahami . Sebagai contoh diperlihatkan pada Program 3-1, yaitu keteran gan semacam itu tidak bermakna apa-apa . Tetapi bagi yang
program untuk menghitung pcnjumlahan isi variabel a dan b. membaca program, ad anya keterangan akan sangat membantu sekali
dalam mcmahami program . Dengan kata lain adanya keterangan dalam
PROGRAM Penju.1ahan :
program , program akan semakin mudah dibaca dan dipahami .
~E~ C~T; Keterangan atau komentar dalam program dapat ditulis pada bagian
VAR a,b,c:BYTE;
mana saJa (asalkan bukan berada dalam pengenal atau kata-te rcadang atau
BEGIN CLRSCR; a : :20 ; b : =30; c::a+b;
WRITELN('Ia1 a= ', a) ; WRITELN('l!li b: ',b); di d;~lan, ~ons tanta string) dan bisa lebih dari satu baris. Penulisannya
WRITELN('C =a+ b: ',c); REAOLN E~O . diawali dcngan satu tanda { (kurung kurawal buka) dan diakhiri dengan
tanda } lku rung kurawal tutup) .
' Pro>gram J-1.
43
42
~-- --

USES CRT; { unit CRT }


{lnl rnerupakan contoh keterangan) VAR a, { vari&bo 1 operand 1 }
,' b, { vari&bel operand 2 }
{lnl juga merupakan contoh keterangan. c: BYTE; { variab~l hasil penjuMlahan
Keterangan lnl akan dlabalkan
oleh ~eomp!ler TUrba Pascal) BEGIN
CLRSCR;
untuk pernvataan t>erll<ut: • :: 20;
WRfTE\.N ! ·1n1 { bukan \ contoh komentar · l: b := 30;
c ·=
a + b;
kata bukan yang terlctak d.:Jlam kurung kurawal bukanlah suatu
keter .. ngan (karcna kunmg kur:~wal ditempatb.n d.1lam k onst:~nta
WRITELN ('Is1 a= a);
WRITELN c·~~ i b = b):
sning) , sehingga kalau pcrnyataan dicksckusi, yang ta:11pd p3d.J by;;r:
WRITELN('c:a+b= ,c);
READLN
1n1 · bukan \ contoh komentar EtlO.

Program 3-3.
buka nll\·a:

1n1 contch komentar 111.8 KLAUSA USES

Sdai n tJnda { atau } simb oi hcrpasangan (* dan * ) dapat digunakan Klausa uses diberikan hanya jib acb bag ian uoi r yang ddibatkan. Unit
untuk r:1cngawali dan mcn gakhiri komcntar. Y ang pcrlu dikcuhui, jika scndiri sebena rnya rncrupakan su~tu pu>r .1b vang bisa jadi berisi
komentar mcnggunakan awalan { harus ditutup dcngan } . T.mda (* kumpulan konstanta. tipc data. v:~ri :~bcl. prnscJ~rr dan fungsi, berdiri
dcn gan • ) ci:m { dcngan} dapat digunakan sccara b erkalang, dalam artian sendiri scpcrti program P:1sol d~n dapJt dik c·rn ~'il:1si scCJra terpisah .
~cbuah komcntar yang m cngg u n aka n (* d;m * ) bolch ber:~da
di dalam Turbo Pas cal men y;.·diakJn c;ciJ pJn bu.1!1 urJ.t stand.H. Berupa unit :
komcntar yang menggunakan { dan } atau seb alikn \·a. Scbagai contoh:
• System Berisi fungsi d :m proscdur van;;: rncrup:1kan bagian d:1ri
Pascal standar, scpnti fungsi .Hi tm.Hik , alokasi memori
1
pnl merupakan contoh komentar. dinamis , juga fa silit as yant-; nJt·n:lll!-!ani masukan/kcluaran j
!• sedangkan lnl merupakan file. ,
l<omentar ell dalam komentar, yang hanva
terakhlr Jlka aoa tanda pasangan
ctarl tanda yang mengawall komentar lnl •l
• Graph
• Dos
Berisi fasilitas yang bcrhu b un g.1n dcng:a n mode grafik. I
Berisi fa silitas yang bcrltubung.1n dc ngan sistem operasi
dan penanganan file. !
lnl merupakan baglan akhlr ctarl • Crt Berisi fasilitas ya n g bcrhu bu ngan dcngan layar, seperti
1<omentar yang dlawall ctengan l<urung l<urawal bul<a )
menghapus layar dan mcn gatur warna teks. Juga berisi
Berikut merupakan contoh program berdasarkan Program 3-2 yang fasilitas untuk membangkitkan suara speaker komputer
ditambah dengan ketcrangan: dan fasilita s untuk mcndctcks i to mbol pcrluasan , seperti Fl

PROGRAM Penjualahan;
~------~-------------------- - ------ --
<• Progr. . untuk menghitung pen jum lahan •>
.
)
i.,
• Printer
• Turbo3
dan Alt w .
Berisi fasilita s untu k mcnccr~k kc printer.
Dcngan unit ini, pro g rarn ;·.1ng cl1cip takan dcngan Turbo

c• 1&1 variabel • dan variabel b


<• dan nas11 dite•patkan ke variabel c )
•>
. Pascal J.O dapat dijai:lnkJn pad.1 Turbo Pasc.1l vcrsi 5.5.
(Catatan : Namun tid ak sduruh program Turbo Pascal 3.0
bisa jalan pad a Turbo P Js c d 5. S).
c• ------------------------------------ •>
45
44
'"! ..... , , .__.,._o£-:_...,_.~---'""'""""" ··-- ~· _..~.,___.,.,, c_...'<',Jwl9.'1•.......,._~
I
··.' r
r:,.,.
\.

G pbJ B«i'i f.,ilit" g"fik ~:ymg · te.d•p•t dabm T~rbo


• ra Pascal 3.0, khususnya fasilitas gambar yang dalam Turbo
Pascal 3.0 harus mdibatkan file bernama GRAPH.BIN
dan GRAPH .P.
• overlay Berisi fasilitas overlay.
IV PERNYATAAN PENUGASAN DAN
PERNYATAAN MASUKAN-
KELUARAN
I
pencrnpatan klausa uses adalah antara kepala program dan bagian
Jcklarasi. Pad:l contoh Program 3-3, USES CRT menyatak an program
mdibatk Jn unit CRT. Dai:J.m hal ini fasilitas dalam unit CRT yang Pcrny;!tJa n dabm Pas cai dapa t digolongkan menjadi dua bagian, berupa
d,gun•'"' ,,im pco"d"' bow"n CLRSCR . CLRSCR me<up•bn pcrnyJtJan scdc rham dan pernyataan terst rukt ur. Pnnyataan scdcrhana
pr~;<dur u,;mk mcngh•pU' hy>r . Khu'u' unmk unit SYSTEM tid•k
pcdu diny.mbn d•i• m kl •u" "'" korw• unit ini """ oron>Oti' '"" i mclipuu pcrnya taa n pcnugasan (pcmberi an nilai ), pcrnyJtaan prosedur
dan pcrnyataa~ goto. Sedangbn pcrn yataan tcrstruktur meliputi

I
pernyataan majcmuk, pernyataan bersyarat, pcrnyataan pcngulangan
J kai rkan p.1da seuap program Turbo Pascal.
1 jil--.a fro;ram mdibatkan lebih dari satu unit , antara unit satu dengan dan pcrnyat:Jan with .
Pada bab ini. hanya pernya ta.l n penugasan dan pernyataan proscdur ,
u;.it lamnva dituli s dcngan dipisahkan oleh koma.
(tcrmasuk pernyataan mJsukan-kt:!uaran) yang ak :1 dibahas.
Cvnttlh:
USES CS<i DOS. GRAPH;
Y.n:g bconi ada riga unit yang dilibatkan dalam program.
Ap:~bi\J
unit TURB03 atau G RAPH3 dilibatkan, unit CRT juga
I'
t
IV.1 PERNYATAAN PENUCASAN

Pernyataan penugasan rncrupak an salah saru cara untuk mcmbcrikan


nilai kepada varia bel. Bcntukn va:
}Hres di,crtakan dan penulisan unit CRT dalam USES harus bcrada
sebdu :11 TURB03 ;nae G RAPH3. Contoh:
i varia bel := nllal
l Nilai d:1pat dipcroleh dari variabcl, ko nstanta. fungsi atau su.nu
USES CRT, TURB03; l. ungkapan. Dalam m emberikan nilai semacam ini, tipe dar i nilai harus

1 sesua i dengan tipe variabel. Misalnya, nibi bcrtipe karakter. tcntu saj;;
tidak bisa diberikan ke varia bel bertipe bi lang.w . Juga, nilai pccahan tida~
boleh diberikan ke variabel bilangan bubr. Tetapi nilai bulat bold
diberikan ke variabel bertipe bilangan pccahan.
Scbagai contoh:

VAR
~: BYTE;

BEGIN
X := 0;

END.

Pada contoh tm, X bcrtipc byte . Seandain ya dibcrika n nilai seb:1 g:


berikut:

~!~~--.-....v-o...~ • 4 a ~ J wnt:c.. 4 ._ · ~-m -")~wt· ,-~"':t".-i:-~~-.;i ....._""~ ....~· •-~~ r.. ~·. ....:;..z_.... . .o~ ........:. ~ ~-".1-·_r ·---~--~. -.:. • ,.. _...,,.,. ...__..._..... ~
.. BEGIN
X:= 0;

,.,1
-121; - ---
akall 01en<?lakn,Ya se ..vaktu dikomp~i._
'
Kesalahan ini disebab- END.
-!2'7 boJ<,.I>h men>p>km b ""'"' diD b;hngm be<ripe byte (Tip<
,.,nponY'i k•W'""
mta<' 0 ""'P" dengw 255) . L•in h>I•Y'· jib sebelum diberi nilai 0, nilai X entah berapa 1smya.
-heri'" nib• d,bkokw ' " ' " ud>k lmg,ung "b'S""''"'
talih" Tabel 4-1 mcmperlihatkan perbandingan bebcrapa persamaan mate-
matis dan penugasan dalam Pascal.
contoh berikut:
Tabel 4- 1. Pernancllngan persamaan matematlk dan pemyataan ..~ nuoasan dalam
Pascal
""X: sYTE:
y : sHORTINT;
Per>amaan Matematik Pernyataan Penugasan
- -- --

I
BEGIN
y :"' -127; LUas = Pan)ang x Lebar LUas : = Panjang • Lebar
X:"' Y;
x = Y b2 - 4ac X = (SQrlbl - sqrtl4•a•Cll I 12·31
2a

f + ~2-Q
END. -p
Mob·m•b v><i,bd Y dibeci m!oi - 127 (dipt<kcnmbn. b""' Y Y =- -- Y ~ - p/ 2 + SQrt(SQ r!pli4- Q)
bertipe shortint). Selanj utn\·a , X diberi nilai scbc sai isi Y . Pember ian t 2 4
dd<.et:~hui,
nilai sernacam ini dipcrbolehkan. Te tari perlu sesudah
i z = b3 - Vx z=b • sqri bl - sqrtlxl 1 i3·al
pcnugasan:

). :" Y:
variabcl X tid:~k bcrnilai -127 melainkan 12Y (Mcng:q):l~) .
I
~
'
3a

Catatan: • sqr merupakan fun gsi untuk rncmpcroich ;1ibi k u~d rat
• sqrt merupakan fungsi unruk mcmpcrokh abr kuaJrat
• Dalam Pascal tid ak ada opera to1 unr uk menghitung pangka t
- variabel x \ seperti:
varlabel X b3
CD
CD sesudah
sebelum X := O: IV.2 PERNYATAAN PROSEDUR
X :=0;
Pada Bab III telah dijelaskan sccara singkat bah\v a proscdur dapat be rdiri
GarnbiJr 4-1 . lsi variabtl ubtlurn dan Jtswdalt ptmbcn'an nilai
sendiri sebagai pernyataan. Pem anggilan subprogram prosedur dilaku-
kan dengan menuliskan nama proscdur dan diikuri dengan paramcternya
Pascal, semua .v ariabel cidak pernah diinisialisasi pada saat Gika ada). Sebagai contoh, bila dalam deklarasi subprogram terdapat
Pad a
variabel dideklarasikan . lsi variabel tidak mcncntu, apabil a dalarn prosedur dengan nama . CetakJudul , m aka pcrnyataan prosedurnya
program tak pernah dibcri_!!ilai secara eksplisit . Pada contoh: adalah:

Cetak.Judul;
VAR
X : BYTE . 4{)

48
IV.! PERNYATAAN P~EDUR INC & DIC

program yang melibatkari pbprogram: Pada program yang · melakukan perhitungan seringkali ditemukan
--- _-; instruksi semacam:
pll()GR~ sut:>prog;
X-.. X+ 2;
LJSES cRT;
a ta u
pROCEDURE cetakJudul;

eEGlH
WRITELN ('PT. AOIJAYA AOIGUtlA- SE~ARANO') X :• X .:. 2;

Conroh yan g pertama. menyatakan isi X yang baru ada Ln i; X yang


END : lama ditambah dengan 2. Scd.mgka n contoh kcJ ua, mcnyata kan isi X
y:mg b:tru adalah isi X yang lama dikurangi ,..,
aEOlH (* Prosr~~ ut~a ~)
CLRSCR;
cetakJudul: { mamangg\1 prosedur cetakJudul J varlabel x varlabe l x
READLN
END.
c=o ~
sebelum sesudah
X := X + 2 X :• X + 2
progrartl 4- 1.
Gambar 4 - Z. llautrasi p~ngtnaan ptnryataoJn X :- X + Z
pada Program 4- 1,
Dalam Turbo Pascal rerdapar prosedur bawaan yang Illempunya1
PROCEDURE Ceta!Uudul; kegun:1an unr uk menaikkan atau menurunkan isi .s uatu varia bel yang
BEGIN
WRITELN {'PT. ADUAYA ADIGUNA · SEMP..RANG'l berripe bilangan bular. Prosedurnya berupa INC dan DEC. Contoh
pcnggunaan:
END:
""'"P'bn >ubp<ag"n> yang bO<Uf' p,osodu< ,bn did,fmi>ikan P'd' Pemyaraan Menggunakan DEC atau INC
bagian d<klami PROCEDURE. P<manggibn Cotak]udul pada pm-
X := X + 2 INC (X. 2)
gram utam a, menyebabkan instruksi X := X INC (X. 1) atau IN C (X)
WRITELN {'PT. ADUAYA ADIGUNA · SEMP..RANG'l X:= X - 2 DEC (X. 2)
X := X DEC (X, 1) atau DEC (X)
segera dijalankanprosedur
Pemanggilan . untuk prosedur bawaan jtrga menggunakan
""yang ,ama. B<b<"P' wntoh p<myataan p<o><du< yang mdib"k" Prosed ur DEC atau INC m cnghasilkan kode mesin yang lebih sedikit
jumlahnya, sehingga sangat cocok untuk diterapkan pada proses yang
prosedur bawaan adalah:
menaikkan atau menurunkan nilai variabel bcrbli-kali (Pengaruhnya
CLRSCR; yaitu mempercepat proses).
WRITELN l'PT. AOUAYA AOIGUNA. • SEMARANG'l;
L- v- .:..J
disebut argumen I parameter aktual
IV.4 PllRNYATAAN MASUKAN
dari prosedur writeln
Pernyaraan masukan merupakan cara lain untu k rnemberikan nilai ke
READLN lXl; variabel. Dalam hal ini, nilai dimasukkan/dibaca dari pcranti masuka11
L merupakan parameter
berupa variabel 51

50
-----·- ··--------.. . ----1
"
-- READ (X,yl;
a program dic~ekusi
. . Peranti masukan s~ndiri
beraneka ra~am,
,el~ (
~ -~"
ya papan-ketJk (keyb oard) dan dtsk-dnve (dengan med1anya untuk x
data untuk y
p~
1

£
·-y,eru a disk et).
b,gi'"ini, p<<nY' "'" m><uk= ymg dib•h" t<<bm• p•d•
a ti masukan berupa papan-ketik . Ada pun fasilitas y ang digunakan "20.
: : ; .,,bkuk>n p<mbm•n d•ta, y•im bm•p• p<o><du<'
m1mmal sebuah spas1

• Read. dan Jika terdapat kbih dari satu dau bilangan. antara d:na dibcri minimal
• Readln t scbuah spasi seb.1gai rem isah dJt3.

-enggunakan
Jlead digunakanRead
untuk mcmba ca scbu3l-. 3tau bcb cr:;pa data. Bcntuknya: I
I
Apabila jumlah data yang dimasukkan kurang dari juml::h vari;~bc\
da\arn Read, kompt:tcr akan memin ta kekurangan da ta supaya dirnasuk-
kan. Seandainya pad a saa t pernyataan READ (x, y) dik erjakan data ya ng
dimasukkan sebaga i bcrikut:
READ (VaL1 !, var..2,
var _nll
a tau
Setiap variabel (var_l, var-.2, .. ) dapat bcrtipe char , string akan
bilaogan. Jika variabel ti dak bcnioc .;,1bh saru dian t aranya ,
iI 20.1 .._]

kom puter akan menunggu SJmrai data yang sa tunya (data unmk y)
rnenyebabkan munculnya pesan kcsala:. :1n: '~ dimasukkan.
f Apabila data ya ng dimasukbn berlebihan, data sisa abn dihcrikan
cannot Read or Write variables of this tYPe
kepada va riabel ya n g diliba tka n pada opcrasi Read atau Rcadln ya ng
t t~rlctak sesud:thnya . Scbagai conro h (dengan x, y, z dan i bcrtipc
pada saat dikompilasi.
Tanda [ dan ) pada bentuk pernyatnn Head (hanya ~cb:~ga1tanda bantu l bilangan) pad a pc rn ya taan-pcrnyata:m bcrikut:
penjelasan). menyatakan yang ada di dalamnya mun~k in ada mungkin

tidak ada.(dengan anggapan variabcl , x dan y benipe bibn gan pecahan ~ READ (X, Y. Z) ;
Contoh
dan Jumlah bertipe integer):
t.
l'<
READ (I);

Jika saa t pemyataan READ (x, y, z) dieksekusi , dimasukkan data:

READ Qumlah);
20. 1 30 40 1 ~

READ (x, y); maka:


Read yang pertama dipakai untuk membaca nilai Jumlah dan contoh
• x bernilai 20,1
kedua untuk membaca nilai x dan y . • y bcrnilai 30
Pada pemyataan masukan: • z berniJaj 40

READ uumlahl;
dan terdapat data sisa yaitu 1. Data sisa ini secara otoma ti s masuk ke
cara memasukkan data ketika pernyataan tersebut dicksckusi, misalnya:
variabel i saat pernyataan i~EAD (i) dijala nkan .
Bagaimana halnya bib vari abcl vang digunakan dalam. Read bcrtipe
20 .-1
pcnekanan tombol E N TER, variabel Jumlah bernilai 20. char (karaktcr)? Berbeda dengan va riabcl bilangan, bil a ada sejurnlah
Scsudah variabel char, pemasukan amardata tidak dipisahkan dengan spasi.
contoh untuk memasukkan data x dan y pada pemyataan
Ada pun
53
52
Jadi pada penekanan

S<b•&'i wntoh clop•' daih>~ p•d• Pmg""' 4-2. E~


menimbulkan dati pada penampung papan-kerik sebagai berikut:
p~oG~~ oataKarakter ;
1J5ES C~T;
[ E rcR ,-l.FJ
vt-R CHAR;
Kar1. Kar2. Kar3
Menggunakan Readln
Keg unaan Rcadln sama dcngan R c~~L Pcr k~ ~ .my a , pada Hcadlr
BEGIN seandainya terdapat data sisa sewaktu pemasuka n data, data sisa aka~
cLRSCR; diaba ikan (tidak di bcri kan ke variabcl pada Read ~ c 2u Rcadln scsuda h·
READ (Kar1, Kar2);
nya). Readln biasa dipakai untuk mcnghindari ;~d anya brakter yan~
READ ( Kar3) ; tersisa pada penampung papan-ketik . Pcrhatika n p.ld:; dua pernyataan
WRITELN (ORD( Kar1)) ;
~RITELN {ORO(Kar2));
I READLN ()(, Y. Z);
WRITELN (ORO(Kar3)) ; READLN (J);
END.
Misalkan pada saat READLN (x, y, z) dieksckus i. .: .m F mg dmusukb1
Program ~2. ada lah:

p, d, Pcog<'m 4-2, fung'i ORD dip•bi untuk m~wkh ko~ 20. 1 30 40 1 ~

,:ari karakter yang ~nerupakan argume nny:L sisa data 1 ti dak ma suk ke varia bel i yang bc rada p.id P,cad!n s c su d:~h n y

Contoh pemasukan data untuk Program 4-~: (READLN (i)). Data i harus dimasukkan tcrscn.:k;. scw;, kcu pcrny:lt.n
READLN (i) dieksekusi .

EMl.....J Pemrograman dengan Read atau Readln


maka: • Karl berisi 'E' (Kode ASC il 69) Dengan menggunakan pernyataan Read atau ReaJln, program menjac
• Kar2 berisi 'M' (Kode ASCll 77) lebih fleksibel. Misalnya, untuk memper~l eh penjumlahan dari dua bua
• Kar3 berisi 'I' (Kode ASCll 73) nilai, nilai yang mau dijumlahkan dapat dimasukkan bukan melal1
Jika pemasukan data misalnya berupa: pemyataan penugasan, melainkan den gan memabi Read atau Readb
Dengan demikian data dapat dimasukkan sewaktu ekseku.~i progran
E~ Program 4-3 merupakan contoh program berdasarkan Program 3-:
Kar~ maupun Kar3 juga terisi dengan karakter . yang telah dimodifikasi menggunakan Readln.
ternyata baik
Lengkapnya:
• Karl berisi 'E' (Kode ASCll 69) PROGRAM PenjUMlahan;
• Kar2 berisi kara\Cter Carriage Return (CR) (Kode ASCll 13)
• Kar3 beris1 karakter Line Feed (Lf) (Kode ASCll 10)
<• ------------------------------------ *)
(• Program untuk mengh1tung penj umlah~n •)
Berbeda dengan data bilangan, pada data karakter jika tak ada karaktcr <• dua buah n11a1 •)
ymg ditokan. v.,;,bel bi" tc<i'i bPkt<< CR mu LF (p•d• d>U <• dan haa11 d1te~patkan ke variabal c •)
bilangm. k.,,ktet ,p.si, CR dan LF •k•n di•b•ikm) . Kmktet CR d,. <• ------------------------------------ •l
U Wb•nglcitk>n 'eca<a be<tunmn •kib>t ditebnny• tombol ENTEil

54
·-
~

• Write dan
US~S CRT: _ - • Writeln
VAR a,
- { variabel operand 1 }
Bentuk umum:
{ variabel operand 2 }
b, WRITE (dattar__argumenl
f variabel hasil penjualahan
c : BYTE; WRITELN (daftar__argumenl

dafiar....argumen bisa berupa sebuah atau beberapa argumen. Penulisan


BEGIN
anrarargu mcn dip isahkan dengan tanda koma. Masing ~ masing argu-
CLRSCR;
WRITE ('~asukKan nilai a :
. ) ;
men bi~a bcrupa konstanta, variabel, fungsi ataupun ungkapan .
REAOLN (a);
WRITE ('Masukkan ni lai o :
. ) ;
Contoh:
WRIT E (10, 'SEPULUH'l; { Mcncetak koflstanta Bilangan dan string }
READLN (b); J WR!TE (A • B + Cl; { Mcncctak nilai dari suatu rum us I ungb p-
c := a + b;
WRITELU('c: a + o = c); l WRITELN Uaml;
an }
{ Menampilkan isi variabel }
f WRITELN (SORT (BIIanganH: { Menampilbn nil ai kduar ai1 dari fungs i
READLN t
END . ' Perbedaan write dan writcln:

Hasil eksekusi : Write setcla h mcnampilkan semua argumcnnya , ti dak tcrjadi


perpindahan baris.
Masukkan nilai a : 5 Writeln scsudah menampilkan scmua argumennya, terj adi pcrpind ah-
Masukkan nllai b: 6 an baris.
c:: a+b=11 ::.cb.;g ai contOh:
ProJlram 4-J .
if WRITE rPemrograman'l:
~ WRITE nurbo' . 'Pascal'l:
Readln Tanpa Parameter
Readln dapat digunakan tanpa melibatkan parameter (a rgunH:n). Sebagai t akan menampilkan:
contoh:
•t PemrogramanTurboPascal ,I

I
BEGIN
WRITELN t'Tekan RETURN'!; Sedangkan:
READLN
END. WRITELN l'Pemrograman'l:
Readln tanpa argumen biasa digunakan dengan maksud untuk menunda WRITELN !'Turbo', 'Pascal'!;
eksekusi program, sampai tombol RETURN (ENTER) ditekan. menghasilkan:

Pemrograman I
I
IV.S PERNYATAAN KELUARAN TurboPascal
Pcrnyataan kelu aran digunakan untuk mcnampilkan data atau inform asi
ke peranti keluaran . Pcrami keluaran yang paling umum dipakai adalah Khusus untuk W ritcln ba lch ditulis tanpa mcngandung argumen. l
layar (monitor). Pada Pascal , tcrdapat prosedur bawaan yang dipakai Kcgunaannya yai tu untuk berpindah baris . Contoh:
sebagai pernyataan keluaran. yairu berupa:
57
56
~..,.,..-:;- ..., •..~.....,...~ ••~.'"Y:"·t• ..... ·~ ~
Menghasilkan:
WRITELN !'Pemrooraman'l· .PS OFF
WRITELN; . 12345678901234
WRfTELN !'TUrbO Pascal'!;
5.020£+01
akan rnenarnpilkan: 50.20
- 74.50
pemrograman +- baris kosong .PS ON
rurt>O Pascal Panjang medan untuk bilangan real minimal sama den )?1n 8 . Jib lebih
kccil dari 8, akan dianggap sama dengan 8. . --
Menamplll<an oata atau lnformasl dengan Membertl<an Format Untuk selain bilangan pecahan, suatu nilai yang tidak diformat akan
Pascal rnenyedi akan fasilitas untuk memformat pe nampifan suatu nilai d itampilkan dengan mcn empat i medan sepanj:mg jumlah kar.1ktcrnya.
keluaran. Dengan fasilitas ini tampilan sej umlah bil angan yan g berada J ika rnedan yang disediakan mempunyai panjang yang meleb ihi jumlah
dalam satu kolom pada suatu tabel dapat diatur supaya r;:ta bn:m, karaktcr nilai yang akan ditampilkan, maka akan didahului dcng:m
sebuah ata u sejum lah spasi.
sehingga tampak rapi.
Kalau suatu nilai real tidak diformat, has il n ya selalu dinyatakan dalatn Sebagai perbandingan an tara keluaran yang difo rmat d.111 tidak
bentuk floating point (ben tuk eksponensial) dengan m cncmpati medan diformat da pat dilihat di bawah ini (Ca tatan: n ben if< ime t: rr bcrn ila i
255; Karakter bertipe char, berisi 'A ' dan Selesai berj en i, boolea n
sepanjang 17 karakter. Contoh:
bemilai TRUE):
WRITELN ('12345678901 234557'1 ;
WRITELN (' ....... ....... ....... . 'I; .PS OFF
WRITELN (50.21 ; Pemyataan Keluaran
WRITELN (·74.51:
j WRITELN 1'123456789012345678'1; 123456789012345678
Hasilnya: ~ WRITELN I' ...................... 'l;
.PS OFF f WRITELN !Nl; 255
12345678901234567 WRITELN !Karalcterl: A
................. . . . .......................... WIUTELN !'Z'l; z
5.0000000000E +01 WRITELN !Selesall; TRUE
- 5.0000000000E + 01 WRITELN !false!; FALSE
.PS ON WRITELN !16, '= Genap'l; 16= Genap
Format untuk mengatur penampilan nilai bilangan real: WRITELN !'123456789012345678'1: 123456789012345678
WRITELN !' ........................... .. ');····· .................. ..
WRITELN !N:8l; 255
[Nnal: n : mj WRITELN !Karalcter:Sl; A
n menyatakan panjang medan yang disediakan untuk menampilkan nilai. WRITELN !'Z':8l; z
WRITELN !5elesal:8l; TRUE
m menyatakan jumlah digit pecahan yang akan ditampilkan. Jika bagian
WRITELN !false:8l; FALSE
m tidak disertakan. bilangan ditampilkan dalam oenrukjloating point dan
menempati medan sepanjang n karakter. .PS ON
Contoh:

WRITELN \!'1 2345678901234'1;


WRITELN (' ...... '! ;
WRITELN !50.2:101;
WRITELN , !50.2:10:21 ;
WRITELN !-174.5:10:21;

58

: ···~:o:"·~-.-. ,~-...,.
- -- --

Program 5-t: mengandung de.\clarasi LABEL, disebahkan


pernyataan goto. Label yang digunakan berupa Ulang. Jik.a
dijalankan, pe!!_l~taan yang pertama kali dijalankan adalah
v PENGAMBILAN KEPUTUSAN DAN
PENGULANGAN PROSES WRITELN liurbo Pascal');

Selanjutnya ada pemyataan . goto yang mengarahkan eksekusi k,


pernyataan WRITELN ('Turbo Pascal') kembali. Seb ~<c ai akibatnya paQ
layar akan tampil tulisan 'Turbo Pascal' berkali-kali . U ntuk menghentl
kan program ini, tombol Ctr/ Scroll pcrlu direkan (be rsam a-sama).
Bab in i mcn eka nkan pembica ra an mengcnai pcrr. ya taan pcn ga mbilan
keputusan terhadap dua a tau scj umla h altcrnatif dJn pcngubn gar! pr o~c~ .
I C uat.m: Pcnggunaan go to scbai kn ya d ihin d:~rkah, karena banyak sc b l
Namun scbclumnya, pernyataan goro dan pcrn yataa n majemuk akan
dibahas terlcbih dah ulu . ·
I pernyataan terstruktur yang bisa mt'ngeliminir kehadiran gora
i Pada buku ini, pernyataan gota tid ak dipakai sama sr.bli
kecuali pada contoh Program S-1.
V.1 PERI'-JYATAAN COTO
f
V.2 PERNYATAAN MAJEMUK
Pernyata an goto sering dis.ebu t sebagai pcrnyat aan loncaran tak
bersya rat. GunJnya mcmang untuk mengarahkan cksekusi program ke
pernyataan yang diawali oleh label scsu ai yang ditunjuk oleh goto.
j Pernyataan majemuk daiam Pas cal berupa kurnpulan pem ya taan yan1
dia\v:Ui oleh kata-tercadang BEGIN dan diakh iri kara-tcrcadang END
Bentuk pcrnyat:Ja n goto: ! Kaidahnya ditunjukkan pada Gambar 4-4 (Bab IV). P.Jda pcrnyaraa1
'

l
majemuk, antarpemyataan dipisahkan oleh tan da tirik komJ .
GOTO nama.Jabel Bcntuk umum pernyataan majemuk:

Nama label yang digunakan dalam goto berupa pcngenal (i,lclltijier) yang BEGIN
sudah didcfinisikan dalam deklarasi LABEL.
Pada ken yata.mnya, pernya taan goro bolch dibtakan tidak dipe rlukan
~
t
Per1Jyataan_1:
Pemyataan...2:
dalam program Pasca l, sebab program bisa ditulis tanpa mcng gu nakan f.
goto sama sckali. ~
Contoh program yang menggunakan go to dapat dilihat pada Program
i Pemyataan_n
END
5-1.
f
<•---------------•>
(* Contoh GOTO
<•---------------•>
*) r Pada saar" eksekusi program, pernyataan dalam pernyataan majemuj
dilaksanakan setara berurutan, dimulai dari PernyataaiL1 dan terakhj
adalah Pernyataan...n. i
LABEL Ulang; Pcrnyataan majemuk banyak dilibatkan dalam Pascal u~ruk memben'
tuk program yang terstruktur.
BEGIN
Ulang: V.3 UNCKAPAN NALAR
WRITELN ('Turbo Pascal');
GOTO Ulang Selain ungkapan aritmatika, ungkapan yang sering di libarkan dala1
END . Pascal yaitu ungkapan nalar. Ungkapan nal ar tcrurama digunakaJ
Program 5-1. bcrhubungan dengan pengambilan keputusan atau pengubngan prose

(:IJ

~3"._-·:.P.:.-"::;:?''·;-Y..·!'-·.!..1"
Tabel S-2. Operator boolean dalam Turt» Pascal
d ungkapan nalar, hanya ada dua kemungkinan nilai, berupa
pa a ta boolean true (benar) atau false (salah). Nilai bisa diperoleh
Jtonstanrnelibarkan operator relasi (hubungan) ataupun operato r boolean . ir Operator Bentuk
Operas I
boolean ungkapan nalar
dengan

I
not not p Negasl. Hasfl benar. Jlka p salah. Hasll salah,
aperator Relasl Jlka p benar
Operator relasi digunakan untuk membandingk:an . du_a buah operand and p and o Nalar dan. Hasll benar n· "lya jlka p dan o
ang berripe seJems. Dalam Pascal terdapat 6 buah JCniS operator relasi bernllal benar
Yang scring dipakai dalam ung bp:m nal ar, scb::lgaimana tcrcantum or p oro Natar atau. Hasll salah hanya Jlka p dan o
~alam Tabel 5-1.
r xor D xor G
bernllal satah
Nalar xor..l:!asll benar hanva ill<a satah satu
Tat>el 5·1 . operator relasl dalam Turt>o Pascal t dari p .dan Q bernllal benar.

operator relasl Deflnlsl


Kurang dart
l Tabcl 5-3. mcmperlihatkan siLH scluruh ungbpan nalar yJng menggu-
<
Leblh dart f nakan operator boolc.m.
> Kurang dart atau sama dengan . t
<=
Lebih dart atau sama dengan Tabel 5- 3. Slfat operator bOolean dalarn ungkapan nalar
>=
sama dengan t
----------------------
<> Tldak sarr.a dengan p not p p I ~ p and o
------------ f f . . ·~~ \:•. ,

Operator relasi yang tertcra pada Tabel 5-l d:1pa t di kenakan pada tipe ' salah benar satah saiah I salah ,. .· ; ' ("!. · ••

bilangan bulat, bilangan pecahan, karaktcr, boolean dan pada bcberapa


tipe yang lain. Selain operator yang rebh disebutkan , ada sebuah
operator rclasi v:mg lain, yaitu IN . Men gcnai o peratOr ini akan dib:~has
l benar salah salah
benar
benar
benar
satah
benar
I
I
salah
salah
benar
, J; {
' -.
! \·

/ ·~
'·'' .

pada bab yang membicarakan mas:~lah himpunan. p Q p oro p I Q II P xor 0 i1'

Conroh ungbpan nalar yang men ggun ak :~n operato r relasi:


salah salah salah salah salah salah
,, salah benar benar salah benar benar
Jumlah...barang < 10 { bernilai bcnar, jika JumlaiLbarang kurang
benar salah benar benar salah benar
dari 10 } benar benar benar benar benar salah
{ bemilai benar, jib Nilai lcbih bes:Jr atau
Nllal >= 90
sama dengan 90 }
{ bemilai benar, jika a tidak sama dcngan b} Prioritas operator relasi dan operator boolean dalam suatu ungkapan
a <> b
{ bemilai benar, jika T ombul berisi karakter nalar ditunjukkan dalam Tabel 5-4.
Tombol = 'Y
y }
Tabel S- 4. Pl1orttas operator relast dan operator bOolean
Kesemua contoh di atas hanya akan memberikan basil benar atau salab.

Operator Boolean _ Operator


Operator boolean terutama digunakan untuk menghubungkan dua buah Prtorltas
ungkapan nalar , membentuk sebuah un.gkapan nalar baru . Ada juga not 1 ttertlnggl - dllaksanal<an pertama kalll
oparator boolean yang hanya rnelibatkan sebuah ungkapan nalar saja. ana 2
or, xor 3
Dalam Turbo Pascal terdapat 4 buah opera to r boolean, berupa not, and,
_ =,<>.<,>,< =,>=.In 4 !terendahl
or dan xor .
63
62
~~- ~

l}ntuk mengubah urutan pengerjaan dalam suatu ungkapan nalar, tanda •f


V.4 PIRNYATAAN BERKONDISI: IF
kuf\lilS dapat disertakan. Beberapa contoh berikut menunjukkan operasi
dalam ungkapan nalar yang melibatkan tiga buah variabd bertipe Seringkali dijumpai- adanya pengambilan keputusan atau penar~
boolean (yaitu f, g dan h) : kesimpulan terhadap sejumlah kondisi. Pada masahh yang seder~
(1) not f and g or h misalnya yaitu untuk menentukan suatu bilangan bulat termasuk ge::~
(2) not f and (g or h) a tau ganjil. Contoh yang lain untuk menenrukan seorang siswa lulus ~
tidak berdasarkan nilai rata-rata yang diperoleh.
(3) not (f and g) or h
Dalam Pascal, pengambilan keputusan dapat dii l. Jplemenca.s~~
l)ngkapan yang pertama seca ra implisit identik deng:m penulisan : dcngan menggunakan pcrnya taan IF. Bcntnk rernyaraan IF:

I
((not fl and gl or h bnn ilai benar jika: . IF Ungkapan_nalar THEN
(i) h berni bi benar AT AU Pemyataan
(i i) f sal ah dan g benar
Jta u
l)ngbpan kedua identik dengan penulisan :

1not fl and (g or n1 { berniiai henar j ika : I IF ungkapan_na!ar THEN


(i) g atau h benar DAN
(ii) [ salah }
Ungkapan yang ketiga sama m aknanya jika ditulis menjadi
It ELSE
Pernyataan_1

Pemyataan..l;

i Pernyataan yang dilibatkan dalam pcrnyaraan IF bis;1 bnup:~ pernya:un


lnot (f and Qll or h { bernilai benar jika :
(i) h bcnar ATAU
(ii) f atau g sa lah } I majemuk.

Diagram alir pernyaraan IF diru r0ukbn dalam G.1mbJr 5 - !


Jika dalam suacu ungkap:m nahr terdapat o perator rclasi da n operator
boolean, ungkapan nalar yang mengandung operator relasi harus ditulis
dalam tanda kurung. Hal ini merupakan keharusan , discbabkan prioritas
operator relasi lebih rendah dibandingkan dengan operator boolea n.
t
Tanpa adanya tanda l<;urung pada ungkapan nalar yang mcngandung
operator relasi akan menyebabkan kesalahan sewaktu kompilasi. Sebagai
contoh, nilai Pilihan harus berada antara 1 sampai dengan 7. Penulisan
ungkapan nalar yang diperlukan:
salah
r-
1PIIIhan>=11 AND 1PIIIhan<=71

Bila ditulis tanpa tanda kurung:

Plllhan>=1 AND Plllhan<=7 Ia> Diagram aflr IF


lbl Diagram allr IF·ElSE
Gambar J-1. Diagram alir pcrnrataan IF
ungkapan tersebm mempunyai arti yang sama kalau ditulis dengan :

Plllhan> = 11 AND Plllhanl <=7 Pada bentuk IF yang pertama, pern yataan sesudah THEN hanya
dijalankan jika ungkapan nalar bernilai benar. Pada bcntuk IF yang
yang sudah temu akan mcnycbabkan kesalahan. kedua, Pemyataan_1 hanya dijalankan jika ungkapan nalar bernilai benar.
Jika ungkapan nalar bcrnilai salah, Pemyataan-.2 yang akan dilaksanakan .

I
64
65
' '
.
·---~------- --illll····--~

----
IF Totaljant.Jcerja > 110 THEN

contoh rnasalah 1:
Diket.ahui sebuah bilangan bulat. Bilangan tersebut termasuk genap
BEGIN
JaiTLlembur := Total..jamJcerJa - 110:
GaJLtotal := 110 • UpatLperJam +
(
JarnJembur • 1.5 • Upah~r)am
ataU ganjil? END
ELSE
pernecahan: GaJLtotal := TotaLJam_kerja • Upah_perJam:

IF oo[){BIIanganl THEN Program sekng kapnya mengenai masalah penggajian ini dapat dilih.H
~ITELN rellangan termasuk GANJll'l
ELSE
WRITELN t'BIIangan termasuk GENAP'l;

Cararan: Perhatikan, pcmyataan scbclum ELSE tidak diakhiri


titik koma . Membcrikan tanda titik koma scsudah
J.:ng~n I
i
l
pada Program 5-2. Pada program te rseb ut , karena nibi 110 bersifar unik
d an serin g d i ~ unakan dalam program n_llb di tulis dalam benruk
konstanta BATAS_LEMBUR.

WRITELN ('BIIangan termasu k GANJIL') i PROGRAM Ciaj i ;


<•--------------------------•)
(• Henentukan beenrnya gaj i •J
rnalah akan mcn yc babkan kcsalahan scwaktu kompihsi. f {• bordaaarkan jaM kerja •J
Pcncntuan gcnap arau ganjil d ibkukan J cngan mcnggu nakan fungsi ' <•--------------------------•)
bawaan bernama ODD yang be rtipe boolean: l USES CRT;
CONST
BATAS_LHIB UR = 110; <• Bataa jumlah jaJII dianggap l ernbur •)

'i
oootenanganl
UPAH_PERJA!~ = 3 000; <• Besarnya upah per jam *)
Ungkapan naiar im mcmberikan nilai bcnar jika Bilangan bcrisi
t VA R
bilangan ganjil.
Contoh masalah 2: t Total_jam_kerja,
J . ._lembur INTEGER;
Seorang siswa dikatakan lulus jika nilai yang ia pcroleh sama Jcngan
atau lebih besar dari 60. Informasi lulus tidaknya seorang siswa bisa
dinyatakan dengan :
I Gaj1_total

BEGIN
CLRSCR;
REAL;

IF Nllal >= 60 THEN


WRITE ('Total j . . kerja : . ) ;
REAOLN (Total_j . ._kerja);
WRITELN ('LUIUS'l
ELSE
WRITELN t'Tldak tutus'!; IF Total_ja•_kerja > BATAS_LE~BUR THEN
BEGIN
Contoh masalah 3: J . ._l~ur . - Total_j . ._kerja - BATAS_LEMBUR ;
Pada sistem penggajian (payroll), gaji ditentukan oleh lamanya j am Gaji_total := BATAS_LEMBUR • UPAH_PERJAM +
kerja. Jikajam kerja lebih dari 1l0 jam, besamya·gaji adalah 110 kali upah Ja•_le•bur • 1.5 • UPAH_PERJAM
per jam ditambah dengan jam lembur (total jam kerja - 110) dikalikan END
dengan 1,5 kali upah per jam . Jika jam kerja kurang dari arau sama ELSE { total j . . ker ja >= BATAS LEMBUR }
dengan 110, besarnya gaji adalah jam kerja dikalikan dengan upah per Gaji_total : : 1.0 • Total_j~kerja • UPAH_PERJAM ;
jam. Jika dituangkan dalam pemyataar. :
67
66
.'-r·
...
Rp. •, Gaji_total:12:2); Logika penyelesaiannya tentunya adalah: "jika Ali lebih tinggi dari Amir
WRITELH ( 'BeS&rnya gaj i dan Andi, maka Ali-lah yang tertinggi". Implementasi dan pada masalah
READLH ini yairu dengan menggunakan operator AND.
END.

contoh eksekusi : V.S MENGGUNAKAN IF UNTUK MENENTUKAN KEPUTUSAN TERHADAP


SEJUMLAH ALTERNAnF
I
Total jaa kerja : 100
300000.00 Beberapa con toh yang diutarakan di depan hanya di gu nakan untuk
eesarnya ~ 1 : Rp.
mcnangani pcngambilan keputusan tcrhad3p dua alternatii ~ Jja:-Adakala­
nya, kita harus melakukan pen gam bibn kcputus:m tcrhadap sejurnlah
contoh aksakusi:
.l lternatif. Mis:1lnya ~ aja , untuk mcncntukan kbs ifikasi nilai siswa dengan
kriteria:
Total j . . kerja : 150
Rp. 510000 . 00
BeS&rnya gaj i
Nilai Rata-rata Kbsifikas1 Nilai
Program 5-l.
Nilai > 90 A
Pada Program 5-2, penycnaan 1.0 dalam pernyataan : 70 :;; Nilai < 90 B
60 :;; Nilai < 70 c
GajLtotal := 1.0 • TotaL.jam_kerja • UPAH_PERJAM ; SO :;; Nilai < 60 D
dimaksudkan supaya ungkapan di sebcl ah kanan opcr:ltor pcn ugas:m (:=) Nilai < SO E
menghasilkan nilai pecah an. Tanpa adanva pc nyena:m nilai tcrseb ut, Penyelesaian terhadap masalah semacam ini juga dilaksanakan mcnggu-
akan diperoieh hasil yang salah, sckir:mya to tal jam kerja yang _ nakan IF.
dimasukkan kurang dari atau sama dengan BATAS_LEMBUR . Seb:~b II Bentuk umum pernyataan IF untuk menentukan kcputusan tt:rhad ap
kalau ditulis hanya denga n sejumlah alternatif:

Ga)Uotal := Totai_JarrLkerja • UPAH_PERJAM ;


IF Ungl<apan__nafar_ 1 THEN
ungkapan TotaL.jam._lurja * UPAH_PER)AM nJenghasilkan niiai bertipe Pemyataan....1
ELSE
integer (disebabkan TdtaLjam.Jwja bertipc integer dan kons tanta UPAH IF Ungkapan__nalar..l THEN
_FER]AM sendiri secara implisit bcrtipe i'}teger) . Padahal pada permasa- Pemyataau I
lahan ini, perkalian dalam ungkapan terscbut ada kcmungkinan melebihi ELSE !
I
dari nilai bulat positif dari kawasan integer. Supaya nilai pcrkalian benar IF Ungkapan__nafarJ THEN

I
(dan nantinya disimpan dalam variabel Gaji_total dengan benar) , maka PemyataanJ

ungkapan harus dibuat supaya bcrnilai pecahan.


Contoh masalah 4:
Ada riga orang bersaudara bernama Amir, Ali dan Andi. Bagaimana- ELSE
kah cara untuk memasti.kan Ali merupakan yang tertinggi diantara ketiga PemyataaiiJl;
orang tersebut? Cara untuk menentukan klasifikas i nilai siswa menggun akan pernyata
an IF bertingkat:
IF mnooLAJI > nnggL.Amlrl AND mnggL.AII > TlnggLAndll THEN
WRITELN I'AII merupakan yang tertlnggl'l IF Nllal >• 90 THEN
ELSE Klaslf!kasl :• 'A'
WRfTti.N I'Bukan All yang tertlnogl'l;
6
68
ELSE Implc:mentasi pogram penentuan klasifikasi A, B, C, D dan E terhadap
IF Nllal >= 70 THEN
KlaSlfikaSI := 'B' nilai seorang siswa dapat dilihat pada Program 5-3.
ELSE PROORAH Ranking;
IF Nllal >= 60 THEN
Klastflkast := ·c· (•--------------------------------------• >
ELSE C* ~lenentukan l<lastftkasi A,B,C,O dan E *J
IF Nllal >= 50 THEN
(* terhadap nilat siswa •J
Ktasiflkasl := ·o·
ELSE (•-----------------------------~--------•)
Ktaslflka sl := 'E': I USES CRT;
VAR
f
Penyelesaian di atas dengan men;;pis nilai dimulai dengan kemu11gkinan Ni lai REAL;
yang tertinggi. Jika ungka pan nalar Nilai > = 90 bernilai bcnar, rnaka l<lasifikast CHAR;
WRITEU\' ('Kias!flkasi: A.') saja yang dijalankan. Jika bernilai salah,
perneriks aan dilakukan tcrhadap nibi yang lebih rendah (ya itu Nilai >= BEGIN
70). Jika ungkapan nalar ini juga salah, rnaka ungkapan nalar berikutnya CLRSCR;
yang diperiksa. Bcgitu sercrusnya. Kcmungkinan ungkapan nalar yang WRITE ('Hasuk kan nil ai siswa : .
I
);
terakhir diperiksa adalah Nilai > = 50. Jika nilai ungkapan ini bcn:n, l' RE AOLN (Nilai);
maka perny ataan WRJTEL.f\! ('Klu.'0'ikasi: D') yang dikerjakan. Jib
salah, pernyataan WRITELN ('Kiasij1lec!S i: E') yang dilaksanakan. Untuk
{ Penentuan klastfikasi nilai }
lebihjelasnn, diagram alir dari perny:naan ini dapat diliha t pa da Garnbar
" IF Nilai >: 90 THEN
5 -/ -- K1asifikast : : ' A'
ELSE

l J:F Ni lai >= 70 THE N


Klasifikaat ::: 'B'
ELSE
IF Nflai >= 60 THEN
IOasifikaai := •c•
ELSE i
IF N11ai >= 50 THEN !
Klaaifikaai : = '0'
ELSE
l<las1fikaai :: 'E';
satah

WRITELN ('l<lasifikaai: ', 1<1as1fikasi);


REAOLN
END.

Contot) ek-kust :

Maaukkan nilai s1swa : 86

7~
Garnbar 5-1. Prnrnr..an lrlasifilttUi A., B, C, D dan E terhadap ni/ai uorang sisw1 l<las1f1kasi : 8

70

I
E

Bentuk pernyataan FOR:


ccntoh .k. . ku•i:
\ f<lr
90 FOR Pencacah := Nl~wal TO Ni/ai..Akhlr DO
MaSUkk&n nilai aiswa
Pemyataan;
J(la•ifikasi : A
a tau
P,.lriUfl 5-J.
FOR Pencacah := Nl/aLAwa/ DOWNTO Nl/aLAJchlr DO
v.& peNGlJLANCiAN PROSES DENGAN: FOR Pemyataan;
Dalam Pascal , pernyataan yang berhubungan dcngan pcn.gulang.m suatu
P:Hla kedua bentuk pcrnyataan FOR, .\."ilai_,'\wa l atau Nilai_Akhir dapat
proses ada 3 macam. Salah satunya berupa pern yataan FO R. Pernyataan
bcru pa seba ran g un g kapan b c~ ri pe o rdinal (Tipc bilan gan bulJ t.
FOR digunakan jika jumlah pen gul angan sudah d iketahui sebelum
pecahan, karaktcr dan ripe ~ang dibahas pa(h Bab VII). Pt:n w cah berupa
proses dimulai . variabel bertipe ordinal. Va riabcl pecahan tidak bo !ch digunaka n .
Pengulangan proses dengan FOR diperlihatkan dalam Gambar 5-3.
Pmcacah, Nilai_Awal dan Nilai_'\khir harus bc rupa tipc yang sama.
1
Pernyataa11 dapat berupa pernyaraan tunggal Jtau pcrnyataan majcmuk.
Pemyataan menyatakan proses yang akan diuhng.
Tentukan Contoh yang sedcrh ana penggunaan FOR yaitu unruk men ampilkan
niial awat &
bilangan asli sampai ke N . Implcmcnrasinya:
nilai akhlr

FOR Bllangan := 1 TO N DO
WRrTELN (BIIanganl;

Pencacah dengan Bilangmz meru pakan \'ariabel bertipc bibn gan bular. Pacb
dlberl nllal pcrintah ini, mula-mula Bilmzga n bernil ai I . Karma nilai Bilangrn z lebd1
sebesar nllal awal
keci l dari N (Nilai akhir) ·maka pernyat .lan WRITELN d ijal ankan. lalu isi
Bilangan dinaikkan scbesar 1, menjadi 2. Jika Bilangar1 masih lcbih kccil
benar arau sama dengan N, maka pcrnyata a :-~ WRITELN dikt:rjakan lagi, dan '
seterusnya. Dengan demik ian pada layar akan tampil

1
2
3

Nllat Pencacah N
Nllal Pencacah dtkuranot
dtnatkkan sebesar 1
sebesar 1 Program menampilkan bilangan asli sampai keN (dengan N dimasuk
kan melalui papan-ketik sewaktu program dijalankan) dapat dilihat pad
Program 5-4.

PROGRAM BilanganAs li;


fbl FOR ·DOWNTO
lal FOR·TO (•---------------------------------------•>
C•mllor .f-J. Diagram <tlir p~myataatl FOR
C• Nen~pilkan bilangan aali ~pai ke-N •l

7.
72

. ._...._..... ~ .. · ~ -. ...."........ ~ ..-~..." .~~ ... :~.....~ ( · ~-L&it!"'~ i...,E ..~.·..:.-: -~ •.. ,..J. .L .... .J . ;.... . .42#P.:SJ!f&! rp;s;s;z -.atil
~

3
---------------~--------------•> 2
1
0
USfS CRT;
C ara penulisan pemyataannya:
V-" <• Hilai akhir •>
•>
"'enangan BYTE; <• Variabel pencacah
FOR Bllangan := 5 DOWNTO 0 DO
WRIT'ELN <BIIanganl;
8EOIH Conroh berikut menunjukkan pengv,ttnaan ripe char pada variabd
CLRSCR;
sebuah bllangot.n bulat posoitif < 256: '); pe ncac;;h. Dabm hal ini, perny..ltaan H >JI digunakan unt uk menampil-
WRITE ('Masukk &n
bn huruf Z sa mpai dengan A dalam ,;;iu ~a ris .
READLN (N);

FOR Karalcter := 'Z' DOWNTO 'A' DO


FOR Bllangan :: 1 TO H DO
'M(fTE <Karalcterl;
WRITELN (B1lans&n:3};
\

END.
READUI
i PROORAH AZ;
<•---------------------------•>
I <• Hencetak huruf Z ~pai

<•---------------------------•)
A •l

I
Masukk&n aebuah Oilangan bulat positif < 256: 3
U.SES CRT;
1
VAR
z
~ ~arakter : CHAR;
3 ~
Masukkan sabuah bilangan bulat positif < 256 : 0
1 BEGIN
Protr"m 5-4. CLRSCR;
Pada program ini jika nilai 0 dimasukkan (sebagai N) maka pernyataan FOR Karakter :: 'Z' OOWNTO 'A' ~

WiUTELN tidak dikerjakan sama sekali. (Mengapa? Perhatikan diagram WRITE (Karakter);
REAOLN ·
alir pada Gambar 5-3.)
Contoh lain penggunaan FOR misalnya untuk menampilkan tulisan EUO.
TURBO PASCAL sebanyak 10 kali. Penulisan pemyataannya,
Haa11 akaekuai:

FOR I := 1 TO 10 DO
WRITELN ('TURBO PASCAL'!; ZYXWVUTSRQPONMLKJIHOFEOCBA
Progr4m 5-5.
dengan I berupa variabel bertipc....l>ilangan bulat.
Pcnggunaan FOR dengan DOWNTO misalnya untuk memperoleh
Dalam pembuatan program terkadan~ ~ perl ukan adanya pernyataan
keluaran : FOR di dalam pernyataan FOR atau y:.:-.:r_ ~t·ring dinamakan pcrnyataan
FOR berkalang. Misalnya, pada pcnr,:a ...!J untuk menampi lkan tabcl ,
5 perkalian sebagai berikut:
• 75
74
3 4 5 6
Pada Program 5-6, pernyataan yang mengikuti FOR terluar berupa
pernyataan majemuk. Dalam pernyataan majemuk tersebut ada pernya-
9 taan FOR lagi. FOR terluar digunakan untuk mengan1r tampilan
12 16
15 20 25
sebanyak N baris. Sedangkan FOR bagian dalam untuk mengatur
18 24 30 36 tampi1an pada posisi kolom (dalam satu baris).

pada Program 5-6 FOR Kolpm : = 1 TO Brs DO


... ~ - .BE.CIN .
pROGR~ TabelKali; H<!siiKall : = ers • Kolom;
<•--------- ------~----------• >
f WRITE !Has11Kaii:4J
f END ;
c• ...-buat ta.bel per!<a 1 ian • )
C• dari b i langan 1 sa..epai N •)
<•--------------------------•)
i mcnycbabbn scbanyak Brs buah nilai hasil pcrkali:tn dicct:~k pada satu
bar is (Karena itu pernyataan yang digunakan adaiJh WR ITE, dan
USES CRT;
CONST SPAS! : •3 2; f buka nn ya WRITELN).

VAR
I V.7 PENGULANCAN PROSES DENGAN REPEAT
N, Has ; 1Ka 1i ,
r
Kola., Brs WORD; (* bi3rtipe bulat o osi tif *)
~ Pernya taan REPE:\ T digunakan untuk pengulangan proses yang
·- jumlahnya belum pasri, tctapi minimal proses akan dikerjabn sekali.
Pengujian kondisi pcngula ngan p:~da REPEAT dilakukan sctdah proses
BEGIN
CLRSCR ;
WRITE ('~as ukkan ni l ai N .) ; dikerjakan . Selama ung.kapan nalar yang dijadikan kondisi bemilai salah,
REAOL N (N); f maka proses akan dikc rj aka11 terus-m encrus . Okh karcn.1 itu, pcrnya t,Jan
HEPEA T scrin g dik;irJkan sebagai pcngula ng proses sclJm:; knPc!i~;
WRITE (SPASr:4) ;
FOR Kolom ; : 1 TO ll DO
WRITE (Kolom:A) ; buat nomor kolom }
l s:1lah. Garnbar 5--t. mempcrliharkan diagram alir dari pcrnyaraa:1
HEPEAT. Pada gamba r tcrscbut , Pernyataan m cnya takan proses yang
akan diulang .
WRITEUI; { pindah baris
FOR Bra :: 1 TO N OQ
BEGIN
WRITE (Brs : 4) ; buat nomor baris
FOR Koloni : : 1 TO Bra DO
BEGIN salah
Hasil Ka l i : = Bra • Kolom;
WRITE (Hasi1Kali:4)
END;
Gambar 5 - 4. Dia.eram a/ir punyataan RE PEA T
WRITELN { pindah b&ris
END; Bcnruk pern yataan REPEAT:
READLN
END . REPEAT
llrtgram 5- o. Pernvataan
UNTIL Ungkapan...natar,
76
77
REPEAT
pernyataan yang berada dalam REPEAT-UNTIL bisa berupa sebuah WRITE ( 'Maaukkan n1la1 H: •);
pernyataan atau beberapa pemyataan. Pernyataan REPEAT dengan REAOltr"(N );
Ganjil := - ~D(H);
beberapa pernyataan mempunyai bentuk:
IF NOT Ganj11 THEN
WRITELN (BEL, 'H . harus berupa bilangan ganji 1 ! ')
REPEAT UNTIL Ganjil;
Pemvataan_1:
Pemyataan...2:
{ Hitung jumlah deret }
Jur.!lah := 0;
PemyataanJl
UNTIL ungkapanJla/ar;
Persoalan yang menggunakan pemyataan REPEAT misalnYa vanu I Pembag l : = 1;
REPE AT
Jumlah : = Jumlah + 1 1 Pembag i;
untuk menghitung jumlah deret:
1 1 1
-+-+ - + ... + -
1 3 5 N
1 I INC (Pembagi, 2)
UNTIL Pembagi > N;

{ Cetak jumlah }
Jika dituangkan dalam p~ogra m : WRITELH ('Jumlah = Jurn 1 ah : 12: 6) ;
REAOLN
PROGRAM Oeret; END .
<•-------------------------•)
(* Menghitung jumlah d~r; •> contoh ekeekusi :
(•
<•
<•
1
-
1
1 1
+- +- + •.• +-
3 5
1

H
.,
. ,
*l
i lo!ENGHITUNG : 1/1 + 1 / 3 + 1/5 t . . . + 1/ N

(•-------------------------•> lolasukkan nilai N: 5


Jumlah = 1 . 533333
USES CRT;
CaNST Progr11m J.- 7•
BEL = ... G;
VAR Pada program:
N,
Petlb&91 BYTE; REPEAT
REAL; WRITE I'Masukkan nllat N: 'l :
J~lah
BOOLEAN; REAOLN INI;
Ganjil Gan)ll := OOOINl;
IF NOT Gan)ll THEN
BEGIH WRITELN !BEL. 'N harus berupa bllangan gan)ll 1'1;
CLRSCR; UNTIL Gan)ll;
WRITELH ('MENGHITUHO : 1/1 + 1 /3 + 1 /5 + ... + 1/H') ;
digunak:m untuk memperoleh N yang bernilai ganjJI. Selama J',
WRITELN;

( Peroleh bilangan ganjil


bukaniah bilangm gmjil, m•b pmgnm •bn momint> nil•i N '"P'1
78
-- ··· ~ - - --- ------
di.Jilasukkan dengan sebelumnya menampilkan pesan (disertai bunyi
peringatan) :
n;,d,;b, "j• h..;my.
logantma alanu- (Ln), maka:
•d•l>h Y. K•bu komud;'" d;J•kuk2n opec.,; i
,
I
Ln X" = Ln Y
N harus bllangan ganjil 1 a tau
pcngujian bilangan ganjil dilakukan melalui: n • Ln X = ln Y

Dari persamaan di atas, solusi dari Y adalah


Ganjll := ODO(N ); y = c' n • Ln Xd )

I
Variabcl Car~ji l bernil ai true jika N adala h bilangan ganJ <I. V:;ri.1bcl
boolean Canjil inilah yang dipakai sebagai penguj i sesudah bta- Ana log1 -~cng an per~arnaan di at:ts. 111;;1ka
tacadang UNTIL Pcrnyataan ya ng ada di dalam REPEAT -UNTIL (l -r bunga)" = e N • Ln (i + bung>)
minimal dikerj.::kan sckali, yaitu apabila nilai yang dimasukkan rert:una
kali adalah bilangan g:mji!. 1
• (1 + bu nga) -n = <N;-c; 'l + bung>)
Pada pernyata an:
I
f
REPEAT Dalam T~rbo
Pascal, logaritma alami dapat diper<>leh rneLdui fungsi LN
Jumlah := Jumlah .. 1 1 Pembagl ; d an ckspon~nsial bisa didapatkan dengan fung\1 F. X P.
INC (Pembagi, 2)
UNTIL Pembagi > N; t PROGRI\.4 Angsur;

(*-------------------------------------- ----•)
pcrnyataan y:mg ada di d;dam REPE!\ T -UNTIL jug:t mini:nal dikerja-
bn scbh, v:titu bib N bcrnilai 1.
Contoh lain dari pcnggunaan REPEAT yaitu untuk menghirung
i
f
( • 1-4engh i
(•
tung besarny<t pambayaran
terhadap nilai tunal
angsur·•n •)

.
bcsarn ya angsunn tcrhadap suatu nilai uang yang diba yar bcbcrap,1 kali.
D:~lam hal in i penghitungan dilakukan bcrkali-kali unruk heberapa nilai
' (*----------------------------
USES CRT;
- --- . J
)

yang berbcdJ. Rumus yang digunakan: VAR


Angsuran,
Nilai Pokok X Bunga Ni la iT una i,
Angsuran
1 - (1 + Bunga)-N 8unga,
CacahPeriode REAL;
dengan : Ulang
.CHAR;
Angsuran = Besarnya pembayaran angsuran per bulan
Bunga = Besarnya bunga per bulan BEGIN
N = Jumlah periode angsuran REPEAT
CLRSCR;
Rumus ,li atas melibatbn pangkat, tetapi di depan telah dijelasbn
bahwa Pascal tidak mempunyai operator pangkat. Bagaimana carany~ WRITE ('Beaarnya nilai tunaf
mcnghitun g hasil pangkat' Pada pcrmasalahan ini pangkat dapat REAOLN (NilaiTunai); .) :
dJpcrol ch melalui manipulasi logaritma alami dan cksponensial. Misal- WRITE ('Besarnya bunga per tahun (I)
READLN (8unga); I.
nya saja, dicari nilai
~RITE ('Cacah periode Pecbayaran
xn = READLN (CacahPerfode); . J:

RO
l:l l
sunga : = eunga ./ ( 1 oo • 12); { Bung& ~r bulan }
Mau menohrtuno lagl cvm?
Angsuran := HilaiTunai • sunga I Jika selanjutnya dijawab selain T atau t, maka kondisi
(1 - 1 I EXP (CacahPeriode • LN (1+Bunga))};

tUiang = il OR tUiang = 'tl


WRITELN;
WRITELN ('Besarnya anssuran = Rp ' ·, Angauran:10:2); bernilai salah yang akan menyebabkan pernyata an dalam REPEAT-
WRITELN;
UNTIL diulang kembali . Jib yang ditekan adalah T dan t, akan
WRITE ('Mau menghitung lagi (V/T)? '); menyebabkan ungkapan nalar sesudah kata tercadang UNTIL bernilai
READLN (Ulansl; b('nar, sc hin gg a pernvatJan LhlJ m REPEAT-UNTi L-tidalc dikerjakar~
UNTIL (Uiang = 'T') OR (Ulang : 't') bgi . I
REPEAT bi sa c1HnJnfa3tbn untuk m cmbuat tahcl konversi suhu. -
END.
Humus yang di gunakan um uk meb.kubn konvc r~i :

contoh eksekusl:
n = 4/ S * c
10000000 F = 9/ 5 * C
Besarnya n11ai tunal
12.5
Besarnya bunga per tahun (~ )
311 dengan
cacah period• pombayaran
R = derajat Rcamur
3345313.26
Besarnya angsuran = Rp F = derajat Fahren he it
C = derajat Cdcius
Mau 111enghituns 1agi (V/T)? v
Tabel yang dihar:~pkan dimula1 dari 0 Cclcius s:~mpai 100 Cdcius dcngJ.:
12500000 selang kenaikan Sl'hesar 10 clerajat. Program ya ng diperlukan untu
Besarnya nilai tunai
(~) 11 pcmbuatan tabel ini dapat d iliha t pada Program 5-9.
Besarnya bunga per tahun
24
cacah periods pe~bayaran PROGRAM Suhu ;

Besarnya angsuran = Rp
582597.98 c•---------------------------------------------•1
(* Progran untuk meMbuat tabel konversi suhu *)
(* dtari derajat CELCIUS ka REJU.IUR & FAHREilHEIT *)
~a4 111enghitung lagi (Y/T)? T
<•---------------------------------------------•)
USES CRT;
Program 5-8.
CONST OERAJAT_AWAL : 0;
Pada Program 5-8, karena data masukan bunga dinyatakan dalam o/o, OERAJAT_AKHIR : 100;
maka bunga yang sesungguhnya dipergunakan dalam rumus tentunya SELANG_OERAJAT: 10;
harus dibagi dengan 100 dan 12 (bunga per bulan) . Dalam pernyataan VAR
ditulis: Celcius,
Re-ur,
sunga := aunga 1 t100 • 12l: fahrenheit : REAL;
Penggunaan REPEAT pada Program 5-8 yaitu untuk mengulang
perhitungan bcsamya :mgsuran . Setiap kali selcsai menampilkan nilai BEGIN
CLRSCR;
besarnya angsuran , akan mun ~-ul pertanyaan:

82

---~~Y.:II$>-.,q.· <!,; ':II:!J"<~


r 7 I t ' rs -- 0 ---- --- ·-r------------~-~----J ~
'"·

TABEL KONVERSI SUHU'};


Ungkapan Celcius > DERAJA T -AKHIR sesudah kata-tercadang UN-
WRITELN (' TIL, menyeba~kan pernyataan yang berada dalam REPEAT-UNTIL
WRITELN; ----------------- ' ); diproses ulang sampai nilai Celcius melebihi nilai DERAJAT _.AKHIR.
WRITELH ('------------------- Jika menggunakan pernyataan REPEAT, bagi an ymg ada dalam
WRITELH (': CELCIUS : REAMUR : FAHREtiHEil :·>; REPEAT-UNTIL atau p:tda bagian un gka pan nala r h.1rus ada yang
WRITELH (':------------:------------:--- ----- ----:');
menyebabkan ungkapan nalar bernilai benar untuk kondisi tcrtentu .
Berikut mcrupakan contoh yang men yeba bkan proses diulang terus
Celcius :: OERAJAT_AWAL; tanpa ada hentinya.
REPEAT
R ea~ur : = 4 I 5 • Celcius;
X = 0:
Fahrenheit := 9 I 5 • Celcius • 32; i.'EPEAT
WRITEUl ('!' ,Celcius:11:2,' :· . Rearr.ur : 11 :2 , WRITELN IX:<l :2l;
· :·, Fahrenheit:11 :2 , ' !') ; X:= X + 0.3;
Celcius : : Celcius • SELANG_DERAJAT UNTIL X = 1.0;

UNTIL Celciu9 > DERAJAT_AKHIR; Kcluarannya:


\~RITEltl (' ------------------------------------- - -- ') ;
0.00
READLN 0.30
0.60
EtlO.
0.90
1.20
contoh e kekusi :

lABEL KONVERSI SUHU Kc:.:tbh annya karcna kondi si X = 1. 0 tid .1k J.>e rn :J h tn~··.: 1 uhi. Jib l1ai
sepcrti ini tcrj ad i, prog ram lhpat dihcmikan dcngJil rr. .. ,· kan tom hoi
----------------------------- Ctrl Scroll.
. REAMUR . FAHRENHEIT :
CELCIUS I
I

:------------:-- ----------:------------ :
0.00 . 0.00 I
32.00 I
I

.. 10.00 8.00 I
50.00 I
I
V.8 PENCULANCAN PROSES DENCAN WHILE
.
I

16.00 I 68.00
20 . 00 I
.. Pernyataan lain yang dipakai untuk pcngulangan proses adalJh_pern yat:l-
I

2•L00 86.00
30.00 II
40.00 II 32.00 . I

I
104.00
122 . 00
an WHILE. Terutama dit,;unakan jika jumlah penguhngan bclum
diketahui secara pasti. Pernyataan WHlLE scring dikatakan scbagai
50.00 I' 40.00 I
pengulang proses selama ko ndisi benar. Diagram alir 0.1~1 pernyataan
80.00 ' .. 48.00
56.00
I
I

I
140 . 00
158.00
WHILE ditunjukkan pada Gambar 5-5. Dalam gambar terschut.
70.00 I I
Pmtyataal! menyatakan proses yang abn diul ang .
- 6.&.00 : 176.00
80.00 'I - -
90.00 II 72.00 ' . 194 .00
212.00
Bentuk pernyataan WHILE :
100.00 I 8o . oo I

------------- ---------------------- WHILE Ungkapan-nalar DO


Pemvataan;
Prog r.tm 5-9.
85
84
-t'""i"""·'\•,o-•• '' ll- •• • .:, ; 'l:;"h.o "'' ;:A. ~~~~"');.-;-~:t£:~·-;. ·.~ ·,;,-=,~n -. ;,;. \. __.._
- - --- -·-· - -----
"
PROGRAM SiaaPeabagian;
( ·-------:_---------------------------·)
<• Mencari aiaa pe•bagian bulat dari •>
(• Ponyebut 1 Pe~bilang •>
<•-----------------------------------•>
USES CRT;
VAR
Penyebut , (• yang mau di bagi •)
Pembilang, (* pembagi * }
Siea : WORD; (* sisa pembagian t )

BEGIN
CLRSCR;
Gul1lbar 5- 5. Dio,crJm alir ptrny.:~rJ,m W HILE
WRITE ( ' Masukkan nilai PENYEBUT dan PEI-lBILAI<G (po sit ii): ') :

Pada saat WHILE dikc rj ab n, mula-mula ungkapan n3la r yang


mcrupakan kon dis i pcngulan ga n diperiksa tcrlebih dahulu. Jika ungkap-
an nala r bc:rnilai bcn:n, m aka Pemya taall akan dikerj abn . Selanjutn ya
I
i

.
READLN (Penyebut , Pembilang);

Siaa : = Penyebut;
WHILE (Siaa >= Pe~bilang) DO
DEC (Siaa, Peabilang);
akan Jil ak ukan pe11gujian la gi tc rh adap ungbpan nalarny:L Selama
un gka pan nala r bernibi bcn ar, maka PeP I}'<lf c/GII akan dikerjakan terus. !j WRITELN ( 'Sisa pembagian ',
Panyebut, • dengan •, Pemb il an g, · = s; sa) :
Ber.:lasarkan sitat ini dap at disi mpulkan: l
READLN
END .
• Pada Pemyataa ll atau ungbpan nalar harus ad a suatu bagi an yang bisa
mengubah nibi un gka pan nalar untuk kondisi tertentu . Kabu tidak,
Contoh uk . . kuai: ,.
bisa menyebabka n proses yang berulang tiada hentinya. I
• Pada saat WHILE dikerjakan pcrtama kali , kalau ungkapan nalar
Maaukkan ntlai PENYEBUT dan PEMBILANG (pos itlf } : 7 2
bernilai salah, rnaka Pemya taan tidak akan dikerjakan sama sekali.
Siaa pembagian 7 dengan 2 =
Contoh persoalan yang menggunakan WHILE yaitu untuk menentu-
kan sisa pembagian bulat tanpa menggunakan operator bawaan MOD ProgrtJm 5- 10.
dan DIV. Algoritma yang dipakai untuk memperoleh solusi sisa
Pada program 1111 , pernyataan
pembagian bulat adalah scbagai berikut (algoritma ini hanya berlaku
untuk bilangan bubt positif saja): WHILE (Sisa >= Pembllangl DO
DEC <Stsa. Pembllangl;
(1) Masukkan PmyebuL
(2) M asukkan Pembilarrg. -ada lah implemcn tas i lan gkah nomor 4 dalam alg.pritma untuk mempe r-
(3) Bcrikan nilai Pwyelmt ke Sisa oleh sisa pc mb agi:m bulat (yang artinya, selamJ nilai Sisa lcbih bcsar dari
(4) Selama nilai S isa lebih bcsar dari atau sama dcngart Pembila11g, mak• ~atau Sa rn a dengan Pembilang, maka kuran gibh ni lai Sisa sebesar
, ku rangilah nilai Sisa scbcs:u Pembilang .
(5) Ta mpilkan nilai Sisa ke layar.
Pembilang ).

87
86
-.....-..-1
WRITELN ('-------------------------------------~--');
pernyataan yang ada da_lam ~HILE
(DEC (Sisa, Pembilang)) tid~ REAOLN
dikerjakan sama sekah apab1la pada saat masuk ke WHILE, kondiSl END.
WBILE bemilai salah (yaitu jika Per1yebut < Pcmbil.mg).
pernyataan WHILE juga bisa diterapkan untuk menggantikan pernya-· ProJram 5-11.
pan R£PEA T. Sebagai _contoh, progra m ten tan g pembuatan tabel
Pada Prog ram 5-11 . kondi si vang digunakan dalam WHILE berlawanan
kooversi suhu (Program :>-9) akan dJlaksanakan dengan menggunakan
dcngan kondisi pad a pcmy.naan REPEAT (sew.:lah - UNTIL). Pad a
pernyaraan WHILE pada Program 5-10 . Pada Program 5-10 ungkap- progra m ini , kondi ~ i nn g d1gu nakan bcrup3
ao nalar sesudah kata- tercadang WHILE harus dibuat tcrlcbih dulu
bernil ai benar, supaya perny:n:~:~n y:m? mc ngikutinya diproses. Celcius < = DE R.1_1A L.·Lt.:l I !I?
-
Sclama nilai Ct'iciu.i JJL1S il1 kuran g d.ui Jtau samJ dl.'ngan nilai
pROGRAM Suhu;
<•------------------------------- --------------•) DERAji\T_AKHIH, mak.. ,c lu ru h pcrn yat::an nJ ,Ij cmuk yang m cng-
(• Program untuk membuat tabal konversi suhu *l ikuti WHILE akan dip ro:>cs tcru~.
(* dari derajat CELCIUS ke REA).1UR t. FAHREtlH E!T * )
<·---------------- --------- --------------- -----•)
USES CRT ; V.9 PENYELESAIAN SEJUMLAH ALTERNATIF DENGAN PERNYATAAN
COtiST OERAJAT_AWAL = 0· CASE
DERAJAT_AKH I R = 100;
Dalam P:~s cJ I, pcr m as:d ahan dcng;m scjumlah altcrn ,u if atau pilihan
SELAHG_OERAJAT= 10:
VAR
Celcius, I berganda dap:tt diselesaibn ,ic n g:~ n nrcn gg unabn pernyat<lan CASE .
disamping mcmak ai pcn1 ya raan IF. Bcnruk umum pcrnyJtJJn C ASE:

l
Reamur, CASE Pemi/ih OF ··
Fahrenheit REIIL ;
Daftar_Konstanra_1 : Pemvataan_1;
Daftar_Konstanta-2 : Pemvataan_2 .
BEGIN
CLRSCR;
TABEL KOHVERSI SUHU') ;
WRITELN (' Daftar_Konsranca_n : Pernvacaan_n
WRITELN; I ELSE Pernyataan.JTJ I
WRITELN ('--------------------- ------ --- ---- - -----') ; END;
WRITEltl ('! CELCIUS : REA).IUR : FAHREIIHEIT ! ');
WRITELN (':------------:------------:------------!'); Pemilih merup:~kan variabcl yang mcngatur pcrnyat Jan mana ya ng akan
dieksc;:kusi. Jika isi variab ~1 Pemilih sesuai dcngan nilai ya ng ada dalam
Celcius ·: : OERAJAT_AWAL; Dajtar_}(onsfrmta_l, Pern yataan_1 · yan g dijalankan . Jika isi varia bel
WHILE CelciUS <= DERAJAT_AKHIR DO Pemilih sesuai dengan nilai yang ada dalam Dafiar_Kollstama-2, Pemyata-
BEGIN
an_2 yang dilaksa nak an, dan scterusnya . Apabila nilai Pcmilih tidak scsuai
Reaaur : = • I 5 • Celcius ; dengan nilai dalam Dajtar_Konstantn_1 sampai Dajiar_}(omtanta_n, maka
Fahrenheil::= 9 I 5 • Celcius + 32; pernyataan yang mengikuti ELSE yang dikerjakan Ui ka ELSE ada).
Untuk lebih jclasnya, proses pcngcrjaa.n dalam pcrnyJ ta.Hl CASE dapat
('!',Celcius:11:2,' :·. Reamur :1 1:2, dilihat pada Gamb::tr S- 6.
WRITELN
• :·. Fahrenheit:11:2, • !'); Perlu dihtahui :
.- Celciua + SEL~~G_DERAJAT;
Celcius • Kurung sik u pada bentuk pcrnyataan CASE semata-mata menerang-
END;
89
88 . ~··
- Js*tr I

Permasalahan yang menggunakan CASE, misaln ya untuk menentu-


pn bahwa yang ada di dalamnya (yaitu ELSE Pernyataarz_m) bersifat kan besamya gaji berdasarkan golong an .
ptional (boleh ada boleh tidak ada).
~tf1lyataarz_1
sampai dengan Pemyataar~_n dapat berupa pernyataan CASE Golongan OF
tuflggal ataupun pernyataan majemuk. 1: Gall : = 100000;
• pernyat!lan yang mengikuti ELSE bisa berupa sebuah pernyataan 2: Gall := 200000;
tunggal ataupun beberapa pernyataan cunggal (tidak pc rlu berupa 3: Gajl := 3500Xl;
4: Gail := 500000
pernyacaan n:~~emuk) . . . . .. . END;
• variabcl Pemnth harus b ewpe ordmal. Vanabel Pmnldt ndak boleh
Pcrn y:ltaan dt ltlS mcnyatakan:
bertipc pecahan.
• }{onstanta yang dilibatkan dabm C.I\SE h:n us bertipc st:j en is dcngan
- Jika Golongan adalah 1, besarnya Gaji yaJtu fl mon
vJriabel Pentilih. - Jika Golongan adalah 2, besarnya Gaji yaitu 21)(1000
- Jika Golongan adalah 3, besarnya Gaji ymu ]'i(){)()()

i
- Jika Golongan adalah 4, besarnya Gaji yaitu ')!J(J()(){)

Pemvataan 1 atau jika dinyat:tkan dengan pernyataan IF:

IF Golongan = 1 THEN

I
l
Gail := 100000
ELSE
IF Golongan = 2 THEN
Pem'l'taan 2 _j--JI Gail : = 200000
ELSE
f 11: Golongan = 3 THEN
\ lf Cali := 3500(X)
ELSE
IF Golongan = 4 THEN
Gall := 500000;

Contoh program yang menggunakan pernyacaar, CA SE dapat dilihat


Pemvataan n pada Program 5-11. Pcmyataan CASE digu na£;m unruk mengatur
pilihan yang akan dikerjakan, yaitu untuk mem Jlth:
Perhitungan luas segitig a _
Perhitungan luas segiempat
Perhitungan luas lingkaran
Pemvataan yang Selesai
menglkutl ELSE Jib variabel Pilihan berisi karakter '1' maka pro~ pcrhitungan luas
segitiga yang dikerjakan. Jika Pilihan bcrisi b rd krer '2', proses
pcrhicungan luas segiempat yang dilaksanakan . Jt ~ a Pdtlwt baisi
karakrer '3', proses pcrhitungan luas lingkaran yan g ' :t.-.:kst: ktt ~ i . Apab ila
Pili/tan bcrisi karakter '4', varia bel boolean Sdesat '!tberi nilai TRUE
(benar) dcngan maksud untuk mengakhiri prose~ Ct da lam REPEAT-
G.am!J <~r 5- 6. Diagram alir ptrnyataan CASE
91
90
WRITELN ('MENGHITUNQ lUAS SEGITIGA');
pada program ini. kata-terc-adang ELSE dalam CASE diguna- WRITE ('Maaukkan ntlat ALAS dan TINGGI: ');
Illengendalikan nilai pilihan yang di luar kawasan karakter '1' READLN (Alaa, Tinggt);
dengan '4', dengan mcmunculkan pesan: "Salah pemasukan data Luaa : : Alas • Tinggi I 2.;
WRITELN ('LUAS = ', Luaa:G:2);
WRITE ('Tekan RETURN . untuk •elanjutkan ');
p~R ~ HitungLuas; READLN
,.-------------------------------• )
(• penssunaan CASE untuk me milih *l
(• perhitungan luas :
.. )
. 2.
ENO: { akhir luas segitiga }
BEGIN

.
WRITELN ('MENGHITUNG LUAS SEGIEMPAT');
)
- segiti ga WRITE ( '~l6sukkan nilal LEBA R dan PAIJJANG: ' ) :
<• - segi~mpat
)
READLH (Lebar, Panjang)~
<*
<* - lingkaran •l Luas :: Panjang • Lebar;
<·-------------------------------•) WRITELN ('LUAS = ', luas:6:2);
us ES CRT; WRITE ('Tekan RETURN untuk melanjutkan ');
CONST BEL = ·a; { Karakter BCL ) READLN
END; { akhir luas aagiempat }
VAR
Alas, Tinggi, • 3. BEGIN
P.anjan9 , Lebar, WRITELN ('MENGHITUNG LUAS LINGKARAN');
Jejari, WRITE ('Masukkan nilai JARI-JARI ');
RE AL ;
Luas READLN (Jejari) ;
CHAR ;
Pili han Luaa :=PI • SQR (Jejari);
BOOLEAII;
Selasa i WRITELN ('LUAS = ', luas:6:2);
WRITE ('Tekan RETURN untuk melanjutkan');
BEGIN REAOLN
REPEAT END; { akhir luas lingkaran )
CLRSCR; ( Hapue layar }
WRITELN (' MENU PILIHAN'); '4' : Selesai := TRUE;
ELSE
WRITELN;
WRITELN ('[1] Menghitung LUAS SEGITIGA ' ); WRITELN (BEL, 'Salah Pilih !');
WRITELN ('[2] Menghitung LUAS SEGIWPAT'); WRITE ( 'Tekan RETURN untuk melanjutkan');
READU~
WRITELN ('[3] Menghitung LUAS LINGKARAN');
END { akhtr CASE
WRITELN ('[4] Sel.eeai');
WRITELN; UNTIL Sele.ui;
,) ;
WRITE ('Pilihan [1 .. 4) WRITELN ('S&leaai ... ')
READLH (Pilihan); END.

CLRSCR ; { Hapue layar , Contoto ekaekusi :


Selesai : =FALSE : { io\e<t.:>uat SELESAI bernilai aalah} ,
CASE Pilihan OF I-IENU PILIHAN
'1' : BEGIN
9J
92

' .........~........ .._ ......,, ~·,..· .. ~ ~· ., , ...~ ..'<"'·_I ~ -;.., , . .f.:~ ..-~- - •. ~
tampil hanya hila L!mur bcrnilai 13, 14 dan 15. Tulisan 'masa SMA'
(11 ~enshitung LUAS SEGITIGA tampiljika nilai Umur terlttlk antara 16 sampai dengan 18. Apabila U111 t1r
(2 1 ~nghitun9 LU~ SEGIEMPAT berisi selain nilai 0 S.lJJlpai dengan 18, tulisan 'masJ kuliah atau bckcrja
( 31 Menghitung LUAS LINGKARAN atau pensiun' yang muncul pada layar.
( 41 Seles&i Bcn tuk seperti pach conto h di depan biasanya ditulis dJiam ben tuk
s11hrange, scbagaim am ya ng d isajikan pada contoh bcrikut:
Pili han [1 .. 4] : 1
CASE Umur OF
MENGHITUNG LUAS SEGITIGA 0.. 5 : WRITELN • ;nasa ~A. LITA atau TK'l;
10 12 6.. 12 : WRITELN !'iasa SD'l;
Hasukl<an nilai ALAS dan TINGGI
13..15 : WRITELN masa SMP'l;
LUA9 : 60.00 16..18 : WRITELN f masa SMA'l;
Tekan RETURN untuk melanjutkan ELSE
WRITWt r masa kuliah atau bekena atau penslun'l
MENU PILIHAN END;

Scbuah con toh lagi rcm :mg pcrn yataan C:\SE, ya itu bcrupa ,iaftu
Hanghitung LUAS SEG!TIGA

I
[1]
(2) Menghitung LUAS SE G IE~PAT
1-;o nstant :t yang tcrJi;: dari s Jbun gan du a bu.lh srtlmm.f!f . l hi scpc rt i in •
(3) 1-!enghitung LUAS Li tl GKARAtl
memang diperkena nL.n. Pt nulisannya dipis:thbn dcngan tancl:J korna.

[4) Sel9sai
CASE Karal<ter OF
'a'..' z'. 'A' ..'Z' : WRmLN ('T~?rmasuk !<aral<ter HURUF !'l;
Pi 11 han [ 1 .. 4 1 5
'0' ..'9' : WRITt ~N nermasuk karal<ter ANGKA !'l;
f ELSE
Sa 1 ah p i l i h !
Tekan RETURN untuk ~elanjutkan i
~
END;
WRITELN nermast.:r t:Jukan l<aral<ter ANGKA maupun HURUF !'l

Pacla con toh ini , jika isi ·.-aria bel Karakter bcrad:t ant:tra 'a' sa mpai dcngan
Program 5- 12. 'z' atau antara 'A' s•:npa1 dcngan 'Z', maka pcm yataan IVRITEL'-:
CASE ya ng mclibarbn
Berikut ini merupakan conto h pcrnyataan (' Termasuk karakter HL'RUF ! ') yang akan diekscku si. Jika isi variabci
untuk mcn garur suatu
beberapa nilai konstanta, yang digunakan Karakter berupa karakter anrara '0' sampai dengan '9', pcrn yataan
pernyataan yang akan dieksckusi . WRITELN ('Termasul! karakter ANCKA !') yang dikerjakan. Jika isi
Karakter bukan angka ~taupun huruf, maka pernyata an y:tng m cngikur i
CASE Umur OF ELSE yang dikerjaka..~.
0,1,2,3,4,5: WRITELN t'masa BALITA atau TK'l;
Program yang dapat menenrukan scbuah karakter tcrm as uk HUR UF.
11 , 12 .
13,14,15 : WRITELN t·masa SD'l; ANGKA atau bukan HUkUF maupun ANGKA dapat dilihat pada
6,7,8,9,10, : WRITELN rmasa SMP'l; Program 5- 13.
16,17,18 : WRITELN r masa SMA'l;
ELSE PROGRAM CekKara~ter
WRITELN rmasa kullah atau bekerJa atau penslun'l
END; <• ------------------- ---------- •>
<• ~enetukan ~at u karakter •)
Pad a ccntoh ini, rulisan 'm asa BALIT A a tau TK' aka n tampil jika Un!Jif
bcrnilat 0,1,2,3,4 atau 5. Jika U mur bcrnilai antara 6 sampai dcngan 12
<• termasuk ~G~ . HURUF •J
vang campi! pada layar yaicu tulisan 'masa SO'. Tulisan 'masa sMP'
(t atau bukan ANGXA .aupun HURUF •>
l):">

94
~

,. ----------------------------- •>
~ CRT;
.,_ Karal<t•r : atAR; VI PROSEDUR DAN FUNGSI
11f01M
cLRSCR: { Hapue layar }
WRITE ( 'Masukkan eobuah karakter
.) ;

READ (Karakter );
r ~c· >.;r. !l11 ,i:JL!m Pasc.ll Ll lllU r.l llYJ tc r ~U S tlll .Ha s scjumbh subp rog ra n l.
C A.'~ E K&raktar Of
.,.... ·z·'
WRITELN ('T•rcasuk karakter HURU~ ! ');
J..,. ,·l.•cr:t da. m subpro br.llll d J!.l m prog rar :1 Pa scal rnentbc:rik:tn bam·3k
kt.' tH1 tun g ~n . Di:mtar.m ya m emudahkJn pcmbuatan a t:~u pc maham am
••• .. • z' tcrha dap p ro gram, k:ncna program dibcn tuk dari blok-blok y:mg kcc il ,
WRITE LN ('To~suk karakter ANCKA !~);
·o· .. '9' dc ngm ~ctiap bag ian mcmpunvai tugas tcrsL~ndiri. Scti:tp subpro g ram
ELSE d a p at diuJi at:1u dipclajari rrr !epas dari detail subprogram lain. l )t s:ml -
WRITELN ('Suka n karakter ANOKA Maupun HURUF ~ ')
p ln g itu jika tcrdapat proses tcrtentu dab m program yang sanl:l ata u
END { a khir CQ. . )
hamp ir sarna dan seri ng dilibatkan dabm program, pcng g un adn

I
EM(). s ub program dapat mcngurangi duplib si kode (menghcmat koJc In csi n
h :1sil kompilasi) .
Bcntuk subprogram dalam Pascal dapa t bcrupa proscdur dan fu n g si.
cantoh ei<IIOkUSi : D i~a mp i ng adanya prosedur dan fung si bawaan (scperti prosdur

taasukk:lll Mbuah karakter : A


Tenaasuk karaktar HUROF !
'I
J
!
writcln dan fungsi odd ), pemrograrn jug:t bisa menciptabn scnd1ri
,·._, ng si ataupun prosedur.

V1.1 MENCENAL FUNCSJ ARITMETIKA

M&SUkkan sebU&h karakter : G i P:t sLal menyediakan scjum lah fungsi ya ng berkaitan dengan opcrasi
ar iunctika, scpcrti memperolch n ila ! kuadrat , akar kuad rat, sinu s auu
Teraaeuk karakter ANOKA I
L·osinus suatu sudut, logaritma alami dan cksponensial. Lengkapnya
MaeUkkan MbUah kar&kter : + adalah scbagai bcrikut:
Bukan karakter ANOKA -upun HURUF 1. Abs(X) Untuk mcmperoleh n ilai mutlak (absolut) argurncn .
Kcluaran fungsi bertipc sesuai tipe argum cn.
Program 5- tJ. Contoh: Abs(-7 .2) - 7, 2
Abs(- 157) - 157
2. ArcTan(X) Untuk memperoleh sudut (dalam radian) ya ng m cmi-
liki tangcn sebesar X. Keluaran bertipe real.
.1. Cos(X) Mcnghasilkan cosinus dari sudu t X (sud ut dinyatakan

t 4. Exp(X)
dalam satuan radian). Hasil bcrtipc real.
Untuk mcmreroleh ek~po~lcnsial dari argumen X .
yJ\tu e' . Ha~il bertipc real.
5. Frac(X) Untuk memperoleh bagian pecahan dari argumcn X .

97
96
nilainya lebih besar atau sama dengan no! dan kurang dari
Hasil fungsi bcrtipe real. 1.
Contoh: Frac(123.456) _. 0,456
Frac(-123.456) _. -0,456 Ca tatan: • Turbo Pascal menyediakan prosedur bawaan bernama
Untuk mendapatkan bagian bulat dari argumen X . RaHdomi:u (tanpa argumen), yang mcmpun yai kcgunaan
Hasil bcrtipe real.
Contoh: Int(50.5) _. 50,0
Int(-50.5) _. -50,0
I
J
untuk merriberi inisialisasi tcrhadap generator pembangki~
bilangan acak dengan nilai ac1k (diambilkan dari jam
siste m) . Inisialisasi dapa t dilakukan juga dcngan membrri
Untuk mempcroleh logaritma alami/ na tural (basis e), nilai kc variabcl bawaan RandSecd .
yaitu nilai
elog X I • Scmua f<t~iliDs di Jtas bnacb dalam unit Svstc m . l3i ~ J
digunakan tanpa mcn yc butb n uses system .
Hasil bertipc real.
Menghasilkan nilai 3,14159265336. I Vl.2 MENCIPTAKAN FUNGSI

I
Untuk memperoleh nilai pcmbula tan dari suatu bihng- Fungsi merupakan salah satu jcms subprogram. Ap:1bib dipangg il,
an real. Hasil bertipe bilanga n bul:.n (lo ngi nt). pengcnal yang mcrupakan nama fu ng si abn mcn ghasilbn sc bmh nil ai .
Nilai ini dikat:~bn scbagai hasil dari fung3i.
Conroh: Round (-5.6) _. - 6 ~
f Bcntuk umum dcklarasi fu ngsi :
Round (5.5) - b
Untuk memperoleh sinu s d:.ui SLJ" I sudur (sudut FUNCTION nama_fungsl tdaftar _parameter _forrnall :tlpe_hasll :
tO. Sin(X} dinyatakan dalam satuan radian). Hasi! bertipc reaL t sagian_deklarasUungsl ;
Mcnghasilkan nilai kua drat dari :ugumen X. Hc sil
f Bagian_pernyataan_tungsl;
11. Sqr(X)

I
fungsi bertipc sesuai dengan ripe argumcn.
Parameter formal dari fungsi bisa ada bisJ tidak ada. Tanda kurun g
·contoh: Sqr (10) - 100 (bular)
h:~n ya ada apabila fungsi men gan dung parameter (argumen) formal.
Sqr (10.0) - 100.0 (real)
Menghasilkan nilai akar kuadrat dari argumen X. H:lSil .la.Jiar_para meter_Ji.mllal mempuny ai bentuk:
12. Sqrt(X)
fungsi bertipe real. t daftaU :tlpe_1; ... : daftar_n:tlpe_n
Contoh: Sqrt (100) - 4 10.0 ""
Sqrt (25.0) - 4 5.0 denga n masing- masing daftar_i dapat berupa saru atau beberapa parame-
Untuk memperoleh bagian bulat da ri X (real). Hasil ter. Jika lcbih dari satu , antarparam eter di pisahkan dengan rand a koma.
13. Trunc(X)
bertipe longint. Tip c i menyatakan ripe dari parameter formal dalam dajtar_i. Tipe_hasil
Contoh: Trunc (10.6) -4 10 dan tipe param eter dapat berupa pcngena1 tipe (tipe yang didefinisikan
Trunc (- 5.6) - 5 dalam deklarasi TYPE atau tipe bawaan) atau berupa string.
Bagian dcklarasi fungsi dan bagian pernyataan fungsi p'ada dasarnya
Selain fungsi aritmetika terdapat fungsi yang berkaitan dengan
sama dengan struktur program. Bagian deklarasi bisJ saja mengandung
bilangan, berupa: deklarasi CONST, V AR, TYPE, LABEL dan bahkan juga subprogram
Fungsi ini dipakai untuk menentukan argumen I (bcrtipe lain . Bagian pcrnyataan diawal i dengan BEGIN da n diakhiri dengan
longint) berupa bilangan ganjil atau tidak. Hasil berupa END serta tanda titik koma.
true jika argumen I merupakan bilangan ganjil dan false jika Contoh sebuah fungsi:
I berupa bilangan genap ." --
Dipakai untuk menghasilkan bilangan acak yang nilainya FUNCTION jumlah ta, b: INTEGERl: INTEGER:
lebih bcsar atau sama dcngan 0 dan kurang dan I. BEGIN
Argumen bertipe word dan basil juga bc.: rtipe word. Jumlah := a + b
ENO;
Untuk membangkitkan bilangan acak bc.:rtipe real yang

99
Contoh penggunaan fungsi di dalam ''r 11!
{uogsi ini _terdapat ~ua bua_h para~etcr for~aidengan masing-
r ~nrn ;, _,_
memperoleh nilai terbcsar di antara 3 buQh nil<1i I) ' ma.Amya untuk
bercipe tnteger. Ttpe hastl fungst berupa mtcger pula. Fungsi fungsi seperti pada contoh di atas, nilai terbc-lii4t 'd en!<;~~ menggunakan
rnengandung bagian deklarasi. Bagian pernyataan berupa: membcrikan instruksi: __ . ap~t dtperoleh dengan

WRfTELN !'Nilal terbesar = ·. •


Makslmum !A, Makslmum(B, C))) ;

Mul a-mula dica ri n ilai cerbesa r J ntara ll d .t11 r 1 111 . . _


bJ.gian pc rn ya taan ada pcrnyataa n : anta ra A dengan nil ai kcluaran dari .\[, 1 ~. , 11 • du a n ndai terbesar
'"' "' f IS, r :; .

jumlan := a ... b I PROGRAM ~~ tohFung:i 1 ;

<• --------------- ------------


yang mcm bcrikan nil ai pcnJum_lah an da ri :1 da n ~ k<.: p mdalt (nam::. I . ----- •)
<• CAntcn pendekl e raaian dan ~nuvtt.,. ~
fuogsi). Pernyat:Jan sc m acam 111 1 h arus Jd.l dalam tungs1, y.1 1tU untuk
roenycb utkan nil ai da ri hasil fun gsi.
Contoh yang lai n berupa fungs i u ntuk mempcrolch nil ai tcrbcs:lr di
l t.~nva1 •1
<• ---------------------------- --- -- ------ --- •>

aotara dua buah nilai .


t
I
USES CRT;
VAA

FUNCTION Mal<simum !8111, 8112: REALI : REAL; ; A, 8, C : REAL;

BEGIN
IF Bil1 > 8112 THEN
--
FUNCTIW ~ k eiau. (X, Y: REAL) :- llf Al

Mak.simum := 8111
ELSE

END .
Maksimum : = 8112

Pada contoh ini, dalam bagian pan yataan fun gs i. nama fung si ;\!o b i1Htm:
't
~

,t
BEGIN
IF X

ELSE
> Y 11-IEN
lt• k ahous : =X
tv.ka;- : : Y
diberi nilai sama dengan Bi/1 j ib Bi/1 bc rnil ai leb ih b cs ar dari Bi/2 .1Wl ENO; { ~khir tungs1 Makai.u.
dibcri nilai sama dengan Bi/2 apabila Bi/1 tidak kbih dari Bi/2.
Suatu fung si diaktitkan dengan m emanggil fun gsi, dengan car.< BEGIN { progr- ~ }
mcnyebutkan nama fun gsi beserta parameternya Uika ada). Pada saat CLR3CR;
pemanggilan, fung si dik enakan sebagai operand di dal am suatu ungkap- WRITE ( 'Maaukkan tiga buah b i l - - 1 , ,
-·- I );
REAOLH (A, 8, C);
an. Misalnya:

WRITELN !Makslmum!S, 2ll: -


WRITELH ('Hi lai t.rbe-r

REAOLH -
= '
Makai- (A,~-~- (8, CJJj .
.
merupabn instruksi untuk m enampilkan nilai yang terbesar antara 5 dan
am.
')

ttaan •k . .ku.i :
Fungsi tid ak dapat dikenabn sebagai pernyataan yaog berdiri sendiri.
M&.ukkan t 1 ga buah bil angan : 20 •~ 4
Pcnulisan seperti 17
Hilai tert.-r = 4. 530000000or~ t

MakSimum IS. 2l: Program 6- 1.

tidak diperkenankan .

101
100
..
.
· ··~.: )'.:i: ~ ~-·4 ..r.·
PTAKAN PROSEDUR PROCEDURE Garfa;
kedua yang dapat diciptakan oleh pemrogram berupa
Deklarasi prosedur terdiri tiga bagi:1n, yaicu judul prosedur,
dan bagian pernyataan.
CotlST GARIS_GAIIDA : •205;
VAR Pencacan : BYTE ;
BEGIN
FOR Pencacah: :t TO 22 DO
I
[n. judul prosedur -~
I
(
END ;
WRITE (GAR IS_GAiiDA) ;
WRITE ltl

( akhir Prosedur garis


baglan deklarasl prosedu~
BEGHI 1 Program utama )
I
f
CLRSCR ;
')
Garig ; J

~ '
WRITEU I ( SFASI: 5, ' TURBO PAS CAL' );

I
Struktur dtklaraJi prosrdur Garis; ,,

READLN rf-
prosedur mempunyai bentuk:
i fi4D.
1~+ c~
PROCEDURE nama_prosedur fdat:ar_parameter_forma D; I r>rQ.,\\'
I- Contoh ekse k:.Jsi _y_<.''
(
dengan dajtar_pararneter...fonnal bsa berupa scbuah atJU bcbe rapa paramc t '-.\1-l"'
ter. Bcntuk dajtar_param r:rer_li.>nPw/ scpcrti pada pendekla rasian fungsi
Jib prosedur tidak memiliki parameter, bcntuk judul pr oscd ur bc ru pa:
f
~
=========~== = === = =====
TURBO PASCAL

PROCEDURE nama_prosedur;
I ==== === = ==== ===~ ======

j Program 6-l.

Bagian deklarasi prosedur dan bagian pernyataan prosedur pada dasarn:·a


sama dcngan struktur program. Bagian deklarasi bi sa saj:~ mcnganJung Pada conroh :ni. di dalam prosedur Garis tcrdapat dcklarasi krn,•,tan ra
deklarasi CONST, V AR, TYPE , LABEL dan bahkan juga subprogram GAHIS_GAND:\ · dan varia bel Pencacalz . Pcmanggilan proscdur p:.d.,
lain. Bagian pemyataan dia'\\'ali dengan BEGIN dan diakhiri dengan program utama (berupa: Garis) mcnyebabbn bagian pernyataa,, yang
END serta tanda titik koma. · ada di dalam prosedur dieksekusi. Seandain ya pada program utam:. tidak
Contoh sederhana tentang program yang mcngandung deklarasi PASCAL.pernyataan Garis, hasil eksekusi hanya berupa tulisan: TUJJ BO
terdapat
prosedur:

----
VJ.4 MELEWATKAN PARAMETER DENGAN NILAI ATAU REFE'RIHSl
PROGRAM ContohProsedur1 ;
c• ----------------- -------------------- •> -- P"'"'«" d'P" da,w,.bn d•l•m '"bp,og"m (pm«du, ""''P"'
c• Contoh ~embuat dan ~emanggil prosedur *l fungsi) melalui
(reference) . dua buah cara, ya itu berupa nilai atau refermsi
( ~
-- - - - - ----- --- ------- * l
Cara pertama. melewatkan paramatcr dcngan nibi, mcnyebabb n 'lliJ.J
USES CRT; parameter aktuai disalin dalam parameter formal subprogram . !J'.T'f.;'lrl.
CotlSTSPAS I = ' 32 ; l:.lra ini, pengubaha n terhadap p arameter di dalam su bprogram rtd.Jc
lllengubah nilai parameter akrual yang digunakan dalam pemanggtlu!
102
"···
){JJ
!::

pemangg ilan prosedur j umlah tidak berubah nilainya. Hal ini disebabkan
gram. Gambaran mengena1 hal m1 dapat dilihat pada Program yang dilewatkan dalam parameter berupa nilai. Gambar 6-2 menjelas-
kan proses penyalinan parameter aktuaf yang dilewatkan dalam bentuk
parameter nila i. Tanda panah menyatakan bahwa nilai parameter
formal merupakan salinan dari parameter aktual, tetapiparameter formal
pROGRAM Parameter1;
tidak mempengaru hi parameter aktual. Berdasarkan sifat seperti ini,
<• ----------------------------------- ----- *)
<• contoh ~elewatkan parameter dengan nilai •>
<• ------------
.)
parameter yang digunakan· untuk pemanggilan subprogram bisa berupa
ung ka pan, nria hcl. konsranta J~Ju ti.mgsi (asalkan tipc pcmangbil d,Jn
p:~ra mc tcr fo rm :tl n ya sejeni ~).

USES CRT; Parameter L o~ 3S i memorl .. Parameter


VAR aktual formal ·
X, Y, Z : IHTEGER;
10 .. ...... ........... ........ [ 10 _ ,
_ I 10 ] ................................... X
PROCEDURE juml a h (X, Y, Z: ItlTEG ER); t
t
BEGIN
WRlTELH ("lsi Z mula- mula dalam prosedur=
z) : t 30 ............... ..............~0 - ~ l.... ........... ....... .. y
z::X+Y;
WRITEUI ('lsi Z oalam prosedu r k ini
Elm; "{ akhir prosedur jumlah }
z):
I z .............................t=Ji_' 1 • 20 ].. ................................. z
BEGI N
CLRSCR; C a m ba r 6- ! . ProJ t J mtltu•atltan par.Jmtru nilai
Z :: 20; X : = 4 5; Y : = 7 5 ;
WRlTELN ('Isi Z sebelum prosedur dia~tifkan = Z) ;
C ara kcdua untuk md cwa tbn parameter kc dalam subprogram vairu
dcn gan rcferensi. Pada card ini , Jlama t .pa ram eter aktual dilew:ttkan kc
jumlah (X, Y, Z};

WRlTELN ('lsi Z sesudah prosedur diaktifkan

READLN
= z):
I subprogram (bukan salinan isi parameter scbagaimana pada c:~ra !
melewatbn parameter dengan nilai). Dengan dcmikian antara parameter '
aktual dan parameter formal mcmpunyai kait~n lokasi memori yang ;
sama. Sebagai akibatnya, pcngubahan nilai di dalam subprogram ;tbn
END . berpengaruh terhadap parameter aktual yang digunakan sebagai re-
manggil subprogram. Khusus uncuk cara ini, param eter forma l harus ;
Contoh eksekusi : diawali dengan kata-tercadang var (Karena itu parameter formal seperci ·
ini discbut parameter variabel) , sedangkan parameter akcualnya harus
lsi Z eebelum prosedur diaktifkan = 20 berupa variabel (atau konstanta bertipe) .
lsi Z mula-•ula dala• prosedur: 20 Pad a Program 6-4 (berdasarkan modifikasi dari Program 6- 3),
lsi Z dala• prosedur kini = 120 parameter formal yang terakhir (yaitu Z) berupa parameter variabel.
lsi Z sesudah prosedur diaktifkan = 20 Berbeda dcngan Program 6-3, pada program 6-4 pcngubah:m niLii Z ~
dalam subprogram berpcngaruh terhadap parameter pemang giln y.1.
Program 6 - J.
Gam bar 6- 3 memperlihatkan iluscrasi mengenai parameter vari a bel dan
Pada Program 6- .3 sekalipun dalam prosedu r Ju mlafr, Z menampung hubungannya dengan parameter formal. Khususnya untuk parameter Z
penjumlahan antara X dan Y. ternyata varia bel Z yang digunakan dalam
105
104
_________________. ........ ._~-

;:arameter lokasl memorl Parameter


acrdiri sebagai parameter variabel), karena parameter formal dan mual tonm~
r.:,- rrrrrrllff aktual mempunyai kaitan memori yang sama, maka 'f>erubah-
afanl subprogam juga mempengaruhi parameter aktual. A .................................. [~- J I. 10 !... . .................... .. . . . X
Pada cara melewatkan parameter dengan referensi, nama
parameter aktual dan parameter formal boleh berbeda (tidak
harus sama). Parameter aktual harus berupa variabel atau B ..................................[ 30 f [ -+ 30 ]. ................................. · Y

konstanta bertipe.

PROGRAM Par~eter1;
. )
i z -~ .. .. ...... .. ....... ... ........ .. .........
[____ melewatkan parameter
;:

<• dengan reterensl


<• Contoh me1ewatkan parame ter dengan referensi •l
G ; nb~r 6 - 3. Proses rndtwarlran P~•~mttu ~trupa nilai dan rrjtrtnsi
<• -------- --------------------- ------- •>
Vl5 PEMBATASAN PENCENAL
USES CRT;
VAR
X, Y, Z : I~TEGER;
f P;,;,·a l mcmungkinkan pcmbJIJ·.:•n tcrh adap suatu pcngenal, ent.lh " .J
C..::-u pa \'ariabel, label, ripe, kow.t:tnta ataupun subprogram, dalam h!ok
z : rrneGER 1: pa('tl{l'terer t~ :-:;"ntu . Dcngan cara scpcni int , ; ua tu pcngcnal (ider:tijler) bisa dikcnd~i
PROCEDURE ju:nlah (A, B: ItHEGER; VAR ~rrna-1. ~.;.:1m suaru bl ok, tctap1 tid;<k tl..pat diakses olch blok yang lain. Dcn~ ar:
BEGW :..::·J lain , sua tu pcngc1 ::Jl dap.11 didekbrasikan sccara lokal (terb .tt.tsj.
z .- X+ y
.:i::bc rapa siiJ t tcntan ~ pcrllLJtasan pcngcnal:
END; { akhir prosedur jum1ah }
• ~-.tatu pcngc nJl tidaJ.. ci kcnJI Ji luar blok tempa t pcngenal terscb ut
~idc klarasikan . M isa lnya v:tria bcl M yang dideklarasikan pJda
BEGIN
CLRSCR;
::~oscdur Pros_B . \' Jr:abcl u,, ridak dikenal pad:1 prosedur PrvsJ::.
Z :: 20; X : = 45; Y := 75; 'P'"~rnH€r CU<-+cJ~) :Jros_A maupun pro gram Ut.lltJ~ . Variabcl M dalam hal ini dikatJ kan
WRITELtl ( 'Isi
Z sebelum prosedur diaktifkan = z);
::ers ifat lokal terhad ap pro~rdu r Pros.J3. Dcmikian pula proscdur
.'Jros.J3 dan Pros_C. Kcdua Jlr<•;cd ur ini hanya dikenal dalam Prt~s_-4
::an tidak dapat diabcs pad4 prog ram utama.
jUIIIlah (X, Y, Z);
• Suatu pengenal yang bersi fat Y,lobal dapat diakses di sebarang bagi:~ n
. I
Z);
WRITE~H ('lsi Z sesudah prosedur diaktifkan = ;::rog ram, kecuali pada blok tt:111pa t pengenal dengan nama yang sa m a
ildeklarasikan secara lokal. Scbagai contoh, variabel Y merupakan
READLH
·:aria hcl global karcna didekbr:.sikan pada bagian deklarasi progr;~ m
END .
..;:a ma. Variabcl ini dikenal P••h prosedur Pros-A dan Pros_C, tet :tpi
:..1k dapat diakses pad:.~ proscdur Pros.J3 (sebab pada Pros.J3 terdapat
Contoh eksekusi: ?-=ndeklarasian Y sec'lra lokal1.
= 20 • ?.:ngcnal yang didek larasikau d:d am suatu subprog ram dapat diab cs
Isi Z sebelum prosedur diaktifkan
120 ~ Jda subprogram yang diddnmikan di dalamnya, asalkan dal.nn
Isi Z sesudah prosedur diaktifkan =
>'..l bprogram yang dil ingkup1u y~ tidak terd apat pendeklarasian terh a-
C4p nama pengenal yang sam •. Sebagai contoh yajtu konstanta Bl:'L
Protr•m '-4 .

I!
106

.~·-~·; ·~ ...... ~ ...of.~vl>~~~'<"' '~t.J<.f" ................. ·~--.......t~ · <.,t;_ ....<.•'•··':.:.io


--

dengan syarat subprog ram yang memanggil h arus didcfinisikan


ses udah subp rogram yang dipanggil. Sebagal contoh, pada Gambar
Y : BYTE; • 6.,- 5, di dalam prosedut Pros_C terdapat pernyataan prosedur Pros-B.
ya ng tentun ya dimaksudkan untuk menjalankan prosedur Pros-B.
PROCEDURE Pros_A; Seandain ya dengan susunan pendefinisian seper ti pada Gambar 6 - 5,
CONST disisip kan pern yataan prosedur berupa Pros_C pada Pros_B, akan
BEL = ·c: menimbulkan kesalahan .
PROCEDURE Pros_B;
VAR Yang pcrlu diketahui , bcrbeda dcngan variabe! global, variabcl yang
Y : BOOLEAN ;
bcrsifa t lobi mcmpu oyai )ifa t h.111y:1 scmencara. Suacu variabcl lukal
M : REAL:

I
BEGIN hanya abn dicipukan jika subprog ram dipanggil dan akan hilang - ·
kcluamya dari subp rogram.
M := 3.1 4:
WRITELN !BE L, 'M pada PROS_B = ', Ml ; A danya _pem bacasan per.gcnal dalam suatu blo k (subp rogram) m t· m -
WRITELN I'Y dalam prosedur PROS_B = ', Yl; bcrikan keuncungan. pcmrogram da p ac menddinisikan kcmbali n:1ma
END : { akhir prosedur Pros_B }
suaru peng enal tanpa perlu k uacir mcm penga ruhi atau m embcri cfek
PROCEDURE Pros_C sampingan tcrhadap pcn gcna l dengan mma ya ng sa m a tcrktak pa da
su hprugrarn lain. Dengan cara seperci ini, suatu prog ram dapac dibua t
I BEG!N 1
Pros_B ; inclt·pcndcn terhadap subprogram lain, sehingga mudah diuji/dipahami
WRITELNIBEL.'Y pada prosedur PROS_c = ',Yl: I I scca ra rcrpisah (terhadap subprog ram lainnya) .
I END: { al< hir prosed ur Pros_c } '

BEGIN { awal prosedur Pros_A }


y := 50;
1

I
;
t
WRITELN IBEL,'Y dalam prosedur PrOS_A = ·. Yl;
Pros_c !Yl:
WRITELN I'Y dalam prosedur Pros_A = •• Yl;
II
II
END: { al<hlr prosedur Pros_A }

BEGIN { program utama }


CLRSCR;
Pros_A;
READLN
END.

Gamh<Jr 6-5. S truktur blok program

ya ng didefinisikan pada prosedu r Pros-A. K onstama ini4apat d iakses


pada proscdur Pros_B dan Pros_C, sebab Pros_B dan Pros_C
didcfinisikan d i dalam Pros__A, dan pada Pros_B maupun Pros_C rida k
terdapac pendefinisian BEL.
• Jika terda pat dua buah subprogram ya ng didefinisikan pada blok yang
sama, subprogram yang satu bisa m emanggil subprog ram kedua

108
109
VAR
Pendldl!t:an : !SO, SMTP, SMTA, Akademl, UnlverSlbsl;

VII MENGGUNAKAN TIPE ENUMERASI Terapi penciinaan tipe enumerasi dalam TYPE mempuny;u krkb\h~l'l
DAN SUB~ANGE . bisa dipakai untuk menentukan jenis keluaran dari s·u atu ti.m~''
enumerasi ataupun uncuk menentukan tipe argumen dari su.ttu pr•'~<'\ltH
atau fung si. Misalnya:

TYPE PendldikanTertlnggi = !SO. SMTP, SMTA, Akademi, UnlversltJSI.


FUNCTION DataPenCJidikan O(ode : BYTEl : Penaidll<anTertingg!;
Pascal memungkinkan pemrogram mendcfmisibn t ipc scndiri . DiantJra
tipe yang dapat di ciptakan oleh pemrogram bcru pa ripe cnumerasi dan
PROCEDURE Pc:roJenanoataPenalaii<an !Koae: BYTE:
tipe subrange. Kedua tipe data ini sebenarn y a tc;-g olong sc bagai tipe da ta
VAR Pendldlkan: PendldlkanTertinggll;
sedcrhana atau ripe skalar , ya itu tipe d a ta yang ha n ya mcmpunyai sehuah
nilai dan tak dapat diba gi-bagi lag1 menj adi bagi :m yang lcbih kecil. Tipe
skalar sendiri meliputi seluruh ripe bawaan yan g sudah dibahas pada Bab Man(aarnya yang lain dapac diiihat pada bagian "Mcmpcrolch Fk" ' · "
Enumerasi Berda :.:ir kan Nilai O rdinal".
II (seperti char, boolean: Tipe st ri ng tidak ten nas uk tipe-s kalar). Diantara
tipe skalar ada yang disebut sebagai ripe o rd inal. T er masuk dalam tipe
Pembandlngan Elemen Enumerasl
ordinal adalah semua tipe skalar kecua li tipe real.
Scperti halnya bibllgan, nibi enumcrasi
Vll.1 nPE ENUMERASI didcfinisibn: bisa dibandingbn. Mi,.d," ''

Tipe enumerasi merupakan tipe datJ yang beris i sejumlah pcngcnal yang rPengena11 . Pen0E:na12. Pengena/3 . ...l
diciptakan olch pcmrogra m. Tipe ini dia\\"ali Jcn gan kurung bub dan
rnakJ:
diakhiri dengan kurung tutup dan rnasing-ma >i ng pcngcnal ya n g ada di
dalamnya dipisahkan dengan tanda koma. S·: bagai contoh: Pengena11 < Pengr:nJI2 < Pengenal3 < ...
(SD, SMTP, SMT A , Akaderni, Universitas) Dcngan demikian, pada pendefinisian:
yang mendefinisikan ripe enumerasi dengan pengcnal berupa SD, (SO, SMTP, S .~11T A, Akaderni, Universita..s)
SMTP, SMTA, Akademi dan Universitas.
bcrlaku:
Tipe enumerasi bisa didefinisikan dalam bagian TYPE. Selanjutnya
tipe yang didefinisikan dalam bagian TYPE tersebut dapat digunakan
untuk menentukan tipe varia bel dalam deklara.si V AR . Sebagai contoh:
SD < SMTP
SMTP < SMTA
TYPE
TlpePendldlkan = !SO, SMTP, SMTA, Akademl, Untversltasl; SMTA < Akadcm i
VAR Akademi < Universitas
Pendldlkan : TlpePendldlkan:

Pendeklarasian di atas menyebutkan bahwa variabel Pendidikan dapat MemperoJeh Nllaf Ordinal
bcrisi salah satu dari pengenal SD , SMTP, SMT A , Akademi dan Masmg-masmg
· . dcrnc n dalam t1pc
. cnumera.s1. ~ ~punya1
· m·1Jl· nliu,.l
Universitas. yang menyatab n .Jr uran dalam pendctJm~ra::.
0
- . Pos1s1
. . yJng pcrf.llll ·'
Disamping menggunakan. cara seperti di ata.s, pcndeklarasian variabd daJam pcndefinJ.SJJn
. mempunp1. 111la1
. . 0 nol . DJlarn pt:n
. d<:·fi fll\) .11 1
juga bisa dilakukan tanpa menggunakan deklarasi TYPE. Misalnya: Tip ePmdidikan a ta u fJCI!didikatl Tertincegi. 1

110
II
Fungsi yang .~ ip akai untuk keperluan masalah ini yaitu:
~

nilai ordinal SD ,.. 0 Pred : L=nruk mcmpcroleh pendahulu elemen enumcrasi argu~~~ya
nilai ordinal SMTP =- 1 Succ : Unt11k rncmperolch pengikut clemen enumerasi argumennya
nilai ordinal SMT A ~ = 2 Pcrlu dik::>ul~ui:
nilai ordinal Akademi = 3
nilai ordinal Univeritas = 4 1111 Ekmen !"'cn.l ma dalam ripe cnumerasi tidak mcmpunyai pcndahulu.

• Elcu1c:1 1:: .:k hir dalam ripe cnumerasi tithk mcmpunni pcngikur.

Nilai o rdinal dari elemen enumerasi dapat dipcroleh dengan mcnggu- lkhn.lp .l ,-,,,:: ,, h:

nakan fungsi ord . Misalnya pemanggilan ,


P~· ''l.ll' ;~d.;: ! H a~il kdt:aran h. ctcrangan
FUili!, Si
ORO !SOl --------------------------
:) 1 ~ ED 1S \ \I' A) SMTP Pcndahulu S.\ 17';\ adah h
menghasilkan nilai 0. S.\17P
I'HfD (S \ .\TP) so Pcndahulu S.\!TP ada bh SO
ORO !SMTAl f SUCC (Sf)' SMTP Pmdahulu SD adabh SMTP

menghasilkan nilai 2.

Memperoleh Elemen Enumerasl serdasarkan Nllal ordinal ckngan


l PHED (S I )\

SUCC ( L' ""crs itJ~)


SO tidak mcmpun yai penda-
hulu
L'llil'c'rsira.' ti tbk mcm punyai
'h:a nil ai
I
ordinal diketahui , elemen cnumerasi dapat diperoleh pengikut
-------- - -----
J~\n ggunakan bentuk:
/ ~
jik.l ~u.iw 1 .1ri "' hc l diberi ni!Ji lu~il
fu ngsi PRED tcrhad :lJJ elcmen I
pe-rtama at.J u r-un gsi SUCC terhJlhp clemcn tcrakhir dalam ripe.
nama_tipe_enumerasl lnllaLordlnall

Scba gai con toh:


Pendldlkan := PendldlkanTertlnggl !Ol;
I cnu m cras1 "lkJil 1n~·nycbabkan l:csalah:lll (Kcsalahan :1kan dilaporkan snt
cksekusi, k.d.lu dala m program discrtabn pcngarah kompiler berupa
{$R+} ).

Pemyataan di atas akan membuat variabd Pcrzdidika11 bcrisi SO. Scbab Pemasukan/Penampllan Data Enumerasl
elemen dalam PendidikanTertinggi yang mempunyai nilai ordinal 0 adalah Pcmasukan ,lara enumerasi ke suatu variabel cnumerasi tidak
menggunak.ln proscdur READ atau READLN. Pcrnyataan seperti:
pengenal SO.
READLN IPendlalkanl;
Memperoleh Pendahulu dan Penglkut -
Pascal menyediakan fungsi bawaan yang dipakai untuk memperoleh merupabn pcrnyataan yang salah.
1
elcmen yang terletak sebelum atau sesudah suatu elcmcn cnumerasi. Lalu bagaim ana ca ranya mcmasukkan data ke variabd cnumcrasi yang /·
Dalam hal ini terdapat istilah: diatur meblui papan-ketik sewakru cksckusi program? Perhatikan
contoh proscdur bcrikut:
{ll Pendahul u (Predecessor)
Menyatakan elemcn yang terlctak sebelum suaru clemen enumerJ--
PROCEDURE MemasukkanDataPendidlkan
si. !VAR Pendldlkan: PendldlkanTertlnggll;
Pengikut (Successor) VAR
Menyatakan elemen yang terlctak scsudah suatu elemen enumera- Kode : SHORTINT;
si.
11
,.
· -~ ----
,.--

USES CRT;
TYPE
NilmaHari :: (Senin, Selasa, Rabu, Kamis,
I'Mi!SUIQ(an Kode Pendkllkan:');
Jumat, Sabtu, Mi n ggu);
so !31 Akademi');
141 Untversttas'l; VAR
sMT?
Har i : lla~~~aHar i;
WRITEL.N 1'121 SMTA'l;
Wfl!TELN:
REPEAT - BEGitl
WRITE I'Kode 10 .. 41: 'l; CL RSCR;
READLN !Kadel;
IF tKode < Ol OR !Kode > 4l THEN FOR Hari :: S ~nin TO ~inggu 00
WRITELN l'Kode yang anda masui<Kan salah !'l CAS E Hari OF
UNTIL tKode >= Ol AND tKode <= 4l; Sen in WRITElll ( ' Se n i n");
Selasa ~IRITEll l ( ' Selasa');
pendldll<an := Pendldll<anTerttnggl !Kodel Ra bu WRITEll l ( 'Rabu ' );
END: Kamis WRITEL" ('Kam is 'J ;
Tarnpak pada prosedur MemasukkanDataPendidikatl, mula-mula yang Jumat WRITEL" ('Jumat ' );
dimasukkan dari pap:m-ketik berupa kode ordinalnya dan disimpan pada Sa btu ~I RITEUI (' S abtu') ;
variabcl Kode. Untuk memperoleh elemen enumerasi, perintah yang Minggu WRITEL" ('M i nggu') .
EtiO;
digunakan:
READUl
pendldll<anTertlnggl tKodel END.

Hasilnya dibcrikan kc variabel Pmdidikatl melalui penugasan:


Hasi l Ekse kus i:

Pendldll<an := Pendldll<anTerttnggl tKodel;


Sen in
Berbeda dengan tipe skalar bawaan (seperti char dan boolean), data Selasa
enumerasi tidak dapat ditampilkan dengan prosedur WRITE atau Rabu
WRITELN . Jika misalnya diberikan instruksi: Kamis
Jumat
WRITELN I'Pendldlka!l tertlngg! : ', Pendldlkanl; Sabtu
~inggu
akan menyebabkan kesalahan berupa "Cannot Read or Write variables of
this type" sewaktu dikompilasi.
Program 7- 1.

contoh program Pada Program 7-1, pernyaraan :


Program 7-1 merupakan contOh program yang melibatkan tipe
cnumerasi. Program dipakai untuk menampilkan nama-nama hari dalam
FOR Han := senln ro M!nggu oo
scrninggu. CASE Han OF
Senin : WRITELN l'Senln'l;
PROGRAM TampilkanHari; Selasa : WRITELN c·selasa'l;
<• -------------------------- ------ •> Rabu : WRITELN ('RabU'l;
1• Contoh penggunaan tipe enu~~ •> Kamls : WRITELN ('Kamls'l;
(• -------------------------------- •>
115
114
____,__~~-~- -·----··- ~- · - - · · --'-- -- ~· -·-- ...--.- -
VAR
Jumat : WRITELN !'Jumat'l; Kode : SHORTIIIT;
sabtU : WRITELN 1'5abtu'l; BEGIN
MlnggU : WRITELN I'Mingg(l'l
CLRSCR;
END; WRITELN ('~asukkan Kode Pendidlkan; ');
ditulis dengan menggunakan pernyataan repeat sebag;;. , • ....._'\' WRITELN ('[OJ SO [3) Akademi');
WRITELN ('[1) SMTP [4) Unive~sitas') ;

~ar1 := senln; WRITEUl ('[2) SmA');


REPEAT WRITELN;
CASE Hari OF REPEAT
senln : WRITELN t'Senin'l: ~IRITE ('Kode (0 .. 4): ');
Selasa : WRITELN !'Se!asa'l;
RabU : WRITELN f' RabU'l ; REAOLU (Kodl);
Kamls : WRITELN t•tcimis'l; IF (Kode < 0) OR (Kode > 4) THEN
Jumat : WRITELN f'Jumat'l; WRITEUI ( 'Kode yang anda maeukkan aa lAh I ')
SabtU : WRITELN !'SabtU'l;
UNTIL (Kode >= 0) AIW (Kode <= 4);
Mlnggu : WRITELN !'Minggu')
END;
Pl'ndidfkan = ~ Pond1d1k8nTI:rtin~gl (KutJe)
IF Harl <> Mlnggu THEN
Etm;
Hari : = succ tHaril
UNTIL Harl = Mlnggu;
1 P£10CEOURE_ ~tenentukanGaj I
1
Pada pcrnyataan di atas. fun gsi SlJCC dipakai untuk merr"r- ·-. · :, ' ' (Pond1d1kan: Pond1dlkanTo~t 1ngg1);
berikutnya . Pcrnyataan IF digunakan untuk memcriks~ -. "' ' 1
1111
VAR GajiPok ok R~AL;
dengan Minggu atau tidak . Jika sam a dcngan .\finggu maka i ..::::-.:- ,~._ '\ BE Gill
tidak digunakan lagi. And;,ikata pemanggilan fungsi SU C ~ ~ ' ,.\· •· •• CLRSCR;
kondisi IF , akan mcnimbulkan kesalahan sewakm H ari b:::::-· :·•11'~''
CASE Pendldlkan OF
Sebab Minggu tidak mempunyai pengikut. so
11 G ~~k .- 30000;, ,
Contoh yang lain dapat dilihat pada Program 7-'2. Masu;.::: "'·.,; ! '' ~

StHP o'aj 1Po,kok ·- 45000;


berupa nilai ordinal dari suatu tipe enumerasi. Selanjur::"- J \·n•f.l'
Sf-ITA Oajif'okok · - 55000;
enumerasi dipakai untuk me~entukan besarnya gaji pok01.
AKADEMI : GajfPokok · - 155000;
PROGRAM Gaj i ;
(' ---------------------------------------------- . UUIVERSIT AS : Oaj i Pokok .- 82000
END;

~: :::::::_:::::~~~~:=~-~:~::::~::_:::~~~~~:: : WRITELN ('Gaji Pokok: Rp GajiPokok : 10:2)


END;
USES CRT;
TYPE BEGIN (* Program Utama *)
Pendldlk.anTertlnggl = !SO, SMTP, SMTA. Al<ademl. UniversitaS);
~emasukkanOataf'endidika~ (Pendidikan};
VAR
Pendldil<an : PenClldlkanTertlnggl; ~enentukanGaji (Pendidikan);
I REAOLN
PROCEDURE t4emasukkanDataPendi di kan END.
(VAR Pendidikan: PendidikanTert.inggi l i
117
116
-~ - ~ · __ .,._,.,_,...-.. ,....,- ,:,..I J-.oi,J'IU , ,,__... , .... _ "'f>>,'l' _~,,
.

Disamping menggunakan tipe yang didefinisikan dalam deklarasi TYPE,


deklarasi variabel subrange dapat ditulis sebagai berikut:
~asukkan Kode Pendidikan:
[0] SO [3] Akadeai VAR
[1) S~TP [4] Universitas HarfTugas : sentn..sabtu;
[2) SMTA'); Karakter : 'A' .. ·z·:
Kode : 0.. 4;

Kode ( 0 .. 4 ] : 1
Tipe submnge hiasa digunakan d:1 lam prog ram untuk mcmbc ri
Gaji " Pokok = Rp 45000.00
kejclasan tentan g kcmungkinan nilai dari SLU tu d :Hd.

Vll.2 TIPE SUBRANGE


Tipe subrange merupakan tipe den g:m kawasan merupakan bagian dari
tipe skalar. Pendefinisi;mnya di a,,·ali dengan nilai awal, diikuri dcngan
tanda subratzge dan diakruri dcngan nibi akhir dari kawasa n ya ng
dikehendaki pemrog ram. BcncuknyJ:

NilaLawal .. -NilaL..ali:hlr

dengan syarat : Ni iai_awal s !':ilrzi_a khir.


Beberapa contoh pendefinisian ripe subrange:

TYPE
oataHari = !Senln, Selasa. Rabu, Kamls, Jumat. 5abtU, Mlnggu); <• enumerasl •l
KodePendldlli:an = 0.. 4;
HariKer)a = sentn ..Sabtu;
HurufBesar= 'A' ..'7:;

· Pada endefinis · n, KodePendidikan mempunyai kawasan antara 0


sampai den , HariKerja mempunyai kawasan antara Senin sampai
dengan Sabt11 , HunifBesar memiliki kawasan antara 'A' sampai dengan
'Z' (semua huruf kapital). Tipe-tipe yang telah didefinisikan seperti ini
selanjutnya dapat dipakai dalam deklarasi variabel untuk menentukan
jcnis data dari variabel. Misalnya:

VAR
HarfTugas : Har1KerJa:
Karakter : HurufBesar;
KOde : KodePendtdlkan;

!1 9
-----

CONST
Males = 255;
TYPE
VIII PENGOLAHAN DATA STRING VAR
StrlngTerpan)ang = STRINC!Maksl;

Kata : STRINC!20J;
Kallmat1 : StrtngTerpanJang;
Kallmat2 : STRING; { ldentlk dengan STRINGf2551 )

Pmdckla rasian variabcl sepcrti


Srnng merupakan jenis dan yang bisa bcrupa gabung:.n da ri huruf,
angk a maupun simbol. Str ing bia sa didcfinisikan scbJgai untaian atau
Kata := STRINGf20l;
deretan karakter. J eni s data ini banvak d itcrapkan dalam aplikasi yang
bersifat nonnumerik, misalnya untuk rncmpcro kh kata-ka ta yang
mcnyatakan bahwa variabcl K ara maksim .i l han ya mampu mcnyimp:m
terdapat suaru kalimat atau mcnyimpan data nJma ~csco rang. sa rnpai 20 karaktcr. Pcnd c kbr::~si :m:
Vlll.1 KONSTANTA STRit~C
Kallmat1 : StrfngTerpanJang;
Konstanta string mempunY Ji em yaitu ditu li s denpn diav.lJ]i dan
ataupun
diakhiri tanda petik tun gg :1 l. Scb:~gai contoh:

'Jalan Kallsahak 5' Kallmat2 : STRING;


'1 56' { string dengan deretan angka 156 }
'Jum"at' { string Jum'at. Tanda petlk harus dltulis dua kal! menyataka n varia be] Kalimar 1 rn:lllpun Kali111at:! mampu mcnyirnpan
sa mpai 255 karaktcr. Pcnulis:m ripe STRING (t:1 np:1 !lil::!i) sama arti nya
Sekalipun pengertian string adalah sederctan karak tcr , sua tu string bisa penulisan secara ckspJisit STRING(255].
saja tidak mengandung kar:1krer ~a m a sckali. String dcmiki an discbut
dengan string kosong (srri ng dengan panjang samJ deng;m no!).

--
Penulisan string kosong:

" { String l<osong. Tanda petik tun'Qgal


VIJI.3 PENUCASAN TERHADAP VARIA BEL STRING

Suatu variabel string da pat dipakai u nruk rncnyimpan string yang bcrasa l
dilkutl langsung dengan tanda ~etll< tunggal dari konstanta, variabcl. fungsi rn aupun un gka pan string. Sebagai
contoh:
String kosong berlainan dengarf string yang berisi sebuah spasi atau
lebih. Sebab string yang bcrisi karakter spasi mernpunyai panjang tidak Kata := 'Komputer':
sama dengan no! (Pengertian panjang string adalah banyaknya karakter Kallmat1 : = Kata + · Generasl' + · IV';
dalam string).

Contoh pcrtarna, variabcl string Kata diis i dcnga n konstanta string


Ylll.2 TIPE STRING 'I<omputer '. Contoh kedua, yang berada di kanan operator penugasaf1:_
(:==) mcrupakan bcnruk suatu ungbpan strin g . O pera tor + dalam suatu
Tipc string mempunyai dua buah bcntu k. Penanu, bc rupa kau-
ungkapan string meny:ltak.Jn opcrasi konkatenasi (opcrasi pcnggabung-
terc!dang string saja. Bentuk kedua berupa kata-tercadang strinc
an dua buah string rnenjadi scbuah string baru). Hasil string berupl
gabungan string di sebelah kiri dan ~ebc!Jh kanan operator +.
diikuti oleh suatu nilai bil angan bulat antara 1 sampai dengan 255 yang
diapit oleh sepasang kurung siku . Contoh dcklarasi string:
Jika Kata misalnya berisi string 'Komp uter', maka
120
121

Vlll.4 INISIALISASI STRINe
Kallmat1 := ~::ata + · Generasl · + · rv ;
'
String dapat diddinisikan dalam deklarasi CONST, berdiri sebagai
konstanta bcrcipe string. Bentuknya:
'Komputer Generasl' + ' rv·
L---- - -- - - ' CONST
Komputer Generasl rv · Pengena! : Tipe_Strfng
= Konstanta_String:
varlabel Kallmat1 al<an menvlmpan string
'Komputer Generasi IV' Bentuk scpcrti di a t ~s biasa dipakai unruk mcmbcri nilai awal (ini sialisa\ i)
rcrha,hp pengenal (identifier) strin g. Scbagai contoh:
AdJnya pcmbarasa:1 jumi.1t: :T. .lksimal karaktcr yang dapat disimpan
dalam suaru \·uiabd akan mcnyeoa bkan sduruh hasi l konkatenasi ti dak
scl alu tersimpan dabm \·ariabd, yaitu jika panj :mg string hasil
kokanrenasi mcl cbihi batas maksimal dari variabel string . Sebagai
PROGRM~ InisialisasiString;
<• -------------------
<• Conto h insialisasi string
.
t)
)

conroh, J..:aru..Jil<l}<'lllll~? diddJ J ra>ikan bcrtipc STRING[lO]. Pada pcnu- <• ----- ---- --------------- - •J
gasan: USES CRT;
COIIST
Kata_ma]emulc := u ngit' " · ciru ·: { inisialisasi string}
SALAI~l ST RIIIG[6] = 'Halo, ' ·
String yan g tcrsimpan tbiam Ka ra_majemuk bubnnya ' Langit Biru ·
SALAM2 : S TRING[12)= '. Apa kabar · ·
tctapi hal1\' 3 bcrupa 'Lan gi r bir' (yaitu 10 karaktcr pcrtama dari string
hasil konkatcnasi) . VAR
Co ntoh be_rjkut b erupa seb uah fu ngsi untuk mcmpc roleh string ya ng llama STRIIlG[ 2 0);
dibentuk ole~ scjumlah ka rakrc: yang sama, ya ng mdibatkan opcmi BEGIN
konkarenasi. CLRSCR;
WRITE ( 'llama and a ? ') :
TYPE StrlnjiBO: STRINGIBOI ;
~c:Tl.ON' Ulang_Karalcter IKar: CHAR: Jumlah: BYTEl: StrlngSO; READUI (llama) ;

VAR WRITEUI (SAL AI-!1, llama, SALAI-12);


I : BYTE; READUI
St: STRINGBO: END .
BEGIN
FOR I := 1 TO Jumlah DO Program 8-1 .
St :"' St + Kar:
Ulang_Karalcter : = St Pad a Program 8-1, SALAM1 diinisialisasi bcrupa string 'Halo, ' dan
• END; SALAM2 berupa string '. Apa kabar?'. Pada awal program , mula-mula
Fungsi Ulang_Karakrer berupa fungsi dengan hasil keluaran bertipe string ditanyakan tcntang nama. Selanjutn ya da ta nama masukan disimpan
pada variabel i\ 'ama. Instruksi
dcngan panjan g mak simal terdiri dari 80 karakter. Dcngan memanggil
fungsi tersebut , m isalnya sap: WRITELN tSALAM1, Nama, SALAM2l;

GarlsGanda := Ulang_Karakter fi205, SOl : berfun gsi untuk mcnampilkan data p:tda SAL·L\11, ;\ 'a nw cLlll S."-
LAM2. Jika misalnya Nama bcrisi 'Amh', mJb tulisan ya n g t.1rnpil
maka variabel CarisCaru!a berisi st ring yang tcrdiri dari 80 karakter ber' ldalah "Halo, Andi . Apa kabar?' .
ASCII 205.
12.3
122
VJII.S PEMBANDINGAN STRING '~
atau mengubah brakter tertentu dalam suatu string. Untuk memahami
s eta in peng gabungan string (konkatenasi), __ operasi string lainnya yang operasi ini, string bisa dianggap sebagai array (Masalah array dibahas
dimungkinkan adalah pembandingan string. Operator relasi yang pada Bab IX).
dipakai dalam operasi pembandingan string dapat dilihat pada Tabel String bertipe String(n] dapat dianalogikan dengan array{O .. n] of char.
8-1. Lokasi pertama (indeks 0) digunakan untuk mengingat banyaknya
karakter dari string. Adapun data string berada pada lokas1 1 sampai
rabel B-1. Operator relasl untuk operas! string dengan n. Sebagai contoh, variabel St benipe strirrg{15}, kemudia n
c!iberikan pcnugas:ln
operator Art!
St : = 'Turbo Pascal·;
sama dengan
<> tidal< sama dengan
> leblh darl Ad :m ya pcnugas~ n sepcni di at,ls mcnycbabkan string 'Turbo P:tscal'
< kurang dar! d ircmparbn mulai indcks kc-1 dalam variabcl St dan dengan scndirin y.l
>= leblh dar! atau sam dengan indcks kc-0 bcri~i karakccr yang bcr-ASCII I 2 (menyatakan panj an g d.1ri
<= kurang dar! atau sama dengan strin g 'Turbo P Jsca l').
0
Jika X dan Y mew akili srring (X=l...Xn dan Y=YJ..Ym), string X 2 3 4 5 6 7 8 9 10 I I 12 13 14 15

!__~T r 1bIoI rETaIs I cIa /1 I I D


dibtakan sama hanya bila meme.mhi dua syarat berikur:
(1 ) Jumbh k:u akt<?r dari X dan Y sama (n = m )
(2) Xi = Yi berlaku untuk 1 s i :s; n k.Hd ktcr bcr-asci i 12
Scbagai contoh, r cmbandingan 'PASCAL' = "PASCAL' membcrikan
ni!Ji tl!l t: (bcnar). N amun pada pcmbandingan'PAS C AL · = 'PASCAL ' Uut uk m cng"kscs karJ ktcr d :dam suaru string , dapat mcmak .1i hcntuk:
mupun 'Pi\S C AL ' = 'pascal' menghasilkan nilai j:1lse (sala h). nama_pengenaLstring Undeksl
Pembandingan string dilakukan bcrdasarkan tiap karakter pada
kcdudukan indeks yang sama. Pada komptHer IBM PC, urman karakter Benruk d i ata s d:1 p::c dipakai umuk JJh:mpcroleh atau mcngg.mti kar:tktcr
dalam sua tu pcngenal string.
dJ!am tabel ASCII-Iah yang dijadikan sebagai pedoman. Dengan
dcmikian 'A· bernilai lcbih kecil daripada 'B'. Dan 'B' lebih kecil dari 'C'. PROGRAM AksesString;
Sedangkan 'a ' lebih besar daripada 'A' (Urutan selengkapnya dapar USES CRT ;
dilihat pada tabcl ASCII) . Secara internal pembandingan duJ buah string VAR
dilakukan dari karakter terkiri menuju karakter terkanan. Dcngan St : STRIIIG[ 151;
dcmikian pcmbandingan BEGIN
CLRSCR;
'ADAT' < 'AlAT' ( '0' < 'L' }
St :: 'Turbo Pascal';
'UMI' > 'UBI' ( 'M' > '8' }
'Piston • > 'Piston' ( panJang string berbeda } WRITELN ( St: ' , St);
WRITELN
('Panj ang string St :', ORO(at[OJ));
abn mcnghasilkan nilai benar. WRITEUI
('Karakter pertama dalam St yaitu: ');
WRITELN (St[1J);
Ylll.6 MENGAKSES ELEMEN STRING
READUI
Opcrasi dasar lainnya dalam pengolahan data string berupa mengakses END .
1 elcmcn string. Misalnya memperoleh karakter pertama dari suatu string. Program 8 - :?.

1::!4
r
l ~:>
Contoh pengaksesan ' karakter dalam suatu string <hpat dilihat pada Fungsl Chr
Program 8-2. Pada program, terdapat instruksi seperti: Fungsi Chr digunakan un_tuk memperoleh karakter yang sesuai dengan
nilai ASCII yang diberikan pada argumen . Kaidah dari fungsi Chr:
WRITELN (5tl11l;
Chr tNIIaLbulatl
Pemyataan ini dipakai untuk menampilkan karakter pertama dari string
St. Sedangkan fungsi ORD(st{O}) dipakai untuk memperoleh nilai ASCII dengan Nilai.Jm/at bisa bcrnilai antara 0 sampai dengan 255 (Lihat tabel
dari karakt er yang berada dalam indeks kc-0 p :~ d a variabel St. Dengan ASCH). Sebagai C.Qntoh:
men gguna kan sistem array sem acam itu , karJ ktcr rerr entu d:lla rn string
Kar : = CHR !65!;
juga bi>J diubah. M isalm ·a:
akan... mcnghasilka n brak tcr ';\ · p.hi a q riabcl Kar (bcrtipc Cha r).
St : ~ 'Turbo Pascal';
St!21 := 'U':
Fungsl concat
Stl31 := 'R':
Stl41 := 'B': Fung si Conw t m cmp un ya i keg unJ.1n umu k mcmpcrolch str ing gabung-
StiSI := '0'; an dari bcberapa stri ng . B cnr uk fung s1 l!li·

dim aksudkan ur.tu k mer.gubah clemen dar i pengenal string St. Kalau concat !Strlng1, Strlng2, .. .l
semul a St be ri si 'T urbo Pascal' , sesudah d emen kedua sampai kelima
diganti, hasilnya mcnj adi 'TURBO P asca l' . dengan sduruh argum cn (Srrin,~ 7. Srn·•~-· J.1n sc b:~ga in ya) dJ pat bcrupa
sembarang variabcl , hms tan ta. funp: .H.1tl ungkap'an str ing. Scbagai
contoh:
VJII.7 FUi'JGSI OAN PROSEDUR UNTUK OPERAS! STRING
St1 := 'lngln':
Turbo Pasca l m cnyedi ab n sej uml ah fasilita s bcrupa subprogram yang St2 := 'kau ralh':
dapat di p.1ka i umu k kcperlu an o pcras i strin g. Subprogram yang St3 := ·se)uta blntang ';
disediakan tcrcantum pada Tabel 8-2. St4 := CONCAT!St1,' ',St2,' ',St3l;

akan m embuat variabcl string Sr.; hcrisi srr1ng


Tabel 8- 2. Subprogram bawaan untuk keperluan operas! string
'lngln lcau ralh se)uta blntang·
Pengenal Proseour/ Kegunaan
Fungsl Pemanggilan· fungsi Concat di ata s sama Jcngan penulisan:
St1 + ' ' + St2 + ' ' + St3
Chr Fungsl Menghasllkan karakter yang sesual dengan nllal ASCU dll
argumennya
Menghasllkan string gabungan dai1 dua buah strl119 a13f , Fungsi concat mempunyai sifat, apabil a String gabungan melebihi dari
co neat Fungsl
leblh 255 karakter, maka karakrer setelah \·;mg ke-255 akan di buang.
Copy Prose our Menyalln baglan dar! suatu string
Insert Prosedur Menylslpkan suatu string ke dalam string lain
Fungsl Copy
Length Fungsl Untuk memperoleh pan)ang string
Fungsl Menghasllkan poslsl suatu string dalam string yang !Ill Fungsi Copy memrunyai bcnr uk :
Pos
Ord Fungsl Memperoleh nllal ASCII dar! karakter argumennva
Str Prosedur untuk mengubah tloe numerlk menJadl tlpe strl119 Copy !Stnng1, lndelcs, Jum!ahl
UpCase Fungsl Untuk memperolen huruf kapltal dar! suatu huruf ~ ·
Val Prosedur Mengubah tlpe strlr.g menjadl tlpe numerlk dengan String1 dapat berupJ ungL1p;m, kom t:mra arau vari abel atau
.
126 127
I - 14 c r-=nn·' PM* .. w - -- - -

Prosedur Insert
fungsi string, Jumlah menyatakan banyaknya karakter yang disa\in, P!"_o~~dur Insert mempunyai bemuk:
dirnulai da ri karak ter ke-Indeks Strit~g1.
Insert tstrlng1 , Strlng2, lndelcsl:
Sebagai contoh:
Kegunaannp ::~dalah menyisipkan Strr'ns1 ke dalam String2 p.1d 4 Y' "' •;.,
St1 := ·rurbo Pascal':
karakter kc--lndeks S tring2. Stn'11g2 sud ah tentu harus bcrupa V~ tL; I,. ·J
St2 := COPY tSt1. 7, 61;
Scdangkan String1 boleh tidak berupa -variabel, Sebaga~ cu 111 ,,h
rnaka. Sr2 aka n tcnSl den g:w ' Pasca l', .PS OFF
~ . - --- --. 1234567890,,
St := 'Punca k ltu indah':
1234S678901 2
I-
COPY !'Turbo Pascal' , 7, 61
- - - - - _ _..J L- - -
INSERT!'gunung ', St1 , 81; -
.PS ON
Kalau semub , St bcrisi strm g ' Pun o k itu ind::h' dcn g" 11
Fun gsi Copy mcngh :1~ilkan str in g kosong, j ib nil ai I11de ks lcbih dari ~# : I j I .
pcrnyat aa n :
panjan g Srri11g1 . Ap abila ft; deks ~ j;mdah mcl cbihi dari panjang String_ J.
maka fun g >i Ct1py m cnghasilkan stri ng \'an g b e rupa dcretan dari brakter INSERT f'gunung ', St1 , Bl; I('!S b'!IJ ( (Db]> "tQr(jeJ r p~ S J
ke- fH ,icks cbri S o in_(: 1 sa m pai denga n b raktcr ya n g terakh ir,
m aka, S d bcr isi string 'Puncak g un un g itu ind ah' , Nihi H mn , :r• '·, ,,

I
Bcberapa co tn oh :
strin g 'gu nu ng' m cncm pati posis i kc-8 d al am varialwl Si,
String hasil
Pemangg ilan t ung si
Fungsi Length
'Pas· Fungsi Lmgth mempunyai bentuk :
COPY nurbO Pascal ', 7, 31
'Pa sca l'
copy nurbo Pascal' , 7, 61
'Pascal' Length l5trlng1 1
copy nurbo Pascal ', 7. 81
String ko song
copy nurbo Pascal', 13, 31
Dcngan Stri11g I bi sa bcrupa ,·ar ia bel, konst:mt:J m :lU pqn '-''· r, ,
stri ng . Kcguna:1nn ya y aitu untuk rncmJ' <:ro leh j um bh b rJJ, 1, ,
Prosedur Delete argumennya (bukan jumlah rn aksimal string argurn <.:nJ, M 1 ~ "" , ,
Proscdur Delete mernpunyai ben tuk : ,PS OFF
123456789012345678901234 '•
Delete tst ring1, Awal , Jumlahl: St := 'Kullhat mataharl berseri';
PanjangStrlng := LENGTH!Stl :
Proscdur ini digunakan untuk mcnghapus bagian dari String1 dimulai
WRITELN tPanJangStrlngl;
dari posisi se5uai nila i AtVaL Banyaknya braktcr dirnulai dari posisi awal .PS ON
yang d ihapus .di tentukan oleh nilai Jumlah, Pada pemanggilan prosedur akan menam p ilkan n,ilai 24 pada layar yang mcnyatakan vanabd ·, 1 '-' ' · .
ini . S rring1 harus bcrupa variabel. Sebagai contoh: 24 karaktcr.
,PS OFF
12345678901234., Fungsl Pos
St := 'slnat r~mbulan bersama bintang-bintang' ; Fungsi Pos mcmpunyai bentuk : ,....,.

DELETE tSt , 7, 3l ;
.PS ON Pos tString1 , Strlng2l
mmycbabkan 3 buah ka rakter dim ubi posisi ke-7 dari string Sr dihapus.
>t:hingga h as ilny::~ St bcrisi stri ng dengan stri11g 1 m aupu n slring2 bi sa bcr up.t ko nstanta , \ '<tn<iLd
ataupun ungk apan st ring.
'Sinar bulan bersama blntang-blntang'

12.>)

Kegunaannya untuk mencari posisi pertama Str-itJg2 dalam String1 . Jika Pemanggilan prosedur String hasil(St) Panjang -strine
String2 tidak terdapat String1 , hasil fung si bempa nilai 0. Sebagai contoh: Str (Pecah, St); ' L2567~E+02' 17
.PS OFF Str (-Pecah, St); . -1.2567000000£+02' 17
123456789012345678 ... Str (Pecah:12:2 ~ St) 12 .~7'· 12
st := 'Kubaca kata deml kata tdan kutemuKan makna·:
Str (Pecah :12:0, St 13' 12
WRITE tOOS tSt. 'kata 'l;
Str (Pccah :6:4, St) 12.,567<1" 7
.PS ON
Fungsi PClJ mcnghasilkan nil;J.i 8. vang m cnyatab.n string 'bta'
d itcm ubn pada string yan g ada dabm vari:thcl St, p ada po~isi karJk tcr Tanpa mcbkubn format, bibngan pccahan dikonn.?rst menjadi st rint
kc-8 . Pada S1 scbcnarnya terdapat scb uah 'bta' lagi y aitu pa Ja posisi dcngan p:tnjang 17 br.1ktcr (contoh I dan 2): untu\. b ilangan positif ak..i r
ka raktc r ke-18 . Nam u n yang dilaporb n JJ.1bh png pcn.;nLI. y ain.: p.td<~ Ji Jw,1li dcngan spasi. Jib mcJ:tn va ng ti i ~c'd iab n tidak rncncukup i
posi~i kc-8. I dcngan scndiri nya digit untuk ni!J i b u latnva tL'rcakup sc luruh rw:
(contoh 5). Jika medan untuk bagi.1n pcca h an Jibc n nilai n. m .1b bagi an
pccahannya tid:tk dicantumkan .
prosedur Str
Pr osedur ini m ernpunyai bcn tu k:
Fungsl UpCase
Str tBII. SLhasill: Fungsi UpCase mempunyJi bcntuk:
dcngan Bil bisa bc rupa konst ,\ll ta. ,.JnJbcl . fungsi m Ju pun ungkapan
UpCase tKaralcten
bertipc bilang an bula t ataupun pccahJn. St_!t a~il mcrup.t bn \·ariabcl
van g mc nyimpan stri n g dari nil ai dai.lm I3il. Biian gan bisa diformat. dcngan Karaktcr berupa konstan ta ata u va riabcl b,·rripc Char. Kd u:.H.tr.
. Bcbcrap:1 contoh bcrikut mdibatb:l variabcl : iung si bcru pa karakccr huruf bpital, jib Kt~r,lkf,·t bc rup-1 huruf kL·,·,:.
RulaT bcnipe bilangan bulat dcngan nil ai 100 Apa bila Karaktcr bukan bcrupa huruf kccil. kcluar:H1 r·ll!lf~Si -,es~l.l i cknga•
isi Karakter.
- St bcnipc String[ 12]
Contoh:

Pcmanggilan proscdur Stripg h :~sil(S t ) Panjan g stnn g Kar := ·a·:


3 WRITELN tUPCASE fKarll;
Str (Bu lat . St); '100 '
Str (B ulat:4, St); roo· 4
akan mcnaml'ilkan huruf ' A ' pada lavar.
Str (Bulat :10, St) 100' 10
Str (- Bulat:6, St) . -100' 6 Prosedur Val
Str (Bulat:l5 , St) 100' 12 (maksimal 12 Prosedur Val mcmpun yai bentuk:
• untuk ·tipe Strin g [1 2])
Val !Strlng1 , VarBII, varKesalahanl:
Panjang string hasil konversi ditentukan olch panjang mcdan jika ada.
Apabila nilai medan terlalu besar dibandingkan dcngan jumlah karaktcr dcngan string! bisa bcrupa konstanta, variabd , fungsi ataup un ungkap:m
maksimal yang bisa tersimpan dalam suatu variabcl stri n g, panjang string, VarBil berupa variabcl bcrtipc bila n g:1n dan l 'arKesn/,lfJan bcrupJ
string hasil scsuai dengan panjang dctinisi suatu tipe string. variabcl bcrtipe integer atau wo rd ~
.l:khcrapa contoh berikut melibatkan \·:t riabcl : Prosedur ini mmgubah string da ri 5Trin,~1 llll'llJadi nibt nunrcrik dan
hasilnya disimpan p ada l'a rl3il. Jtk.l Strin.(!1 hcrup.1 strin g y.1ng
f>rcah bcrtipc real dcngan nilai 12.5()7
mcnyiratkan ~ilangan, maka VarKesa/,Jh.m bcri~i nilai 0 . Ni!ai buka n nol
St bmipc String( 18]
I. I I
pacb VarKesalahan men~atakan posisi k~ak.ter d~~ String1 yang bukan Bila string bertipe STRING[255], kata-i~rcadang string boleh clipalcai
. Jllenyatakan karakter bilangan. Sebag:u contcili: ' . untuk menentukan tipe dari parameter atau tipe hasil fungsi. Misalnya:
' ~ \ I I;

(1) Untuk variaoel VarBil bertipe bilangan bulat:


PROCEOURE .StrlngKapltaf (VAR St: STRINCI; _

String yang dilewatkan sebagai parameter dapat berupa parameter nilai


lsi String1 Hasil : VarBil H as il: VarKesalahan ataupun parameter variabel. Jika parameter string berupa parameter
'256' 256 0 va riabcl, an tara parameter formal dan panmeter aktual haruslah bertipc
256' 256 0 sa m:~ . Scbagai cont o h dipcrliha tkan pada Progra m 8-J. Ka!Ju prog ram
'256 ? 4 (Kesalahan karena ada spa~i pada tcr ~cbut dijaJankan , akan terj:1di kesalal1Jn scwa ktu kompila si bcrupa
karakter keempat) ' 'Type Mi sma tch' ' p.1d a pcrnyataan proscdur Bcri0Jt.1, scb:~h antara tipr
'2.5' 2 tKesalahan karena ada tanda titik par.Hnc rcr form.1i d a, , p:.:rJmcr c ~ .lkru ;d ber bcda.
yairu p:~da karakrcr kcdua)
PROGRAM Co baS tring;
USES CRT;
(2) Untuk variabel Va rBi/ bert ipc bil angan pccahan
TYPE
String80 = STRIIIG(80];
lsi String 1 H:1siL: Va rBil H as il: I 'ad(csalalzml String20 STRIIIG[20];
VAR
'256' 256 0 Stl : String8 0;
256' 256 u
'256 4 (Kesalahan brena ada spasi pld :l
PROCEDURE Ber iD ata (VAR St : Str ing20};
karaktcr kccmpa t) BEGIN
'2.5 ' 2 (Kesalahan karcna ada tanda kom,1
St : = 'Saya suka Pascal'
y:~it u pada braktcr kcduA )
END;

BEGIN { Program utama )


VIII.S STRING SEBACAI PARAMETER ATAU SEBACAI HASIL FUNCSI
CLRSCR ;
String dapat dilewa tkan kc dalam fungsi maupun prosedur scbagai BeriData ( Stl);
parameter. D isamping itu, string dapat pula dipakai sebagai tipe hasil WRITEUI (St 1);
dari fungsi . Patokan yang penting kalau men gg unakan tipe string dalam READLN
subprog ram , tipe dari parameter atau tipe hasil fungsi harus berupa suaru END.
pengenal atau berupa kata-tercadang string. Misalnya:
Program 8 ·-J .
FUNCTION FormatRuplah(NIIai :LONGINTl :String20;
Namun jika dikehendaki , program tet ap bisa dikompilasi. C aranya
dengan pen genal String20 berupa tipe yang didefinisikan dalam TYPE dengan mcnyertakan penga rah kompilcr {$V-} sebelum peman gg ibn
sebagai STRING[20]. Penulisan seperti: prosedur BeriData , se bagai berikut:

FUNCTION FormatRuplah(Nilai :LONCINTl:STRINCf201 ; {$V - }


BerJoata !St11 ;
tidak dipcrkcnankan. {$V +}

132 133

~~
~ ~• . -'"'... , ...... .. ...-- --~v- H ...... ~ .. ~.~ " -' '"- ~ ~ ·- · ~:; u-~ ., ., ,. ,"f:.,... . ·~ ~~~==~~~~~~~~~!!~~IIIIIIIIINIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
....... {,~~!!!1 .-::t.:::::e::t"=st'.J.: -.!@ii..;.- "'"'' .. ~--&f&£
penulisan di atas menyatakan: Contoh operasi string yang lain adalah untuk menampilkan bilangan
(1) Sebelum prosedur BtriData dipanggil, pemeriksaan terhadap kesa- dengan format rupiah, yaitu menggunakan pemisah ribuanoerupa titik.
maan ripe parameter aktual dan formal dari string dimatikan. Pada contoh ini, fungsi untuk memperoleh format rupiah hanya
(2) Sesudah pemanggilan BeriData, pemeriksaan terhadap tipe para meter ditujukan untuk bilangan bulat. Caranya adalah dcngan mula-mula
string diaktifkan kembali . mengubah bilangan menjadi string (dinyatakan dcngan variabcl StrNilai
pada ForrnatR11piah). String hasil konversi bilangan inib h yang kcmudian
Contoh operasi string misalnya untuk menguba h huruf kt-cil yang diolah sehingga meng hasil bn kcluaran yang d1ha rapkan. Pengolahanny:~
cerdapat dalam suatu string menjadi huruf kapiul. Pcngubahan ti:J.F dilakukan dcngan mem eriksa panjang d.m string StrNilai Selama
karaktcr (mulai karaktcr parama sampai yang raakhir) di!ak ui.:.Jn panj :mgny;; lebih dari riga (berarti masih mcnpndung ribuan) clibkukan
deng an memanfaarkan fun gsi UpCase. Karaktcr Y;mg tcrakhir hisa prose~ hcrupa:
diperolch melalui bantu:m fungsi leugth.
PROGRAH UbahString;
<• ----------------- -- ------- -------
(* Program untuk mengubah
.
•>
)
rnul:t-mula diambil J karaktcr rerkanan da ri StrNilai
J braktcr ini dit:1mb:1hkan sccara konkaccna si kc suar u variabel
pcngingar (Hasil) dengan mcnyisipkan scbuah tanda titik d1
awal nya .
(* huruf kecil dalam string menjadi huruf kapita1 t)
kemudian ketiga brakter t.:rka nan da ri Srr:\'ilni dibuang
<• ---------------------------- ------------- ----- •>
Terakhir b!inya, hasil yang sesungguhnp dipcrolch dengan mdakubn
USES CRT; operasi konbten?.s i antara StrNilni dengan Ha sil.
VAR
PROGRAM TampilkanFormatRupiah ;
AlaJllat : STRitlG;
,. --------------------- ------------- .
(* Menampilkan bilangan
•)
)
PROCEDURE StringKapital (VAR St: STRitJG):
( * dengan pemisah r ib ua n b~rupa TITIK •)
VAR Indeka : BYTE;
BEGIN
C* ---------------------------------- •J
FOR Indeks::1 TO LHJGTH(St) DO USES CRT;
St[IndeksJ : = UPCASE(St[Indeks]) TYPE String20: STRING[20):
END; VAR
Bilangan : LONGINT;
BEGIN
CLRSCR; FUNCTION FormatRupiah (Ui lai LOtiGitiT) ; String20;
Alamat := 'Jalan Sederhana 53/F Semarang'; VAR
StringKapital (Alamat); StrNilai,
WRITELN (Alamat); Hasil : String20;
READLN
END . BEGIN
STR (Nilai, StrNilai);
Contoh ekaekus1:
Hasil :: "; ( Hilai awal dari hasil)
WHILE LENGTH(StrNilai) > 3 DO
JALAN SEOERHAIIA 53/F SHIARAIJG
BEGIN
Prolf'am 8-4 . Haail : = + COPY(StrNilai, LEtiGTH(Strflilai )-2 ,3) + Haail;

134
135
DELETE (StrHilai, LEHGTH(Strtlil&i)-2,3)
HID:
FormatRupiah := StrNilai + Hasil
END; { akhir fungsi rupiah }
IX TIPE DATA TERSTRUKTUR ARRAY

BEGIN
CLRSCR;
WRITELH ( ·~lasukkan sebuah bi langan bulat : ' l ;
READUI ( Bi 1angan) : Format Rupiah( Bi l a ng anl l:
WRITELII ('For-mat Rupiah == > Rp P:tscll menycd iak ::m bL <b.I ):!Ji tl f <' d .l! a tcrqru kttr r. bcr upJ arrJ:, .
himpum n , reco rd . fi le d an j u ~:;• lisr (cbfr ar) Pcng erri:m rip e:- dat a
READLII
rersrr uk rur adabh ripe d ,H J y:JnQ b i ~a m envirnpan lc hi h clari seru ah
ENO.
dc mc n dar :~. Pada bcr bag a1 ~J LbJ I.l h ke hJd ir:m ripe data hc r~ truk t u r
rcr:1sa seb li facda hnya. T c ru u rn a ,i,ln ~ q:::i kc mudah .m chbm m c m buJt
con oh eksel<usi : pro gram .
~asukkan se buah bilanga n bula t: Khusu s pada ba b ini, ha n ya ri pe d:n a r c r~tru kr ur arra y saj a yang akan
dibahas.
600000
Fo r-mat Rupiah == > Rp 600.000 IX.1 ARRAY

Masuk~an sebuah b•lang an bulat :


Arr :l\: rnc r u pak.1n ri~'c d.H:J rnst ruk tu r \ .m g digu n.1k :!ll untuk mem· im-
pan scjurnlJh nibi d cng :m j cn is nn ~~ .;a rm . ;\rray scnJiri d ibcdJb n
aoooooo mcnj adi :
Forma t Ruoi a h ==> Rc 8.000 .000
.A r ra v hrrd im cnsi ;;a ru
PrOX' "'" 8- 5. A rray mu lt idimcnsi

Kaida h pc nddlni sia n a rraY di tunjukbn pada G:JJ nba r 9- 1.

C ..rnb ar 9- 1. KaiJah ptndtfinisian array

Tipe inde ks d alarn di ag ram di atas dapat berupa sebarang tipe ord inal.
kecuali ti~ .. l<mgint dan su bran ge dari longint. Tipc integer (atau
subrange da ri intege r) , char , boo lean ara u tipe e n urn cras1 dipc r boleh bn
sebagai tipc indeks . T ipc indc:k s m cnyatakan b.mya knya elcm en J.1ri
~rray. 1'i pc: ses udah k,HJ-tc rcadan g o f bi sa bcrupa scbara ng tipe .bJl ka n
oukan bcrupa fik . T1pc ini menpt.Ib n ti pe data da r i cl cm cn ar:a y.
Beberap a contoh ripe array:

!37
136
- ··· ..• - ..... .......... """' ~-1 ·- "~•• ,..,.
Dengan adanya pendeklarasian ini bera rt i ada 5 bu ah elemen dalam array
Nilai_ T es. Masing-masing ko mponen dinyatakan dcngan N ila i_ T es{1 ],
Nilai_ Tes{2), .\'ilai_ Tes{Jf, 1\'i/ai_ Tes{-1] elm Nilai_ Tcs {5}. N ilai 1,2,3,4
ARRAY!1 ..1001 OF REAL dan 5 untuk contoh ini d iscbut scbagai indeks array.
rnenyat akan pendefinisian array yang mengandung 100 elemen bertipe

real.
Contoh 2:
NllaLTes!1 ! _
NllaLTesf2J _ R
---,
ARRAY!CHARI OF BYTE
NilaL Tes!31 -· ~ array
NILAI_ TES
NilaLTes!41 _
berisi s elemen
cnyatakan pcndefinisian arraY dcngan indcks berupa karak tcr (ada 256 NllaL Tes!SJ
111
ckm cn) dan data bcrtipc byt.:.
Gam ha r 9- 3 . •4rr.•y ·l~n tltmrn-rlrmrrwya
IX.2 ARRAY BERDIMENSI SATU
Jcni s array yang pali nt; >LJcrhana adalah array berdim cnsi satu. Untuk Pad;, PasCJl. ~ctcb h pcndckl :v:lsi :rn v:~riabc l ar ray, isi Jari masing-
mcn1pcrmudah pcmah;un:~n :crhada p jcnis array ini , biasanya array rr.asing ckmcn u ray ud :~k Jibc ri nilai 3v.•JI (Pada bahasa pcmrog raman
bcrd imcnsi sa tu dinva ta bn s.:bagai kota k panjang ya.ng dibagi menjadi scpcni BASIC. suatu J r[ ,lY bcaipc n umnik dcn g an scndi rinya abil
bebcrapa bagia n yang s:1ma . Seb agai contoh, Gambar 9-2 mclukiskan dibcri nilai ;l\nl (1, scd a:Jgk.Jn untuk Jrr.1y alfar.umcrik dibcr i nilai aw;ll
scbuah array bcrdimcnsi satu n ng d ipabi untuk menyi mpan data nilai bcrup:1 string kosong).
h a~i \ t CS.

1?1 ' ----,


? l ' 1 variabel array
[ 100 J 75 I 80 \ 60 I 65 ~ Variabel array
NIL.ALTES
I ....______;

Gambar 9- 4. l si
' 1 ' i

JrT" )'
NILALTES

urtfah ptndtklaras iJII

Gam b.:~ r 9- Z. Ilus tras i ubuah aruy btrJimtn si satu


Memberlkan Nllal ke dalam Array
Definisi/deklarasi yang cipcrlukan untuk contoh di atas: Untuk mcngisibn nilai kc dabrn arny. dia ntar:myJ dapa t dilakubn
melalui pcrn ya taan penugasan. Mi salnya SJjJ

CONST
MAKS_TES = 5; NllaLTesi2J := 75;
TYPE .
Daftar_NIIa! = ARRAYI1 .. MAKS_TESI OF BYTE; Pernyataan ini abn menyebabbn bagian :uray N iloi_Tcs yang mcmiliki
VAR nomor indck s 2 terisi nila i 75.
Nilai_Tes: oattar_NIIal: Pcmas ukan data ke dabm Jrray bisa dilakukan dcngan pcrnyataan
Dcfinisi/dcklarasi di atas ~cngan menganggap jumlah maksimal res READ atau RE ,-\ DLN. Scb:1gai con toh :
ad:llah 5 dan elcmen dari nill1 bertipe byte. Dcklarasi array Nilai_ Tes bisJ
READLN (NIIai_ Tesf2ll;
juga discdcrhanakan mcn_iJ.ii
merupakan pcr:1~·J ta an untuk rncm.,:-ukLu~ d.lta kc ,blam Jrray NilaiTl's
VAR yang mcmpun yai nomor indcb '
NllaLTes : ARRAY!1 .. 51 OF BYlt;

U9
DS
,__,....,
_;lli!0'-;·~ .. ~·;"'111<>:-~ -·-"-'"''·"" ·,-:"~~'"·""'·"'
... ";W ............. ·...~:-?i.,.• ..,.,,.....+..,_,..,_~·
.,

WRITE ('Masukkan nilai tes ke t - t 1

.-emperoleh Elemen Array - . READLN (~lila·i_Tes[IJ)


vncuk rnernperoleh nilai yang terkandung dalam array, misalnya elemeh
END;
kedua pada array Nilai_Tes, pernyataan yang diperlukan: .

~lenghitung dan menampi lkan rata-rat .. ,, 1 : ,.


Nllal := NllaLTes!2l; Jumlah := 0;
vang bcrarri mcmberibn nilai yang tcrkandung pada clcmcn kedua array FOR 1 : ~1 TO 5 DO

.·~ilar- Tes kc \·ariabel Nil ai.


.
J umlah : = Jumlah + ll ilai_Tes[I];
WRITELII ( 'Rata-ra ta = Juml-.h/5: fi'~ I· ) .
Pcrn yataan scpcrn :
REAOUl
- ~

WRITELN INIIai_Test2ll ; EtiD .

erup aka n instruksi unruk m cnampilkan nilai clemen kcdua dari array ,
01 Contoh eksekusi :
;"Jilui- Tes.

mdeKs serupa Bllangan Bulat


Progr:11n bcrikur meng gamba rkan cara memasukkan 5 buah d :na nilai tes
Masukkan nilai tes
Masu kkan nilai tes
ke 1
ke 1 ' 75.
t 100

1-lasukkan nilai tes ke 1 ~ 80


kc dalam array, mcnghirun g ni\ai rata- rat a dan kemudian menampilkan
Hasukkan nilai tes ke 1 ·~ 65
nilai rata-rata. Masukkan nilai tes ke 1 : 60
Rata-rata = 76,t
PROGRAI-4 Arrayrli la i:
<• ------- - --- - --------- ~ ---- •) Progr~m 'I - 1.
I* Menghitu ng ni lai rata-rata •J
(* -- ------- ------- - --- - * ) lnde!<s Berupa Karakter
C o ntoh herikut mcngg:~mbarkan pcnggurrJ JJJ ir"l' ~ .
USES CRT; karaktcr. Sedangkan elcmcn arra y-nya bert ipc byr. 1/
dipakai untu k mcnyimp:~ n jumlah ma smg-rn :J'- 1" :
... . "ll.•. ~ . .;. •

COilST deretan brakter yang dimasukkan dari p:tparJ L , ,


I~AKS_TES =5; PROGRAM HitungKapital ;
TYPE
Oaftar_llilai = ARRAY[1 •.• MAKS_TES) OF BYTE: <•
VAR
<• ~!engtlitung jumlah masing-masing hurut
~-- ...
BYTE :
c• dari suatu data string
I
\ (.
Jumlah IIHEGER;
Nilai_Tes Oa ftar:_tl )_l a i ; f 4

USES CRT:
TYPE
BEGitl
HurufKapital " 'A' , .. ' Z' :
CLRSCR;
larik Ka~Jital = ARRAY[Huru fKapital] or h ·
VAR
{ Memasukkan data ke array }
I B~TE;
FOR I:=1 TO 5 00
Karakter : CH AR;
BEGIN

140 ! II
Pada Program 9 ....!. 2, mula-mula jumlah masing-masing huruf kapital
STRitlG;
st dalam array diberi nilai no!. Pcr.mah yang diperlukan adalah:
Kapital Huruf'Kapital;
LarikHuruf LarikKapital;
FOR Kapltai := 'A' TO 'Z' DO
Lar1kHuruf!Kapltall : = 0;
BEGIN
CLRSCR; Perhatikan: indeks array pada array LarikHuruj berupa huruf.
{ Pemberian nilai no l ke elemen ar~a} }
FOR Kapital : : ' A' TO 'Z' DO
Pernya taan:
LarikHu ~ uf{Kapi ta l} :~ O;
READLN <Stl;
data ST RING dan h i t ung h.J..- 11t ~o-aoital l
{ Pemasukan merupakan perintah untuk m ~meaca data string.
st~ing
WRITE ( 'Masukkan data : ') ;
READLN (St); Pernyataan
FOR 1 : :1 TO LEilGTH(St) DO
BEGIN FOR 1:= 1 TO LENGTH!Stl 00
Karakte~ : = St[I); THEil BEGIN
IF (Ka r akter>='A ' ) AllD (Ka r akte r ,-·Z'l Karakter : = Still :
INC (La~ikHur u f[Karakter] ) IF !Karakter='A' AND !Karakter< ='Z'l THEN
INC !LarikHurUf!Karakterll
EIID; END ;

Cetak jumlah masing-masing huruf ~~ .,, t al l


digun:1 kan untuk m emperol ch mds:ng- m.;sing karaktcr dari string S t da n
FOR Kapital::'A' TO 'Z' DO kcmud ian m cmcriksa karaktcr t ~;schu t termasuk huruf ka pital ata u
IF LarikHuruf[Kapital) <> 0 THE N tidak.
WRITELN ('Jumlah huruf ' , Kapil-' •
=
LarikHuruf[Kapital]) : Pern yataan
READLN
END. IF Karakter > = 'A' AND Karakter <= z· THEN
INC ILar1kHurUfiKarakterll:

Contoh eksekusi:
menyatakan jika karakter adalah hur~f kapital , maka isi LarikHurnj
Hasukkan data string: TURBO PASCAL dengan indeks sesuai isi Karakrer dma1kkan sebesar satu. ·
Jumlah huruf' A= 2 Untuk menampilkan jumlah da ri masing-masing huruf kapital,
Ju~lah huruf B =1 diperlukan perintah scbagai berJ::uc
JUIIIlah ·huruf C =
JUIIIlah huruf L = FOR Kapltai :='A' TO 'Z' DO
Ju111lah huruf 0 = IF Lar1kHuruftKapltall <> 0 THEN
WRITELN !'Jumlah ', Kapltal, '
Jul'lllah huruf R =
LarlkHuruf!Kapltalll;
Jumlah huruf S =
Ju.lah huruf T =1
Pemyataan IF dig unakan untuk mcnycleksi elemen arrly yang nil ainya
J~lah huruf U = tidak no!. Jika nilainya no! tidak ditampilkan
Program 9- 2.

142 143
program dieksekusi. Berdasarkan data yang ada pada array, program
kS seruPa npe Enumerasl . . _ · menca:i nilai suhu tertinggi dan kemudian menampilkannya ke !ayar.
~~toh pe~deklarasian array yang menggunakan tipe enumerasi adalah-

sebagai benkut: PROGRAM SuhuHarian;


c• ------------------------- .,
TYPE
C• Nemperoleh suhu tertinggi *)
rypearl = ISENIN, SELASA, RABU, KAMIS, (0 dal&N WAktu S&Ning gu 0)
JUMAT, SABTU, MINGGUl;
c• ------------------------- .,
VARsuhu · ARRAYfTlpearil OF REAL;
USES CRT;
Dcn gan pendeklarasian seperri di aras, maka arra y SJ.IIw mcngandung TYPE

ekmcn. Masing-m asi ng elemcn mempunyai - scbuah indcks berupa TipeH;ori = (SEIHtl, SELASA , RABU. KAI.fiS
7pengen al SENIN, SELASA. HABU , KAMIS, JUMAT, SABTU auu JUMAT , SABTU, HitiGGU);
COIIST
MINGGU. Dalam hal ini eicmen array berripe real.
Keterangan: ARRAY[TipeHari] OF STRitiG[6J
Pcnunjukan Sulwf.\l ingstu/ misalnya berarti menyatakan ckmen array
( 'Senin', 'Selasil', 'R;o bu',
dengan indcks yaim \1INGGU. 'Kami s · , 'Jumilt · , 'Sabtu' . · ~ti ng ge~ · ) :
VAR
mlslallsas! Array Berdlmensl satu Suhut-l.aksi mum RE AL ;
Suaw array bisa dibcri nil ai :l'x a l. Pembcrian nilai awal d:1pat dilakuk.n1 Har; TipeHari ;
dalam dcklarasi CONST. Sebagai conroh adalah array yang mcny imp.1n Suhu ARRAY[TipeH;ori] OF REAL :
nama-nam a hari.
BEG III
CLRSCR;
TYPE
TipeHarl = ISENIN , SELASA, RABU.
KAMIS, { Pemasuk a n data suhu harian
JUMAT, SABTU, MINGGUl; FO ~ Har i : =SEUII l TO NIUGGU 00

CONST BE GHI
Keterangan : ARRAY[T\peHaril OF STRINGI61
= I'SENIN ', 'SELASA', 'RABU', . WRI TE ('Masukkan datil suhu hari Ket&rilngan( Hari] : 5, • .) ;
'KAMIS', 'JUMAT', 'SABTU', 'MINGGU'l; READLN (Suhu[Hari])
ENO;
Pada contoh ini, Kctcrangatl berupa array yang mengandung 7 buah
Hemperoleh diln menampilk;on suhu tertinggi )
elemcn data string: SuhuMaksi11um :: Suhu[SEUIN];
FOR Hari: =SELASA TO mttGGU 00
KeteranganiSENINl = ·senln'
IF Suhu[Hari) > Suhut.taksieUII THEN
KeteranganiSELASAl = ·selasa'
Suhut~aksi~um : = Suhu[Hilri];
KeteranganiRABUI = 'Rabu'
= 'Kamls' WRITELN ('Suhu tertingg i a dalah · . SuhuHalo.simum : 4 . 1);
KeteranganiKAMISI
KeteranganUUMATI = 'Jumat' REAOLN,
Keterangan!SABTUI = ·sabtu' EtiO .

KeteranganiMINGGUI = 'Minggu'
Conton oksekusi
Program 9 - 3 mcm pcrllhatkan conroh penggunaan inisialisasi array
bcrdimen s1 satu . Pada prog ram ini, arra y Keterangatl dipakai uutuk Milsukkan data suhu hari Senin :' 30
menyimpan data nama hari, sedangkan array Sullu digunakan untuk Hasukkan data suhu hari Se la&a: 31
menyimpan data suhu harian yang dimasukkan dari papan-ketik sewaktu
145
Hasukkan data suhu har\ Rabu: 33
Hasukkan datA suhu har1 K&lllhs : 30 Definisi dan deklarasi yang diperlukan untuk membentuk array seperti
pada Gambar 9-5:
Masukkan data suhu har1 Jumat : 34 . 2
Masukkan data suhu hari Sabtu : 29
31
CONST
Masukkan data suhu hari Hinggu :
MAKS-SISWA = 4;
suhu tertinggi adalah 34.2
MAKUES = 3;
__ TYPE
Program 9-3.
VARPenampungNIIal = ARRAY!1 .. MAKS_S!SWAJ OF ARRAYt1..MAKS_TESJ OF REAl;
Unruk konsr anta array d engan ekmcn bnupa karakt <: r. da par d1tulis
DataNIIal : PenamoungNIIal;
dalam bentuk karaktcr tunggal atau dalam bcntuk string. Scb.:!);Ji
conroh : P<:ndcfinisian ripe f>cnampzm.t; :' \'zfai juga bisa dirulis:

CONST TYPE
Digit : ARRAY!0 .. 91 OF CHAR
= ('0', '1', '2', '3', '4' , '5', '6', '7', '8', '9');
Pen2mpungNIIal ~ ARRAYf1..MAKS_S!SWA. 1..MAKS_TESJ OF REAl;

Penuli sa n dcngan bentuk yang rcrakhir lebih um um digunakan diban-


dapat ditulis dengan benruk:
d in gkan bcnruk yang pert;::ma. Pcndcfinisian tersebut menyJtakan
bahvva ripe ko mponcn (elcrnen) array berdirnens i dua mcmiliki tipe real.
CONST
Digit : ARRAY!1..91 OF CHAR Sed;mg kan kcdua tipe indek s bcnipc bilangan bula t. lndeks pcnama
= '0123456789': berkisar 1 sampai den g an MAKS _S/S\\.:A dan indcks kcdua berkisar
antara 1 sampai dcn g an MAKS_ TES.
Sctclah pendckhra si:m
IX.3 ARRAY MULTIDIMENSI
VAR
Array multidimensi mcrupakan nilai arr ay yang bertipe array. Pada
DataNilal : PenamoungNiial ;
Turbo Pas cal, jumlah dimensi dari ar ra y tak dibatas i. N amun nng
paling umum dipakai adalah array berd imensi dua. maka terbentuk array bcrdim cnsi satu d cnga n nilai awaJ dari masing-
Permasalahan yang menggunakan array berdimensi dua misalnya masing tak mencntu (karena riciak d ibc ri nilai awal).
adalah untuk keperluan pengolahan data nil ~ i dari sejumlah siswa,
dengan jumlah nil ai lebih dari satu per siswanya. Untuk memudahkan t 2 3 ..... indeks kedua
pcmahaman, array ·untuk keperluan ini bisa digambarkan seperti yang
1
tertera pada Gambar 9-5.
2 ~ DataNIIall2.31
Nllal 1 Nllal 2 Nllal 3 3
4 L_ L ll
Slswa 1
Slswa 2
I~ ~
oataNIIall4,21
L lndeks pertama
Slswa 3
Slswa 4 Gambar 'J- 6. Array dan p~nunjult.Jtr rl~m~n ;:zrray

Gambar <J-5. Gambaran array budimtnsi 'dua untuk mrnyimpan ujum/ah nilai J~n·
Masing-masing clemen dalarn array Da taNilai dapa t diabcs melalui
ujwmlah siswa J>Cnu~ukan:

H6
147
Sctebh seluruh data masuk ke dalam . a~ray, program ~elakuk~
!..-..NIIaltlndeks_pertama, lndei<S-kedual pcngolahan data untuk menentukan mlat rata-rata per Slswa ~'\
kdulusannya. Dalam hal ini sisv.ra dianggap lulus, apabila memiliki nil<\ l
hal im, ittddes_.pertama menyatakan data dari stutu siswa:
r~u-nt:a lebih dari atau s:ama dengan 60.
•..:.~,.ngr..an indeks-:edua menyatakan data dari su~tu tes. _Misalnya elcmen
nilai ces ke--' dan siswa ke-2 mempunya1 1dentttas:
PROGRAH Tes ;
c• ---------------------------------------------- •J
c• Contoh penggun~an array b&rdimenai dua •J
c• untuk menyimpan d~ta nilal dar! sejumlah s iswa
(. .
•l
)

USE!! CRT:
nilai sisw:t kec mpat. tes kedua . C0tl5T
~K!!_SlSWA = 20;
,.AKS_ TES :: • ;
nPE
n nibi ke v ariabd arr:1y berdimensi dua d iantaranya mdalui PenaJ>Opungll ilai ARRAY(1 .. ~AKS_SISWA) OF A R~"f (1 .... AKS_TES) OF Rl~ 1

raan penugasan . Misaln ya ;aJa: liAR


C>atat4i l;li Penamp lmgtH lai:
J~Siswa, JumTea BYTE;

takan pcr. gisian ni lai 70 k ~ elcmcn array dari sis'>va kecmpat, tcs PQOCED~RE Pemasukan_Data (VAR JumSi s wa,
. Jika 1x·mberia n n ibi d ila kuka n mclalui Readltr , pcnuli s:tnnya: JumT es BYTE) ;
{ untuk ~em~aukkon da t3 ke da lam a r ray
V A~

!nd ~ k a_Siswa, Inoeka_T es BYTE;


bll lSI Array BEG IN
bilan isi arra y mul tidim ensi di!Jk ukan dengan ~ara mcnyebutkan CLRS;:;R;
indcksnya sesuai dengan dimensi array. Misalnya untuk WRITE ( 'J umlah aiawa (1..20): ') ;
pilkan isi arra y DataNilai dari siswa kcdua tcs keempat, perintah RfADLN (JumSiawa);
WRITE ( ' Cacah tee ( 1 . . ~) : '):
dipcrl ukan:
READLN (JumTes) ;
FOR lndeks_Siswa :=1 TO JumSiawa DO
BEGIN
Contoh program yang menggunakan array berdimensi dua dicunjuk- WRITELN ('Data slswa ka-', Indaka_Siswa} :
pada Program 9-4. Pada program ini, Data Nilai merupakan array FOR lndeks_Tes : =1 TO Jumles DO
BEGIN
· dua, dcngan indeks pertama berkisar antara 1.. 30 (MAKS
WRITE ('Nilai tes ke-', Indeks_Tss, ' : ');
A) dan indeks kedua berkisar antara 1..5 (MAKS_TES) . Dengan
READLil (Datallllai(Indeks_ si swa, Indeks_Tes))
pendeklarasia.n sepcrti di aras rnenya takan bahwa array tersebut
EtiD
i untuk memroses data maksimal untuk 30 siswa dan maksimal EIID;
5 tes. Mcngenai jumlah siswa ataupun res yang sesungguhnya EIIO; ( akhir Pernasukan_Data )
an p.1da saat pro gram dicksekusi. Mula-mu!J yang dimasu.kkan
jumlah siswa dan cacah nilai yang akan dipros~ per siswa, PROCE DURE Pro aes_dan_Cetak_Oat a (JumSiswa, Jumres : BYTE);
ian diikuti dengan pemasukan data nilai dan ditempatk.an di arraY-
"r i
"
Cacah tea (1 •• 4) : 4
~ntukan rata-rata, kalulusan Data aiawa ka-t
~ eenaMPilkan lnforaasi ) tH.lal tn ke-1 : liO
Nllal tea ka-2 : 89
Vllfl BYTE: Hllal tea ka-3 : 78
Inoe ks_S iswa, Indeks_tes
REAL; tlllal tas ka-4 : 58
Juelah. flata_rata
STRIIIG [ 5] ; Data alswa ke-2
l(alulu&an
111lal tes ka-1 12
BEGIN
IH lal tes ke-2 56

{ suat judul } IJilai t"s ke-3 78


llllal te'l ke -4 90
CLR5CR;
WRITEUI (: OAFl AR III LAI : '); WRITElll ; Data siswa ke-3
WRITE ( 'tlo'); Hi lal tes ke-1 45
FOR Inde~s_Tes : =1 TO JumTes 00 Hllal te'l ke-2 67
WRITE ( ' IHlal ke-', Inde l<.s_ tes) ; IH la l tes ke-3 45
WRITELII ('Rata-rata ·: 11. ' Ke te r angan · l : IH la I tes ke-4 34

Proses penentuan rata-r~ta, k91ulusan OAFTAR II lLA! :


dan ~encetak daftar nilal }
Ho 11\la i ke-1 Hila\ ke-Z tlilal ke-3 Nilai ko-~ Rata-rata K~taranga n
FOR Indeks_Sisw~:=l TO JumSiswa 00 f1 90 . 00 89.00 76 .00 515 .0(: 77. 75 LULUS
2 12.00 56.00 78.00 90 . 00 59 . 00 TI DAl\
SEGitl
Jumlah := o; 3 45.00 87 . 00 ~5.00 34 .00 47 . 75 TIOAK
fOR Indeks_Tes :: 1 TO Jv~Tes DO
+ Oatall~ la i [ Ind e ks_s; s wa , l n d Ak s_Tes];
Jumlah := Jum1an Program 9- 5.
Rata_rata : = Juml~h I JumTes:
IF Rata_ra ta >= 60 THEN
Sesuai dengan contoh eksekusi Program 9-5, p roses pemasukan d:Ha
Kelulusan : = 'LULUS '
nilai ke dalam array DataNilai (Proscdur Pemasukan_Data) adalah sebagai
ELSE · berikut:
KeluluSAn : : 'TIOAK ';
WRITE (lndeks_slswa:2 );
FOR Indaks_Tea : :1 TO JUmTes 00
WRITE (OataHilai[lndeks_Siswa, lndaks_Tes] : 11:2J: [1,31
WRITELH (Rata_rata :11 : 2 , l(alulu~n:10)
EHD;
ENO·
[2,31

. IEGlH { progra. utaaa


P. .asukan_Oata (JUMS\swa, Ju.Tes) ; [3,11 £3,31
Proses_dan_Ca~ak_Data (JumSiswa , Ju.Tes);
M~~ Gam bar !J- 7. Prou1 p~mtu11lcan data let array
END .
Perh.itun gan nilai rata-rata dilakukan dengan m enghi tun g total nilai per
tiswa dan sebelumnya variabdjumlah diberi nilai 0. Kemudian nilai rata-
r.ua diperoleh berdasarkan:
(1. .20): 3

15 1
total nilai seorang siswa Pemyataan di atas jelas menimbulkan kesa.laha.n saat melaksanakan
Fata-rata = Jumlah tes READLN(Nilai_Tes{6}), sebab Nilai_Tes[6} sebenamya tidak ada.
Kes'alahan penunjukan terha.dap elemen yang tak ada, ternyata tidak
pcrnyataan yang diperlukan : rerdeteksi saa.t program dieksekusi . Untuk mengetahui kesalahan
semacam ini, pada program pcrlu discrtakan pengarah kompiler {$R+}
Jurnlah := O; yai ru pengarah agar kompilcr m cmeriksa kawasan array . Dengan cara
FOR tndeks_Tes:=1 TO JurnTes DO ini. saa r READLN(Nilai_ Tesf6]) dijalanbn. program akan terhenti dan
Jurnlah := Jurnlah + DataNIIalllndeks_Siswa, lndeks_Tesl. campi] suatu pesan kcsalahan.
Rata_,-ata := Jurnlah 1 JurnTes;

pcncntuan lulus tidak siswa d1 atur oich pcrn y.nnn. IX.S ARRAY SEBACAI PARAMETER

Arr ay dapat dilewatkan kc subp rogra m bcrkedudukan scb~gai paralllc-


IF Rata_rata >= 60 THEN
Kelulusan := 'LULUS' tcr, bai.K sebagai par.1meter nilai arJu pun parameter variabcl. Namun
ELSE sehai knya sua ru ar ra y d ilewatkan kc dJlam subprog rJrn sc b:.1 ga i
Kelulusan := 'TIDAK': parameter nriabcl, unruk mempcrccpat proses (seb::tb kalau dilcw:nkan
~ is'.'va , imtrubi v an f: di!"crlukan: scbagai parameter nilai akan terjad i pcnyalinan saar subprogram
Untuk mencetak data ·per
dip:mggil, d an hal ini tentunya mernakan wa ktu . Apalagi kabu array
mt·ngandung elemen yang banyak ). Hanya saja jika dilcwatkan scbaga i
WRITE Ondeks_slswa:2l;
par;]mCtcr variabel, pen gubahan elemen array, padJ subp rog ram :~kan
FOR lndeks_Tes:=1 TO JumTes DO
WRITE mataNilalllndei<s_Siswa, lndel<s_Tesl :11 :21: mempengaruhi parameter akrualnya .
'h'RITELN 1Rata_rata :11 :2, Kelulusan :10l Contoh berikut didasarkan pada Program 9- 5. Pad;; bagi:.1n dckbr asi
~1rosedu r pcrlu ditulis mmjadi:
,·an b pcrtJlllJ .;;~ r:~p a1
Untuk mdakukan proses yang scrupa dari si s,,·;;
yang tcrakhir, pernyataan yang dipakai adalah: PROCEDURE Pemasukan_oa~ lVAR JumSiswa. Jumres: BYTE ;
VAR DatJNIIal : PenampungNIIall;
FOR tndei<ulswa:=1 TO JumSiswa DO PROCEDURE Proses_dan_CetaiLOata uumSiswa, JumTes: BYTE;
BEGIN VAR DataNilal : PenampungNiiall;

Pada saar pemanggilan prosedur, pernyataan yang Jiperlukan:


END;
PemasukarLData uumslswa, Jumres, DataNIIall:
Proses_dan_CetaiLData Uumslswa, Jumres, DataNIIall;
IX.4 MEMERIKSA KAWASAN ARRAY
Adakalanya penunjukan terhadap clemen array rernyata di luar kawasar. IX.6 PENUCASAN ARRAY
indeks array. Misalnya dideklarasikan:
Penyalinan isi suatu array ke array lain dapat dilakukan mclalui instruksi
penyalinan per elemen array. Sebagai cont oh, kalau A dan B masing-
VAR
NllaiTes: ARRAYI1 ..51 OF LONGINT: nusing berupa array dcngan pendeklarasian s.cbag:1i bcrikur:

dan kemudian terdap:lt pcrintah: TYPE


TlpeArray • ARRAYI1 .. 51 OF BYTE :
VAR
FOR lndekS:=1 TO 6 DO X, Y : TJpeArray;
READLNlNIIaLTestlndeksll;

153
~

penyalinan elcmen dari array X ke Y dilakukan dengan perintah :

FOR 1::1 TO 5 DO X TIPE DATA TERSTRUKTUR RECORD


: YUI :"' X!ll:
Pada T1,1rbo Pascal, penyalinan dari suatu array ke array lain d:1pat
dilakukan dengan cara menyalin secara keseluruhan dari array m cnggu-
nakan pcnugJ.san arra y. Tcta pi hal ir:.i han ya bcrlaku jib kcJ u:t ;~rray
mcmp unyai t1pe ,. l!J g sama. Scb :1ga1 contoh:
Record m crup;1kan jcnis d.1t.1 terstruktur, yang mcngandung sejttr nLd 1
clcrnen deng :m setiap elemcn bi~a mcmpunyai tipc dat a yang bc rla ir u 11
y :=X: Ma~ing-n1.1sing elcmw dalam record dikcnal dcngan ~cbut.tn _6 <' 1d. St·r '-'1 ,

identik dcn gan: Jlcid mcmiliki nama tersendiri .


X.1 MENOEFINISIKAN/MENDEKLARASIKAN RECORD
FOR 1:=1 TO 5 DO
vm := xm: Bcnruk pcnddinisian record:

RECORD
daft..ar _fiel d..1: tlpeJecord_1:
datwr _fteld...2: tlpe_record...2:

caftar. fleld_n: Upe_record_n


END

M as ing-masing dajtar_jil'ld berupa scbuah a tau bebcrapa Jleld. · Jd, .•


dajiar ..:flt"iJ te rdi ri lcbih dari satu jield, an tar field ditulis dcngan pem i,.d,
bcrupa tanda koma.
Comoh pendefinisian dan pendeklarasian data bcrtipe record:

TYPE
FormatTanggal • RECORD
Tanggal : 1..31:
Bulan . : 1..12:
Tahun :WORD
·END;
VAR
Tanggallahlr • FormatTanggal:

FonnatTml,'?._~·II didefinisikansebagai record yang mengandun g .fir/,/


Tanggal , Rtt!att dan Talum. Sedangkan va riabel Tangga/Lahir dideklar.h •
kan benipc FormatTanggal yang berarti variabel tersebut bcrtipe n·.. ,,,,
yang merniliki tiga buahfield. Dengan pendeklarasian dcmikian, vari:~hd
TartggalL1!tir dapat digambarkan scbagai berikut:

f"l')
"'
Kadang-kadang dijumpai adanya record yang mengandung:field yang
juga bertipe record. Record yang mengandung record memang cliperboleh-
TanooaiL.ahlr kan . C ontoh pendefinisian/pendeklarasian record yang mengandung
record adalah sebagai bcrikut:
r~·.sr 10-f. G.sm • .sr.stl stbu.sls rtcortl
TYPE
FormatTanggal = RECORD
Jika dikehendaki, pendeklarasian variabel bertipe record dapat ditulis
Tanggal : 1..3~j
secara langsung: Bulan : 1.. 17:
Tahun : WORD
END ;
VAR
Tanggatl4hlr : RECORD
Tanggal : 1..31: RecordTeman = RECORD
Bulan : 1..12: Nama : STRINGI61i
Tahun :WORD Tgllhr : FormatTanggal~
END; Alamat : STRINGt351; ·
END;
Contoh yang lain: VAR
DataTeman = RecordTeman :
CONST
MAKS_jNS.J!RG = 20: { Masklmum darl jenls barang )
Pad a contoh ini , variabel DaraTeman d:!pJt digambJrbn scperti tcrlihat
TYPE r:~da Gambar 10-3 .
Recorctearang = RECORD
Kode : STRINGt61; .
Nama : STRING115l; Nama Tgllhr Alamat
Jumlah : WORD; I l....-
Ukuran : ST~INGt101} f · - ,,-- r 1

HargaPerunlt: REAL
END;
'-----'----~
-.L.__==--L / J DataTeman
Oattarilarang ,. ARRAYI1 ..MAKS_jNS_BRGl OF RecordBarang ; Tanggai Bulan Tahun •
Gambar 10- J. Gambaran ruord di dalam ruord
VAR
earang : DattarBarang:
Variabel DataTeman mengandung tiga buahfie/d bcrnama Nama, Tg/Lhr
Pada contoh ini, Barang merupakan array yang terdiri dan 20 elemen dan Alamat. Field Tanggal sendiri mengandung tiga buah field bernama
yang bertipe record. Setiap elemen dan array mempunyai 5 buah fie/! Tanggal , Bulan dan Tahutl .

Jumtah UkUran HargaPeruntt


Kode Nama
earangl11 X.2 MENGAKSES RECORD
f
sarangt2l Field dari suatu record dapat diakses dengan mcnggunakan bentuk:
Barangt3l
-- nama_variabeiJecord . nama_field

earangt20l Misalnya, untuk memberikan nilai 2 ke field Tanggal dari variabel


Tang([alLah ir, pernyataan yang diperlukan:
Gambar 10- 1. Array htrlipt ruorJ
157
156
pemasukan jumlah jenis barang. Pemasukan data sebanyak JumBarang
ranggaiLahlr.Tanggal := 2; diatur melalui pernyataan FOR, sebagai berikut:

FOR lndelcsBrg:= 1 TO JumBarang DO


BEGIN
earang!21.Nama := 'Oisket DENSO' ; CLRSCR;
~erupakan salah satu cara untuk men gisikan dau nama barang ke field
WRITELN t'Oata Barang Ice··. lndeK5BrgJ;
WRITE rKode Barang : 'J:
Nama dari record Barang yang kedua . READLN tBarang!lndeksBrgl.Kodel:
WRITE t'Nama Barang : 'J;
READLN tBarangflndeksBrg!.NamaJ;
WRITE t"Jumlah Barang : 'J ;
WRITELN tBarangl2l.KodeJ; READLN tBarangtlndel<sBrgi.JumianJ:
rnerupakan pernyataan untuk mcnampilkan kode dari barang yang WRITE t' Ukuran/satuan : 'J :
READLN !Barang!lndel<s Brgi.Ukura'lJ;
'kedua . WRITE r Ha rga per unit : 'J:
Untuk mengakses data field Tanggal pad a varia bel DataTonan yang READLN !Barangl!ndeksBrgf.HugaPerUnltJ;
rnc1 ;;andung record di dalam record diperlukan bcntuk pcngaksesan WRITELN
END
berupa:

oataTeman.TgiLhr.Tanggal
Untuk mcma~ukbn kodc bara ng misalnya dipaka i pcrnyataan:

Misaln ya, untuk memasukkan data tanggal, pernyataan yang dipakai: READLN !barang!lndel<sBrgi.KodeJ:

READLNtDataTeman.Tg!Lhr.TanggaiJ ; Selanjutnya data barang diurutb n (di -sorting) bcrd:1sarkan kode barang
dengan mcnggunakan mctodc hu~.~!e-so rr. Mctodc ini me rupakan metodc
Di samping mengakscs s.:buahfield, tcrdapat cara unt uk mcng ak scs isi ya ng palin g scderha na dabm m.:ia kukan pcnguaHan data (da ri scgi
ra keseluruhan dari r.:cord. Mi salr:ya saja seluruh dat a yang ada pada logika maup un pemrograman ). t,' tJpi mcmpunyai kclcmahan dalam hal
record Barang{2} disalin ke Barang{3}. Kalau menggunakan pcngaksesan kecepatan p roses (mcm erlukan \•:aktu yang lana ). Proses peng urutan
per field maka diperlukan scdcretan pernyataan sebagai berikut: dilakukan dcngan m embandi ngbn sclu ruh data . Hal ini ditunjukkan
pada prosedu r So rti11g_])aca .
Barangl31.Kode := earangt21.Kode:
Barangt31.Nama := aarangt21.Nama: PROCEDURE Sortlng_Data UumBarang: BYTE ;
sarangt3Uumlah := earang!2JJumlah: VAR sarar19: DaftarBarangJ;
earang!31.Ukuran := earang!21.Ukuran: { untuk: melakukan pengurutan tertladap data barang
earang!3l.HargaPerunlt := earang!2l.HargaPerunlt; berdasarkan k:ode barang
menggunakan metode bubble·sort }
Sedangkan kalau menggunakan pengaksesan record, cukup menggunabn
VAR
I, J : BYTE;
Recsementara RecordBarang;
Barangl31 := aarang!21 :
BEGIN - · ·
Contoh program yang melibatkan da ta bertipe record disajikan pada FOR 1:= 1 TO JumBarang ·1 DO
Program 10-1. Program di gunak an untuk menampilkan daftar penjual- FOR J: =l+1 TO Jumaarang DO
IF Barangfii.Kode > aarangUI.Kode THEN
an b arang. Pemasukan data penjualan bara ng diatur melalui prosedur
BEGIN
PemasukarL..data. Data dimasukkan melalui papan-ketik diawali dengan
159
~

kode
RecSementara := earanglll; KP-002 .... . B:uang[I)
Ban.ng(I) KP-002 ..... RecSementua :
earanglll := earangUI ;
sarangUI := RecSementara BanngUJ 05-{)12 .. .. . Bar:lng[I) --+ DS-012 .. ... BanngUJ
END RecSemenuu ? ? KP-002,L . _.....
___.J
RecSemenura
.

END: { akhlr sortlng_.data }


--
I Dmng[IJ := Baran g[JJ
!{unci pengurutan berdasarkan kode barang terletak pada pernyataan:
~
Barang[ l] DS-012 iDS-0 1 21~
.. .. Ih rang[l ]
IF earangHl .Kode > earangUJ.Kode THEN f--+-
BarmgUJ KP-002 +-- 13arangUJ:= IDS-012j .. ... Buan i; U)
Seandainya pwgurutan bukan b erdasa rkan kode barang, maka pernyata- j n.ccSc mcntJ-1 1

I r:~
an terscbutlah yang perlu diubah. Misalnya, ap abila da ta barang
disorti ng berdasarkan harga barang, pernyataan yang diperlukan adaiah: RecScmentara6P-0021 ..... IK P-0t.l2i ..... j RrcSementara

IF earangtil.H argaPerUnit > earaMUJ.HargaPerUnlt THEN Gambar 10 -4. Prosts pcr.ultaran data

Pcrlu dikct ahui tanda > dalam pernyataan IF dimaksudkan untuk Sedangkan total pcnjualan dihitung J cng an mcnggu nakan pern yataan:
mclakubn penguru tan secara naik (ascending). K alau dalam bentuk
bil angan, u~uran sepcrti 1, 4, 5, 7, 8, 9 dinamakan dengan pen gurutan Tota iNilaiPenjuaian : = TotaiNilaiPen]uaian + iOG!Lper _barang
sccarJ naik , scd:mgkan urutan 9, 8, 7, 5, 4, 1 dinamakan urutan menurun
(desccndirtg ). Untuk mclakukan pen guru ran secara turun, tand a > cukup Proses perh itungan total nilai penj ualan d ibkubn dc:ngan menggunakan
FOR dan di olah sebanyak jciJi s barang. Scbclum pro~es perhirungan
diganti dengan tand a < dimulai , variabcl Toral.NilaiPw_jnalarJ haru s dinolkan rcrkbih dahu lu .
Pernyataan: Sesu dah pc ngeksckusi ~n pernyataan berikut:
IF earangUJ.Kode > BarangUJ.Kode THE N
iotaiNiiaiPen]ua!an := 0:
BEGIN FOR lndeksBrg:= 1 TO JumBarang DO
RecordSementara := earangm:
earang!ll := earangUI : BEGIN
earangUI := Recsementara TotaLper.J)arang := BarangllndeksBrgl.HargaPerUnir •
BarangllndeksBrg1.Jumlah:
END TotaiNIIaiPen]ualan := TotaiNilaiPenJualan + Tota l_per..barang ;
menyatakan bahwa jika Kode dari Barang ke-I bernilai lebih dari Kode dW WRITELN ondekSBrg :2. BarangllndeksBrgi.Kode:13.
Bara rtg ke-j, maka data antara Barang ke-I dan Barang ke-j sating earang!lndeksBrgi.Nama:16,
Barang!lndeksBrg1Jumlah:7,
ditukarkan (penukaran berlaku untuk seluruh jieltl). Untuk keperlU211
BarangllndeksBrg1.Ukuran:14,
penuka ran data, diperlukan sebuah record penampung data semenun Barang!lndekSBrg1.HargaPerUnlt:12:2,
(RecSementa ra). Proses penukaran dilukiskan oleh Gambar 10-4. Totalper_barang:1 2:2>:
Bagian terakhir dari Program 10-1 berupa bagian untuk menampilbn END;
data barang. Proses penampilan data barang dilakukan pada proscdt11'
nilai total penjualan diperoleh. Pada pernyataan di atas, tampak setiap
Proses_dart_CetaLData . Pada prosedur ini, total hasil penjualan <Wi
bli sesudah menghitung f'!il~i total per baran g dan total nil ~ i penjualan
masing-masing barang dihitung berdasarkan rumus: sementara , da ta-data yang bcrb.itan dengan barang (mcliputi nama,
jumlah, ukuran, harga per sa tuan dan total per barang) segera
Total per barang = Harga per unit x ]umlah barang ditampilkan ke laya r.
N ilai total dalam hal ini disimpan pada variabcl TotaLper_bar•
161

160

_,. .~ .. ; :
~ .;......~•-'"-"·""'·"'·•"''' .. 'c· .......
... • • ... .. i . :.. __ •· c ·•lf¥ 11?\!fl.±.:..'§. ~
,.

WRITE ( 'Ukuran/aatuan : •);

..
PROGRAM OataPenjualan; REAOLH (Barar.g[IndekaBrgJ .Ukure 1i j :
,. -------------------------------------------- •>) WRITE ( 'Harga per unit : •) ;- -
1• eontoh penggunaan record REAOLH (Barang[Indel<aBrg] . Harll•"••llnit);
<• pada pemrosesan- data barang hasil penjua1an ) WRITELN
<• -------------------------------------------- •> END
EIIO; { akhir pe!Usukan data }
USES CRT;
CONST PROCEDURE Sorting_Oata (JumBarang ; ~,,,
H~skimum darl jenls barang J
HAKS_JUS_BRG : 20;
VAR Baran g : ''"' l ~ r iJa r ang) ;
TYPE
RecordBarang RECORD
Vntu~ melakukan pengurutan tu h o oJ • ., ' l•t. o b•ra ng
Kode STRltiG{6] ;
berdasarkan kode bar ang
llama STRIIIG{ 15] ;
mengg unakan metodo bubble-go rt
Jumlah \~ORO ;

Uk uran STRING(10] ;
VAR
~ Ha rgaPerUnit : REAL
I. J BYTE;
END ; RecSecnent .M.ra RecordBara ng ;
Da ftarBarang : ARRAY [ 1 .. IIAKS_JtiS _BRG] OF Re co rdBarang;
BEGIN
FOR I::l TO JumBarang-1 DO
VAR FO R J : :I+1 TO JumBarang DO
Barang OaftarBarang ;
IF Barang[I] .Kode > Barang[ J J
• IIIEII
· Ju~Barang : BYTE; BEGIN
RecSementa ra : = Baran g(lJ
PROCEDURE pgma suka n_D ata (VAR JumBarang : BYTE ;
Barang[I] := Ba rang[J];
VAR Barang : DaftarBarang);
B~ra ng [Jj : = R~cSement a r•

EN D
{ untu k mcma suk kan data oacang ) EUD; { alo.h ir 5or ting_da ta )

VAR PROCEDURE Proses_dan_Cetak_Oata (VP ~ _ ,.,,,~ , · nng: BYT£;


IndeksBrg 1 .. MAKS_J IIS_BRG;
BEGIN Vfo~ •-~ " ''J : DaftarBarang);
mencetak data dala• bentuk t&be l
CLRSCR ; Perhitungan : menentukan total n i ' •
WRITEUI ( ' PEI~ASUKAII DATA BARAIIG : ' ) ; HRITELII; • 111 .. , ...,

WRITE ('Ada berapa. janis data barang : ');


VAR
READLH (JumBarang); IndekaBrg ; BYTE;
FOR IndeksBrg : =l TO JumBarang 00
TotalNilaiPenjualan,
BEGIN T'o ta l_per _barang REAL;
CLRSCR ; BEGIN
WRITEUI ( ' Data Ba rang ke - ', IndeksBrg): CLRSCR ;
WRITE ( 'Kode Ba r ang : ' ); WRITEUI ( 'DAFTAR PEilJUALAII : '); h~ J ·' ,
READUI (Barang(I ndeksBrgJ. Kode) :
WRITELN( ' No l<o<le Barang 11 ...,• t.._. ,~,, Jumlah Ukuran/satuan
WRITE ('Nama Barang : ') ; 'Harga/Uni t Tot A 1 ') , -
REAOUI (Barang(IndeksBrg].Uama);
WRITELN('==================== === •
WRITE ( 'J um 1ah Barang : ' ) ; l~= = ==== = ============ ==
:::::: : :: : : :::: :: : ::: :' I
READLH (Barang( IndeksBrg] . Jumlah) ;

163
162

---·~·~;"':Q:;~o· ~ - ·· :-~.' .. u·):;.~


Nua larang : Nonttor ECHO
Tota1Ht1a1Penjualan := O;
JUII 1ah Barang : 4
FOR Indeks8rg:=1 TO J~Barang DO
Ukuran/aatuan : buah
BEGIN Harga per un1t : 137000
Total_per_barang := 8arang(lndeksB.r9] :HargaPerUnlt •
aarang(IndeksBrg).Ju.lah;
TotalNilaiPenjualan : = TotaltlilaiPanjualan + Total_per_barang; DAFTAR PEHJUAL.t.tl :

WRlTELN (lndeks8rg : 2, 8arang[Indeks8rg} . Kode:13, No Kode &&rang H. . • aarang J~lah Ukuran/.atuan Harta/unit TotAl
8arang(IndeksBrg].tl~ma : 16, ==========·=========== = ==: = ================================ = ==~========== = ==
Barang(IndeksBrg).Jum1ah:7, OS-012 Olaket OftiSO 10 pak 17000 . 00 170000.00
Barang[IndeksBrg] .Ukuran : 14, KP-002 K ert~•Printer Go• 28000.00 56000 . 00
Barang[IndeksBrg].HargaPerUn i t : 12 : 2, 3 ~10- 003 l-Ion I t or £CliO b•JAh 13 7000.00 5• 8 000.00

Total _per_barang : 12 :2); =============================== === ==== ==3================== === === ===== ===: ;:
J UMlah ; JH OOO . 00
EtiD; _
WRITELN( ":================= ==== ============ ====================·,
·======================' ); Program 10-1.
~ WRITEUI ( ' JUMlah : ' :54, Tot a llli la i Panjua lan: t 2 : 2) ;
EIID: { akhi r Proses_dan_Catak _Data }

X.3 MENGCUNAKAN PERNYATAAN WITH


BEG III { program utama }
Pemasukan_Data (Jumaarang , Barang ); Pernyat;tan with dipakai uncuk kcpcrluan rcng::tkscS.1ll JatJ f< '( O rtf
Sorting_Data (JumBa ra ng, Sara ng);
Dengan menggunakan pernyataan ini, nama reco rd cu ku p dis cbut satu
Prosas_dan_Cetak_ data (JumBarang , Barang);
kali dan selanjurnya fie ld dapat diakse~ t:lnpa mcnycbutkan nama recMd
READLN
lagi. Bcntuk pern yataan with scndiri ada lah scbagai berikut:
WD .

WITH nama_record DO
contoh aksakus l:
pernyataan
Ada berapa janis barang : 3
Misalnya dalam pendetlnisian dan pcr:dcklarasian :
Data Barang ke-1
Kode Barang KP-002 CONST
Kartas Printer MAKS....JNS_BRG = 20; {Masklmum darl )enls barang }
Nillll& Barang
TYPE
JUIII l&h Barang : 2'
RecordBarang = RECORD
Ukuran/satuan dos
Kode : STRING!61;
Harga par unit 28000
Nama : STRING!15l ;
Jumlah :· WORD;
Data Barang ka-2 Ukuran : STRING!10l ;
Kode Barang DS-012 HargaPerunlt: REAL
Na ... Barang 01 sket OEtiSO END;
Ju.lah Barang : 10 DaftarBarang = ARRAY!1 .. MAKS...JNS_BRGI OF RecordBarang;
Ukuran/satuan pak
17000 VAR
Harga per unit
Barang : DaftarBarang:
Data Barang ka - 3
deretan pcrnyat aan sepem:
Koda Barang ~I0 -003

165
164

,..,...
..
-.~
~ · : ~· .
Apabila dinyatakan dengan menggunakan with, pemyataan yang perlu
FOR mdeksBrg:=1 TO Jumsarang ~ -
ditulis berupa: · ··
BEGIN
CLRSCR;
WRITELN I'Data- sarang ke·'. tndekSBro>: WITH DataTeman.Tgllhr DO
WRITE I'Kode sarang : 'l; ~ BEGIN
READLN IBarangUndekSBrgi.Kodel; Tanggal := 20;
WRITE !'Nama sarang : 'l; ·- Bulan := 8:
READLN maranglln~.£!!91.Namal ; Tahun := 1969
WRITE I'Jumlah Barang : 'l; END;
READLN IB)fangllndeksBrgUumtahl;
WRITE I'Ukuran/ satuan : 'l: Seandainya terdapat beberapa data record, dan secara bcrsamnn
READLN IBarangllndel<sBrgl.Ukuranl:
tcrda pat operasi untuk m enga kses .field da ri bcrba gai record, penu!is;m
WRITE l'Harga per unit :-~>: ·
READLN IBarangllnQfkS.ill9).HargaPerUnltl; pcrnyataan with yang dipcrlukan bc:rbentuk :
WRITELN ~ '
END WITH nama_record_1 DO
~ WITH nama_record...2 DO
dapat ditulis mcnjadi

FOR lndeksBrg:=1 TO JumBarang DO WITH nama_record_n DO


WITH sarangllndel<sBrgJ DO ·pernyataan:
• BEGIN •
CLRSCR; . Bentuk seperti di atas dapat digantikan dengan bentuk penulisan scbagai
WRITELN !'Data Barang ke··. lndeksBrgl; berikut :
WRITE I'Kode sarang : 'l;
READLN IKQ.gg!: WITH nama_record_1, nama_record...2, ... , nama_recoic:Ln DO
WRITE ('Nama Barang : 'l; pernyataan
READLN INamal;
WRITE I'Jumlah Barang : 'l;
Dengan bcrdasarkan tipe yang dibahas pada Subbab X.l, m1 sainya
READLN Uumlahl;
didek larasikan :
WRITE I'Ukuran/satuan : 'l:
READLN IUkuranl;
WRITE I'Harga per unit : 'l: VAR
READLN IHargaPerUnltl; TanggaiTransaksl : FormatTanggal;
WRITELN Pembellansarang : RecordBarang;
END
Seandainya terdapat pemyataan:
Pada pcndefinisian
WITH PembellanBarang DO
VAR BEGIN
DataTeman : RecordTeman: WITH TanggaiTransaksl DO

Qihat Subbab X. 1), misalnya ingin memberikan data ke field Tar~ggal. WRITELN I'Tanggal Transaksl: •. Tanggal, ·; ·,
Bulan, ·;·, Tahunl:
Bulan dan Tafum , pemyataan yang diperlukan: WRITELN !'Nama barang : ·. Narnal: : ·. Jumlahl:
WRITELN I'Jumlah : ·• HargaPerunltl:
WRITELN I'Harga per unit: ·. To tall
DataTeman.Tgllhr.Tanggal := 20; WRITELN !'Total
oataTeman.Tgllhr.Bulan := 8; END;
oataTeman.TgiLhr.Tahun := 1969;

167
166

... .. .....:?_,.-!, ~..,:.:+o.--._ ...........-"'".'=" ''~''1,11 ~- ~ ....:~ .. -


G.ll~ ..... ""'Lembur: BYTE:
pernyataan yang mengandung with tersebut dapat ditulis menjadi:
END
It•·-·
WlTH PembelianBarang, Tangga!TransaK51 _oo_
RecornPegawaiHonorer = ,.,..........~' : STRINGI61;
BEGIN
WRITELN I'Tanggal TransaKsl: ', Tanggal, '/', ""' \,1.
\1"' · STRINGI151;
Bulan, '/', Tahunl ; ,,.,,~,~ : lONGINT;
WRITELN t'Nama barang : •• Namal; "" 11111 \!.ti\Jamlembur: BYTE ;
WRITELN I' Jumlah : •. Jumtahl:
f~••~
WRITELN I'Harga per unit: ·• HargaPertJnltl:
WRITELN nota! : '. To tall Untuk mcnghemat mcmon .•. " ''' ' ' l..cdua record d:~pat dijadik an satu
END:
(m cn gg u nak:~n va riant rt:e<'t ·:' ' ' ' •11 ·'· 11 :
Dari beberapa contoh , terlih at ba hwa p :>,;gu naan pe rnyaraan with dapat
menghcmat penulisan program . Unruk mcngakscs sejumlah data _field , TYPE
StatusPegawal = ITETAP. Hl''\~~~~·l
nam a record tidak pcrlu ditunjuk be:bli-bli dengan menggunabn
bentuk l!allza _record.tumw-Jield mel:l ir:b;. cukup ditulis sekali saja .
RecordPegawal = RECORD \ 1t:INC!61;
NIP ~~ t:ING!151;
Nama , 1 ~wsPegawal OF
X.4 MENGGUNAKAN VARIANT RECORD CASE St"' ' 1t 1AP : tGajiPokol< : LONGINT;
Bebcrapa con toh di depan mcmbcrikan ga mbaran record dengan tipe data JumlahJamlembur: BYTE l:
dari clcmcn b ersifa t tctap. Suatu :<l tc~narif y;mg lain yai tu berupa va riam 1, 1 , 1111 ~erja : BYTE!;
HONORER : (i t • •• I I' ll I
record. yang di m:~k su dk a n untuk mc>1ghc mat memori. Sebab dengan END ·• I1 penutur ' P ' ' •
mcnggunakan altcrnatif ini, data yan g berbeda dapat menempati lokasi VAR
memori yang sa ma. Misaln':a saja. >ua tu reco rd pcgawai mengandun~
1
DataPeqawal RecordrN ' " '

d t• 1t
,1 w,.., hagian tetap dan bagian yang
d
data s:.:bagai bcrikut : Suaru vau .1tll rccor" dJ p.H ~ 11 • , ..•
I
, Na ma dan Status (terktJk . pa a
1 111
(1) Umum : bcrv aria si . Pad:>. contoh, f1< · ' ,. up dari uariant rewrd. Sclcbthnya

!'vlcli pu ti: N omor induk karvawa n (NIP) C ASE) mcrupakan bagi::n ' ''.':· , ( 1.,,itu Status, GajiPokok, jllmlah]am-
Nama mcrupak.tn bagtan ya ng bcr• ' '... /.1 ,c pcrti S tatw (yang tcrlet~k an ta_ra
(2) Khus us: Lembu r dan Jumlal~fam Ko]il\ ' ,,.: field . Kcdudukan tag j1eld y~ttu
a. Jika pegawai TET AP, dat a berupa: CASE-OF) dinamakan scb 11 '' ;tf ,,.!t l •. Field ini haruslah bertipe ord mal
- Gaji pokok menrntukan
.
haaia11
6
field
.
vang
. .
I•· ·• '. ,ll,,t )11 • field u<::taftH mcny·atakan bahwa:
- Jumlah jam lembur {ttpc skalar, kecuah real). P;~tl \ , aka
1 1 111
b. Jika pegawai HONORER , data berupa: - Jika Status bermlat TE ' ,,;i berupa:
- Jumlah jam kerja fie/d dari ba'gian yang l•t" v A 1 1
(i) GajiPokok
Apabila dat.a pegawai tetap dan hono rer disajikan dengan dua buah
(ii) Jwnlah)amLembur . 11 · ll . maka
record yang berbeda, definisi yang diperlukan bisa berupa sebagli 1 1
jika Status bernilai Ht l Nl i berupa:
o/ I.J'
berikut: }lela dari bagian yan g I .,., · I

(i) /um/ahfamKa.f,1 . kl ·k bcrtipe


TYPE · - , , 111 , 11 ; )'ang dtdc · a ras1 ;an
RecordPegawaiTetaP = RECORD
: STRINGI61: : STRINGI151 ;
Poia d:~ta •
pa d a varnbel I 1·" · f 1 ,·
' '·'
, ;uJba r 10-5.
NIP RecordPe_~tnlllai dinyatakan d .&!""
Nama LONGINT;
16Y

168

. ~~
PROaRAN VartantRecord;
~
7 ~~ :....__-
t1112 r w 7bvte ···11114NIP
(• --------------------------------------------------- .,
16b' eUDINSAH Nama (e Contoh pengguna.n variant record •)
16 t--n' ~WIR H"-' PGN t• untuk . .nyiMpan d~ta gajl PQkok, ju.lah ja. le•bur •>
1bvt HONORER status t• ~ ju.lah j . . kerja dart pega~at TETAP dan H~IORER •)
I "TT~ ~ Jl ....... . -.t,;:;.. • .....
1 t"lif
6 ~if : -:srox ~Ok
1 bvt•
4bvt
120 1Jumtah.JamKerja
_j !Kosongl
(• ------------------------------- -------- .,
1 !7fn' , ~ sc .uniah.Jaml.embur li~H!I CRT;
!bl status = HONORER COt~T UPAH_PER_JAN : LOIIGIUT : 3000 ;
ta:sun.o: : mAP TYPf
!ltatu•Pegawal • CTETAP HOIIORER);
Gomb3r tV- .: C.. ml>c-~., w< latl.f va rianl ruord ~~ ordPegaw•; = ~ECORO
NIP : !ITR!IIG [ 5];

_,,-n •..:· ~"man nilai da ri r'1.~ jleid bi sa lebih da ri dua.


lla " • : 3TR!IIG( 15 J ;
C:nJ r;;:; · •
• r:dc ~.i..c""lt- berkaitan de ng:m kemungkinan ni lai dari r.Jg fie 1.. .:
CASE Status · S tat us Pegawat OF
TE TAP ( G•j i Pokok LO!IGIUT;
~1 :u~ .iirulis di dalam tanda kurung . Ju.lahJAmlembur : BYTE);
HOIIORER ( J •-""lahJa~>Kerj;a : BYTE);
~ f:rL i.i;.m: EtlO;
LON GINT;
TET :\P (GajiPokok \IAR
Jum lahJa mLcm- BYTE);
D"taPega~>~ai ~eco r dPvgaw ... i
BYTE );
HG '.; v H.F.R bur JAwab~n CHAR ;
OumlahJamKerja OajtBer•ih l~I G itiT ;

sc~u.:ah tanda kurung tutup terdapat tanda titik koma !EO IN


• _liKa .oJ .1 kemungkinan nilai dari tag fie ld yang tid~
,!irer~unakan, bagian dcklarasi field cukup diculis beru('l ( He•~aukkan data ke recor o

U:1~l kurung buka dan langsung diikut t d en gan kurur:? yang ••11bt~kan v•riant recor d

CL~ SCR :
rutur- . Misal :
KO'.;ST AN_)(:(); WITH DataPegawa ; 00
tidak ada spesifikasi field BEGIN
untuk KONST AN_x. WRITE ( '1lomor Induk Karyowa n . ·) ;

KONSTAN~"X
REAOLH (HIP) ;
yang mcnyatakan: "Jika tag field bemilai WRITE ( ' II~10•Pe9•w• I : ' );
READLH (tl•ma) :
tidak ada field khusus" .
WRITE ( ' Pegaw•i Tetap fY/T)? ' );
(cara lain: kemungkinan tersebut ridak usah ditulis)
REAOLII ( J;awaban) ;
• Berbeda dengan pernyataan CASE, CASE pada pendefini5l- IF (Jawaban: ' Y' ) OR (Jawaban:'y') THE!!
an variar1t record tidak diakhiri dengan tND. Statu• : : TETAP
• Pengaksesan terhadap field pada bagian yang bervari.lsi. ELSE

sepenuhnya harus dikendalikan oleh pemrogram (denglll StatiJS : : HOtiORER ;


CASE Statua OF
memcriksa nilai kemungkinan dari tag fi elcl). TETAP : BEGIN
WRITE( ' Gajt Pokok
C o n toh program yang ·melibatkan variant record 6pat dilihat pa-dl ") ;
REAOUI (GajiPok ok) ;
Pro gram I 0-2. WRITE( 'Juml ah j~ lembur ' );
Su atu varrant record dapat hanya mengandung bag:un yang berva.OJsi REAOLH (JUGlahJa~>Lembur ) ;
(tidak mern ilib bagian tetap). Pada bcntuk seper..l ini, yang bertiiri Gaji8erath : : GajiPokok + UP~ _ P ER_JAM • Ju=1ahJamlpmbur

170 171

.~~. ·.- ~ I •· . , i·•


END;
~-{ AL
AJI
HOIIORER: BEGIH
WRITE ('Jualah Ja. kerja : '); BX [ BL
BH
REAOLII (JUilllahJa.~erja);
.-
EtiO
GajHleralh :o UPA<'i_PER_JA>l • J<MOlahJaa~r.la ex { CL
CH
E~D; caw } ox DL
f-
( akhlr
WRITELH; DH
WRITELH ('Ga.ll total : Rp' , GAji6erslh : 10);
----.....


EIID; { akhlr ~<lth }
REAOUI
EIID.
E.S
flags
contoh ek.s.ekusi :
Gambar 10-6. Variant rteord yang tidal< m~mililti bagian t(tJp
HOMOr Inouk Karyawan: 11112
~ HaAI& Pega.,.a i : AIHR HAJI field tidak dipentingkan, brem Hu tag jlcld-nya tid.1 k berupa vari.1bcl.
Pegawai Tetap (V/T)! Y
Pada contoh , masing-masingjldd AX, BX, CX . 0.\. BP, Sf DI, DS,
Gajl Pckok 250000
J~lah j~• 1embur : 150 ES ldan jFiavs menemp;;ri mem o ri scbanyak 4 byte (tipe woro ; . Sedang
kan AL, 1\H, RL, BH, CL, CH, DL dan DH mcnempati 1 byte
Ga.ji tot,al = RP 700000 (ripe byte). Berdasarkan urutan pendeklarasian j l.-1.1, dan sifat b:thwa
t'ariant record disimpan mulai mcmori y:mg samJ. maka field .-lL
UOQor lnduk Ka.rya.,.an: 11,14
Harta Pec;&w•1 : UOIUSAH
akan berisi bvte oertama dari field AH yang bcrisi bvtc kedua dari .iX,
P•g-wa i Tetap (V/T)! T field BL berisi byte pertama dari _field RX, dan setcrus n\"J.
Ju.lah j uo karja : 120

360000 X.S INISIALISASI DATA RECO~D


Gaj 1 tot& 1 = Rp

Program 10-2. Seperti halnya array,. memberikan nilai awal terh adap record juga dapa t
dilaksanakan dalam deklarasi CONST, berdiri sebaga1 ko nsranta bc rt ipe.
sebagai tag field tidak lagi berupa suaru varia bel, melainkan berupa suaru Bcntuk konstanta record:
definisi tipe . Sebagai contoh adalah ripe Registers yang disediakan dalam pengenaiJecord : tlpe_pengenal
Turbo Pascai, yang nantinya bermanfaat unruk keperluan pengaksesan = (flelcL1: nllaL 1;
DOS . Tipe ini didefinisikan sebagai berikut: fleld-2: nllal-2;

TYPE flelcLn: nllaLn)


Registers = RECORD
CASE INTEGER OF Program 10-3 melukiskan contoh inisialisasi tcr had ap da ta rcwrd,
.Q: lAX,BX,CX,DX,BP,SI,DI,DS,ES,Fiags:WORDl;
1: IAL,AH,Bl,CL,CH,DL.OH:BYTEl; bernama Data, yang digunakan untuk menyimpan d:ltJ permainan . Pada
END; program ini, nilai pada record Huruj; X dan Y untuk masing-masing
indeks array:
Pendefinisian di atas dapat digambarkan seperti yang tertera padl
indcks == 1. Huruf == #1, X == 7, Y == 3
Gam bar 10-6. indcks == 2, Hunif = #2, X == 8, Y == :1
Variant rt:cord yang tidak memiliki bagi:m tetap sering disebur dengan
indeks == 3, Huruf = #153, X = 4, Y = 8
· istilah free u11ion. Pada pemilihan bcntuk ini, nilai dari kemungkinan t4g

173

.•· .•. ~,.


UNTIL Poalai_Kin~ <> 0; ( kalau tennyata 0, ulangl
pROGR~ Pe~lnan; OOTOXY .(X, Y); ( ke postal ta.pllan huruf
c• ------ ----------~:: ---------~-- --- •> WRITE {132); · ( hapua huruf pada layar
c• canton pea.akalan konetant.a record . • , INC(X, Poslai_Kinl); { poalal baru X
c• ---------------------------------- •l IF X > POSISI_AKHIR THEN
I)SES CRT; BEOIN
cotiST JIJI.ILN1 = 3; X :: POSISI_AKHIR;
TYPE P... nang : : _Indeks ;
Oata_Perealnan = ARRAY(1 .. JUMLN1) Of ~ECORO Seles.al : = T~UE
Huruf : CHAA;
BYTE ; EIID;
X, y
GOTOXY (X, Yl; k• posiai barv
EUD ;
WRITE (Huruf); taoilkAn huruf
cousT DELA Y (80) ; lunda s..si.at
Data : Oata_Permainan
( (Huruf : ., ,
X: 7 ; y : z l. ( record u n tuk indeks arr& y pe rta~a
\nd eJ..s array 1-.edu..l
END;
DEL AY ( ~00 ); { ! :...n:j" !teaaat
(Hurvf : •z; X : e · Y : 5 ). I re co r d unt uk
UIITIL Sa leu; ;
X : ~ ; Y : 8) ); I recor~ untuk inde~l array ketiga
( Huruf : ,153; OOTOX Y ( 1, 2~);

WRI TE ('Pemenang adalah noeor Pe•enang) ;


~ROCfOURf G&MbarPosisiAwol; EHD ; ( akhir prosedur LombaKecapAt&n
~ VAR Inde ks : BYTE;
6EGHI BEGIN t• prograM ut ... •)
h•pus 1 ayar }
CLRSCR; GaMbArPosia1Awal;
FOR ! ndeks : : 1 TO J Ut;LAH 00 L0111bftKQC8P" t"n ;
WITH Dat a (I ndeka ) 00 REAOLH
BEGlH E!IO.
t~?~tkan kursor ke bar;a Y, ko l ~
GOTOX Y (1, Y);
WRITE (InO.ks); tulis OOMOr urut
t•mpatkan kursor ke bari• Y, kolON X Program 10-3.
GOT OX Y ( X , Y ) ;
tulia pAda poais i kuraor
WRITE (Huruf);
Mengenai instruksi seperti Delay, ReadKey, CotoXY akan dijclaskan paJa
END ; ( with )
te•patkan kursor k• b&r , ~ 24 . ko10ft 1 : Ba b XII
GOTOXY (1, 2~ );

HRITE ('Tekan ENTER.');


REPEAT UIITI l READ KEY : '13 ; '"'"abaca t001bo 1 EIITER
COTOXY (I ,2~);
te~patkan ke~b•l\ ke pos isi b&ri• 2•. ko1G3
hapua tult~ aemula
WRITE ( ' 'l;
EHD; { akhlr prosedur )

PROCEDURE LOMbaKecepatan;
COIIST POSISI_AKHIR = 80;
VAA
s., ... , BOOLEAII;
Indeks, P...nang, Poalsi_Kinl: BYTE;
IIEGIM
Seleul :: FALSE;
lN1DOIUZE; { lnlalall...,.sl peab•ngklt bllangan acak )

REPEAT •
FOR lndeka : : 1 TO JUMLAH 00
WITH Oata(Indeka) 00
3EGIM
REPEAT
bangkitkan b\langan acak
Poslsi _Kin l : = RAtl~ (8) ;
antara 0 •~oa1 ~gan 8-1

l75
174

,., ~:: ~J~ Z.fl?:..r-"n'".!l"~7r'!:l ,,..J_,. , ,T,.,.~a.' ·~- _..,_'"" ..... ~.-....... ,...~ ... ~- "'~,,_, ______ ,., t.r. ..
• .. . -. , .. .
""*~;-..,. .,.,..·~-: . .-.!:;'
Pcndeklarasian kedua variabel tersebut mempunyai makna:

• Variabd Kapital bisa berisi satu atau bebcnpa karakter hurufbesar,


atau bahkan tidak mempunyai demen sama sekali.
HIMPUNAN • Variabd Bilangan bisa berisi satu atau beberapa elemen yang bernilai
ancara 0 sampai dengan 9 acau bahkan mungkin tidak mempunyai
elemen sama sckali .

I
}-lirn puna n j ug:~ termasuk sehagai salah satu ti pe data terstruktur .
Xl.2 ELEMEN HIMPUNAN
}-lirnpunan ~erdiri dari sejumlah clemcn yan g bertipe sama dan harus

I
!'cnulis :Jn hi:11 p:..m.lll r;Jcn1p uny;1 i bentuk :
bertipe data o rdinal yang memil iki nilai o rd in J.! terietak anrar a 0 sampai
dengan 255. Dengan demik ian nilai scpc rti 256 Jt:lUpun -2 tidak bisa ldaf+..Br _elemenl
rnenjadi J.nggota himpunan. Berbcda den gan array, pada himpunan tidak

I
.Mkehal adanya istilah elemw pertama, kedua dan scbagainya. Disa m- d.- n~J n da_(tar_c/t'mm dapat beru pa konscanta , va riabel. fun gs i atau sua w
ping itu , kalau pada arra y ada kemungkinan elcmen dengan ni lai yang u n ~kapa n . Ji ka d~(l,Jr_ t'femm tcrdi ri lcbih dari satu elcmcn, ant arclcm cn
satna. pada himpunan tid.1k terdapat elemen yang bernila i sama. f' c·rlu d i p is;~hbn d cng :~n tan da koma : Ketentu an yang bin, sc tiap clcmcn
Pada masalah tertcntu , penggun aan ripe himpun an sangat membantu :~ .~rus bertipc sama. Contoh penul isan elemen dari himpunan:
dalam mempermudah pcny clcsaian pcm rograman . [ 1. 2, .3. -i. 5]
['A' , 'E' . '1' , '0', 'U ' j
XJ.1 PENDEFINISIAN/PENDEKLARASIAN TiPiE HIMPUNAN [ 'A ' . . 'Z' . 'a' .. '']
z
[D l , 02. D2+1]
Pendefinisian tipe data hitnpunan diawali den gan kata-tcrodang set dJr. j
[J
of. kemudian diikuti dcngan ripe clcmen .
PJ,l.l co ntoh pcrtJm ;l, I i. 2. 3, 4, 5J mcnyatak an himpunan tcrdiri dari 5
SET OF t ipe_elemen clcmc:n dcngan ni!Ji 1, 2, 3. 4 da n 5. Elemcn seperci. pad a contoh ini dapat
di tulis mcnja d1 [ 1..5} . Comoh kcdua menunjukkan b:J.hwa himpun an
Beberapa contoh pendc fimsia n tipe himpunan: ['A·. 'E', '!', '0 ', 'U'] tcrdiri dari 5 elcmen berupa hurufhidup (vobl).
' Contoh ketiga. himpunan bcrisi seluruh karakter yang cergolong sebagai
TYPE
Digit = 0.. 9; huruf. Contoh kecmpat, mclibackan variabel dan ungkapan. Oalam hal
Hart = !Senln, Selasa. Rabu. Kamls, ini , himpunan memiliki 3 elemcn , dengan nilai sesuai dengan isi 01 , 02
Jumat, Sabtu, Mlnggu); dan 02+ 1. Adapun [] menyacakan himpunan kosong.
HlmpunanDiglt = SET OF Digit:
HlmpunanHarl = SET OF Hart:
HlmpunanKarakter = SET OF CHAR: X1.3 OPERAS! DAN PEMBANDINGAN HIMPUNAN
HlmpunanHurufBesar= SET OF 'A' ..'Z' :
Salah satu kegiatan yang melibackan himpunan adalah memeriksa suatu
Tipe-tipe di atas selanjutnya dapat dipakai untuk menentukan tipe da~ elemcn menjadi anggoca himpunan acau cidak . Untuk keperluan seperti
variabel atau parameter ~ubprogram . Misal : ini , Pascal men yedia kan operator bernam a in . Bentuk penggunaan
operato r in:
VAR
Kapltal : HlmpunanHurufBesar: Elemen IN Hlmpunan
Bllangan: Hlmpunanlglt :

177

~ .,~
~.:.4'·

•! ' t ·~ .
.,

BEGIN { program utama }


, diinginkan untuk mengctahui isi variabel Perit~tah yang bertipc CLRSCR;
berisi 'H', 'h', 'A', 'a', 'S', 's' atau bukan. Ungkapan nahr yar.g REPEAT
an kalau menggunakan operator in: WRITEUI ('Pilihan: A) angka H) hurur S) seleui');
BacaTornbol (Perintah, ['A', 'a ' , 'H' , 'h', ' S' , 'a'));
periota h IN ['A' , ' a ' , 'H' , 'h' • 'S' , ' s ']
CASE Perintah OF
In~l'"•y un di
atas memberikan nilai b enar (true) jika Perintah berisi salah 'A', 'a' WRITEUI ('123456 .... ' );
dari huruf 'A', 'a', 'H ', 'h', 'S' atau 's' . Apabila tidak menggunab n 'H', ' 11' : ._IRITELII ( 'A BCDEF .... ' j
in, ungkapan nalar ya n g diperlukan berupa: END; { a~hir CASE )
UIIT !L Porint a h Ill ('S', "s' );
(Perintah='A') OR (Perintah=' a') O H (Perin tah ='H ') OR
END.
(Perintah='h') OR (Perintah='S ') OR (perintah= 's ")
bahwa dcngan mengg unakan operator in, penulisan ungkap~n Program 11-1 .

nalar menjadi lebih sedcrhana.


Contoh penggunaan operator in dalam program bisa dilihat p;~dJ

l
Untuk keperluan pembandingan yang melibatkan himpunan, Pascal
Program 11-1. Program ini sekaligus juga mernbcrikan con toh rncn!lenai mcnyediakan S ope rator hu bungan herupa in. )=, (=, = dan {).
parameter prosedur yang bcrtipe himpunan (yaitu para meter Himpw: ;n- Mengenai sifa r-sifatnya dJp at dilihat p :~da Tabd 11-1.
Perintah pad a prosedur Baca Tombol.
label 11-1. Operator hubungan dalam hlmpunan

PROGRAM Himpunan1;
<• --------------- --------------
(• Contoh penggunaan operator !II •)

<•
----- t)
*l
I Ungkapan
Hlmp1 = Himp2
Keterangan
Memem:sa kesamaan antara himpunan Hlmp1 dan Himp2. Hasll true
apabl!a Himp1 sam a Himo2. Dua himpunan dlkatakan sarna jlka jumlah
elemen sama aan masmg·maslng elemen sama.
Hlmp2 (i Hlmp2 Memeriksa ketidaksamaan antara 11lmpunan Hlmp1 dan Hlmp2. Hasll
bernilal true apabila Himp1 tldak sama· Oengan Hlmp2.
USES CRT;
Hlmp1 (= Hlmp2 Has:! bernllai true Jllta semua elemen oan Hlmp1 terdapat pada
TYPE Himp2.
SET OF CHAR;
HimpunanKarakter = Hlmp1 )v Hlmp2 Hasll bemllal true Jllta semua elemen oar! Hlmp2 terdapat pada
Hlmp1.
VAR
Perintah : CHAR; Elemen IN Hlmp Memeriltsa eiemen adalah anggota hlmPUnan Hlmp atau tldak. Hasll
true Jlka elemen adalah anggota dan Hlmp. ·
PROCEDURE BacaTombol (VAR Perintah: CHAR;
HimpunanPerintah : HimpunanKarakter); Beberapa contoh tentang pern bandingan hirnpwun:

Membaca tombol terus Ungkapan Hasil


hingga tombol yang ditekan adalah
salah satu karakter yang terdapat pada HimpunanPerintah [1,2,3] (= [1,2] False
[1,2] (= [1,2,3] True
[1,2] (= [3,4] False
BEGIN
[] (= [1,2,3] True
REPEAT
Perintah := READKEY; { baca tombo1 1 IN [1 .2,3] True
UNTIL Perintah IN HimpunanPerintah 5 IN [1 ,2 .3] False
END; { akhir prosadur BacaTombol } [1,2] = [1,2] True

179
178
.,

_/
-· - - -
Sc

[1,2] () [1,2,3] True ~l ~


Pemberian nilai himpunan dapat dilakukan sebagai berikut:
Tru~
(1,2,3] )= (11
Hlmp1 := ['A', 'E', '!', '0', 'U'I;
Hlmp2 := !'A' ..'Z'l;
Untuk keperluan operasi himpunan terdapat n~p operator himpunan
bcrupa +, - dan *, Sifat dari masing-masing operator dapat dilihat pada Pcmberian nilai di atas mempun yai makna:
Tabel 11-2. • Himp1 hcrisi seluruh huruf hidup (\·okal). Jadi memiliki 5 ekmcn.
• Himp 2 bcrisi scluruh huruf kapitaL
Tabel 11·2. operator 6perast· himput:an
Kalau lllisalnya dikchcndaki agar 1--JimpJ bcrisi sclun.h huru( rnat1
ungl<apan Keterangan (konsonan), h;d ini bisa dipcwlch mclalui penugasan:
-
HlmP1 • Hlmp2
Operas! lnterseksl himpunan. Untul< m-tmperoleh hlmpunan yang
terdlri dari elemen yang merupal<an a~ota h!mpunan Himp1 dan Himp3 := Himo2 - H!mp1 ;
sel<aligus juga merupakan anggota Hlmp2.
operas! penggabungan hlmpunan. Untuk memperoleh himpunan
HlmP1 1· HlmP2 Kcmungkin.m yang lain dalam pcnugas:m himpunan adalah mcnam-
yang terdirl dari gabungan elemen anogota H/mp1 dan Himp2.
operasi sellslh himpunan. Untuk mem~roleh hlmpunan yang terdirl bahhn ckmen baru ke dalam suatu variabcl himpunan . H.1l sc pcrri ini
Himp1 - H!mp2 dap.lt dipcroic h mcblui pcnugasan :
dari elemen anggota Himp1 yang bukan anggota himpunan Himp2

Bebcrapa contoh opcras i himpunan~ Hlmpunan : ~ Hlmpunan + le!emen_baruJ

Pcmben tukan himpunan scmacam ini niisalnya pada pcrsoalan untuk


Un gkapan Hasil rncmpcrolch scmua huruf kapit ;d yang rcrd apat pada suatu ka!imar.
[1,3,5] Mu!a-mula himpunan di-sct bcnqJ:l hi mp un;;r. kosong. Kcmudian sctiJp
[1 .~.3 .4,5]~* [1,3,5,6,7]
[) braktcr dJia m kaiim:H dipcrik sa . Jika br.tkter tcrscbut bcrupa hurut·
(i,2.3,4,5] * [6.7 ,8, 9,10]
bcsa r dan kar~ktcr tcrscbut tid:~k rcrdapat pada himpuna n. rn.lka brakrer
1
[)
[1,2 ,3] * [)
(1.2,3, 4,5] + [6,7) [1,2,3,4,5,6,7)
[1,2,3,4)
j tcrscbu t dimasukbn kc dalalll h1mpunan. Ha l ini bisa dilihat pada
• prosedur BetHHI.:J-iimpu71.111 dalam Program 11-2. Kalan mi ~:1lnya Kalimat
[1,2,4] + [1,2,3]
(3,4,5] t bcrisi 'saya suka TURBO PASC AL', maka Hin~pKar,Jf.aer akan --bcrisi :
[1,2,3,4,5] - [1,2}
[1,2,3,4,5] - [4,5,6, 7] (1,2,3] [ 'A' 'B' 'C' 'L' '0' 'P' 'R' 'S' 'T' 'U')
[4,5,6,7] - [1,2,3,4,5] - [4,6,7] ' ' ' 1 ' ' ' ' ,

PROGRAI<l Himpunan2;
Xl.4 PEMBENTUKAN HIMPUNAN USES CRT;
TYPE
Pemberian konstanta himpunan terhadap v .1riabel bertipe himpunar. HimpunanKarakter = SET @F CHAR;
mcmpunyai bentuk:
VAR
varlabel : = !daftar _elemenl Kalimat : STRING ;
HimpKarakt er : HimpunanKarakter;
Jika m1salnya dideklarasikan:

PROCEDURE BontukHimpunan (VAR Kalimat : STRIUG;


VAR
Hlmp1 , Hlmp2, Hlmp3 : SET OF CHAR; VAR HimpKarakter : HimpunanKarakter);

' .
1Ril 181
.-

END;
._. mbentuk himpunan huruf kap;-tal yang ada p&da KALIHAT E~
8
dan dit~patkan pada HIMPKARAKTER } END; { akhir prosedur CotakHimpunan

VAR BEGIN { program utama }


BYTE; I. ~c
Indeks CLRSCR;
Karakter: CHAR; WRITELN ( 'Masukkan sebuah kalimat : ·);
1tc :sC1 READLN (Kalimat);
BEGIN (I~ J· BentukH impunan (Kaltmat, H impK a r~k t er) ;
HimpKarakter := []; "'"''"'~~er< .
CetakHimpunan (HimpKara Kter ) ;
FOR Indeks : =1 TO LENGTH(Ka1imat) DO
READUI
BE Gill Ell D.
Karakter := Kalimat[Indeks];
IF Karakter IN ['A' .. 'Z'] THEil
Contoh eksekus i :
If HOT (Karaokter IH HimpKarakter) THE il
HimpKara kter : = HimpKarakter + [Karakter)
Masuk kan sebuah kalima t :
Etm: · saya suka, l~RSO PASCAL
{ akhir prosedur BentukHimpunan }
END; Huruf kapttal yang m ~ mbentuk kali mat te rseb ut:
ABCLOPRSTU
PROCEDURE CetakHimpunan (HimpKarakter : Hi mpunanKarakter) ;

Nasukkan sebuah kalimat :


Untuk merlcetak .s e 1uruh huruf kapi tal
saya suka turbo pascal
yang terdapat pada HINP KARAKTER )
Kalimat tersebut ti dak menganaung huruf kap i tal

VAR Program 11-1.


Karakter CHAR;

BEGIN XI.S MENAMPILKAN ELEMEN HIMPUNAN


IF HimpKarakter = [] THEil
WRITELN ('Ka1imat tersebut tidak mengandung huruf kapital') Elemen-elemen yang merupakan anggota dari su atu himpunan tidak
dapat ditampilkan dengan menggunakan WRITE atau WRITELN secara
ELSE
Llngsung. Misalnya saja HimpKarak ter berisi
BEGltl
WRITEUI ( 'Huruf kapi ta 1 yang membentuk ka 1 imat tersebut : '); [ 'A' 'B' 'C' 'L' '0' 'P'
' , , ' ' t
'R' 'S ' 'T '
' ' '
'U']
Karakter := ' A' ;
WHILE HimpKarakter <> [] DO lsi HimpKarakter tidak dapat ditampilkan dengan pernyataan seperti

BEGIN
IF Ka'rakter· r'N · HimpKarakter THEil WRITELN <HimpKarakterl;

BEGIN klu bagaimana cara n ya mcn:1mpilkan isi suatu himpunan? Untuk


WRITE (Karakter);
- [ Karakter) ttperluan mi harus dilakukan sua tu pcn,mga n:Jn tcrscndiri . Sebagai
HimpKarakter := HimpKarak~er
tontoh, misalnya diinginkan untuk menampilkan isi himpunan HimpKa-
END; rllltJer. Salah satu cara yaitu mula-mula pe rlu mengctahui kemungkinan
Karakter:= SUCC(Karakter)

183
182
'"
.,

------
Tipe~u•ik : (JAZZ, JAZZ_ROCK, ROCK, B\.. \ l E '7 )\;\} i ~ G,
· pertarna dari elemen . hi~pUl'lan. Pada Program f1-2, _varia~el FUSIOII, SLOW, COUNTRY,
1
KLAS~ ~' . \)(IA.i (.- ()Ui
g;mpKarakter hanya berupa karakter yang_tergolong huruf kap1tal saJa. KASIOAH , KEROIICOIIG) ;
tentunYa kemungkinan nilai yang pertama adalah huruf'A'. Nilai ini
~:1....-lkan ke variabel Karakter. Langkah selanjutnya, selama HimpKarak- Hi111punan~uslk = SET OF Tlpe~tusl k;

berupa himpunan kosong, proses yang dilakukan berupa: LarlkHua ik = ARRAY[1 •• 3) Of Himpun~~usl k;
StringH~ a :: STRING[20];

1. Jika Karakter ad:1lah anggota HimpKarakter, maka LarikHaNa = ARRAY[1. .2] OF Stringlla01a ;

• Cetak Karakter CONST


• Keluarkan Karakter dari HimpKarakrcr
2. P~oJeh karakter selanjutnya dan simpan kembali ke variabel J&n isHusik · APfl AY[Tipetlusik] f'F STPIIIG[ 15)
( 'JAZZ' , 'JAZZ ROCK ' , 'ROCK' , ' BLUES' ,
Karakter. 'SniiiG', 'FUSION', 'SLOt/' , 'COUiiiR v· ,
Untuk mcmpero\ch karakter selanjutnya bisa menggunakan fungsi 'KLASIK', 'OAIIGOUT., 'KIISIOAH'. ' KEROUCOIIG ·) ;
VAR
sUCC. Pcrlu diketahui: ' OaftarJenisMusik LarikMusik;
OaftarNa01a Lar i kll ama;
SUCC(' A'l aoalah 'B'
SUCC('B'l adalah 'C' PP.OCEOURE Pemasu~anOata (VAR Oatr.arJe n isl! u ~ik: La ri kl~u,., > ·
VAR Oaftarllama : Lar i kllal'!a);
dan sebagamya (Sesuai urutan dJlam ta bel .1\ SCII).
Penuan gannya dabm pernyJtaan: { Untuk ~ernasuk k an data jo nis ~ u si k kesukaan dar, d ua or· kr t q )

Karakter : = ·A' : CONST


' WHILE HimpKarakte r () [} DO SPASI = 132 ;
BEGIN VAll
IF Karakter IN HimpKarattter THEN
Husik T; pef.fusi k;
BEGIN
Panjang , BYTE;
WRITE (Karakterl ;
HlmpKarakter : = HimpKaral<ter - IKaral<terl Kode 1.. 12:

END;
Karakter:= SUCC(Karakterl BEGIN

END; { Henamp i lkan daftar ~kode Mengenai jenis musik )


CLRSCR ;
Contoh yang lain bisa dilihat pada Program 11-3. Pada program ini,
FOR Huslk :,_J AZZ TO KEROIICONG DO I:..:..("'"A... ..
himpunan bertipe enumerasi . Perhatikan cara menampilkan BEGlti
dalam . himpunan (prosedur CetakHimpunanMusik). Kode : : ORO(Husik)+1;
Panjang := 14- LEHGTH(JenisMusik[HusikJ );

Progr . . Himpunan3; WRITE('[", Kode:2, 'J •, Jeniiii·IUIIik[J.Iusik), SPASI : Panjan!OI

c• ---------------------------------- •> IF (Kode HOD 3) : 0 THEil


c• contoh penggunaan operasi himp~ •> WRITELH
(• terhadap data enunteraai • ) EIIO;
•>
.,
(• obyek : jenls MU9ik
(• ---------------------------------- ( Pemasuk an data )

USES CRT; WRITEUi ;

TYPE

in 1 )
184 ~,;)~
!:

kode jenl• IOUSik'); EHD; •


WRITELII ( ••lasukk&n angka 0 untuk mengakhl ri pe11aaukan
IF DataJeniet.lueik o (] THEil
WRITELII ( 'Tekan ENTER eetiap -~~~asukkan kode');
.Muslk := SUCC(Musik)
WRITELH;
END ;
FOR 1:=1 TO 2 DO
WRITELN;
BEGIN
WRITELH; W.RITE ( 'Ua.caa orang ke-', I, ' : '); WRITELN;

READln (Dafta rHam a(I)); WRITELH; END; ( akhir CetakHiapunanHu•ik


~IRITELH ( 'Ke>Oe janis .. u sl k y ang d i sui< a I : ·);
BEGitl ( prog r a11 utaaa }
READUI ( Koc:lf; ) :
DaftarJ en is.lh.. s' ~ [ l] := [); Pa10asukanData (0 aftarJa ni sHu9ik, Daftarllama};

WrliLE Kode Jtl ( 1 . . 12] DO


BEGIN
Musik : : T ;pe~usik(Kode-1) ;
• WRITEUI ( ' Janis 111uslk yang dlaukii i oleh
CetakHiapunanHuslk (OaftarJenlsl~uslk[l));
•• Oaftarlla ma (1]. • ') :

IF tiOT (~olk IN DaftarJe nisl·lusik(I)) THEil


Daftar Je,, ~u!!; k (I) : = Oaft;o.rJeni sl·lusi k (I) + [lotus I k J; WRITELN ('Janis rnus ik yang cli<Jukai ol eh · , Oaftarl/:oma [2 J , · · ·);
CetakHiapunanMusik (0aftar J enlsl.\uslk(2]) ;
READ LH(kove l
EIIO ;
WRITELII ( 'Janis Olugik yang cli!lukal oleh ', DaftarNama [ •],
~IRITEUI
• d&n ·, 0&ftarN•11a[2], • ' ):
EIIO
DaftarJanl~ualk[3) :: DaftarJenlsl~usik[l) • DaftarJen 'sl-lu si~Pl ;
EtlD ; { akhlr Pemas•J>;or.Oata
CetakHirnpunanHuaik (OaftarJsnlsMuslk{3) J;

PROCEDURE CetakHi ~~ .. r a~u!!ik (DataJenisl!usik : HlmpunanMu!!lk);


w .~ I TELN (' Jenis RIU9ik yang Cisukai oleh ·• Oaftarllama(1J ,
' atau ', Oaftarllama[2), • ');
untuk men&JOPi lka"• =•ta j enis mus ik yang ada pada
Oa ft arJeni ~ue ik [3 ) := D afta rJenist~usik( I] • OafLuJen l S11usH. {2):
paral)'eter DATAJE '•: :;-.LlSIK
c.. takHiiiOUnanMusik (0aftarJenisl~usik[3) I:

COtiST SPA3I = •32 ;


~-<RITEUI ( 'Jenis musik yang clisukai oleh ',' Oaftarllarna[ 1 J,
VAR
• tetapi bukan kesukaan ·, Daftarllama ( 2], ' ·);
Musik Ti p.,.h..Jsil>';
0&ftarJeni~usik[3) := OaftarJeni&Musik[l) - OaftarJeni~uslk{2] ;
Panjang , J : BYTE ,
CetakHiapunanHusik(DaftarJanl ~~uslk[ 3]) ;
READLN
END.
IF DataJenisl-lusilo. = [ J THEil
WRITE ('Taka~ ,. J;
Contoh eksekusi :
J := 1;
Musik :: JAZZ;
1] JAZZ 2] J AZ Z ROCK 3 J ROCK
WHILE OataJenisl~s i • <> () 00
4] BLUES 5] SWIIIG e) fUSIOII
BEGIN
7] SLOW 8) COUIITRY 9] KL ASIK
IF Musik lH ~·u.Jenl ~uslk THEil
( 1 0) OAIIGOUT [11) KASIOA/1 (12] KE ROIICOfiG
BEGIN
Panjang : : H - LEIIGTH{Janls~lusik(I·IUsik));
Masukkan angka 0 untuk mengakh l ri pema s ukan kode janos n u s i k
WRITE (J~ ! ~JSik[Huslk), SPASl : Pa njang);
Tekan EIITER setlao ae11a suk kan kode
DataJen l~~ i · : = DataJeni~usik - [Huslk ] ;
IF J HOD ~ =0 THEN WRITELH ;
Nama orang ke-1 : IRWAII
IHC (J) ;

187

,,
-
HlmOperator : SET OF CHAR
Kode jenia .uaik yang diaukai: "' ('+', ·-· ..... '/'1;
1
2 Inisialisasi seperti di atas identik dengan penulisan:
•5 VAR
e HlmpHurufKapltal,
0 HlmpHuruf.
Kaaa ornng ke-1: OIOI HlmpOperator : SET OF CHAR ;
Kode janis .uaik yang dlsukai:
BEGIN {program utama}
2
j
HlmpHurufKapltal : ~ I'A'..'Z'I;
HimpHuruf :~ I'A'..'Z','a'..' Z'I;
8
HlmOperator := !'+ ', ·- ·. ·•·. '/'i;
8
0
END.
Janie ausik yang diauka i ol8h IRWAH
JAZZ ROCK BLUES

JAZZ
SWIH<l FUSION

Jani s •uaik yang diaukai olen 0101


JAZZ ROCK ROCK FIJSIOH
COUNTRY

Janis .usik yang diaukai olen IRWAH d.an OIDI


JA;:Z ROCK FUSIOH
i!
Jcnia .ueik yang diaukai olen IRWAH atau 0101
JAZZ JAZZ ROCK BLUES
I
SWING FUSIOtl COUNTRY

Janis IIVtlik yang diaukal olen !RWAH tetapi bukan kesukaar. OI DI


JAZZ BLUES !WINO

Program 11-J.

Xl.6 INISIALISASI HIMPUNAN


Memberikan nilai awal terhadap himpunan dapar dilakukan dalllll
deklarasi CONST. Contoh mengenai hal ini:

CONST
HlmpHurufKapltal : SET OF CHAR
~ !"A' ..'Z'l ;
HlmpHuruf : SET OF CHAR
!"A' ..'Z',J ',.'z'l ;

189
188
..
.' ~ ·~,.

~·~ .
~-- ~

....
"

XII FASILITAS DALAM UNIT CRT


"-tl' L~YAR

Jendela

180,25)
Y2

X2
Ga m ba r 11-1. Prn n<'-Ar' ,._ ,.t ! mdt!J
Cnit C RT bcrisi fasi!iDs yJng bcrhubunpn dcng an Llyar. papan-ketik
d :m suara. scpcrti:
koordinar kiri-.1 : .1' !· ,1.;n ll"ind,\Jax bensi data koordinat k .111.1 ;;-
bawah jcndc L1. Jtl.. • ,. ...-l.. 1·an~ .1kr if nJcmpunni koordinat (X 1, '{J.

I
• Mcngarur dcsain byar
• Mcngakrifkan jendcla hyar X2, Y2) , mak.J :
• Mengatur frekucnsi bunyi spea ker ~
• M embKa karaktcr dari p.1pan-kerik ranpa mcnampilkan kar2k ter ke L_Y1 ·1_j___Y~: !Y2~..,.TXMJ
----~---
la var f fl"i·td.\1/TJ II ,.,J.If.IX
dan masih banyak fasilita s yang lai n .
Byte ordc rcnrbh II •' 11' ' 1 bc ri, , ab>i s >-:J -1 dan byte ordc ti nggmy,1
bcrisi ord inat Yl - 1 j l , '' •' <de rcn dah l!"ind.\Jnx bcrisi absis X2-1 d;1n
Xll.1 MENGATUR JENDELA TEKS byte o rdc ring~ 1 p 1 , !•. . , .. , urJin.lt Y::?-1.
,Salah satu fa silitas yang disedi:~kan dalam unit C RT bcrupa prosedur Contoh pcng~u", " ' I I ,doll" d:tp:rr dilibr pad;~ P ro gram 12-5 .
·u ntuk rncnga t ur jcndcla tcks . Prosedur unmk b.:pcrluan m1 vairu
proscdur Window. B cntu k dcklarasi p roscdur Wi•z.l,,rl-': Xll.2 MENGATUR WI\~NA TEi<S

Window !X1, Y1 , X2, Y2: BYTEJ ; Peng:Hu ran \N3fll.o J r~- •• ,ungg:uhnya cipcrolc_h dcngan memanipubsi
arribu t da ri ek- 1111 " r. " · (' .1iru braktcr). Scriap karaktcr pada bvJr
Kegun aannya untuk mcndefinisikan jendda dalam laya r. Caranya penampil sebcn:Jrlll, oi l· 1 " "111 p3ti 2 byte me mori , dcngan byte pcrta~1 .1
dengan rnenyebutkan koo rdin at p ojok kiri-atas (XI, Y1) dan koordinat bcrisi nila i ASCI! ,1. 11 l ·1" kedua bcri~i Jtrib utnya. Inform asi atribur
pojok kanan-bawah (X2, Y2). karakter adalah sc i• .•H ·" j.,·r•kut:
Jika suaru jendela telah chdefinisikan, seluruh koordinat layar bersif~t
relatif terhadap jendela (kecuali koordinat untuk menentukan j endd~ 7 6 5 11 2 0
baru). Dengan sendirinya , pojok kanan-atas jendela memiliki koordinat
(1,1). Perlu diketahui, jendela terbesar memiliki koordinat pojok kiri- [ k 1 b 1 iiJ {J 1 rt [ d I d 1 d 1
atas (1,1) dan pojok kanan-bawah (80,25) untuk mode 80 kolom . Padl ~- '' ~
L_ warna Jatar de pan
mode 40 kolom, pojok kanan-bawah jendcla terbesar berkoordin~l
_ (40,25).
Dalam uni t CRT terdapat dua b uah variabel global yang berhubung~ L_
L JN;1riM
,,,l.lt l!nfJkJng
karakter

karakter
den gan pengaturan jendela, berupa WindMin d.m WindMax , yang keadaan kamktnr
keduanya be rtipc word . Kcdua variabcl ini mcriyimpan data koordin.l1 berxedlp at,llJ "" ·'~
jendela, setiap kali suatu jenocla diddinisikan. WindMin berisi d~u Gambar tl- Z. AtribNt " '" ''~ '" .l.sl~m l~r~r

190 191
J3it o-3 berisi informasi warna latar depan karakter. Bit 4-6 menyatakan Disamping pengaturan mclalui variabel TextAttr, ada cara lain yang
warna latar belakang karakter. Bit 7 menyatakan karakter berkedip atau relatif lebih mudah untuk melakukan pengaturan warna tampilan
cidak - Karakter ditampilkan dalam keadaan berkedip, jika bit 7 bernilai 1, karakterlteks, berupa pernyataan prosedur TextAttr, TextColor, High Vi-
dan tidak berkedip untuk bit 7 bernilai 0. Bit 3 sendiri berisi informasi deo , Low Video dan Norm Video . ·
rentang intcnsitas warna (terang atau tidak) dari karakter.
Pcngaturan warna teks dapat dilakukan dengan membcrikan nilai Prosedur TextBackGround
cerhadap variabel global yang dideklarasikan dalam unit CRT bernama Bentuk prosedur ini:
T exrAttr (bertipc byte). Tabel 12-1. dapat digunakan sebagai patokan.
Contoh program: TextBackCround !Warna: bYtel;

pprx;RAM Warna1 ;
i • ------
~engatur warna teks
.)

*)
Dipakai unruk mcngatur warna Jatar bcbbng karakte r/tcks y:tng hcndJ l
ditarnp.iLb n kc · bpr. A rgumcn warru d.1pat d1s pcsiiika ~ I dcn g an n il.t1

.
(.
ata u konstama ~c pcrti yang tcrcan tum pa da Tabcl 12-2.
1• melalui variabe l TEXT ATTR •)
(.
- )
Tabel 12·2. Warna latar depan dan wamJ t<Jur bdakJnx
USES CRT; ,
BEGIH
CLRSCR ;
TEXTA TTR := S1E ; ( Pola bi t : 0001 11 10 ) I Konst>nq ";" Hitam
Jenis warna l
l
Biru I
WRITELN ('Teks kun ing den gan Jatar bela kang bir u ');

I I ; I
TEXTATTR : = 7 ; { warn;o nor11al }
REA DLII
Cyan
Red
I 3
4
Hi]au
i Sian
Merah
I

EIIO. Magenta 1 s Magenta


Program 1Z-1. Brown 6 Coklat
UghtCray 7 Abu·abu cerah
Tabel 12-1. Data wama latar depan oan lata r belakang teks _ _J

warn a Dengan mcmanggil proscdur ini , wJrna LH .Ir bcl.,bng dcng;;.n scndin-
warn a Bit
B!t latar belakang
latar C:epan nva akan dicatat da bm vari2bel Tcxr.4 trr.
6 5 4 karal<ter
3 2 1 0 karal<ter Contoh program :
0 0 0 Hltam
0 a 0 c Hi tam
0 1 Blru PROGRAM W~rna2 ;
0 1 Biru 0
0 0 Hl)au
0 1 0 HI] au 0 1 0 <• 'l
0 0 1 1 Sian (• Contoh penggunaan TEXTBACKGROUIID *)
0 0 1 1 Sian
1 0 0 Merah c• --- ---- •)
0 1 0 0 Merah
1 0 1 Magenta USES CRT ;
0 1 0 1 Magenta
1 1 0 coklat
0 1 1 0 COI<Iat BEGIN
1 1 1 Abu-abu
0 1 1 1 Abu-abu CLRSCR ;
1 0 0 0 Abu-abu muda TEXTBAC KG RCUtiO { 1) ;
1 0 0 1 Blru muda WRITELN (" Oitampilk;on dengan warna latar bela kang : BIRU ');
1 0 1 0 Hl]au muda TEXTBACKGROUtiO ( 0 ) ;
1 0 1 1 Stan muda
WRITEUI ( ' Sekarang di tampi 1kan tiOR~IAL ' );
1 1 0 0 Merah muda
REAOLN
1 1 0 1 Magenta muda
EIIO .
0 Kunlng
1
1
1
1
1
1 1 Putlh
____.J I>Togram 1Z-Z.

19J
192

_,_'",.,,•.; .. ... .. .. -.. -. · ~"·'"; <:~ .•.. r ~ ... w.-.: . J~ s_;::; .:Z_,_,.,· ~ I ..}t.......¥._¥4, l "' .... :I
WRITELH ('Teke dengan VIDEO TERBALIK');
prosedur Texteolor
TEXTCOLOR ( 7) ;
Bentuk prosedur ini:
TEXTBACKGROUIIO (0);

rextCclor <Wama: BYTE>: WRITEUI ( 'Teks IIORI-IAL') :


REAOLtl
Dipakai untuk mengatur wama lnar dcpan karakter/teks yang hendak Ell D.
ditampilkan ke layar. Argumen warna dapat dibcri nilai antara 0 sampai
Program 12-J.
dengan 15. Untuk wama 0 sampai dengan 7 dapat dilihat pada Tabel12-
2. Scdangkan nilai 8 sampai dengan 15 chpat dilihat pada Tabcl 12-3. Prosedur LowVIdeo
Proscdur LJw Video tidak memiliki :t rgum cn. Digunabn untuk mcng-
Tabel 12·3. wama latar depan twama lan!Utanl atur tampilan teks dalam kcad~ar1 inrt-nsit a;. rcndah (w arna tu a). Proscdur
· - - -1
ini mcnyebabkan bit 3 (b;-t pcnprur inrcnsiras warna) dai:Hn atribut
Konstanta i Nilal 1 Jenls warna i
ka rakter dihapus (mcnjadi 0). W:~rn.1 LHar dcpan antara 8 sarnpai de ngan
oa~ I A~u-abu J
UghtBiue
UghtGreM I1
8 \
9 \
10
B1ru cerah
tua

Hl]au cerah .
I 1j akan diubah menjadi antJra 0 sampai dcngan 7. Mi s:~ ln ya jika warm
la tar depan yang aktifadalah biru cc rah (w.<rna 9) , rnaka bcrikutn \·.lj ika
UghtCyan 11 · Sian cerah · ada pcrnyataan WRITE {a tau WRITELN ), tulisan akan ditampi lkan
Ught:<ed I 12 Merah cerah dengan warna latar dcpan biru tu.1 (warn.1 1) .
UghtMagenta 1 13 Magenta cerah i

I Ye. llo.w I
~h it_e__ _ j_
14
15
Kunlng
. Putih
I1 Prosedur HlghVIdeo
Prosedur High Video tidak mcmiliki argumcn Digunabn umu k mcng-
atur tampilan teks dalam keada an inre ns ita s rin ggi (warn:1 ccra h).
Tcks ymg berkedip dapat dipcrokh dcngan menarnbahkan nilai 128
Prosedur ini mcnyebabkan bit 3 (bi t pcngatur intemius warn .1) d~la rn
(atau konstanta Blink) tcrhadap \.Varna latar dcpan teks \'ang diinginkan.
" Pcmbcrian warna !Jtar dcpan braktcr :J.bn m engubah nilai dalam atribut karaktcr di-set mcnjadi 1. Warn a l.1t ar depar. antJrJ f; -;am p.li
dengan 7 akan diubah menjadi antara 8 sJrnt•.li dengan jj_ Mi ~.<lny.1jib
variabel TextArtr.
_ warna latar depan yang aktifada!Jh biru n.:a (\\'arna 1). maka bcr ik utnya
jika ada· pcrnyataan WRITE {a tau WRiTEL~). tulis:~n Jkan dir :unpilkan
Contoh program: 1

PROGRA:-.4 ~larna3; dengan warna latar depan biru ccrah (warna 9) .

.
(* -------------------- ---------- -------------- *l
(* Contoh penggunaan TEXTC OLO R & TEXTBACKGROUilD *l Prosedur NormVIdeo
----------------------------- ) Prosedur ini tidak mempunyai argumcn. Diguna,kan untuk mcngcmbali-
<• kan atribut teks sesuai dengan atribut ketika program mulai dijahnkan .
USES CRT;
Contoh:
BEG HI
CLRSCR;
PROGRAH Warna4;
TEXTCOLOR ( 14) ;
TEXTBACKGROUIID (1) ; <• ----------------------------- ----------- ------- ---- •)
WRITELII ( 'Teks KUIIIIIG dengan latar belakan~ BIRU'); (* Contoh penggunaan LOI~VIOEO , HIGHVIOEO dan tiORtWIDEO •)

TEXTCOLOR ( 1 HBLIIIK); <• ---------------------------------- ---- --- ------- --- •>


USES CRT;
TEXTBACKGROUtlD ( 4) ;
BEGIN
WRITELII (' Teks PUTIH dengan latar belakang MERAH');
CLRSCR ;
TEXTCOLOR (0);
TEXTBACKGROUIID (7); WRITELII ('T eks awal, saat program mula! dijalankan');

195

. .,
akan mencmpatkan tulisan 'Turbo Pascal' pada baris 2 mulai kolom 25
TEXTCOLOR ( 9) : dari jendela yang sedang aktif.
WRITEL~ ('leks BIRU MUOA');

LOWVIDEO: Xll.4 MEMPEROLEH POSISI ICURSOR


wRITEUI ( 'T eks .dengan IUTEtlSITAS REIIDAH');
Posisi kursor yang sedang berada di suatu tern pat dapat diketahui dengan
HIGHVIDEO ;
wRITELtl ('Teks dengan IUTEHSITAS TINGGI'); menggunakan fungsi vJ.'hereX dan H1tereY. Kedua fungsi tersebut tidak
mempunyai argumen. Hasil fungsi bertipe byte.
NORMVIDEO ;
WRITELII ('Tulisan ini dengan atribut seperti'): Where X Untuk memperoleh pnsisi kolom tempat kursor scdang
WRITELII ( 'saat awal pr og ram dijalanka n'): berada .
REAOL!J WhereY. U ntu k mem pcro lch pu ~isi ba ris tcm par kt1 rsor sedang
EI IO.
bera da. -

Progra m 1Z-4. Posisi y:mg dihasilkan oleh HlhercX maupun H1terd' bcrsiLH rc!Jrif
te rhada p jcndela yang sedang aktif. Posisi absolut terhadap la yar bis a
)(11.3 MENEMPATKAN KURSOR KE SUATU LOKASI JENDELA LAYAR
dih itung bcrdasarkan acua n nilai yang tcrekam pada variabcl WindMitJ.
Kursor dapat ditcrnpatkan ke scbarang posisi pada jcndcla layar yang ~1isal:
sedang aktif d er.gan mcnggunabn proscdur GoroXY. Bcntuk prosedur
X : ~ WHEREX; { Menylmpan poslsi kolom dar! kursor )
GotoXY: f v := WHEREY: { Menyimpan poslsl barls darl kursor }

I
GotoXY lX. Y: BYTEl:
Xll.5 MENGHAPUS LAYAR
den gan X m cnyatakan absis X (kolom ) dan Y mcnv at akan o rdinat Y
Pc rintah yang digunakan untuk mcnghapu s bya r adalah proscdur C lr::iu.
(baris).
Pcnghapusan layar dapat diatur supaya misalnya la ya r bc rwarna abu -.Jb u

JENDE~
muda. Sifat dari proscdur ini. seusai pcnghapusan layar. kursor

y
[Ill j_
t__
I
ditcrnpatkan pada koordinat {1,1) dan pcnghapusan ber!Jku untuk
jcndela yang sedang aktif.
Concoh:

kursor
WINDOW !10,8,50,161; .
Garnbar 1Z-J. Pmtmpatan l<unor dtttgatt GotoXY
TEXTBACKGROUNO 17l;
CLRSCR;
Untuk menempatkan kursor ke pojok-kiri at as jendela layar, pemyata•r.
~kan menyebabkan mulai posisi kolom 8 baris 10 sampai dengan kolom
yang diperlukan:
50 baris 16, dihapus dengan warna 7 (abu-abu muda) . Bagian layar
l:~innya (di luar jendela ) tidak dipengaruhi oleh prosedur ClrScr.
GotoXY t1.1l;
Pcnempatan kursor biasanya ...Oiikuti dengan pernyataan WRITE (lta!i
X11.6 MENGHILANGKAN BARIS
WRITELN ), yang akan menyebabkan tulisan ditempatkan pada posili
kursor. Contoh: Perintah yang dapat digunakan untuk menghibngkan baris ya ng scdang
.!Hcmpati kursor yaitu De/Line. Pada saat mcnghilangkan baris, scluru h
GotoXY <25.21 : WRITE rrurbo Pascal');
197
196
-
teks yang ada di bawahnya akan dige~er ke atas 1 b:1ris. Proscdur ini
Data ARRAY [0 •• 7,0 •. 7] Of CHAR
= ((J218,J191,J192,1217,J179,1179,J19~,1195},
berlaku relatif terhadap jendcb yang sedang aktif. C ontoh penggun aan
(1213,J184,1212,J190,1179,1179,1205,J205),
De/Line dapat dilihat pada Program 12-5 .
(1214 , J183 ,J211 ,J189,118fl ,1186 ,119~,1196)'
(1201,1187,1200,11BB,I186,J18fl,J205,1205},
Xll.7 MENYISIPKAN BARIS KOSONCi (11220,J220,J223,1223,J221,J222,J220,J223),
(1176,117e,,176 , 117~,,176,1178,1176,1176),
AntJra dua buah bans tcks pada la ya r dapat disisipi sebuah b aris kosonc.
Caranya y aitu dengan meng gunakan prosedur ln sLine. Prosedur ini jik2 ( 11177. J177 '11177 '., 77 ' 11177 '1177 ,11177 '., 77) '
dipan ggil akan men yebabkan pada pos isi ku rso r disis ipb n sc~ u ah ha~is
baru (koson g). dan mcn ggeser tcks pada posisi kursor semul a kc bawa~ VAR I : BYTE;
(~1 7 8 , 1l 1 78 , •17~ •• 178,1178,J178,1l178,1l 17S )};
I-
sa(Ll ba ri s. Schagai ak ib atnya tck s yar.g rc rk tak di baris akhir dJ r i jcn d~; J
I

BE Gill Prose du r bing ka i


yan g scd ang akt if akan hil an g d ar i b n r. Contoh pcng gun :lJn fii ,L:>.,
GOT OXY (X 1, Y1) ; WRITE (Data[Pilihan,O));
d:~ pa t d ilih at pad a Prog r:~m 12-5.
FO R I : = X1 • 1 TO X2 - 1 DO
WRIT E (Da ta[P i l i han, 6 ) );
PROGRAI~ AnimasiJendela :
------- - - - - ----- - - - - - ~- - -- - -- - - - - ------- - •J GOTOXY ( X2,Y 1 ); \"/RITE tDa ta[Pi l ihan,1]);
(*
(* Contoh pen ggunaan 1-/I tlO Ov/ , GOTO X'l , !t iSLIIiE ~ DELLII JE • ) FOR I : = Y1+ 1 TO Y2-1 DO

- --- - --- ----- - - - ---- - - ~- - - -- -- - - - - -- - - - - - -- t)


BEG!tl
(.
GO TO XY ( X1,I) ; ~/RITE (Data[Pil~han , 4]) ;
USES CRT ;
GOTOXY ( X2,I }; WRITE (Data[Pilihan,5]}
~
EllO ;
COIIST
{ Data ko ordinat je n del a 1 GOTOXY (X 1 ,Y 2) ; ~IR ITE (Data [ Pilihan , 2]) ;
X11 = 5; X21 = 35 ; FOR I := X1+1 TO X2- 1 DO
WRI T:: (D ata[ P i 1 i han , 7 )) ;
{ Data koordinat jend e la 2 ) GOTOXV iX2, Y2 ); WRIT£ (Data(Pilihan,3])
X12 = 45 ; X22 = 75 ; EIID ; ( a khir prosedur blngkai }

Y1 = 6; <* baris awal dari j endela * ) PROCEDURE TulisTurboPascal(Pilihan9ingkai : BYTE);


Y2 = 20; (* baris akh i r dari j endela •> VAR I : BYTE;
BEGIN
VAR I, JumlahGeser : BYTE; B i ngka i ( 5, 2 , 2 5, 12 , Pi 1; hanB i ngka i } ;
fOR I : = 1 TO 9 DO
PROCEDURE Bingkai (Xl ,Y1 ,X2,Y2, Pilihan : BYTE); BEGitl
<•---~------------------------- - --------------------•> GOTOXY (9,2+I} ;
(* Prosedur ini dipakai untuk membuat suatu ~ingkai •l WRITE {'TURBO PASCAL' )
f) END
Posis i pojok kir i atas bingkai
<• Xl, Y1
(* X2, Y2 : Posisi pojok kanan bawah bingkai *) EUD; ( TulisTurboPascal }
(* Pi1ihan : 0 .. 7 -- j anis bing1{a i •>
< • --- - -- -- - - ------ - --- - -- ----- - - - -- - - - -- --~ - - -- - -- --•) PROCEDU RE I n i s i alisasiJ en de l a ;
BEGIN
COUST
{ Je nde la 1 }
I Data blngk a i }

199
198
.
srNOf<Al (X11, V1, _X21, V2,3) ; END;
Wit«XM (X11+1, V1+1, )(21-1, Y2-1); tlltiOOW (1,1,80,25); { jendela nor111al}
TEXTATTR :.= $07; { warna norll& 1 } READLU
CLRSCR; END .
Tu1iaTurboPasca1 (4};
{ Jendela 2 } Program 11-5.
WINDOW (1,1,80,25); {Reset ke jendela '''A •
BINGKAI (X12, V1, X22, V2,1) : •¥nuh l
WINDOW (X12+1, V1+1, X2 2-1. Y2- 1); Xll.8 MENCHAPUS SELURUH KARAKTER MULAI POSISI KURSOR
TEXTATTR :: $70; { Video terbalik
.\knghapus sc luruh brakt cr mu!Ji posisi kursor s::tmpai akhir baris
CLRSCR; (tc:rh.1cbp jc:ncicla y.1ng akuf) d.1 p.1t di lakukan Jengan n1udah mengguna-
Tu1isTurboPasca1 (6) ;
jenoela } bn ~'ro~cclur Clr Eol. SitJt cLri prosedu 1 ini . p osi·: i kurs\)f tidak diubah
END; { akhir Inisi a lisas i
(< et ap seperti SJ Jt schc:lum pcnglnpu s:m) .

PROCEDURE ProsesJende1a1 ;
Xll.9 MENCATUR DAN MEM:ERII<SA MODE TEKS
BE Gill
WItlOOW ( X11 +1 , Y 1 +1 , X2 1 - 1 , Y2- 1 ) ;
P~da kompu tcr !B tvl PC yang m cngg un akan adap ter CGA terdapat
TEXTATT R := so7 ; { warna no rmal }
bebcr:1pa m ode tcks . Mi salnya mock tc k s dengan 80 kol o m atau m ode
OELLltiE rcks 40 kol o m. bcrvvarna at:lll tidak. Pengaturan m ode tcks dap3 t
akhir ProsesJende 1a :
END; dila kukan dcngan mcmang~il proscd ur Tt!xtMode. l3ent uk nya:
~
PROCEDURE ProsesJendela 2; TextMode !Mode : INTEGE R!;
BEGIH
WIIIOOW (X12+1, Y1+ 1. X22-1. Y2-1) ; Mode d..!pat dis pcs ifibsi dcngan n i!Ji atau konstan ta sepem ya n g
GOTO XY ( 1 , 1) ; t<.:rca ntum pada TJbcl 12-4.
TEXTATTR : : $70; { Vide~ t eroalik
IHSLINE Tabel 12·4. Mode telcs
END; { khir ProsesJende l a 2
Konstanta Nllal Keterangan
BW80 0 Mode 40 x 25 tak berwarna
BE Gill ( * Progralll uta111a • l
C040 !C401 1 Mode 40 x 25 berwarna
CLRSCR;
WIIIOOW. GOTOXY, lllt •. lll~ 'l•tL LIIlE' : 60) ; BW80 2 Mode so x 25 tak berwarna
WRITELU ('Demo: coso ((80) 3 Mode 80 x 25 berwarna
lnisia1isasiJende1a; Mono 7 Mode 80 x 25 untuk adapter monochrome

{ Proses penggeseran dalam jende l•


Juml ahGeser := Y2 - Yl - 2: Mode 0 sa mpai de n gan 3 h an ya untuk kom puter yan g men gg unakan
FOR 1 : = 1 TO JumlahGese r 00 CGA .
D alam un it CRT juga dised iakan fasilitas untuk m engetahui m o de teks
SEGIN
ProsesJende1a1 ; Y4ng scd an g aktif. M o de tcks yang sedang akrif dapat dipcriksa pada
'iariabel global Lasr/1Jode. Mi s:~ ln ya nilai 3 mcnya takan , mod e yang aktif
Pr osesJendela2 ;
~alah mode 80 X 25 berwarna .
OELAV (1000)

201
200
~-=

""
Membaca Tombol Blasa dan Tombol Pertuasan
PROGR~ ModeTeks; Readkey dapat dipakai untuk membaca tomboi bias2 ::..Jupta '.\.....rr-~-.;:,
<• ------------------------------ •> perluasan (semacam to mbol Fl, Alt-W dan tomhol !J;c.ili). _!.&;. '~
<• eontoh pengaturan ~ode teka •> d itekan berupa tombol perluasan, sesur}g guh ny~ ?~-.:.. r'~:::;,o:::: ~
<* pada k~puter yang menggunakan •> papan-keti k terdapat karakter NULL (ASCII 0) . U nrui: ::: : r~~'-"-"'lF­
(• adapter CGA •) karakre r NULL harus diperiks a terlebih dahulu. J ib ~'a:. , ;-..li.: :-::
c• ------------------------------ •> NULL ada , maka kodc bcrikutnya dalam pcm mp:..=.~ r:r:-:--':-::~.
USES CRT; Jiba ca ke rn bali , d an kode cerscbur merupakan k,, ,:Je ;.:.=::: .::..r ._,_. ~ ·
BEGitl perluasan. Car a mc m hao com bo l bias.a m a u pun 1 <'1~ 1 ~- ~ :- .•.:: -
TEXTI~OOE (C080); scba gai bc rik ut:
WI\ITEUI ( '1-lode t e ks kini : tiODE BO x 25 berwarna · );
WRI TELU ('~ode teks = ', LAST~ODE);
KJral<ter := FEADKEY :
DELAY (4000); { tunda sesaat } IF Karak1er = • 0 THEN { r;ara kter NULL )
TEXTMOOE (C040); BEGIN
w~ITELH ('Sekarang berada p ada : '); TomboiPerluasan : = TRUE :
Karakter := READKEY
W~ITELH ('MODE 40 x 25 berwarna');
EN D
{ Per;ksa mode teks } ELSE TcmboiPe rlua san := FALSE;
w>n TELtl ('Mode teks :: , LASTI~ODE);
DE L AY (4000) ; { tunda sesaat } Dcngan -: :~ra ini, va riabcl T ombv/Pcrlzwsmz ~h .lll ":-:-~..: .. ..;. - -
TEXT~ODE (C080) ; :o mbol pnlu~san yang di tcbn d an s.1lah hi la t omb,, ![-.~,.;. ' .1:_ ..
R E~O LII .'viengenai ko dc .<ran dari to mb o l perlua sa n da p t J i::r.2: ~ ~-:~ ~ .. · .
Etl :) .
Membaca Tombol Sesaat
PrllKra m t :. -6. Dengan Turbo Pascal. pcmbaoa n rombol Sc<;aat \J :: __ ,: ::.::.~- ...... ·-· ~
·,\·ak ru tert cntu J d a tom bo l d it:::k.m nuk a aka n ,:1b~ .:-~ ~- _'h ~ -~ _::....
Xl1.10 MEMERIKSK ADA TIDAKNYA TOMBOL YANG DITEKAN rombol yan g di tebn , ek sck usi progra m ak an d il.m_;L:: t ;.::- !< : x-:·' ,. :.....; :
DJlam u..1i t CRT tcrd apat fungsi b oolean bcr:nmJ K eyPrcssed. Fungs1 sel anjutn ya) dapJt dil ak uka n de ngJ n me m a.n:·.LHK :~ ::..:"~' - .-. 0 -
tJnpa arg umen ini di gunakan untuk memeriksa ad a tidaknya tombol KeyPressed dan RcadKey. Pcmb:tcaan to m bol ><·;-::-:-.: ~; • ..:.........·
yang d itekan . Hasil fungsi berupa kcadaan benar (true) atau salah (false). .dir :::rapbn pada program permainan (gam e.<) . ln !r :~=:.:: :;:.s.r: ;:_:-.:
Hasil bcnar jika ada tombol yang ditekan . Hasil salah jib tak ada tombol dilihat pad a Prog r am 12-7 yang bcrupa fu ngsi B.1 :: ~ : -:•,).;",_ ...,..,

yang ditekan.
Setelah pemeriksaan, kode tombol yang ditekan tetap berada dalam PROGRAM 8acaTombo1;
penampung papan-ketik (karena fungsi ini memang bukan unruk USES CRT;
membaca) . Fungsi KeyPressed tidak dapat dipakai untuk mendeteksl
tombol Shift , Alt, NumLock, Ctrl yang berdiri sendiri . VAR KunciKhusus : BOOLEAII;
Karakter CHAR;

Xl1.11 MENGGUNAKAN READKEY UNTUK MEMBACA TOMBOL FUtlCTIOII Ba,caTombo 1Sesaat ( Se 1 ang : WOR D;
VAR T ombo l Per 1u a :;an ?-.~0_:.:~• .:----;;
Dengan unit C RT , to mbo l pa pan- ketik dapat dibaca tanpa karakternyl
tampil ke layar. Fasilitas y:m g b..::rkaitan deng an hal ini yaitu fungY <• --- -- ---- - ----- - --- ------------- - -- ------- --- --- --
<• Hasil : - karakter tiULL jil<.a tombol tal. d• a .... a~ .., -. -
ReadKey {tanpa argumen).

202
""

<• waktU SELAIIG. ..,


) WRITEUI ("Anda menekan tOfllbol perluasan") ;
WRITELN ('Kode \ombol p•rluasan =
<•
(•
Jika tidak - sama dengan · karakter tiULL, ;naka
bi 1a TOMBOLPERLUASAt~ bern I lai TRUE ., END
ORO (Karakter))
berarti tOMbol perluasan yang ditekan. *l
<• ELSE
<• TOI-IBOLPERLUASAN bern I la i FALSE berart i •>
WRITEUl ( "Tombol yang anoa tekan bar-ASCII -
<• tombol biasa yang ditekan •l
OR O (karakter));
<• ------------------------------------------------------- *l RE/\DUI
VAR Pencacah : WORD;
END.
Karakter : CHAR ;
BE Gill Program I 1- 7.
Pe ncacah : = 0;
Karakter : = P O; { SET dengan karak te r tiULL )
REPEAT
IF KEYPRESSED THEil Tabel 12·5. Tabel tombol perluasan
BE Gill - - -- --- -- --··-- --··
{ e aca tom bo l ) Nilai Kode Kedua ro mbol yan g diteka n
Karakter : :: REAOKEY:
tsc.1n codel
- --- --
IF Karakter = 110 THEil { Karakt e.> r !l ULL } 3 CTRL 2
15 SHIFT Ta b
BEGIII 16·25 ALT O,W,E ,R,T,Y. U,I ,O.P
30-38 ALT A S.D.F.G,H,J,K,L
TombolPer lua san : =TRUE;
44-50 ALT Z,X.C,V.B.N ,M
Karakter : = READKEY 59 ·68 F1 F2,F3,F4,F5. !=G,i'7 Fo.F9.F1 0
EIJO 71 Home
ELSE 72 Panah A CJ~

TombolPerluasa n : = FALSE 73 Pg Up
75 Panah Klri
EllO Panah Kanan
77
ELSE 79·83 Pg Up,Panah sawah,Pg Dn,ln ·
INC (Pencacah) 84·93 S,Del
UNTIL (Karakter <> •Ol OR (Pencacah > Selang); 94 ·103 SHIFT Fl .. F10
Ba~TombolSesaat : = Karakt8r; 104·113 CTRL F1 .. F10
114 ALT F1 .. F1 0
END; { akhir prosedur Bac~TombolSesaat
115·116 CTRL PrtSc
117-119 CTRL Panah Klri.Panah Kanan
BEGIN (• Progra• utama •l 120-131 CTRL End ,Pg Dn,Home
CLRSCR; 132 ALT 1,2,3,4,5,6.7,8,9,0,-, =
WRITELN ( 'Tekanlah tombol. Saya akan menunggu hanya sesaat !" 160 CTRL Pg Up
164·166 CTRL Panah Atas
Karakte r := BacaTombolSesaat (600tlb, KunciKhusus); CTRL Panah Bawah .lns,Del
174-176
IF Karakter = •o
THEil 178 ALT Home,Panah Atas, Pg Up
WRITELN ("And& nggak menekan tombol sama sekall !") 180 ALT Pariah Klrl
ELSE 182 ALT Panah Kanan
184·186 ALT End
IF Kunc i Khusus 'THEil
ALT Pg Dn ,lns,Del
BEGIN - ···- - - --·-- --

204

... ·;t(;-- ~-~ i .. · !;.·~,~-- --~-~ .~..,, .... -.~ .. }.;: -_.;,.__~' ·;~· 1 _+M-4 . . _L . . .,;;;~~~
r
Menghapus lsi Penampung Papan-kettk CHECKBREAK :: FALSE; I Ctrt-Break talc dapat
Kerika program dieksekusi, setiap kali ada tombol yang ditekan, kode dlpakal untulc
dari combo! segcra disimpan dalam penampung papan-ketik. Data-data menghentlkan program )
dalam penampun g ini akan dibaca oleh pemyataan seperti Read atau
Read/11, maupun fungsi ReadKey. Terkadang hal seperti ini tidak Jika Check Break berni!Ji jalse, penekanan Crrl-Break aka n mcngh:~silbn
diinginkan , tetapi di lain saat memang diperlukan. Untuk mengatasi hal kodc C trl-C (yairu bernilai ASCII .3) .
ini , misa!nya dlinginkan supaya ReadKey (ataupun Read dan Readln) Catat an: ClzeckBrcak di-set bcrnila i Tme setiap bli T extA/(lde dipanr;ril.
benar-benar mcmbaca tombol ya ng sedang d~tekan dan bukan membaca
d:.ra nng sudah ada pada penampung papan-kctik, caranya yairu dengan
leb ih dulu mcn g hapu s seiuruh isi penampung papan-kctik. Cara Xll.13 MENUNOA EKSEKUSI SESAAT
pcngh ap usannya disajikan pada proscdur HapusPerz amp z111g . AJak.J ! .1ny~ ching1nL n supaya kornputcr
t1d.1k m engc rj J.~:lii .l p ..- .;p,;
scla m a sd ang WJkw t::rtcntu. K cacla:~n
PROCEDURE HapusPenampung ; Jcmikian clapar d if >Crokh
misaln ya dcngan pcrnya taJ n scpcrri :
VAR Karakater : CHAR ;
BEGIN
{ Baca selama masih ada karalcter FOR 1 :~ 1 TO 1000 DO · ; tun da sesaat ) • I

dalam penampung papan ·ketlk )


Seldin cara di Jtas . tcrdapat fasiliras dalam unir C RT yang mcmpunyJI
WHILE KEYPRESSED DO l kcgunadn untuk mcnunda cksekusi scsaat }":l lt u pro>cdur Dduy .
Karakter : = READKEY Bemuk nya:

j
END ;
Delay lms : Word>:
U ntuk mcm bao tom bol dari papan-ketik secara langsung (bukan
vang sudah adJ dalam pcn.1rnpung papan-kctik), m ula -mu la proscdur
. Proscdur ini dipa b1 umuk mcnunch cksckusi sclama kir:1-k ir.1 ,,_..
Hapu sPenamp111rg harus dipanggil tcrlebih dahulu . ~ miliderik.

HapusPenampung;
( Baca tombol secara langsung darl papan-ketlk ) Xll.14 MENCATUR SUARA SPEAKER
Tombol := READKEY;
~
Bunyi arau su Jra dapar dihasil kan dengan mcnggunakan proscdu r S<llllld.

sound !Hz: Word>:


X11.12 MENCATUR SUPAYA PROORAM TAK DAPAT DIHENTIKAN Df-
NCAN CTRL·BREAK
Tcrkadang dikehendaki supaya suatu program yang sudahjadi tidak bi5J
dihemikan d cngan tombol Ctrl-Break. Hal seperti ini dapat dilakubn
dcngan rnud ah. Dalarn unit CRT terdapat variabel global bemaml
Hz rnerupakan nilai bulat positif yang menyatakan frekuen si suara dalam
saruan Hertz . Suara yang dihasilkan speaker komputer hanya d:~pat
dihentikan dengan memangg il prosedur NoSo11 nd. Lamanya suara clapat
diatur mclalui prosedur Delay.
Sebagai contoh :
I
I
I
ClzeckBreak (b.ertipe boolean). Keadaan bawaannya, variabel ini bernibi
tme (be nar), yang akan menyebabkan pcnekanan tombol Ctrl-Brtli USES CRT;
BEGIN
padJ sa:lt ada opc rasi penampilan ke layar atau pembacaan dari papw-
SOUND 1220>;
kctik akan scgcra menghentikan program. Variabel ClzakBreak dapll DELAY 1200);
diatur bernilai salah (false) , dengan maksud supaya program tak d~~ NOSOUND
dihentikan dengan mcnekan tombol Ctrl-Break. END.

206
207
,.

Xll.15 LAIN-LAIN
· program pendek di atas akan memperdengarkan suara dengan frekuensi
220 Hz selama kira-kira 200 milidetik. Contoh yang lain dapat dilihat 1. Varia bel Direct Vidr.•
Variabel DirectVideo b,•ftl!'l.' boolean. Kead aa n bawaannva bcm 1J ~ ,~ , ,
~ pada Program 12-8. (salah) . Variabel ini d ;~)'.it ,l igun akan untu k m enent uka n pcng ;, ; .. "
memori sccara lan~Sil ll'" .11 .1U tid ak lan gsung pa d a saa t penu l1). , , ,·'
m emori lavar .. (perintJ h II n it' atau Writeln). "'lib v a ri abd bcrnil-I f , , /
PROGRIU-I Sirine; pengaksesan mcmori ,i1h \..11 1....1n scca ra lan gs un g, scd an gka n j ib t. , ,
<• --------------------------------- ----- -- •> fa lse p cn ulisan kc m c lll •' " ln .1r d ilakuk an mcla! u i subrutin d:~ larn ):, . 1
( • Contoh penggunaan SOUIID, - DELAY & IIOSOUIID *)
Pcmbe rian ni lai fa/ .; 1• lq, \ 1 !> irc·tf Vidt \1 .tbn m c n y cb :~b bn pcn uL
(* untuk membangkitkan buny i sirine •> la yar dibku kan dcJJj:.ul ' >t lll'.ll ( d i ban din~ ka n j ib d i-sct lm ··
(* ------------- - -------------------- -- -- - - •>
C ata tan : Direa 1-'idc·•• .h ' · 1 /I ll <' ~ ' ''·'P k:d: Fni .\ L •, /,· ,J,p.mg::
USES CRT;
COtlST
FREKA~IAL = 900 ;
FREKA KHIR = 1500 ;
(* Frekuens i awa l . )

(' Fre ku e nsi a kn ir • )


2. Var iabcl ChaJ.zs,,,,,,
v~ ri a b cl Chu kS II t'll ' h 'll 'l '' ht)\ ) lc J11, y an ~ bcrnil :~i !J i l t ' p:HL '
a"v al (a tau sctia p bh I, , r.llc•tfc Jipan ggi l). N il.!i . rru,· p.t,iJ ' .cr
VAR
Frek HORD; (* Pengat ur f r ekuens i s uar a * ) m cnj a m in tidak tcrja dn :' • kr qapn s ct i :~p k .1! i .1 J.t o pc n ~i pc rit:
la ya r. ScJ ang kan 11 il.u f.,/ .. · padJ va ri:t bcl in i ak .111 m cm··
BEGIN (• Program utama • ) k cmun gkinan tcrj adi11 1 .1 k· •r ·•P.Jll (pad .l ko mputc r yan~ m cr. g;.:
CLRSCR;
ad a pter CGA), tc tap 1 "f '''·' ~ ' pcnul is an kc laya r :tk J n dil:~ k u k .u ,
WRITE ('Tekan sebarang t ombo l unt uk me nghe nti ka n . . . '); ccpa t (d ibandin g kan l11 l.t < ·!J,·.-kSn''" bcrnilai n 11c).
REPEAT Catatan : Ch a kSnow ,, ,l.,k ,n .- m bcn pcnguu h a pa-.1p:1 ji b /) -,,

I
{ Suara meningg i )
h::- rn ib i fa/." ·
Frek : = FRE KAWAL ;
Tabd 12-6. m cny.q1 k '" f;.1111ha r.m kcc·cp.Han p,· n.l ! ll ~' i lan :-L .•.
REPEAT
bi b Dirarl 'idt"v a tau ( 'f1, , A \ rt <'ll ' d:beri n ibi lrr lt' ar.w f;ll.>c' . T:tbci t-.
SOU liD ( F rek) ;
didasJrk an pcng uj i:ur ,, 11 ·11 .11ll pilb n rulisan 'Tur h<~ P.J>ca l' p:.. l·.
DELAY (1 0 ) ;
NOSOUI'lD; se ban yak 350 kali .
INC (Frek, 8)
UNTIL Frek > FREKAKHIR ; Tabel 12·6. Perbandlngan kClCI1Patan penampllan teks
untuk berbag;tl kC)f!Oaan DlrectVIdeo & Checi<Snow
{ Suara menurun
REPEAT #
DlrectVideo CheckSnow W•lklll tdetik)
SOUHD ( Frek) ; 1,26
True True
DELAY (70) ; 0,80
True False
NOSOUIID; False fi, 21
DEC (Frek, 20)
UNTIL Frek < FREKAHAL ;
UNTIL KEYPRESSED 3. V aria bd CheckEof
Vari a bel ChcckE<?f bu r 'I " [Hlo lcan . Kcad J ...rl ln w.u nn ya ad Jl~
EtiD .
(sa lah ). Jib \'a ria bel ini , j, '• ~'~ hcrnd J t rn ..>, ma b pc nck ,ma n to nr b•
Z aka n mcnyebabkan dd • ·" " ~ kit k.1 n r. ya ~a r .1\..r cr t.md.1 akh tr-ti k '
Program 11-8.

208
akibarnya scluruh operasi pe.m bacaan· terhadap papan-ketik berikutnyJ
akan diabaikan.
4. Prosedur AssignCrc XIII PENGOLAHAN DATA DENGAN FILE
Prosedur ini digunakan berhubungan dengan file teks, yang menugasbn
keluaran file ke lavar penampil dan pembacaan dari papan-ketik. Bentuk
proscdur ini:

AssignCrt !FileTek.S : TEXT);


Kadang-kadang diperlukan agar data disimpan pada media pcnyirnpan
dengan FileTeb be rupa variabel bcrtipc TEXT tct ap, sepcrti disket. Dengan menyimpan data dalam disket, data dapat
]angsung dibaca sevvaktu-waktu jika diperlukan, sc.:hingga pengctikan
data yang berkali-bli (setiap kai i data akan diproses) dapa t d ihindarkan .
Pada media pcnyimpan scpcni disket, data disimpan dalam bcntuk
su acu kesatuan yang discbut dcn~ .l n file (berkas). Seriap file mcmpun yai
nama tcrscnd iri dan bcrsifat unik (ridak ada yang sama). Setiap file
tcrsusun dari saru atau bebcrapa item data yang discbut komponen (atau
record). Sctiap komponcn mcmiliki nomor komponcn, yang menyat a-
ka n urutan komponcn dalam file. Dalam Turbo Pascal, komponen yang
Fcn am.l mcmpunyai nomor komponcn sama dcngan 0. Komponen
kc,:ua hcrn o m o r 1, d :m sctcrusnya .

FILE

Komponen
~ Komponen

G,unbar 13-1. Strulrtur data Ja/am Jilt

Untuk keperluan pengaksesan komponen dari file, file dilengkapi


dengan pointer file . Pointer file menunjuk ke komponen yang akan
diakses (dibaca atau direkam). Apabila pointer file sedang menunjuk ke
!tutu komponen, kemudian terdapat operasi pembacaan atau penulisan,
dengan sendirinya pointer ini akan bcrgescr ke lokasi ~csudah komponen
' Y~n g semula ditunjuk. SeandainyJ seti:~p komponcn mcmpunyai panjan g
Y•n g sa ma, posisi dari m:~sing-masin g komponcn dcngan mudah bisa
dlketahui. Pada kcadaan dcmikian, pointer file Lhpat diarur supaya
lllmunjuk ke komponen yang diinginkan pemrogram, sehingga mc-
tnungkinkan pengaksesan secara acak (random) .

;. - 211
_ .... ..._~~...-u,.••,,..,•. ., _.,.~~··v·.~·· ·~-.....t ·~-.;-;. f> •···-._if'ls~'S~..:.......,.£r. ··;),.: C,..!. . . · 1:
p ada Turbo Pascal , fi le sendiri dibeaakan menjadi 3 golongan, berupa: yang men yatakan bahwa masi ng-masing komponen fil e berupa array
dengan 7 el em en benipe real. Sedangkan:
File bc:rti pe
VAR
File tcks, dan
Data_Matrllcs: FILE OF REAL;
Fi le tak-bertipe.
D iar.tara kcti ga file tcrscbu t, yang tak dapa t diakscs scca ra acak adalah men yata kan bahwa komponen file beru pa elemen brmpe real.
file teks . File rcks hanya dap:~r diakses secar J berrurura n (sckuensial).
Operas! File Bertlpe
Xlll.'i FilE BERTIPE Pcngolahan data Jcngan file berti pe mempunyai urur:w prrhD scb:~g . tt
Fi le bcrripc mcrup:~ kan jcnis tile dcngan ripe ko m poncnnya didcfinisikan beriku t:
I
olch pcmrogram. I. Menyebutkan nriabel file dan nama file

MenentuKan Tlpe Komponen


1. Mcmbuka file
.3. tvlclaksanak.tn pt·- ·_saksesan file
I
File bempe diddinisibn den ga n be ntuk : 4. Menutup file
I
FILE OF t ipe _cata Urutan p roses pada file berripe ini paJa c:hsarnya sama dt;;gan 'Jpcr.bi I
pada jenis file binnya. Pcrbedaannya rcrletak pada fa~i li t :J~ yang i
dcngan ripr _,lara J ap:lt bcrupa sebanng tipc da ta, kccuali file. Sebag;;,i digunakan.
contoh: Scbc!um mclakukaJJ pcngolah ,m data dcngan file. 1·arial_;::, file h.nusl:lh
rcrkbih dahuiu Jibnbn llJ J1l.l file. Hal ini dilabar.:..on dcngJ11
TYPE
Record_Pegawai = RECORD
Ni P
Nama
: STRING!61;
: STRING!251 ;
mcmanggil pro,L'dur .·L:i,m. 1·ang m::miliki bcntuk:
ASSIGN rvarlabeUile. nama _file J
I
KodeBaglan Ker]a: CHAR :
Ca]IPokok
dcngan 1-'ari,lbcl_jl/c lltcrupabn VJriJb,-1 bc~jLni .> file bcrlip·- :Jn ,. 1"1<7 ...)1/r
END; : LONGINT bcrupa .nama tile yang aturaJllll-.o "-''U.1i dcngan arur:u, j )QS . <;;:.:car:t

\,
npe_FIIe_Pegawal = FILE OF Record_Pegawai;

VAR
singkat, nama tllc hisa rcrdin dari kodc penggerak disk fd!Jk dr ir•c) dan
Jirek tori yang bcr.,ifJ t opti onal, nama dcpan file (maksirn ai =-:-: :·:Jga.-. dung
8 ka rak ter), diiku ti tanda titik dan nama extension (m abt:71a! mcng an-
I
F!le_Pegawal : Tlpe_File_Pegawal: dung 3 ka rak ter) yang be rsifat optional. Sebaga i contoh L:-:tar.~ narn:1
file:
Pend ek la rasian va riabel fi le bernama FileY egawai , dapat j uga dirub1
PEGA W AI. DT A
mcnjadi

VAR
File_Pegawal : FILE o~ Record_Pegawal:
I Yn1a extcnston
nama dcp:m

m enyatakan kcpada kompilcr bah wa data fik Conroh yang lain ·


Pcndeklarasi an di atas,
komponen yang berripe RccordYegawai.
tcrsusun at:~s scjumlah
C \TUHBO'.PE< ;A \\'t\1. DT ;.,

T~ktor1
Contoh yang bin :

VAR
Oata_5uhu: FILE OF ARRAY!1 .. 71 OF REAL; kode disk driv~.:

~ .... 4 """ • .•,


?.U
Untuk keperluan menutup file, prosedur yang digun;.k 411 ,
Contoh penggw1aan Assign: r~•tu Close •
dengm bmtuk :
ASSIGN tFI!e_Pegawal, 'PECAWAI.DTA'l;
CLOSE tvartabeUllel
vang menyatakan bahwa variabel file File_Pfgawai berkaitan dengan
yang menyatakan bahwa file yang berkaitan dengan vant~lir/ II .
nama file PEGA WAI.DT A. · · I J' C1ltUtUp
Untuk keperluan membuka file, disediakan dua bpah prosedur berupa Proses pengakse5an file pada dasarnya d1bedakJ" , d. ·
.
kategon, berupa:
· '•' '' J~ 1 dua
Reser dan Rewrite.
Rewrite (variabeLfile) Dipakai untuk membuka dan menciptakar. - Menulis · (mcrckam) dat:1, dan
file. Seandain ya dalam di sket su dah ada file - - Membao data.
yang sama dcngan nama file yang berkaitar. Pernyataan yang dipakai untuk mcrck .nn data:
dengan vari,Jbc! ....Jile, isi fil e akan menjad1
kosong. WRITE tvariabeLftle. varlabeLkomponenl
Reset {variabeLfile) Dipakai untuk mcmbuka file. dengan sifat:
File yan~ berkaitan dengan l'ariabel....fi!r dengan variabd.....kompotleJI berisi data J:ni komponcn y;,, ,.,
harus ~udah ada pad a diskc r. Jika file kan ke dalam file. Scsudah operas!. pcrckarnan d.Lt · ' .."··· ' 1trckam-
yang bersangkutan tid ak ada, akan terja- otomans. pomter
. . L , . .,. , "'' • ·~ l'Ca ra
fi1I c a k an d.1gese; k c pos1S1. sc IanJUl .
• . . . • • • 111 va sa1a
di nmtime error. pomter file sedang menunJuk kc pos1S1 bcrnomv : . '
lsi file tidak hilang serelah file dibub Dala _pegaw01. ('ocrt1pc. rcco r d) bcns1: . . vanabcl

Baik Rt'5 t'l m:wp tm Rewritt' menycb ab kan pointer file akan ditempatbr: NIP 11896~

di awa l fik . Nama ALl


KodeBagianKcrjJ
· GajiPokok = 200000

lsi file PEGAWAI.DTA sebeium j


REWRITE atau RESET
Sebelum WRITE
2 3
0
I ~-~
I I I I l I

I
I

lsi file PEGAWAI.DTA


f
lSI ftle PEGAWA!.DTA pointer file tposlsl nomor 2l
sesudah RESET
sesudah REWRITE
l
Kosong ' 0 2 3 Sesudah WRITE
r--- komponen no 2 ~
I I I I IJ
I pOinte' fll• L pointe< "J L I 118962 I ! I
All 1 200000 I
+
pointer ftle
tertetak sesudah komponen nomor 2

Gambar tJ - l . P~nga"'h R~1d tlan R~writ~ doJiam m~mbuka fil~ C...•ar 13-J. Op~r<lli Writt

..,L!
215
~

Pemyataan y ang dipakai untuk m crnbaca data pada file memiliki


J{alau sel anj umya dikenakan pernyata.m: bentuk: ·

WRITE (Flle_Pegawal , Data-Pegawail;


READ (varlabeLffle, varlabel_komponenl
maka sesud ah perekaman DataYeg.:t uai. po inter file ak an m enunjuk ke
Sesudah RE AD dilaksan akan , data pada po sisi yang ditunj uk o leh
posisi sesu dah komponcn bernom o r 2.
pointer file ditcm patkan kc '' ariab,·Lkomponm da n po in ter ti le dige~c r
C o n roh scdcrhana untuk meny im p:m scb uah komponcn bert ipc
pada posisi sclanjutnya. Untuk kbih jela <; nya dapat diliha t p ~da Gam bar
R cc,,nf_JJe.~all·.;i kc dal~n 1 file b cnDnl.l PEG/\ WAI. DTA Japat dilihat 13-4.
pad a Prog ram L\-1. Untuk mt·m bc ntd; fik ba ru . maka lilt PEGA-

~l
WAL DT.A. dibuk:l dengan HEWRlTE.

p R(XjRAH 5 ~ a panD at a, Sebelum READ !File_Pegawa l.


,. ---- ----- ---- -
.,
• ) Dat<L Pegawall:
(• CJn ~~h o r ogr~~

(• u nt.uk /1\flny i moan s tt Ou ah komp~g,-. ~ w a.- l• 1; t \ )

--- ---- ---- -- ---- -- -- ------ ---- ------- --


& • )

• )
r- kompor.en no 1 komponen no 2 -~ ,
(•
U5E3 CRT;
TY PE
Q I
11 18961Jur~l_2 1 1sc~;o.;-~2 ,a962 -l
t
All T1T-2oooool
R• coro _P eg •~ ~i ; RE COH U
lllP 5 rR !IIC{6J; pointer file
~~~-;,
51 R:IiG{25J,

l(oOtJ61i9 tanr..e r J a _,..;..R.

G.. j,PoJo o k l.:·rlG !ioT


I ? I ? j_i[ ? _j Data. Pegawal
T\pe_ F 1l e _ Pe g a~a t
~ liD ;

: Fll f OF Fac.c. ~ .: ' 1::1S.; ... , ; I


VA R
i Sesudah READ !FIIe_Pegawal, Data_Pega wall:
f ile_Peya wa l
Oat ii_P e ga ~•i
Tip • _ f l l & _ P e ga~al .

Re cord_Pega wa i.
r-- komponen no 1 omponen no 2 - l

BEOI U { p ro gran. utatnA ) LJ' I 118961 I UM I 12 I 150000j_ 118962 I All 11 !-~~]


I
l
CL RSCR ; I

ASSIGN (f ; ht_ Pegawa 1, ' PEG AHAI . Oi l );


P~ny e out ~ n v ~ ri a b e l f i le pointer file
a~n n •~ f ; le )
uambu~ ;a a-.n •vnc ip tak a n f il e b;aru ) I
REWRITE (flle_Pog a "al) ;

WITH Oata_Pegawa\ 00
I 1 118961 l UMI !2 1 150000 I Data_Pegawal
data ya ng akan di r ek .... )
BEO II I
tUP := ' 11890 0';
Hu•• :: 'BAOU SlDII.Rt-11 1~ ';
KodeBag i anKe r ja := * 4 '; Gambar 13- 4. OpuaJi Rt<Jd
_ GAJIPok.ok : = 400000
EIIO ;
Comoh program umuJ.. mcmbac.1 schu:1h kompon cn ya ng tcrdap:n
•lereto.a.c Oata_ Pe ga.w a 1
WR ITE (fil• _P •gawa1, Oata_P• 9•" A, ,;
~lenutup file )
pada file PEGA WAI. DT.-\ di~ajikan pa th l'wgrJ!Il 11 - 2. Pa,i.t program
CLOS E (fil e _ Pegawai);
ini , file dibub dengan HESET. HESET nte11\'cb.1bbn i'Ointcr tile
WIUTf lH ( *O.a ta evd01h dire kaa . T• ,;.an RE l UfW ' ); di tcmpatkan Ji Jwal fil::: (mmunjuk komponcn bcrnom o r 0) . Dl'ltgan
REAOUI demi kian saat ada operasi HEAD, kom ponen bcrnomor 0 inibh yan g
EIIO . L:: CI- 1)--,{ 1= -tj lllasuk ke variabcl Data _P(~arvai.

217
-- . , -· . - .. . .... l
Pada file bertipe, terdapat fasilitas lain seperti Seek, FileSize, FilePos
ppOORAM a.caoata ;
r• ---------- ------------------------------
<• .•l
)
dan Eoj Fasilitas ini sangat berguna untuk memanipulasi pcngolahan
data ftle .

.
contoh progru
{f UtltUII HaOlOI Mbuan koapon.n da1u f1le •)
Prosedur Seek yang mempunyai bentuk:
)
(.
USES CRl ; SEH rvartabeLflle. nomor_komponenl
TYPE
Record_ Pega w&1 REC O ~D dcr.,::Jn nMr:or_Jwmponw bertipe longint, m empunyai kef!: una :m un tuk
tiiP STRIIIG(fi] ;
n;c:.;:mparkan pointer fi le ke kom pon en yang _9ii ngir.brl. Jika j uml ah
S TR III G ( 2 ~) ;
tlaooo.
kode8ii g 15nKer j a ': CHAR :
ko mpo nen file adalah jum.Jwmpoi!OI , maka
Gaj \Po~.o k LOilGIIIT

END; SEEK rvariabeLflle. jum_komponenl :


Tip¥_ F ;1 e_P2g~wa \ : f! L: Of Pecord _ P• g~w a i :

VAR akan mcn ycbabkan pointer fik dircmp arkan kc akhi r file. Scd:-t ng bn
f\le_P •~·• i T 'p e_F l ) e_Pe s ~wa 1 ;
Oata_ P e~·• i Rec o ro _ Pega wa i ;
SW < rvariabeLflle, Ol;

SfGIU { p ro~u· A.ftl u tllr;,• }


me ;11buat poi nter menunjuk ke J w al fik.
CLRSCR ;
Penye butan vari~ b el f i 1•
ASSIG!i ( F i le _ Pegawa i . ' PEGAWAI . Ol A ' l ;
d.an nU\a fil e ) Sebe!um SEEK: sesudah SEEK rvariabeLflle . 4J·
~'CII'IbUk& f i le P€0""'A! .DT A
RESET r F t1 • _ PegA~at} ;
f.i &trtba C4 O ~t~ _Peg,;,w .l.i
~fAD ( r i l s _ Pe g awa~ , O~t•_P ~gawa , ) ; 0 2 3 0 2 3 - nomor komponen

WITH C a~a _ Pegawat DO


Cot.a k. ka lA ya"" } i ·-r-urJ CTJ___ r_J
8f Gi t1
WRITELU ( ' IIIP
IliP ); t
pointer file pointer fl!e
WR!":'EU• ( 'HaJt•
WR! TlLH ('~ode baglan kerja
Uaea):
KoaeBaglanKerja); l !berada pada akh lr fi lel j
WRITELH ( 'G&j i Pol<ok GajiPokol<)
G•rr.bar tJ - 5. Opmui d~ngan SEEK
HID ;

CLOSE ( Fii e_P•gawal );


{ »enutup file ] Fungsi bernama FileSize yang memiliki benruk:

WRITELN ; WRITE ( ' Tekan RETURU') ; ALESIZE rvartabel...fllel


READLH
END .
~ mempun yai kegunaan unruk memperolehjumlah ko m po ncn dal am file .
Contoh eiiNkusl :

tllP I 18980 r 0 1 2 3 +- nomor komponen ~


tl &t~ta

~ ode b a g , a n ke r ja
6ADU SI OARIII IIT O
! [T I I I FlleSJze rvartabeU11eJ = 4 I
Gajl PO><o• 400000


L 1
."''' .,. I
C...iGr 13- 6. Fung1i Fi/~Siz~
Program 13 -Z.
210
-.~ 'l
,
..
., .
1

file (eof= end offile) a tau tidak. Keluaran fungsi Eof bcrupa True (bcnar)
fungsi bernama FilePos ber guna untuk memperoleh posi si f<'in rer fil e. apabila pointer file sedang bcrada pada akhif file. Jika pointer file tidak
bcrada pada akhir file, m aka keluaran berupa False (salah).
Benruk fungsi ini: Conroh penggunaan prosedur SEEK dan fungsi FILESIZE diantara-
nya terdapat pada Program 13-J, yaitu prog ram untuk menambahkan
FILEPOS lvariabeUllel
data ke file PEGA W AI. DT A (Program ini hanya bisa dijalankan jika
f>pabila kcluaran. fun~_si ini berup a 0 (no\), bcrarti roint er iil~ scdang Progra m 13-1 sudah d ij.1 ian bn). D ata tambahan dimasukbn kc ba gian
berad a di awal fi1 c. N1la 1 rerbcsar vang t:hha s1lkan okh fu:-;,;:,, lill sama ~csudah ko mpo nen rerakhir yang rclah dircbm. K.uena itu pada
dcng;m jurnlah kornponen dalam fi le, yang menyarabn :-oinrcr file pcmasub.n data t:unba ha n va ng pcrtlma (.;c tiap kali Program 13- .l
st:dan g bcrad,, pada akhir file. dijalankan) . pointer file har us tcrlcbi h dah u!u digcser ke akh ir file .
Pcrnyatnn y311g dipcrlukan :

3 ...... nomor l<cmponen


I
0 2 NmU<omponen := FILESIZE!FIIe . PegawaH;

o=J-Tl FilePos rvariaoeUileJ = 4 I SEEK tFIIe_Pegawal, Nmr _Komponenl ;

Prog r.> m 13-3 se lcngb.pn ya cbpat dilih at bcrik ut ini:


jpOintEr
. I
f IE
0 2 3 ~ROCRA14 T. -t>ahO• t • ,

I.
\ (•
•l
FilePos rvarfabeU/Ie! =2
[J I I J
( • Contoh or-ogr ... ' l
(' u'ltvk . . n .a.•b&h~a r• d • t • lo. a o.a 'l ol!l fl l • •l

tpointer (' ~ --

VS E.S CA C:
-- - ' l

L file
- -- - -
Gdmb~r 13 - i . l'ung$i FiltPo$
lt F'f.
P • cor d _ ~>•9•"' a \ :: R£ CO ~O
HIP
, ... ST R l tJG( 8) .
SlR1 11G{15) :
lt00.8a gt af'\'·•r J a : CtiA A ,

Caj tPok.ok lOtiGltiT


Fun gsi banama Eof yang mem iliki bcntuk : END ;
Tipe_F 1 l a_P•g.awai : ;: FILE Of P.co r d_ Peg"wa t :

EOF lvartabeLfilel PROCEOUAf P•taaeu"'-.an_dan_Pereka.-an_Oata


(VU ftle_P•gawai : Hp._F t h _ Pe9awat ;
berguna untuk memeriksa posisi pointer file sedang bera.il pada akhir t,_r _ Aec : WORO) :

f Untu)l. --~~kan data yang t>era . . l d•ri Dapan-lo.et ~ k

2 3 ...- nomor komponen cs.an .. ,..k . . k• rile )


0
[ I I I ] Eof IVartaoeLfllel
,pointer file
= True

_ _

I
.
V AR

Po•:C
0. ta_P•·9 a•• •

&tO Ill
IVTE ;
Jteeord_Pegawa' :

0 1 2 3 I NITM Oata_Pe9&wa t DO

L I I [ ] Eof rvanaoeU ilel = False !


lfGIH

_j
( Buat katerangan p.ada ta,.a ,. )
CLR'SCA;
' '""Inter flle GOTOXV(10. 2) : _.JUT!( "P£f.lA5UKAII DATA KE lt.,-_ R.c : l ).
OOTOXY(IO , 4) ; WA!Tf( ' IHP [8 dlgtt) : 'l;

Gambdr 13-B. Fungsi Eof 221

'J'J(\
NI• 1 1!98 1
~I : s 1184fAfl; u..... UO<l
OOTOlY(IO, 5): WRITE( 'II_. '): ltode hglan Ker ja : 2 f 1) Personalla (2). P::euang.an
ooTOXY(10, I); lt!ITTE('II<Ido ••s•an Kerjo: (1]. l'er_,.lh (2] . O<euangon 'l:
{S) . Produ-..; ·1.
f l} . P. . ea.aran {4). T•knik {S] . P..-.kol
(3) . ,_..,.,..,
(4) . Teknik
GOT0l1(10, T); WRilf(' ISOOOO
GOTOXY ( 10. I) ; WRITE ( 'GaJ I Pokolo Rp'):
Gajl ~ok
""
.._na.llbahkan data lag t { Y/ f ~ • 'f
{ p_.~an OAt& dar\ p.aoan "etik

P£HASUKAH OAT A KE - 3
CiOTOtY (Powlt, 4 ): AEADLII (fliP); fliP , 1 !1,~ 2
GOTOIY (Po9X, ! ) ; fi'EAOlH (I~) ; Alt
Ua••
GOTOI'I' (Pe.l, 8) : KOO. B•9 t an Ker j a : l ! i ). P • .- ..or..a I i a ( Z J. K ~u..a n g a n
QfP(Al I J! = -~ •.,,. ... . 1'1 · , ... ~ ~)I. ( S) . Produi<S i

Koc:te8ag\anhr j ~ : : REAOkE' (i:.aj t Po,.ck r::c : CNO . .J'J


•.JITll ttoo.SagianK•r,ja IH ( ' ! ' . . . , ·):
wRITE (llOO.!agu,)f.erja) : Hen-...aa h kan ~t• 1 • 9' f ¥ 1 ' J "' "
GOT0XY(Po•.:l+4, I ); READUI {G aj,Pokok) ;

END; PE ..-~ UK AU OATA ll:f


UIP • 1~9 6 3

WAI'!£ ffi1. _ P•ga wa L O...ta _ P•g..& .. a t); t P•k ... k• dta~> •t J 1!1/~E : ll ...-.;li'tAPHO
II a••
END; ( aM!"! I r proaeOur P•••~ukan_Per•lo.••an_Da ta ~oae &.aghn llerjA. ' • . {1) . t:>arson • H • {2). t<•uang•n
{3) . Pvo•a.aran (•J . hknik { 5} . Produll. st
PROCECi.:RE: w.~oahOata;

0\9'---n.alo.V"' untuk . . n.-oa,.,kan C:at.a


t•,..,._,.d.aP rt 1• yang aod.a.h ada p...1.da. d i !lk•t }
I
l

'
Gaj t Pokok

Nt;t'lJu..-o..hkan oat a
~o

'•9;
•oooco

( 'f f1 I " T

v•• I Program 13 -3.


1 t 1e_P•g.a. .... a t

J a•&b•n
rr.r _P.cord,
~r_~n
T i p._l' i la_Pagawa i ;
CI"IAJt;

: WORD;
I
1
Pcnggun aan L.m ~:: s 1 EOf cbpat di!ihat pada Program 13-4, yang
dipakai untuk cncn,1 m pdk an scl uru h kornpo l1\:n yang tcrdapat pada file

i!!EGlN
CLRS.C~;
·~~ION ( ,- i 1•_Petawa t , · PEOAWAI . DT A·) ; { P• t"l yebuta, var, abel f \ 1e d•n na.a.a f 11& )
i PEGA WAI.DT :\ . :1.l f-o n tma yang di gunakan dalam program :

1. Buka ,file P EG.r\ W.A. l. DTA


2: Jika pointer file tiJa k berada di akhir file, nuka:
RE~!,. (l'iltt_Pegawat) ; ( .,.._buka ft1• PEQAWAI.OTA
• Baca scbu.1h kom poncn p:~da posisi pointer file
Nar-_K.:.ponen : : FILESIZE<'tle_Pegawat) ;
S[fK (ft1e_P•ta"'•t. Uar_KOIIIIP('Jr',.n); • Tampilkan kc: laya r
( uo-or r ecord pert&JU dlang~p : t )
Mltr _a.cord : .. •• r:_Kc:.ponen • 1; • Ulan g i langbh mulai nomor 2
REPEAT
p . . . .ut~;an_dan_P•,.•..,~-Oat.a (flle_Pegaw•l , IIJar _Record) ; 3. File PEGA W AI. DT A ditutup
INC (,_r _Record) ;
OOTOIY (10, 10); WRIT( ( ' ~kan data lagt (Y'(T)? ' ) ;

RfPf.AT
PROGRAM BacaSe•uaData ;
Ja..ab&n :: lltEAOt<fY <• -------- ---- ----------- ------- ----- --------------- .,
UNTIL Ja•&b&n IH { ' Y ' ,'y','T",'t'); <• Contoh progr~ •)
UltTtl uPCASE(Jawaban):'T ';
W'ttlf. (uPC.SE ( Jawaban))
<• untuk .an&Mpilkan 5eluruh data yang ada dala. file •>
EH'O; ( akhtr pro-..dv,. ~•bahOata) <• -------------------------------------------------- .,
USES CRT;
!fG[N ( p,-ogr ... ut . . . )

~·t• TYPE
[NO .
Record_Pega-.al RECORD
Contoh ............ : tHP STRING[O) ;
tlaJII& STRIN0[25] ;
PEMASVI<AII DATA Kl - Z

223
222
.,

oontuh akaakuai :
KodeBagianKerja: CHAR;
Gaj i Pokok LOIIGIHT IIIP II A~IA BAGIAII I<ER J A GAJI
EHD; ===== ======== == ======================== == =============
fipa_Fi la_Pegawai : fiLE OF Record_Pegawai: 118960 BADU SI DARI-IIIITO Tek ni k Rp 40 0 0 00
1169& 1 u... I Keua n ga n Rp 150000
pROCEDURE MenaapllkanS&•uaData; 118S6 2 ALI P~ r aona l i a Rp 20 0000
11 8963 ! SIIAEIII I-IURYAliTO Te knl k Rp t OOCOO
untuk menampllkan seluruh data ~· ·= ~ 22 =~ == == = =: == == == ===== = ====== = === = = = = = = = = == = == == ~

yang ada pada f ; le PEGA~IAI. OTA Te k.a n R£TlJR fl

P ro.~ ram /J ·- ~ .
VAR
File_Pasawai FILE OF Record_Pega wai ;
STRIIIG[ 10); .1\ d.tkai any~ cb ta t ~Tt c' IHU va n g hcr ...la dal.!n 1 file p(rlu d:uhJh.
Bagiant<erja
Oa t a_Pegawai Record_Pegawa i : Prog ram l.)- 5 mc m pcrhiD tk :u• c.tLl mc ng g am t tic!J Kv,JcBa~:aii Kcr:~
dJ n C<~JII-'ok ok d:-t~i s u :-~ ru ko m po ncn dalam tlk PEG 1\ WAI. DT.~.
BE Gill Pcm as ub n \':J ng di pcrl ubn bcru p:-t N IP da ri da ta vang abn diubah
CLRSCR; Penyebutan variabel file Kaiau dJ ta png dicui tJ k .tdJ dJ h !J\ file, p ro gr:ll n Jkan m cmbcrikJ.n
ASSIGN (F;le_Pegawai , "PEGA\IAI.DTA " ) ; pcsan kcs.1l.1bn herupJ ' DJta tc rs<:bu t nd.1k di rcm u kan 1'. Al gori t ! l ~rl
dan nama fila )
l-lembuka file PEGP.WAI.DTA yang di p.t k.ti :>clc ngbpn p ad al::lh scb .< g:li bn ik ut :
RE SET (File_Pegawa i);
1. File P EGAW:\I.DT A d ibub
WRITELH ( 'HIP II AI~A EAGIAII KERJA GAJI ' ); ')
Mcm a.;ukkan N IP d :-~r i da tJ va:1; :1bn d: g.1nti
WRI TELII (' = ==== = === = == = ==== ====== " ~ = == = = = ==== = === = == = ===== = =====" ) ; 3. J ika d.tt J yJ nt: dicar i :10:1 p dJ f:ic. nD k.J:
a D:Ha ditampil bn h byar
WHILE IIOT EOF (F lla_Fegawa i) DO
a Mcma sukbn dat.1 pcn gg:lilti (•:a1 ru Ko~lt'l ~.~-~ ia t! i(nj.J Jan C a;zl\··
WITH Oata_Pegawa i DO
kok
BEGltl
READ (File_Pegawai, Data_Pegawai) ; • Pcrckama n data kcmbali kc di skct
CASE KodeBagianKarja OF Ji ka data tak ada p:1da fil e. maka pcsan kcsalaha n 'dJ ta terscbu t ta k
'1' : BagianKerja : = 'Persona1ia': ditc mukan !' dim uncul ka n pada laya r.
'2' : BagianKerja : = 'Kauangan' : 4. Jib m au m clakukan perubahan lagi, ul an g i mul ai langkah nom o r :2
'3' : BagianKerja : = 'Pa•asaran': 5. File PEG A W AI.DT A ditutup
'4' : BagianKerja : = 'Teknik' :
'5' : BagianKerja : = ' Produksi' PROGRAM G~ntiDoto ;

END; { akhir for ) <• ' )

WRITELH (lllP : e , ti&JU : 21. BagianKarja : 12, ' Rp , OajiPokoi< :1CI. <• Conto h program •}
(• untuk •enggant i data dari •uatu ko.ponen da l~ ~ f il e • )
END; { akhir with ) <• .,
WRITELH ( ' ==~== = = ==== === = == = = = = = == = === = =========================') :
END ; ( akhlr proaadur HenambahData ) US E3 CRT :
TYPE
Rac ord_ P•ga \ollllli RECORD
BEGfN ( progra10 ut uoa
tllP STRI IIG{ 6 ] ;
He~ilkanSa•uaOata ;
u..... STRIIIO[Z5] ;
WAIT! ( 'Tekan AI!TURII'l; RI!ADLII Kode8ag\• n Kerja : CHAR;

END.
225
224
*'

I T . 7 rm 3

. , 7 itiJI! s 1

77 ·= 2'., 77 OJ a r T. 7 Iii

ountuh ek .. kual :
KodeBagianKerja: CHAR;
GajlPokok L~lGINT IIIP IIA~IA BAGIAII l(fRJA GAJI
END; ==== == ======================================= ====== ===
r;pe_Flle_Pegawai =FILE OF Record_Pegawal; 118960 BAOU Sl DARMIIITO Te~ n ik Rp 4000 00
118911 1 UM I Keua r.g an Ro 150000
pROCEDURE ~~pllkanS&•uaData; 1189132 ALI P& raona ll a Rp 200000
118963 !SIIAE!i! HURYA!iTC Te knlk Rp ~ 00000

Untuk ~enam pllkan seluruh data ~• a~ » ,~====:~~= ~ ~========== ============= ~ ============~

yang ada pada f i le PEGAWAI.OTA Te l<an R£TlJRII

P rog r~m /J ·- ~.
VAR
FILE OF Record_Pega wai ;
flle_Pegawai
STR!IIG[ 10); .1\d,lkalany:~ d ~Ha tcT tnHu vang hc~ .lcla dal.ln 1 file pc rlu d:uhJ h.
BllgianKerja
Oata_Pegawai Record_Pegawa i ; Program 13-5 mcmpcrldntk:w ura lllL,nggantl ticlJ Ko,JcBoxza!IKfl~ ;~
dan C,zji/\Jkok ~i:lri su:lfl: kom pon(·n dalarn tile PEG t\ W AI. DT.~.
BEGIN Pemasub n \·ang dipcrlubn b crup:t N IP dar i d:~ t a va ng ak:ln diubah
CLRSCR; Penyebutan variabel file
Kaiau dJta y:~ng dicui t3k ,JdJ dab!)l file, program .zkan m cmbcnbn
ASSIGN (File_Pegawai, ,PEGAHAI.DTA') ; -pcsan kes.llJh:~n herup:~ ' Da ta tcrs<:but nd.1k ditcmukan ,. Al gorit!T~~
dan nama file )
1-!embuka file PEGP.WAI . DTA nng dipJb! ~L· icngbp n ya adalah scb.tgJi bn ik ut:
RESET ( F i le_Pegawa i );
1. Fi le PEGAW,-\ I.DTA dibuka
WRITEUI ('HIP IIAI~A EAGI AII KE RJA GAJl') ; :2. Mcma sukbn ~ I P chri da ta van g :~k:-tn d1g .onti
WRI TELII (,======= == == ====== === ==== === ===========================· ); 3. Jib d,lt;l y:m:.: dicar i :~da pda f:lc. mak .1:
a O :n a ditampi lbn kc layar
WHILE NOT EOF (File_f'egawa i) 00
Ill Mcm~ s ukkan dat:J pcng/!Jnti (\'Jitu l(,,~ldi.l:;:iod-:c lj.l dan Caid\·-
WITH Oata_Pegawal 00
kok
SEGIII
READ (File_Pegawai, Data_Pegawai);
• Pcrcka m;m da ta kcrnba li kc diskc t
CASE KodeBaglanKerja OF
Jika data tak ada pada file. maka pc ~ an k csab han 'da ta terscbut tak
'1' : BaglanKerja := 'Personalia'; ditcmukan 1' di muncu lkan pada layar .
'2' : BaglanKerja : = 'Keuangan' ; 4. Jika m au mclaku kan perubahan la g i, ulang i m ul ai langkah n omor 2
'3' : BaglanKerja : = 'Pemasaran' ; 5. File PEGA W AI.DT A ditutup
'4' : BaglanKerja : = 'Teknlk' ;
.'5' : BaglanKerja : = 'Produksi ·
,.
PROGRAM CantiData ;
END; { akhlr fo r }
WRITELH (IIIP : II , tlanoa : 21 , BaglanKerja : 12, ' Rp Oaj1Pokoi< :1CI.
(t Con t oh pro gra~

(t untuk •engganti data dari auatu kDMponen dalam r; le


.
' )

•)
)

EHD ; { akh lr with } (. ----------3--·--- 3---------------3--3--------------- . ,


WRITELH ('==~===================================================') :
END ; { akhlr proaedur HenambahData) USES CRT :
TY PE
R~~:cord_Pega~~ti RECORD
BEGfH { pro"graJO uta••
tllP STR!IIGI&J:
HenaapllkanSeauaData ; u... STRI NCI25);
WRITI ( 'Tekan RI!TVRII') ; RI!ADLII KodeBag \a nKerja : CHAR ;

END.
22.5
224
Gaj IPokok LOIIGIIIT
EIIO; Ill¥ (1'1 ,..._,.._.., . l'oot• . "-gawal) ;
Tlpe_flla_Pagawal • FILE OF R.cord_Pagawal; If ~..,...,.., ""' • ..s., _Olear I rHfH
a..c:-w : • ~
PROCEDURE Ta•pllkan_Ko.ponan(VAR D~t~Pagawal: R.cord_Pegawal) ; !110;
II Ita~ "!!!Illi
( Untuk ••na•pllkan data ~ang ada pada Oata_Pagawal ) llfUill
CU!Sa :
a·ecrtt Te~~p ~ l lt.IW\ _._~~' .:•"'-'., t.._g,a.,ai);
~ITH O~ta_Pegawat 00 QOTOr\ \t O, t \ " "' t l l ' L•AfA 8AJlU : • };
BEGI!l OOT~T" t ttl )otill\1'1 ( ' Kodo b6g1a.n ~-"•rja ') ;
POSJ z """' ll~- \ I ,... . , . t.tl poai • l ko 1o. dar I kvraor
{ 6uat keterang~n p~d a l~yar OOTO~ \ ",.\ "",' •t\ ..... Iff ('{lJ P•r~li• (2J ••uang.AI'I') ;
GOTOXY ( 10 , •) ; WRITE ( ' IIIP II! P) . OOTen , .._,., .._, , • tl ,.,.lit ('(J) P-.,...ran [Jj hknlk £•! Pr.,.,....at ' ) ;
GOT OXY(1 0, ~); WRITE('IIAJ!Ia Ua.IU:) ; OOTor• 1•11', 13 , , ,....,., 1 · oajl Poke»< : Rp') ;
GOTOX¥(10, 8) ; WRIT E('Bagl an Karja : ' );
CASt KodeBagtanKerja Of l peaa....,...." ~1• t • ~ · "
'I' W~ITE ('Personalia'); OOTen , ..... . ,
. z. WRITE ( 'K e u ~ngan ·) ; IIEPE.I T

...
.3 .

. 5.
WRITE ( 'Pa•aaaran '};
WRITE ( 'Teknik · };
WRITE ('Produksi ')
l
O.U _ ......,.,.~ v~ ... ._,. .. , ... ""•r)a ::
l.JrifTIL 0.<.-.. t"•••"'~ ' ~r~,h.,.4'•V'.anKerj a l N ( ' t ' .. · ~·J;
WRITE ! ~t"- ,.._..,...... , "'•*",.lt•tJtanKerja);
R E4D ~ £Y;

EUD; GOTOX'f .. "-~•" . '-' '


GOTOXY(IO, 7); WRITf ('Gajl Pokok Rp Gaj i Po kok ); f
f
REAOUW ;tt.ta ,...,_ ..."' 1 •kJ u~o«~);
EIIO:
ErW ; { akhi r proa edur Tamo t 1 k•n_ KOQ\ponen SEE« t • •~ • f'e•••• '· r l\t,·o~(F1le_ P•9Jtwat )· l) ; atur ~) u~
rt ' •
Jlf'RI T£ c. h r•o•••, l\·• ' • P•9a"'ll 1): ,. ......." k .-.o• t 1

I
PROCEDuRE ~enggantiData; [ "l)

COl iS T f~ { t i::.t "•t....u


POS!Sl_AWAL_fllE : 0; t:f~IN
VAR ~
00TO%Y i t J , • l .
Fi le_Pega~~tA t Tlpa_File_Pegaw~l ; -IT£ c t\ata t• r •• ... "'" It .... ,. o I t . .ukan f •)
O~ta_Pegawa1 Record_Pagawai; Dll ;
Jawab.an CHAR;
PosX BYTE : ~-::ry (10 . tS); WIIIIJ , . , .... _,..gut>ah lagl (Y/T)r');
II!P _Olear I 9TRIIIG(8) ; J!EK...AT
K•t eau BOOLEAII; . . _ , : : <UAOMIY
BEGHI Jawa~ IH
t.JIW"T':t. v' r. I • ' ' I ' r ... t.);
ASSIGN (File_Pfl g&wal, 'PEGAWAI.DTA'); llli'ITf (...-c;AISl (J a.,.ban) l 1
RESET (File_Pegawal); l.t<T 1 L :.>cASf 1J ....a>an) a ' T '
RE PEAT !110; ( ..<'~ fr p,.._.,. _,,,.,.wata
ClRSCR ;
GOTOXY(IO, •l: WRITE ('HIF dart data ~ang akan <llgantl : ' ); llEat11 ( ll""ogr- ~
READU< (NIP _Olear I) ; ( baca koooponen da 1•• file ) ~ I O.ta
EI<O.
( Proae• pencarlan d&ta pada file PEOAWAI.DTA

COt)tO'"l •~ tii4H'. 4 •
SH K ( Fila_Pegawat, POSIS!_AWAL_ FlLE ); ( penujuk file ke posiB i ••• I f llo I
t Kate•u : : FALSE;
tllP e._, 1 :ata Yah9 a~ an dtt•"• 1 11ft 'i02
WHILE (NOT EOF(flla.)'agawal)) A/10 (tiOT Ketaau) 00
IIEOIH
N!P
t t8 H t

227
! I .
"'

Naaa All Berdasarkan algoritma di aus, ada dua perintah vang belum dib:thas
8ag1an Karja : Personalia
yaitu menghapus dan mengganti nama file. Untuk keperluan menghapus
GaJ1 Pokok Rp 200000
file, Turbo Pascal menyediabn prosedur bernama Erase, dcngan bentuk :
O.ITA BARU:
ERASE lvartabeLfllel
Kode bagian kerja__: 1 {1) Person..lia {2) Keuangan
(3) P-.,...riln t•J Teknik ( 5) Produka t Pernyata:~n ERASE hanya bisa dikcnakan terhJdap file yang tertutup.
G..&ji Poko..,_ Rp 250000 Jib file scda ng tcrbub, pemanggilan ERASE akan menycbabkan
kcsalahan . Adapun untuk kcperlu,m mcngg anti nama file. Turbo P:~ :-. cJl
"""'U ~n&ng r.Jba't'l 'lagi (Y / T)? T
menycdiakan proscdur Rowm,·, dcngan bcntuk:
Prt•gr.;m 13 - 5.
RENAME lvarlabeUlle. nama___barul
Sdain mcn~ubah data , kcmungkinan pengolahan yang lain bcrupa
p cngh.;pusan tcrhaciJp data vang tidak dipc·rlukan. Untuk kcpcrluan n;i j ika proscJur ini dipanggi!, file yang bcrkait J n dcng an t•ariabef_Jife ak.Jn
sc bcnarnya ada bcbcrapa cara yang bisa ,iipakai. Cara yang di tempuh diganti namanya rncnjadi IIOIIIiLbant . Scpcrti halnyJ Era se. f<malll<' hany.1
pad a Prog ram 13- f1 ad:llah scbagai berikut: bisa dikcnakan tcrhadap fiic yang tcrturu p.

!. File PEGA WAI.DTA dibuka


...,
Variabcl pcngingat AJaPmgh.1p11san dibcri nilai false
PROGRAN
(•
H•pusO~ta;

.
)

-' · \1cmasukkan ~IP dari data yang akan dihapus


~- Jika d:lta yang dicari ada pada tile, maka:
c•
(•
PrograM untuk M&nghapua au~tu k~ponen dal~~ filo * )
.
)

(i). Dat ,l ditamoilkan kl' lavar


. .
(:i) Ji ka d.:; ra mcman g mau dihapus. maka:
USE S CRT;
TYPE

• Fiel.l .'-..IP digami rncnjadi tanda '*' Re c o rd_Peg ~ w~ t = ~ECORC

!liP STRII10[5 J ;
(sebagai randa komponen tcrscbut Jihap us)
u.~~"'.a STR!tiG[B) .
• D:lta direkam kcmbali Mode8agianKerja : CHAR ;
• Variabel AdaPenglzapusan di-set bernilai tn4e GAj i Pokok LOIIGIIIT
Jik:~ data tak ada maka tampilkan pesan kesalahan 'data tak EIIO ;
Ttpe_Ftle_PegAwat :FILE OF Reeord_Pegawat :
ditemukan !'.
VAR
::>. Jika mau melakukan penghapusan lagi, ulangi mulai langbh
Flle_Pegawal Tlpe_Ft le_Pegawal;
nomor 3 Oat&_Pegawat Record_Pe~wai ;

6. Jika variabel AdaPenghapusan bernilai True, maka:


• · Menciptakan file penampung data sementara b'trnama TEM-
PORER . DTA
(• aiatpkan dt aint : proaedur Taapilkan_ko.~n
~ang Ada pada prograM ~ntiOata .)

PROCEDURE Menghapu.Oats ;
• Seluruh komponen pada PEGAWAI.DTA yang NIP-nya
tidak berupa tanda '*' disalin ke file TEMPORER.DTA COII~T

• File PEGAWt\I.DTA ·dan TEMPORER.DTA diturup POSISI_AWAL_FILE : 0 ;


VAR
• Fil e PEGA WAI.DTA dihapus .
F i le_Peg.awa i T i pii_F t l•_Peqaw • t ;
• File TEMPORER. DT:\ diganti namanya menjadi PEGA- )(ete•u.
WAI.DTA AdaPenghapusan : BOOLEAN;
jika varia bel AdaPengapusan bernilai False, maka file PEGA WAl. Jawaban CHAR ;
HIP_D1car1 STRIIIQ(O);
DTA ditutup

"">~ 229
.,.

SHK l"le_Peg&wal, POSISI_AWAL_fllf); { penujuk file ke poalel a .. l file)


p~EOURE Prosea_Pangnaous&n (VAR Flla_Peg&wa l: Tlpe_File_Pegawal);
Ket..u :• FALSE;
~ST ~jt~llf (HOT £Of (F1la_Pegawal) l NIO (HOT ~eteltU) DO
~ . . aFilaSe. .ntara: 'TE~PORER.DT~'; BEGIN
VAR RfAD (File_Pegawal, Data_Pe~wal);
filePro,..,. Tlpa_File_Pegawal; If Dato_Peg•wa I . HIP : HIP _Olear i THEil
Oata_Pegawa• : Record_Pegawai ; Keteau : • TRUE
Ut~rRecord WOIID; END;

eEGIN IF Kete•u Tt<EH


CUISC~ ; BEGIN
WRITELH ( ' lunggu ... S•><l&r\9 l!lehku~;on. pensh•P'-''"""· '); CLRSCR ;
1 c lpt;o~an f il a a.-.ntar;o ) Taapllkan_~~ponen (Data_P ag&wal) ;
ASSIGtl IFilePro,..s, 'TENPORE~ . DTA') ; GOTOXY (10, 9); WRITE ('Data ini dihAoua (Y/T)7 ' ) ;
REWRITE ( f ll eProeee); REPEAT
Jawab•n := READKEY
{ proaes penyAl;nan ~·file soaentara } UtlliL Jawaban Ill [ •y·, 'y ', 'T ', ' t ' ) :
SEEK (file_Pogawol, POS ISl_AWAL_fi LE); IF UPCASE {JawabAn) : 'Y' THEil
FOR tlorR.cord :: 1 TO FILESIZE(f l le_"89~ "&1 ) DO BEGIN
BEGIN Oat•_P•gawa1.UIP ;: ' t ' : tAnd~l :~IP d~ ngA n blntanq
AEAO { Ftle_Pega~a i, O•t•_P•ga~ai };
j ika. tll P buk•n bf!.ruo• bintan g
If C& ta _Pegawai.IIIP <> •• • Tt<EII ( atur ke~ b •li ~ nun juk file ke poat•' ~a-ponen ditemuk &n
•Aka d\ sal•n ~• f11~ ~ ~n t ar a
WRITE (FileProsea, Oat&_Pegawa \) SHK (F1le_Peg&.,oi, fiLE~(fi l•_Pesa wAi )-1);
ELSE WRITE (file_Pega•ai, Ooto_PegawAI); ( re k&JO k.,.ba ll
W~ITf ('Ka.ponon ~or FILEP OS (filo_Pegawal)- 1 ,
AdAPengh•pu~n : = TRUE
' dihapus. ') END
EIID ; EtlD
ELSE I ti dak ket&•u )
••nvtuo file ) EEGIII
CLOSE (Fila_Pegawai); GOTOXY ( 10 , 8) :
CLOSE (FileProses); WRITELH ''0.-ta tak dite•ukan ! ·)
£110 :
E~ASE (flle_Pegawal);
ASSIGII (FlleProMs, tlaooaFlloSeJOentar&); QOTOXY (10, 9); CLREOL;
REIIAUE If lleProMe, 'PEGAWAI. OT A' ) ; WRITE ('Mau ••nghapuo lagi IY/T)? ');
WRITELH ( 'Penghapu..,n Mle..,l . '); REPEAT
END ; I akhlr pi'OMdur PrOMsPenghapU...n Jowaban : : REAOKEY
UNTIL Jowoban Ill [ 'Y', 'y', ' l ' , 't 'l ;
BEGIN I awol pi'OMdur Mengh&pueData ) UNTIL UPCASf(Jawaban) : 'T';

I b\Jka file J { Prose• akhl r )


AS~IIGtl(flle_Pegawal, 'PEGAWAI.DTA'l; IF A<laPengh&pu.an THEil
Proeee_Pengn.puaan (File_Pega.,al)
RESET lflle_Pegawal); EL!If
CLOSE (File_Pega.,ai)
AdaPenghapuaan : = FALSE ;
~EPEAT !NO ; { a khtr pro. . dur NenghApu•O• ta
CLR!ICR;
GOlGXY (10, 4) ; WRITE {'NIP dart dala ya"g akan dlhapua : ');
BfGIII 1 Prograa utaea }
RE.OLN IHIP_Dlcarl); 14enghapu.Oa ta
!NO.
I Prose• pencarlan data pad& fila PEGAWAJ . DTA)

231
~1 1\
.

cof'ltoh 8kHkuw1:
Misalnya saja file PEGA \\' Al r' r.-\ berisi 3 buah komponc 11 :H ,
fliP d&rl data y;mg akan dlh&pu• : 119811
.
d 1per ~
l'1h at k an pada c.amlur !..:>' - -J K a1au fil1 e pomter
. 11
sc d ang 111q I ' ·'.
'llill•d
o~ta tak dite•ukan komponen nomor 1, m.lk.l : ·
~au ~nghapus 1ag1 (Y/T)? Y
NIP dar1 data yang akan dihapus : 118961
TRUNCATE IFife_Pegawall :
HIP 118981
tliii!J.il 0...!
aka n m cny ebab k.1n 1-.om:•,•ncn "IlLii norno r 1 dJn sctc ru~nv .• d.;,, 1 ,
B ~9~~ n Kerj a : KeuAngan kan .
Gaj I Pokok Rp 150000

Data lnl dihapus (Y ! T)? y


Xlll.2 FILE TEKS
~au ••nghapu" lag! {Y/ T)? T
File reks mcrupak.1n jcn:, tile \ .Il l~ ha;1ya bisa diakses sec:H.I . , , ,
Tunggu ... 5sdang melakukAn penghApusan. saj:t. Peng.1kse~.11i sn.n:. .tc.1k :,.!.1k dimungkinkan . Patb til , .. ;
Kompon~n ~r 1 dihap~a. rers u ~ Ui l ata~ seju nd .1h l'.HI>. , ·.;u~-·n sc tiap baris merup:1 kan ,1 ,,
Se1•a.ai. karaktcr. Setiap l'.1ri~ liiJ :,h in .1.-n ~:.tn suJ tu tanda akhir hari~ (,j, ' ·
Program 13-6. arau md ~r line). Di5,+ .. l'!-.. .11: , ,. , 1.1p baris bclum mcm P'"' \.
brJktcr vang s.111 1:1. nu,;.l til; "·f....; hanya bisa di:tkscs seCJr.1 \• ,
File ya ng dapat diakses seca ra a.:ak (file bertipe dan fi le tak-bcrti pt") Suatu file reb lllt'l l:f'\1 11\".:t ,1r'Jt yakni isinya bis.1 Jdd 1••
dilengkapi dengan fasilitas untuk menghapus seluruh komponcn mulai mcngg um bn pn 1nt.d; J' YI'i "' suatu file teks bis:J j ug .1 ,,
posisi pointer file sampai kom ponen yang terakhir dalam tile. bcruFJ bahka n b1sa died1t stY.J:.I l.n··>'"'~ dengan m en ggu mbn
prosed ur Tnmcate. B c ntuk prosedur in i: (sc perri Sit!cKi,.t. 11 ·,,,,;_-.::.J • .< . •:u niiror Tu rbo Pasca l).

TRUNCATE lvarlabeUIIel Pendeflnlslan Fil e Teks


Fi :~ te ks Jid efin isi b 1< ,Ln~;·''' lll t: nggunakan kara-ttrc:td ."'' ;,
Pemanggilan prosedur ini harus dilakukan terhadap file yang tcrhub. Scb:;gai com oh:

Sebelum TRUNCATE : I VAR


Flle_Masukan: TEXT:

yang mendeklarasikan \·ari,1kl bcrnama Fi/c_Afasukan scb-'Y.·


118960 BADU SIDARMINTO 4 400XXl
file bertipc file tcks .

Ipointer file
118962
118963
AU
ISNAENI WURYANTO
1
4
250000
400XXl

I
I

i
I
Dalam Turbo Pascal tcrdJt'·lt Jua buah variabel file StJII <.lv'
Input dan O utpllt. Vari.1bcl tile l11p11t mcrupakan file hany .• ._.__ ,
bcrka itan dengan fil e nusubn ,t:mdar sistem operasi (bia s.Ju ,,
papan-kctik), sctl.ll1gkan v:m .•h·l file Output mcrupakan fil, , .
I
Sesudah TRUNCATE: yang berkaitan dengan tile hl uaran standar sistem oper.• ··
I berupa layar). Kcdua v:tri.tlwl file ini sccara otomatis .J~ ~
I
I
l

lji8960 I BADU SIDARMINTO I 4 I 4CXXXXJ I sebclu m progr.tm muLti di c!,."·kusi dcngan bcnruk

pointer file ASSIGN llnput, " ); RESET !lnputl


ASSIGN !Output, "); REWRITE IOUII)Utl;

Gam bar 13 - '1. Pro~td"r TRUNCATE dan dengan sendirinya akar1 ,htutup ketika program berak h,, r

"'"1"""l
untuk variabel file Input atau Output, vari:1bd ini boleh tidak dituliskan Contoh WRITELN:
pada pernyataan-pernyataan yang berkaitan dengannya. Misalnya:
Y.'RITELN !varlabeLfllel;
WRITE !Output, iURBO PASCAL'!;
dipakai untuk menuliskan tanda akhir-baris ke ,l~l;~m file.
cukup dirulis dengan

WRITE IThRaO PASCAL');


[ Sebelum WRITELN sesudah
o peras! File ieks ' I'
WRITELN lvariJbel tlinl
Scperti halnya pada file bc rtipe, opcrasi pada file tcks diawali dengan
pcnycbu ~an variabel file Jan nama file , serta diikuti den gan perintah I! P j Ai s j c j AIL l [Q)\D J c I A~j -~
untuk membuka fi!e. Khu sus un tuk perintah membuka file. ada --- - ---' f
pcrbedaan terhada p file benipe·. Pada file teks : I f ~

I
Pointer file
Rn o dikhususkan unt uk membuka file yang isinya mau dibaca. j Pointer file I Tana.. ·•~ hlr · barls _j
Pen gg:m tia n isi file tid ak dimungkinkan. I
- -- ~-
D isamping Reset dan Rewnre, terdapat paintah Append yang I
G.Jmb.Jr 13-11 . WRITELN (variabrLfilrj pad" fiir ,,~, ,
fungs in va untuk membuka file yang isinya rnau ditarnbah.

Bcntuk rrosedur Appe11d: Cont oh lain dar i pernyataan WRIT EL N :

APPEND ivariaoeLflle) WRITELN (variabeUlle , Stl;


Sam a hdl::ya pa d a file bcrtipe. file teks ditutup de ngan m cmanggil
deng an S; misaln ya bc rtipc ~t ring, akan n : n. yd >jl. ~ .•n s c~ u <~ar. menul is-
prosed ur CL O SE . k.m.isi nri:~bel St, tand a ak hi r- bar is (ro/11 :H .l ll ,.,,, .. f 1111 c j dit.Jmbahbn ke
Untuk ~eperl uan mcrckam data, proscdur yang bisa dipakai yaitu dalam fik.
Write dan Writeln.

5ebelum WRITELN 'Sesudah


Contoh WRITE:
WRITELN (Varl<l~ l tilt. >tl
WRITE !variabeLflle. Karalcterl;
IpI A Is Ic IA I LT•l [P IA I5 Ic1~L~J ·l~LEJ! L~
dengan Karakter bertipe char, akan menycbabkan isi Karakter disimpan
pada file yang berkaitan dengan variabeLfile. Pointer flle f Polr;~r 111~ f
St = 'ADA'
Sebelum WRITE sesudah
WRITE lvarlabeLflle. Karalcterl Garnbar tJ - 11. WRITELN (variabtLJih, St) ,pada Jilt td.,

I p I Al s I c I A] [ PIAislciAitJ ,..:f
Untuk keperluan memb:~ca d:~ta dari fi k '', : rerd:•pJt du:~ buah
Pointer file 1 Pointer flle r fasilitas berupa R ead dan Readln .

Karalcter = 'L' Contoh READ :

Garnbar 11-10. WRITE pau Jilt ttlu READ lvarlabeLflle, Karalcterl ;

234
235
!':

dwgan variabel Karakter bcrtipe char, merupakan inscruksi l!_~tuk


rnembaca sebuah karakcer dari file yang berkaitan dengan variabeLfile 5ebelum READLN sesudah
dan ditcmpatkan ke variabcl Karakter.
READLN (VariabeLflle. Stl

IpIA Is Ic I"-IL 1·1 A fo!AT~ [PTATTfT[ ATL i • IA ID IA I·]


sesuclah t
seoelum READ

~I s Ic liliJ~E.li1~
READ !var!abeUlle. !<arakten
Ip IA i s Ic IA I L I· IATi l l St = ?
' Pointer file

St = 'SCAL'
Pointer file

•Poin ter file


1

Kmkter = ?
'Pointer file

Karakter = 'A'
Gambar 13- 15. READLN (•·ariuhri_J ilr, S t) P"J" filr ttlt.<
I
i
I

Gumb,r 13 - 13. READ pudo Jilr trkJ

C on :oh RE1\ DLN:


Contoh program yang mclibatkan fik tcks dap :lt Ji!1ha t pada ProF.r.1111
13-7. Program ini dip:1bi untuk mcnvimpa11 dua b uah pcrinuh 1)( l· ,
(berup.1 ECHO OFF d an I l ATE) kc dalam tile bcrnJm a A UTOL\ 1 <
.l3 AT.
II
RtADLN !variabeLfi lel:
PROGRAM Slmp•nh •. s;
(. --- --- ------ ---- -- --- --- --
( * Contoh f il e oe,-tipe TE.X T (mode ASCII).
..
• )
dipakai ·unruk m cnggcsn pointer file kc rem pat sesudah tanda akhir- (' Oigunakan unt uk men yi:~~tp•n peri., t ah DOS • )
b.m s Data pada fi le tnuhi posis; pointer tile scmula s::~mp1i unda akhir- (*ECHO OFF l DATE p•da t;lo AG TD EXEC. BAT • )

bJri s akan diabaikan . t• - - ------ - ·- - - - •l

USES CRT;
VAR
Sebelum READLN sesuclah FjloTe ks TEXT ;

READLN !variabeLftlel
Sf.PI~I

ip IA Is Ic IA I LT-.-TAJOIAIJ jPIAi siciAILI• IAJojA)•J CLRSCR ;

t
'
Pointer file Pointer file
ASSIGII (Fileleks,
REWRITE (Fileleks);
'AUT OD EC . 8 AT" );
( buk• d an c;pto•an file

WRITE UI (FileTeks, 'ECHO OfF·) ; rekaM l8ks : ECHO OFf


Gam bar 13 - 14. READL N pado Jilr trkJ WRITELN (FtloTeks, 'DATE") ; rek•m teks : DATE
CLOSE (FiloT o ke); tutup rile

Scdangkan: WRITELII ('File AUTOEXtC.BAT sudah terclpto !") ;


READUI
READLN !varlabeLflle, Stl; END.

clcngan St misalnya bcrtipe string. merupakan instruksi untuk membJO


Program 13 - 7.
scluruh karakter mula i posisi pointer file sampai sebclum tanda aklur-
baris, dan ditempatkan ke variabel St. Sedangkan setelah pembac;a.lll. Dalam prompt, perintah DOS ya ng dipakai untuk menampdk. 111 1 ~,
pointer akan ditempatkan sesudah tanda akhir-baris . file AUTOEXEC.BAT bcrupa :

2.1t'
-~
A> TYPE AUTOEXEC.BAT ..J PROORAN
(•
~ahTek a ;

------------------------------------- . )

...
Melalui program, isi file AUTOEXEC.BAT dapat ditampilkan dengan r• Conloh file bertipe "llT I~ ASCII) . t)
t• Ofvunak•n untuk . .fte..,.,.an )
menganggapnya sebagai file teks, sebagaimana disajikan pada Program t• P4rintah DOS: TtHf )
13-8. Pada program ini. fungsi Eof (sama halnya pada file bertipe)
dipakai untuk memeriksa posisi pointer file sedang berada pada tanda
akhir-file a tau tidak.
t•
(.
!>&cla fl 1e AUTOI!XfC . U T
. )
)

tnr~ CRT;
VIJ•
PROGR~ B~ caleka;
r1 ' •'• "• TC~T.
c• ---------- ------ --- -- --- •)
(• Oigunakan untuk
(.
~~b•c• ia; file AUTOEXEC .BA T •)
. )
8f 'Jl ,,
~~~R;

USE3 CRT;
, •• , IQrl( f llelek• . . A UTC~ \fC. BAT') ;
\IP.P
lf-1- t iiO (fileTeka}:
F i 1eTekQ TEXT: buka f il e IJr•ta~~ 1. ... ... , . , .,..
1

D~taTeka STRH i G ;
. .n.,.bah k •fl t•"'.,
""l lflll (FileT•••· r:--~e · }; rek•• tt~t._ • r I14t
r.ur-t (FileToka}; tutuo f i h;
BEGIN
_.,,..!": f l ll (' Data ta .. t>.t.'"""'"' •tJdah di•l'"P.ol n oad• t t ' • 1\Uilu , ,,
CLRSCR ;
" ' ;.:;L U ; •• r ! ' ) ;
[J.ff/
ASSIGII (F i 1-Teka, ' .OUT O~XEC . BAT' );
RESET (F i le hka); Duka fi 1• vntuk op•rae1 p . .baca.a.n

Proz r~"' IJ 9.
WHILE tiOT EOf(FihTeka) DC bac& ts ! file O&n t~pi 1k an
BEG III ka layar, aa l •~• o~n un juk fl ) e
Kai;, ~J v:mu ia file AL'!,) EXEC.BAT bc m1
READUI (Fi1oT .. ka, Datahka): t1dak berad• pad~ akh1r f11e
W~ITELH (OataT•ka):
EIIO; EO'f'J 'JFF
or<:
CLOSE (Fil•T•ka); I tutup file }
READLH; mab --:cng an diekscku.s in ya Program 13-<J "k
1 ,, j
1. ilp fi J .. I(ii
END.

E~ OFF
Contoh ekaekuai
DA'n
n~
EOiO Off
DATE
F;, tt . • ·.a~ la in untuk kcpcrluan pengolahan fdr: 1 .1
SetTo:.rBu(( d an Flush scrtJ fungsi Eor ')I
~ ', ·tj'·' I· ·•pa prosedur
Eoln' <) t'r',.-
Program 13-8. ' '• 4 n SeekEvln.

SetTe".c.Buf
Proser.: • • l!li di pakai uncuk menugaskan suar!J V•·-" .
Seperti telah disebutkan di depan. file teks dilengkapi perintah unnli kelu ;;~ ...- .w.tuk su:1tu fi k ccks . Bemuk pro~v;. 11 •• ·ng masuk:1n /
membuka file dengan Append, yang memungkinkan menambahkan 0.0
ke dalam file yang sudah ada isinya. Contoh penggunaan A?Frti Se"'"' . •.Jf !varlabeUIIe. vanabeLpenampungJ
·~ ditunjukkan pada Program 13 - 9, yang dipakai untuk menambahbtl
perintah TIME ke dalam file AUTOEXEC.BAT. ata ,

239
\

setrextBuf tvarlabeLflle, vartabeLpenampung, ukuran_penampungl Dipakai uncuk mengoson&~an pcnamp ~J,, q e~l ~. ~('{'.\ ()it1'1\'-~'' ~ ·c: ,__ ,,.
ini menjarnin seluruh karakter dalam pcrp,..,. '{uil.~ ~ fiq ,~ , Y:t '\\,h- "" ·. - ·~
]3encuk pertama menyat~kan bahwa seluruh ruang d;.1lam va riabel....penarn- WRITELN) akan dimasukkan ke da1am filt 1\o\17 i'-\ Y"' ,--. H '\-If.... 'J ""''' "~' 'j ·
pi4ng digunakan sebaga1 penampung masukan/keluaran bag1 file tek s Flush pcrlu dibcrikan jika di dalam ~u~t1gg 1 la~ prose ur
ang berkaitan dengan variabeLfile. Pada bentuk kedua, ukuran_penarn. se b aga1. parameter W RITE atau WRITELN te, ' a w,UTE . ata u
Y,ng (bertipe word) dipakai untuk menyatakan ukuran (bagian) d~ri . d
atau WR[ 1 ELN. Pa a conto Program l.l-10,t h · tak . dnutup k .
~ariJbt-Lfile yang dipakai sebagai pcnampung m asubn/kcluar:m bagi file . . . :1 · 'lk . d
mcnJamm ru 11s.1n l 1ta mp1 an sesua1 t'llf!.-'11 yans .
dl)!:lliJa
.. IT[
· an
'Saldo bulan lalu :' dJn 'saldo bulau kini :' ,Ji rulis Jalan \v ~ 1 .-
rck s.
Prnscdur SetTextBuf biasa digunJkan umuk _mcmpcrcc pat proses s•: d Jn g k·an 111.I a;. u,lll)!. d 1tamp1
' 'lk an d atam
. ,,,.,, J :lJn Y t.lt'll
1 I t ll lltuk
..
pcn ga kscsan file, rcrurama jika dat a yang abn dipr oscs s,mga t banyak '1
me 111ar pcnguu I1 / ·.,liS I1, pcrnyataan 1111 . , I.1par .. 1''t1'""
1 .I P·" l 11I , ,111
,
Caran ya dcngan mcmpcrbesar pcnampung yang dig un akan sebagai 11
.1pa yang tcrjJdi; ' l;
rcnampung pcmrosesan file . Sccara incernal (kalau SerTcxrBuf ridak
FROGRAH Contoh_F 1uot1 ;
discrrakan ), ukuran pcn ampung masukan / kciu:uan adaiJh ~cbcsa r 128
bne . Sup a ya pengakscs:m dilakukan dengan ccpat. fX'na m pu n g van~ USES CRT :
dihcr ikan harus lcbih bcsar dari pcnampung intcrn .d. . "
FUIICTIOU VioeoTerbJ11ik (lH l~i : REA"LJ : STR JII lf.
COfiST
seek Eof
KOSOIIG: I 0 0:
r ungsl ini mcmpunyai bcntuk:
SPAS! = 0 3Z,
seei<Eof lvar!abeUIIel
BE G !II
FLUSH (Output);
Kl·Qvn;;an nya sJnla dcng :m timgs1 Eof Perb cdaan d cn "an !:1.1_( fung>i
TEXTATTR :o 170 ; { vtdeo terbal l ~ }
.)okE4scbcium mcmcriksa posisi pointer fik. :~kan nh·r,~Jb.J:bn D n~. 'O'IQ!T[ ( 'Rp . ', IIi la>:8:2, ',-');
akhir- buis, tab ( -.f-9) dan spasi ( * 32) . TEX TATTR : : S07 ; { video nor~a1
VideoTerbo11lik(O) : = KOSOUG ( k elu•r~ n berupa s tr;nq ~· oaonq )
EII D; { ~k hir tungot VtdeoTerbaltk
Eoln
Fun gsi Eo/11 dipakai uncuk mcmcriksa pointer file scd ang ,ncnunJul:
BEGIN { orogr,aa utama }
tand a akhir-baris atau tid ak . Hasil true (bcnar) jib pointer sedJng CLRSCR ;
mcnunjuk tanda akhir-baris . Bcntuk fungsi: WRITEUI (' S.aldo Bul.an lalu Videohrbolt k (200000 ));
WRITELN ('Sol do Bolan klnt , VtdeoTerbol lk (250000)) :
Eoln lvariabeUllel REAOLN
END.
seekEoln
Bcntuk fungsi me Contoh eksekus t :

seekEol tvariabeLfilel
Soldo bulan lalu tp:!OOOOO;•
Soldo bulan klnt tp :l 50000;o
Kc gunaan sama dcngan fun gsi Eoln . Perbedaannya. fungsi ini abn
Program 13- 10.
mcn gaba ikan spasi (#32) dan tab '(11''9) sebelum memcriksa posisi roinr~
tile. Co nt oh penggunaan pcrintah HEAl>. HEADLN, \VIUT! · . \\ i(l
TELN , EOLN dan SETTE XTBU F dJp.,t ddi lnt p td .t P ro~rJi n 1.1 -l!.
Fl ush Prog ram ini dipab1 unruk mcngganti du.1 buah spa~ i .1t.1L1 khd; \'~ 11 !-!
Bent u k prosedur 1111 : bercurutan mcnjadi ~cbuah spasi saja. Oat.• Jibac:t d.m tik TEKS.'i. P:\S
Flush !varlabeUllel dan hasil dirckam pada file TEKSS . HSL

24( 1 141
ELS E ( karaktar buk;on apui )
aEOlN
~ ...,_,.speal;
c• ----~-------------------------------------------- •>
Ada3 p aai :: FALSE;

CG"td> ~ READ, IIEADLH, WRITE , WRITELH o) WRITE (FileTekaKelu.r a n, K~rakter)

E'ID
1 _,. EOLM pada fila bertipe TEKS.
:. . 'I
•'paJ<A' ..,tul< -napia apaal berturutan •)
EIIO ;

(f ,.,.. jualahnY• labih darl aatu pac!a fila.


.,
t)
READLU (F i lelekstlasuk .t.n); ( ke pos;si aeaudah tan~ akhir-baria

..,
WRlTE LH C F~leT•ksKe 1 u~ran) ; { menul;5 t~ nd a & ~hir- bar is
•I Et ~O; { akh i r ~rosedur P ro se~Oat .t. Per Baria }
c•(f pll• y- dib&C& : TEKS5.PAS (progr- inl)
)
t• TE~5.HSL
,. -----------------------------------------
filA haall :

BEGIN f Progr>&rJ~ utama


CLRSCR ;
ulll c;~~T; WR! TEL~ ( 'T u nggu . . . ');
tyPE ASSIGN (FileT e k~lasukan, l:a MAF i l et-ta•uk~ n);
Strin9fila = STRIHG(14) ;
SETT EX TBUF (f i l eTekst.ta.suk iln, Penill'tpun~F l l • ); o~rbes .. r pen••pung file
CIJIIIT
~fllaMAaukan : Stringfila
'lEKS~. PAS'; RESET (Fi leTeksllosuk•n); bu kil file untuk dibil c •
'TEK55 . HSL'; ASSIGtl {Fi leTekslc:8lu~ran, lla.M<Jf I leKeluaran} ;
~filaKaluaran : StringFila
SETTEXTBUF (fileT~ks~elu ~ran, P•n~mpungfile) ;

v#IJ REWP.ITE {Fi lflleksKeluar•n); { buk A dan cipt&kiln file }


filaTak~•vkan ,
fllaTakaKaluaran TEXT;
10 ~110 8yta ) WHILE IIOT fOf (f ll•l o>a><esuk• n) DO
ARR~Y(1 .• 10240) OF BYTE ;
,.._.,gFila Pr oseg0ati1Per 6•r1a {FtleTek~~~eukan . FileTe~skeluar .. n) ;
CLOSE (f11eTt~ksl.ti19ukan);
Pti(ICEOURE ProaaaOat&Par6arh (V~R f ll"""auk~m , CLOSE (Fil eT~ kvK el uaran):
filaKalueran : HXT);
WRITE ( "Sel9Soi .. ') ;
~E.<IO UI
1 p,..,..c~Ur untuk - c a data par barle pada fila TEKS5 .P A3. EIIO .
Jtka terdapat lebih dari aatu karakter &P&ei yang O.rturut~n
akan dlgantl . .njad1 aatu apaai aaja .
Naail dirak . . ka fila TEKS5 . H5L Pro~r~m 13 - 11 .

CQIIST
Sf'ASI = •32 ; { karaktar apaal )
Kalau sem ula fik TEKS5.PAS berisi:
VIlli
llaraktar CHAR;
Ad&Spa&l BOOLEAN; (• •)
I• Contoh penggunaan READ, READLN, WRITE, WRITELN •)
I• dan EOLN pada file bertlpe TEKS . •)

ROIM
Ad&Spa•i :: FALSE; dan seterusnva. maka file TEKSS.HSL akan berlsl:
MHILE HOT EOLH (FilaTakaMaaukan) 00
IEOIH (• •)
READ (FilaTakaNaaukan, Karaktar) ; I• Contoh penggunaan READ, READLN. WRITE, WRITELN •)
IF Karaktar = SPASI THEN I• dan EOLN pada file bertlpe TEKS. •)
IIEQIH
If HOT AdaSpa•i THEN dan seterusnva .
IE GIN Sebu:~h co.n toh lagi tcntang file rcks d:~pat dilihat pada Program
WRITE (FilaTak•Ka1uaran, SPASI) ;
Ada5pae1 : • TRUE
13-12. Pada program ini, data yang dibaca merupakan data bilangan.
END ~ta bilangan dibaca dari file bernama FILEBIL.DT A, berisi:
END
243
3000.00 2300.23 Xllt3 OPERAS! PERANn DOS SEBAGAI FILE
256.00 302.45
400.56 381 .00 Perangkat keras eksternal seperti keyboard {papan-kecik), printer, layar
1204.00 2000.00
(monitor) dikenal scbagai peranti (deJ!ice), baik bagi sistem operasi DOS
Data tersebut dapat dibuat secara langsung dengan men ggunakan maupun Turbo Pascal. Dalam Turbo Pascal, suatu pcran ti dapat
d iperlakukan scpe rti halnya suatu file, dalam hal ini yJitu sebagai file
01 isaln va ed itor Turbo Pascal. ·
tcks .

.
PROGRIII.I BacaB i Iangan;
,. -- ------ -------- -
(+ Contoh program untuk )
-------- •) i Perantl LPT1, LPT2 dan LPT3
Mcnccta k kc printer dap :tt dilJkubn dc ng an m cmk nbn n a m:~ file
c• membaca filB teks yang beri91 data bi Ia ng a n • )
(. ..
)
)
bcrupa LPT I. Sch:tgai co ntoh di tunj ukkan paciJ l'ro g ram 13-13.
Progra m ini dipakai untuk mcn cct.d.; tu!i.sa n 'M (· ncob.~ PHiNTEH'.

I
(+ File da ta: FILEBIL.DTA
(. -- -- ------- •) PPOGRAH Pi r·antiPrinter;

USES CRT;
VA R
F i leData
Bilanganl , Bilangan2, Selisih
TE XT;
REA L;
l
t'
VA R
lst: TEXT;

BEG III
ASSIGII ( Lst, 'L PT 1 ') ;
BE Gill
REWRlTE(Lst);
CLRSCI';
ASSIGtl (fil eGata , 'FI LEB I L.OTA'); WRITELII (Lst. 'HEIICOBA P RI!ITER ' l; ce t a~ ke printer )
RESET ( F ileOa.ta); CL OSE (lst };
EIID.
~IHI LE tiOT EOF (Fi leOata) 00
BEG HI
REAOUI (FileOata, Bi langanl. Bi langan2); Proxram 1J - JJ .
Sel i sih :~ ABS(Bilangan1-Bilangan2) ;
WRITEUI (Bi langant : 10 : 2, Bi langan2 : 10 : 2, Sal; 9ih: 10 : 2 )
EtiD; Disamping mcnggunakan LPT l, bisa juga menggunabn nama f:lc
READLII berupa PRN, yang idcntik deng;m LPTl.
EIIO . Scandainya komputer dihubungkan dcngan bcbcrapa printe r, maka
nama lain ya ng bisa digunakan yaitu:
Contoh e ks e ku si :
LPT2 : m~nyatakan printer kcdua
Data 1 Data 2 Sel isih LPTJ: menyatakan printer kc ti g~

3000.00 2300.23 699.77 Perantl CON


256 . 00 302.45 46.45 Pcranti CON menyatakan konsol. Yang dimak sud kan pcrl nti k.onso l
400 . 56 381.00 19.56 !cons<'le) yaitu berupa layar atau papan-kctik . Layar scbagai pcrabtan
1204 . 00 2000.00 796 . 00 hluar ,m dan papan-kctik scbagai pcranti mJ.suka n. Program 13-14
tncmpcrlihatkan conto h sedcrhana peng g unaan perantt CON , untuk
Program 1J - ll. tncnampilkan tulisan 'Mencoba CO N' pada layar.

244
245
pf!OGRAI~ Pi rant i l<onao 1 : Program 13-16 memperlihatkan sebuah contoh program yang hi~
dipa.kai untuk menyalin sebarang file reks (file dengan mode ASCll) kc
USES CRT; file ya ng lain, mencetak kc primer ataupun menampilkannya ke layar.
VAR
PROGR~ Pl11~takan;
Konsol : TEXT;
(.

r• Con toh progr&Jl untu k •vncetAk ts i


----------- ----
qu• tu
.,
fi l e t ek') • )
sEGIII (' ke : - disket
'l
CLRSCR ;
ASSIGrt (l<onsol, 'COtl'); ,.
(' - printer
h · y ll r
atAu ' )
')

REI~R ITE (l<onsol);


(.
---- ----- ------- ----- --- •)

WRITE (l<onsol, 'MEHCOBA COli') ; { cetak ke 1ayar }


US ES CRT ;
CLOSE ( Konsol); TY PE
READ LN ; hrln904 : STR itiG[6 4) ;
VAR
END .
f 1 leflaouk..an,
f i l•Kelua,.-an r nr :
Program tJ - 14.
U&Aa.F i l eH.a.t- u~ •n,

Na••F i leKeluaran : 3tri,lg 64 ;


perantl COM1 dan COM2
Peranti COMl dan COM2 mcnyatakan p o rt kom unikasi yang bcrsifat
serial. Khusus untuk COMl bi sa diganti dcngan AUX . PROCEDURE Pi lihan (VA ~ U."lao~.a Fi1a 1, u-. ," i.F ~l .-.2 : Stringfi,);

M•~A9Ukkan n~~• f1le yang A~an d~ba c a


perantl NUL dan ~nen tuka n pil1h•n ke luaran
Nama file bcrupa NUL aka n mengab:tikan semua opcrasi pcnulisan
ataupun pembacaan. Pada Program 13-15, Sekalipun tcrdapat pcrintah VAR
pcrnyataa n WRITE (f, 'MENCOBA NUL') tidak ada scs uaru hasil apa TOMbolPillhan: CHA R

pun . BfGIH
CLRSCR ;
GOTOXY (15, 4) ; WRITE ('ll~on& fila yong a k•n Olb• c a : ');
PROGRAM TidakCetak; REAOLH (HaaaF11•1J;
OOTOXY (15, 0) ; WRITE ('Oicetak k a l& y ar, Printer otau Oi aket (l, P, 0)? ' );
REPEAT
VAR
To-bolPillhan : = UPCASE (REAOK EY)
f : TEXT; •• Uti TIL Tooobo 1 PI 1 I han Ill I ' l ' , 'P' , ' D' ] ;
WRITE (T001bolP1llhan];

BEGIN
CASE Ta.bo1Pillhan OF
ASSIGN (f, 'NUL');
' l' rt. .aF11e2:: 'COli' ;
REWRITE (f) ; •p• Huaf':_I.J e2 :: 'LPT1' :
WRITE (f , 't-4EtiCOBA IIUL'); ' 0' BEGIII
CLOSE (f) ; GOTOXY ( 15, 8) ;

REAOLN; WRITE ( 'tl••• file untuk ••ny i lll'l o •n ea. lln.an : ');
READLN (Na-FI la2)
END . ENO
EIID ; I akhlr ca . . I
Program 1)-15. END ; ( a khlr pro~edu r Pl11han ]

246 247
~

p~OCEDURE Cetak (VAA File~aukan, File~e1uaran : TEXT; ASSIGN (FIIeKeluaran. NamaFIIe2l


VAR Na•afile1, H. . aFile2: String84);
pcrlu dimodifikasi mcnj ad i:
...,.baca hi file U&ll&file1
~" ... nc.tak k• file u..afile2 IF NamaFIIe2='CON' THEN
ASSIGNCRT !FileKeluaran l
VAR ELSE
OataPerBaris ST~liiG;
ASSIGN !F!IeKeluaran. NamaFIIe2l:
Buffer ARRAY[1 . . 10240) OF BYTE ; { 10 KB)

BE G !II Xlll.4 MENCCUNAKAN UNIT PRINTER UNTUK MENCETAK KE PRINTER


CLRSCR;
wR !TELII ( "Tunggu. Seelang 10encetak !" ) ; L nwJ... lll CiliUd ah k.l n pcih'c'Llk.!n kc pr r: HL"t. 1t:rho l'.hol Il1L'nynli.1k.1n
u ni t b,: rnam :t printer . ll.d .tn l ~::;i t 1111 p n:lfc r didvkl.Jr.bik.Jn ~cb:tg.t i
ASSIGI I (FileHasukan, llamaFile1 );
~d)l1ah fi le tck s d cni~"n \'.li"J.lbc·l t"tk bnup.1 L· r. ,. 111~ l>c·!·k.1iu n ,kn~ .IJ J
SETTE XTeUF ( F il.r~asukan, B"' ffer) ;
PESE T (FileHasukan) ;
pcra nt i LPT I. N.llllll ll t'tl.l t llL"llt~~~~n .Jk .Jt l I·.J ,tltr.l ' tllli! printer fl L" Illi o-
~; r am tida k pc rlu bcr~ u ~;J h-l' ·l\· . .!1 !IIL" I Iltkll· k.J!I t c· n t. Jll !,: J'C!"Il\",JU .m .·\.,, ,1.' ''·
AS S IGII (Fil o ~ el u aro.n, t:a.. aF i 1e2 ); Ncll'l'lf<' d,m C / tlit'. lll<"t llf':JJ l J'L"tltlc kl.tr ,t;i.JJ J tile tc·k,.
RE WRITE ( f i leKe l uaran) ;
Contoh pc ngcnd:di.tn J'Iiittn tiillllk !l lcnlpc·r, ,kh h·r h.t~.11 tlhl·.!c·l
{ pr09 C9 pem b a c aan dan pencet.akan
cc tJkan ditunju k b n p.td.\ l 'r()~l".lllJ 1.)- 17.
WHILE II OT EOF(FileH~sukan ) DO
BE Gill PROG RAM CetakKePrinter :
R ~ADL~I { FileMas u~ an, OataPe r ea ris) ; (. 'I
WRITEL tl (Fil~ ~ elu•ra n,

EIID;
Oa tdP e r Ba ris) ( • Cont oh me n c et .ak ke p r ; nttir me nggun itk.a n • l
( • UII I7 PRIIITER .,
(. ' )
HRITELH j' S e lesai . " );
ffi O; { akhir protiadur Cetak
~ SES CRT , melibatkan unit CRT
PRIIITER ; melibMtkan unit PRlNTEq
BEGIU { prograM v to~:ma
C OII~lT
PilthAn (Nama Fil•.,.aaukan. tiA.Jft.aF11e !l. ~luaran);
COI IDEIISED J 15 ; { ko de c eta ~ an den g an ukura n k• c il
Cttak (F 1let.fa•ukan , Ftle Ke luaran, U.a:aaft l ef.tasukan, l4a..mafi l sfeluaran) :
READUI
[110 .
PEIIUTUP_COUDEUSED
EII LARGEO
PE"IIUTUP _ EIILARGED
.,.
fiB ;

J 20 ;
:
( ~•normalkan

{ kode c et~ kan


cetak~n d&n q~n uk u ra n kecil
dengan ukuran be e ar
{ menorm•lkan c etaka n dengA n uk u ran bos•r
MIRING 127 . •. : { kode c eta kan miring
Contoh e~aekus i :
PEIIUTUP_MIRIIIG J27. 5 . ; { penutup cetakan m;ring
CET AK_GAIIDA 1 27 1 71 ; { kode cetAkan ganda
llama f i le yang akan dibaca : AUTOEXEC . BAT
PEIIUTUP_ CETAK_GAIIDA= 127172 ; ( penutup catakan ganda
Oicet•k ke Layar , Printer atau Oiaket (l, P , 0)? p
Tunggu. Sedang $encetak f
BE G!II
CLRSCR ;
Program U - 16. WQITE ( ' S\apkan PRIIITER . Tek.•n EIITER u ntuk mel~nJ u tkan , ').
REPEAT UIITIL R€A OK EY = 113 ,

Khu sus untuk m encetak (m enamp ilbn) ke l:lyar. prosl:s pcnam piian WRITEUl (LS T, 'Ukura n norm._:tl'):

dapat dilakukan dengan cepat apabila pcrintah .Assig11 d iganti dengan WR !T ELII ( LST , COI/O EII SfO . "Uku r• n kacil".

Assigr~Crt (fasilitas yang disediakan dalam unit CRT). Untuk maksud ini. WRITE U I ( LST ,
PEtiUTUP _ COIIDEIISEO );
Et ll~RGEO. 'U k llr>n be~u

pcrnyataa n
2-+(J
1 .15{
.,.

PEtiUTUP _[IILARGEO, 'dAn no,....l'); diperlukan adalah berupa pernyataan untuk membuka file. Dalam hal ini
CETAK_GIUIOA, 'Oiceuk dua kall pada po,.lsl yang,...•• , berupa Rewrite eLm Reset. Namun tcrdapat perbedaan dcngan fiie bertipc
W~ITELII (LST,
PHIUTUP _CETAK_GAIIO-);
dan file teks, y aitu berupa adanya parameter tambahan (Yang bersifn
W~lTELII ( LST , IIIRl!IG, 'Tullaan •1r11'g', PfiiUTUP _tHRitiG);
optional) pada Rewrite maupun Reset untuk tile tak-bcrtipc . Rentuk
WRITEL~I(LST, HIL.RGEO, COIIOEUSEO, 'T ulla&rl tnl agak beaar') :
~~ITELH (LST, ' Perhatikan tulta&n 11'1')
prosedur Retvrite dan Reset yang mcrniliki dua parameter (ar~ umt:n):
[JIO .
REWRITE (varlabeUlle. uk.uran_recordl
13- !7 . RESET (variabeL fl!e. ut:uran_recordl

Bcriku c ml rupakan hasil cetakan dari Program 13-17: dcngan t;l•nlran _nc,·r.! fhe rti pc word ) digll!nkan untuk nrL·ncrHtn . .Jn

--
u~:.ur-an nor-ma 1
(luran r.eci l
Ukur-an be sa r d c:>tll rl CJ ...- m ..3 ] _
ukuran rec u :d at :lll k om ponen yang akan diakscs (d.li.1m s.Hu.rn hv:c,.
Jib llkurun _ r ecord t il ~ .1k di ~ ebutkan, maka uk ur :m record , l:J r :~ ~. r p
bernilai J 28 byte.
Lntuk k cpcrluan mcrnhac:r isi file. discdi:tkan rro~c dur !··c rn.1 m.1
oiceta k dua kali pada posis i y ang sam a m .,ckf?rt:d. yang memiliki be ntuk:
Tul isan miring
Tulisan ini agak besar BLOCKREAD cvariabeUile, var _penampung , Jumlah. lvar _hasl!ll
PerhaWan tulisar. ini
dcngan tJariabeLfile bcrjenis file rak-berripc. r'a r_pi'II<IIIIJHIII,~ dapat bnu;JJ
terinci . kode-kode yang dipakai untuk mcngatur printer dapat scb:uang ,·ariab cl digunakan scbag1i pcnampung m :tsukan/kclu.nJn (li
pada buku panduan printer. 0 ), L~l'ngan ukuran minimal sa m a dengan uktm.JILrec,>rd * jrmt!olt. )11n;ia!t
mcnYJtJbn blok reco rd y1ng dibac:1 unruk seti:1p satu k1li opna~i
Bf ,,,·kRt':l'i. Scd angkan varialxll'ar_/wsi/ (bertipt: word ) bt.:rsifat o pti onal.
Jib \·ari abcl ii~ i disertabn , scsuciJh opcr1si H!tJckl?ead. maka abn hc:ris t:
XIII.S FILE T·AK·BERTIPE
• Sama d<:nganjwnla!t. apabila blok yang dibaca samJ dcnganjiim/,dt.
File tak-bertipc mcrupakan cara pengaksesan diskct secara low-level (aras
• Kurang danJ~unlah, ;mdaibta sisa b!ok Yang diba ca tem ya u kL:r.;n~
rend ah). Pcngaksesan dcngan cara ini dapar dilakukan untuk semua file,
d:1ri Jumlnh .
tanpa memandang file tersebut sebagai golongan file bertipe ataupun file
teks . Jika var_}wsii tida k disertakan, akan rerjadi nmtim f crTor apabila rern yara
Penggunaan file tak-bertipe di:mtaranya untuk menyalin sebarang file. sisa blok yang diba ca kurang dari jumlal: .
Untuk keperluan merebm ke file, disediakan proscdur bern :mlJ
File Tak-bertlpe Block W,.ite, yang memiliki bcntuk :
eklarasian file tak-bertipe dilakukan dengan menggunakan kata-
file saja. Sebagai contoh : BLOCKWRrTE lvarlabeUlle. var _penampung, Jumlah, !var _has till

dcngan variabeLfile bcrjenis file tak-bertipe, l' ar-penampurlg dapat bcrupa


VAR
FlleProses: FILE : scbar:111g variabel digunakan sebagai penampung masukan/kcluaran (1/
0), dcn gan ukuran minim1l sJ ma dcngan ukwatLrm~rd * jt~mlall. Jumlah
yang menyatak.an varlabel flle FilcProw bcrjcms file ta-bmipc. rncny.1t..1kan blok record ya ng direkam untuk setiap satu kali opcrasi
Bl,>t:k Write. Scdangkan va ria bel var_lwsil (hcrt ipe word) bcrsifat optio-
Opera s! File Tak·bertlpe
halnya dengan file bertipe ataupun file teks, operasi dengan file tak- nal. Jik J variabel ini di se rtabn , scsudah opnasi Hf,• ckWritc, maka ab n
pe dia'"'lli dengan pernyataan Assign. Pernyataan selanjutnya yang bcrisi:

251

.... \
...

I pro. . a penyalinan )
• Sarna dengan Jumlah, apabila blok yang dibaca sama dengan Jumlah.
REPF;AT
• Kurang dari Jwnlah, andaikata saar perekaman .remyara disk penuh . BLOCKREAO (F llei!Aaukan, Penatopun9F ile, UKURAII_PftiNIPUIIO , J~la h Blok Dib aca) ;

BLOCKWRITE (FilaKaluarAn, Pena•oungF I la, Juoolana l okD i baca, J'-"'lan8lok.O itul1a);


Pada file tak-bertipe, perinrah seperti Seck, FileSi: ,· dan FilePos, serra
UIIT!l (JunlahftlokDibAca =O) OR (JUMlahSlokOibaca <> Ju.JahBlokOitul l e l ;
Tmncate juga bisa digunabn, seperri haln ya pada tile bcrtipe . Prosedur
Seek dipakai untuk menempatkan pointer file ke suatu record d alam fil e, I otenutup file I
fungsi FilePos digunakan unruk mempe'rolc:h posis; p oi nter file dan CL03E ( f llelta,.ukan J ;
CL03E (fi TeKaluaran) ;
fungsi FileSiu untuk memperoleh jumlJh rccor,J ,1ari file. Adapun
proscJur Truncate. dig u na~an unruk mcn gha pu s rl ,·o rJ m uL1i posisi liRITEUI (·fila audah disali n. ·).
1,0 in:c·r file ~ampa1 akh1r _! I~e . · . READUI
Conroh pengg una an BLO CKWR ITE, BLOCKHE:\D. HESET dan EUO .

ltEWRITE deng;m d ua pa rameter, ~erta FJLES JZE J:saj ibn pada


Prog ram 13-18. Program in i digunabn urHuk m ::::' :::n seba r:ll1g file. Program 11- 18.

PROGRAU Sal inf t le : P ad a Program 13-1 8, sc ti ap kali 13/ockR.-;I:i Jijalankan. scjumlah iiJ:2 4il
(.
' ) record dibaca, k eCLiali j ika record yang ter sisa (scbl'lum (hb aca) kur ,lng
( • Ccntoh sederh~na progr am untuk ~enyaltn file t )
da ri 10240 reco rd (Pada program in i l reco rd berukur .1 n I byte).
{• O~o•t dipakai unt uk semua jeni9 flle ' )
(• ------- - .)
Scjurn lah record yang dibaca kcmudia n d irekam dcng a n inst r uk ~i
8/ockWrite. Proses pemb acaa n dan perekaman di lakukan rnus s~mpJ i
USES CRT; rida k ada lagi record yang d ibaca Ut~m ir~hBlrkD ii>Ma = 0) :trau j ika
COl iS T
ternya ta]umla!JB/okDibaca ti dak sa m a dcn gan)um lahR/nkDi!!llis . Kondisi
UKURAII_PEIIA~IPU.IG = 1024 0; I 10 Ki l o Byte )
VAR
yang kcdua digunakan u nw k mcnghcntikan pro ses pcrw.IIin.Hl jika tid:tk
F; 1ef.t a~ukan , ad a ruang lagi untuk menyimpan (dalarn di~k ) bl ok record ;·.111 g ~ed :mg
F llohluaran FILE ; di baca.
N• m aftle~asukan ,

ll.,.;ofileKoluaran ST RliiG[64 ) : XIIJ.6 MENANGANI KESALAHAN 110


Pon,...pun9F lle All RAY [ 1 .. UKU RAti_PEIIAJ.IPUIIG J OF BYH
J~lahBlo k Oiba c a. Kesalahan I/0 (masukan/keluar:ll1) akan mcnyebabkan tcrJadinya nmtune
JUIII1ah81okOitulls : WORD; error, sehingga eksekusi p rogram akan seger.1 terhenri. Kesalahan seperri
ini diantaranya disebabkan:
BfGIH
CLRSCR ; • saat membuka file dengan RESET, tcmnta file tidak ada
WRITE ("NaMa file yang akan d i ~ l in ; • J;
• file yang dihapus tidak ada
READLN (tlallafi let-taaukan) ;
WRITE (' llama fila hull ulinan .,: • atau secara ekstrim. p ada saa r ada o perasi pcngaksesan diskct rernyata
penggerak disk (disk dri1Jr) belum siap (baran gkali diskct belum
REAOUI (tlaooaFileKaluaran);
dimasukkan atau palang penutup penggenk disk bclum dinnup).
ASS!GII (filltl4uukan, llamafllallasukan) ; ( buka fil e •~su~an
RESET ( Filallaaukan , I) ;
ukur~n recor o = 1 byte
dan tentunya masih banyak kemungki n.tn ya ng bin.
ASSIGtl (FileKeluaran, Na01afi l oKoluaran );
bulo.a dan clot ak&n fi 1• keluarw- ' Dalam beberapa hal, kesalahan 1/0 ya ns nicn:·cb.1bbn n111ti111C error
REWRITE ( F llaKeluantn, I);
ukuran rec o~o =\ byt e } tidak -diharapkan oleh pcmrogram. Seand ainu ~:l,Jt snbn g mcmbuka file
WR!TfLN (•Ukuran f llo yang akan disal in = '
tcrnyata file tak ada, :1langkah lebih bJik k:l l.ou p rug ram hi>.l rnc mbe nra-
FllfSIZE ( F llell... ukan) . • byte . •) ; hu, katakanlah berupa pcsan:
WRl TEUI ( • Tun990 ••• •) ;
'File tak ada . Tckan ENTER'

233

.

dan program bisa dikend~ikan tanpa menimbulkan terhentinya eksekusi WRITE ('Tekan ENTER ' ) ;
REPEAT UIITIL REAOKEY • 113;
rogram di luar keheriaak pemrogram. Hal seperti ini bisa didapatkan
~c:ngan jalan mengatur pengarah kompiln- I. Sebagai contoh, supaya saat
EHO; { a khir proaedur P•aanXesalahan

operasi RESET tidak menimbulkan . runtime error kalau file tidak ada, BEGIN
rnaka perlu pcnulisan sebagai berikut: KooeKesala ha n :: IOR~SULT ;

Salah : : (KodeKesa lAhan <> 0);


IF u1ah THEN
{$1 - }
BE Gill
RESET (vartabeUIIe):
CASE Kod e K ea~ lAh &n OF
(SI + ) 002 : Pesanl<e!la'A h .an (' fi l e ta k dite,.uko.n. · \.
003 . ? esankes.a 1 ~ han (' P.ath (1 ~nta~ ~n ) t~k Ol teraukoln. ' );
pcngarah kompdc r bc rupa {SI- } meru~ ~ kan ca ra untuk mcncegah 00 • : Pes a~ l<es~lah.an (' file t Ak d ap ~ t dibuk1. ' ).
1.:rjadinya nmlin:e nrar, karen a k csa la b~ 1/0. Scda ngb n pcn garah OOS : Pesa nK•sa l a.h .l n ( 'Penga.ksesi\n terh.aoa p file g• gc..l.. ') :
kompilcr {Sl +} m crupakan upaYa untu k mcnga bifkan kembali peme- 100 : Pes•~~•sal.aha n { 'K•~~l~nen t er j•di &e••ktu pem b ac~an t e ~n •d ~p di s~ . ' ):

101: PeeanKes• ,ahan ( 'D i e k p enu h . ' ) :


riksaan terhadap kesaiahan I /0.
150 : Pesa n k •~~lahan {' Oi ak terprot• kat. •):
Lalu bagaimana ca:a m cngecahui misa ln va pada saa c RESET, file ada 152: Peun K es ~l A h A n ( ' Oiek dr i ve belUtSI! ai .J.p ' ) ;
atau tidak ada' Untuk kepaluan menget.1hui tcrj adin ya kesalahan 1/0, ELSE
Turbo Pascal men ycciakan suatu fung si bcrna ma IoResult. Fungsi inijib ,...RITEUI { 'Kes•1 ar. ;~.n be lu• Oide fi nisi kan d~la11 program .

dipanggil akan memberi kan nilai no I j ika tak ada kcsab ha n l/0. Ad apun ' !(ooe 1-eulah.l.n = ', KoaeKesalahan)
EUO j a.khir C<I.M }
jika kelu aranny<~ btikan berupa nol. maka nilai terscbut mcnya ta kan kodc
EIID
kesala han (Mengcnai kode kesalahan ditunjuk ka n dalam m an ual Turbo EfiO; { a:k.h;r pros 9 d.J r Pt! riks~ _ IO

Pascal). Yang pe rl u dikc tahui , secara oromatis IoResult akan bcmibi noi
srsudah fungsi dipangg il.
P ro u dur [} · 1
Pad a prosedur Periksa_JQ berikut, dipcrliharkan cara unruk mc-
nvelck si kcsalahan \·a ng terjadi karcn a ada opc rasi masu bn arau P cnJ cb·;:~ n tt·:: r~'' C: p c~.t!l kc~.tlahan n ng dicmtumkan dJI.Jm proscdur
kcluaran . Mula-mula nilai keluaran fungsi l oResult disimpan padJ j f>crik s<~_ f O:
vari 3bcl KodeKesalahat; . Kalau cerjadi kesalahan (yaitu KodeKesa/,zhatl <> ·
0), maka prosedur akan memberikan pcsan kesalahan pada layar sesuai I 1. File tak di;cmubn
dengan Rilai pada KodeKesalahan. Dilaporkan oieh Rt'~ Ct, Appmd, Rename da n Erase. jib file ya ng
J d ili ba rkan tcrnnta tak ada.
PROCEDURE Perlk.u_IO ( VAR SalAh : I!OOLEAII) ; 1 2. Path (i inrasan) t.1k Jitem ukan
Disebabka n:
• saat operasi Rt'set, Append, Rerwme atau Erase, ternyata na ma file
He. . r1ke& ada t1da~nya keaalahan 1/C ,
tak berlaku ar au mclibatkan subdirckro ri yang tern ya ta ta k ad a.
kalau terJedl kaaa1an&n ,
II subdirckto ri yan g dilibatkan dalam pcrintah Ch Dir, .\JkkDir atau
pade layar akan d1.unculkan pea&n keaalahan
dan ekeekuai ••lanjutnya harua d i atu r oleh pearogr . . .
RmDir ra k bcr!Jku atau tak ada (Mcngenai perintah ChDir, :\fkdir
Keluaran ~rupa arguaen SALAM dan RmDir dibahas pada Subbab XIII. 7).
3. Fik tak dap.H dibub
VAR
M cnyatabn file \·ang scdang tcrbub tcrlalu banyak, schingga tidak
kodeKesalahan: SYTE ;
bisa rncmbuk .1 file lagi .
PROCEDURE Pea&nKea.~ro l .ahan ( Keterangan · !TRI I/G ). 4 . Pcngakscsan rcrh.1dar file g:~ga l
BE Gill Diantaranya discbJbkan:
WRITHII (Keterangan) ; • Dirckto ri <uchh pcn uh saar ad a o perasi Rewrite

255
• saat Rwame, ternyata nama file pengganti sudah ada dalam clisk. Contoh cksekusi Program 13-19 dengan bcrbagai kemungk inan:
• saat ada operasi Erase, nama file ternyata adalah nama direktori
dalam disk. Nama file yang alcan dlhapus: HAPUS.MAP
S. J{esalahan terjadi sewaktu pem bacaan terhadap disk. Timbul jib Disk drive belum slap.
bcrusaha membaca komponen pada file bertipe, padahal pointer file Tekan ENTER
ridak lagi menunjuk komponen dalam file (misalnya menunjuk akhir- Nama file yang akan dihapus : HAPUS.MAP
File tak ditemukan.
tilc).
Tekan ENTER
h. Disk penuh.
Di sk suJ Jh pcnuh saa t ada opcra~i Close, Wrirc , Wrireln atau Fltdr. Nama file yang akan dlhapus : HAPUS.BAK
- Disk rcrr ro rck si OK. File sudah dihapus !
Disk sed ang rerproteksi.
8 Disk drive bclum siap CatatJn: Pada Program 1.3-19 terdapat pcrnyata~n HAL T. Pnw. l :.un
Disebabbn dabm pcnggerak disk belum ada disk :.tau p ahng pin tu tcr~chut fungsinya unruk mcn ghcmikan cksckusi pro!C ~1::1
pcnggerak disk bclum ditutup.
Contoh untuk mengendalikan kesalahan l/0 dapat dilihat r•da XIIL7 RANCKUMAN PERINTAH FILE
Progr:1m 13-19, yang dipakai untuk mcnghapus sebarang file.
1. Bcrbku unruk seluruh jenis tik:
As~ig n (pro~cdur ) ChDir (proscdur)
PROGQ:IU-t M•na.,o,ahi~ks:
') Close (1-'rmcdur) Erase (p roscdur)

..
('
(' Contoh file bertlpe TEXT (Mode ASCII) . • l Eof (fungsi) GetDir (prosedur)
)
t• 01gun~k~n untuk "'ena.rwbahkan lu He< u It (iungsi) MkD ir (proscdur)
(' p•rln t oh DOS: TillE
(' podo f!l• AUTOEXEC.BAT .)

.,
)
RLI1:ll1ll'

I<.cwritc. ··
(p roscdur ) Hesc t
(prosed·u ) RmDir
(proScLiur)
(proscdur)
(' ---------------------- 2. Bcrlaku untuk file tcks:
USES CRT ; Append (p roscdur) Flush (proscdur)
VAR Eoln (fungsi) Head In (proscdu r)
Fll•T•ka TEXT;
ScekEof (fungsi) SeckEol n (fungsi)
SetTcxtBuf (proscdur) Writeln (prosedur)
BEGIN
CLRSCR; 3. Bcrlaku untuk file tak-bertipc:
Block Read (prosedur)
ASSIGN (f ll•Teka, 'AUTOEXEC, BAT') ;
Block Write
buka file untuk keperluan (prosedur)
APPEND ( FileTeka);
•enaebahkan tek• 4. Berlaku untuk file berripc dan file tcks:
WRITELH (fll eT•ka, ' TI~E') ; rek . . t•ka : TI~E Write (prosedur) Read (proscdur)
tutUI> fll•
CLOSE (fll•Teka); 5. Bcrlaku untuk file bertipc dan file tak-bcrtipe:
WRITELII ('D o to ta10bah"n eudah dlsl•pan pada file AUTOEXEC. SAT ! . ) ;
FilePos (fungsi) File Size (fungsi)
READLH ;
Seek (proscdur) Truncate (proscdur)
EIID.
Diant.Jra perintah-pcrinrah tcrsbut , yang bclum dibah:~s y:1itu CI1Dir,
C etDir, .\lkDir dan RmDir. Keempat proscdur tcrsebut berkaitan dengan
direktori.
Program 13 - 19.

25(-. 257
(tl-)
untuk pindah ke direktori atau subdirektori lain. St lfRITflN ( 'K.w.c I ptal<an I'Ubd I r•ktor I baru. ' ) ;
nama di rekco ri /s ubdirekto ri yang dituju. NKDIR (SUBOIRfkTORI_B.RU);
IF IORESULT <> 0 THEN
lfRITELH ( ' Ciagal -.clpta~an -dlraktort baru I' )
c;etDir tdrtve, var_dlrektorll . . . ELSI!
Dipakai untuk mempero leh d1rekton yang sedang akuf dala m suatu WRITELN ( ' !lubdtraktorl baru audah dlcipt.akan I');
pcngg crak di sk.
Par;Jm ercr DritJ<' bcnipe b y te . m cnyJ takan pen g ge rak disk yang lfRITELif (' Pind•h ke aub<!iro><to ri ', !IUBDIREKTORI_BA'!ll);
OiDIR ( SU801PHTORI _ 6ARU);
dilib ~tkan . K n dc: nn g pc rlu d ibn ib n padJ drive : IF ~ORt!IUL T <> 0 THEN

0 == pcnggcrak disk yan g aktif NRJTELH ('Ciag•l . . .u~ k• oubdlr•k torl SUBDIREKTORI BARU, ' I');

== pcngg er:1k di~k A WRITELH ( ' ~n&aoilkan dtro~tori yang . .dan9 •kttr . ');
" == pcng ge rak disk B, dan sercru ~ nva GETOIR ( PENGOERAK_ AKTJF, Oiroktori_Aktir);
I F IORE!IULT = 0 THEN
Vauli rektvri bc rupa v J riabcl bcnipc stri ng, yang Jkan bcrisi nam a WRITELH ( ' Direktori aktir : Oiraktort _ Aktir, '. ')
dirck cori sesudah proscdu r GctDir dicb ckus i. ELSE

WRITELH ( 'C.g•l •-bac a ctirttk.t.o r1 akt11' I·);

MkDir <Stl CHOIR (DIREKTORJ _ AKAR) ;


Digun akan untuk mcncip tabn subdirckwri baru . Nama subdirektori { ptr,<J.I'\ ke dir•ktor1 &kar { root d irectory) }

yang akan dibmt diberikan pada param eter S r (bertipc: string). ~ITELN (·~n7hAoua Subd t r akt ~ r,
SUaO! RHT ORI _!IARU) ;
RMOIR (SU<le !RHT DR I _ BliRtJ);
If IORESULT <> 0 THEN
RmDir <St}
'fA:ITflN ( ' G.tr.g..aJ ~ngh&.~>U• •uttdi rsktm· i ')
Dipabi unr uk mc n g h:~ p u s s u~ tu su bd1rc ktori ya ng kosong (tidak ELSE
me ngandun g tile ::aaup un s ubd irektori vang la in. Nama subdirektori WRITE LH ('Subo tr~k tort s ud~~ Oi ha pu3 !'J :
yang akan dihapu~ pcrlu diberikan pada pa rameter St. {SI+)

Program 13-20 mcm be rikan contoh tentang cara menggunakan


READLN ."'
yang berkaitan dengan operasi direkcori. END.

PROGRAM Oirektori ; Canton ak . .kua t :


<• ----------- ----- -- ------ --- ---- -------- ----- -------------- .,

...,,
(• Contoh penggunaan perint~h CHOIR , GETDIR, ~K O IR dan R~DIR . •)
(• WulA - ~ula mencipt•kan s ubdirektori bern&M~ PASCA L, )
M.nciptakan aubdir• kto r1 baru .

..,
(• ke~ud;an ~asuk ke subdirektori PASCAL,
Subdirektort baru .udah dtc1ptakan t
(• . .na~ i1k an eubdirekLcr i yang aedang aktif dan
Plndah ka aubdlraktorl PASCAL
(t Menghaous aubdirektori PASCAL )
Nena.ptlkan dlrektori yang ..o.ng •ktlf .
Dlraktort aktlr : A:\PASCAL .
llanghapue aubcHraktor I PASCAL
Subdtraktort •Udah dlhapus 1
PEtiGGERAK_AKTIF = 0;
SUBOIREKTORI_BAR U 'PASCAL ' ;
DIREKTORI _AKAR ., '; ~gram 1J - 20.
YAR
Dlrektori_ Aktif !ITRIIIO ;

CLRSCR ;
variabel pointer bukan berisi data, melainbn berisi alamat dari suatu
data. Singkatnya, pointer "menunjuk ke" suaru lokasi da ta .

PEMROGRAMAN DENGAN POINTER


Varlabel Varfabel
pointer yang dltun)uk pointer

0-J D
Gambar 14 - 1. V~riabtl poinur Jau-variahrl yJ n_f ditunjult
-·- --
111 cr up:tk:ll1 salah satu jc ni s data tcrstruktur dahm P,lscal. PaJa
tcrt cnru. j cn is da ta terstruk tur ini sangat bcrman faat. Dcngan
nakan puinccr , suatu variabd dap,tt d iciptJkan atau d ih.1pus XIV.2 PENDEFINISIAN POINTER
a pcngck~ c kusi an program . JumiJh variabcl y:tn g dapat diciptakan
uadi tid :lk tc rbatas (dalam arti:ln jum !Jhnva ticbk p crlu didckbrasi- Suatu rip e poin ter d idd inisikan dcng:1n d iaw ali tanda · ((art'IJ dan diil... ,
pengenal tipe, scpcrri bcrikut:
tcrkbi h d:1hulu). Batas total variabcl yJng dapa t d icip takan h;;rm
an olch kapas ir:ts mL·m ori yang ada chhm ko mputcr. I'vlisalnya.
·pengenaLtlpe
sejum lah da ta yang hcndak diproscs. D:m, ber:1pa pun ba n yaknya.
dimasu kbn kc dalam m cm ori komputcr, dike lola dc n gan menggu- Scbagai conroh ya ng sedcrhana :
poin tc r. Hal scpcr ti in i bclum tcn tu b isa di pcca h b n dcngan
i j cni s d ata ters truktur scpcrri arr:w, >ct•Jb ar ray han ya bisa TYPE
pung cla ra seban yak 64 Kil o b vtc da !l kcm Jmpu.m mcnampun~ ptrfnteger = .INTEGER:
ini pu n harus did ck!a rasikan tcr khh cL!l-,u lu. VAR
rk an kc mung kinan Lbbm mcncipt:1 ka n \';triahcl sci.lmJ eksc- ptrSIIangan: ptrJnteger:

program dan bahkan kcmung( in,ln uncuk inenghapus Yariabcl.


men ya takan bahwa variJbel PtrFiila11gali m erupaL.m variJbl· l pt )iiHcr
variabcl scmacam ini dinamabn scbag ai va riabd dinamis
yang menunjuk variabel bcnipe integer.
riabcl yang telah dibahas pada bab-bab di depan tcrgolong
variabel statis). Denga n m eng g unakan v:1riabel dinamis, dJ-
untuk membuat struktur data dinamis, yang biSJ
,.
P~OGRAH Pointer!;

.)
(t Ga.baran ••derh&n. tentang pointer t)
atau dipersempit selama cksekusi berlangsung, tanpa harus
sejumlah memori terlcbih dJhulu dalam pendeklarasian. {• ---------------------------------- •)

r ·data dinamis sendiri sebenarnya mcrupakan kumpulan dari USES CRT;


TYPE
yang dinamakan sebagai simpul (node). Simpul biasanya berup•
record , meskipun bisa jug:1 berupa ripe data yang laii1 ( misaln y~ Ptrlnteger = - ItiTEOER ;
¥All
Pada struktur data dinamis, terdapat variabel yang discbut PtrBllangan : PtrTnte9er;
pointer (atau secara singkat disebut pointer), ya itu variabd ll l angan INTEGER ;
menunjuk alamat mem o ri dari variabel dinamis .
lfaw
ClRSCR ;
lllanga r. ; = ez ;
lebih umum , va riabel p ointer m crupakan suatu variabd yang II'IIITH N (' hi varlat..l 8ILAIIQAII = 811•'•9Ar>) :
alamat dari suatu obj ek (dapat berupa va riabel , konsunu
atau subprogram)·. Karen a itu biasa dikatak an b;~hwa sebenaro)O 'trBllangan : • ee tl angan ;
( PtrBilangan •enyiM P • n al•~•t dar t variaO.l ftil&ngan}

~61
--
·--~~~~.a '
nns' Z

WRITELII ('IIi lal yAng dltvnjvk ole n ?TR BI L• JIGAil :

IIEADLII
ffiD .
PtrBilang•n·);
I Contoh lain ten tang pendeklarasian varia bel pointr {' ,
TYPE
?tn string
....:::: ,
Oc -~
PtrData = ·RecordData: 8 ~);:,
Str1ngMama = STRING!20J; Q,~t; ,
RecordData = RECORD '-'()
tal varlabe l BILMIGMI : 82
fl!l&i yang dltunjuk ol eh P TP. Bl LAIIGAio : 82
Nama : StrlngNama:
Jabatan : STRING!1 Sl;
LanJutan: PtrData
END;
VAR
Con roh progr;;m yang scdcrhanJ rn cn gcru i pointer ditunjukkan pada Ptrl(epaJa.
Program H-l. Pada progr a!ll inL mul:1- m ula v.tr iJbcl I3il<111san yang ptraaru · PtrData;
integ er dibcri nilai 82, ~c(" an:z k ,m variabcl PtrBilangan diisi
dengan alamat dari Yariabc l Bilan,~ "m mclJ lui penugasan : Pada pendek larasian ini, Ptr f...·, p.da da n PtrBaru merupakan var i:~bcl
pointer v~ng mcnunjuk kc ~ tL1tu record bcnipe RecordDa ra.
· PtrBilangan := (J BIIangan:
XIV.3 PENCENALAN DAFTAR BERAI'.JTAI
@ p:~da (r~· Bt!an,~an illl' l l \ J U Kan J i.11JLlt d :tr1 v:niabcl Bilangan .
gan demik ian. PtrBilanx.m n :,: ;, ~! flJUk Kc 13iianga li. Kcllludi Jn. uncuk Salah saru ben'ruk struktur d.JtJ d inarnis yang sederhana yai tu cla frar
pilkan isi · Y;mg diwnj ~ 1k o lch •:ariahcl poin ter PtrBilartsan, . berantai (link llsr). Daftar bc ran tai pada contoh ini beris i sejum lah sirnpul
ukan pernyara an berupa : deng:Jn masing-masing simpul bcnipe record yang rcrdiri dari 3 bu:1h
fie ld, bcrup3 l\ 'ama , jabatan d:ln L.:u~jwan. Field Lm~jutmJ sendiri bnupa
\·aria bel pointer yJng m enunjuk reco rd yang terdir i dari Na n:a, Jab,lfc~IJ
WRITELN l'Nilai yang ditunjuk oleh PTRBILANGAN =
I
d1n L.u~illr,Jn. V:1riabcl po inter Lu!fll tan berfung si scb;lgai penpit a Ll u
PtrBilangan·l :

J'trBilangan· (Ptrf3ilangall d1iku~i dcnpn t.wda ') bc rarri: " lsi yan~
ptrKepala
ii.l:.,,njuk oleh PtrBilangar1. Karcn a iru p::tda ProgrJm 14-1, PrrBilm1gan ·
menghasil kan nilai 82, sebab variabci yang ditunjuk oleh PtrBilang·
bernilai 82.
[ alamaLn J--=:J
!si variabel pointer tidak bis a di tamp ilkan dengan WRITE
ataupun WRITELN . Pern yataan seperti alamaLn
r
alamat.n·1
WRITELN !PtrBtlanganl; Nama Jabatan SlmpuJ n
LanJutan
merupakan pernyataan ya ng salah .

Bllangan
~Jamau
[ I lq alamau ~ SlmpuJ 2
I 82 - ~t Nama Jabatan LanJutan /

ita maL1[ ---r~-


1
. ~-_l_
sesudah
PtrBJJangan := @81/angan
NIL - -:J Slmpul 1
Nama Jabatan LanJutan
14-2. Ptmbtrian alamat Pariabtl lrt Juatu variabtl pointtr C...bar 14- J. Sr,.,lr tur data dafrar brr~rtlai

263
r-

bung dengan simpul berikumya, sehingga membentuk suatu • Field Nama dari record ya ng ditunjuk oleh PtrBaru diisi dengan string
yang dinamakan sebagai daftar berantai. Ciri daftar berantai, 'UDIN' _
pointer yang berfungsi sebagai kepala (head) dari rantai. Pada • Field j cJbatatl diisi dcng;m string 'DIREKTUR'.
bar 14-3 kepala dari rantai yairu pointer PtrKepala yang mcnunjuk H asilm·a di_tunjukkan pada Gambar 14-5.
n. Ciri yang lain, yaitu adanya pointer yang tidak mcnurjuk ke

II PrBJru-_Nama : ~ 'UD!N';
yang lain (v ariabel pointer Lanjutan pada simpul 1) .
Ptrearu·.Jabatan :~ ·oiREKTUR';
MENCIPTAKAN VARIABEL DINAMIS
Ptr8aru var!Jbel dinamis
Pascal, terscdia proscdur bcrn.1 ma 1'\1ew yang digun akan umuk
dinamis. Bcmuk proscdur: I [~. 0JD!N:-T-:-o,REKTuR· T ? 1
I

L_ Nama Jabatan LanjUtan


_ _j

contoh: Gamhar 1-1 - 5 . Pt::rbrrioJn nilai kr Pariabtl dinami.s

Opc r.b; \' .i r: ~ mc libatkJn Jua buah pointer mis al n\'J ad,ll.lh un tuk
m cny:llm Jlc: ld .\.a1na y:1ng di tunjuk o lch Prrl3am kc jleld .\'Jn l cJ \· Jng
an ir.i mcnyebabkan suatu alamat mcm o ri dari var i~h cl dinam i\
dirunju k ilkh 1-'rrJ..:epaLL Pcrnvacaan vang dipcrlukan :
DataRewrd disimpan dalam variabd Pirl3aru .
New ! Ptr K e~a '" ' { clptakan variabei dlnamis
sebelum NeW tPtrBarul: yang ditunjuk oleh PtrKepala l
PtrBaru PtrKe;:;,.3 ~. a ,.....a := PtrBJru -. Nama : ( salln Nama }

Kahu m :s.;; ;-_-.-3 sclurtlh rcco rJ yang dirunjuk olch Prrnant disJ!inkan
0 kc rc,-o d '; J.:-: ~ d itu njuk o lch PrrKepala, pern\'ataan yang dipcrlukan:

PtrKepai<LNar..a : = PtrBaru·.Nama:
PtrKep2i2 Jat;;;:.an : = PtrBaru·.Jabatan;
varlabel dinamis PtrKepala· .L.an:utan := PtrBaru·.Lanjutan;

! ? I 7 I ? l Ke ti ga pcrn:.- 1:2an di atas bisa d isingkat mcnjadi :


Nama Jabatan Lanjutan
PtrKepala : = ;=:traaru ·;

14-4 . Pcttciptaan variabd Jittami.s Jcngan New Benr u k sqxr:: mi bcrani: "Sa linlah isi ya n g ditunjuk olch PrrBaru kc
lokasi yang J :.: .l.I1j uk olch PrrKcpala" _

variabcl dinamis terbcntuk, pcngisian dapat dilakukan terhJ- Suatu hcn::-.1:< penugasan lain y:mg rndibatkan pointer yai tu bcrupa:
dinamis. Scbagai conto h : --
PtrKepar 2 ~ =-:-saru ;

Pcrn y a u :~r: .:. oras bcrarti ' 'l si J>rrRam di ~ alm kc PrrKepala " _ Dcngan
demiki:m b'l:k :=-rBam maupun PtrKepala mcnunjuk lokasi rncmori ya ng
,.ma_ ·
berarti :

265
XJV.S MEMBUAT DAFTAR BERANTAI
PtrSaru varlabef dlnamls

0
Ptr1(epala
..1'UDIN' I 'DIREKTUR' I
Nama

varlabel dlnamls
Jabatan
?
Lan)utan
I
Setelah mengctahui dasar-dasar operasi mengenai pointer, berikut akan
dibahas cara menyusun daftar berantai. Pernbuatan daftar berantai
dirnulai dengan mengatur agar pointer yang merupakan kepala dari
rantai tidak mcnunjuk kc lokasi mana pun . Hal ini di lak ukan dengan
mcmbcrikan nila i NIL kcpJda PtrKepala:
I
PtrKepaJa : = NIL ·
D ..1 'UDIN' I 'DIREKTUR' ! ? I
Nama Jabatan Lan)utan NJL mc ru p.lbn bu -t crcadang chlam Turbo Pa scal. Diagr:11n awa ]
rcrhcntuk bcrupa :
~·ang
G4mbar U - 6. P~nugasan PtrBaru· := PtrK~pa/a " PtrKcp.lla

Catatan: Mulai Turbo Pascal versi 5.5, terdapat fasilit as New dabn
bentuk fungsi. Formatnya: I ~
New (TipePointcr)

Fungsi ini juga mcmpunyai kegunaan untuk mcngalokasikan


I ..._' .._ rauJJ f• oi ntcr tidak
mcnu njuk suaru lob si
Simpul 1 (Gam b:lr 14 ·-J) dab m daft .tr berantai d ibentuk dengan
nriabcl dinamis . Hasil fungsi berupa poilltcr yang menunjuk
lokasi variabel dinamis . Se bagai contoh: ! mengg unak an scd aer:lll pcrnyataan bcrikut :
(J) PcrK cpal:l · -- N fL;
.' \£1-t'{PtrBaru); identik dengan: PtrBaru := 1\'EW(PtrData),
1

Sebetum PtrBaru := PtrKepala:


I (2)
· (J)
(-1 )
(5)
NEW (Prd3.:ru):
Ptrl3 Jru·. Nama := "UDIN";
PtrB Jru·.Jlbar :m := 'D lHEKTUH':
PrrBJru·.Lanjutan :== PtrKepala:
(6) PtrKcpala : = Ptr Baru;
PtriCepala PtrBaru varlabel dlnamls
Diagram scsuda h pernyar aa n kccmpat ditunjukkan pada Gambar 14-8.

I 1 I D ~ I I I
Nama Jabatan Lanjutan PtrKepaJa

setetah PtrBaru := PtrKepala :


~
varlabel dlnamls PtrBaru
varlabel dlnamls

D- ~J "DIREKTUR' I 7--J
Nama Jabatan LanJutan

G.m•u 14- 7. P~tulglfsan antarvariabcl point~r C..rnb.,, 14 - 8

_266
267
•..
F-·
~

Selanjutnya, pemyataan kelima


Diagram sesudah pernya taan keriga pada pembuatan simpul kedua
dapat dilihat pada Gambar 14 - 11.
PtrBaru ·.Lanjutln := PtrKepala;

menyebabkan pointer Lmzjutan menunjuk lokasi y3ng ditunjuk oleh Ptraaru


PtrKepala, yaitu NIL (Gambar 14-9). n .. ~--
'ARI'
NarnJ
I,
__ _j __SEKRE~
~
Jabatan Lanjutan
PtrBaru varlabel dinamis
PtrKepa la

~ ~--= · u._~~~· =~~=-[DIREKT-UR


D .. 1'UDIN ' I 'DlREKTUR' l NIL ;
Nama Jabatan Lanjutan I} : ___ NIL--=J f
· Nama Jabatar. Lanjutan -
- - - - - - -·---··------------
G cmbar 14-9 G.1rnh~ r J.l - 11

Pernyataan keenam
Pcrnv:JtJan

PtrKepala := PtrBaru ;
Ptrbaru-.Lanjut<Jn := PtrKepala;
men yebabkan PtrKepala mcnunjuk lokasi yan~ dirunjuk olch PtrBan.
(Gambar 14-10). mernbuat po mter Ln~juran d:1 ri simpu! y.1ng ditull_:uk olch PtrRam
men unj u k simpu! yang dirunjt d.; "kh P!,,r..:,·i''''·: (C.il!lbJ r 14-12) .

PtrKepala
IPtrearu
I

~~~ ~14 utan ~


'o --c_-=_-=:=--:AR:·~-~-=rsE~RETARIS~
n=h
~'""
variabel dinamis
Nama Jabatan

'UDIN'
I DIREKTUi
""'""
I PtrKepala _
I
~
Nama

~~mbar 14-10 0 'UDIN' :=LDIREI<TUR· ! Nil h


Nama Jabatan LanJutan
Simpul tambahan dapat diperoleh dcngan memberikan pcrnyataan:
~ (1) NEW (PtrBaru);
Cambar 14 - JZ
(2) PtrBaru'.Nama := 'ARI':
(3) PtrBaru '.Jabatan := 'SEKRETATUS'; Pada saar pcrnyataJn kclimJ
(4) PtrBaru '. Lanjuran := PtrKcpala ;
(5) PtrKepab : = Ptr Baru; ptrKepala :-o PtrBaru ;
untuk menambahkan simpu i sebt'narnyJ scrupa deng-l 0
dijalankan , PtrKepala abn menunjuk simpul yang dirunjuk olch PtrBan1
nomor 2 sampai dengan 6 pada saat mcmbu.lt simpol
(Gambar 14- 13). Dengan demiki:1n, ,bft.lr hcrantai ya ng tcrdiri 2
simpul sudah tcrhcntuk.

"'l(,()
VAR
Ptrxepata Ptrearv PtrOata;
Jawa t:>an CHAR;
?traaru
BE Gill
'ARt' 'SEKRETARIS'
REPE:Oi
Nama Jabatan Lan)Utan CL=<SCP.;
ll o W (PtrBa ru) :
wo:rE ('tl a ma pe gawai : ') ;

r ·uotN' r ·otREKTUR' I NIL ~


P.E~ C> lll

W~IT E
(Pt rBaru· . llama);
(' Jabat a n '):
Nama Jabatan Lan]utan R:;:.ouJ (PtrBaru · . Jabatan):

·cambar 14 - 13 P: rB ar u".L anjutan : = PtrKepala;


Pcr ~ e pai a := PtrBa r u;
Contoh mcnyu sun daftar berantai secara lebih umum ditunjukkan
pada prosedur BentukDI'jia r. Pada prosedur ini, data dimasuk kan melalui h' 0 ITE ( 'J.lasu kk a n data l a gi (Y / T)? ');
papan-kctik. Kctika memanggil prosedur ini pertama kali, PtrKepa!a RE"E .C T
harus dibcri nilai NIL terlebih dulu. a~aban :: UPCAS E (REAOKEYj
Ut.T !L J awaban I ll [ 'Y' ,'T ' );
USES CRT; WA:TELII (Jawaban)
TYPE UHTI~ Ja wa ban = 'T'
,
PtrData = " RecordOata; END; { a ~hi r bentuk daft ar
StringNama : STRitiG[ZO); P roudur 14 - 1.
RecordOata= RECORD
Nama : Stringtlama;
Jabatan : STRitiG[15]; XIV.6 MENAMP1LKAN lSI DAFTAR BERANTAI
Lanjutan: PtrData
lsi · daftar lx:-m cai dapat ditampilkan deng an cara sr:bagai bcrikut:
EtiD;
VAR 1. Sebuah \·ariabel pointer (PtrSementara) diatur suraya menunjuk lokasi
PtrAwalHeap : POitiTER; pointer awal heap. yang dJtuiJjuk oleh PtrKepala
berupa pointer tak bertipe 2. Selama PtrSementara tidak bcrisi NIL, maka:
PtrKepala : PtrOata; pointer kepala daftar berantai • Cetak isi simpul y;_~ng ditunjuk oleh PtrSfmOitara
• PtrSm:wtara digeser agar menunjuk lokasi yan g dit unjuk olch
PROCEDURE 6entuk0aftar(VAR PtrKapala: PtrOata); pointer Lanj11tan .
3. Selesai
~enyusun daftar beranta1
Pada pfl.':>r:~ mc namp ilka n isi daftar berantai, pointer sem entara
dengan variabel PtrKepala •enunjuk data terakhir
(PtrSemeiii.J:.: ) dipcrlukan dcngan maksud ag ar PtrKI'pa!d rcup rnen unjuk
yang diMasukkan ••lalui papan-ket1k
lokasi yang sama baik sebdum atau sesudah isi dJrta r berantai
ditamp ilkar.

nn D l
Dalam bentuk y:.tilg sed erhana, implementas i cara menampilkan lSI
XIV.7 MENCHAPUS VARIABEL DINAMIS
daftar berantai ad~.lb sebagai berikut:
Dalam s truktur data d inamis, kadang -bd ang d il iba tkan u pe rasi untu k
m elakukan pengh apusan terhadap d a ta . D,1l am hal ini. \·ariJ bcl d inamis
PtrSementara : = ~pala ;
WHILE PtrSementar.~ · <> NIL DO yang mcnyimpan data yang dihapu s PL' rlu d ibuang . d cnga n rnak sud
BEGIN ··- supaya lo ka si dari variabcl d inarn is tcrsebut bi s.1 digu na kan alo bsi
WRfTELN ( ~ntara ·. Nama . PtrSementara· Jabatanl: va riabd dinam is la in nya (blau ad a pcn c ip t,l;tn \·ma bel .~i n a mis b!l, i,l .
PtrSemenon · = PtrSementara·.Lanjutan T urbo Pasc:~l mettyc diak an dua ca r.1 un t uk m cb b tka:: pcng hJp u\,ln
END; tcrhada p vari a bel d ina m is. be r u pa:

Bent u k pen u lis.<r: \ .;.:-, s la in , di tu njukk an p ada prosed ur CetakData. 1. Di spose ata u FrccM em
' M ark d an R el ease
~EDURE CAt.a..ki:i.t~Ur ( PtrKepala: PtrData);
Sebd u mnya pc rlu d ikc tahui . LHi J bc! din.1Il1JS •,d,cn .1 - ,;~:a dl\il ll{',ln
{ ~t.&k iai ~~...& r t>.ranta i dalam ha5i an mcnH.5 ri yan g k hus us di gun.1L1n unt uk a,. k.1~i \'J riahd
} d ina mis y.Jng Ji5cb ut heap . D JI.nn h,·.lp lL'rc!. t ;.) .l[ ~li;lt u r ''lllt cr ba \\'Jall
VAA yJng bcrsifJt g lo bal dcngan n.1rna 1-!t•,,p f 'll Pu :n tcr in 1 s,- :_;_~I lll L' tl ll llJU k
pt~t.&ra ?"t.M)a ta ; mem o ri tcrendah da lam ht'ap y;mg bd un 1 dJgUit,ib n c:I Huk ,1lu b 'i
va ria bd din ami s (scl u ru h m cm o ri J .tla m ltl'ap , ..1ng k bih un~~ i d ari ya n~
BEGIH diru nje1k o leh H.cap Ptr bclum dipab i untuk alub ~i \·ar :.; 0c l d ina mi s
CLRSCA;
Mark & Release
WJUTEU4 ( ' I!!! S-'<-i .M~ BERAI'ITI.I : ' ); WRITEL I>f;
Pro-,cd u r .\lark m e m p u npi bcntuk:
WRITELH (' = ==== =~========= = ==== == = = == = ========');
WRITELH ('N A w l ' : 20,'J A a' AT A N' : 16); Mark (var_ptrJ
WRITELH ('===:=:==============================');
pt~ara : = ?t.r"-Pala ; { pt~ntara -nunjuk pad.i loltaai dcngan l'a r_p rr berup;~ varia bcl bcrt if' C p o inter . Prosccu r tni d iJ.' ,1ka1
yang au~a O.Og&n ptrKepala unru k m c nyimpan isi p o int er heap (1-lcap Ptr) kc da bm \'J :-IJ bcl ;•ar_prr.
Proscdur R eleast' m cmi lik i bemuk :

»fiLE pt~.__.. <> NIL DO Release (var_ptrJ


WITH pt~.....,...A DO
BEGIH den gan l'ar_ptr bcrupa va ri abcl pointer. V.uia bcl p oi nt er im m e ru p:1 b n
~Inuc (--:20, Jabatan: HI); variabd ya ng sama dc nga n v:~riabel pad a M ark. Kala u proscd ur in i
pt~ : = Lanjutan diekseku si, maka aka n m enyebabka n selu r u h va riabcl d ina m is ya ng
END; terletak antara yang ditu ru u k o leh l'ar_p£r sa mp.1i se bt:l u m y;111g di tunj u k
ole!-: Henp f.Jrr akan dibcbaskan (diha p us). Sc bagai con toh jib sederc tan
1>-!rnya taan bcrikut dick sck usi:
WRITELN ('=:=-----============================') ;
WRITE ( 'Tekan ~.JRN·) ; READLH NEW (Ptr! J;
ENO; { akh1 r ~r CetakOaftar } NEW (Ptr2J;
MARK (PtrAwaiJ:
New (Ptr3J;
NEW (Ptr4J;
Proudwr 14 - l . NEW fPtrS J;

'l"M
+;'-
273
rnaka gambaran dalam heap ditunjukkan dalam Gambar 14-14. dengan var....ptr merupakan variabel pointer. Prosedur ini mempunyai
kegw1aan untuk menghapus variabel dinamis yang ditunjuk oleh var_ptr.
Memorl terendan Berdasarkan Gambar 14-14, scandainya kemudian diberikan pern ya-
,.--- taan:
ptr1

l
lsi dart Ptr1 .
ptr2 • lSI dar! PtrT ___ ..
~~~wat _ _.J._~ DISPOSE !Ptr3l;
lsi dart Ptr3. DISPOSE !Ptr4l;
ptr4 memorl
lsi dar! Ptr4"
untuk heap mab akan mcnycbabkan varia bcl dinamis yang ditunjuk olch PrrJ eLm
ptrS lsi dar! Ptrs- I I
I
Ptr4 dihapus (Gam bar 14-16). Kedua Lobsi ini akan diingat oich sist cm

IJ
HeapPtr
Turbo Pasca l. Seand:1inya ada pen ci ptaan variabd dinamis lagi, lo b -;j in i
be bas Memorl tertlnggt aka n dipriorit:1skan untuk alokasi variabcl dinamis (as:1 lkan cukup) .
,-------------------- · -- ~

Gdmbdr 14-14. J/uJtraJi New dan Mark Ptr1 Memori terendah

Saat pernyataan Alark ( Ptr A wal ) dijalankan , PtrA tva! abn menu njuk
Ptr2
~ lsi dar! Ptr1·
lsi darl ptr2·
lokasi yang terletak sesudah yang ditunjuk oleh pointer Prr2. Sclanjutny:; PtrAwal
New (Ptr3) membuat Ptr3 men unjuk lokasi ya ng sama dengan yang
Ptrs
I be bas

I lsi ~art Ptrs·


diwnjuk oleh PtrAwal. Setelah adanya pernyataan
I
~+ Memorl tertlnggl
L ~
New (PtrSl~ HeapPtr
maka HeapPtr akan mcnunjuk lokasi sesudah yang d itunj uk oleh Ptr5.
Seandainya kcmudian diberikan perintah bcrupa:
Gambar 14 - 16. Ilu>tra>i Dispose

Release !PtrAwail:
Berdasarkan Gam bar 14-16, seandainya kcmudian dibcrikan pern y:aa.m
maka gambaran mengenai heap ditunj ukkan pada Garnbar 14-15 .
. DISPOSE !PtrSl;
ptr1 Memorl terendah
lSI dart Ptr1" gambaran mengenai heap adalah seperti pada Gambar 14-15 .
ptr2 - - - - ----
lSI dart Ptr2"
HeapPtr
GetMem & FreeMem

~
FreeMem juga dipakai untuk menghapus varia bel dinamis . Penggun;un -
~ Memorl tert!nggl nya bcrkaitan dengan pcrnyataan Geti\1em. '
GetMem merupakan prosedur yang disediakan dalarn Turbo Pascal
Gam/lar 14-15. Gambaran ttntang Rclcau untuk menciptakan variabcl dinamis yang ukurannya (dalam sa tuan
byte) bisa ditcntukan olch pemrogram . Bentuk proscd ur:
Dispose
Prpsedur Dispose mcmpunyai bentuk:
CetMem lvar_ptr, uk:uranl:

Dispose !var_ptrl: dengan rJar_p tr mcrupakan variabel pointer d:m ukura11 (bertipc word)

274 '27:'>
., ~:.---;.·

2. PtrPraPosisiData ••nunjuk sl•pul &ebelua aimpul


menyatakan ukuran dari variabel dinamis . Sesudah variabel dinamis data yang dicari,
diciptakan, variabel dinamis ini akan ditunjuk oleh var_ptr. Jika ta k ada atau same dengan HIL jika PtrPoaiaiOata Menunjuk slmpul
lagi ruang dalam heap untuk a~okasi variabel.dina:ni.s, ak~n menimbulkan yang juga ditunjuk oleh Ptrl<epala
,-unrime error. Perlu dtketahlll, ukuran vanabel dmamts terbesar yang - Jika data tldak ditemukan, maka
da pat di ciptakan dengan GetMem sebesar 65521 byte (kuran g dari 64 Kilo PtrPosiaiOata sama dengan HIL

bvte).
· \·ari ahcl dmamis yang diciptabn den gan Cet1Vfem dapat dihapus, VflR
dc ngan menggunakan proscdur Free.Hcm. Bentuk proscdur: Ketemu BOOLEAII;
BE Gill
FreeMem !var _ptr, uKuranl: Pt r-Pr aPosisiData : = IIIL ;
Ptr-PosisiDa t a : = PtrKepala ;
pada pemanggilan proscdur ini, liar_p tr dan uhtran haru slah sam a dcngan
~ ;-e mu : = FALSE ;

pada Cet:\ Jem. ~i iiL L E (tiOT Ketemu) AllO (PtrPosis iData <> llll ) DO

IF PtrPos isiData - .llama <> llam;;tDicar i TH Eil


Catatan :
• Pada penghapusan variabcl dinam is, Freelvfem d:ll1 Di.ipu.> e biasa BEG HI
dig una kan untuk penghapusan ya ng bersifat acak. PtrPraPosisiData := PtrPosisiData ;
• Jika menggunakan Mark / R elease ya ng di padukan dengan Dispvse atau PtrPosisiData .- PtrPosiaiOata - .Lanjutan
FrecMem. harusbh tidak ada variabel dinamis di bawah poi nter pada Et lO
.\lark yang dih ap us dengan Dispose. Jika hal ini sampa i terjadi, memori ELSE
dari variabel d inamis yang dihapus tidak lagi diin gat olch sistem Ketemu : = TRUE;
Turbo Pascal, sehingga memori tersebut tid ak bisa dipakai untuk EllD: { akh i r pros'ldu r Car i Data
alokasi variabcl dinamis , saat program masih dicksekusi . Hal ini
P roudur 14-3.
terjadi kalau Release dijalankan.
Contoh program mcngenai daftar berantai yang mcl iba tkan ca ra: Pros::dur CariData mcmiliki 4 argumcn/paramctcr bcrup.l Pt1Kcpal.J,
(yai tu pointer y.mg bcn indak sebagai kepala dalam dafta r bcrantai ),
mcmasukkan data ke dalam daftar berantai NamaD icari (berisi nama pegawai dari data ya ng akan dicari), scrta
-"' menampilkan is\ daftar berantai parameter PtrPosisiData dan PtrPr!ZPosi.< i Data. Mcngenai parameter
mencari suatu data dalam daftar berantai variabel PtrPosisiData dan PtrPraPosisiData me miliki sifat :
menghapus data dalam daftar berantai
1. Jika data yang dicari tidak ditemukan dalam daftar bcrantai,
· disajikan pada Prog ram 14-2. PtrPosisiData berisi NIL
Cara mencari data dalam daftar berantai ditunj uk kan dalam prosedur 2. Jika data yan g dicari di tem ukan , rn aka :
CariData . • PtrPosisiData menunjuk simpul dari da ta yang dicari
• Apabila sirnpul yang di tunj uk PrrPosisiData m erupakan sirnp ul
PROCEDURE Car lData (Ptrl<epala : PtrO&ta: llamaOicarl : Strlngllalll&; yang ditunjuk oleh PtrKepalu (simpul yang tak mcmiliki pendahu-
VAR PtrPraPosiu\Oata , PtrPoslsiData : PtrData );
lu), maka PtrPraPosisiData berisi NIL
• _-\pabda simpul yang ditunjuk o lch PtrPosisiData m crupak an
Untuk menca rl datil llamaOic;arl pada daftar beranta l. si mpul ya ng tidak ditunjuk olch PrrKepula , maka PtrPraP,Js isiDutu
Hasll :
berisi lokasi da ri simpul yang terlctak tepat sebclum simpul yang
- Jlka data ketemu , maka : d itunjuk oleh PtrPosisiData .
1. PtrPosiaiOata menun juk aimpul darl data yang dtcarl
277 1
1 ' 11 ·~· ; ~ 1•cnghapusan data secara acak-dalam daftar berantai dilakukan
Penghapusan dengan kondisi kedua dilaksanakan dcngan menga'
111' '1 l'ft/',••isiData tidak berupa NIL (yang berarti data ditemukan). Pada
po inter Lanjutan dari . simpul yang ditunjuk oleh PtrPusisiPraData a1
'"' 11 l!ldnk llkan penghapusan , ada dua kondisi yang perlu diperhatikan: menunjuk lokasi yang ditunjuk oleh pointer Lanjutan dari simpul ya
I '• hl 1 1'l d yang dihapus merupakan simpul yang tak memiliki pendahu- ditunjuk oleh PrrPosisiData. Pernyataan yang diperlukan:
1 ~~~ l'!t•q•u l yang ditunjuk oleh PtrKepala).
PtrPraPoslsiData·.Lan)utan ~ = PtrPoslsiData ·. Lan)utan :
' 1111 1'"' nng dihapus bukanlah simpul yang di tunjuk oleh PrrKepala .
,. ••pl,,!'ll'an dc.n gan kondi.si yang pcrtama dilakukan dcngan m eng- Lmgkah selanjutnya ringgal rn cmhcbaskan varia.bel dinanri~ y.1
1 1' ' '
.... f!rrKepaia men unjuk ke lokasi yang di tu njuk olc:.J.l pointer diruruuk oleh PrrPosisiData , dl' ngan pernyaraan
' '"""' ' '' l·l.1ri simpul yang ditunjuk olch PtrKepala). Pernyat aan yang
1
' '1 ' ·ltd. Ill NEW !PtrPoslsiDataJ;

1
'1 • \ ··"·''-' . =· PtrKepala· .Lanjutan:

I Ill~ :\_ dl -c lanjutnya ti nggal mcmbebaskan va riabel dinamis yang


.
Sebelum simpul d ir, ~~ us

,1, 1, ,, , ,,\"
··lch PrrPosisiData. dengan pernyataan

"'' '' li'!rPoslsiDataJ:

,,,~ ...... .,, (impul dihapus

PtrPosisloata
,., ' r- 1\.l i J

ses udah slmpuf dihapus:

I s--- mau dlhapus


PtrPraPosisiData
J

~"' '\'''"'Oata
I
~-~ II I ~r--7---_j__J__
'~" '""' .slmpul dlhapus: PtrPoslsiData bebas

;'-'"''";J
rt _., _-- I I I l I I
_j
I r Gambar 14 - 18. Mmghap•u 1impul yang tidalt ditunjulc olrh PtrKrpala

Prosedur HapuslsiDafiar merupakan prosedur yan g dipakai unru


mclakukan penghapusan data dalam dafrar berar1ta1. Proscdur ir
mclibatkan prosedur CariDa ra .
I
!
'

~.~,~~~t~a---------------===~~~:;,~~--~ J
PROCEDURE HapusisiOaftar (VAR PtrKepala : PtrDa ta );

' '· ·~"-... , ., · 17. Mcnzltapou 1impul yang ditunjult ol~lt PtrK~pala { untuk menghapus sebuah aimpul oada daftar bera ntai .
I

"" 71
I
"rosr. . l let:
CotiST (•

( • Cont~ progr . . vntvk -nrvell\ daftar tt.rantat { ltM lt•t) •)


.,
STRIIIG_KOSQilG :
(• cJ.an k¥V<J' a.n ~..aac:dlkan k-baH hinya
VAR NaJGaDicari : StringNama; r•
~E~ CRT ;
.,
')

PtrPos1siDat .a,
TVP[
PtrP raPosisiD.ata PtrData; PtrO.t a ~ ~'t•cordO~ota :

~t,.-tng.flalfl& STAIU0[20);
BEGIN :z

CLRSCR;
HRITELII ( 'J.Ia s u~,. an llama pega1·• ai dari da ta ya ng akan dihapus: ' );
nee.orOO •ta:: IUCORO
.., ...
Jatatan
Stringti.t.llllol ;
~TRIUG( 15 }.

..
lanJut.t.n : P tr D at~
READLii (liamaDicari);
(HO;

IF llamaDicari = STRIIIG_KOSOIIG THEil _

EXIT ; I kaluar dari prosedur Hap usisiDaftar


Pt,.-A~o~ a Hi •ao : POI IllER ; patnt •r ilw• l haol.p )
CariOata (PtrKapa la, llamaOicari , PtdC: apa Ia Pt r Oata ; ootnt•r ....... a l a d af t.u , ... a n ta 1 }

PtrPra FosisiData , PtrPos isiData);


(• a 1• 1plo. a n pro •• Ovr San t uk Oaftar di ainl '}
IF PtrPosisiDa ta = li iL THEil { data t ak ditamukan
BEG III { • a1•tpkan pro llf• <Jv,. Cet a lo:O aftar dl a int .,
~IRITEUI ( ' Dat a tak dit<>mukan. Te kan EIITER untuk malanjutkar•. (• al ·~d ""•n proa• dur Ca r4Qo.t.a di e tnt •)
READLN
{• • t a t pkan p,.-oaadu r Ha pv•l •I Darta,.. <1; . ,,..,, • }
EtiO
ELSE { data ta k oitemuKan } PROCfOUR( Pro•aaPt l tf\an {\1 /.~ Ptrll. trp .a 1• : PtrO ah );

BEG III
Otg\Jna k a n untul.. ""•,.II lh proaa a :
I proses pe nghapusan } MaMaavkkan d• t o~

IF PtrPraPosis iDa ta = till THEil "'-n.aapt l kan d ata


...._ngh.A p~w~ a dJtta
{ s1mpul yang d i tunjuk PtrKepala dihapus }
PtrKepala : = PtrKepalaA.Lanjutan VAR

Ptllha n CHAR;
ELSE 8EGI II

{ bukan simpul yang ditunjuk PtrKepala dihapus } REPEA T

~trPraPosisiDataA.Lanj~tan :=
CLRSCM;
PtrPosisiOataA.lanjutan; TEXTAlTR : = 170 ; t "ideo tarbaltk
DISPOSE (PtrPosisiData); GOTOXV (20, 2); WRITE (' PlllHAJI PROSES ') ;
TEXlATTA ::.: $0 7; ( video nor••l )
WRITELN ('Ok . Data sudah dihapus . Tekan EIITER');
OOTOXV (20, c ); WRITE ( ' ( 1) )-l . . aaukkan / ••na.b.ahkan CS..ta' ):
READLN ooroxv (20 , ' ) ; WRITE ('(2) Men ... pllka n hi dattar barantat');
END OOTOXV (20, IS) ; WRt T f ( ' (J} Mangh•pua data p.aoa daf'tar berantal ');
GOTO.iCV (20, 7); WRIT£ ( ' f4) Se l ••• t ·} ;
END; { a khi r prosedur HapusisiDaftar } GOTOX Y ( 20, 8) ; WRITE r· ' ) ;
GOTOXY (25 , 9) ; WJUH: ( ' Ha•ukkan "'-OO• pt llhan [ 1 . . C) '):
REPfAT
ProuJwr U-4 .
Pt lth.an := UPCA ~f (RE AOK E't')
UUTt l P ll I han I H ( ' 1 ' .. '4 ' J ,
Pada Program 14 -2. ,\[ark dan Releast.' dipakai unruk membcbaskan w~trr (Pil th• nJ :
CA.Sf Pll t h•n 01
scluruh variabel dinamis saat data yang ada pada va riabel dinamis tidak
'1 ' · 8al"tuk0a ftar (Pt rK•po~ h );
dipcrlukan lagi. Namun sebcnarnya pada prog ram ini, Mark dan Relrajf ' 2' C•t• kO•rtar (Ptr· ~ • P •la );

bisa juga tidak usah dituliskan, scbab dengan sendirinya seluruh variabd ' J ': Hapu•I•tOaf'ta,. IPtrK•pala) ;

~J
Erm
dinamis da.lam hea p dibebaskan saat program usai . UNTfl PIHhan: ' 4'

280
... _ • .,. • - ptllhan (1 . . 4) : l

Maeutlkaft 1'-" pep~~tat dari data y•ng akan dtn• P\J I :


EttO: { akh ir p ro_.d\..1,. Pro Na.P il \ha/'1
AAI
()til . Da t a ~ dthapus . Tekan ftiTUI
( pr09 r aa ut.. .• )
&E OI "
pen.andaan t .erh.adaP •-'•' •~•P l P rogra m 14-1.
~ ARIC ~tPtr.ba 1 Heaol ;
ke J. daan •-'•' PtrK•P•l•
P t rl( epa\a : = Hi l: oe l a.., a.&J'I a&n p••'
1 ihan p r o•••
alck••' d i .......,. U l
Pro. . ~ t l\han (P trlepa l a l : ,....~ba•lt&n ~•P y ang d tpaka ~ vntvlo. Kalau dipc rhati kan scca ra scksam:~ , tcrnya ta urut an dJ ta sut dima
~E LE .I .!f ( Pt.r .:.~ota lH eaP} :
kJn mempun ya i urutan tcrbali k p:~ciJ ~ aat dit am pi lk.trl. D ·tta tcra
f ... O.
nn g dim .1~ukkan ab.n l1lL'tlC!l lpati sebJgai da ta per t.lnJa !>.t.lt d it;m
c.on td"' • " • •• v .. ' · kan . Struk tur da tascmaca m i111 dikenal dengan schuun LIFO (Las
':% ::: ::: : :::::::;: :: : J ll:l tt ·- ~ ··o-s• ,== :::::::::::::::::::::::.: First-Out) yang aninya ad ala h Masuk - tcn khi r Kelu.H-pertama.

( 1} j.&_..aauk lo.a nl •• na•D • t-"a n <ht .a XIV.S FUNCiSI UNTUK KEPERLUAN ALOKASI DINAMIS
{21 ~ r\·· oilk • n \ a i o a ft&r b•r a nt a t
{3 1 .,..f'\9'"\.&PU S dAt • o ., da C:aftar e.r a n ta t Turbo Pascal m cn yedi akan clu J buah fu ngs i yang hcri-..aita n den
{ 4) ~·1 • ... ' alokasi va riabcl dinami s, bcrupa .\f,,xA .. ail dan .\frm.i: -. n/ . K niua fu 1
in1 ridak mem iliki argum en {par;i!Jlctcr).
1or.oe- pilt Nln {, _. 4) ; 1
~• • u ., lt .& n

UClU
MaxAvall
o• 9--''" •
ti &Jio&

J..Wt afl
t
OI«l f. lt.T UR Fungsi .~1axA. 11a il di gunaka n u nruk mc m pcrole!J ukuran b!uk be
~.._,~o;, ,.a n O•U· h gt (V/ T)? Y rcrbesar dalam l1 eap (bcl um dipabi un tuk alokas1 LHiabci d inl:nis). H
....... P•¥"" ' : "Rl
~E 1t.RE T - ~~~
bcrripc longint , dan m cny:Hak :lll ukuran dJhm ~.ttci.lll byte.
J •D.& l &l"'
Mat-U kk _, n d~ t• la g' (Y/i}! Y Fungsi in i dapat dipa kai un w l... m~·nghindari tcrja diny.o rllur,me c1 :
tla•• P•9A"'a t : F Atii.U
... A II .l J[~ EDP
kalau sa.lt penciptaan vari abd dmamis (ba ik dtT ;.!.lfl :\.'e ll' ~taur
Ja b.l. t• n
14&SU"-kcn d a t a h gt (Y/ T)1 1
CetM em) tcrnyata ruang dah m i:t'Jp rid:1k cukup uncuk rcng .dokas
variabcl din amis . Cont oh lllengc na: h~ l mi d:q)Jt d ilih.H p.td.t Pro gr.
:.; ::::::::::::::::::::::: Jl C. Ill' ... : I.O!tl :::: ::: :: ::::: ~=:::::::::
14- 3.
t 11 ,... . .. s v"-~A n / . . ~hkan data
{2 1 ,_ na-p t l k&n t s t c:taftar o-ran tat PROGRAM CekBlokBebaa;
r 3 ) ~9"·pu• data paca daftar ber&nta t

(4 } s..., ..... <• -------------------------- --- ------------ --------- -- •>


(8 Contoh penggunaan MAXAVAIL untuk mengendalikan •)
(8 NEW atau Gfn.E_M agar tidak 11enimbulkan RUtiTIJ.lE ERROR t )
M.awk kan kode ptlihan ( t.. •1 : Z
(8 jika ruang dala. heap tak cukup t )
(t untuk pengalokasian variabel dinamia . •)
l~I O'-'taA IEJIIAIIT.l :
:: s:s =~:: ::1 ::s: s:: :;:~:a ::;:"$:=: ::::a:s::::::a::::r.===·'li::
tiAM . J A IA T A N
<• ------------------------------- ------------ --------- t )
USES CRT ;
::::::::::::::::::::.:::::::::::::::::: :::::::;a.:::c:s:a:a:a:a :a•s;~~:•:a:s:a
f _,.,.1 14AIIIUEA EOI' CONST
ARl
S£1tli£TlPIS MAJ<S_OATA = 16000;
D!REKTUA
UO!II TYPE
:::: '::Z:::: =::::: ==:::::: ::1:: =s :::: :a::::::a:a-a::z•=·· :r. ::a:c :s:a
ArrayData : ARRAY[1 .. HAKS_ OA TA) OF BYTE;
"Z:: 2:::::;::: :::::1: :: llkiMIUI 11'1aerSt • :s:::::::::':l ::: s ::::: :::~t:s
VAR
PtrOata •ArrayOata;
( 11 ~·u~k •n/ . . ~ahkan ctat •
~' '"an

~l
(1 ) • • • d&ttar e>er .nta t BEGIN
(3) ~ data pada ck ft ar ttoer ant.a \

(4} s.•- ·
,.,q...,
·- CLRSCR;
IF HAXAVAIL >= HAKS_DAT~
PROORAN MMI_dan_Nax ;

<• --------------------- ------------------------------------- •J


BEGIN
{ ••nga1okas1kan varlabel dina~la
HEW (PtrOata(Pencacah]);
WRITE ( ' Untuk ~al~njutkan prog r aa , tekan E~ T ER. ') ;
( 8 Con ton pr-ogr. . untuk ee llhat perbed.aan NEMAVAIL
c• ------------------
USES
VAR
CRT;
-----------------------------
I HAXAVAIL
.
8)

Ptr1,
lanjutan Pt r2 ,
&eaudah P t rA~al " INTEGER ;
d i cipt akannya var iabe l d ir~i s

PROCEDURE I nfoHeap (Kete rang;an : STRitiG);


EHO BEOIII
ELSE WRITELN ( Ke terangan) ;
WRITE LH ('~emori t a k cukup. Te ~an EHT ER . ' );
WRITELN (' ~•ori heap te r s i g~ ~IEI-IAVAIL, byte.' );
READLN WRITELN ('Blok terbsaa r da !Aa heap MA XAVAIL, byte. ·);
END. EtW; { akhlr proaedur InfoHeap

Program 14 - 3.
BEGIN i progr~ ut~a
Pada Program 14- .3 . seb clum pcn g:d ok.lsi.1:1 rcrhJdap v aria bd d inam is CLRSCR;
dilaksana kan . blok bcb :1 s tc r bcs~r daiam l1cup dipcriksa. jik.1 rernyata MARK (Ptr Awa 1);

terdapat blok b ebas yang lcbih bcsar atau sarm dcng an uku ran ....-a riabel InfoHeap ('Setelah MARK : ");
dinami s y ang akan di ciptak an , ba ru bh mc ;-.j.ll ankan pcrny ataan NEW HEW (Ptr1); { menclptakan va r i abel di namis ya ng ditunjuk oleh Ptr !
InfoHeap ( ' Setelah NEW . {Ptr1) : ');
Sedangkan ji b bl o k be b as tcrbcsar tCrrl\ .:t~ ichih kccil th ri yang
dipcrlu kan, p rog ram akan m cmbcri pesan ::-cru p ' ,'v1cmon tJ k cukup. NEW (PtrZ) ; { aenciptak an v•riabel dina~ is yang ditunjuk oleh PtrZ
InfoHaap (' Setelah JIEW (Ptr2) : ');
Tekan ENTE R. ' .
DISPOSE (Ptr1); { menghapus variabel dina,.is y.mg ditunjuk oleh Ptrl )
InfoHeap ( : setelah DISPOSE (Ptr1) : · );
MemAvall RELEASE (PtrAwal) ;
Fungsi ini dipakai untuk mempcroleh ro:al mcmor i d al am izeap yang In foHeap ('Setelah RELEASE ');
bcluiTif digunakan untuk pengalokasian \'a ria bd dinamis . H asil benipe REAOLN
longint, dan m enyatakan ukuran dala m SJ tu an byte . END.
Perbedaan Mer:nAvai ! dan MaxAvail dap at di lihat pad a Gambar 14-19.
MemA vail dan ,\ !ax Avail menghasilkan nila1 yang berbeda, apabi la dalam
heap terdapat blok bebas yang bersegmer: (terpi sah). Conton ekMkuei :

Setelah HARK
ptr11-
ptr2-{r_ _ _ _jl Ptr2 - 1b!o< ""'' '
Me.arl heap terelea
8lok terbeear dalaa heap
295280 byte.
= 295280 byte .
Setelah HEW (Ptr1) :
blok bebas I Ole( beb-~ Me•or i heap tereisa 295275 byte .
Blok terbesar dalaM heap 295278 byta .
Setelah NEW (Ptr2) :
MernAvall = MaxAvall MemAvall > '.la\Avall Meaorl heap tereisa 295278 byte .
8lok terbeaar dalaa heap = 295276 byte .
Gambar U - 19. P~rlr~d<Jan M~mAvail dan M.>:ri~Pail Setelah DISPOSE (Ptrl) :

284
285
~ri n.ap tereia« = 295270 byte.
k t erbesar dalaM heap = 295258 byte .
110
e-telah RELEASE
~.a r i hOAP tersiaa = 295280 byte.
11
ok t erbesa r dal .. heap = 295280 byte. XV fvlANIPULASI MEMORJ
14-4.

ccrdapat pe rnyataan DISPOSE yang mcnyebabkan te rjadin ya blok


yang be rsegm en , maka A1emAIIail da n .\ laxAvall tilhk lagi
silka n nila i yang sa ma. Pada saa r ada perny:ltaan DISPOSE.
ccrsisa tern yata menjadi lebih ke cil. Hal ini dise babkan ada Un;r Sy •tt:n• nn ~ '>c'C:l rJ otomJtis .iik<lirkan cknga n prog ram T u rbo
mcm ori yang digunakan untuk mcnca tat (mcngingat) b agian blok PJ,LJl nu_·;:g,Hhiung bcrb.<gai 1:1-.ili ras yang sa ngat bcrmanfaat u nru k
di hapu s. Pada saat pe rnyaraan RELEASE diplankan, mcmo ri me:--n.111 i pui.J~; i Illt:mori kornputcr. scpcrri
heap (baik untuk alokasi variabel dinam1-. ma upu n umuk
tatan tcntang b!ok bebas akibar DISPOSE; d1bcbas kan . Tampk Jlll'nlbau .lLJu meng ubah 1:~1 sua tu mcm o n scc1ra langsu ng
program , rnemo ri tcpat ses uda h MARK dij:dankan sama dcngan rncmpcrclch JldJ ;JJr sua ru Yariabcl , ko nstJnta bcrripc atau subpro-
~ ra rn
h RELE AS E diek scku si.
mcmpnukh uku ran mcmon ya ng digunakan unwk suatu npc.
Pada Program 14 -4 . memor i tcrsisa dalam ltcap se<elah k ons tant a !xrripc a rau variabcl.
DISPOSE (Ptrl) se h a rusnya bern ila i 295278 byte, namun
kcn yac.tannya ting gal 295270 byte. Hal ini disebabkan sisrem Unruk mum;c1Jhk.1n punaham an mcnge nai fasilitas yang berkaitan
T urbo Pascaf mc mcrlukan 8 byte set iap kali ada pengharusan dcn§:-111 lll:'llliJ'td-~_,J rnc n w ri, akan dibicarJbn tcrlebih dah ulu masalah
yang mc nyeba hbn b lo k bcbas yang <c rpi sah de n gan b!ok-blok mcmun lb! 1111 ku; ,Jpurcr dan p cta mcmo ri da lam Tur bo Pasca l sccara
:.ckiL:s.
bcb as binnya (digunakan unruk mcngin ga t lokasi dalam Jre;r
yang dih:1pus).

XV_1 MEMOR! DAi.AM KOMPUTER IBM PC

Mcmori rn nupJkJn bagia n dabm ko mputer yang digunabn umuk


.. mcnyimpan cb ta arau program . Setiap mcmori berukuran 1 byte (8 bit)
denga n ma sing-m asing mcmiliki alamat. Setiap alamat memiliki bag ian
va ng discbut segm e n dan ofset. Untuk menyarakan suaru alamar
mernori bia sany.1 Jig unakan n ou si
Scgmcn : ()f,e t

dcngan scgmcn dan ofset d in yatakan dalam 16 bit. Alamar seperti ini
disebut alamat rclacif. Alamat yang sesungguhnya (dinamakan alamat
~bsolut) scbenarnn terdiri da ri 20 bit. Da lam sistem desimal, alamat
-~ bsolut
sa rna dcng.1n 16 kali segmcn ditamhah den gan ofs c:t . Jika seg men
d~n ofset dinvar.;kJn dalam sistem heksadesimal (basis 16), al amat
•bsolut dapar ;ii pcrole h de ngan menambahkan ' digit 0 di bagian akhir
stgrnen, kern udian dijumlahkan dengan ofsetnya. Misal, al arnat relatif
B8oo:0002 hcksJdcsimaJ memiliki alamat absolut B8002 heksadesimal.

287_
program maup un data (informasi) sewaktu program dieksckusi. Jenis
segmen
lainnya yaitu ROM (Read-Onl y Memory). merupakan mcmori ya ng
Islsi ofo] c - tambahan digit 0 heksadeslmal
hanya bis:1 dibaca isinya (tak dapat ditulisi) .

of set XV.2 PETA MEMORI OALAM TURBO PASCAL

Pcngg unri an rncrnori da l;: m Turbo PasLal JJ~Jjikan ,iJI.mJ Gam b;u 15-3.
[ojojol2!
+
~----------------------~
r-------- - , mem·Y rendah
[llFloToT2l +- alamat absoiut 20 bit
1--a:.Va:.kod;-;bj;;-_J
f---~hlr ~ode obJe k
Gam bar 15-1 . Pt nga lamatan mtmon
L_ kode U:llt n
I -----
i\lamat rc!Jtif sepcrti B 800:000(lh (h = hcksadcsimJ! ) bis;:; juga ditu lis
menjadi B000:8002h.
1--~;~~-
t -1-j
Organisasi memo ri dalam komputcr IBM PC tc~diri dari 16 b!ok oseg:OOOO - · ~ - koue unit system j
dcngan blok pcrtama diberi kode seb.:~gai blok n. Scti ,lp blok mengan- awal darl data
dung 64 KB memori. Sching{2:a sccua ke:; cluruhan rcr dapat ! .~1B I ;!!(hir darl datd I
I NC;J .VVVV - - ~ bebas
mcmori. I c<.,g·Sotr - - - - - ·-
I -·· · stack
t ke memori
stac~
t-erkembang
' -----·--
Biok o RAM sampai 64 KB r penampung overlay - 1 rendah
atok
BIOIC
1
2
RAM sampai 128 KB
RAM sampai 192 KB
~~/h;ap ukuran penamoung "· 0
. jlfc:a tak ada overlay
RAM sampai 256 KB puncak heap
atok 3
Blok 4 RAM sampal 320 KB
RAM sampal 384 KB
memorl terslsa JkeHeapmemorl
oerkembang
tlnggl
iiOk 5
atok 6 RAM sampal 448 KB dattar bioi< bebas
memorl tinggl
Blok 7 RAM sampal 512 KB
atok 8 RAM sampal 576 KB
atok 9 RAM sampal 640 KB
Gam bar 1J - J . Ptt" mtmori Turb o Pa1 .:"/
Blok A Memorl pertuasan untuk video
Blok B Memorl standard untuk video
Blok c Ekspansl ROM
Stack mcrupakan dae rah mcmo ri yang antara bin dipakai untuk lokasi
Blok 0 untuk
Blok E keper1uan tatn parameter, atau pengenal yang bersifat lokal saar subprogram dipanggil.
Blok F Slstem ROM·BIOS dan ROM·BASIC Sccara bawaan besarnya stack adalah 16 K B. Ukuran stack dapat
dipcrbcs:~r atau dipcrkccil mclalui pcngaturan pcngarah kompdcr.
G.Jmb"r 15- 1. B/qlt mtmori
Ukuran tcrbcsar chri stack adalah 64 K B. Scpeni rel.lh dijelas bn paJa bab
, di dcpdn, itrnp mcrup.tbn danah mcmori untuk alokasi variabcl din&mis
Diamara jenis memori, tcrdapat memori yang disebut RAM (RandOffl ya ng di cipt&kan dcngan New atau Gt:tAfcm . Ht'<JP mencmpati ruang
Access J'vfemory) . Mcmori inilah yang dipakai untuk menampur~ mem ori yang tersisa, berkembang kc arah rnem ori yang lcbih tin ggi .

288 2R9
){V.3 MEMPEROLEH ALAMAT, SEGMEN ATAU OFSET XV.S MEMPEROLEH UJCURAN MEMORI SUATU VARIABEL, TIPE ATAU
Ti ga fungsi yang bcrkaitan den~an hal ini, yaitu Addr, Seg :f_an Ofs.
KONSTANTA BERTIPE 1'
Semua argumen dari fungsi tersebut dapat berupa seb.uang variabel, Fungsi Si:cq[ yang m em il iki bcn tu k
konstanta bertipc ·a tau pengenal subprogram.
SlzeOf !ob)ei<J

Addr <Xl
Digunakan untuk memperoleh alama t dari suatu objek X . Kegunaan dcngan <'b:ick cbpat bempa '- 'J ri .lbcl. upc at au konstall tJ bcrr ,:,c, hi J~.l
Addr identi k dengan k cgunaan operator @ (lihat Progr am 14 - 1. Pada dipak:1i tJnt uk !Ill J:1puokh uk uran m c rnori yang dipcrlu l:Jn oit'h <>bJt-k
progr:1m ini. @ Bilangan dapat dituli s mcnj :~d i A.ddr 1B1i.mgan!). \·ang mcrtq,akJn .•a;t ll'llc n n ;: c; f l.1~d i~ J ; :g~i !>c r{!pc wc•nf 'i .l n rnc ll i'.J L ,-
k.m ukur.JiJ IIJcn ~ ,, fl d JI ,Jn J ~J tu an byte .

seg <Xl Contoh:


Digunakan untuk mempcroleh scgmcn dan o bjck X. Hasll fungsi bertipc
S!ZEOF iBYTEJ . 1
word . SIZEOF !WOROl • 2
S!ZEOF !REAU -· 6
OfS (X} 51ZECF !POINTER ! - 4
Dipabi untuk mempcrolch ofset dan o2j ek X. HJsil fungsi bntipt
word . XV.6 MENGISI SUATU TIPE DATA TERSTRUKTUR OENGAN NILAI YANG
SAMA
XV.II MEMP!EROLEH lSI REGISTER CS, OS, SP DAN SS
Proscdur Fii/Char \'Jng di scJi ak.Jn da lam 1u rb o P:~scal sanf :!C bcrgu na
Fa si lit :~s untuk m c mperolch isi register CS. DS, SP dJ:-: SS scmuan\'J unruk mcmhcrikan in1 sial isasi tcrh ad.q · upc data instrukt tJr. lkntuk
berupa fungsi y,mg tak m cmiliki argumen . Keluar~n fu r. g;i b..:rupa ndJJ rroscdur:
bertipe wo rd .
FiiiChar :var...x. ca::.ah. nil ail
cseg
Fun g si CSeg dipakai umuk memperoleh isi yang tcrbndung dalam Jib pro~cLiur ini d1panggil. mcmori pntalll;l dJri l'ar_ y (dapat bcrupa
register CS (Cafle Segment), yai tu nilai yang mcny ata kan segmen dan sebaran g \'J riabcl J sampai yang .kc-.-a<cdi akan diisi dcngan nilar. Ni!ai
awal kode objek dalam program. sendiri dapat bcrupa scbarang tipc ordinal, dan biasanya bcrupa tipc char
atau byte. Scbagai contoh didckla rasikan:
DSeg VAR
Fungsi DSeg digunakan untuk memperoleh lSI rcg1ster DS (Dar;
larlk:Data : ARRAYI1 .. 100J OF BYTE ;
Segnw1t), ya ng menyatakan segmen dari awal data dalam program .
Misalkan, sel uruh elcmen arra ~' hcndak diberi nilai 0. pern yaraan yang
SSeg diperlukan:
Fungsi SSeg berguna untuk mendapatka.n isi dari register SS (Scalt
Segmer!C), yang menyatakan segmen dari awal stack . FJLLCHAR !LarlkData. SIZEOF!Larlk:DataJ, 01:

Sptr Ptrnyau:1rl di ata s nH:mbcrikan basil y:111g SJ rn .t Lkng.m pl'nulis.ln


Fungsi Sprr menghasilkan nibi yang tt·rkandung dalam register SP (Sta.«
Poir1ter), yaitu nilai yang menyatakan ofset dari penunJuk scack. Nilai Jll FOR i : = 1 TO 100 DO
sekal igus menjelaskan besarnya sca.:k tersisa (belu m digunakan). Larii<Datafll > o·

291
. Contoh yang lain yaitu unruk membuat prosedur yang digunakan untuk Pernyataan seperti:
menghasilkan string yAng merupakan pengulangan dari karakter yang
sam a, seperti diperlihatkan pad a Program 15 - 1. Pad a program ini, MOVE 1Mat1, Mat2. SIZEOF rMat1li:
prosedur Ulang_kar dipakai untuk membuat garis ganda . Perlu diketa-
hui, kalau menggunakan Fii/Char yang dikenakan pada variabel string, membcrikan hasil yang sama dcngan pernyataan:
haruslah terdapat perny;~taan untuk menentukarl panjangn ya (Lihat
pern ya taan: St{O] := CHRljumlah)). FOR 1:=1 TO SO DO
Mat2!fl := Mat1!1l;
PROGRAM Garl•;
ataupun:
,. -------------------------- •>
(* Contoh penggunaan FILLCHAR •)
(* untuk ee~bentuk g~rla •> Mat2 : = Mat1:
<• -------------------------- •>
XV.8 MANIPULASI DATA BERTIPE WORD
FUNCTION Ulang_Kar (Kar : CHAR; Jumlah: BYTE !: STRING;
VAR Turbo Pascal mcn yL·di,Jbn f::tsilitas untuk mcmpcroleh byte tcrcnd dh
St : STRING ;
atau b yte tc rringg1 dari data bcnipc word. Disamping iru, terdap at pula
BEGIN
FILLCHAR 1St, Jumlah +1, Karl; fa~iJitas un tuk mcnubrkan by te terendah dan byrc tcrt ingg i pada ripe
data word .
St!OI := CHR!J umlahl;
Ulang_Kar : = St: Untuk mcmu dahbn pemahaman. perlu d ik ctahui tcrlebih dahulu
END; bahwa tipe word rncngandung 2 bu:: h hytc . Nilai bcrti pe word j ika
dinyatakan dalam sistem hcksadcsimal d.;pa t din\·atak.t r. ckngan 4 d1git
BEGIN
WRITE IUiang_Kar !: 205. BOll, : gar!s ganda ·seoan]ang 80 karakter )
heksadcs lln:Jl. M isJ! , pad a bilangan bert; pc word
READLN 27 13 hek sad csimJl
END.
27 heksadcsimal merupakan ni!Ji dari by te tcqin ggi dan lJ hcksadcsimal
merupakan nilai dari byte terendah. ·
Prog_ram 15-1.

Fungsl HI
XV.7 MENYALIN lSI SE.IUMLAH MEMORI Bentuk fungsi :
lsi sejumlah memori dari suatu lobsi dapat d isa lin ke lokasi lain dengan HI IX!
menggunakan prosedur Mo ve. Bentuk prosedur:
dcngan X berupa sebarang ungbpan berripe word. Kegunaan unruk
Move lvau. var...2, cacahl memperoleh byte tcrringgi dar i X . Mis.tl, pemanggilan :
dengan var_1 dan var...2 dapat berupa sebarang va riabel, serta cacah HI ($2713l
menentukan banyaknya byte ya n g disalin dari var_1 ke t'ar...2. Misalnp
dideklarasikan: a.kan menghasilkan nilai $27 (27 heksad csi mal).

TYPE Fungsl Lo
Matrlks = ARRAYI1 .. 50l OF BYTE : B~·nruk fungsi ·
VAR
Mat1, Mat2 : Matr1ks: Lo fXl

293
,.

-w=-. -----
dengan bcrupa seb arang ungkapan bertipe word. Kegunaan untuk nilai 7, berarti mode reks yang ak rif adal ah mollocl:rom e. Pulu juga
memperoleh byte terendah dari X. Misal , pemanggilan: diketahui, setiap data karakter dalam layar seben:1rnya memnlukan 2
byte memori . Byte pertama -umuk m enyimpan kodc /\SCI! d ari karakte r
LO !$2713) dan byte kedua untuk menyimpan atr ib ut dari karakter (Lihat Subbab
XII.2) . Oleh karena itu daerah la yar unruk mod e tcks bcrukur 3n 80 X 25
akan memberikan nilai $13 (13 heksadesimal). karaktcr dapat didefini sikan den gan:

Fungsl swap Llr!ILL.ayar : ARRAY!1 .. MAkS_BARIS. 1.. MAkS KOlOMl OF


B cnruk fungs i: RECORD
Karakter: CHAR ;
Swap tXl Atr!but : BYTE
END;
dengan X bc rupa seb rang ungkap an bcrtipc word . Kegunaannya yaitu
untuk mc n g h :~ silka n nila i berti ~' c word y:mg merupakan pertukaran byte dcngan MAKS.J3ARIS 3.:hl:d1 2::; d.1 n MAK S_ KO LOM :-tci.1 i3 h Rrr.
terendah da n byt e tcrting gi ,:;ui X. Scb agai contoh:
PROG R~ Cet&k l aya r;
swap tS2713l <• --------------- -- ------ --- --- --- --- ---- ---· ------ -- •)
( • Contoh arogr&JI unt<.~k •ancet•k is I layar •)
akan mcnghas ilka n nilai $1327 (1.327 hcksad csinlJ! ). <• ba ik yang 11engguna kan adapte r mooochron.., mau;::un CG A • )
(• Khueua untuk •ode tei<.s 80 ~ 25 >- ar-akte r •j

XV.9 MENGUBAH SEGMEN DAN OFSET MENJADI ALAMAT <•


USES CRT, P ~ INTER ;
--- ----- -------- --------- -- .,
Fur. gsi Prr yang mem ili ki bcntuk

Ptr tSegmen. OfsetJ


l CONST
MAKS_BARIS = 25;
MAKS_KOLQI.I = 80;
mempun yai kc g un ::un untuk mcngubah suatu alama t rclatif yang terdiri Of SET_AWAL = 0:
TYPE
dari segmen dan ofse t menjadi sebuah alamat bertipe pointer. Sebagai
contoh ditunjukkan dalam Program 15-2. Program ini memperlihatkan larl k_layar : ARRAY [ 1 •. MAkS_BARI S , 1 . . HAKS_KOL OH } OF
conroh untuk mencerak isi layar baik untuk monitor yang menggunakan RECORD
adapter monoCirrome maupun CGA. Untuk keperluan ini, diperlukan Karakter : CHAR;
suatu po inter yang menunjuk ke lokasi memori layar yang sesuai dengan Atrlbut : BYTE
mode teks yang ak tif, hal ini disebabkan lokasi layar untuk monochrome END;
VAR
dan CGA berbeda . Lokasi layar untuk monochrome dimulai pada alarnat
I, Bar1a, Kola. INTEGER;
BOOO:OOOOh scdangkan untuk CGA dimulai pad a alamat BSOO:OOOOh.
Karakter_Acak : CHAR ;
Agar pointer (Prr_Layar) menunjuk ke lokasi layar, pcrnyataan yang Se~n_layar t WORD;
diperlu kan dalam program berupa : Ptr_Layar : ·larlk_Layar;
BEGIN
PtLLayar :: PTR !Segmen_Layar. OFSEL AWAU ; CLRSCR;
{ ~bangkltkan karakter aca k sebanyak 2000
Adapun pencntuan segmen layar dilakukan dengan memeriksa isi yang RAHOOHIZ£;
terdapat padJ variabel bawaan dalam u nit CRT yaitu LastModt. Jib FOR I : = 1 TO 2000 DO
lAstAJode sa·ma den gan Jv!ON O (konstanta bawaan dalam unit CR1] auu BEGIN .

.295
Karakter_Acak :~ CHR (RNIOOM (128));
IF Karakter_acak >= t32 T~EH
akan menyebabkan tampiJnya huruf A (ASCII==65) pada pojok kiri-atas
WRIT£ (Karakter_Acak) ]a yar. Contoh yang lain ditunjukkan pad a Program 15-3, yang
END; memperlihatkan contoh mengakses memori dcngan mc:n ggunakan
MEMW.
1-lenentuken SE(li.4EH_" LAYAR
PROGRAM Ak . . s_~amor1;
IF LASTK>OE = ~ONO THEN
USES CRT;
Se~.>en_layar : = $6 000 ,;~:onochrome
VAR
ELSE
Var _word word:
~n_layar : : $SSOO; ( CGA }
BEGIN
CLRSCR;
Ptr_layar :: PTR (Sogmen_layar, OFSET_AWAL);
WRITELN ('APA KABAR ?');
var_word : = Hfl.frl[SB80 0: 0];
( Catak i~1 layar k• pr1nter $8000 :0000 unt"~ mo'>oc hro"'" )
WRITEUI ( LO (v ar _ wo r d});
FOR 8ar1a := 1 TO MAK9_BARIS DO
WRITELN (HI (var_word ));
BEGIN
REAOlN
fOR Kolom : : 1 TG ~AKS_KOl~1 DO
£NO.
WRITE ( LST , Pt~_layar-(BAria, Kolom].Karakter);
WR!TELN (LST)
Contoh akaakua1 :
END
END. APA KABAR ?
65
Pr v.~rom 15 -:!. 7

Program 15 -J.
XV.10 MI:NCAKSES MEMORI DAN POP.T SECARA LANGSUNC
Turbo P.ascal menyedia kan fa siliras untuk mcngakses memori sw:• Mula-mula program mcn ghJ silkan tu li san 'APA Kt\B.AR ;" rlimul., j dJri
langsung, berupa., array bawaan : pojok kiri-Jtas layar. SelanjumyJ rcrnvata:in :
MEM!segmen:~etl
MEMW!segmen:Otsetl var_word := MEMW!$B800:00CQJ;
MEML!segmen : ~etl
akan menyebabkan 2 byte mulai :1lamat B8(i(i:O(I()()h disa!in kc variJbel
MEM dipakai untuk rncngakscs sebuah byte dari memori ~ var_tvord. Nilai yang tcrka nd ung daL1m variabd ini rncrupakan data dJri
mempunyai alamat segmen :ofset. MEMW dipakai untuk mengabo karaktcr yang tcrlctak pada pojok kiri-Jtas layar (dalarn hal in1 vaitu
sebuah data bertipe word (2 byte) yang berada dalam memori beralllP brakter A) . Karena itu pcrnyataan:
J'..va] segmen:ofset. MEML digunakan untuk mengaks~s sebuah ~
benipe longint (4 byte) yang berada dalam memori beralamar ~n WRITELN ILO cvar_wordn;
segmen:ofset. Sebagai contoh :
menghasilkan byte pc:rt:11na dari Far_ll'ord )iJng menyatakanlvdc ASCII
.
Karalcter := CHR IMEM!$B800:0ll; dari huruf A, scdaugbn

rncmpakan pernyataan untuk memperoleh karakter yang beradl ~


, po;ok kiri-atas pada layar (CGi\) . Sed,mg kan :
WRITELN CHI lvar _worOJl:

tncngh.~silkan ni!:11 byte ttrtingg1 d.Jri l'or _l/•ord, van!:' m cnv.H.1k.1n ndJi
MEM!$BBOO:OOOOJ := 65: ~ibut dari huruf 1\.

2</f>
~I ) _1
~ ~ -~:,.'11

Selain untuk keperluan pengaksesan memori, Turbo Pascal juga Sebagai contoh , diinginkan aga r variabel Alemori_La yar yang rnencakup
menyediakan fasilitas untuk meng akses po rt (saluran untuk berkomuni- seluruh d~ ta p ada layar merupakan variabel yang beradJ p:~da rne m ori
kasi dengan dunia luar, seperti speaker atau ke yboarcf) secara langsung, B800:0000h. Bentu k pendeklarasian:
berupa array ·bawaan:
TYPE
PORT!nomor __portl LarllcLayar = ARRAYI1 .. MAKS_BARIS, 1.. MAKS_KOLOMl OF
PORTW!nomor_portl RECO RD
Kara lcter: CHAR;
K o m ponen array d:t ri PO RT berupa ti pc by te , sedangkan ko m ponen Atrlbut : BYTE
array dari PO R TW bcnipc wo;d . Contoh mcng,· nai pcngakscsa n port END ;
VAR
d itunjukkan p ada Program 15--i. yang dipakai un tu k mcngend al ik an
MemorL Layar : Lari!LLayar ABSOLUTE $8800:0000;
speake r aga r me n imbulkan su;;rJ hidu p-mati bcr:J,:< nti an.
Dengan ad an ya pendek larasian scpcrr i d i ar .. s. scandainya di bcr ika n
PROGRAM AkaesPo~t; pern yataan :
USES CRT ;
CON3 T MemorUayar r1 . 30J. Karalcter := 'C' ;
N~ R_PORT = 97 ; port pe ng endal t e p e ~ ksr
d;on t; e ber ep& porala t an l a inn y•}
pad a poj ok kan an-a tas (bar is J. kolom 80) abn mun cul hur uf ·c ·.

I
VAR Deng an m enggunabn kl ausa ab.>o lu r ~ . va ria bcl d ap ar J iatu r :lg.:r
Nilai BYTE; berada dalam vari abel lain. Dcnga n kara bi n, d ua nriabcl dapar ,
BEGIN
mencm pati m emori yang sa m a. Scbagai conroh da r at di lihat pada
CLRSCR ; Prog ram 15-5.

l'
WRITELN ('Te kan sebar an 9 t ~T.bol ' ) ;
WRITE ( ' untuk me n 9 ~k h i r i pro s ram. · ):
PROGRAM V~riaD& l _ADsolut :

<• - -- - ' •l
Ni1ai :: PORT {NHR~PORT] ; ~
<• Contoh penggunaan k i aus a ABSOLUT E •)
REPEAT
PORT {HHR_PORT] := Hi la\ + 3 ; aktifk a n s peA ker <• -------- ----------------- -- ------ * )
VAR
DELAY (100); tunda aesaat
St STRIIIG;
PORT [HHR_PORT] : = H\lai ; auara barhe nt t
Panjang_St : BYTE ABSOLUTE St ;
DELAY (1DO) ; t unda seaaat
BEGIN
UNTIL KEYPRESSED St :: 'TURBO';
END . WRITELH (Panjang_St) ;
St ::: 'PASCAL' ;
Program 15- 4.
WRITELN (Pan jang_St );
READLH
END.
XV.11 KLAUSA ABSOLUTE
Klausa absol11tt: disediakan dengan tujuan untuk mem ungkinkan pendck· Cootoh eksekus I :
larasian variabel absolut , yaitu variabcl yang tinggal pad a memori Y~ g
1

s
dikchendaki oleh pemrogra m . Benruk pendeklarasia n:

var...absotut: tlpe_vartabel ABSOLUTE segmen:otset: '' ~tram 15- 5.

298 2')9
----- -~ .- 1-.. ------....._~ -rxr ._. . . _ . ..

Pond,klu£

Panjang_St : BYTE ABSOLUTE St;


XVI FASIUTAS LANJUTAN
rnenycbabkan variabel PanjaugSt menempati byte !JCrtarna dari variabel
St. Karena itu, variabel Paujang--.St menyimpan nilai yang menyatakan
panjang dar! string yang terdapat pada variabel St.

Catatan: ;.; Ia us:~ absolute bisa juga dipakai pada konstanta bertipe

Bab ini mcm bicar,lkan subprogram lanjutan yang terdapa t pada unit
System. Disamping itu juga mcmbahas fasilitas lanjutan bcrupa in.-!ude
tilt·, d c klarasi fo rward, pengarah interrupt, masalah rckursi dan t ipt.:
.PH"'Scdur.

X'./1.1 SUB PROGRAM LANJUTAN

Subprogram bawaan lainny:t (dalarn unit System) yan g aka n dib :thas
bcri kut ini achlah Exir. Hair , ParamCotmt dan Param Srr.

Exit
hoscdur Exi; yang tak mcmiliki parameter ini bcrguna unt uk kcl uar d:lfi
! blo k pro ses. Jika Exit dicksckusi dalam suatu subprogram , 1~1.1b

I cksckus i tcrha.-i ap subproferJm sq;era dihenti b n (cfcknya adalJh k··lt!Jr


d.tri Stlbprogra!:J ) . i\;.JJbila f:n r dijalankan dalam program utama. abn

!f mcnvcbabkan c!: sckusi prog ram dihcnrikan.


P~oscdur ini sa ngat bcrmanfaa t untul< rnernudahkan pcmbu :u.m
program ya ng tersr ruktur, scbab bisa mengeliminir kehadiran pcrnpt.l -
:m Coto . G;1mbaran penggunaan prosedur ini ditunjukkan pada P~ogra m
16-1.

PROGRAM Contoh_EXIT;
USES CRT;
PROCEDURE TuliaAc&k;
BEGIN
RANDOMIZE ;
REPEAT
WRITE (CHR (RAN00«(258)JJ;
IF KEYPRESSEO THEN
EXIT
UNTIL FALSE
fNO; I akhir proaedur Tuli&Acak

8EOIN 1 program utam& I

300 3U l
/
Tull aAcak;
<• Contoh zengetahui jumlah par~eter •>
<• dal . . baria perintah (comm;ond line) •>
END.
<• ----------------------------------- •>
Program 16-1.
BEGIN
Kalau dilihar secara sepintas, kondisi pada UNTIL tidak memungkinkan IF PARAHCC'UNT < 1 THEil
selesainya eksekusi terhadap pcrnyataan yang ada dalam REPEAT- WRITELN ('Tak ada para~•ter d;olam b;orla perintah. ')
UNTIL. Sebab kondisi dalam UNTIL selalu bernilai salah (FA LSE). ELSE
Namun ada nya pcrnya taan: WRITELN ('Ju,.lah panunetar d;ola~~~ barie perfntah : PARAHCOUIIT)
EHO.

IF KEYPRESSED THEN
Ha1111 &k!Wkuei:
EXIT;
akan menyebabkan cksckusi terhadap prosedur TulisAwk dihentikan. A>BP1 <_j
bl au ada tombol pada papan-kct ik yang ditckan . Eksekusi selanjurnva Tak ada parameter dalam baria p~'intah
akan dilanjurbn ke pcrnya taan yang tcrlctak scsudah pern\'~ta~ A>BPt ANDO/iG KERET~ v OKAR <_J
Jumlah par~eter dalam barls perfntah : 3
proscdur Tu!is A cak .
!'rPxram 16 -1.
Halt
Prosedur Halt d1gunakan untuk menghentikan eksckusi po5ram
Paramstr
Bentuk proscdur: Fung >i Par,1,111Str memiliki bnltuk:

Ha:t !¥.ode<:e!uan Paramstr !!n de~s l

a tau dcngan ind<'ks bcrkisar antara 0 sarnpai dcngan ParamCvzlllt. Kcguna an


yaitu untuk mcmperolch param eter dahin baris perimah . Parameter
Halt bari s perint ah ditcmpatkan pad a indeks kc-1 ~ampai dcngan ParamCmmt,
KodeKeluar (bertty: word ) men yatakan kode keluar (exit cvde) program 'i. sedangkan inJcks ke-0 bcrisi nama file program. Contoh dirunjukkan
Nilai ini nanr1n:n ?isa diperik sa oleh program induk (akan dibahas padJ pada Prog ram 16-3.
unit DOS) au u Juh,u da lam DOS bisa dipcriksa dengan menggunilin
ERROR LEVEL Biasanya, eksekusi yang dihentikan karena terdap•t PROGRAM BariaPerintahi: ·
sesuatu kesahh:.c ;.}:.an menggunakan kode keluar tidak sama dengan noi
<• -------- ----------~----------------------- · ----- .,
(diatur sendi...-i c~ ?Cmrogram) . Per!u dik.etahui, prosedur Halt yan~ <• Fil e executable : BP2.EXE •)
tidak memiEb ~~er.cr sebenarnya identik dengan Halt(O). (t Contoh aengetahui parameter dalam baria perintah • J
(•
'JAR I : BYTE;
-- .,
Paramcount
Fungsi Parmr.C.-,..P;: :=~ memiliki para~eter. Kegunaan untuk mem!Xf" BEGIN

oleh banyalL"'l n ?"~~e--....cr yang dilewatkan dalam program melal ui baru WRlTEUI ( ' Fne pr·ogram : ', PARAI-4STR (0));
FOR I ; : 1 TO PARAI-4COUIIT DO
perintah (con---:.=""'..i ·:ne1 Contoh dapat dilihat pada Program Ill-2.
WRITELH ( 'Panunet•r kl!-', ! , ' ; . , PARAI~STR II) l
EUD.
PROGRAM ~- . , _ • r.~ · ,
<• ----- ------------------- ------ •> I:Qntoh e kaekuai:
(& F11e .,~ ' e . ~.EXE •>

303
I
·-· r
"
- ·p - - - -7 7 ·y

A>BPZ AHOOOG ~ETA


DCKAR <-J
File pro9raa~ :\ BP2.EX£ c•PROGRAM Garia; ------- - ---------- e)

Par..-ter ke-1 AIIDO!Kl (t


-----------------------------------------
Contoh program yang .,..nggunak&n cara IIICLUOE FILL .,
Par~ter ke-2 : KERETA (t Progra. inl dlal•oan pad"' file PROG_~,.PAS, •>
•>
Par ... ter ke-3

Program 16-J.
OOKAR (t . .dangkan fungsl Ulang_kar yang dl~kan dalaa prograa lni
C• dit. .patkan pada file SUBRUTIN.INC .,
c• ---------------------------------------- · ------------------ •>
Dalam baris pcrintah, tombol yang dian~g:1p sebagai pcmisah parameter
{$I SUBRUTlH. INC) <• ,.e ny ertakan til• ~unRUTJN . ItiC •l
ad alah spasi (#3~) dan rab ("lic9).
BEG HI
XVI.2 INClUDE FILE
WRITE (Uh.ng_k;.r ( 17 0 ~, 80) );
Inchui<" Jil,· mcrupab!! su3t!i r;, rc; un tuk menye nakan bagian program REAOLN
yang dituli ~ dah m file lain . Dc ngan mcr.ggu nakan eara ini, suaru EtiO.
prog ram dapat dirulis daiarn bcbcrapa ti le, sehingga program tampak
Progr.Hn 16 - 4.
keli ha tan tidak bcsar.
Supaya sel uruh bagia n vang ter kt ~t k d;:d am fiie yang terpisah dapat
Untuk m cngkomp ilJsi p!·o~~ .u: ,, fiit· p~, )( : _(;H\S-hh vang harm
dik o mplibsi , pada file ya ng mcn1abinya perl u dituliskan pengarah
dik o mpilasi.
kom piler l berbcnt uk:
Catatan : Nama file d .1lam p c::g:~rJi"; kv r:J;- .. : : holch ml'ng andun g narnJ
{SI Nam aFik }
dirckto ri. Jik J cxrcnsi•.ln cL~1 ii k :- _t U Jl.l . PA S. nama extension
I
! boleh ti da k ditubbr.
~-- minim;;\ bc-r cTa ' cl)U :Jh ~p:tsi

Sebpi CC::1 toh, tiL :;L: i\ !' c·r i N 1'~I.. . bn:~i fu ngs i bernama Ulang_Kar. XV1.3 REKURSI
Fun gsi in i dipcrgu nak,111 d,il~r:n p·op.1m yang disimpan pada fiie '·
Suatu subprogram Sct.lCIJ clnl\"a bi,J I li t;:, ::l!(f~ il d i:mya scndiri . C ar.!
PRQG_GR SS. bn:r-.1 1tu ,L,t:; rn fdc PROC_GRSS terdapat pengmh
seperti ini dikenal denga n nam a rckur,;i
kom piler benq'~ ·
Reku rsi banyak di tcra pbn rcrhJd ap fC ~!:J.t , .t L:h:tn ~·,1ng Japat dipc-
cahkan sec.ua indukrif Sc ba gJi LOn:oh .;c.rLth p:~d :t persoa lan untuk
{$1 SUBRUTININC }
mcnghitung nilai fakt o ri ~l . y:~ng mcrn1hk , rumusan :

hi F 11e SUB RUTIN. WC : 1 jika n = 0


n! =[
FUNCTlON Ulang _Kar !Kar: CHAR ; Jumlah : BYTEl : STRING; n X .. . X 4 X .) X ] X ] jika n > 0
VAR
St : STRING ; Pemecahan seca ra reku rsif:
BEGIN 0! = 1
FILLCHAR !St. Jumlah-+ 1, Karl ; { penghenri rt'kursi
StlOI := CHR Uum!ahl; n>O, n! = n X (n - I) ! { bngkah wdu)..,, }
Bcrdasarkan langkah d : a ta s, fun g~ 1 untuk ;::cmpcrokh faktc> nai sccarJ
Ulang_Kar : = St;
END,
rekursif adalah se bagai bc rikut :
Frmgsi 16 - 1. FUIICTlON faktorlal (n: BYfE ) . LOUOIF IT
IIEOlll
lsi file PR QG_GRSS: lF n:O THEil

304 305
ELSE
Faktor~l:=1 XV1.4 DEKLARASI SUBPROGRAM SECARA FORWARD

Faktorial = n • Faktcrial (n-1) Sebenamya dua buah subprogram dapat diatur agar bisa saling
END ; akhir fungal faktorial ) m cmangg il , asalkan salah satu da ri subprogram did ek!Jrasikan deng:m
forwa rd. G ambaran pendcklarasian denganfom•ard adal ~ h sc baga i bcrikut:
FwngJi 16- Z
PROCEDURE BacaKarakter (VAR Kar: CHAR; Menu: BOOLEAN );
Program 16-5 merupakan conroh prog r:tm untuk rncm bua t rahc! FORWARD: { ce!c:larasl forward untul< BacaKaral<ter }
faktorial yang mcnggunakan cara rckursi.
PROCEDURE ProsesMenu <Kar: CHARI:
PROGRA~ I T;obel f akt or i a 1 ; BEGIN
r• ------ ---- -- - -------- -------- - -- • J CASE Kar OF
(• Contoh penggunaan fungsi rekursi <) '1': WRITELN ('Subprog ram 1'1 ;
(•
(•
_u ntu~

USES CRT;
me1np•roleh nllai faktorial •l
. )
'2': WRJTELN i'Subprogram 2'1:
'3': BEGIN
BacaKaral<ter tKar. FALSE> :
WRITELN ('SUbprogram 3, Pilihan : ·. Karl :
YI\R I: BYH; END;
EN D;

Il
fUtlCTION Faktor 1a l (n : BYTE): LOilG111T; END : { al<hlr prosedur ProsesMenu
BEGI N
H n~o THEil PROCEDURE BacaKara l<ter: i dekiarasi aktual a acaK~ ' Jkter •
Fa x tor1al: =1 BEGIN
ELSE
Kar := READKEY;
F~ ktorla l := n • F4ktoria l (n- 11
j IF Menu THEN ProsesMenu iKar>:
l END; { al<hir prosedur sacaKarakter )
END ; { akhlr fungsi fak tor t al

BEGIN ( progra~ utama T .1 mp.1k pad a co ntor. pada kond1~1 rc rtcntu pro~cdur Jlro.<<'s.\lt !!ll
CLRSCR;
FOR I := 1 TO 10 DO
j mcm:mg g il prosed ur BacaKaraktcr, dan Ji lain pih ak proscciu r f3araKar.:l.:-
rer ada kcmungkinan juga lllcmanggi l proscdur f'roil's.ll,f ,·llt l. Yang pcrlu
WRITELN (1:2 ,'! :' , fioktorl al (1) : 10); dikctahui, scsudah su.Hu subprogram didckbra~ibn Jcngan )inward.
REAOLN parameter subprogram. bo leh tid:.~k di ruli sbn dabm pcndcklarasian
END. akrualnya .

Contoh eksekusl:

,, = 1 XVtS PROSEDUR INTERUPSI


21 = 2
31 = e Setiap proscdur yang diddi ni sikan pcn gg una dcng .tn tllJU.!JJ u nt uk
., = 24 kepcrl uan interupsi, haruslah dide kbrasib n dcng.1n mcrn·cn .J bn pcn ga -
~I = 120 rah illtl'rrtipt. Bentuk dekla rasi yang lcngbt' :
&I = 720
7! = 5o•o PROCEDURE Sublnterupsl !Flags, CS, IP, AX, BX. CX, OX. 51 Dl. OS ES, BP: WORDJ ·
81 : .03:'" INTERRUPT;
91 = 311 2 650 BEGIN
101 = 3aze s oo
END :
16 - 5.
- Writs. _ ...... ~~---·- ~ _,tti7">

Daftar parameter dalam prosedur interupsi mempakan nama- nama


register, yang umtannya tidak bol eh dipenubrkan . Jika dalam prosedur
intempsi terdapat~areter yang tidak diperlukan, bolch tidak
PROGRAN TlpeProsedurt;

<• -----------------------------------------
(t Canton prograa yang 3enggunakan tipe proa.aur •>
. )

disertakan asalkan ameter di sebelah kanannya tidak ada yang c• --------------------------------------------- •>
USES CRT;
digunakan sama s ali. Dengan demikian, prosedur interupsi yang tak
TYPE
memerlukan parameter memiliki bc:nt uk :
FungBoolear.: FUNCTJOU (X: IIITEGER) : BOOLEAJI;
Prosint : PROCEDURE (VAR X, Y : ItHEGER) ;
PROCEDURE Sublnterupsl; VAR
INTERRUPT;
Var_Fungs i FungBoolean;
BEGIN
Var_Proa Proslnt ;
H11a i 1,
END ;
Ni1ai2 INTEGER;

Contoh pcmakai:lll proscdu r mt<:rup>J akan dibalns pda B.1b XVII. {Sf+)
FUNCTI Otl Gen ap (flilai: lfiTEGER): BOOL EAJI ;

XVI.6 TIPE PROSEDUR ( ••nghaeilkan TRUE jik~ JIILAI berupa b i la n g ar Dulat

Turbo Paso) m cmun g kinkan ~u .Jtu proscdur :l tau fun gs i d1pcrlakukan BE Gill
sebaggi objek ya ng dapa t dibcri kan kc ,•ariab cl atau dilcwatkan seba g11 Genap:: HOT 000 (IH la i)
param eter. Bcrk aitan dengan h.1l in i tad;~pa t su aru tipc ung d inamJ bn EHO; { akh ir fungal Genap ) ~

sebagai tipe pro scd ur. Bcbcrapa C;..: nroh pl·ndckl arasian ti~·c proscd:1~.
PROCEDURE Tukar (VAR A , B: IfiTEGER);

TYP: { ~snukarkan iel par~m&ter A d~n B


Fungsoolean FU NCTION IX: INTEGERI: BOOLEAN;
Prosint PROCEDURE iVAR X. Y: INTEGER J: VAR
FungsiBacaint FUNCTION : INTEGE R Z : INTEGER; variabe l aementara }
BEGIN
Z: : A; A:: B; 8:: Z
Ada suatu pembatasan, yaitu suatu fungsi tidak bolch m cng hasiikan END ; { akhir proaedur Tukar
keluaran berupa tipe prosedur. {$F-)

BEGI~ : o r ·-, 9ram Ut&lla )


Varlabel Prosedur
CLRSCR;
Yang dimaksudkan sebagai variabel prosedur ad.1 lah va riabel yang Var_Fungs t : = Genap;
bertipe prosedur. Sebagai contoh (berdasarkan pendekbrasian tipe di Var_Proa .~ Tukar;
atas):
WRITELN (Var_Fungsi (100)); { identtk dengan WRITEUI (Ger>Ap (100) )
Ntla11 := 10;
VAR
Var _Pros : Proslnt: Nilai2 : = 82 ;

Var_Fungsl : F:.mgsoolean: Var_Proe (Nilatl, llilai2 ); { identik dengan Tukar (tlilai1, N1ldi2) )
WRITELN ('N i 1ai1: ' , Nila11, ' Nilai2 : ' , tHl ai 2);
REAOLN
~NO.
Dalam hal ini, Var_Pr,Js dan Var_F:111gsi dinamakan sebagai variabd
prosedur. Gamba ran lcbih lanjut d ~ pa t dilih at pada Program 16-6. Pregram 16-6.

lf\ ')
rzn· ~:.:;.._ ~- ... " ,... r- • gn 7
· ·-=; *Q d(§

Pada Program 16-6, dideklarasi~kn ua subprogram (berupa prosedur didcklarasikan di dalam subprogram), tidak boleh berupa subprogram
Tukar dan fungsi Genap) yang d' ompilasi dalam keadaan {$F + }. inli11e (subp rogram yang mclibatkan bahasa rakitan atau assembly) dan
Subprogram ini dapat diberikan k va riabel prosedur. Pemberian nil ai j uga tidak boleh berupa subprogram intem1pt.
prosedur ke dalam va riabel pro · dur berupa pemyataan:
_l Cara termudah untuk membuat keadaan {$F+} adalah dengan cara
var_Fungsl := Genap; menuliskannya di awal prog ram sumber.
var _Pros : = Tukar;
l
Pad a penugasan varia bel proscd ur, yang tcrlctak di scbc lah kan an
oper ator pcnugasa n (: =) hJn yJ bcrupa pcngcn:ll subprog ram saja
(pararnL' tcr tidak di scrukan) . Snudah pcnug asan
'l
l
1

j
Parameter Bertlpe Prosedur
Scpcrti tclah dij clasJ.. an Ji de pa n, tipc proscdur juga bisa digun akan
s.:bagai tipe ,l:tn p.1ramercr ~uatu subprog ram. Scba gai contoh chp at
dilihar p;1Ja Program 16-7. ProgrJm 16- 7 digunakan untuk mcn gh::Js il-
I
I kan model tabel scpe rti paJa Program 5-6. Perbcdaannya, proseJur
var_Fungsl := Genap;, lI Cet.lk!Tabtl pada Program 16-7 dapa t dipabi urltuk memperok h rahcl
pcma ngg ilan tcrluJap pro~cdur C ,·11.1p d:tpat Jibk ubn m c!.1 lui variabc! li
pcrkal i:1n atau pcnjum!Jh .m, ya ng diat ur mclalui p.1ramercr Opcrasi . Jika
yang dilcwatkan cbia m parameter Opcrasi adalah Kali, maka tahcl
proscdur VarJr111g.' i. Sebag::~i con toh: ·
I pcrkali J nbh yang dicc tak. Sedangkan jika param eter Opaas i dii si dengan
j~onlah, tabel penjum lahan ya ng di bentuk.
WRITELN !Var _Fu ngsi (100));

idcmik dcngan PROGR~

<•
TlpeProsedur2;
.)
WRITELN !Genap (100ll;

Bcbcrapa ketcntuan ya n g bcr k.1itJn dcngan tipc proscd ur:


I
{• Con toh program yang 01anggunakan tipa prosedur • J
(~ sebAg~i p~ramete( liubprogr.am

(* ------- - - - --------
)..,
II Pada pen ugasan ter h::~d::~p variabc! proscdur, tipc di kiri dJn di scbelah USES CRT ;
J
bn an operator pcnu gasan harmlah mempunyai tipe vang bcrsifJt e TYPE

kompatibel. Misal , pada t• Funga iMat =FUNCTION (X, Y: INTEGER): INTEGER;

{$f+}
var _Pros := Tulcar: fUNCTION Jumlah (A, 8 : ItlTEGER).: ItlTEGER;
BEGIN
varia~c! VarYros rnempunyai tipe
Juoolah := A+B
END; { akhir fungsi .Jumlah
PROCEDURE IVAR X, Y: INTEGER!
fUNCTIOII Kall (A, B: IIITEGER) : INTEGER;
yang scrupa dengan bentuk deklarasi prosedur Tukar
BE Gill
=
l<all : A t 8
PROCEDURE Tulcar !VAR A, 8: INTEGERl END; ( akhir funga l Kal i
{$F-}
baik dalam hal jumlah parameter maupun tipenya .
• Dalam penugasan va ri a bel p rosedur , subprogram yang diberikan kc PROCEDURE CetakTabel (Batas : IIITEGER ; Opera!!i : Fung!!iHat):
variabcl parameter h arus dikompilasi dalam keadaan {$F+ }, tidJk
bolch bcrupa sub program standar (s ubprogram bawaan dalam w1it Pada proaadur lnl
System), tidak bo leh b erupa subprogram berkalan g (subprogram yang OPERAS! adalah parameter bertipe pro!!edur

310 31 1
YAR JCo 10111, Brs, Haa11 : IIITEGER;
BEGIN
WRITE (1132 : 4);
FOR -Kola. ;: 1 TO Batas DO
I PROGRAN Tip•Pros•dur3;
<• --------------------------------------------- •)
(• Contoh ga.baran par~daan aifat tipa prosadur t)
(• dala. auatu ungkapan
<• -------------------- -------------------- ----- •)
•J

WRITE (Kolo.:4); { buat ~r kola.) TYPE


WRITELN; { pindah baria Fun gaiBacain t = FUNCTIOtl : IIITEGEII;
FOR Bra ; : 1 TO Batas DO VAR
BEGIN N' 1& ~ IIITEGER;
WRITE (Bra : 4) ; bu~t nooor b~ria ) Fungsi8a c &: FungsiBacalnt;
FOR Kol~ : = 1 TO Bra DO
BEGIN {SF+ I
Haail := Fungal (KolOf!l, Bra): FUNCTION Baciiint: IIITEGER ;
WRITE (Hasi 1 :4) VAR
HID; Datalnt : INTEGER;
WRHELN BEG HI
END; WRITE ('~asukkan aebuah bilangan bu1at: ');
WRITELH I pind~h baris REAO LN (Dat&Int);
Bacaint : : ~a taint
END; ' HID; ( akhir fungal Bacaint
BEGIN ( program utama } ($F-)

CLRSCR;
WRITELN (' Tabal perkalian: Jt 10): eEGIN { pr·ogr;a!IO UtilJfta l
CetakTabel (6, Kali); fungaiBac~ := Ba c~In t ; Penugasan nilai prosedur ka var iabel prosedur ;
- WRITEUI; llilai := Bac01lnt; -1 Penugasan ni l ai keluaran fun gsi
WRITELN (' label penjumlahan: J10) ; ke variabel bert1pe integer )
CetakTabal (8, JuMlah ); Et/0.
REAOLN
END .
Program 16 - 8.
Program U-7. •
Pada Program 16-8, pcrnyataan pcrtama dalam program utama
menyatakan pcnugasan nilai prosedur kc variabel prosedur. Scsudah
penugasan, varia bcl FungsiBaca akan bcrisi alam;~t dari fungsi Baca lrzt .
npe Prosedur dalam Ungkapan jadi pada pcrnyataan ini, tidak ada opcrasi pemanggilan tcrhadap fungsi
Dalam suatu ungkapan, tipe prosedur kadang-kadang memberikan Bacalnt. Namun pada pernyataan kcdua, karena variabel yang terlct:1k di
kerancuan. Biasanya, kcgunaan variabel prosed ur dabm ungkapan mu kiri operator penugasan tidak bcrupa variabel prosedur. pcrnyataan ini
pernyataan adalah untuk mcmanggil subprogram yang tcrsimpan di bcrarti penugasan nilai kcluaran (hasil) dari fungsi Bnwlnt ke variabcl
integer Nilai .
dalamnya. Namun kadang-kadang memberikan makna ya ng lain.
Dal.nn pernyataan pcnugasan misa ln n, jib variabel prosedur bcrada di Kalau bcr maksud mengakses mcmori yang bcrkaitan clcngan \' an;~bcJ
scbclah kiri operator pcnugasan, nuka Turbo Pascal .1kan men ganggap proscd ur var_prosechn, atur:mnya atblah s cb;~gai bcrikut:
yang di sebelah kanan operator adalah berupa nilai proscdur U;~d i bukar. • (!"z··\·ar_prosedur: menyatakan alamat yang distmpan Lblam \".H tabcl
memanggil subprogram). Contoh mengenai hal ini ditunjukkan pada prosedur t1 ar-Prosedur.
Program 16-8. • 0 (alvar_rroseJur: menyatakan alamat dari variabcl Par_prosdrtr.
312 31J
Misalnya ingin membuat suatu kondisi untuk memeriksa isi varia~
prosedur FungsiBaca berisi alamat fungsi Baca lnt atau tidak, pemyaJa::
yang diperlukan berupa: /
XVII FASILITAS DAlAM UNIT DOS
IF @'FungsiBaca = @Bacalnt THEN
WRITELN I'Sama'l
ELSE
WRITELN !'Tldak sama'l;

Pcnulisan
Unit DOS bcrisi scjumlah fJsilitas vang s:~ng:H bcrmanfaat untuk
IF FungsiBaca = sacalnt THEN keperlua n ~' cnJnganJn file dan sisrL·n1 o pera~1 DO S (MS-DOS ), antara
WRITELN I'Sama'l Jain umuk ·
LSE
WRITELN !'Tidak sama'l: mebkukan mtcrups1
mcngakscs LHlf:g:tl dan Jam Sls rcrn opcras1
mempunyai arti yang lai n . Dalam hal ini. bcrarti mcman ggil subpro- mcmpcro lch vcrsi DOS
gram yang disimpan dalam variabel prosedur dan juga mcmanggil m..:mt1cro leh ukuran byte rcr s1'>a dal:Jm ,lisk
subprogram Bacalm , b aru!ah h as il keduanya dibandingkan menjalankdn suacu program da ri progr;11n bin
mcmbu 3t pr og ram yang rin gga l m cncrap da!am mt:mon

Unruk bi~a mcmanfa arkarJ fa~il 1 LlS \ .lllg d!scdi J kan sco ra optimal,
kiranya perlu bagi pcmb aca t:nruk mc;;cia!am i huku-buku yang mem ba -
h as mcngenai DOS.
XVII.1 VARIABEL DOSIERROR

Unit DOS mcngandung scbu .1h nnJbcl . ya ng mcncatat kcbcrhasilan
atau kcgag.;,Lm suatu opcras1 dari bcrhagai mtin yang discdiabn dalam
unit DOS. Nama variabel terscbu t yaiw DosErrvr. Variahd ini berisi 0
(no!), jika opcrasi berhasil. Nilai yang lain menyatakan terjadinya
kesalahan. Bebcrapa kemungkinan nilai kcsalahan adalah sebagai berikut:
2=File nor J~rmd

Menyatakan file yang dilibatkan d:dam suatu o perasi tidak ada (tidak
ditemukan).
3=Path not found
Menyatakan path (linrasan ) tidak ditcmukan atau tak berlaku.
5=File access denied
Mcnyatakan pcngJksesan rnhadJp tile gJgal (Lihat Subbab XIII.6).
6= hzl'alid _1111, lrm1tl/e
Mcnyata kan kcsa!Jhan pcnanganan file.
8= NtJt ei!Oflgh IIII'IIIOry
Bnarti m cmori tak cukup .

.\1-1 315
10=lnvalid environment
Menyatakan lingkungan tak berlaku. Tipe DateTime yang disedi::~kan dalam unit DOS mcmpunyai benruk :
11 == b walid Jonnat
type
Menyatakar. format tak berlaku.
DateTime = record
18==No more Ji les
Menyatakan rak ada lagi file yang cocok. Year,Month,Day,Hour,Min,Sec:lnteger;
end;

XV11.2 MENGAKScS WAKTU


!" ila i yang bc rlaku unruk masing-masing j ifid:
Dcng~n mem:§:c::Jakan fasiliras dalam DOS, pengakscsan rcrhadap }·e,;r'
1981). 21/)') ! mcnyauk.~ rl talJLrn
rangg al arau jan pa da sisrcm opcrasi maupun pada file (data tcnrang .\Jcl ! l{!, l.. 1.2 i
{ menn ra ka n bub n }
wakru tcrakhir iii~ diperbaharui atau diciptakan) dapat dilakubn dengan Day 1.. 31
1~1Lid :th . { lllcn yatabn tan g g,Ji
}-{ '''" 0 .. 23 I m c nya t :~k a n jam }
Proscdur yar.~ bcrkcnaan dc nga n pcngakscsan waktu: G e1 Dar.: ( va r .\lin n.. 59 { rncn~·Jrakan mcnn
Talllm ,Bulan, T::r z~,l.' KodeHari: Word) Prosedur GetDate be rguna un ruk s ~,· 0 . . 59 I Inenyarabn dc rik }
mcmpcrolch rar.ggal pada sisrcm opcrasi. Kawasan nilai untuk masing-
m J~ in g vanabe i adalah sebagai bcrikut: Talwn 1980 .. 2099, Bulan 1. .1 2,
unpackTime fWT: LongJnt; var RecordWT: DateTJme>
T an_e.i?a! 1.. 31 da r: KodcHari 0 .. 6 (O= minggu, 1 =senin, 2 = sclasa , .. .).
Proscdur ini dipakat unwk mcc g uraikJn data w.1kr u :-·Jng adJ pad&
parame ter WT mcnjaJi d ata \vaktu benipc Dart[i,,JI'. 1-!a s il dircmp.1 tbn
setoate !Tahun.Bulan,Tanggal: word> pad a parameter Rerord li'T.
Pro~cdur S.-rD.:: :< digum.ka n untuk men ga tur tan ggal pada sistcm
opcrasi . Pada p ·.::Ja nggilan proscdur ini, j ika tcrdapat nilai yang ra k
berl aku (di lu :H ~:~\l"!ltua n bwasa n ~·a n g bcrlaku), ranggal pada sistcm
operas i tidak bc r..' bah .
I I--- I~~ I Ml~_frJ
PacKTJ~e _ '
-~
I

GetTime <var Jam.Menlt,Detlk,Seperseratusotk: Word>


Prosed ur ini digunakan untuk memperoleh jam pada sisrem operasi.
Kawasan nilai has il adalah Jam 0 .. 23, Menit 0 .. 59, Detik 0.. 59,
II i ' Year pon--th

Tlpe DateTJrne
~
_J
rl ]
L
I
I
Tipe Longlnt
J
SeperseratusDtk 0 .. 99. Unpaci<Time

SetTime !Jam,Menlt,Detlk,Seperseratusotk: Word> Gambar 17-1 . Konvusi tipt Da;tTimt - Longlnt data tanggal dan jam

Prosedur Set Time bermanfaat untuk mengatur jam pada sistem operasi.
Kawasar; nil ai U!ltuk penycrelan jam dapat dilihat pada prosedur a GetFTime <var f; var WT: Longlnt>
GetTime. Jib tercapa t nilai yang tak berlaku pada saat pcngaturan, jam Dipakai umuk mcmpcroleh tanggal dan jam dari sua tu file, yang
men ya takan saar rcrakhir diciptakannya file . V;~ri abcl file f dapat berupa
pada sistem operasi tidak berubah .
sebarang ripe file . Syar;~r periggunaan pr0scdur ini, fil e vang bersangku t-
PackTJme !var RecordWT: DateTime; var WT: Longlnt> an harus sudah J ibub. Snclah pcman gg d,J11 proscdur. Jata ranggal dan
Prosedur PackT' "' ~ digunakan un tuk memampatkan data waktu yang jarn dit ernpat kan pa d.1 parameter WT. Data tcnr.mg unggal dan pm
ada pada param e ter RecordWT (bertipc DateTime), menjadi data wakru selanju rnya dapar diu raikan dengan mcnn n ggi l proseJur UnpackTimc.
dalam ukuran Longlnt. Hasil ditempatkan pada parameter WT. Kesalahan yan g rnungkin rerjJdi saa r pcmanggilan proscdur ini akan
dilaporkan da lam variabcl DosFrrM, berupa nilat b (/11r •alid _til.: handle) .
316
317
setFtJme M'tr f; WT: L.onglnt> WRITE ( 'Tahun
(!980 .. 2099): '); RfAOUI (hhun );
Prosedur j 111 .li ~ un.tk :m untuk mengubah data tanggal dan jam pada file SETDATE (Tahun, Bulan, Tgl) ;
sesuai dcn~.1 11 nibi p.Hh parameter Waktu. Seperti halnya pada prosedur END ; atur tans'.lal

GttFtimr, nri .tbcl tile ( dapat berupa sebarang tipe file, dan peman ggilan
mesti dilotkuk:lll tcr hadap file yang sudah dibuka. Kesalah an yang BE Gill ( • progra,. utua • )
mungkin tt'r jadi ju!(il sama dengan pada G etFTime. TampflkanTanggal;
UbahTanggal ;
TampflkanTan ggal;
Contoh pr• ·~ r.•nl : REAOUI
_Prog r. 1., 11 · 1~· I n• c •ll~' crl i ha tkan co ntoh pcngaksesan tan gg al, berupa EIID.
p enampi i. 111 1.111K;;.tl .1 .111 pc:ngubah an tanggal pada sistem operasi DOS.

PROGRAI-l ''~ "•ul•"u ()•l~ i etem;

<•
. )
Contoh okaakuei :

Tanggal kini : Sela sa - 30/ 5/1989

.
(• Con tot' pro\JrA'" untuk memperc l e h o ar. mengubah • )
TANGGAL BARU :
(* tanu •J"I fl'"'" el•t•" operas i *) Tanggal (1 . . 3 1 ) : 31
)
(• Bulan ( 1.. 12) : 5
USES D(l:t ; Tahun (1 980 . . 2099) : 1989
Tanggal k i ni : Rabu- 31/5 /1989
PROCEO Uil~ lo,.pllkonTanggal;

VAR Program 17-1 .


Ha rl ntr<IIml" J :
KodeHari : t!OR D;
Tgl , Au l ~o~~n, T•1 1un ,
Prog ra m 17-2 dalam bcnruk . EX E d ig tt rJ. rbn un tuk rn cmpcrolch
BEGIN
informasi dari suaru fik. Scbcltllll prost:d ur ( · ··t r: "! :m,· di! ibatkan, fi le
GETOJIIt I l"huo> . ll u la n, Ts 1 . K cd sH ~ri) ; { p oro leh t~ ng g a l 1

CASE ~'"Jo lt•r I Of


yang akan dilihar inform•si waktun ya d ibuk .1 rcr! chih d,1hulu mei alu i
pernyataan :
0 : H • t ' 1 : !I · •4 1nggu ";
· n.ntn' ;
1 : lia r' I : .
ASSIGN Cf, PARAMSTRC1Jl;

.
:. '1\elau • ;
2: liar· I RESET CfJ;
3 : Har I : .
· nat>u' ;
: Harl : ~ 'K.,.Ia';
'.l uout' ; Sesudah pclaksanaan GetFTimt• file ditutup dt:lfg .m C LOSE.
5 : Hart : •
8: ll•r'l : . 'lla btu';
PROGRAN LfhatTanggalfile;
ENO; I e~ h lr CA~f
WRITELII ( ' T•nvll• 1 klnl : ' Harl, ' - c• -------------------~------- --------- - --- --- -- - - ------------- .,
raJ. ·;· . Bulan, ' /', Tahun) C• ffle progra.: TGLFILE.EXE )

d!re~ajakan
0

END ; C• Untuk melfhat data waktu tvrakhlr pada aa•t fila •l


<•
.
atau dfcfptakan *)
(* Bentuk P8rlntah: TGLFILf nama - file
PROCEDUill! f}b ehTanll~al;
<• ------ - - - ----~--------- - ---- -- --- - -- -- --- -
)
VAR *)
Tgl , llu l •" • lanun WORD ;
113Es oos ;
BEGIN
WRITELII ( ' TAIIOOA L BARU : ' ) ; liAR
WRITE ('(ar~oa l ( 1 .. 31) : '); READLII (Tg1);
WRITE r •aulan 11 . . 12) : ' ); REAOUI (Bulan);
, FILE ;
Waktu lONOIIIT;

318
AecWaktu: DATETII~E; XVII.! MEMPEROLEH STATUS DISK
Ada dua buah fungsi dalam unit DOS yang dicujukan unruk memperolch
BEGIN informasi jumlah byte dalam disk, berupa DiskFree dan DiskSize.
IF PAR~OUHT > 1 THEN
BE'GHI
DISkFree !Ortve: Wortll
WRITELN ('Terlalu banyak par~eter.');
Fungsi ini dipakai untuk me mperolch informasi jumlah byte yang bebas
HALT
END;
(bdum dipakai) pada disk yang terletJk p:~d.1 penggerak disk \·;;ng
IF PARAMCOUIIT : 0 THEN memiiiki kode sesuai dengJn ni la i Dri1•e . Kelu arJn fungsi hertipc
BEGIN Jongint .
WRI TEL N (-' Paramflter tak ada.');
Kodc Drive:
HAL T
0 ~ penggcrak disk nng ak tif (deja~t!t)
END;
1 -+ pcnggerak disk .A.
{$1-l
2 - penggcrak disk n
ASSIGN (f, PARAHSTR( 1)}; parameter 1 sebaga i r..;m;.. f'ile } dan sctcrusnya.
RESET {f); buka file
Jika Drive bcrupa ni lai vang tak berlaku, fungsi ini akan mmghasilk.111
{$1+}
nilai -1 (minus satu) .
IF IORESULT <> 0 THE~
OISkSize !Drive: WOrd)
BEGIN
WRITELH ('File tak ada atau t e rdapat ~esalahan yang l ain . ' ); Fungsi DiskSize digunabn untuk mcn J3 p:nkan informasi ukur;w dari
HALT di sk vang terlctak pada penggcrak disk bcrkod c Dril'i'. ,\ lcngcnai ni!Ji
END; Dril'<' sama dcngan pada fungsi DiskFrec.
HJsil fungsi bertipe longint, dan menyatakan 11il.ti dalJm sJtuan byte.
GETFTIHE (f, Wnktu );
UMPACKTIHE (Waktu, RecWaktu};
peroleh data w• • tu pada fi le
urai ka n data WAKTU ka RECWAKTU ) •
~
ScandJ in )'a nilai Dri11e tak bcrlaku, fungsi ;1n i mcm bcribn hasil berup:t
- 1 (mi nus satu).
Contoh program yan g mclibatkan DiskSi:u dan DisFrce dap :n
WITH RecWaktu DO disajikan pad a Program 17-3.
BEGIN
WRITELN ('Data saat file terakhir diremajakan/diciptakan : '); PROGRAM UkuranDiak;
WRITEUI ('Tanggal: , DAY,'-', f.IOIITH, '-',YEAR);
WRITELN ( 'Jano : ', HOUR, ': ', Mill, ' : ', SEC); USES CRT, 00!!;
END; BEGIN
CLRSCR;
CLOSE (f); { tutup file } WRITELN ('KapaaitAB d isk -·
WRITELH ('!!isa disk yang •aaih kosong -
- . DISKSIZE{O) :
-. . DISKFREE {0): 7,
7, byte.');
END. byte . ') ;
REAOLN
Contoh ek . . kusi: END.

A>TGLFILE LIHATJAM.PAS
Contoh ekaakusi :
Data aaat file terakhir dir&Majakan/diciptakan:
Tanggal : 10-12-1989 k&paa itas diak 382498 byte .
: 10:44 : 18 Slaa disk yang aaalh kosong 125952 byte.

Program 17- J

J2l
.£.--
·rs WUI'MJ !!!::L . ...........!
__.._~ il

XV11.4 PENANGANAN FILE '*. *' berarti sem ua file


Untuk keperluan penangana.n file, disediakan suatu ripe bawaan bernam;.
'*.PAS' bcrarti scmua file dengan extension . PAS
SearchRec. Tipe ini berguna untuk pengaksesan direktori. Bentuknya:
Mengcnai atribut (parameter Attr) bisa berupa konstanta bawaan (sc:pcrti
rype ReadOnly, Hidden), atau penjurnlahan dari konstanta-konstanta tcrsebut.
searchRec = record Atribut digunakan untuk menambahkan beberapa file khusus yang
Fill: arrayl1 .. 21 1 ot byte; diikut-sertakan pada file normal. Hasil akan ditcmpatkan pada par:1:nctn
Attr: byte ; Rec....s yang bertipe Search Type .
ilrne: longint;
Size: iongint; Kesalahan yang mun gkin terjadi (dapa t dipc riksa pada va na bcl
Name: strlngl121; Dos Error) bcrupa:
end;
• kodc :2 (File ttot found) , yang bcrarti wtry tak ditcmukan .
Fit'ld Fill dicadangkan bag i DOS. Field Attr berisi atribut file, Tim e terd iri • kodc 18 (.'Vo more files), yang mcnyatakan tak ada lagi entry \ ' Jils
cocok .
dari data tanggal d an jam dalam bentuk ya ng dima mpatkan (bisa
diuraikan den ga n m c mangg il rrmcdur UnpackTimc), Size mcny;Haka r.
ukuran file dalam satu:m byt e, dan Nam e bcrisi nama file. FlndNext tvar Rec_s: searchTypeJ
Bcrkaitan den gan atribut file, tcrdapat sejuml ah konsran ta bawaan Prosedur ini dipakai untuk mclanjurkan pcncarian wtry yang co.:-u k
scbagai berikur: dengan spesifikasi file dan atribur pad a FindFir~t. Hasil ditem patkan paJa
p:1rametc.:r Rec_.s yang bcrtipe S earchType.
const Kcmungkinan kesal ahan bcrupa nilai 18 (No more files). Bisa dipcnksa
Read Only = S01; pad J \·ariabcl DosError.
Hidden = $02; Contoh program dapat di!ihat pada Program 17-4 . Pada program mi .
svsFile = $04;
j ib tidak ada pJramcrcr dalam baris pcrinrah, mab jenis file dispc,: ;t:,;asi
VolumiD = $08;
Directory = $10; dc:ngan '*. *'. yang bcr;:m i scbarang fik (dalam hal nama dcpan maupun
Archive = $20; cx'ettsion-np ). Jcnis file dapat ditcntuk;w melalui parameter pcnam a dari
AnyFile = $3F; baris pt:rinr ah LDIR. EXE. Parametc~ kcdua pad a FindFirst (bcrupJ
Ko nstanta lain yang berhubungan dcngan nama file arau dircktori: ANYFYLE) menya tabn berlaku unruk scbarang arrib ut (yang mem::-
nuhi syara t scs uai dengan jcnis file) .
comstr = strlngl1271; { string barls perlntah 1 Proses pcnampilan isi direktori dilakukan dcngan mula-mula menja-
PathStr = strlngl791; { string path file penuh J lankan FindFirst. Kemudian, selama tidak terjadi kesalahan (ditunjukbn
DlrStr = strtng£671; { string drive dan dtrektori } dalam DosError, berupa nilai 0) , langkah yang dilakukan adalah :
Namestr = strlngrBI; { string nama depan file J
ExtStr = strlng£31; ( string nama penuasan dart file J menampilkan data berupa nama. ukuran dan atribut file
rnenjalankan prosedur FindNext.

Fasilitas yang "berhubungan dengan penan ganan file: PROGRAM L1h&t01r•ktor1;


<• ----- ----------------------------------- --- •>
(• File progr . . LDIR.EXE
FlndFirst !SpesFIIe: Strtng; Attr: Byte; var Rec_s: searchrypel •J
(* Untuk eenampllk an nama fll• da l&M direktori •J
Proscdur ini · berg un:~ untuk mcla cak pcrt ama kali suatu mtry di dalam
sisrem file MS-DOS , yang scsuai den gan spcsifikasi file SpesFilt.
<• --------- --- ----------- ---------------- ---- •)
USES CRT , DOS ·
Parameter SpesFile boleh rnengandung karaktcr wild-ca rd (yaitu karakr~
? atau *) . Sebagai conroh: liAR

32:2
323

InfoDir•ktori : BEARCHRtC; cetFAttr fvar f; var Attr: Word)
JenlaFI1e : Dllr.ITR; Prosedur GetFAttr digunakan untuk memperoleh atribut dari suatu file.
BfOIM
· Pada saat pemanggilan prosedur ini, f haruslah bcrupa varia bel file
(dengan sebarang tipe file) dan sudah dikaitkan dengan nama file (melalui
Cllr.ICJI ; Assign), tetapi file tak perlu dibuka.
If PARAHCOUHT > 1 THEW
DEOIH
Kemungkinan kesalahan yang terjadi (dapat dipcriksa pada variabd
DosError) berupa:
WRITELH ("T•r1a1 u b~nyak par ... ter.") ;
HALT
EHO
]. Kod c 2 (Mcnyatakan file tak ditemukan )
::!. Kode 3 (Mcnyatakan path tak berlaku)
ELSE 3. Kodc 5 (Mcnyatakan pen ga kscsan tcrhadap file gag a!)
IF PARAHCOUHT < 1 l~E H

JoniaFil• := ·• . • ·
C o ntoh disaj ik.an pad a Prog ram i 7-5.
ELSE
J.,leFil• :; PA~I:.><STR(1);
PROGRAM llhat4 t lbut;
(.
•)
WRIHLH ('Ial Olr•ktorl : '); (a Fila executable : ATRIB1 .EXE a)

.
WRITELH; i• Untuk eellh&t atrlbut auatu file •)
FINOFIRST (JenlsFile , ~YFILE, InfoOirektorl) ;
c• )
IF DOSERROR <> 0 THEN
USES DOS;
WRlTELH ('f11• t&k d1~~~an atau terdapat kesalahan');
VAR
WHILE DOefRROR ; 0 DO
BEGIN Var_Fil fiLE;
t.tr ib WORD;
WITH Ir>foO I r"ktorl 00 Bf.Giri
attr);
WRITELH (H"""': 12 , Slze : S, ' byte' , ' atribut
FIHONEXT (Infodiroktorl);
J AS3IGN (Var_Fil, PARANSTR(1));

END .
END; i GETFATTR (Var_Fil, Atrib);
IF OOSERROR <> 0 THEil
peroleh atribut fila }

Cont<>h ek . .kuel :
1 I!EGIH
CASE OOSERROR Of
2 : WRITELN ('File tak dlt. .ukan');
3: WRITEUI ('Path tak dit-ukan atau tak barlaku . ');
4 : WRITELH ('Pengakseaan terh&dap file gagal. ');
A>LDIR a . •
END
EIID
Ial Dl,..ktorl :
ELSE
18301 byte atrlbut ; 39 BEGIN
28480 byte atrlbut = 3t WRITELN ('Atrlbut file : '); · I
23239 byte atrlbut 32= IF Atrlb AIID READOIILY <> 0 THEH
4980 byte atrlbut % 32 WRITEUl ( 'F 11e hanya-baca ·) ;
.MAP 2914 byte atrlbut : 1
If Atrib A/10 HIDDEri <> 0 THEN
WRITELN ('File terae.bunyi');
IF Atrlb AIIO SYSfiLE <> 0 THEil
WRITELN ('Fila slat .. '};
17-4. IF Atrib A/10 VOLUI4EIO <> 0 THEil

J 25
\' "<o- .

WRITELN ( '10 I/o lUll');


.... 2. Nama depan file {Hasil disimpan pada parameter Nama)
IF Atrib AtiO DIRECTORY <> 0 THEil 3. Nama extension file (Basil disimpan pada parameter Ext)
WRITEUI ('Na.ea direktorf');
Contoh dapat dilihat pada Program 17-7.
IF Atrib AUO ARCHIVE <> 0 THEil
WRITELN ('Fila Archive (noraal)'J;
PROGR~ Contoh_FSplit;
END; USES DOS;
END. liAR
Path PATHSTR;
Contoh eksekusi:
Diraktori DIRSTR;
Namafil• NA~ESTR;
A>ATRI 81 CQt.lt1AIIu.COO
N~ma Ex t EXTSTR;
Atribut f il a :
F i l e Arch i ve (norma l )
BEGIN
Path :: '.A: \PROGRA~t\ATRIB. P AS ' ;
Progr~m 1i - 5.
FSPLIT (Path, Oirektori, llamafi 1, llamaExt) .
WPITEUI ('Bagian diroktori : ', Dirilktori);
setFAttr !var f : Attr: word>
Prosedur SerF.-lttr berguna untuk mengubah ar ribut dari suatu file. Saar WRITf LN ( • ~t;,,.a de pan f i 1 e llamaf i la);
WRITELN ('Nama e xte~ ~ion UamaExt);
pemanggtlan pros cdur ini, f haruslah berupa \·a riabel file yang sudah
READLN
dikaitkan dengan nama file dan file tidak dibuka. Kem un gkinan
ENO.
kesalahan ~cperti pada GcrFAtrr.
Prog ram 17- 6 rncnunjukkan contoh mcnggunakan SerFAtrr. Contoh aksokus i:

P ROGrtAH ~t~rAtribut ;
Bagian direktor i :. A: \ PR OC" A/-1 \
<• --------------- --- ---- -------------------- •J

.
Uua depan file ATRIB
(* Contoh program untuk m&ngubah atribut file •J
"""'" extension . PAS
)
<• -
USES DOS;
Program 17-7.
liAR
Var_File FILE;
FExpand !Path: PathStr>
Atrib WORD;
Fungsi FExpand mcnghasilkan nam a lengkap dari suatu fik yang berada
BEGIN
Atrib : : REAOONLY; ( atribut hanya b&ca, tidak biaa dihapus I pada parameter Path . Misalnya, direktori y:mg sedang aktif adalah A:".,
ASSIGtl (1/ar_Fne, ' DIREKTOR.14AP'J: (file yang diatur atributnya maka:
barn&aa DIREKTOR.MAP
FExpand ('ATRID2.PAS') 'A;\ATRIB2.PAS'
----+
SETFATTR (Var_Fila, Atrib); ubah atribut} ,
FExpand ('* .PAS') __. 'A:\*.PAS'
END .

Program 17- 6. Keluaran fungsi Expa11d untuk huruf sclalu dinyatakan dalam huruf
kapital.
FSpllt c Path: Pathstr: var Dlr: DlrStr: var Nama: Namestr: var ext
ExtStr) Fsearch!Path : PathStr: DaftarDir: string>
Proscdur FSplit dipakai untuk menguraikan nama file pada parameter Fungsi FSearclz digunakan untuk meb cak suatu fik dalam daftar
Patlr menjadi ttga komponen berupa : dircktori . File yang akan dilacak ditcm patkan pad a parameter Parh .
1. Nama direktori (Hasil disimpan pada parameter Dir) Parameter DajiarDir berisi daftar dirckturi. Penulisan antarnama direkto- ·

326
327
-.. ---- - - ----- 1i'W5w i& . . . . ) .• ~~-

ri harus dtpisahkan dengan titik koma (seperri penulisan direktori dalam XVII.5 MASALAH INTERUPSI
perintah DOS yang bernama PATH).
Keluaran fungsi : Turbo Pascal mcnycdiakan fasilitas yang bcrkaitan den gan imcrupsi
secara sojtu•are, berupa fasilitas:
nerupa string kosong. jtka file tidak diremubn dalam daftar
direkrori . un tuk mclakuican interupsi baik yang bcrhubungan dcngan ROM-
BlOS maupun DOS
Berupa path dari direktori dan nama file, apabila fi k ada pada
di rckturi yang sc·dan g aktif .:t tau sa lah satu dircktori yang tclah umuk mcrnpcro leh atau mcng ganti alamat da!Jm vckro r imerupsi.
ditcntukan dalam DatiarDir. Bcrkairan Jengan f.ts ilita s intcrup s i. t cnbpat tipe bawaan y:~ n g
Pc rlu dik~ ta hui. pcla cabn/ol.'ncari;m Sl.'b lu d i1nu i:J i pJdJ di~L·ktlJ ri yang dmam:-~ bn R <:·~ WI'ri. Ddin1si t1 r c ini :~ c blah ~ l·b;Jg.ti herii..ut:
SCl~:n g aktif ~ari d i~k dri\;e yang scdang <~ktif.
type
<.. .ontnh progr:t m J is.1ji kan pad a Program 17-- 8.
Registers ~ record
P~OG P. AI-4 CQrlt:or•FSearc h ; case Integer of
uSES DOS ; 0: !AX.BX.CX.DX,BP,Si, DI.DS ,ES,Flags : word l;
VIIR 1· tAL,AH,BL.BH .CL.CH .DL.DH : byte);
Pat h Pat hS tr; eno;

BEO Ill Tampak bahwa tipc Registers bnup:~ ,•,u;·,mt ra,•rd (Lihat X.-t). Pad a ripe
ini. /\L rncnyJtakan ni lai byte o rck rcncLh d .tr i AX dan .1\H meru p1bn
-~&th: : F1hllorch ('baru.o b f ','PROO PAS ; PROOOB');
IF P~th = '' THEN by te o rde tingg i dari A X (AX. HX . C >-: ri.lll ~c bagainy.! dikcnal sclng:~ !
WRITE LN ( 'F lle BARU . OBF tilk 01da ! ')
register).
ELSE

WAIT ELN ('Pilth: Path);


REAOUI
lntr!Nmr_lntr: BYTE: var Reg : Registers!
END.
Prosedur Jnrrdipakai unruk melakukan intl'fupsi J cngan nom o r inrcru p1
d iberikan pada paramctn 1\i,r_ /nt r. M cngc nai par:unl.'tc r v.1 riabcl Rr·.r:
Cont Oh eksakua i:
(yang bcnipe Rc,l?iJtt'r.i) rcrganrung_Jari nomor intcrupsi yang di lak sana-
Pat h= PROG08\baru . dbf kan. Umumnya, sebclum pc manggii:ln p rost:dur l11tr, parameter Re.f!
dibcri nilai awal terlcbih dahulu, sebag;:i nilai masuka n dari register.
Program 17- 8. Adapun sesudah pelaksanaan intcrupsi. biasanyJ regis ter tertcntu akan
bcrisi nilai kd uaran.
Pada Program 17-16, pemanggilan Untuk menget ahui lcbih lanjut tc:ntatJ g interupsi, perlu kiranya bagi
pcrn baca unruk mendalami buku yang mernbahas pcmrog ramJn DOS
FSearch ('baru.dbf','PROGPAS;PROGDB 'I
dan juga buku yang mengupas ROM-BIOS .
menyarakan pencarian fi le 'baru . dbf mula-mula dilakukan pada dirc.-ktori yang Contoh mengcnai interupsi mi s~l nya un t uk ntengatur bentuk / ukuran
akcif._j~ka tak ada , pencarian d ilakukan pada s ubdirektori PROGPAS. KaiJ u tak kursor. Hal ini dapat dilakukan dcnga n mcnjalankan in tcrupsi ROM-
ada juga , pelacakan dilakukan pada PROGDB . Seandainya pada dirc.-krori yang BIOS 10h (h=hek sadesima l). lnisi alis as i 1crhad:1p register yang diperlu-
tcrak hlr. til e ta k ditt"mukan , maka keluuan fungsi berupa string k osong. P~da kan untuk keperluan ini:
contoh .:ksekusi pro g ram. tc-rnnta P<lfh berisi PROGDB \baru .d bf. Hasd 1111
Register AH diisi dengan nibi I
tnen yatJkm bahwa file 'baru . dbf terletak pad a subdirekton PROGDll .
Register CH d ibcri nilai bcrup:t nomor garis dan awal kursor
Regis ter CL dibcri nilai bcrup:1 nornor gJris d .tri akhir kursor .
328
329
OH.- Raga.AH :~ 1; { Atur tipe kuraor )

~ sO·
§
Regs . CH :: Poa_Awal;
awal
1L Regs.CL ::
INTR {110,
Poa_Akhtr;
Raga);
I
! 2L END; { akhir proaeour Bentuk_Kuraor
~ ~
:D __. 1 ,, ~ PROCEDURE Kuraor_Norm~J;
BEGIN

7tj !
6 ~- awa l
7 L___ - 3Khir
6
7
I

D -
!

akhlr
B~ n tu k _Kura o r {e , 7 )

E>IO; ( akh i r proseour Kursor _llorma l

PROCEDURE Kv raor_Bea.r;
!a! (bl (C) BEGIN

~ursor
I
Bentuk_Kursor {0 , 7 )
l ! a ) Penomoran garis benn;t

LJ !b) Bentuk kursor norma: END ; { £khir proseour Kursor_Besar


!c) Bentuk kursor terbesa r
- - - - - -- - - · -- - - -- - -- PP.OCEOURf Kursor_Semouny i
BEGIN
Gam bar 17-2. !lustra Ji prnom oran gan"s O(~tul. ltwrsor un cuk CGA
Be~tuk_K ur sor (32, 0)

END; { akhir prosedur Kursor_Sembunyi


Mengenai kemun gkii;an nilai n o m o r f:Jris bcr k isar :111ta r a 0 sa mpai
dengan 7 (u ntuk yang menggumb.: •darrcr CGA ). K ursor norm3l PROCEDURE Baca_Enter ;
mcmpuny a1 nil::~i n o rnor aw <d 6 ch n :-;;; 3; n .:·mo r ak hi r 7 . Ku ,sor rcrbcsar CONST
dapat dipcrolch dengan mcm bcribr: n :i Ji a \\·al n d ;; ., nib i ,1 khir 7. Jib bit ENTER = •13;
BED IN
ke-5 atau kc-6 dari regist er C H dib:· ri ni!ai l, kur~or akan tidak tampak
(tersembunyi) . REPEAT UNTIL READ~fy : EIITER;
WRITELN;
Contoh program dapat dilihat pad a Progr am 17- 9, yang memperli-
END; { akhir prosa cur Baca_E nter
cara mengatur kursor berbemuk bcsar. hilang dan normal.
BEGIN (• progr~ utama t)
PROORAH Kuraor; CLRSCR;

,. ------------------------ ------- ------------ •> WRITE ('Perhatikan kursor da1am keadaan normal - Tekan ENTER' J;

,.
I* Contoh progra. untuk . . ngatur bentuk kursor •J
-nggunakan proaedur IIHR
(Barlaku untuk COA) •>
) . Baca_Enter ;

WRITE ( • Perhat 1kan kuraor berukur .. n beu.r - Tekan EIITER ·) ;


kuraor_Beaar;
Baca_Entar;
:: ------------------------------------------- •>
WRITE ('Perhat1kan
kuraor tidak tampak - Tekan filTER');
USES CRT, DOS; Kursor_Se•buny1;
Baca_Enter ;
WRITE ('Perhatikan
PROCEDURE Bantuk_Kuraor (Pos_A~~l . Pos_Akhir : BYTE);
Kursor_Noraa 1 ; ~ursor noraa1 lagi - Tekan ENTER');
VAR
Baca_Enter;
Rags : REGISTERS;
END .

BEGIN
CootOh akaekuai :
·--.-.. a • ·. J:-------....&:'' . f - _...,_~,.._
........ _

z::

Perhattkan kursor dalilll keadaan nonul - Tekan EIITER_


Pert-.at i kiln kuraor berukuran benr - Tekan EIITER = c;etlntvecCNmr_rntr: byte; var Alamat: Pointer>
Perhatikan kursor ttdak taapak - Tekan filTER Prosedur GetlntVec digunakan untuk memperol ch alam~ t yang disimpan
Perhatfk&l'l kursor norsal lagi - Takan EIITER_ dalam vcktor interupsi yang sesuai dengan nom or interupsi · Nmr_fntr.
Program 17- 9. Vekco r in terupsi scndiri sebcnarnya berisi daftar ala mat dari ta bel ya ng
ditunjuk atau subrutin yang dijalankan saar interupsi dilaksanakan.
MsDos!var Reg: Registers>
Proscdur .\fsDos juga digunakan untuk mclakukan intnupsi . khu susnva f Alamar yang berada da lam vckro r interupsi in i schcnarn ya dapat
dipcroleh dcngan mudah mela lui rumusan berikur :
inreru psi nomor 21 h, ya ng berkaitan dengan berbagai pelayanan DOS.
Jacli rr 0<cJ ur in1 id cnrik de ngan pcmanggil :m:
l Of>et subrutln/ tabel
MEMW!O:NmUntr • 41
Segmen subrutln!tabel
lnrr 1521 RegJ MEMWIO:NmUntr • 4 t 2J

I
~--
Conrob. pcnggunaan prosedur .HsDo; yairu untuk mcmperolch Nom or Vektor
info rm as i di'k d rive yang seclang akrif. j lnterupsl lnterupsl
I

. 1I
I

~-
PROGRAH l nfoOrtvs; 0
(•
i !
)
i 1
<• Untuk semperoleh in f ormasi •J
(• d isk drive yang sedang akttf *J
(• ------------------------ - --- • J
l
I
2
3
---- r·szm~-l
I

USES DOS; l 4 / yang dltunjuk I /

.j
FUtiCTIOII Di sk Drt veAkt if : CHAR; 1 oleh lnrerupsl !

Mer.g<g 1Jnakan ;ntar-upu; nomor 21h


c ~~

I nomor 5
~P;inr ~cree_~J
1I i1.
/
den9-n ~a~ukan
~eluaran :
: register AH diisi ISh
re gis ter AL
0 = A, 1 = B, 2 =C dst
;
[

, I
Cambar 17- J. Gumbaran Untang 11rktor i nrnupJi
VAR
Regs: REGISTERS;
BEGIH Ha sil dari pcmanggilan Cetlm Vee scndiri bcrupa pointer (p:tramcrcr
Regs . AH := $19 ; { pelayanan untuk info disk drive ) .'-1/amat) yang menunjuk alama·t dari sub rutinltabl'i , a ta u jl'iasnya iJcmik
de ngan :
MSOOS (Regs);
OlakOriveAktif : = CHR(ORO('A')+Regs.AL)
END; Alamat := PTR!Segmen,Ofset>;
BEOIII 1• prcaru utua •)
WRITELN ('Oiek drive aktlf : OiakOrtveAktif); Contoh penggunaan Grt!nv misalnya untuk mempcrokh :1lamat rutin
READLH yang dipakai untuk melaksanaka1J operasi Print screen (pcncctak&n isi
END . layar), sepeni yang tercantum dalam Program 17-11.

Canton ekuku•l : PROORAI-l Contoh_O•tlntVec ;

Disk drive aktif: A <• ------------------------------------ --------------- -- -- •)


<• ~•~P•roleh alamat •ubrut ln dala~ bentuk aegm• n dAn ofaat •>
Program 17 -- 10. <• yang dipergunakan oleh no.or interup•i 5 (PRIIIT SCREEIIJ •>
<• ------------------------------------- ------- ----- ------- .,
332
\)_)
-~· ~-"< -;
,,
ic/,~~ 00:6:
setlntVecH•imr_Jntr: bYte; Ala mat: Pointer)
~._"j ,

p~:;:o;;_~T:l:~ = =: J Prosedur ini diguna kan untuk mengubah alamat yang disimpan dalam
vC"ktor interupsi yang ses uai dengan nomor interupsi Nmr_fntr. Alamac
'i 1P.:

Y~R
Str1nf4: STRIN0{4];

l'tr_S. -I;>I'"Utln : POINTER ;


J pcngganti dibcrikan pada parameter Alamar sebclum pcmanggi'lan
proscdur.

Comoh pcngubahan alamat dalam '.·ekto r interupsi dit unjuk kan pada
ProgrJ m 17 - 12. Pada program ini. pengu bahan Jimaksudkan agar
FUtiCTION Hoku (141loi: ~OP.D) : Strlng4 ; 1
"!
}
penebnJn trrhad ap tomhol Shift PrtSc ridak mcnycbabbn isi la y:1r·
dicctak. Cara;1y:1 yaitu dmgan m c-:gJ! ihkJn sup.1p yang d i_1 aLlnk.~n
Untuk c•ngubL~ bllan;an d6slmal M&nj adl be~tu • neksada s ;Dal 1 hukan bt~i ~~rbrutin ' Cillula i~ an g oc:ada pada alamat FOOu: F:=s.J!' ).
mclainkan bc rupa instruksi I !~ ET (insr:-uksi akhir interupsi). Dcngan
COIIST f ~..kmiki;ll1 ri dak :ld:J tindabfl pcr,cc·rakan instruksi IRET senJir i
DlgltHakaa : ARRAY(O .. 15 ) OF CHAR
dian t.trJny:~ d~pa t dipcrolch pada alamar FOOOh:FF5.1h, yang Jiker::ll
VAR
: '01Z3 456789ABCOEF .;
I dcngan istibL Dlll!l!ny_Rcturn. Kal.:iu prog ram da !am bentuk. EXE
dij.1 lan kan dalan 1 prom pr DOS, akan men yebabkan tom bol Shift PnSc
I
llEGHi
BYTE;
l ridak bisa IJgi rligun :1 kan untuk 111<-' !JCc tak i~i layar selamanya (sclama
kompurc r aktif).
FOR I : : 4 OOWIIT O 1 DO
BEGIN f PROGAAH StopPrt~tS~r ~on ;
~ l•
Heku(I] ;: Oig itl1ek aa (!l ilid AIIO 15];
! (t F11a prcg rA~ : 'l
t<i lal : = Nil a I sr.R 4 PRT5COFF.EXE
(.t Pr-ogran, untuk ._~~:at IJ<•n t o:abo l PrtSc •)
EtiO ;
:= •4
f (• yan~ bh 9 a d!pahat U'lt uk M•n<..et.:ar... i a1 l .J y •r • )
rlak sa ( 0) f c• ---- -- ------- -- ------ ----· --- - •)
Hi:J; { akh l r funga l h&kBll ) f lJSf 9 CRT, DOS;

COfi~T -\

BEGIN <• progra= ut&na +) PRltiT _SCREfll =5·


SfG><fti_ IRfT SF OOO;
GETINTVEC (PRIHT_SCREEH, Ptr_Subrutin) ;
OFSET_I RET $ff5J ;
WRITELH ('Subrutln Print Screen:'); VAR
WRITELN ('Segeen aubrutiJl : ' , Hek s a(SEG( Pt r_Sucrutln"))) ; Ptr_l ret : PoiNT ER;

WRITELtl ('OfHt aubrutln : ', Hekn(OFS(Ptr_Su.brutln")));


8ECZH r prognUI U t&~~ta
READLH
CLRSCR ;
EIID.
Ptr_I ret : : PTR (SEG>4~N_IRET,
Of!ET_IRETJ ; ( P<>1nter Ptr_Ir•t a gar - n unJul( IllEr )
SETINTVEC (PRltH_SCRHN, Ptr_·Irwt); ( ubah avpoya liiET I _,.,Ju~
Contoh ekHkual : WRIT ELN ( 'Tooobo l Shift Pr ~c eudoh dinono~tHkan . • J;

END.
WIIITfLN ('Tidal< O..pot lo g ! d 1po~a ; un tuk - roc•tok lol l oyar . · );
Subrutln Print Sr. .n :
Se91MM aubrut1n : FOOO cant., •k-kuel :
Of-t - r v t l n : FP!•
T-.bol Sht ft PrtSc •udah dtnonakt t fkan .
Tidak d•P•t l ag t otp«l\ai vntuk . . nr.etak h d l •yar .
Program 17- 11 .

t Dari eksekusi Program 17-11 tampak bah wa subrunn yang dipakai old!
interupsi nomor 5 beralamackan FOOO:FF54h. llrogram 17- IZ.

334
335
-- - - - - -- .t rr q-..._

T
:

)(YU.6 MENANGANI LINCKUNCAN DOS


• .: l
kan unrui.. mcn geohu i isi vJriabelli.ngkungan COMSPEC, hal ini dapa• _
Ada riga fungsi yang berka.itan dengan lingkungan DOS (DOS ciipcroich melalui pemanggila n fun gsi: ·
environment) berupa EnvCount, EnvStr dan GetEnv.
GetEnvi'COMSPEC'l

envcount variab€1 lin;wngan


Fungsi tanpa parameter ini berguna untuk memperoleh banyaknya string
yang terdapat dalam li.ngkungan DOS . Bentuk strin g dalam lingk ungan
XVIl.7 MENANCANI SUBPROSES
DOS scndiri berbentuk:

Vari abcl = nilai F.1 si litas yang bcr~ J i tJn c' c; ,g.ul pcnJnga11an su hpro,cs ll l chp<~ri :
Misaln ya:

(1) COMSPEC = CCOMMAND.COM


(2) PATH=C

EnVStrtlndeks: Integer!
Fungsi E11vStr digunakan untuk m cmpaolch string dalam ling kun g;:n
I
i
fvle m bua t p r•_;g~.l lll va ng mcnc t:l p da !J rn
,\ rlcnjala n b n
mcmori
p ~Of!: r:lin lai n d.u i suaru program
( rc~ idc 11 )

M cnuk ar ka n sdu ruh \·c k cor intcrupsi yang disimpan dcng :111 vckt o r
inrcrupsi ki ni.
M cr:Jpcrolch ~: .. c:k k clu.u Ja ri s uatu subp roscs
Exec(Path. Brs .. perintah : StrlngJ
DOS. Nibi Jn dek.< berkisar antara 1 sampai dengan EnPCoullt. f
Program 17-13 mcm perl ihatkan contoh untuk mcmperoleh sel uru~ j Proscd ur ini bcrgunJ liiH uk mcnjai:Jnk ;l!l s uatu prog ram lain d.;ri suar u
p rogrJ m . Sccara ieng b pn~·J , nam .1 program yang akan d ij ai.1nkan
string yang &crada dalam lingkungan DOS . B anyaknya string dikcnda h-
dibnik an pada pan rncrcr Path dan ba ri s pcrintahnya dibcribn p1da
kan den gan ind cks b ernilai 1 sampai dc ngan ni!ai kcluaran En11Cotm! p.1ra meter BrLpt:n ua!: .
Scand ain ya hcnda k m cnj .: i.,nkan p':~i:,tah DO S, Path bcru~)J COM -
mclalu i pc rintah FO R .
MAND.C O M dan pcrimah DOS d inyarakan d;d am Brs_pennrah llcngan
PROGP.A~ Lingkungan; didahului '/C. Se bag.1 i conroh un tuk m cn~1l.mkan pcrintJh DIH / W,
USES DOS; pcrnvata:w png dipc rlukan ·
VAR I INTEGER;
BEGIN
FOR I : = 1 TO EUVCOUIIT 00 " Execi'COMMAND.COM '. 'IC DIR/Wl;

arau:
t
sp:~st
WRITELN (1 : 2, ', ', EtiVSTR(l));
READLN
END. Execi'COMMAND.COM·. '/CDIR/W);

Contoh eksakuel: tanpa spas1


1.
1. PA TH :
2. COMSPEC:A :\C~AND. COH
]ilea ingin menunju kc DO S secara scmcntara, Patlz diisi den g an
COMMAND. COM cerapi Brs-perimah cukup diberi nilai bcrupa string
kosong. Comoh :
Program 17-13.
Execi'COMMAND.COM, l;
CetEnv<Var_llng: Strtngl
Fungsi GetEnv dipakai untuk m cnt peroleh n ila i dari suatu va:i~ CHJ tan: Progra m yang m daJ...ukan EXEC harus mcngatur ukuran
Iingkungan yang diberikan pada parameter Vading . Misalnya diingtn- S tack, m ini m um d :m mak simum heap (Kalau tidak, akan

336
337
menimbulkan kesalahan berupa 'memoti tak cukup' berup~ REAOlN (Per1ntah);
DosError bernilai 8). Hal ini dapat dilakukan dengan menggu. Perintah := '/C ' + Perintah;
nakan pengarah kompiler M. Con toh: SWAPVECTORS ;
EXEC ('C~ANO.COM', Psrintah);
{$M $4000, 0, 0} SWAPVECTORS;

~
L m~k.simum heap
IF OOSERROR <> 0 THEN
WRITELII ( ' Eksekusi gagal. Kode ke&alanan y•r.g tsrj~ai

L mm1mum heap REAOLN


OOS ERROR);

ukuran stack
END.

Rincian nilai:
Cof"ltoh eksekus i :
ukuran stack berkisar antara 1024 sam pai 65520
minimum heap berkisar antara 0 sampai 655360 Masukkan perintah DOS : DIR ANDONG
r:· ; imum heap berkisar anrara minimum heap dan 655360
volU88 in drive A ha• no laO.!
swapVectors Dir.ctory of A:\
Prosedur Swap Vecrors (tidak mcmiliki pa~ameter) digunakan unruk
menukarkan seluruh alamat yang dirunjuk oleh variabel pointer dalam File not found
unit System yang berbentuk SavelntXX (dengan XX berupa dua digit
heksadesim al) dengan alamat yan g merupakan isi dalam vektor interupsi. Pro.~ram 17- 14 .
Prosedur ini bi as:1 dipakai pada prog r:w1 yang melakukan/rnenja!anb.n
E.-.:e:, dc;,pn ruju an ag.u vek.ror imcru ps; pad:1 program yang mcnjalan- Keep<Kode _keluar: word>
kan Exec a r :~u pun y:mg dijalankan tid ak saling terpengaruh. Proscdur Krt'p bergun:-t unwk m c m bl!at pr o gram res1Jcn J cau pr og ram
C nntoh program yang melibatkan Sll'ap Vwors dan Exec dapat dilih;;r yang tinggal mcnetap daLnn mcnw ri ·; ~el'.<ma kompu ·('r akci f) . Pa<ia
pad a Program 17-14. Program ini digunakan untuk menjalankan prqscdur ini. parameter Kodc_ke/u.n adal ah scmaom ko(k pada Halt.
perintah DOS, yang dimasukkan mel alui papan-ketik (dibaca melalui Yang peming dalam mcngg unakan pr o scdur ini, perlu kir~nya unruk
READL''i (Perintah)). Karena pada pr osedur Exec melibatkan COM- mengatur ukuran stack maupun besarnya heap scsedikit mungkin.
MAND.COM, maka perlu menambahkan '/C' di depan perintah DOS Contoh program residen, misalnya untuk mcmungkinkan menampil-
(Lihar: Perintah := '/C ' + Perintah). Agar vektor interupsi antm kan jam kapan saja, baik di dabm DOS maupun dalam program lain
program yang menjalankan Exec dengan DOS tidak saling terpengaruh. yang sedang dicksckusi . Untuk kemudahan, to mbol ;:ang dipabi
maka Swap Vectors diberikan sebelum dan sesudah Exec. Perlu diketahui, mengaktifkan program residen (yang sudah dimu:lt dalam mcmori) atau
pada program semacam ini (ada Exec), ukuran stack dan heap perlu diarur yang dikenal dcngan istilah ilotkey adalah Shift PrtSc. Idenya adalah.
dengan pengarah kompiler M . dengan mcngubah alamat dalam vcktor interupsi (nomor interupsi 5) .
Alamat pengganti berupa alamat dari subrutin yang dib uat sendiri oleh
PROGRAM Exec1; pemrogram . Subrutin semacam ini dapat dibuat dmgan mcm,mfaatkan
pengarah INTERRUPT (Lihat pernbahasan padl Subba b XV!.5).
{$M 8192, 0,0}
USES OOS; PROGR~ Ha1ihatJam;
VAll
Perintah : DIRSTR ;
BEGIH
c•
(• F11a program: LIHATJ~.EXE

(• Ouna mer.buat program rea1dan yang dipakai untuk menampilkan j . .


.
*)
)

•>
WRITE ( 'Kaeukkan Per1ntaJ\ DOS: •); <• Oapat diaktifkan dangan manekan SHIFT PRTSC kapan aaja •>

338 339
1 : BYTE;
(• --------------------------------------------------------------- t)
BEGIN
f$141024. o. 0} FOR 1 : : 0 TO 5 DO
U!IES CRT. OOS; BEGIN
CONST MEI4L[SB800 : 4*I) :: Lariki-INori[1,I);
PRINT_SCREEH : 5; MEML[SBB00:4ti+180) : : Larik~morii2,1] ;

END;
PROCEDURE T. . pilJam; END ; ( akhir proeedu r KembalikanMe~riDaarahJam

INTERRUPT ; ( * manyatakan proaedur untuk ' )


(. pananganan interup si BEGIN ( ba gian pern y ata~n prosedur lampilJam
' )
IF NOT (LASHIOOE Ill [2, 3 ] ) TiiEII
VAR t
i EXIT; { keluar kal~u bukan mode teks 25 x 80 koi~ ]
AttrAsl i , ( • untuk menyimpan atribut semula •J

. i
Po9isi)C:.JrsorX, (t untuk menyimoan posisi kolom kursor *l
ai•pan posiai kuraor, atribut, jQndela dan d~ta l ayar
PoslaiKu rsorY BYTE; (* untuk menylmpan posisi bar I s kursor t )
f pada daarah penamp i1 an j•~
Poalsi JQndelaKiri, : • data koordinat jendela klri at as ) 1
PoaleiJendelaKanan, ( . data koordinat j endela kanan bawah
' )
PoaieiKursorX :: WHfriEX ;
Jam,
PosisiKursorY := WHER c Y;
l-Ie n it,
AttrAali : : TEXTATTR ;
Datlk,
PoaiaiJendelaKiri :: Wi ii OIHI I ;
Sapare9ratusDet ik riORO;
PosfaiJendelaKBnan := WliiD:.iAX;
StrJa,.,
SimpanMemoriDaerahJa~:
Str~enit,

StrDetik : "STRitlG[2J:
[ ponot!1!pi 1an j&ll>
lar i k~!sl:lOr i : AR RAY[1. .2. 0 .. 5] OF LOilGI !lT ;

PROGEDURE S b >panl-lemor i Dae r&ru.._,. : TEXTATTR : = S7E;


WIIIDOW (1,1 , 12 ,2);
'-
untuk ~en}i~pan data pada lokas i
yang akan dltempatl tulisan jam CLRSCR;
GOTOXY (2,2); WRITE ('Tokan ESC.');
\IAR REPEAT
I : BYTE ; GETTIME (J . . ,Menit,Oetik,SeperSeratusOeti k):
BEGIN STR (J . . ,StrJ&M);
FOR I : : 0 TO 5 DO STR (Henit,StrMenit);
BEG HI STR (Oetik, StrDetlk);
Larikl-le.orl[1 ,I] :: MEML[SB800:4•IJ; Barfs pertama IF LENGTH (StrJam) <> 2 THEN
larlkl4el>orf[2,I] :: MEML($8800: 180Htl]; Barie kedua StrJ . . : = ·o· + StrJaM;
END; IF LENGTH (Strlolenit) <> 2 THEil
END; ( akhir prosedur SimpanMemoriOaerahJas StrMenit := '0' + StrHenit;
IF LEIIOTH (StrOetik) <> 2 THEN
PROCEDURE Ke.balfkanMe•oriDaerahJam; StrOetik := '0' + StrOetik;
( untuk ••nge•balikan data semula GOTOXY {3 ,1); WRITE (StrJam, ' : ', StrM8nit, StrDatlk) ;
pada daerah yang digunakan UNTIL KEYPRESSED AND (REAOKEY : •27) ;
untuk . .~pilkan j . .
ka•ballkan data kursor, atrfbut, Jendela
VAR dan data layar ae•ula J

341
...

~esb~llkanMeMor!Oa erahJam ;
)(VII.S LAIN·LAIN
TEXTATTR : : AttrAa ll ; , ..!

WINDOW (lO( PosiaiJandela Ki rl ) +1 , HI(PoalaiJende1aKtr1)+1,


oosverslon
LO(Poals1Jondel~Kanan)+1, HI(PoelaiJendelaKanan)+1);
fungsi DosVersion mcmpunyai kegunaan untuk m empcrolch vers1 dan
GOTOXY (Poa1at~uraorX, PoaiaiKuraorY);
DOS . Kel uaran bertipc word. Byte tcrendah berisi versi ma yor dan by te
END; { akhlr prosedur T&Mp llJ&a
certinggi berisi vcrsi mino r. Concoh, untuk DOS versi 3.30 , byte
SEGHI i progr&a ut....,a ) tercndah bcrisi 3 dan byte tcrtin~gi berisi 30.
SET HfTV EC (PRHIT_SCREEN, tllllllpilJ&III) ; Penuangan dalan , bcntuk pn ,g ram diwnj uk kan paJa Progran, 17 -· I (;.
l<RITEUI ( 'Untuk .,., 11;,t j&Jn tekanlah SHIFT PRTSC') ;
KEEF-
END .
(CL); PROGR~ LihatVars iOOS :
<• --------------- ----
(t Progr&~ untuk Menampilkan vera! dart DOS •J
. )

Program 17- 15.


c• --------------------------- ------------- • >
USES DOS;
Pada Pr 0 g rarn 17-15, kare n;• rnelib.Hkan tampibn pada lay ar (untuk
VAR
rn enarnpi ii.: an j:1rn) perlu kirJn y.J terlc hih drthul u menyimpan data pada
Vera iOOS : WORD ;
lokasi t a ~ ? ilan , deng:m cuju .111 ~ c kcluarnya dari program residen .
BEOIH
tampilan ::.-:mula tidak beru ha h. H.1l ini di kerjakan oleh prosedur VeraiDOS : : DOSVERSIOtl;
SimpanA!e-:ori Da erahjam. Disarnping itu, da ta semula mengenai posisi WRITELH ( 'Vers i DOS : LO (V era iOOS) , ' . ' , H I (VersiDOS) ) ;
kurso r, at:ibut m;~upun jendcla jug.1 pcrlu disimpan. Perlu diketahui, READLH
tampilan j-'m dilctakkan padJ p0jok kiri aras mcnempati 2 baris. Dara END.
pada dJe r~ ~ inilah yang pcrlu disimp:lll. Sesudah te.1 mbol ES C ditckan
(p<:nampi b .:-: jJrn usai), d ata scn1 ula pa•h iayar harus dikcmbalikan. Hal
ini dilaks.;..::.;,.kan okh proscdu ~ Kcm/•,;/ikrm.\JemoriDaerahjam. Selain itu, Program 17- 16.
data pos is: :.S: urso r, atribut m :lllpun jcnd cla harus dikem balikan pula. \

DosExltccoe GetCBreakCvar Break: Boolean>


Fungsi tan;::·a parameter ini digunakan untuk mendapatkan kode keluaran Proscdur GetCBreak mempunyai kcgunaan yang sama dcngan pcrintah
da.ri sua ru !":.Jbproses (p rogram yang dijalankan dengan Exec) . Keluaran DOS bernarna BREAK . Nibi True pada para mater Break men yatakan
fungsi ber-.::pe word, dengan rincian sebagai berikut: BREAK dalam kcadaan ON. Nil ai False menyatakan keadaan OFF.
• B yte :ere~dah berisi kode keluar dari proses (program! yang
berhe:::.Jci (Misalnya kode ~ pesi fikasi Halt atau kode keluar pada setcsreak mreak: Boolean>
prose,.:::.u- Keep). Pada proscdur ini : a
• Byte :t:rtinggi berisi :
~.a) 0 =enyata.kan penghenrian secara normal
SetCBreak ( TRUE) identik dengan perimah DOS: BREAK ON arau
(bj 1 =:1enyatakan berhenti karena Ctrl-C BREAK = O,V.
{c) 2 ::nenyata.kan herhenti karena kesalahan perant:i SetCBreak (FALSE) idcntik dengan perintah DOS: BREAK OFF
(d) J =.enyat.ak.an berhenti disebabkan okh prosedur Keep atau BREAK = O FF.

~~-a . <..:>de keluaran basil DosExitCode adalah 768 (300h), berarti Getvertfylvar verify: Boolean>
b y:~ :~:-t:r,'?~ berisi 3 atau progr am berhen ti ka rena prosedur Keep dan Prosedur Get Verify mempunyai kcgunaan yang sam a dcngan pcrin oh
b~ terenc..:.;m berupa 0 yang menyatakan kode kduar dari program · DOS bernama VERIFY. Nilai True pada paramatcr Verify mcnyatakan
t~ur a~ah 0 (dispesifikas i pada paremeter Keep). VERIF Y dalam keadaan ON. Nil ai F11lse menyatakan keadaan OFF.

343
raoel18-1. Daftar pengendall graflk

I.'"'"'! ° ~ Konstanta Nil at

J
0

· ,b~.•Oioml
Detect 0
CCA 1

J
199

!al Resolusi menengan lbl Resolusl Tinggl


JlJ MCGA
EGA
ECA64
EGA Mono
2
3
4
5
IBM8514 6
-
G 3mbar 18- 1. Sisum ltoorJin at abJolut untuk ""'"ilt>r dtnxan aJ~pttr CG.-'\ 10 I ; I
m ode resolusi rmgg1 , ham·a ada dua kemun gki n.~1 : . Pada kedua mode
[_Pcm~ i~
rcso lusi. s:liah satu kemungkln ~.n warna scsua i Jc nt;:m warna law Tabel 18- 2. Tabel mode graflk
beiaka ng layar. - - - -r-·--. - - - - -- - - - · - -- - -··- ·-- -- ---- - --
Konstanta Nil aI eterangan
CGACO 0 320x200. palet 0: Hl)au cerah, Merah cerar1. Kunlng, 1 halaman
XVIII.::Z PERINTAH DASAR CGAC1 1 320x200, palet 1: Sian cerah, M2genta cer2h . Putih. 1 halamJn
CGAC2 2 320x200, palet 2: Hljau, Merat-, Coklat, 1 halaman
Perinrah dasar yang dipabi dalam pcmrog rama n gr,1 fik dcngan Turbo CGAC3 3 320 x200, palet 3: Sian, Magenta, Abu ·atu cerah. 1 halaman
Pa>cal yaitu bcrupa lnilGraplt, CrapltRC.':Iit cl.m CICl.i('( ; r,lph. CGAHI 4 640 x200, 1 halaman
MCCACO 0 320x200, palet 0: H!jau cerah, Merah cerah. Kunlng, 1 11alaman
JnltGraph MCCAC1 1 320 x200, palet 1: Sian cerah. Magen ta cerah. Putih, 1 halaman
MCGAC2 2 320 x200, paler 2: Hljau, Merah, Coklat, 1 halaman
Prosedur btilC, aph mcmil ikl uc ntuk dcklJras i: MCCAC3 3 320 x 200, palet 3: Sian, MagefJta. Abu·abu cerah, 1 hataman
MCCAMed 4 640 x200, 1 halaman
lnitCraph !var KendaiiCrafll<: Integer; MCCAHI 5 640x480, 1 halaman
var ModeCrafll<: Integer; PathKendall: Str!ngl EGALO 0 640 x200, 16 wama. 4 hataman
EGAHi 1 640x 350, 4 wama. 2 halaman
Kegunaannya untuk melakukan inisialisasi tcrhadap mode grafll. EGA64Lo 0 640x200, 16 warna, 1 halaman
EGA64HI 1 640x350, 4 wama. 1 halaman
Pa~hKendali menyatakan letak dari file pengendali grafik (. BGI) . Jika flit EGAMonoHI 3 640x3SO 64K pada l<artu. 1 ha!aman· 256K pada l<artu, 2
pengcndali grafik berada dalam direktori yang sedang aktif. PathKmdah HercMonoHI 0 halaman
cukup diisi dengan string kosong. Setelah pcmanggilan prosedur, Arr400CO 0 720x348, 2 halaman
parameter. KendaliGrafik akan bcrisi kode pengendali g rafik . McngeiUJ. ATT400C1 1 320 x200, palet 0: Hl)au cerah. Merah cera h. Kunlng, 1 halaman
kcmungkinan nilai pada parameter KendaliGrafik dapat dilihat pada T~bd ATT400C2 2 320x200, palet 1: Sian cerah. Magenta cerah, Putlh, 1 halaman
ATT400C3 3 320x200, palet 2: Hljau, Merah, Col<lat, 1 halaman
18-1 . ATT400Med 4 320 x200, palet 3: Sian, Magenta, Abu ·abu cerah, 1 halarnan
Sebelum pemanggilan, parameter KmdaliGrajik dapat diisi dengan s~bh Arr400HI 5 640 x200, 1 halarnan
satu nilai yang ada pada Tabcl 18 - 1. Jika diisi dengan Defect, abn VCALo 0 640 x400, 1 halaman
dil akukan pcndeteksian tcrh :1dar hardware ~ccara otonutis. menentub.D \'GAMed 1 640 x200, 16 wama , 4 halaman
jcn i, kcn dali grafik yang akan dimua t (Dalam hal im Kmda/iGraJii 't'CAHI 2 640 x350, 16 wama, 2 halarnan
PC3270HI 0 640 x480, 16 warna. 1 halaman
111jlUptm .\JodeGrafik akan dibcri n.ilai dengan sendirinya) . Apabila buhn
IMBS14Lo 0 720 x 350. 1 halaman
Detea yang dipilih, pada saat pemanggilan prosedur lr1itGraph. parame-- ~8514HI 640x480 256 warna
ter .\f,>deGr£ylk harus diisi dengan mode grafik yang diinginlcll'~ 1024x768 256 warPa
Mcn gcna i nilai mode graiik dapat ddihat pada Tabel 18-2. -- ~
Kesalahan yang mungkin terjadi sesudah pemanggilan prosedur c• ------------------------------------------- •>
JnitGraph dapat diperiksa melalui fungsi GraphResult. ' -=..... ..
,, .
c• File : BUKAGRAF.IHC . •>
c• Deriai prosedur Iniaia11sas1Graf1k •>
(* Fungsi: Untuk m~buka•> siatem grafik
craphResult c• ------------------------------------------- •>
F ungsi GraphRemlt (tanpa argum en) dipa kai uncuk memperolch kode
kesalaha n terhad ap ope ras1 g rafik. H asil ke ba ran fungsi bertipe integer, PROCEDURE InisialisasiGrafiK (VAR KendaliGraflk,
dengan kemungkinan ditunjukkan pada T abcl 18-3. Seperti loRrsulr, f.lodeGrafik: WTEGER);
GrnphResult juga di-reset sa m a dengan no l se t iap kali sesudah fungsi ini VA'R KodeKesalahan: HITEGER;
d ipanggil.
BEGIN
Tabel 18-3. Kode kesalahan keluaran CraphResutr HHTGRAPH (KendaliGrafik, f.1odeGrafik, ");
KodeKesalahan :: GRAPHRESULT;
Konstanta Nilai Keterangan
Tak ada kesalahan
f IF KodaKesa l ahan <> 0 THEil
grOk
grNolnltGraph
0
-1 File .BGI belum dlinstai 'l
1 BEGIN
WRITELtl ('Kode kesalahan grafik =
tGunakan JnltCrapnlcsl Kode Ke sa 1 aha n) :
,
grNoDetected -2 Tak ada perangkat keras grafi k yang terdeteksl HALT ( 1 ) ; { oerhent i )
l
grFIIeNotFound -3 File kendali graflk tak ditemuka n I END;
grlnvalldDrlver -4 File kendall gram: tak berlalcu I Etm; { akh i r pro sedur Inisialisasi grafik }
grNoloadMem -5 , Memorl tak cukup untuk mernuat file pengendaii gram
4 Proutlu r 18- 1.
grNoScanMem -6 Memori tak cukup saat me laksanakan pemenuhan are<
I secara scan.
1
grNoFioodMem -7 I Memorl tak cukup saat mela ~sanal<an pemenuhan are~ j Pad.1 p1 oscdu r /nis:'ali.ias iGr.}ik. mula- m ula dil ak ukan proses m embu ka
! secara flood tpada prosedur FloodFiln . SJ~ (l'll l g rafik dcn gan menggunakan /nir G.r.,aplz. Da b m hal ini jeni!>
grFontNotFound -8 File data huruf tak dltemukan pengendali grafik dapat diatur melalui parame'tcr dari proscdur irlisialisa-
grNoFontMem -9 Memorl tak cukup untuk memuat data Jenis suatu huruf
Mode graflk tak berlaku
JiGrajlk . Jika misalnya Kc11JaliGrafik diisi dcngan nilai Detect, maka
grlnvalidMode - 10
grError - 11 Kesalahan graflk proses pemilihan pengendali grafik maupun m ode g rafik akan dilakubn
griOerror - 12 Kesalahan 110 graflk secara otomatis. Misal:
grlnvalldFont -13 File data Jenls huruf tak ber1aku
grlnvalldFontNum -14 Nomor jenls huruf tak berlaku KendaiiGraflk := DETECT;
grtnvalldDevlceNum · -15 Nomor perantl tak berlalru " lnlslallsasiGraflk tKendaiiGraflk,
ModeGraflkl;·

Seandain ya ing in m emilih secara lan gsung ~ u a tu pcn gcn d ali grafik , nub.
paramete r KetJdaliCrafik harusb h bc ri si kod c pengend ali g ra fi.k d.m mode
ctosecraph grafi k J iisi dcngan mode yang bcrl ak u. Conroh unruk m cmilih
Prosedu r CloseCraph (tanpa parameter) digunakan untuk menutup pen gcndali grafik adab h CG A dengan m o de grafi k adala h m o de rcsolusi
si~tem grafik . Prosedur ini akan mengcmbalikan ke mode yang akrif tinggi :
~) bcl um mode grafik diaktifkan .

Contoh : Kendai!Graflk := CGA:


ModeGraflk := CGAHI;
Contoh prosedur untuk mcm buka sistcm grafik bcscrta pcngecrkan _ lnisi:JII<;;><;I(;r:Jfllr f 11',.,.,,. ,,: ~ --:> '' ·
tcrhadap kcmungkinan kcsalah.1n g rafi k : ubk•h ~ch ~~ ; b r' rilc., •·
!:: :•.1
t' \1

Setelah prosedur InitGraph dijalankan, GraphResult dipanggi! dengao (dalam hal ini, fak tor peng~li berupa konstanta FAKTOR..TINGGI) .
maksud WlCUk mendetd:si adanya kesalahan . grafik'! arau tidak.. ' Kalau Grafik dibuat dengan sumbu horizontal (sumbu X) pada koordinat Y
terdapat kesalahan, ek..~k.usi program dihentikarr dengan terlebih dahulu hma deugan 100, sehlngga nilai sinus dikal ikan FAKTOR_TINGGI
memberikan pesan kesalahan. " bersifat rclatif terhadap koordinat Y ini . Pada koordinat X, satu pcriode
Dalam bcn tuk diagram a!i r, langkah dalam pemrograman grafik grafik sinus terdiri dari 40 pik sd. Dengan demikian, sctiap satu pikscl
dengan Turbo Pascal ada!:ili sepcrti yang tertera pada Gam bar .18-l. pada arah mendatJr mewakili 3.14 I (Periode~2) atau 3.1 4 120 radian .
. - - · - - - - - -·

I
1
Membul<a sistem grafilt:
dangan
tnisialisas/Crafik
t
pJI(lGRAH S1n<Jo ;

(•
(t COntoh ~· k a1ar> P"v1PH El
.)
t)
· t• untuk .ce•bu•t gr a' t ... ·1 nua t)

1l (•
USES GRAP><, CR T;
·---- •)

i ( SI 8UKAGRAF. INC (t l'aan~taa '-W'ttuk - •b uka aiata• grafH. t)


i
·~
rmenutup slstem graflk VAR

l
Kenda110rof1k, ~ Gr af 1k: IIHEGO;
dengan
CloseCraph PROCEDURE Craf1k5invw ;
CONST
1 PERIOOE •c : 1 p • r t od• a i nua • 40 pikael
j
Gambar 18 - 1. L.Jngkah ptmrog raman g rafik j SATU_PIKSH 3 . 1415~ / (PERIOOE/2); ~tu ptkael •e~ Mk11 1 PMI : 20
;, ~ UWBU~~ 1 ~ 0: poat st aUI'Ib u X dart •t nvw

~ P051Sl_X_AWAL = 10 , poa t a t bart• aNal dart ai nua


XV1!1.3 MENGAKSES PIKSEL ,~ FA KTOR_T IHOGI 1v . fa ktor pe n ga l i n11ai sinu•

'l VAR
Fa ., ilicas uncuk mengakscs piksel sccar.1 indi\'idual ada dua buah, berupl ~ H ila1 RE AL: nih\ t inu a d1kaH kan faktor ptmga11 !KAL-_TINGOI

rrosedur PutPixel dan fungsi CerPixt'i. .t x WORD; p,•nc....c.a rl posiai awal -...pat akhtr gr,ftk •inu•
lEG Ill
FOR a : c 0 TOe t Pf~lOOf 00 ( buat e periode •1nva,
PutPixel IIEGI"
N11a1 : • fiUCTOR_TlttGGI • (SIN (a o SATU_PIKSH)) ; ( t1f>9g1 terhacSAp - b u x
Bentuk prosedur PutPixel:
PtTTPIXfl (x+P0515l_J _ AWAL , lll'IIIIU_l - IIOUIIO(Hila 1). 1} : ( buat plk-1
END;
PutPixellx,v: Integer; Wama: Wordl 010; { akh1r proeedUr Graf1kSinus )

Prosedur ini dipakai untuk membuat ticik (piksel) pada koordinat (x, y) lfGIN (0 pro!Jr. . ut . . . ' )
Kenda11Graf1k :• DETfCT ;
atau baris x, kolom y. Wama piksel tergantung nilai dari parameter In!etal!aa•tOraf ik («•nda l iQraftk, ModeQrafi k);
Wama . · OrafikS!nua ;
Contoh penggunaan prosedur ini misalnya untuk membuat gralik REPEAT UIITIL KEYI>R£ SSED;
CLOSECRAPtt
sinus, sebagaimana disajikan pada Program 18-1. Pada program ini. lNO .
pcmilihan pengendali grafik besena mode aktif dibangkitkan sendiri oleh
Program 18- 1.
program. Hal ini diperoleh dengan cara melewatkan konstanta Drttct kt
\'ariabcl yang nantinya dilewatkan pada (It~isialisasiCrafik) . McngeiUi CetPixel
proses ' pembuatan grafik sinus dllakukan pada prosedur GambarSinUJ.
Pada proscdur ini, karena nilai sinus hanya berkisar antara 1 sampai Bentuk fun gs i CetPixcl·
n -1, maka perlu fak tor pengali untuk mem perbesar gambar
i - ~; poslsl
semula
ox
(\ {\ {\ (\ f\ i\ ·;;,;l oy
.
\ I \ I
'
. . I
\
'\ . .
I \ I
I .
\
, '·'' ! poslsl
1
I 0
\ I I \ I I

v
I I I
\j \j v \j \j I
'---
klnl
IX+DX.Y+DYl
--

11 Gom bar 18- J. Prmin~J,,Jo,m P"'unjulr _cambar ucara rda t((

~G-a-n-rb_J_r_l_8___l_.-G-r-afi-.k- -Jr-_n_u_!_h_a-Ji_I_P-ro_g_r-am__1_8___1______________________~ -~
I :1 XVIII.S MEMBUAT GARIS

Fung si ini di gunakan uncuk mcmperolch warna dari pik sel yang ocrada
p;~da koordinat (x, y). Kclu:uan bcrtipe word .
l Ada riga bu.1h sub p rogr.ttll y.11 . berkaitan ckn gdn pcmbua ran garis ,
berupa p f0s nlur Line , LincFo d an Lin eRcl . Fasi!itas iai n yang berpcn g a-
ruh tcrhad .1 p gari s bcrup .1 proscdur SctLin i'Style d:m Sr tWri1eMl'de.
!vlcngcnai w .trna g:•ri~ akJn dibicarJk.tn di belakang.

XVIII.4 MEMINDAH PENUNJUK GAMBAR


Pcnunj uk ga mb:u nng fungsin ya semacam pandu / kurso r pad1 mode
I
l

une!X1 ,V1.x2 .y2: Integer!
Pr o scd~ r in i .lrpabi tln t uk rllclllbu :lt g.tris dari koordin ar (x l. yl) sampai
(x2 . y2). Sif. rr tidak rncn g ub.rh posi si pcnunjuk gamb .1r.
rL·b ( h ~, , ~y:t sJja ra k tampak) dapat dipindah dcngan mengg una b n
prosed u r ;\i,, ,,eTo dan .\1vveRel. j llneTO(X.Yl
] Proscdu r in1 d1g unak :rn unruk !llc m bua r ~a ri s d.1ri po -; i.;i pc n unjuk garis
MOVeTO
s.1mpa i koo rdinat (x . y) . Sc\t Jd ah pcrnbujcan gari s, p er~u njuk g am bar
Bcnruk proscdur .\Jvl'e To: i•
bera da pad.t (x, y) .
Contoh progra m ya n g l!lclibarkan pembuatan garis yairu untuk
MoveTolx,y: lntegerl membuat g:-~mbar pcrahu la ya r (dapat dilihat pada Program 18-2).
Pernbuatan gambar dilakukan dcngan memanfaatkan perintah :\1o••cTo
P roscdur ini dipakai untuk memindahkan penunjuk gam bar ke koordinat dan Lim·To. Pada program ini, kcndali grafik bcrupa CGA d an mode
(x, y).
grafik berupa mode 320-200 palet 0.

MoveRe! PROGRAM Perahulayar;

Bentuk proscdur MoveRe/ :


<• --------------------------------- •>
(' Contoh pe111akaian LIIIETO dan I-lOVE •)
<• untuk ••mbuat ga111bar perahu layar •>
MoveReiiDx.Dy: lntegerl <• -------- -- --------------- -------- •>
USES GRAPH, CRT;
P rosedur ini bcrguna untuk mcmindahkan pcnunjuk gambar ~rl
rcl :ni f kc kan an scbanyak Dx pikscl dan kc bawah sebanyak Dy ptbd {Sl BUKAGRA~. !tiC <• raallltas untu k membuka slstam graflk •>
tcrhadap posisi pcnunjuk gambar semula. Jika Dx bernilai ncg1cif.
pcnunjuk gambar dipidahkan ke kiri . Jika Dy bernilai negatif. pemmjuk VAR
g:-~mbar dipindahkan ke atas. Kanda liOraflk, ModaOrartk l IIITfOER ;

?,') "l
p~oceOUR! OambarPerahuL4Yirl setunestyte<BentukGrs: word: Pota: Word: Ketebalan: word)
Prosedur ini digunakan untuk mcngatur bentuk dan ketebalan suatu
BEGIN
{ l...,bung }
garis. BentukGrs yang m enyatakan bentuk garis dapat diis i dengan
MOVETO (10~. 100}; konstanta SolidLn, DottedLn , C emerLn, Dash cdL11 atau UserBicLn .
LIIIETO ( 21 5, 100);
LINETO ( 200, 125) ; Tabel 18- 4. Tabel bentuk dan keteba!an garis
UNETO (120, I 2~);
[
LI NETO ( 105, 100): Konstanta Nilai
solldln 0
( laya r } oottedLn 1
MOVETO ( 1 ao, 100): centerLn 2
LINETO ( 180, 40 ): I oashedln 3
L HIETO ( 140, 90); userBitLn 4
LWETO (180, 90):
t NormWidth 0
EIW; { &khl r proaedur G..,.barPera hulayar ThickWidth 3

Jika Bem11kGrs diis i dcngan c_,c•H1rL •J , p:~ramc t cr p,,Ja pcrlu dibe ri nilai
BEGIN (O prograrn uta~• O) yang menyat:~bn pola g ar i~ ~ ang diddlni sibn t't' mrog ram. Contoh
KendaliGraflk : = CGA: ( men ggunakan CGA }
pada ga ri s bu:~ t an. ya itt1 polJ d u1pn nila i AAAAh atau dalam bcntuk
~oaeGr&fik := CGACO: ( ~oda grafik re &olue i menengah, palet 0}
4 bincr hcru pa
Inlolalla~~ i G ra flk {Ke nda liGra fi k, ModoGrafik);
GambarPerahuLa yar: J 1010101010]()1010 (16 bit)
REPEAT UN TIL KEYPRE33EO; "'lf
Sct iap bit bcrnibi I mcn y :~t ak.on i' i;: sc l ,iig.l!n b.tr dan /1 tid:~ k .i :gamlJJr.
CLOSE GRAPH
Paramc:tcr K rrchalarl dapa t d1 is1 ,1c n ~.H~ i'\lNm lFidth atau T hrd:Widt!J,
END.
ya ng menyataka n k c r c b:~la n g.m s
Progra m 18-2. Benruk ga ri s dan kcrebalan dan keempat bcntuk g ar i~ ba " ·aa n dan
scbuah garis den gan pola bu :HaiJ (bc rnilai AAAAh) dapar dilihat pada
UneReHDx.Dy: lntegerl
Prosedur ini dipabi untuk membuat ga ris mul::li posisi pcnunjuk gambar Gambar 18-4.
sampai lokasi dengan jarak Dx pik sel ke kanan dan Dy piksel ke bawah. Cataran: Disampin g prosedur in i b;: rpcngaruh terhada p Line, Line To
Sesudah penggambaran, penunjuk gam bar ditempatkaan pada lokasi maupun LineRd, juga bc rpengaruh terhadap DrawPo ly , Arc
dan sebagain ya .
akhir garis.

SetwrtteMode<ModeTulls: lntegerJ
( 160 , 40).
Prosedur ini digunakan untu k m en~ atur mode pada pcmbuar:m gans.
ModeTulis dapat diisi den gan kom t:m ta C opy Put atau .\ O R1'111 .

(1 4::1,90) Tabel 18- 5. Tabet mOde penullsan untuk setwmeMode


(21~.100)
(105,100) Konstanta I Nllai Keterangan
<1 ao.1oo> I CopyPut Garis dibuat tanca memperhatll<an lsi tayar
XORPut Garis yang dibuat dikenai operasi XOR temadap tsl iayar
/
~---------------J
(120.12 5 ) (200 ,1 2 5 )
Catatan : Proscdur 111i bcrpe ngaruh tcrh .1 •bp L.i• 11·. I, ... ..-r.. I ;, .., o ·1
Rr·rrm;,,l,· l • · · f '
Gambar 18-•. Gambar pcrahN hasil Program 18 - Z
---~
!:

-· -~-- ------

I NorMUidth ThickUidth >


II.
I I: ' I
I
I
I :
:. 't
: I
I I
I
I 1
.., ...
·. '• -- •' •'
.•'
I I: I I f :I J I J '•,
.I\""
•,
., --
...--......
'· . ,•
,•'

I I : I I ·'f ,t'

I: I
I
I
I; •
: ,,
I
I I 11
I

! ....
II

.. .lj···
,t"'"ll\
:i I
·1 ; I I
I
:
.
: I
I I
I
:
I
\
If 11
lfl I
I
....... ................ ..... ................................. 1...... ........... ....
I
: }

!.. ...............................,,
I
·~
I I I
I :
I
I
I I -
I
I
i 'I
II II

I
•:

'
. II

:,,-I
i I :
• I ·1
l !_.... :..................... SdtAkhi r I
I

:................ . . .. . . . . . . . . . . . . . SdtAwa 1 '


0 12 J 4 0 1 2~ J l :. . . . . . .. ,.. . . . .. . . . . . . . . . .. .. ... . . (X I 'y)
Gilmbar 18-J. B trbJ_eai hwtuk rian kntbJ/an ga riJ :.......... ...... · .... ··· · . ·· ·Radius !
- -18~6.
G<Jmhar - -Paramnu
- - -d.1/am
- -.·lrc'
- - -- - - - - - - - - j
XVIII.6 MEMBUAT ELEMEN BANCUN

Berbagai bemuk bangun dapat dibuar dengan mcnggunakan fasiJir;u


yang disediakan dalam unit Graph.
DrawPolyCJumrltlk: Word; var HlmoTitlkJ '
Pco,cducyang
poligon becm,n(.,, untuk mcmbu" poligon. Cm " "mb,,
ini terrutup:

Arc <x.v: Integer; SdtAwar. SdtAkhlr. Radius: WordJ

Prosedur Arc berguna untuk membikin busur lingkaran yang bcrpus•t • }umTirik d;;,; deng•njumbh titik pojuk poligun dit,nb,h dcng"'
1.
pad a (x, y) dengan jari-jari Radius, dimul ai d ari sudur SdtA wnl sampJi
sud ur SdrAkh ir. Sudut dinyarakan dalam dcrajat . Arah putaran suduc • Himp Tirik bcrupo doro •duruh koocdnut ti•ik pujnk polignn
herl :l\n11an dcnga n p utaran j arum jam . Posisi jam 3 menyarakan suduc scban yak }um Tirik, dcngan ketenruan :
0°, posi si jam 12 mcnyarakan s udut 90°.
HimpTitik[1J == HimpTirikUumTitik + lJ
Clrcrecx. v: Integer; Radius: Word)
Prosedur Circll' dip.1kai untuk membuat lingka rJ n yang berpusat pad~
koordinJt (x. y) dcngan ja ri-jari scbcsar Radi11s.
Gam bar sepnci ra ch G1mh.,,. · Q
~. I
_ .. _ _ _ _ .____~ • -·, ""·~
. . , . ... mz
9

ncr n•n .~ ,. ,~
·"' I" ,, . :-~ ..,·. ~ .;
....-

BfOIII (• progr~ ut...._ •) \


\
. (225,70) kendal1Gra1ik :: CGA;
( ~$nggur.akan CGA }
~Oa.Graftk : : CGACO; { moda grafik raao1us1 tlnggt, oalat 0)
_,....,-----:7""
_,....· l nl aialtsaaiGraflk (Kendal!Graflk, UodaGrilffk) ;
BuatPoligon;
RF.PEA T UNTIL KE 'fP~ESS EO;
(100,100)
------
......__
.........--- - - - - - - - /
.........
CLOSEGRAPH
EIIO •

~--- .-:;~:~·;:60'
Program 18-J.
110)
"\.. \
-
--.__ l
\. Elllpse<x,y: Integer; SdtAwal, SdtAk:hlr: Word: Radlusx. RadJusY:
word>
·-._ \
.......--...._\ ..,..__ Prosedur in i dipaka j unruk mcrnbuar busur dips yang b-: rpu sar pada
....-.. ,·, i koordinar rx .y). Jcn gari ja r i-jari pada sumbu mendar.1r adal ah R adiusX
--.:4, •
f
ch n jari-j an pa d a sum bu regak scbes.1r Radills Y Busur eli ps di bcmuk d:n i
j su dut S dr.1!l'al sam pa1 S drAkhir. Sifat sudut seperti pad.1 proscdur ."ire
( 190,150)
1 flips pcn:Jh dapar d ipcrolch dc11gan membcrik.an nilai Sdr.4wai == (J da n
j S dt A khir == 36c)
Gambar 18-7. Gombar haJi/ Program JS -J I
I

PROGRAM Pollgon;
<• ~ --- - - -- ·J l
( ' Contoh pemilkaian DRAHPCt.Y untuk membuilt ooligon • )
<• -------------------
USES GRAPH, CRT;
.)
'
J

{SI BUKAGRAF.It~
(• fasilitas untuk membuka sist a~ graflk •1

VAR
kandal!Graflk, ModeOrafik : 1NTE9ER;

PROCEDURE BuatPo11gon;
COtiST L_. . _····-f·---w (X, Y)
JtMTTk
DataPollgon
= 5; { 4 tltlk pollgon + 1 )
ARRAY[1 . . JUMTTK] OF RECORD
X, Y: ~/ORO
I ~... :. .____ Rad iusX
:·---.. .. . . .-......... . ...._. __ Radius Y

L_
((X:100;Y:100),
EIIO
(X : 225;Y:70),
tl
~

(X : 1110; Y: 110) , ( X : 190 ; Y : 150) , ( X : 100; Y : 100)) ; SdtAwal 0


BEGIN
ORAWPOLV (JU!UTK, OataPollgonJ ; SdtAkhir - J~O }
EtiO ; r ~kh__ir n ,.."' .. ... .... ,_ ~
--y-
J
~
Rectangle<X1 .Y1.X2. Y2l
·1 Contoh:
Untuk membuat persegi panjang yang memiliki koordinar pojok ki ri- ~:1 SetBkColor(1);
atas (xl,yl) dan koordinat pojok kanan-atas (x2.y2) . ~1 mc rupakan perintah un tu k memilih warna Jatar belakang sama den g an !
ata u wa rna biru ru2 .
XV111.7 MENCATUR WARNA, POLA, MENGARSIR, DAN MEMBLOK Pcngu b :~ha n I.<Lr bci..blig ci,hk m e ngu bah isi lay ar, kecuali !aur
bclakangn ya s.ij a.
setColor<KodeWama: wordl
Prosedur SetColor bcrg una untuk mcnem ubn 'A'arna (tcrgantung dan setFiiiPattem<Pola: FIIIPatternType ; wama: Wordl
parameter KodeWanw ) yang dipakai u n(llk mcngg alll b,n . Warm y a n~· Pn)scclur SerFillP~ ; :; , rn dtp.1k ::li untuk mcnc ntuk .1n pola scrtJ \Varna
chguna kan untuk m cn g g am har ditcntukan j ug J ok h pakt. J rsiran yan g Jtg un),:Jn di a nr ~ rJ n ya untuk mengarsir at au mcmenuhi
Pada adapter CGA, khususnya unt u k mod e rcso lu si mcn engah l'o li go n, b:Hang d.1 1: ba tan g J ,i im en si. Lcn g kap nya , fasilnas y.:mg akan
cc rdapat 4 palr t. Warn:~ ,·:mg sesu ai dt:ng J n p alt:t d,1pa t c1i!ihat pada T abcl m t:ng gunabn Fob .:.1n \\' .t rna yJn g d it enruk.m oleh pro sedur ini ad:~ l ah
JH-6 atau Tabcl 18-l. h'I/Pc>ly, F/,,,,.Jfi li . Fii/£1/ipse. Bc1r , Har3D dan PieS/ice .

nI J. , I I·
~,
'
.·,.I
Tabel 18- 6. Dattar warna palet
0010 0100 ~ 24h
1 I

,--2---,--3---·
- - - - - --- - ---. I I ~
I ri-m-;--
I

l
Paiet j Warna I

1 ~
--rl·
! - - - · 1 2 li · tl ·m
~ . ~ . ----t-
~ ,·I~ 1101 1011 = DBh

I, T1 I LBLB I Hijau cerah


I Sian ceran
I. Merah cerah
Magenta cerah
j Kun ing
Putih 3I
,-- 1- l
l
I ' l I
I.! i . :J
I 0010 0100 ~ 24h

I I'
1 i.
I -,
I I
l LB
' I
2 LB 1 Hijau Merah coklat I i
I ! ' '
j'

I 3 _Lsian l,lagenta -~~_u__ j I


4 Jo I
!1 i
' 1' 1
I I
I I O 1101 1011 ~ DBh
i-:: ~ rcr ang:: n : LB = wam .1 b r;; r bd J k an g ! I
I

·l'
"~
I ·

·I I I·;
1 i
0010 0100 = 24h ..
P ad a mode resolusi tingg i (CGA), kode warna berk isa r antara 0 sampai ~ II I
4
1. K o de warna 0 menyatakan w arna yang sesuai dcn g:m latar belakan g
1 6 I • I • •I•!I
i
1
I •
1101 1011 = DBh
dan kode warna 1 m erupakan warna aktif.
l .
i I·
j

7 I I I • 0010 0100 = 24h


Contoh : I j

~~ ·llJ
SetColor(2);
1101 1011 = DSh
mcru pJ kan in struksi untuk memilih wa rna n o rnor 2 v a t ~g: sc s u~i dcngan
Bj•j•!
p:t!ct yang scdang ak ti f.
c .. mbar 18-9. M nunrwlr~" pol~

SetBkColonKodeWarnal ~-1cn genai t1p<" d:tri p.uamc.:tt:r Pt>la yJi tu f-i ll P<lltmzT)'PI' (tipc bawaan)
Prosn lur SctBkColor dipak a i untuk m cncntuk an w a rr. .1 l.lc,u bcl ab ng mc mpunvai hcntuk :
g.unbar. Nilai unt u k J..:o ./,·ll',muz bcrki sar Jnta ra 0 sam pat 15 . Ko J c w arm ~
~.~!
untuk latar bdakang gamb.tr sama den gan ko d.: w .~r m ;:'.Jd.t mo,k eeL ty(lP

(Li h .1t T .1l, -! 11 -1 .1,- ~~


------ - - - ·- ··- ~ -

- - - -...~ ·
~ -....-.-:....__.-
- s-

Tampak. Pola berupa array yang terdiri dari 8 elemen ber~ie~ byte.
Setiap elemen ini menyatakan pola 8 piksel. Nilai 1 pada masing..:irtasing
1~
Tabel 18-7. Pola plllhan untuk SetFI/IStyte

bit a.b.'l menyebabkan pipe! digambar. Contoh mengisi pola secara


lengkap ditunjukkan pada Gambar 18-9.
t ----,...-- -- - -
Konstanta NHal
~ Err.pryFill 0
Kesalahan yang mungkin terjadi sctebh pemanggilan proscdur ini \ SOI!dFill
dapat dilihat dengan memeriksa Graph Result, berupa nilai - 11 (grError). _.A
:i UneFill I
I 2
Kesalahan iru disebabkan adan ya ma sukan pada proscdur SetFil/Parten1
yang tak berlaku. 1 ~
LtSiashFIII
s~shFm
SkSiashFill
/,·
4
5
3

j LtSkS!ashFIII 6
setFIIIstyle<Pola. warna: Word> HatchFIII 7
Prosedur ini uncuk menentukan pola dan warna ars iran yang nantinya lnterleaveFiil a
digunakan oleh Fii/Pvly, FloodFi!!, FiliEi!ipse, Bar, BarJD dan PieS/ice. WideDotFIII 9
Bedanya dengan SetFil!Pattem, pada proscdur SetFi!!Style discdiakan CloseootFill I 10
UserFIII 11
berbagai pilihan pola . Pola dapat dipilih dcngan membcrikan nilai vang
tertera pada Tabel 18-7 ke dalam parameter Pola.
Apabila Pola di-;si dengan UserFi/1, pola aktif yang digunakan sesuai
dengan po la yang didefinisikan pada SetFi!IPa uem.
Kesalahan yang mungkin terjadi disebabbn o!eh adanya masukan
Ij BartX1,}'1,x2,y2: tntegerl
Proscdur ir.i b cr~l'r ' " lllll lJ k rnnn huJ t scbu.1h hatang yang mcmpun ya i
koo rd inar pojok ki rr -..r .1 ' (x!. y l ) dan f' ojok kanan-ba wah (x2 , y2).
pada proscdur yang tak berlaku. Ke sabh an dapat dipc riksa p ad .1 J :\rsir;J n pada b.1t. :••~· ,n r.• w arn JY!\ -,1 chpar diatur mcblui SetFil!I'atrcm
CraphResu!t berupa nila i -11 (g1Error ). at:Ju SrrFi!!St ylc.
1
1
PROORAI< Gatan9:

01~1
c• ----- - •)
(• Contoh P4tlnl!kata n f}AR untuk tr:i'~buat d lio. gr.a,. b•tang t)
<• ------ •)
USES GRAPH, CRT ;
(
0 1 2 -3 (SI 8UKAORAF.ING ) <• f••11it~• untuk m~mbuka eiste~ graf1k •>

IIII
VAR
KendaliGraftk, Moo.Grartk : ItiTEGER;

PROCEDURE Dtagra•Bat&r.<J ;
CClfl!IT

'' 'I""
'
"'
SELAHG_P IKSE L o 5 ;
4 5 6- 7 LfBAR_BATAilG • 4 • SfLAtlG_PIK!lEL;

.... .' .. ...........

Ill
JUHLAA_IIATAHO • e;
0

'... . ........
0 I 0 I
..........
.......
OOOOOH"

....'...
Data_eatang AR U.< "f( 1 .. JUHLAI1_BAHIIGJ OF BYTE
.............. ...·········
.......
............ • (8 , 1 4 , tO, II, 9, II);
. . . . . ........

..... . .' ........
• • • f
......
........ ..
........ .
Jenla_ Pola ARPoH ( 1. . JU14lAA_8ATAtiG) OF BYTE
= (10, 2, ' · !, 3, 1);
Warna AQP~ t [ 1 .. J~LAA _ 8ATA110 ) OF BYTE
8 9 10 11 ~ { 1 . 1' :t. 1' 2. 3) ;
\';\Q
1 ... .. ...... t •· t ;"\
;t
~:·~
8EOIN
X :: 70 ; Y :: 1&0;
• Seperti hal nya prosedur Bar, prcsedu r Bar3D jugJ bisa menghasilkan
FOR I"<aka : : 1 TO Jl-'"llAH_IIATAIIG DO
8EGIN
:i hatang riga dimcns i yang diusir. Da hm hal ini, arsiran bcserta warnanya
dapat diat ur mchlui Sc:tFii/Parten! maurun SerFii/Style. Acbpun garis
S[TFillST~LE (Jents_Pola(Indek9] , War~•[I"oakaJ);
luar d::~ ri b~t ang rig:~ dim ensi bi,.l diacur d c ng:~n SctL :>:,· Srr!c cbn

I
SETCOLOR (Warna[lndeks)); SnCoiM
BAR (X, Y, X+LEBAR_IIATANG, Y-O~ta_6.otang {ln deka) 'SELAUG_PIKSH) ;
RECTANGLE (X, V, X+LEBAR_BAi~IG, Y-Data_Satang[IOO.ks] t SELAHG_PIKSEL); Contoh gam bar diagram batang :I dimens i Jdalah scpcrri pada G:1mbar
IIIC (X, LE.BAR_BAT~IG); 18-10. Gamb ,lr in i dipcro kh Jcng an mcngubJh perinrah BAR pada
Et :D; Program IR-3 menjadi:
HID; rkhir prosedur Q;.agru.B•tang
l
BEGIN (* progra~ ut~a *)
BAR30 IX, Y, X •U:BAR _BATANG. Y·Data_Barang Unceksl • SE LANG_PiKSEL, LEBA~LBATANG
DIV 2, TOPONJ
KendaltGr•ftk := CGA; { aenggunakan CGA I
ModeGrartk : = CGACO; {mode graftk resclus l tlnggt, D•let 0)
Inisiall s .as iG raf1k (J(endaliGr•f\k, P-4ooeGraf lk); SeLl in itu, pro,cdur i?. c.-:.111,1!./c juga ticbk dipcrluk.ln. sc hingga kbih baik
Oiagra•8at&ng ;
dibuan 6 ~:1_p
REP!AT UNTIL KEYP~!SS!O;

GLOSEORAPH
EHO.

Pt\".~ ram 18 -- ~.

I
I j
4
i
J.;;
Gombar 18-12. Contoh gtJmbor batang titu dimm•i

FloodFIIHx.v: Integer; Pembatas: word>


Gamb.~r 18 -1 1. Diagram batang hast/ Program 1) - 4 Proscdur Fl<>odFil! dipakai untuk memenuhi/mernbanjiri tbcrah yang
dibatasi dcn gan warna Pembatas dengan suaru pob. Pola yang digunaka n
Bar3DOc1.Yl.x2.V2: Integer; Kedlm: Word; Puncak: Boolean> untuk kcpcrltiin ini dapa t didefinisibn dcngan SctFillP.7ttarJ atau
Prosedur BarJD digunakan untuk m<:'rnbuat batang riga dimensi, yar':! ScthiiSty/,,. i\pabib (x .y) terlcrak dJlam daerah yang tertnrup, maka
mempuny.1 i koordinat pojok kiri-a f.15 (xl,yl) dan pojok bnan-aw dacrah rertutnr terseb ut van g akan d1penuhi/dibanjiri dengan pola.
(x2;y2). Parameter Kedlm menyatakan banyaknya piksel yang dipabi Ad ~1pun jiLl (x. y) tcrkrak di luu dacrah ya ng rcrrurup, ba~iJn luar
untuk mengatur kedalamaQ batang (pembencuk dimensi keriga) . Para- daer,lh tL·r~e hut yang dipenuhi dengan po la .
meter Prm <a k digunakan untuk membuac puncak batang ciga dimcnsi P.1d.1 s.nr peiJksanaan pcmbanjir.1n rcrh ;ldap su,Hu Lbcrah, Jda
auu tidak. Nilai True menycbabkan puncak digambar. BcrkaitJn dcng:lll kc'Illt.ngkin,ln rcrj .1di kcs~iah.n1. ~>Cfli!'·l ml.!i -7 (.; 1.\'oF/o,>d.\!c•n) y:mg
parameter ini, terda pat dua konstanta : dilusdk.111 <.' ld1 Cr,1phN,·cu/ r.
(·,~, 1 r.~l~ ., .. ,.,~ ... ,i,,., , .......... ..
=~ · ~ ~""

CIRCLl l160.100,60l; Sifat sudut seperri pada prosedur Arc.


CIRCLE 1160,100,20l; Kesalahan yang mungkin tcrj ad i berupa nil a1 - 6(f!r.\loScarJ.\1em).
SETFILLSTYLE lSOUOlN, 2l; C o ncoh gambar diagram lingkaran dapat dil ihat p,tcl;l Ga 111 bar 18-1.3,
FLOODFIU 1160, 40, 3l; ~ v.mg dihasilkan olch Progra m 18- 5.
~~
Pad a penggal.m program di atas, mula-mula digambar dua lingkaran
dengan pusat (160, 100). Lingkaran kedua berada dalam lingkaran yang
i
pertama . Insrruksi berikutnya merupakan pemilihan pola dengan bemuk
~ P~OO~~ Dlatr. . Ltntkaran;
(' - - - - ---------- ' I
SOLIDLN dan warna un tuk pemenuhan adalah warna 2. Selanjutnya ( • Contoh p . . . ka1an PIESL! CE un t uk me ~b uat d i agr a~ ); n qka r ~ n •)
adanya perintah FLO O · ~ ILL menyebakan daerah tertutup yang ~
(.
~- - --- - - ---- - - -- -- ---- -- -- -- - •)
lr.l£3 GRAPH , CRT;
diwakili dcn gan ti tik (l bu, 40) berada di dalamnya (dengan warna 1

penut u p area adalah 3), dibanji ri dengan pola SOLIDLN bcrwarna 2. In i {$1 BUKAGRAf . INC (• f•v41 i taa un t u k aemovk~ at~ t G~ gr~r ~ ~ •}
bcrarti bah wa da erah antara dua lingkaran akan diarsir/dibanjiri dengan
w arna 2. YAR
Kendal1Qraf1k, NooeOraf1k : IIITEGE R;

FIIIPolyOumntfk: word: var HlmpTitlk> ?PCC EDURE a uat Otagr••Li ng karan :


Keg uman prosedur ini sa ma de ngan DrawPoly yaitu untuk membuat CON 5T
poligon. H anya s:tja pol ignn yang dih :~silkan olch prosedur Fil/Poly dapat X : 1&0;
di arsi r. 1\rsirar. beserra w arnanva tergantung oleh pola yang didefinisi- 100;

kan dcn gan SerFii/ P,.rtcm :lt.J.u SecFillSr yle. Garis luar po ligon akan ~A O ilr.l : 4 0;

digam bar dengan bcnt uk g.!ris d l n wJrn,l yang ditcmubn melalui


8 EG!"
Set Lin eStyle dan Sc rColor. SE TFILLSTYl£ (SOLI OFILL, 3) ;
Kes alahan yang mungkin re rjadi dapat diperiksa dengan mcmanggil .~ PIESLICE ( X, Y, 0, 90 , RAOIU3);
GruphReslllt beml2P nilai -6 {g rNoScm1.'1.1em) .
SETFilLSTYl£ (INTEALEAYEFILL, 3);
PIESLICE (X, Y, 90, 21~. RAD I US); 1
FIIIEIIIpselx,y: Integer; Radlusx.RadlusY: Word>
Digunakan untuk membuat dips yang berpusat pada (x, y), dengan jari- SEffiLLSTYLE (LTBKSLASHFILL, 3);
jari pada sumbu mendatar sebesar RadiusX danjari-jari pada sumbu tegak PifSLICE (X, Y, 215, 300, RAOilJ!l );
sebesar RadiusX, yang diarsir dengan pola dan wa.rna yang ditcntukan EtJO ; ( akhl r pro. .dur Dl agra10L l ngkaran

melalui SetFil/Pattem atau SetFil/Style. Warna dan bentuk garis luar ellips
BfGI ~ (t progr . . uta. . t)
dapat diatur dengan SetColor dan SetLineJtyle. K•n ~11Gr~f1k :: CGA; ( ••nggunakan CO~ )
~oGraf l k : • COACO ; (.ode graflk r eeoluel tlnggl, pal•t 0 )
PleSIIcelx.v: Integer; SdtAwal. SdtAkhlr, Radius: Word> In1• i alleael0raflk ( Kenda110raf1k, ModeO raflk} ;
Dipakai untuk membuat potongan diagram lingkaran yang mempunyai BvatGiagra•Lingkaran :
REPEAT UNTIL KfYP Rf SS fO ;
koordinat pusat (x. y), mulai sudut SdtA wal sampai SdtAkhir, bcrjari-jJri
CLOSEO~APM
sebesar Radius. Arsiran beserta warnanya dapat diatur dengan SetFil/Pat· EtlO .
t tern atau SetFillStyle. Warna dan benruk garis luar dapar diatur melalui
SetColor dan SetLineStyle. Diagram lingkaran penuh dapat diperoleh
dengan mcmbcrikan nilai:
• Sdr4 11 :1l = n
-

.,o
. . :: :=:: ? :.~
f-.... : .. ..
~ -
.................-' ::=

Gombar 18-13. Diagram lin_..;karan h.Hil Program 18 - 4

Sector <X. Y: Integer; SdtAwal. SdtAkhlr, RadX. RadY: Wordl


Proscdur ini dipakai unruk mcmbu:!t sc;,;ror nng : ~ =pusar pad.t (X.Y)
dcnganjari-jari p:~da arah mcnoatar d:~ n ,·cnib! aJ_:2h RadX dan Rad'(. GambJr 18-14 . Cont(lh X·""h"r Y"" .l: Jipero/,·h .! . .. ~ ·"' St•cto r
dengan busur dirnuiai dari sudw Srli.-l.u:,;/ dan c·~· .khir pada sudur
SdtAkhir. Arsiran dapat rli:mn mdalui ~·crFi!Wz:· · · Jt au ScrFii!Srj'i<. X'/111.8 FASI!.ITAS TEKS DALAM MODE f;IIAFII<
Sedangkan ga ris luar dapa: diarur dcngan ScrC,•I, · d .1n St'tLineSry!,•.
Contoh penggJlan prngram bc rikut : Bcrbagai fasiliras y.mg bcrbitJn l kn ~. m ;. · ' 'ilpii.m rcbjug3 discdiakatt
dalam Tmbo Pascal. Snacu tcks cbp.H '· "npilk.m Jcngan bcrbJg:Ji
SETFILLSTYLE IUNEFILL, 31: benruk tulisan lll:ll!J.~un ukur,mn y.1. -,, r d.tp:lt dirampilkan dcng:1n
SECTOR 1122, 70, 30, 145, 50, 301; mudah dengan arah vc nikal araupun h 0 nr•. •Ltl. Kcscmua fasili tas scpcrti
SETFILLSTYLE ONTERLEAVEFILL, 21; ini akan dibahas pacb sub bab ini.
SECTOR 1172, 70, 0, 90, 50, 30!;
SETFILLSTYLE fBKSLASHFILL, 1l;
Pcrlu dikctahui, pcngertian tcks di sini i:· '' 'J'·l string saja. Bcrdasarkan
SECTOR (160, 110, 45, 315, 60, 301; hal ini, scandainya akan mcnampil kan •'" 1 angka , haruslah terlcbih
dahulu dikonversi mcnjadi string.
akan menghasilkan keluaran seperti pad a Gambar l :3 -14.
OutText (leks: String>
SetGraphButslzeiUkuranBuf: word) Proscdur ini berfungsi untuk men:unp :l t .• I L k~ kc layar pada postsi
Dipakai untuk mcngubah ukuran penampung (lw ;:,-r ~ ang digunabn pcnunjuk gambar scclang bcrJJa . F,· •; ' Ill j l·nis culisan, ukuran.
untuk proses pemenuhan sccara horizontai (scan ' HJu pembanjiran pcngaturan arah pcrum pilan ruli~an d.lp .tt • 11 d.Ji ikan dengan SetTcxt-
(flood). Ukuran pcnampung b:nvaan scbcsar 4 K. Jib Jiinginkan untuk Stylt- dan SetTextjwt~fy (:~kan ,iitr:n ng~ ,..l.l bngan).
mengubah ukuran penampung, maka parameter L'lrurJnBu( perlu dibcri
Cataran: Prosedur ini tidak mcmpcn gJ·. '' pos1S1 pcnujuk g:unb:u
nilai yang menyarakan ukuran penampun g y:~ng baru Biasa nya. ukura n
scsud.1h te L ditalllpilbn.
penampung diperbcsar dt·ngan nuksud unruk rn e:-:gh indari kcjadian
t>t •c~flow pada pcnampung sn r pelaksana:~n prose~ .-:.:'! maupun .flood. OutTextXY !X.Y: lntE'rJer: Tel< s Str! r. n 1
!'">rr' · t'(_...f s ,_ ' ,r .. , .. I Q .. . \ ~ 1.
£

Catafan: ~~0D.u1k mengatu~ ~~rna tulisan, S~.tCo/g,r_dapat-diperguna­


kan. Hal ""ini .. berla!Cu untuk OUtTextXY rriaup~ Out Text • Prosedur SetTextStyle pad~ keadaan bawaan akan menyebabbn data
--- .... ~ .·~ ... '
Proseduf~. ini
• ... - 1 ... ?·v-·•• -
• rrienempatbii. -penunjuk gam bar sesudah karakter pada file yang bersangkutan dengan nilai pada parameter Font
akhir teks. ;·. ·" · • ,. • akan dimuat dari disk ke d~l~m memori (RAM). C~ra seperti ini kadang-
... ~

- ···· - - kadang tak dikehendaki, sebab akan memperlambat proses, terutama


setrextStyle <Font: Word; Arah: Word; UkuranKar: Word! kalau font yang dipakai sering digan ti. Untu k menghindarinya sebena r-
Prosedur Sr!T extStyle digunakan untuk memilih font atau jen is tulisan, nya dapat menggunakan f~silitas yang disediakan dala m Tur bo Pa sc;d.
ara h rampilan scrta uku .-an tulisa n . P:osedm ini dipakai untuk keperluan Mengena i hal ini akan direra ngkan di bclakan g .
pcnampilan tcks yan g dilaku..ica n dengan OutTextXY dan Ou1Text.
tv1engenaifont dapat d ipili h dengan bcrdasarbn nilai (konstanta) pada
Tabel 18- 8.
- Arah tampilan teks dapar dia tur dcngan mcle warkan nilai (kon stanra )
pada parameter Arah, berupa:

J
1 • H orizDir atau nilai 0 (Arah rcks dari kiri kc kana n)
IIVertDir arau n ilai 1 (.Arah teks dari bawah ke atas)
Tabef 18- 8. Font atau Jenls humf pacta mode grafli<
1 Parameter UkuranKar digunakan untuk m enemukan u kuran brak tl' r
!Constanta f . Nii;Ji t Fiie yang ctiperluk:an (Nil ai berki sar anrara 1 sam pai dcngan 10) . Scmakin bcsar nil ainya,
ukur.m karaktcr kian besar pula.
DefaultFont
TriplexFont
SmaiiFont
sansserltFont
GothlcFont
I.
0
1
2
3
I tak
ILITT.CHR
ada
I TRJP.CHR
1 SANS.CHR
Kemu ngk inan kesalahan yang dapat terjadi (dapa t dipcriksa dc ng.m
Gr.JphResulr):

• -8 (tl k font tidak ditemukan)


4 J GOTH.CHR •n -· 9 (m emori tak cukup saar data file full! dimua r}
- 11 (kesalahan grafik)
• -12 (kcsala han I/0 grafik)
• - 13 (ti le font tak berbku)
• -1-1 (nomor font tak bdaku)
Default Font

Triplex Font PASCAL _J


<{
Small Font
P.ASCAL 0
SansSerif· Font (/)
<{
{lnllfir Nnnf PASCAL Q

PASCAL
Gambllr 18- 16. B ubagai ulturart urt.J .zrah tu/ ; ••
-------- ~·--~--~~
- ......_
-~

setusercha~Jze <Mx.ox,My,Dy:· Word> ,~ SETTEXTJUSTIFY IRICTHTEXT, ? l;


Prosedur ini memungkinkan untuk mengubah ukuran yang tak bisa · OUTTEXTXY 1160, 110, Teksl;
diatur melalui SetTextStyle. Pada prosedur ini:
akan menghasilkan tampilan scperti yang ditunjukkan pa da Gambar
• Mx : Dx merupakan faktor untuk mengalikan terhadap u:bar fB-17: Pada penggalan program di atas , tanda? menyatakan nilai untuk
normal dari font yang sedang aktif. parameter Vert sebarang (0 .. 2) .
II M y : Dy merupakan faktor untuk mengalikan terhadap tinggi Parameter Vert dapat diisi dengan:
normal dari font yang sedang akti[___ ·
• BortomText atau nilai 0
Dengan demikian, pemrogram bisa mcngatur Iebar maupun tin ggi font • C e11terText atau nil ai 1
scsuai dengan kei·nginan·. • T op T ext atau nilai 2

Contoh : ' M isalnya koorJ i ·t untuk tck s aJalah (X, Y ), BMt0111Fcxt nl cny.lt.tka n Y
SETIEXTSTYLE 11,HORIZDIR, 1); , ;cbagai batas bawah dari tck s, Cm raTt•xt m cnvat.tkan Y scbag.1i baris
SETUSERCHARSIZE 13,4,1,1); . rcng:t h dari tcks dan Tap T t·xt 11l L'Il Ya taka n Y scbJgai batas atas da ri tcks.
OUTIEXT l"ABCDE'l; Co m oh:

akan menampilkan tulisan 'ABCDE' dengan Iebar 3/4 dari Iebar norm al. X := 40;
Ca tatan : SETTEXTSTYLE IO,HorlzDir,1l;
FOR 1:: 0 TO 2 DO
• Nilai ukuran normal untuk default font adalah 1, scdan g kan lainnva BEGIN
adal ah 4. SETEXTJUSTIFYILEffiEXT,Il;
Pcm anggilan prosedur SetUserCharSize harus dilakukan sesudah OUTIEXTXY IX,100, 'TURBO')·
SetTt'xtStylc, supaya ukuran karakter yang akrif buk:mbh yang X := X + TEXTWIDTHI'TURBO'I + 5 { jarak antar teks sebesar 5 plkse l )
END;
berasal dari S etTextStyle.
l
' aka n m cnghas ilkan tampilan ~cperti yang d it unJu k kan pa J a Garnhar
SetTextJustlfY <Horls, vert: word>
1
18- 18. Pada pcnggalan program di a cas tcrd:~pa t fun gsi T ex rWidth .
Proscdur ini digunakan untuk mengatur tampilan teks terhadap posi si ~ Fung>i mi bugun' untuk mend'p"bn lebu du i >u' "' tcb.
ho rizontal dan vertikal · dari posisi koordinat teks. Untuk posisi
horizontal, nilai yang dilewatkan pada parameter Horis dapat berupa:
• LeftText atau nilai 0
·{
• C enterText atau nilai 1
·'·~
ASC.t\L
P~CAL
• R iglztText atau nilai 2

Mi salnya koordinat untuk teks adalah (X, Y), Left Right menyatakan X
adalah awal dari teks, C enterText menyatakan X adalah kolom tengah •
dari teks dan RightText menyatakan batas terkanan dari teks . Contoh:
,. .,,
PASCAL
Telcs : ~ 'PASCAL';
SffiEXTJUSTIFY ILEffiEXT, ? l;
oliTltxrxv 1160, 90, Teksl: 160
SffiEXTJUSTIFY ICENTERTEXT, ? l; '"' Ga mb<Jr 18 - 17. Ejdt pt'ng.:~turan tuliJan p••da are1h horizontal urltult ltoordinat X ya ng •
OUTTEXTXY 1160, 100, Telcsl; .sam a
1
372
tt "Nn£'
5
t - ~-
.
F-~·=""····

-L.-.
Parameter dalam fungsi ini yaitu Font {bertipe pointer) akan menunjuk
lokasi memori yang berisi data font. Keluaran fungsi (bertipe integer)
berupa 0 jika tak terjadi kesalahan. Kalau terjadi kesalahan, baik
"
RegisterBCIFont maupun CraphResult menghasilkan nilai :

• -11 (Tabel font untuk mencatat font sudah penuh)


10U_ TURBO T l:JRBQ n.JRBU • -13 (File font tak berlaku)
• -14 (Nomor font tak berlaku)
1
PFOOII'AJ.4 'ont_BCl;

1 ('
( • Canton pro-gr . . untuk -.ngatur .,
' l

( • agar dat• ...ua font diM.~at d1 ••• ' ek";.."-•1 pro9raa •)

Gambar 18-18. Ej~k prngaturan po~da posisi vutikal trrhadap koordinat Y yang sam•
(t

(.
deng.n . . ng~kan proMINr : REGIS TfRIGifOUT
-- ___ .;.- ---- -------- ------ ------------------ ------ ---
USES GRAPH , CRT;
.,
•)

rextHeigth !Teks: String>


Fungsi T extH eight menghas ilkan keluaran bcrripe word yang menyata-
kan tinggi dari teks (dalam satuan piksel). Tinggi dari suatu teks ...
Ul IUKAOAAF . IttC )

K•~H0raf1k,
c• , •• nu ••

Moc)e.Craftk : INTfGU ;
~t""' -..oyka •ht . . graf'tk • )

tergantung oleh ukuran karakter yang didefinisikan dcngan SetTextStylt-


PJIOClOORE· NuatS.~'ont ;
ataupun SetUserCiwrSize . Contoh pemanggilan: COttST

N-a-"1• ARRAY(1. . 4) OF 5TRl ft0{1l )


c ( • TltiP. ~A' • ' LITT . CHR', ' SAt" : CHR' • ' OOTH. CHR ' );
TextHeight !'A') ••• ,.tlefo., t : Fill ;

akan menghasilkan tinggi dari tcks 'A'. Ptrfont


! ~kt :
ARRAY(1. . 4 J OF POINTER ;
IHT£0£R;

TextWidth !Teks: String> ... Sf GIN


{ 110•t eel u rUil data font ke aeeor t J
Fung5; TextWidth menghasilkan keluaran bertipe word yang menyata- j FOR ln<)eke : z 1 TO .C 00
-w
kan Iebar dari teks (dalam satuan piksel). Lebar dari sua tu teks tergantung SEOitl
~SIGH ('llefont, N. . ._flle[l~"!<H'II!,e}).
oleh ukuran karakter yang didefinisikan dengan SetTextStyle ataupun i;·· R!:SH (I" t lefont. 1);
( buk• ft l a Oen gan utouran r-.cord
SetUserCharSize. Contoh pemanggilan: GETHf:N (~rfont[Indeka), fllESIZI (ffla,ont}) ;
-.be . . ,. ••tu byt e
{ " . . , ruan11 dal . . heoap
llOCitltfAO (fi leFont, "-rfont(lndlok•J-, fiLfSilf (f11•'ont)) ; { o.ca ._..... de ta • dan

TextWidth ('PASCAL') ( dan ta-pat ~ an da lM heap


Ir RfOIITERBQlfOHT (l'tr,ont( lndiiii!,• J) < 0 TH£N HALT ( 1); f cek pendaftaral\ data f'ont
[UO ;

akan menghasilkan Iebar · dari teks 'PASCAL'. END; t akhi r pro. .ctt.w ...,.t,__font )

PROCEDURE Tu.pt lk~ lfont:

ReglsterBCIFont (Font: POinter) """"

I
~:· Str_,ont : ARitAY{O .. 4} M STRIHQ

Fungsi RegisterBCIFont memungkinkan suatu file font tidak dimuat lagi • ('O.rault Font• , ' Trtp l elli 'orot' ,

dari disk ke dalam memori saat adanya pemanggilan SetTextStylt. ...,.-


~
•••
I, X, Y, Ukuran: ~ :
'S..ll font' , 'S&naSerU 'ant', ' Gothtc 'ont') ;

Dcngan menggunakan fungsi ini, suatu file font dibaca dari disk sebli •'. lEO IN
saja (dan selanjutnya disimpan dalam memori). Sesudah itu, setiap adJ X : z lO ; Y : z .CO :
FOA I : • 0 TO 4 DO
pemanggilan SetTextStyle yang melibatkan file font tersebut, file tida.k ftf:OIN

dibaca lagi , melainkan mengambil langsung data yang ada dalw If I =2 THEH
Ukuran :• 4
memon. !LSI

374 375
.. 7 J 7 • a tW m ~-t .- '7 • sn .. • . . . F 3 I 7. >I ns; in 1 n i
&

Ukuran :• 1:
. :r! ; •.......u..T"'
SfTTEXTSTYlt (I • HORilDIIt, Ukt~ran): _( tentukan bent""'- tu11...., Apabila ada masukan yang tak berlaku, GraphResu/t menghasilbn
oununv ex. v. strJont!Ill: nilai - 11 (grError) dan jcndela yang sedang aktif tidak diubah .
Y : 11 Y • TlXTHIIOHT ('A •) + S ( Jr..,.,.ik&ft ber-..r'kan t\n,g1
tl.•ltun dtt...o..tt 5
Contoh:
f:NO;
ltECTAUGl( (10. 20. 170. 150)
lfUD; ( akhtr prONodUr TUtOtlk.....sa.p.l,ont )
SETVIEWPORT 10,0, 159, 99, CliPONl;
ISfOIH ( • progr . . ut.,... •) LINE 10,0,319.1991;
XendaHCraftk :z. COA ; ( . .ntgvnakan COA }
~raftk ;ll: CCACO ; ( .ode gr•ftk resolu•t tlllenengah. p•let 0 )
lntataliua iG raftk lkand.lltQrarn,, lo6od.cr•rtlt.) ;
Disebabkan pemotongan di luar jendela sudah diaktifkan, sckali r u n
Ta-ct lka nS~lfortt ; tcrdapat instruksi untuk membuat garis dari koordinat (0, 0) sampi
R£P£AT ~Til ICEYPRE&&EO :
Cl08fQ.UH
dcngan (319,199), han ya bagian garis yang terlctak di dalam jcndcl:t nng
(NO. digambar.
Program 18-6.
ClearvlewPort
lnstaiiUserFont IFIIeFont: String> Pros.:dur ini be .una untuk mcnghapus isi jcndcla yang aktif dcngJn
Fungsi ini dipakai unruk mcnginstal fonr b:uu yang tak disediakan dabm warna latar bclakJng . Sesudah pcnghapusan. pcnunjuk gambar d itcn:-
sistem grafik. Fonr baru didefinisikan oleh pcmrogram dan disimpa n patkan pada posisi (0,0) .
dalam file bernama sesuai dengan yang dilewatkan pada parameter
FileFonr. Setelah pemanggilan fungsi ini , hasil keluaran (bcrtipe integer) Detectcraph !var KendaiiGraflk, ModeGraflk: Integer>
bcrupa nomor idemitas dari font baru . Nomor identitas inilah yang Proscdur Dl'fcrtGraph dipabi untuk mcmcriksa perangkat kcra s grati k
selanjutnya dapat dilewatkan pada SetTextS tyle. Seandainya tabel fo m dan menenrukan pcngendali grafik bcscrta mode grafik ya ng digunab n.
sud ah pcnuh, nila i keluaran akan berupa 0 . Jika tak ada pe rangkat kcras g rafik y;mg rcrdcteksi , KendaliCrafik d.1n
CraphRtsult mcnghasilkan nilai -1 (grNotDeterted). Mengcnai pcngcnd.1i i
XVIII.9 FASILITAS CRAFIK LANJUTAN g rafik dan ~Ttodc g rafik dapat dilihat pada Tabel 18-1 dan 18 -· 2.

Bcrbagai fasilitas lanjutan seperti untuk membiki1,1 jendela gambar, Ca tatan : Ni!Ji keluaran p:tda KendaliGrafik dan :\-fodcCrafik bisa dik \\ at-
menghapus layar akan diterangkan pada subbab ini.
.j kan ke lnirGraph.
I
Contoh pendctcksian pcrangkat keras grafik:
Clearoevlce
Prosedur ini digunakan u~tuk menghapus layar dengan warna latar J., PROORAM Oetekei;
bclakang yang aktif. Sesudah penghapusan, penunjuk gambar akan
ditempatkan pada koordinat (0,0) .
.j (f =========::::::::::::::;:~;x~a•••~~~-~~ •)

setvlewPort OC1,Y1.X2,Y2: Integer; Potong: Boolean)


Set ViewPort merupakan prosedur yang digunakan untuk membuar
<• Vntuk mendeteke1 perangkat keru vr·a,1k •)
<• Keluaran: - kocte pengendali grafik
<• - mode grafik
•>
) .
jmdcla gam bar dengan koordinat pojok kiri-atas yaitu (X1, Y1) dan
koordinat pojok kanan-bawah berupa (X2, Y2). Parameter Potong dipakai
<• --------------------------------------- •>
USES GRAPH;
untuk menentukan penggambaran dipotong a tau tidak jika berada di luar VAR
jcndela gambar. Parameter ini bisa diisi dengan konstanta ClipOn atJu kG, MG: INTEGER;
ClipO.ff. BEGIN
r
• ClipOn = True { dipotong } OETECTORAPH (KO, MO);
• ClipOff "" False { tidak dipotong WRITELN ('Kode pengendali grafik: ',KG);

376 3T7
. ·."'\, "
---~· - ~-·-·-
.:_
. .• . -~ - . , ·, RZ1fta a -
., . ..
-

WRITELN ('Kode mode grafik


{$1 BUKAGRAF:IIlC (• fasilitas untuk aeebuka slat•• grafik •>
~?__~
READLN
VAR
END. KendaltGrafi k, UodeOrafl k: IIITEGER;
Program 18-7.
PROCEDURE Ubvv~eTeksGrafik;
.SetAspectRatlo !Xasp, vasp: word> BEG I'I - - -
Prosedu r SetspectRatio berfungsi untuk mcngubah aspect ratio bawaan. OUTTEXT ('Mode graf'ik sedans ;oktif. Tekan EIITER l ');
Set.·l..;peaRatio bcrguna misalnya untuk mengatur agar lingkaran yang REPEAT UNTIL READKEY : 113 ;
di rampilbn pada l::lyar tidak mcnycrupai clips. Pada masalah scpe rti ini,
aspc'ct ratio cl iarur rerlcbih dahulu sebelum pcmbuatan lingkaran . RESTORECRTHOOE; { ke node .. belUM iniaialieaai graflk 1

WRITE ('Kini mode teks y;ong ~ktif. Tekan ENTER l ');


GraphDefault
REPEAT UNTIL REAOKEY : .13 ;
Proscdur ini digun:tbn untuk mcngcmb:tlikan ke se mua nilai bawaan
grafik (scpcrti pada kcadaan setclah JnitGrap h). Dian taranya mcngemba- SETGRAPHHOOE (GETGRAP H~IQO[ J , { aktifkan sesu.1i dengan mode. grafik
libn pcnunjuk gamba r ke lokasi (0,0), mengatur jcndela sebesar layar sebeluronya )
pcnuh dan sebagainya . OUTTEXT ( 'Kembali ke mode grafik. Tekan EttTER I ');
:vtcngcnai n ila i bawaan dapat dililut pada Program 18-9. REPEAT UtHIL READ KEY : 113;
EIID ; ( ;okh i r proaedur Ubahl~odeTe~sGr·afik
RestoreCrtMode
Prosedur RestoreCrtMode akan mengembalikan mode layar ke mode 3EGitl ( • prograQ utaO>il • )
keadaan a wal scbcl urn sistem grafik dibuka . Prosedur ini dapat dipakai KendaliGrafik := CGA; { mensgunakan CGA )
unruk peng:llih an <.:bri grafik ke tcks. ModeGrafik :: CGACO; ( mode grafik r esolusl tinggi, palet 0 1
InislalisaeiGr;ofik (KendaliGrafik, HodeGrafik) ;
Uba~odeTeksGrilfik;
setcraphMode !Mode: Integer>
CLOSEGRAPH
Proscd ur SetGrnph.'.1ode dipakai untuk mengaktifkan suatu mode grafik.
EIIO .
Efeknya menghapus layar dan mengembalikan ke semua nilai bawaan
grafik . Mode yang dipilih haruslah berupa nilai yang berlaku bagi Program 18-8.
pengendali grafik yang bersangkutan (Lihat Tabel 18- 2).
Prosedur ini biasa dipakai berkaitan dengan RestoreCrtMode, yaitu XVIII.10 MEMPEROLEH INFORMASI GRAFIK
untuk pcngalihan dari mode teks ke. mode grafik. Turbo Pascal menyediakan sejumlah fasilitas untuk mempcroleh infor-
Kesalahan yang mungkin terjadi berupa -10 (_~rlnvalidMode), yaitu masi grafik.
disebabkan adanya nilai masukan yang tak berlaku (dapat dicek dengan
GraphResult). · GetArccoords !var KoordBusur: ArccoordType>
Contoh pcmakaian SetGraphMode dan RestoreCrtMode dapat dilihat Prosedur ini berguna untu k mcmpcroleh informasi mcngcnai koordinat
pada Program 18-8. dari pcrintah Arc atau Ellipse ya ng terakhir kali dijalankan . Kelu aran akan
ditempatkan pada KoordBumr yang bertipe A rcCoordType. Tipe ini
PROGRAM Grafik_Teks;
sendiri m erupaka n ripe bawaan d.:~la m unit Graplt dcngan definisinya
(• --------------------- ------------------------------- •> sebagai berikut.:
(• Contoh pemakaian proaedur •l
(• SETGRAPHMOOE, RESTORECRTI-IODE dan fungsi GETGRAPHI~ODE •)
type
(~ ---------------------------------------------------- •>
USES GRAPH , CRT;
ArccoordType = record
379
378
X, Y: Integer; ' -: GetFIIIPattem (var Pola: FIIIPattemrvpel
XStart, YStart integer: Prosedur ini dipakai untuk memperoleh in formasi tentang pola yang
XEnd, VEnd: Int eger; sedang aktif hasil pengaturan SetFillPattern. Tipe pola berupa Fil!Patter-
end: t1Type ya ng mem pu nyai bentuk :
pada K oo rdBttSll r berupa:
type
rnen yataka n pusa r busur FIII PatternTYpe ~ array 11 .. 81 of bvte:
YSra rt mcnpukan posisi J wal busur
}'£11d menyatakan posisi akhi r busur cetFIIISettlng <var Info: FIIISettlngsType>
Proscd ur un tuk m empcro leh pola dan warna yang dia rur dcng:ln
ggab n prog ram bcr iku t, akan mcnghubungkan titik awa! SetFi/ISty le. Kduaran d ircmpatkan pada l11jo yang bc rr ipc Fi /IScrtin,~Tnh·
ak hir d:ui busur (\·a ng dihcntuk dcngan Arc) ckngan sebuah yang hcrbcn tuk :

type
Fii!SettlnsType ~ record
sur DO Pattern: word;
YStart, XEnd. YEndl; Color : word :
end ;
<var xasp, vasp: word>
ini dipakai untuk mcndaparbn aspccr ratio . Kcluar:m dite mpar- InformJsi dalarn Info:
Xa sp dan /'a sp. Aspelf rari,, sangat berguna misainya agar • Pa rrenz bcr isi kodc pola.
ditam pilkan ridak mcnycrupai cllips. • Co lM be ris i kode w arn a un tuk pola .
pcn gg:1lan progr ~ m bcrikut mcnunjukb.n pcng,lruh penga tur-
ratio dalam rnen~bu:lt li nf':karan . cetcraphMode
Fu ngsi GerGrapltAJode bcrguna unruk mcmpcr• >lch kodc dari mode
grafik yang scdang ak tif. Ni lai kduara n (bcrripc inuscr) bcrk isar antara 0
~ sampai dengan 5, tcrga ntun g da ri pengcndali gr:~fik p ng d igunakan
J (Lihat T abel 18-2).
1 oetunesettlngs <var lnfoCrs: LlnesettJngsTypel
· Prosedur ini berfungsi untuk m endapa tkan informasi ten tang garis hasil
pen gaturan dengan SetLirzeStyle. H asil ditcmpatkan pada I11joGrs yang
bcrtipe L ir ze S etti~z,~sTypc. Ti pe ba w aa n ini berbentuk:
o!or m enghasil ka n kodc warna Jatar belakang. Keluaran
type
llnesettlngsStvle = record
LlneStyle: word:
dengan keluara n ber tipe w o r d berguna untuk mempcr- Pattern : word:
hasil pcngaturan dcngan SetColor. Thlcness: word:
end;

Field pa d a parameter l~tfoCrs mcngandung infornns1 sebagai berikut:


ghasilkan nama da ri rcngcndali gambar yang tengah
sistcm grafik. Keluaran bcrtipc string. • LineStyle mc:nya takan hentuk garis (Lilut Tabcl 18-4).
~~~~====~~~----- ~
-------------------- - - -'+.-•-.. ,~.::.~~' -"-~;,::, ~- ··c •· ~:c'!:J -
"'
.,

• Pattern menyatakan pola yang didefmisi'kan o leh pemrogram


'r /
aetTextSettlngs (Var lnfoTeks: TextSettlngsType>
(Lihat Subbab XVIII-5 pada uraian SetLineStyle). i
• Thickness menyatakan ketebalan garis (Lihat Tabel 18-4). Untuk memperoleh informasi font, arah , ukuran dan pcngatur:m ..j,.
0: Normal campilan tcks yang diatur melalui S etTextStyle dan SetTextjustify. •j
l i·
3 : Tebal !{eluaran InfoTeks mempunyai ripe sebagai berikut:
n
c;etMaxColor
fungsi ini menghasilkan nilai ~·ang menyatakan nilJ i wa rna teninggi
.I type
TextSettingsrype = record
Font: word: .1
.-ang dapat dilewarkan pada SetColor. Tipe kcluaran fungsi berupa
integer. Pada CGA , untuk mode resolusi mcncngah GetMaxColor I Direction: word :
Charsize: word:
menghasilkan nilai J dan pada mode reso lu si tin ggi bcrupa nilai 1. Horiz: word:
c;etMaxMode
1 vert: word:
end:
Fungsi dengan keluaran be n ipc "'•' Ord ini bcrfun gsi unruk mcmperoleh
lnformasi field pada Info Tcks:
niiai maksimal dari modc ' grafik unruk pengendali grat1 k ya ng sedang
1
kri f. Pada CGA , fungsi ini m cn g hasilkan nil ai 4 (Lih at T abel 18-2). 1 Font berisi kode font (Lihat Tabcl 18-H).
1 1 Dirario11 berisi kode arah yang digun aka n untuk mcn am pi lbn
GetMaxx
tcks (0 = horizontal, 1 = \'crtikal ).
GerJ1axX (dengan keluaran bcrtipe integer) m crupakan fun gsi untuk I ClzarSize berisi ukuran font .
memperoleh koordinat X terkanan dari mode graiik da n pcngendali I Horiz: menyatakan pcngaturan tck s pad a arah hurizonral
rafik yang sedang aktif. Pada CGA mode 320x200 (rcsolusi mcnengah) (Lihat prosedur S etTcxrjusrijy).
,;er.VlaxX menghasilkan ni!ai J 19 dan pad a m ode 6~0x200 (resolusi . I Vert mcnyatakan pcngaturan tcks pa cb arah vcrtib l (Lilut
nggi) berupa 639.
l prosedur S etTextjustify) .
~etMaxv j
ngsi ini (dengan keluaran bertipe integer) digunak an unruk memper- .
j

til koordinat Y terbawah dari mode grafik dan pcngendali grafik yang J Getvlewsettlngs <var lnfoJendela: VlewPortType>
tif. Pada CGA untuk mode J20x200 maupun 640:>200, GetMaxY :;j GerViewSettings merupakan prosedur untuk mempcroleh in to rmasi
1enghasilkan ·nilai 199. ~~ tentang jendela yang akrif (Hasil pengaturan dcngan Se rVitwPort).
~ Informasi ditempatkan pada Infojendela yang bcrtipe seba ga i berik ut :
odeName<NmrMode: WordJ
ModeName me~upakan fungsi untuk memperoleh nama dari mode type
afik yang sesuai dengan nomor mode NmrA1odl'. Ke!uaran bertipe ViewPortrvpe = record
"ng. x1, v1. X2, Y2: integer:
Clip: boolean:
end:
odeRange(KendaiiCraflk: Integer: var ModeR. Moder: rntegerl
sedur ini berguna untuk mendapatkan nilai tertinggi dan terendah lnformasi pada InfojetJdela:
e g rafik untuk suatu pengendali grafik . Hasil :
• x1, y1 koordinat pojok kiri-atas jendel.1
lod,R : berisi nilai m ode grafik terendah
• x2, y2 : koordinat pojok ka nan-atas jendcla
lvdeT : beri~ nila1 mode grafik tertinggi
• Clip : Menyacakan proses pemoto ng;m atau cidak ccrhadap
a pcngendali grafik tak berlaku, ,\-fadeR dan Mode T bcrisi nilai -1. gam bar yang tcrlctak di luar jcndcla (Lihat Set I 'rewPo rt .
Subbab XVIIL8)

4f ·~"
~

.~ REPEAT
Jawaban :~ UPCAS! (READKEY);
· dengan keluaran bertipe integer ini berfungsi untuk memperoleh UHTll Jawaban lH ['H','T'];
nat x d ari penunjuk g am bar. Hasil bcrsifat rclatif terhadap jendela WRITELH (Jawaban);
aktif. Mis al: WRITELH ('10, 'Tunggu I');

sET'JIEWPORT lO,O.GETMAXX. GETMAXY, CLIPONl; KendaliOraflk : : CGA;


I. · Jawaban : 'T' THE~
X:" GETX:
HodeOraflk : : CGAHI
1ETVIEWPORT . (20,20, 120. 100, CLIPONl ; ELSE
X " GETX : HodeGraf ik : : CGACO;
EIID; ( a kt1lr p ro s e dur Pll ih ;o nl-4odeGr;of ik
kcdua pc rn :mggibn Get.\ . .\ abn h:rnilai 0 sck.llipun pcnunj u~
unwk kcduJ jcndcla hcr.1d:1 pada koordin.H Jbso lut \·a n? P~OCEDUPE InfoGraf i k;
COIIST
Info ARRIIY(BOOLEAII] OF S T ~lt1G(5)
( ' TlDAK', 'VA ' ) ;
TYPE
mcmpL'rolc h ~~oordimt Y dari pcnunjuk ga m b:u . Sifat s.1mJ Str5 ST RitiG(5} ;
" (;,.;S. VAR
Str!lllal STRIIIG(3];

rrorMsg !KodeKesalahan Integer> Hode, I l!ITEGER;


lnfoJandela VIEIIPORTTYPE ;
si ini digu nJbn untu k mcnghasi lbn pcsa n mcngcna i kcsa lah .1n
IntoPola FILLPATTERIITYPE;
k yang scstui dcng .m Ko cicKes,1iah ,:~t. Pcsan dim·3t.> bn daJ.am b.1hasJ
lnfoPo1a~luna : FILLSETTHIGSTYPE;
InfoGrB LIIIESETTIIIG!!TYPE :
beriku t .tbn mcn:pe~lo .1.1t ka n p:.·mal~ian SCJUmbh fJsdita~ lnfoTek• TEXTSETTHIGSTYPE ;
ruk mcmpcroich inforn us i gr:11ik \·an~ tciah ditcr.1ngkan di dcpJn.
FUtlCTION AngkaKeStr (X : WORD) : Str5 ;
pQOGR~ Info; VAR
,. ----------- -------- ---- -- ---------- ------- •)
StrAngka : 8trl;
(• Untu k mempe r oleh berbag• ; i nfor~• si g r a fi k •)

<• ---- --- --------- -------- -- ---- ---------- -- •) BEOIN


USES GRAPH , CRT; STR (X, StrAngka) ;
AngkaKeStr : 2 StrAngka
( SI BUKAGRAF. IIIC (• faailltaa untuk . . .buka aiatem graflk •l !NO; ( akhlr fungal AngkaKeStr

VAR
KendaliGraflk, HodeGraflk : ItiTEGER; BEGIN ( awal pro..dur InfoGraflk
t GETDRIVERHAME ) ;
OUTTEXTXY (10 , 10, 'H-• kendall graf l k
+ Angka K eS~r (GETHAXHOOE) ) ;
PROCEDURE P ilihanHod.Oraflk (VAR KendaliGraflk, OUTTEXTXY ( 10, 20, ' Mode graflk terbeaar
H<>deOraflk : ItiTEGER) ;
VAR - := GETGRAPIIIOC~f; AngkaKeStr (Mode ));
DUTTEXTXY ( 10 , ~tJ.
' Kode .ode graf l k aktif :
Jawaban : CHAR ; t GETHOOEH~E (Mode ) ) ;
DUTTEXTXY ( 10 , ~o.
'H. .• eode graflk aktlf :
8EOIH
CLRSCR ; t AngkaKeStr (G ETMAXX )l :
70, 'Nilai kolOM, tarkan&n
WRITELN ( 'HEtiAI~PlL K AI I ItiFORHASl ORAFIK ' ,flO) ; OUTTEXHY t 10 . t AngkaKeStr (GETHAXY));
DUTTEXTXY ( 10 , 80, ' Hi lai baria t• rkanan
WRI TE ('Re so lu ~l Ti ngg l atau Henengah ( T/ H) r ' );
385
+ AngkaiCeStr (GEiliAXCOLOR)); BEGIN ""'
SO, 'Total ke$ungk~nan warna : + AngkaKaStr (FOIIT));
+ Angk.aKeStr · (GETBKCOLCR)) ; l
OUTTEXTXY (10, 90, 'Kode font
100. 'Warna latar b•lakan9 OUTTEXTXY (10,100, 'Koda arah taka
+ AngkaKeStr (OIRECTIOH) f:
+ Angk.alleStr (GETCOLOR));
110, ·warna sa-bar aktif + AngkakaStr (CHARSIZE));
OUTTEXTXY (10,110, 'Ukuran taka
+ AngkaKaStr (HORIZ));
OUTTEXTXY (10,120, 'Pengaturan tek• horisontal:
'Tekan RETURN untuk celanjutkan I ' ) ; + AngkaKeStr (VERT));
OUTTEXTXY (10,130, 'Pengaturan teka vertlkal
EHD;

gff11IEWSETTI~ ( InfoJende 1&);


OIJTTEXTXY (10,
-!TH InfoJendela DO
10, 'lnformasi Jendela aktif: '); ,
.I
OUTTEXTXY (10, 190, 'Tekan RETURII I');
REPE.H U!ITIL IIEADKEY = 113;
END; ( akhir proseaur l nfoGr~ fik

BEGIN . BEG HI ( • prog ram utama •)


OUTTEXTXY (10, 30, ' Koordinat jenoela : ' + ~ ng>aKeStr(X1) • ·. Pllltua~eOraf ik (~end~ l •Graflk. ~ocl&Gr · af,k):
+ AngkaKv3tr(Y1) + ·, • + AngkaKa3tr(X2) •
Inl sl aliaaaiGr aflk (KencoliGrafik, ~odeGrafik) ;
• AngkaKeStr(Y2));
InfoGrafik;
OUTTEXTXY (10, 40, ·p.,motongan g&m t>ar : ' + Jnfo[CUP));
CLOSEGRAPH
END; WD.

GETFILLP~TTERN (InfoPola); Progra111 18- 9.


ouTTEXTXY (10, 60 , 'l'lformasd Get Fill P;otte rn : ·);
FOR I :: 1 TO· 8 DO Has( 1 ek,..k.u8l:
QUTTEXTXY (10 + TEXT\'I!OTH('Jnf'>rl'l;osi GatfillPattern : ') + 10,
50+ I • 10 , f<nskaKe5tr ( l) + • • • • Angk .. KeStr(lnfcPola[I)) );
~EtiA)o!PlLKAH IrtfORI>IASI GR<If I K

GETFILLSETTIHC3 ( InfoPolaWarna); Reeolus l Tinggi atau ~enengah (T/1-1)? T


QUTTE XTXY ( 10, HO, 'Info rmas i GatF i llSntt i ngs · · ) ;
WITH InfoPolaWarna DO llama l<encla 11 gr&fik CGA
BE Gill Mode grafik terbssar
+ An;; kaKe5tr(FATTfRH)) ;
OUTTEXTXY ( 10. 150, 'Y.ocle pola :
+ AngkaKeStr( COlOR));
OUTTEXTXY (10, 170, 'Kode >oarna : Kode •od• grafik aktif :
END; tlUIA •od• grAf(k aktif : e•o x ZOO CGA
Hllai koloor terkanan e39
OUTTEXTXY (10, 190, ' Tekan RETURil untuk melanjutl<an '·); Hilai barie terkanan 199
REPEAT UNTIL READKEY = •13 ; Total k. .ungkinan .. arna:
CLEAROEVICE; Warna latar belakang 0
Warna ga&bar aktif
GETLINESETTltiGS (InfoGre);
OUTTEXTXY (10, 10, 'lnformaei g&ria : '); Tekan RETURN untuk eelanjutkan
Willi InfoGre 00
BEGIH + AngkaKeStr(LIHESTYLE)) ; Infor•••l jendela aktif:
OUTTEXTXY (10, 30, 'Kode bentuk garie :
+ AngkaKeStr(PATTERU));
OUTTEXTXY (10, 40, 'Kode pola garie Koordinat jendela : 0 , 0, 639, 199
+ AngkaKeStr (THICI(NESS));
OUTTEXTXY (10, 50, 'Kode ketebalen
P..otongan gasbar : YA
EHD ;
Inforsael G•tfillPattern : 1. 255
GETTEXTSETTIUGS (InfoTeks): 2. 255
OUTTEXT)(Y (1 0, 70, 'Informasl peng aturan teks : '); 3. 255
WITH Infotaka DO
387

0.
a ·-_... _ _
~-

•• 255 GetJmage OC1,Y1,X2,Y2: Integer; var oaftarBJt)


5. 255 Prosedur ini memungkinkan untuk menyimpan bagian layar berbentuk
8; !_55
persegi panjang ke dalam suatu penampung (memori). XI, Y1,X2, Y2
7. 255
8. 255
mcnyatakan dacrah persegi panjang. (X1,Y1) merupakan koordinat
Jnforaaal GetFillSettinga : pojok kiri-atas dan (X2 , Y2) bcrupa koordinat pojok kanan-bawah dari
daerah persegi panjang. D,~fiarBit dapat berupa scbai-ang variabel,
~ode pola digunakan sebagai penampun g (untuk mcnyimpan/mcmcgang data
~ode warne : gambar). Pada variabcl ini, dua word v:mg pcrtama digunakan umuk
mcnyimpan Iebar dan tinggi cl.lri dacrah g:unbar yang disimpan . Ukuran
Tekan RETUIUI untuk melanjutkan I
memori yang digunabn scb.1g.1i penampung (ukuran D.ljiraBir) tidak
Infor~a•; garis :
bolch melcbihi 64 K.

Koae bentuk gari~ : 0 Puttmage <X.Y,: Integer; var DaftarBit; OperasiBit: Wordl
~00. pola garia 0 Prosedur ini dipakai untuk mcncmp:nk .1n datJ ya ng :1da pJ (ia DnjiarlJit kc
KOOe ketebalan lokasi layar bc rbcntuk pcrsegi panjang \·ang mcmpunyai koordinat kiri-
atas (X, Y ' ~>.uamctcr Opaasiilir (dapat bcrupa nibi (konstanta) scperti
Infor•aal pengaturan teks:
;nng dica :. .n kan pad a T:~bel 18- t.J) mcnyatakan opera,, sccara binary
Kode font 0
amara bit ~.1 mbar dalan1 pen:1111pung dc ng .m hit ga mbar yang sudah ada
Kooe arah teks 0 pada layar.
Vkuran teKs
Pengaturan teks horizontal: 0 Tabel 18 - 9. Operas! bit pada Put/mage
Pengaturan teks vertikal

Tekan RETURtl !
2
Konstanta
CopyPut
F t--Ke-te-ra~ga-n
Ga-m:Ja r da!am penampung
i j dl tumpukkan terhadap gambar pada layar
xorPut
Or~ut
l 1
2
IOperas! XOR
Operas! OR
L'muk mode resolusi mencngah, perbedaannya: And Put .
1
3 Operas! AND
• Kode mode grafik aktif tergantung dari palet (un tuk Program 18-9
NotPut I 4 1 Operas! ~or________

berupa 0).
• Nama mode grafik aktif 320 X 200 CGA lmageSize <X1.Y1,X2,Y2: Integer!
• Nilai Kolom terkanan 319 lmageSize mcrupakan fungsi untuk mcmperoleh ukuran penampung
• Total kemungkinan warna 3 ya ng diperlukan untuk menyimpan gamba r pada daerah pcrsegi panjang
• Warna gambar aktif 1 (Bcrkaitan dengan SetCvlor) yang dibatasi dcngan X I, Yl.X2, Y2.
• Koordinat jcndela: 0, 0 , 319, 199
• Kodc \varna (berkaitan dcngan SetFillStylc) berupa 3 Contoh program:
Contoh prog ram tcntang :lllimasi dapat dilihat pada Program 18-1 0.
XVII.11 ANIMASI GAMBAR Prog ram ini mempcrlih.ukan c:lrJ mcmbua t animasi helikoptcr yang
Unit GRAPH menycdiakan tiga fasilitas yang sangat bcrguna uncuk scdang bngcrak di atas gunung. Untuk hperluan ini, fasi litas Get/mage,
mcmbuat animasi, misalnya berupa mobil atau hclikopter yang scJang Putlmage dan lma~l!r'Si.::c S.lngat memb:mtu J:dam melll~'crmudah pem-
bergcrak. Ketiga fasilitas tersebut adalah sebagai bcrikur : buatan anim.1si . Prinsip kcrja :lllim.1~i yakni dcngan cara mula-mula

388 389
JJleogga~?n r h\"h~l)llt('r dan bentuk gunung. Kemudian gambar heli- PR()Cf1)Uit[ Alll-ait1ell ; .

~opter dtS\Oll'•ll\ \11\liltn lleap yang ditunjuk oleh pointer PtrGbr, dengan CONST
LAIIOKAH : 4;
JJlenggunak11n n"'' '"'a.£r
(Ukuran memori dari penampung yang ditem- y.)IOfiMAl = 50 :
langkah terak&n helikopter

patk~n dabm ''~I' ,f;~~'ilt dihitung dengan memakai lmagcSize). Langkah


( ketlnt~glan nonoal ltntaaan hellkoptar
VAll
~ .·
sela~Jutn Y:l •h ltll,ih 11\cmbuat gerakan helikopter dari bag ian kiri ke PtrGbr
x. y
POINTER;

bag1an kanan It~ Y•ll , l>ro$cs gerakan ini dilakukan dengan cara menempat-
WORD·
Jnelaling : BYTE;
kan d~ta RltllhM t.bbm penampun g kc layar (melalui Putlmage),
kemudlan . '''111-\~·l ltr h.1r bentuk balin g-baling . Serclah ditund a sesaat,
11 BEGIN
baling-bahn g t lih,,llll ~. scdan gka n gambar helik op tcr dihap us dengan I Gaabar hellkooter
LINE (48,41 ,49,4 1);
men gg un al....l!' l'tll ''"''.t.:r.
mode o p crasi bit sccara XorPur. Pcnggunaan LINE (37,42,59,42);
P~rtlmage 111 ••d t• tl ! ll · r. 1 ~; bit XorPut d irna ksudka n agar gambar latar LINE (38,43,80,43);
belakang ttd .tb lu•rq lta h (tctap seperti scbclu m ada gambar hclikoptcr) LIIIE (53,H,~1,H);
pada saar g~ ,.,h ,,, hl'likoptcr dih apu s. .1\dapun gerabn helikopter LINE (54,45,82,45);
LIIIE (55,48,83,48).
dipcrokh ckJIU <III fir• lt\' lllpatka n kcmba! i gamb:J; hclikopter pada lokasi liNE (82,47,59,50);
selanJutn y.l . l•r ,t~r·\ J1t' llp,geseran lokasi , pcncmpar:m hcliko prer , pem- LitlE (58,51,40,51);
buatan b:~ltrr~ ·h,dliiJ; rl.tn pen ghapusan kembali dilakukan scca ra ber- LitlE (40,51,34 , 4~):
ulang-ulanK ~d llttl'.l~·l tncm bentuk gcraka n hclikoptcr. LINE ( 39,44,35,44);
liHE (38, 45,5,45);
pJ!OGRAH Hell ;
,. ----------
(. C<>ntoh
·
P••·t-. t IU
')
LINE (38,48,15,48);
l iHE (5,44,5,40) ;
PUTPlXEl (48,52,3);
,, ' 'i 01 1141\{lf, IMAGESI ZE dan PUTIHAGf ')

,.<• ----------
USES
un t u k ........., . . . . ,, 1•

GRAPH, ~~1 ,
•• t •~ 1t koptar y.iln g be rg era k d t a t•a gunv"9 • ) ·
' )
PUTPiliEl (52,52,3);
LitlE (30,53,0 4, 53);
LINE (0. , 53,08,51);

($I SUKAGRAF . loll, I


! ~ '••ilitas untvk ~embuka aiGte• graf lk • ) ( a i apan ga.bar dan haPus ka•ba11 ~~$b&r pada layar )
GfTNEk (PtrGbr , IHAOESIZ£ (5,40 ," >,56)) ; pes.41n ruang dal~ he&.p
VAR GETIN~GE (5,40,86,50,PtrGbr");
al•pan data g . .bar ke heap
Kenda ltOrat ••' ........!, •"~ I INTEGER ; PUTlNAGE (5 , 40,PtrGbr",XORPUT); hapua ~bar

PROCEDURE au.~;.,,,, u "H '


CONST •• Gaabarounung;

JUNTTk • 11 , REPEAT
Dataounune
~"IIH I JIJffTK) OF { proae. helikopter bergarak
.,~,~,.11
SIETWRITEHOOE ( XORPUT} ; IOOde XOR uni:UI< garla
~ . y , IO',j!l) X :: 5;
PO&I&I awal hellkopter
lift! Jnakling :: 0; jenla b&llng-ballns awal
~ (lA II , f o llt'IJ, (X : 120;Y : 100}, (X : 150 ; Y: 105), (X: 190;Y : a5), RfPEAT

t l . ~i~ ,l • fti,( X : 2SO;Y : 38},(X:280;Y : 43),(X : 300;T : 40), ( . .nantukan tlnggl llntaaan hellkopter
{ l. . tfll , l *'IJ , (X : 430;Y : 80),(X : 839 ; Y: 95)) ' II' (ll>:100) AHD (X<:230) Tt1Etl ( ltntaaan hellkoptar Ntik
Y : = Y_HORNAL - ROUND (45 • (X - 100)/(230- 100)}
ELSE
BEGIN
RECTAIIQL( <v .'f ,4•• , ,.,1' buat · bingk~l ~bar
If (X>230) AIID (X<:410) THEil ( llntaaan hellkopter turun I
Y : : Y_NORMAl- ROUND (45 o (410 - X! I (410 - 230))
DRAWPOL Y ( J '... ll r , 4.. .,.,.,...ng) ;
g. .bar gunvng ELSE
FLOOOF~Ll I I I , 'I
END; { akhl r .._.._._, ••warnai langit
ilrGunung Y : a Y_HORMAL; ( llntaaan noraal 1

390
391
P\ITIMioQf (X, Y ,ptrGbr~ ,llOIIP\IT); taJopllkan he 11 ~apter pada POa18i ban, t
CASE Jna&a ling Of' llellbuat ba 11 nll ba 11 n11 }

0: LIN! (X+21,Y,X+57,Y); jenie pe..- I


1: LINE (X+35,Y,X+51,Y) ; jenie k-.a
2: LINE (X+43,Y,X+44,Y}; jen1e ket1ga
EJIO•

DELAY (50); tunda -b<tntar }

hapus ba11ng-balin9
1 •I
CASE JnaBa 1 i ng Of
0 : LINE {X+Z9,Y,X•5 7 ,Y) ; untuk jeni • pert&ma
untuk jenia ~ •dU&
1: LINE (X+35 ,Y,X+51,Y);
Z: LINE (X+43 ,Y,X+4•,Y); untuk jenie Met1ga

END;

hapua ke~bali n.l tkopt er


PUTIHAGE (X,Y,PtrGnr ' ,XORPUT);
poa isi baru dari n.l~kop~er
INC (X, LANGKAH) ;
jen is b~ling-bal\ng y~g barv
JnsBa1 ing : = (Jnabaling+l) HOC 3;
UNTIL (X > 580) 0~ KEYPRESSED ;
UNTIL KEYPRESSEO G.un/o~r 18 - 19. Gamb.ar anim.ui hdiltoplrr

..
EMD; { akhir proaedur ani . . ai hell
(.
)
BEGIN (* pr09r. . utaaa •1 t• fila GAIIBAR.ItiC )
Kenda1 iG rafik : : CGA ;
Node<lrafik : = CQAHI ;
{ .-nggunakan CGA )
( .ade grafik r •ao1uai tinggi
In1sia1i . .a1Grafik (K.noa1iGrafik, Ho04Grafik) ;
(~ B•ri•i fA9i1it•s untuk ~enytmp~n I
c•
i*
ke itau d~ri d 15ket
membac~ da ta gamb~r •)

----- -----
. )

•)
Ani . .siHali ;
CLOSEGRAP!1 PROC!.OUQE Su'!panG.i.:ilb.tr (t4••aFi le STRltiG) ;
END.
t• Proseour ini oer fungst untuk Menyimp.an g~mbar t)

18- 10.
~
J
(• P~d• aode re aolus~ ~•nengah c~upun resolusi t lnggi
{•------------ --- .
COIIST
t)

i 1118K8 : 16384 ; { 16 kilo byte)

12 MENYIMPAN DAN MEMBACA GAMBAR


·j VAR

Menyimpart data gambar secara permancn dapat dilakukan dengan cara 'i BEOltl
Fi 1otG""'b"r FILE ;
BufferGaao•r : ARRAY [O .. U16KB- I} OF BYTE ABSOLUTE $8800 : $0000 ;

·· mcmblca .data yang ada p:~da memori gambar dan kemudian menyim-
pannya ke dalam disket. Untuk keperluan ini kiranyJ perlu mengetahui
lokasi tempat data gambar disimpan dalam memori (RAM). Memon
gambar baik untuk resolusi mcnengah maupun rcsolusi tinggi berukuran
j ASSIGII (fil eG&lllb"r, Na•aF11e) ;
QEWRITE ( fi1eGa~b"r, HISKB) ;
!LOCKWRITE (fil eGamb•r, 8ufferGa.bar, I) ;
CLOSE {Fi1eGa•bar)
END ;
buk• fi 1• dengan
ukuran record 18 KB
b,aca 1 r•cord
tutup file

16 KB. Narmm tepatnya hanya 16000 byte ymg-dipakai untuk


menyimpan gambar. Alamat awal memori gamba r adalah B800:0000h.
Untuk mcnyimpan g:~m bar ke diskct (untuk rnudahnya) yang pcrlu
1 PROCEDURE BacaGa•bar (NaaaFile STRING);
-- --- • )
dilakukan ad:1lah dcngan mcnyalin scluruh isi mcmori gambar (16 KB) C• Proa•dUr ini berfungat 3ntuk ••~baca data g&mbar •>
c• pa~ .ade r •soluat . . nengah ••vpun reaolu•i ttnggi •)
~e disket . Penyimpanan dcngan cara ini dapat dilihat paJa prosc:dur (t yang di•iMpan dengan SiapanG~•bar •)
SimpanGambar berikut: (•-----------------------------------------------------•)
• · 392 _N3
-
c .

OUTTEXTXY (20, 160, 'Ga.bar sudah dislapan . ') ;


OUTTEXTXY (20, 190, ' Twkan ENTER I');
eotiST
MI6KB s t&llll4;
te kilo byte REPEAT UNTIL READKEY = f13;

~...
:· ~·· hapust layar
VAR - CUARDE\IICE;
Fi leQ.uobar FILE ;
!IUffor<l&JObar: I'RRAY [0 •• HidKB - t] OF BYTE ABSOLII"TE $8!00:$0000;
·j OUTTEXT ('SeG&ng mambaca data gambar . ');
J ual ahOi bac• : WORD ;

~
BacaGamba r ( 'TES. G8R');
BEGIN bu >a f l le cSensan CUTT EXT XV ( 20, 190, 'Tekan EtHER ! ') ;
ASSIGN ( FI1 e G3JOO&r, II;>.Ma flle) ; uk uran record tl KB
RESET (fi 1.0a"bar, ~18KB); REP EAT UNTIL REAOKEV = J13 :
-~l
bac a 1 record } •
BL OCKRE AO ( F ; ·! .,GaJ:Ib&r , Butf erG U! O&r , 1 ):

CLOSE ( F l"leGarob ar) CLOSE. GRAPH :


EHD : { a ~ h\ r pro9-adtJr SscaG.l.!rtOar } l EHO.

P rou dur 18 - 2. Pr•\C '~ "' 18 - 11.


g1r:1 b:n yang ,1d.1 pJda d isket dikirimb'l ke
i\d apu n ap.tbib data .'-1u!J-mu \a gJ m bar lingkar:m da n bujur s:~ n gbr di tl m pil bn pa d a la\'3r .
gJ.mb.H abn segcra Jirampilka n pa da la ya:.
me m o ri ga m bar. m ak a Sc\anj utny:.l g.1mb.tr d isi mpan ke dala m dis kct (d en gan S impa11 Ga mbor) .
.Jip::laja ri pad.1 rroscdu r Baca C.u11bar . Cnwk mc li h .!t p roses pcmu:n an gam b ar d:ni d iskcr.. ma ka gJ. mh ar
Mcngcnai ha l ini dapa t
s•:mula pad,1 : 1r dihap us tn icbi h dahulu , bJ ru kc m ud iJn d ihk ub n
mc nyimpan dan . mcmbao g.1mba r:
Contoh p rogram unt uk rcmb.Ka ,m d .1:·, diskc t (dcn gan me n gg unakan BawGam lwr).

PROGRAM O a taGa~ba r;
q
(.
( * Contoh
<•
ps ny i~ panan data gaffi ba r k& di s ke t • >
dan pemoac aa~ da t a ga~b «r d~r; dis k9 t
.. )
\
(.
USES GRAPH , C!·. f :
(4 f;>.si1 i ta9 untuk membuka sistem grafi k • l
( $1 BUK AGR Af . ItiC } (t fasil i ta9 unt uk membac a dan meny i mpan *)
( $1 GAHB ><R. INC }
(t data gambar ke I dar i disket •)

liAR
Kenda l iG raf i k, ~o~<>daGraf i k : ItiTEGER;

BEGIN (• progr~ ut~a •>


'Kendal i Graflk : = CGA;
ModeGrafik : = CGACO;
Inillial i aasiGraf i k (Ke ndal i Grafl k , •· ' .je Graf i k) ;

{ buat g.-bar lingkaran dan kotak l


SE TASPEC TRATlO (1,1); { atur aspect rat i o}
CIRCL E ( 180 , 100, 40) ; I buat llngkaran .)
buat kotak
RECTANGLE (120 , 80,200 , 140 ) ;

{ ei ~pan ganbar ke f ila TES . GB R


S impanO&Mbar ( 'TES. GBR') ; 395

394
~ - - -- -

., "'-~r; {.;
Suatu unit diaw:~li dengan kata-tercadang U11it kemudian diikuti dengan
?--:-
nama unit. Sdanjutnya terdapat tiga bagian berupa :
• Bagian interfau
PEMROGRAMAN MODULAR • Bagian implerJ1ewion
DENGAN UNIT • Bagian inisialisasi

saglan Interface
B ag ia n lliterfaie mcrupJbn- bagian unit yan g Ji :nvali dcn gan bta-
rcr c:~Ja n g lnrerfl:r dan bcr.1k hir dcng an adany:t bta-tcrca darig i111plcmc11-
!l'Cf'FC nl fl'g ranJ J!~ '< •_".!; j I~ Jn ct u:.l~ ( ~'~Ogr atn d.1\ :un h t'nt llk bebcrapa :.Hion. B3gia n ini bcmi dc k!Jn si/ ddin is i kom tJn ta , tipe , va ri.1 bcl,
v:m g sanga t m c· r...~i k Jqx rk cn.1ikan d .lla 101 1 u> i->o P a~ ol mu lJ: proscd ur a t:t 1!_{~mg;l y.11: s bn siiar umum (pu bhk j. tbl.1 m art ian da p.H
1 -L O. M odul s q'c ~r : ;ni di kci u! dc ngan nam a unic. Den gan j ipakai okh pro::; ram 3U tl unit la in .
m bn un it. ~t:.Hu m od ui b.1gi.1n dar i prog ram d ."\ pa t dik ompilasi Jib p:Jda bagi.1n in t~ rja ce n:cnga :1 d un g k bu s a ll_<es: maka k o~sr a nt a a ta u
tcrp isah tc r h:;,~.l !' ;' rog ram . H JI ini sangat mengu ntungkan_ tipe yan f! didckbras ibn pad a bag ian ini dJ pat 1ne nggu nakan dek la r:t~i
sa naa n korn p ibs1 tc·ri ~ a dap pro pa m akan m cnj Jdi lc bih ccpat, Y,m g t c ~ _;.1p .1t pJ d.l hagi.m :"rlfc' rf;1<<' dari unit y.in g d ilib.ttkan . Disampin g
ab ka n fas il ita s d.11Jr.1 unit tid .1 k ikut diko m pilasi. Sclai r. itu . sebuah 1ru. J ck l:t ns i \"J :lg tcr,i ap.tt p.1d 1 un it y.lli g d ig un:1k (dabm usrs). dap :H
1
dJpat dipabi r-:_.:1 ::>c:l'>e rapa pr og ram lain . dipa kai C: Ji am b.;gian ;mplenw :!.Jiivu.
p3 da ln mpir sc m u .• r~osr,lm p:~d :1 bJb-ba b d i dcpan mdib arbn unit. Con ro h dcki ar.J si p.dJ b .1~~i:1n i11rcr:f<t.-c:
nit yan g di p:1 k:1 1 l L~ > c+u mc ru pakan j cn is unit st anda r ( ba\~· :, a n ) yang
·di akJn bc rsam a ~.<:m T mbo Paso !. Dia nrarany a ad ab h uni t CRT. UIIIT Con t oh:
d:lll GR/\ PH . ::--- ,J·;·_ rnL· Iih.nk.l!1 u nit b.nn.m, sebcna rny a prognm
b SJ !l1 C11 f'f; L1 ;· . ; .• !1 "lll( \-.1:~;' dih k"' \CI1 (1i ri o kh r c m~ogra m ~-
\·········· ·4··· ··· ············ ············ ······ ···········>
INTERfACE ( ' awa l bog1 a n interfac e • l
<••···················~········· ·, ····· · ~···· · ······ · ······· >
XIX.1 STRUKTUR UNIT
USES CRT ; { unit yang digunakan ol eh unit contoh
Suatu unit dapat ber:, i dckb rasi /defill JS J Konstanta, tipc, variahel ataupun VAR
1
uaw subp rog ram (p oscdur/ fu ngsi). J ad i pad a dasarnva sama den gan Huruf : CHAR; var i a bel g loba l
1(bu :ll1 prog ra m.
Srruktur unit ada lah seb;;gai berikut: PROCE DU RE BacaHuruf (VAR KarHu ru f : CHAR); pro s edur global

FUNCTION 8aca0ig1t : CHAR; fungs 1 global


UNIT nama_unic;
INTERFACE Unit 19- 1.
USES daftar_nama_unit; \ optional }
{ berisl del<larasi yang oersltat umum } Pada pcnggala n un it di .n Js . nama unit ad ab h Co11rolt. Klausa USES
CRT mrnya taka n un it C RT dil iba tk an dJia m un it Co11roh. Bagian
IMPLEMENTATION interface mcnga ndung dckbrasi (yang nantin ya d ap at dipergun abn o lch
{ oerlsl del<larasl yang oersifat pribadl
i lmplementasl prosedur dan tungsi l prog ram Jta u unit l.1 in):
1. V:lriJbcl H11mf yang be rripe char.
BEGIN
{ pernyataan lnlsiallsasl 2. Proscdur Baw l-i 1m~( den gan param eter bcrr ipe char .
END. .l Fu ngsi HacaD(!;!it (t:m p;J param ete r), dengan kdu aran bertipe char.

:wn 397
)al11 bagian unit iP~terface. deklarasi prosedur atau fungsi hanya berupa
END; ( akhlr prosedur BacaHuruf i
f:pala prosedur atau fungsi (Tidak mengandung bagian pemyataan). FUNCTION BacaDiglt: CHAR;
~
~
pgtan - '~p lem_entatlon _ .r { Jmplementasi fungsl BacaDIQit

l
. . .
f3agian 1n1 b~ns1 deklaras1 yang berslt at pnbad1 atau lokal, dabm art1an }
VAR KarDigit: CHAR;
idJk bisa d1gunakan olch program atau un it lam. j1ka p adJ bagian
BEGiN
:"wfiw· m enga ndung kepala proscdur atau fungsi. mab paJJ b:~gian BacaKaratcter IKarDigit. HlmoDig!tl ;
jl•lf'/elllt:/I(Q (j!)ll beriSI dekf:uasi yang lengk.Jp dari proscdur atd U fungs i. BacaDiglt := KarDigit
Dalam pcndekla~asian pJda ba~im in! , scmua dckbr;Jsi ya ng ~'~J p2da END: ( ak:hir fungsi BacaDlgit }
bag 1an interfaie dapat dipcrgunabn lnm.,inyJ untuk mrnd efin;,;:-;,1;; upc
Pada bagiJn implemt·n tar'''" n;-i-:-· terJap.1t bcbcr.lj.JJ dcki:lrasi / Jdlnisi y:111!,;
\·ang be rsi fat lokal) .
!fb dekl arasi mclibatkan fasilitas dalam unit lain. maka kl;;us.l Jlii's bcrsifat lobi, bcrupa :
J;oat d iscrtakan pada bagian ir.i. Scanda inya kla usJ 11scs bescrra u;; it I . T ipc Tipcl-limpKar
su:bi1 ada pada b:1gian inrcofarr, kiJu sa 11 .<c, c1 dak pcrl u ditulis l.;~i pada 2. KonstantJ I-Iin:pHun~( Lhn F-l itnpDigir
b.1~i :m im . 3. Pro~cdur na<"a K.1rakta
Contoh bagi an 1111plt'mmrarion:
Tipc, konstan t;; d,m p ro sc dur tcrsc!'llt han;·.! d.lp:lt dipcrg unJkan p;;d,J
I .... ......... .. .... ,. ....... .. , ..... , ..... . .. , ... ,. . .. .. .. . .. . ......... :ii ..... ,. . . ..... . . ..... "' """''"·····"•'* •••• • .. J bagian itnplmit"llf,Jiit>rl. Ot"klarasi lainn\"J mcrupah.;n i nt plcmc nta ~ i dari
11-/.PLEMENTA.TION I· awal bag1an im plementJtion ·l proscdur da n fungsi vang didckbrasibn pada b:.gian inierj(Jcc.
~ ,. .... ~ ~. 1
Pcrlu di k cr:~hui. jika uni t bcrisi fa~ ilir:~~ prnscdur .1tJU fung~1 nJJb
\ . . . . . ........... ., ...... . . . . . . . . . . . . . . . .. . .... . . . . _.. .._ .. :a-,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . ... .. ...... . . . . . . . .

t:pe lo~al ·
kl·pala proscdu r atJu fungs i pad.l h.1gi :l!l imp lnn, tlftlfioll haru sl:!h SJ !ll ,1
TYPE
TipeHimpKar = SET OF CHAR· dcng~n pa d:t bJgiJll ilitl'~lc:r . Kcti Llak~:Jf!! ,Uil rada kt·p.tLl program :~bn
CONST : kvr.sta r:ta lokal mcnyebabkan unir tak LhpJt dik omrila ,i. Na inu n, unruk mcnyinghr
HimpHuruf = !'A' .."Z'. 'a'..'z'l : pcnulisan, b:~gian pa rameter proscdur ,HJu fung si dalam bag i.m illlpltm !·,,_
HimpOigit = !'0' ..'9"1: ltlfil111 botch tidak di tuli skan (disenakan). Mis :~l uncuk conwh di dcp.tn.
.. kcpala prosed ur pada bagian implemen tation dapat bcrupa:
PROCEDURE BacaKaratcter IVAR Karatcter CH.AR ;
HimpKaratcter: TioeH!mpKJrl ;
{ Prosedur Jnl bersifat lokal. PROCEDURE BacaKaralcter;
}
BEGIN Baglan lnlslallsasl
REPEAT
Karatcter := READKEY;
Bagian inisialisasi minima! mcn gand un g kata tcrc;tdang END diikuti
UNTIL Karalcter IN HlmpKaratcter dengan tand a titilc, yakni kalau tidak ada inisiaiisasi ya ng diperl ubn
END: { aktllr prosedur BacaKaratcter } dalam unit. Scbagai comoh t e nt :~ng un ir ya ng lcngka p:

PROCEDURE BacaHuruf IVAR KarHuruf: CHARI;


UNIT Contoh;
{ lmplemenffil prosedur BacaHuruf.
Keluaran berupa huruf kapltal.
!••···············*·······································••>
INTERFACE ( t awal bagtan tntarface t)
BEGIN
BacaKarakter IKarHuruf, HlmpHurufl;
c•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••>
IF NOT !KarHuruf IN !'A' ..'Z'Il THEN
U3ES CRT ; { unit yang dlgunakan oleh unit contoh )
KarHurut: = UPCASE IKarHlirufl;

_\(})) 399
aacaOlglt : = KarOiglt ... ..-
~

~ END; ( a kh l r fungal a&c.Olglt


.,...r ';'lb7\ g1 c t>#l
11;::;:.

~
)lu:"\:f: : Hr.R; <·························································••>
{ Baglan lnlsla11saal. Tl dak Mangandung inlsl&llaasl }
~t,.'CC:::::'.JR'o: <········· ························~· · ······················•)
s a=Huruf (\/Ail .-arHurd: CH.:Ifl); { proS<idUr g1ob;.l
n
..:!:

o(P:t:";!.-:11 :_a.;~ig\t: C>!M:

,..• ~~··-··~···'··~······$························••*·······>
:H\f'l ~~nrrAi!0/1 <• awal bagle.n i iiiPl-•n-tatlon *l
( fungal global
'I .!
1
uw .

Unir 19 - 2.
( • akhlr uni t •)

(• '••••·~~••••••••••••••••••••••••••••••••~••••••• s••••••••*l '


\ K~lau mis.1ln\' .. Un1t !<,- 2 dt tull< dcn,::1n i1J lll.l fik ,1d.tl .th C UNTUH
. \'A5 . m.1k.t l'J:-. il \.• 'nii'd.!'' hcru pa tik C(l!'nt)\ I. TPU.
Pr~)gr.~m y.u.~. n.•:lol,~t'o n u'''t (_',,.J r,·l; di ,,ii k .tn l'·'d:1 Program \ li-1.
I

"[ '(PE tiP" l olo. a l

[lperiimpKar : SET Of CHAR;


COI1ST I kons~anta loka 1 )

= ['A' .. ·z·. ·a· .. ·z'); PR<XJRDJ.4 TesUni t Contoh


HiepH uruf
{ ·o· .. ·g ' l:
HIIOpOiglt USES C~T. Co"toh :
PROCEDURE SacaXaraKtor (VAR Kar~kt~r : CH AR;
HilrP~'"'"kter : Tip<oHimp~;o r ) : 8£G H I
CLRSCR;
( Prosedur ln i be rsi ht 1c~ al . "RilEL " ( ' Masukkan s• ~u ah hu ruf. ' J;
Bac~~ ur uf tHuru fl :
BEGIN "p]T[ L ~ (Hurur):
REPrAT AE AD~N
Kar;okter :: PEAOKEY: (t;Q .
UNTIL Kar;okter IN H lmoKar;.kt ~ r
ENO: ( akhir prose du r s~caKarakt &r Pro.~r.un 19 · I.

V;1riabcl i-{;1'·11( p3(lJ Prog ram \!J- \ mcrupakan variabcl cbbll1 un1 t
~a rH uruf·
C,Hzr,,/z ~·;li1~ l!t nJ.lnia.HkJn o lch pro~ram. 5chin f!: ga ti Lhk pcrlu ada
PROCEDURE Sac aHuruf (V AR CHAQ);

Ieple~entasl proeedur BacaHuruf . dckL1ra'i tnh.l(hpnya. Hcgitu halnya proscdur fltlcaHun~(


Jika dimgtnkan agar data dalam unit dilakubn suatu inisiJlisasi
Keluaran berupa huruf kapi~al .
tcrhad ,l p unit (dapat bcrupa scjumlah tindabn dabm bcntuk bcbcr apa

BEGlH
pcrny:ltnn ). maka inisi:~lisasi bcrbcntuk :
BacaKan:.k ter ( KarHuruf, Hi11pHuruf) :
lf NOT (KarHuruf IN ['A' .. ' l ' J) THEil
BEGIN
KarHuruf : = UPGASE (KarHu~uf);
; Pernvataan
END ; { akhir prosedur SacaHuruf END.

fUUCTlOH sacaOiglt: CHAR;


Comoh dJpJt Jipc ro kh d.:nga n me m odifibsi b.1 ~ian misi ahsasi dari unit
Coll l<'l' nH·njJ.di: ·
{ Iap) ...ntasi fung~l Sac aOiglt

BEGIN
VAR KarOiglt : CHAR; CLRSCR ;
BEGIN
SacaKarakta r (KarOigit, H\mpOigi~ ):
• 401

400

-.---~~~7:!.~~~.:'0.-:i'. ~-:y""~:;..;~i:~'; .::. ~~:~J~~(~r{$'ti~~~~~~


------ ·~ -

(atau unit lain) yang mempergunakannya menyertakan pengaJh


Huruf :• 'T' : kompiler {SU } dcngan bcntuk :
WRITELN l'lnlslalisasl tert\adap HURUF sudah dllakukan.'l; •'
i ~
END. (• akhlr unit •l USES {SU NamaFile) NamaUnlt;
dan kemudian unit perlu dikompilasi kembali.
Scbaga1 comoh:
Dengan adanya bagian inisialisasi pada unit Contoh , rnaka variabel
Hunif diberi nilai awal 'T' . Sudah tentu nilai varia bel ini bisa diu bah ol eh
PROGRAM TESX:
program . M isal: USE :suKARAKTER : CONTOH . CRT;

PROG~AM Tesinlsialiaas\Un\t;
l't:lf!S ·d J;; ?rogra 1n di J!.lS tncnyJ: .d,dn. progrJrn mcngg uf'l akan Ju .1
bu.th unit t'c rupa CONTO I ! J.m ern . Kllll'u' <..~nwk u nit C." '''"
USES Cootoh;
,bimpai. -~<-'ngan nam a tile K.-\H/\KTEH.TPU.
BEGIN
WRITELN (Huruf);
Huruf : = 'C';
WRITELN (Huruf};
READLN
END .

Cooton Ekaekusl :

!nisl al l sasi terhadap hu ruf su d ah d i l ak u kan.

T
c

Program /9 -1.

Dari ha sil eksckusi terlihat bahwa pcrn yataan


..
.;

WRITELN l'lnlslallsasl temadap HURUF sudah dllakukan.'l:

yang terletak dalam bagian inisialisasi unit Contoh dijalankan terlebih


dahulu sebelum pemyataan-pemyataan y ang ada pada program. Sudah
tentu pern yataan

Huruf := 'T' :

juga dieksckusi sebelumnya.


XIX.2 KAITAN NAMA UNIT DAN NAMA FILE
Antara nama uni t dan nama file sebenarn va tidaklah harus sama. Bisa sajl
misalnya nama unit adalah Co iiC<'h .t.: tapi nama file unit adalah
KARAKTER .TP U. Hal seperti ini dipcrkcnankan asalkan pada program

402
kesalah an sewaktu program d ~jalanbn berupa:
'Numeric co-p rocessor req u ired'.

(proscsor pcncbm pin g numerik diperiuka n)


XX PROGRAM TAMBAHAN Progr::.m vang mcl ib .1 rkan ripe single, double, exten-
• {$N -}
ded atau comp han\"J bis ;1 dik o mp1llsi kalau pro scsor
rcndampin g 81)87 :1da .
c~\!1[1 ,h r rOf!. i" :ll1l \ ":J il t' !!1 C ll1\ 111 S kil1Ll11 L"niiil bi t'"'r~i rung.m !1t111lt'l"l ''

rc.1l:
Ih b ini berisi program yang mt·mbcribn contoh c.ua melakukan
emu lasi pengo!ahan numerik, pcmcribaan tcrh:~dap .1da ridaknya nib i
u:dc ks di luar kawasan array, membu at jcndcla bcrrumpuk (sistcm puli-
PROGR~ Emu lasi1;
<• ------ ------ ------ ---
. )

dt•lllll ) d,m juga cara mcmbikin menu pilihan dcngan si stem gescr. (• Go n ton program yang msmungklnkan •mul~~ l • J

(. perhi:ung~n bilangan numer i~


. )

(• ~a 1 su proseaor pen~amo\ng 80o7 tak od a •)


XX: I EMULASI PENGOLAHAN NUMERI K
<• --- ---------- --- ------- ---- ----- ------- - ' )
Ka dang-kadang dipcrlukan untuk mcngolah nilai ndmcrik (bilangan'
yang sangat besar :1tau memerlukan kctdirian tingg1 Sulusiny;,_ dapat { Sff+ I!: ... ) ( t momung kinkan &mu l ae1 +}

m enggu nakan tipe-tipc bilangan yang discdiabn da L1 m Turbo PasC1l


b ~rupa single, d o ubl e, ex t e n ded dan co m p (Lih at TJ.bel 2--l). COtlST
F A ~T OR_P E !<G ~ Ll 1.55E+06;
Kccmpat ripe ini scbena rny::t discdiak :m untuk komputcr y :m[e m cmi lik i
:'fl •St:SOr pcndam ring 8087 - N ,l111Uil kahu pun proscsor terse-bu t '-' ~
VI\R
• N i 1~ \ : L 0'1G IN T ,
rcrsccha . ad:1 ca ra yang mcmungkinbn kccmpat ripe rnscbut teL;? J ar-1:
BEGIH
oig un:tkan yai tu dcngan ca ra cmulasi. Nila\ : = 1-!AXL OtlGitiT; { tJ \la n 9•.n ;JOSit\f teroesa• d<llam t\pe LOIIG IIH .
Emub si dap:lt Jila k sanaka n dcngan mcnycnabn pt·ngarah kompikr fo.\orupa )... an l-.on s t.ar.~a ~.- ... ... <ln dalu un1t SVSTE}-4 }

{SN} dan {SE}. K o m pil cr {SE } digunak.an untuk m cngiz inkan em ula~1 I-IRITELN ('Is\ tH LAI N\ l a i);
atJu tidak seandain ya proscso r pendamping 8087 ridak ada. Keadaan
FAKTOR_PEtiGALI • tl il ~ · ; :
{SE+ } menya takan emulasi dapat dilakukan. Sedangbn {SE-} bcrarri I-IRITEUI ('Has\1 kal\:
t'm ulasi tidak diizinkan . Pcngarah kom pilcr {$N } bcrka itan dengan RE ADLN
bcntuk pemrosesan n u merik. Keadaan {$N+} mcnyatakan pcmrosesan END.
numerik real dijalankan dengan menggunakan proscsor 8087. Keadaan Prog r~m Z0-1.
{SN- } be rarti bahwa pemrosesan bilangan numerik real dilaksanakan
sccara software (dcngan ukuran bilangan adalah 6 by te I ripe r eal). Kalau Program :20 - 1 t1ij alanka n maka h:tsilnn .;dJlah:
Sifar pcngarah kornpiler {$N } dan {SE} adalah scbagai berikut: 2147483647
ls i Niiai
• {SN+,E+} Jika prosesor 8087 ada maka proscso r ini dipakai untuk Hasil bli 3.328599652RS()(){ IE + 0( li :;
m elah.1kan pcrhitung1n numcrik real. Apabila tak ada, ncrbn{< halm·a kalau pcngarah kompikr { S ~- . E t- } tidJk di scrtakan.
ca ra emulasi yang dipergunabn.
Dal:tm hal ini hasilnya adalah:
• {SN + ,E-} Pcrhtrun gan numerik ya n g mclibJtbli ri pe single, 21·l7 48364 7
ls1 Nil.\i
double, e.x tended atJu comp ham·,1 .bpat dilakukan .3 ..Y~SSq9652SE -+- IS
i Lt ~d \...al i
dengan menggunakan prosesor i)l)87. Kcmungkinan
4U5
-Hl4
(• pengecekan nilai dl luar kawasan aktlf •l
(SR+}

Terlihat bahw-a ketdirian hasil perkalian dengan cara emulasi (atau yang VAR 1 BYTE;
menggunakan prosesor 8087) lebih tinggi. tHlaHes : ARRAY[\..5} Of BYTE:
Contoh bin pcnggunaan emulasi yaitu dimungkinkannya penggunaan
tipe comp walaupun prosesor 8087 tidak ada. BEGIN
: = 1 TO e

..
FOR l 00
N i la iT ee [ l] : = RAII00!-4 I 1 01 ) ;
PROGRAM E•ulas\2; )
<• __ :~---------­
(• Contoh perhitungan numerik tipe COI-IP
.
)
)
EtlO .

(* dengan cara emu l asi


(• untuk komouter ya ng tak mamiliki pr oseso r 8087 • )

(•
. )
ProgrJill ZO -
l)engan
nrnri;rrc
.1.
!1\CJ1\·cn«k.1I~
( sn. r'·l'l.i ~.LH
i L·crn1L1i 6 Jk an nll l1 \·cb.1r\-:. ,\L
,·an >C: m en Y3t .ik:,n n ih1 tt:r,cbu t tll \u ,lf \.:..1 'vasan a r D\. ·.y acb
tcrhcs.<~
c tT tl r .

( * m9mungkinkan emulasi • J progr .Hn n ilai ind cb eLm .\.i/.i:T<"' c. Lbbh ')). Kesalahan ra\..:.- akan
dibporka n scanda in,· a 1Si~-} ri,t ,k ,idx rik an dab m program .
($1H,E+}

USES CRT;

)0(.3 FASI LITAS LA VAR


VA R
tlilai 1. tli 1ai2 ,tli 1ai3: COI~ P ; Fasi\itas Llya r .1k:1 :. Y.H~S .:i~.1h> p .. J.: l'~S1Jll in1 mcliputi ma sa\.; h:
BEGIN
CLRSCR ; rcn~n g anan kur so r
pcn g:1 k se, J n da r~ b ':":. ,<_,;1
bilangan posi t if terbesar
Nil a\1 : = fi~XLO! ; GitiT ;
pada t i pe LOti GitlT } pcm b uat .m JL'IJc' ·: L1 b·: : '. '.l lli\ ' uL ,p,il-:\•!1 11 ).
WP.ITt:LN (tli1ai 1) ; K. csc:hnt:h.ln ;-.t:;i\ n .l > ;:~.-·nns ,L \;1:1 ·, =c'l lu .th unit yan g d ib cri n:nn:l
Nilai2 : = 1-l!I XLOnG!tlT;

WRITEUI (tli1ai 2); VID EO.


tli 1 a i 3 : = IIi 1 a i 1 • IIi 1 a i 2.
WRITEUI (tlilai3);
Fasllltas Kursor
REAOUI Bcrkai t an dengan L1 sili:.1 S m cnsl' na i kursu r 3da bcberap .. ri pe yat~g
END. kiranya pcrlu untu k ,1ibaha5. Pcn ;tnl<l adahh Tipc /(trrsor. yang dci1nisi-
4
Program ZO-l. j
n ya adalah sebagai b criku t:
l
XX.2 MEMERIKSA NILAI INDEKS 01 LUAR KAWASAN ARRAY :4 T\peKursor = lNORMAL. BESAR . SEMBUNYil:
Dalam caraf pembuatan program ya ng melibarkan arra y J.dakalanya
m""'·'"k"' luh"' <it'' ku <W cbpo< bnup' NORMAL. BESAR

'
,·wg
(karena kcsalah an pemrog raman) mcnycbabkan pengaksesan array 3tau SEMBUNYI. Tir e· kc du J ,;da\ah TipeO,Jr,rKrmur, yang mempunyai
dcngan indcks di luar kawasan array. Untuk m engetahui hal ini, pada
~
p rogram pe rlu dise rtakan pcngarah k om piler berupa {$R +} . Sebagai J dcfinis i:
~
conroh : ....... ~
RECOiW
-~ TipeOataKursor
PROG RAH CekKawasan; XKursor. YKursor.
A\\ a·Kursor. Al<hirKursor BYTE :
(• ------------------------------------ •)
(• Hellha t pengaruh penga rah kompi ler R * ) E ~JD
-!-CI7
(t untuk memerikea kawasan array *)

<• ------------------------------ ------ •l

406
I oataLayar = ARRAY!1..TOTALMEM DIV 21 OF WORD;
Tipe m1 mengandung field: ptfOatatavar = ·Datatavar:

• XKtmor berisi data posisi kolom tempat kursor sedang berada TipeDataLayar berupa array dcngan ukur.1n TOT AU·1Elv\ byte, atJu
(relatif terhadap jendela yang aktif). ~ scbanyak TOTALMEM DIV 2 word . Sedangbn PtrDar.1L.ayill bcrup:1
• ) 'Kursor berisi data posisi baris tempat kursor sedang berada 1
ripe pointer yang mcnunjuk ke :uray da ta layar .
(relatif terhadap jendela yang aktif). l Prosedur yang bcrkaitan dcn gan masabh pL'ng .1 kses:~ n J.lta L1yar
• Awa/Kursvr nomor baris a•\·al dari bentuk kursor_ l
a AkhirKr-trsvr nonwr baris akhir dari bentuk kursor_ 1 adalah:
I . Simp a nDat:~Layar
Proscdur un ruk pcngaturan kursor:
1. A turKu rsor !3cntuk : PROCEDURE SimpanOataLayar !X1,Y1,X2,Y:l BYTE:
VAR Ptrlayar : Ptr::Ja~Jt.a 1ar•
lkilluk : PROCEDURE AturKursor (AwaiKursor. AKhlrKursor: BYTE)
Digunakan untuk menyimpan data p.1cl1 dan .1h \.1\T' ,._ln)-!, I!il't11iliki
Digunabn untuk mengatur bentuk kursor. Nilai untuk masing- koordinat poj ok kiri-atas (X l,Yl ) cb n poj ok b~ ·.an-b.l\\.1 h (X 2.Y2J.
rnasi ng parame ter dapat berupa 0 sarnpai d· 11gan 7 untuk mode teks H asil abn ditcmpatkan d;Ilalll ]Xll·1mpun g \' .11> ~ clltUllJUk ole h
CGA. dan 0 sampai dcngan 13 untuk l11 l •c\C teks monochrome_ p:uamctcr pointer PtrLayM.
'l ModeKursor ,., KcmbalibnDataLaya r

-Bcntuk: PROCEDURE ModeKursor (MOde: TipeKursorl Ben tuk: PROCEDURE Kemballl<anDataLavar


(VAR PtrLayar: ptrDataLaya rl
Dipakai untuk mcmilih model kursor. Par:1r11.:tcr dapar diisi:
Bcrfungsi unruk mcngcmb ;!lik:m ,bt.J \· ,1r:g .hi; ;· .,l1J t-'C ! l:linp <~n:!­
NORMAL umuk b1rsor normaL
\·ang ditunju k oleh PtrLaya r k.: l.l'."Jl.
EESAR unruk kursor den gan . ukuran bcsJL
SEMBUNYJ : jika diinginkan agar kursor ridak tcrlihat.
Fasllltas Jendela Bertumpuk
Untuk kepcrluan implemenrasi fasiliras jL'ndcb hcrrumpuk , tcrdap .H
J_ lnfuKurso r
bcbcrapa deklarasi variabd, tipc dan k ons t :mt~. dl, .li ilpin~ ~ ljumbh
Bentuk PROCEDURE lnfoKursor !VAR DataKursor: prosedur.
TlpeDataKurson Konstanta yang ada berupa MAKSJEND y:111g mcrwJtakJn banyak -
nya jcndela yang dapat dibuat bertumpuk sccar:1 >crcntak. I:Janyakny:1
Berguna untuk memperoleh informasi mengenai posisi kursor relarif jendcla yang dibuat akan diingat oleh variabcl 1'\'mr)<t~dda. Satu-sat un ya
tcrhadap layar dan bentuk kursor. tipc yang dipakai dalam pcmbuatanjcndela :llhbh T rpeOatajmdcla , yang
dickfinisikan sebagai berikut:
Fasllltas Pengaksesan Data Layar
Fasilitas pengaksesan data layar meliputi penyimpanan data layar ke
TlpeDataJendela = RECORD
dalam suatu pcnampung dan pemuatan kemb;1li data pada penampung ke ptrlsUendela : PtrDataLavar:
layar. Unruk keperluan ini dideklarasikan tipe TOT ALMEM yang RecDataKursor : TipeDataKUrsor:
hcrn ila i 4004 . Nilai ini mclipu ti maksimal data layar sebesa r 4000 byte AtrlbAktlf : BYTE:
PosJendelaMin.
(u nruk mode tcks 80 X 25) ditambah dengan 2 word (4 by te) untuk PosJendelaMal< : WORD:
kcpcrlu.u1 mcnyimpan koordinat data layar. Sc.::lanjurnya terdap;J.t dua END;
ripe bcrupa : ·
l
;~
408 '<I
--
Tipe ini mengandung sejumlah field dengan rincian sebagai berikut: digunakan untuk mcnentukan atribut \varna bingka i jcndcla dan
• PtrlsUendela : unruk mengingat isi layar (Lihat keterangan PtrDa- atribut warna dari jendcla (dalam bingkai). Proscdur inilah yang
dipakai untuk membuat jcndda bcrtumpuk. -
taLayar) .
• RecDataKursor untuk mengingat data kursor (Lihat keterangan 3. Hapusjendela
TipeDaraKursor).
• AtributAktiJ untuk mengingat atrib ut warna yang sedang aktif. 1 Bentuk : PROCEDURE HapusJendela
• Posjendelai\.Jin berisi data koordinat polok kiri-atas dari jendela l
'{

layar yang sedang aktif. Dipakai untuk mcn g hapu~ jcndcb v ;lll f: aktif. Dc.:ngan riihapusnya
• Posjmdela.Hax berisi data koordin:lt pojok kanan- bawah dari suatu jcndeb. jcndc!a y:111g alia ,Ji 1->awahnva abn mcnjacl i jcndcl a
jcnckla layu yang scd:l!lg .lktif. yang ak tif.

Sclanjumya tcrdapat \·;: riabci hcrn:una Vara)en.ft>lo~ , dcnga n dcklarasi lmplementasl Unlt Video
scbagai bcrikut: Implcmcntasi unit VIDEO Jdalah ~ch .'t' " l bc rikut:

DataJendela : ARRAYIO .. MAKSJEND·11 OF TipeDataJendela; UNIT VIDEO;


<• --- ----------- •>
Vari:1bd ini· digun:1ka n unt uk mcngi;Jga t <;clu~ uh data jcndc; c• berisi sejurnla h fasi l itas • )
Prosedur yang bcr ka itan dcn~Jn impkmc;H,lsi j cndcla bc rrumpuk <• untu k rnemanipul a si l ayar •)
vaitu: c• ---------- -------- -- ----- •>

1. Bingkai (••••••••t••··············································••' )
INTERFACE
(~••• •• +++•+•+•tt•+$••••t+t+•+•t+t+++•+ttftc•ttt+++•+++t$ \ ~•~)
I3entuk: Bingkai IJUC :Jl :STRING;
X1 ,Y1.X2,Y2.Pilihan : BYTE;
Karal<ter: CHAR; P.. triDu~ . BYTE i USES 005, CRT;
CONST
Digunakan umuk rn emhuat bmgkai p.1da dacrah (Xl, Y!.X2, Y2). TOTALMEM : 410 0; •K t 4 byte~ untuk meny~rnp~n o ata 1ayar }
Bagian atas dari bingka i .:Ia pat dibcri kctcr:~n g. 1n mclalui jt,dul. Jenis 1-tAKSJEND : 10; jumlah maksimal dari jendela
bingkai dapat diatur rnelalu i Piiihan. Bing b i berupa nilai dari TYPE
DAtalayar ARRAY[1 . . TOTALM EM OIV 2] OF WORD;
parameter Karak ter. kabu Pili han bcrnibi i 1 /\ tribut \varna dari
PtrOatalaya r ·Datalayar ;
bingkai dapat diatur me!Jlu i Atribt<t.
T1peKursor = (NORI.IAL, BESAR, SEI-IBU!IYI) ;
2. Bikinjendela
4) T1peOataKursor RECORD
XKursor, YKursor ,

Bcntuk: PROCEDURE BlklnJendela Uudul : STRING;


. X1 ,Y1 .X2,Y2, PIIihan : BYTE;
1
~
TipeDataJa noela
AwalKuraor, AkhirKursor : BYTE ;
EtiO:
RECORD
i<arakter : CHAR;
AtrtbBlngkal . .AtrlbJeno: BYTEI PtrlsiJendela PtrDatalayar;
f RecDataKursor Tipe 0a taKur'5or;
Digunakan untuk membuat jcndela pad ,1 daerah layar (XI, Yl, AtribAktlf BYTE;
X2, Y2). Judu l untuk m cncntuLn tulis.m pada jendela bagian atas. PoaJendel01Min,
Karakter untuk m<::n<.:ntukan braktcr ya ng d ig unakan untuk mcm- PosJend~laMak : WORD;
buat bingkai , blau Pililw11 hc.:rnilai 0. AtribHiH.f!kai dan Atribjend EtiD;

-110 ~ 11
.
VAR Seg.'len : = SBOOO
HftlrJendela BYTE; ELSE Segnen : : SB800 ;
DataJende la ARRAY[O •• MAKSJEHD-1) OF TipeOataJendala;
{ Sl mpan data da l a. array
PROCEDURE Si ~ pa nDat alayar (Xl ,Y1 ,X2,Y2 : BYTE ; Ptrlayar• [ 1) : : SWAP (Yl) + Xl;
VAR Ptrlayar : PtrData Layar) ; Ptrla ya r "[2 ) :: SWAP (Y2} + X2;
Indeka : = 3 ;
PROCEDURE Kem balikanDa ta layar (VAR Pt rlayar : PtrDataLayar) : FOR I : : Y1 TO Y2 DO
BEGIN
PROCED URf Atu r Kur sor ( AwalKursor . AkhirKursor : BYTE);
or ... t := (I -1) • 160 + 2 • (X1-1J;
F0R J := X1 TO X2 DO
PROC EDURE HooeKurs or (f.lode : Tl peKursor);
I:IEGW
Ptrlayar"[Indeks] : = HE~W[Segmen : Ofset};
PROCE DURE ~nfo K~r sor (V AR DataKursor : Tipe Da taKurso r) ; HIC (Indeks);
I IIC (Ofaat, 2) ;
PROCEDURE 8 i nsk a i ( J udu 1 : STRIIIG ; 'liD ;
XI , Y1 ,X 2,Y2,P iliha n : BYTE; Er;r,
Karakter : CH AR; Atrlbut : BYTE ); E~O ; ( akhir prosedur SlmpanDa ta La ya r I

PROCEDURE Bik ir.Jendel a (Judul : STRING ; PROCED UkE KembalikanDataLayar (VAR Ptrla yar: PtrDat a l a yar);
X1,Y1,X2,Y2,Pilihan : BYTE ; ( .. ----- ---- -- •>
Karakter : CHAR; Proae dur lni berfungsi untuk mengembalikan da ta layar •)
(•

PROCE DURE Hapu sJ endela ;


Atr l bBingkai, Atrl bJend : BYTE) ; (.

(• -
------------ --
yang ditunjuk oleh PTR LAYAR ke layar • j
.)

VA R I , :, lnd ~ks, Segmen ,


Ofs a t , X1 , X2, Yl, Y2 WORD;
c•• •••••• ••~ ••••••••••••••••••••••••••••••••••••••••••••••• ••> B,..GlH
niPLEHENTATION If LASTHC'O E = 1.10110 THEil
<• •··· · ·· ~ ···················································> Segme n : = $BOOO
ELSE
PROCE DUR E Si~panDataLayar (X1,Y1 ,X2,Y2 : BYTE; Se gmen : : SBBOO ;
VAR Ptrlayar : PtrDataLayar);
c• ---------------------------------------------- •> X1 := LO (Pt r layar - [1]) ;
(* Proaedur inl berfungai un·cuk *l Yl : =HI (Ptrlayar'[l));
c• manyimpan data aebagian a tau aeluruh layar *l X2 := LO (Ptrlayar'[2));
(• yang memlllki koordinat pojok kirl ataa X1,Y1 •J Y2 : = HI (PtrLayar " [2));
dan koordinat pojok kanan bawah X2,Y2

.
(. *) Inde kli : = 3;
u ke dal . . ruang dalam heap *) FOR I := Yl TO Y2 DO
(. yang ditunjuk oleh PTRLAYAR ) BEGIN
c• ---- -- ------ -- ---------------------- ---------- •> orset : = (I-1 1 • 1!!0 + 2 • (X1-1) ;
VAR I, J, Indeka , Segmen , O.fsoet : WORD/ FOR J : : X1 TO X2 DO
BE GIN BEG Itt
( Ten tuka n &e gmen te ks I HEMW[Segman : Ofset) : = Ptrlay ar " [ Inc1ek s) ;
INC ( Indek a );
IF LASTMODE MmiO THEil HIC (Ofll8t, 2);

~u
~12

.4 ...,-,~--=-"'; _9·~~ . ..
'" .. - ·.... ,~· .~l"iifIC l§le.
..,., ~-... . ' : " A - , ; - -
%1¥~<¥:¥~
~V·~ ."1-~~·-...;;
·' - ..,.:··•· c--~· ~,-..'~'·· .•.. c~
·-
E

EHD
(* untuk . .MParoleh lntonaaai kursor ••ngenal
(• - ukur.an kurao_r
.,.,
•l

EIID (* - poaisl kuraor (re1atlf terha dap jande1a) o I

END; { akhi r pros~odur Kallt>A H kanOiltillayar ~


(• ----------------------------------------------- •> '

PROC EDURE AturKursor (AwalKursor, AkhirKursor: BYTE) ; COtiST Ha 1 aun = 0;


VAR
(* ---------------------------- •>
(* untuk mangatur bsntuk kursor *)

<•
VAR Re gs : RE GISTE RS;
.)
Rega : REGISTERS;
8EGIH --
R&gs . AH : : 3·
fungsi p@ l ayanan i nfo kursor }

Regs . BH : = HAL.A~1All,
BEG I N l tHR ($10 , Regs); { i n terups i ROI~-BI OS , nomor 10h
Regs . AH : = 1; { nomor pe1aya nan u n tuk pang atu r an ku r so r
WITH OataKursor DO
Regs.CH : = Awa1Kursor;
BEGlll
Regs.CL : = AkhirKursor;
AwalKurso r := Regs.CH;
IliTR ($10, Regs); { interupsi ROI·I_BIOS, nomor 10h }
~ " h i rKursor : = Regs.CL;
£1lD ; { a kt' i r prosedur AturKursor }
X ~ ~r ~or := WHEREX;
YJ<.c; rso r : = r/HEREY;
PROCEDUfi E HcoeKursor (1-loda: Tip~tKursor);
END;
(• ----------------------- •> EtlO; [ ;ok!l>ir oros.,dur Infol\u r s o r }
(• untu k memi1 ih bentuk kurso r bcrupa •l

(•

(•
ukuran r.on'l\a 1, besar a tau ters.embuny i

----------- --
.
•)
) P ROC EDu RE 9\ r. gv.ai (Judul
snntiG;
X1,V1 , X~ .~2 , Pilihan BYTE:
CHAR ; ~ tribut B" lE) ;
COHST Karakte r
~?.q AY[BOOLEAN, TipeKur sor] OF
Da t a Ku r so r
RECORD (• ---- - - - ------- - - - -- ---- - -- - - -- - -- - ---- -- - ---- --- t)
Awa1, Akhir : B'fTE ( • Prose dur i ni c i pa~ai unt u~ msmbuat s uatu bingka i •l
END
( ( (Awa 1 : 6' Ak hir: 7), ( norma 1 , CGA
{ besar, CGA
i.
Tu1 isan pa cta tsngah atas oingka'
•)
) .
..
(Awal : 0 ; AKhir : 7) ' (. J v du1 ')
Set sama d~ngan ·• jika Judul
(Awa1 : 32; Akhir : 32}), I sembunyl, CGA (• )

.
({Aw al : 12; Akhir : 13), ( norma 1 , 1100no (.
ti dak diperlu kan
)

..
I besar, •ono : Posisl pojok kiri ataa bingkai
(Awa1: o· AKhir : 13}, 1 <• X 1, Y 1
)
•one Posisi pojok kanan bawah bingkai
(Awal :32; Akh ir : 32) )) ; I se~bunyi,
;:! (• X2, Y2 )
.;.'; 0 •• 8

..
(. Pil \han )
VAR 1 Karakt er : lsi deng.an karakter yang anda
BOOLEAN; :~~~ (. )
VideoMono lnginkan , bi1a Pilihan diset
~
Awa1Kursor,
AkhirKursor BYTE;
.~;i
.r:.;;.ti
i',:J
(•
<• s.aJIIa dengan 0
. )
)

BEGIN
!~ (• Atribut 0 . . 255
Untuk manentuka n warna bingkai
.
• .I.

I
Vi deoMono : = (LAS TlolODE : 1-10110} ; ,.);I.J (• )
-~1 dan latar belakang bingkal
AwalKursor : = OataKursor[VideoMono,Hode].A>~a1; .~.
<•
---------------- - - --- ----- - - - - - -- -- I)
Al<hirKursor : = OataKursor[VidsoHono,llode].Akhlr;
~ (. -
Atur Kursor (Awa1Kursor , AkhirKuraor), ·~1 COt<ST
~:J Oatil ARRAY [0 .. 8,0 .. 7) OF CH AR
EIIO ; { akhir p r osedur ModeKuraor ) --l ((IOOO .• OOO,IOOO,.OOO,I OOO, . OOO, ~O OO, , OOO) ,
€,..1
i~ (J218 •• 191 '11192 ,1217 , J17 9. J119 ' 119 6 ' " 95 ).
PROCEDURE lnfoKur~r (VAR OataKuraor : TipeOataKuraor);
----- •J (1213,1184,f212,1190,1179,1179 , 1205,t205).
<•
~ 41 5
4 14
~
WRITE (Oata[Pilihan,3));
C•Z14,J183,,211 ,1189,1188,1188,1198,1196),
EtiD;
<•201,1187,0200,1188,.186,1186,1205,1205),
(#220, 1220,1223 , 1223,1221,1222,1220,1223),
Tul h Judul I
<•17&,J176,117e,,17&,117a.•17&,•17a,l1761,
IF LENGTH(Judul) > (X2-X1+1) THEH
(J1 77 , 1177,1177,1177,1177,f177,1177,1177) ,
Judul :: COPY (Judul,1.X 2-X1+1 );
(1178,1178,.178,1178,1178,1178,1178,1178j);
GOTOXY (Xl+ (X2-X1+1-lE!lGTH(Judul)) <:' ' ' ~.Y~ ) ;
VAR I, Segmen : WORD;
WRITE (Judul);
BEGIN
END; { akhir pros~dur Bingkat
If (X 1< 1) OR (X 2 > 80 i OR
(Y1 < 1) OR (Y 2 > 25) OR
PROCEDURE BikinJendala (Ju dul STR !IIG
( ( X2 - X 1 ) < 1 ) OR ( ( Y 2 - Y 1l < 1I T/1 F. II BYTE.
X, ''( 1 'X 2. '( 2 p; 1 .j \ ""'''
I

EXIT;
Kar«kte r C:HA P
AtribBingka i, AI · :-J IOI'O : BY TE ) ;
If (Pil ihan < 0) OR (Pil1han > 8) rrl EII
,. ---- --- ----------------- - --------- - - •J
Pll i han : = 1 :
(• untuk membuat auat u jendela•yang n,. ~ ; . » a da;>at dihapus •J
If Pilihan: 0 THEH
FOR I : : C TO 7 DO
(• dan dengan t i dak menguban ; 9 ; 1 ,. , .. sebelUtOnya
.
•)
)
Diltd [0,1) := Karakter;

TE XTAT TR := Atribut;
<•
1• AtribBingkai
(• AtribJend
untuk menentuka.n
wntuk ~e ne~tu~ an at r,~·t
at rd -· t 0 '-.. .J "ai
; e ~del& ..
•)
)
)
<•
BEGIN
{ Memouat oi ngkal dan judu l )
If llmrJendela > (~AKSJEI ID-1) THEil
EXIT;
GOTOXY (X1 ,Y1 ); WRIT£ (Cat a [Pi1il'\a '1, 0)) ;
FOR I : = X1+ 1 T C X2- 1 DO
IF (X1 < 1} OR (X2 > BOi OR
nRZ TE (Da ta[Pilin an,8));
(Y1 < 1) OR (Y2 > 2 5 J OR
GOTOXY (X Z, Y1 ); WRITE (D ata[ ?ilinan,l} );
( (X 2 - X 1 ) < 3) OR ( ( y 2 - ·{ 1 ) < , • f ~ E!l
fOR I : : Y1+1 TO Y2 -1 00
EXIT;
8EG1 tl
GOTDXY (X1,!); WRITE (Oata[P i lihan,o]);
WITH DataJendela[llmrJa na ela) DO
GOTOXY (X2,I); WRITE (Oata{P ilihan,S])
BEGIN
EtlO;
If ~AXAVAIL >= TOTALHft.t THEil
GOTOXY (X1,Y2); WRITE (Oata(Pi1ihan,2]);
NEW (PtrlsiJandala )
fOR I : = X1+1 TO X2-1 DO
ELSE
WRITE (0ata[Pilihan,7]);
BEGIN
If (X2 = 80) AND (Y2 = 2 5) ThEH
WRITELII ('~amort ta k cukup . 1;
BEOitl
HALT (1)
If LASH40DE = HOllO THEil Segmen : = $8000
EIID ;
ELSE Segmen : : $B800 ;
Silllp an0atalayar (X1.Y1,X2 ,Y 2, PI • ~~iJ e n dela );
1
IIEH{Segmen:3998) : : ORO (Data[Pilihan,3 ]) ; InfoKursor (RecDataKursor );
HEH{Segaoen: 3999) :: TEXTATTR

--------
AtrlbAktlf :: TEXTATTR ;
EIIO PosJendelaJ.Iin :: W!IIDHIII :
ELSE PosJenda laJ.Iak : = WHI[)I.IAX .
BEG III WINDOW (1. 1 ,80 , 25) ;
GOTOXY (X2,Y2) ;
417
416
Bingkal (Judul, XI ,YI ,X2,Y2,Plllhan, 1• dengan ••nggunakan fasilitas pada UIIIT VIDEO •J
Karak ter, AtrlbBlngkAl); ,. -------------------------------------------- •>
WIIlOOW ( .H +1,Y1+1 ,X2-1,YZ-1); USES CRT, VIdeo ;
TEXTATTR : : Atr i bJend; VAR
CLRSCR; JnaBtngkat BYTE ;
END; !!trJnBBlngkal : STRIIIG( 1] ;
we {tliOrJende l a); BEG HI
END; ( a khir prosedur CLRSCR;
llodeKursor (SEI~BUIIYI);
PROC EDURE
I•
(t
Hap •~sJenda 1a;

----------- -- ---------- --
u ntuk men5h3pu g jande1a yany a ~t1f
.)
•}
f OR JnaBi ng kai :: 0 TO 6 DO
BEG HI
STR {Jns6 in gkai, Str JnsBingkai );
(. -- --- ---- -- --- •) Bing kai (' Bing~ai jenis ke-· + StrJnsBing~ ai + •3 2 ,
BEGIN 1, 1. 80, 25, Jn s aingkai, ·••• 7 );
IF llmr J endela =0 THEil REPEAT UIITI L READKEY .1 3;
EXH; EIID;
DEC (llmrJen dela); .., llodeKursor· (tJORI1AL);
WITH DataJendel~[NmrJenoala], RecData Ku rsor DO END_
!lEG Hi
Kemba l ika nD atalay~r (Ptrisi~ e ndala); Program 10 - 4.
lfiiiOOW (LC(PosJenoe1al~in)+ 1 ,HI(PosJende1allin)+1 ,
LO (PosJe ndelaMak)+ 1 ,HI (PosJende1al-4ak)+1) ; Prog ram di at :~s juga sck3ligus mL·mpcrlihatkan or~ pcnptu: .1 n tl1dlkl
TEX TATT R := Atrib Akti f; kursor. Pcrnyat3an
Atu,·Kursor (A~alK~r·so r, A ~hir~u r sor);

GCTOXY (.XKur s o r , "~ ur:>cr ); ModeKur~or ISEMBUNYil;


DI SP09E(Ptr! si J e nd c la );
END; bc rart i mcng .Hur kursor agar tidak tcrlihat. Scd.1n ~k :u:
END ; ( akhir pr osadur Hap u sJend el~

ModeKursor INORMAU;
<••··························································>
( ba9ian inisialisas i pcrinta h untuk mc nam pilkan kur ~ or ci.ll.lr.l bcniuk '. u 1~

<••··························································>
BEGIN
NMr Jendela := 0;
Contoh program ya ng lain d apat dilihat pada P rog ram 20-5. Progr:trn
END. (• akhtr un i t • )
ini mempe rlihatkan contoh pcngg un;un jendcla berrum puk . Jcndel.t
Unit 20- 1. pertama bera da pada daerah (:~ 0. 1 ,60. 1) dengan jcnis b ingbi adalah 1.
atribut bingkai dan jcndela ada b h I Eh (tuli san kun ing dc ngan lat.u
Contoh bcriku~ bcrisi program ya n g m emanfaatkan fasilitas da!am bclakang biru). Pada jendeb ini akan tcnampil sejuml.lh tulisan
umt VIDEO , yakn i un tu k menampilkan scmuajenis bingkai . Selain umt 'TURBO PAS C AL - TURBO PASC AL'. Kalau tom bol ENTER
- -\L.112EO . unit st.JIJ(br C RT juga dilibar kan. ditekan , akan muncul jendcla ked ua yang bcraLla p:Hh dan .1h
(30, 5,50,24). bcrisi scjumlah ruli s:m 'BOHLA.NIJ'. (Ga mtu r 20- 2).

..
PROGRA~ Tes8ingkai ; Sclanjutnya ka lau tombo l ENTEH ditckan, JCndda ini .1ka11 dihilangbn
<• --- --- ----------------- -- -- -- -- - ) danjcndcla pcrtam a akan tam pil kcmbali. Kcad .t.tll scmacam ini!Jh y.tn~
<• man~ptlkan sal u r uh jeni~ bingkai ) dinamakan sebagai jcndela benumpuk.

418 4 l9
** Bingkai k e-0 ** Bingkai ke-1 l j Bingl<. ai ke-2
PROGRAM TesJendela;
<• --------------------------------------------- •)
**
*
*•
*
I )
\)
l
l
(t contoh penggunaan pellbuatan jendela bert1.111puk •)

c• dengan ••-k•1 fas1l1tas pada \JIIIT VIDEO


c• ---------------------------------------- --- -- •>
) .
* *

r
********************
9>ng' . , ke - 3 l·r 8 ing~. ai ke-4 i l
USES CRT,eVIOEO ;

VAR
I : BYTE ;
BEG HI
TEXTATTR : : 7;
)l )
IL'

_ _ _ ___,\! L J
CLRSCR;
BikinJende1a (' Jendela 1 20,1,6 0 ,20 , L ., , $1 E'. S! E l;

81ngfco1 fe-7 .r
iUl
~
!l! Eoin g \, ai > E- S 1!-..-'i
.....
~ •
•.:J
«l
WRITELH;
FOR I : = TO 14 DO
~~ ~ BEGIN

;
~ ~ GOTOXY (8,WHEREY);
.,. WR!TELH ('TURBO PASCAL- TURBO PASCAL') .
:l·' END ;
>~HiJlMf.Jtilli!U!Mil!lrt!l!i!t~t~ ~~lf!~l~'~:i'!:!'"'
i.tii!Elli4-••::!li.tl1!w'Wmiltu.: :mfl::.n.:.:
-'·l
~:t:!l<.~

HodeKursor (BESAR);
r; ,,,J,ar 10 - 1. Brrba.~o i jrr~i' hitt,~ ka i YJ".~ Jili .,,i /k ,: , t>l t il rroseJ ur B !SGf.:A J WRITEUI;
GOTOXY (15,WHEREV);
WRITE('Tekan EIITER. ');

· -, j ;_ ; :· : ·l i i i · l i !ii~ill~w~.:~illi~llim~~~[~~~)·:~~~ill~L . . · ·:: :·
REPEAT UNTIL READKEY = 113;
BikinJendala (' Jendela 2 30,5,50,2~. 3. ·• · S 5 S , $7 0).

,<: ::::~ ! · : >: · .-~'!:!F,l_f31il.: P;~~Ef:lliL :.-::;ormR~o -PA~CAL : ·.· . _. ~


,.,· ··•·;,, ,;;;.,.;y;w J en de 1 a 2 SIJAL • •' • • ., WIUTELN ;

i l : i ; : ,:.:::i{:.i:,::~~r- BORLAND l~~:~·;: :·:;:~": : FOR I : =


BEGIN
TO 13 DO

! .n.;: i:iii li i: ;~~;.:. ff:~


i .n.;::;;;•;p;.:,;:.;mlii
: .·.::.·::··;!:-:!! ;:_: ·:..
BORLAND
BORLAND IsrAthi;;i,l':·j:ii
5ITAL::g;!::i:=.::p
•;'II-! ·.:z::J.::· :=
GOTOXY (7,WHEREY);
WRITELIH 'BORLAIIO. ');
BORLAND
BORLAND END;
BORLAND
BORLAND
BORLAND
J
1
HodeKursor (NORMAL);
WRITELN ;
BORLAND j
GOTOXY (5,WHEREY);
BORLAND i WRITE( 'Tekan f:tiTER. ');
BORLAND 1
BORLAND REPEAT UIITIL READKEY =113;
1'
BORLAND
HapusJendela;
:r:::::::::c::.,;:::::::! 11 Tekan ENTER.
IW::::" ·::•;•y;:•!C' REPEAT UNTIL REAOKEY :113;
HapusJendela ;
END .

(;.JmbJr !0 -- l . Btntuk jtndtla btrrumpuk

12 ( 1
. -- -- -- -~------

T
) TEXTATTR :: $IF;
)(){.4 IMPa.EMENTASI PILIHAN PROSES DENCAN SISTEM GESER END; { akhir VideoNoraal

Program yahg melibatkan sejumlah pilihan, biasanya ditangani secara


PROCEDURE VideoTerbalik;
kon vcnsional berupa pertanyaan misalnya:
BEGIN
Masukkan pilihan anda [1..5]: TEXTATTR : = S71;
'* END; { akh lr prcseaur VideoTerb~ lik }
Bentuk pilihan proses yang kini populer tidak lagi mcnggunakan cara
l
seperti itu, melaink an men gg un akan sistcm gcser (Misal Gam bar 20- 3). ·!
BEGiti bag ian perny at aan p r osedur ~enuPili han
Pada m odel si stem geser, suat u pilihan dapat dilakukan den ean
m enggescr blok (m cnggunakan tombol p.111:d; at~s a ta u panah ba w ahJ kc
CLRSCR;
Bik inJende1a ( · fiE IIU PI LIHAil 22, 5,5 7.13. 4 , ... S IF, S 1 F) ;
B
pii iha n yang dik ehendaki, kemudian dukhiri dcngan ENTER. 1-lJ! ~lodeKu rso r ( SE!!BUIIYI ) ;

scmacam inilah yang akan diimplcmentasik.1n p ::~da Program 20- 6. BrsAwa l : = 2;


Y.o1 omAwal : = 2;
N amun pada prog r am ini, d isam pi ng mcnggun.lk:tn tombol panah dan
Seloaai : = FA LSE;
ENTER . suatu pi lihan ju g a d ap:1t dilakubn dcng:n1 mcnckan tombo!
kodc piii han (J . . 5) secara hngsung t:tnt'd diak h iri dcngarl EN TER.
( ~enampil k a n daftar pilihan
VideoTarbali k;
PROGRA~ ~enuOataPe gaw ai ; GOTOX Y (BrsA~ al, Kolom.Awal);
<• ------------- -------- -- ---------- ---- -- ' ) WRITE (!nfoPilihan{1) );
(* Contoh program dengan men u sist om go~a r· • ) Vi daotlorma 1 ;
(. --- ---- - - - -- --- - $) fOR I ; : 2 TO JUHP illHAH DO
USES CRT, 003, VIDEO; BEGIN
GOTOXY (6rsAw a1 ,Kol~~Awal+l-1 );
(* ukuran stack a a n heao ~)
{$~ 2048, 0, 8200) WRITE (lnfoPil ih•n[IJ)
EHD;
PROCEDURE ~enuPiliha n;

CONST Pemi 1ihan prose s


PANAH_ATA3 = 256+72;
PANAH_BAWAH :: 256+80 ;
PilihanBaru : = I;
EIITER = 13; REPEAT
JlMPILIHAH = 5; { baca te>nlbo 1
lnfoPili han : ARRAY { 1. . JIJI.IPI LIHAII J OF STRIIIG {35}
REPEAT
: (' (1} ~ecasukkan Data Pegawai
Kode :::ORO (READKEY);
(2} ~emperbaharui Data Pe gawai ,i
IF Kode = 0 THEH
(3} ~angha pus Data Pegawai
Kode : :: 256 +ORO (READKEY);
{4} ~onaapilka n Data Pegawai
UNTIL ( Kode = ENTER) OR (Koda :: PAUAH_ATAS) OR
{5] Ke•bali ka DOS ') ;
(Koc!e : PAHAH_BAWAH) OR (K oda Ill {49 . • 53]);

VAR PilihanLama : = PilihanBaru;


Koda : WORD;
CASE Kode OF
Salaaai : BOOLEAN; IF Pi1ihanBaru = 1 THEN
BYTE; PAHAH_ATAS
I, BreAwal , Ko1~Awal, Pi1 ihan8aru. Pi lihanlama _,_, Pi1ihan8ar u : :: JUMPILIH AII
~ ~· ELSE DEC (Pili hanBaru) ;
.-"---~ PROCEDURE Vi deoHorlla 1 ; PAHAH_B AwAH: IF Pi 1 ihan6aru : J UI-tPILlHAfl THEtl
BEGIN
;~ 423
:~
422
:~
;I
:c;.:·,

~
..._
l"iHhanl!aru :• 1 --~l
.\!'a
~~
~
...,..
r- · MENU PILIHAN

~ ·• M2.fha 58!·lt41\HP~rt:~:Uf~$~~~f:\:T'Hn:!
£l5E INC (Pilihan!aru);
#~
n . . 53 Pillhanl!aru :• Kode - 41;
~~;,
• ::'PJ J
'fllll; [ 2] Memperbaharui Data Pegawai
I
~
; ~ j [3] Mengh a pus Data Pegawai
IF PIHhanlaaa <> Pilihanearu THEil
BEGIN
[4) ~enamp~lk an Data Pegawai
GOTOXY (BraAwal, KolooaA..a l+PI HhanUo..a-1);
WRITElH (InfoPillhAn[Pillhanlasa});
II/(_ [5 ) >.embal> ke DOS II
VldaoTerballk;
GOTOXV (BrsAwal, Kcla.Awal+PI lihar.B ar u-1);
WRITELH (InfoPilihon[Pilih~n8aru}); c;,, ,h.lf !li J. /Jrlllllk pili hon dengJ n sisrem srsrr
ViCeo/lor.,.a 1;
EIIO; i' , ~11 1 dik..·: .• :wt. Pro_sr.tn l 2!) -r, lilclib:Hk .m ~ t-dc· bn<ipc . E:\ F. \'.\! Ill
::i! \1\J> .-\~ i~X E. C .AN T!. EXE. HAP U~. EX E. TAMP! L.L/'T i_;n !u k
IF ((PilihanSaru: 5) AIIO (Ko<Je: EIITERl) OR l.:q'c·rl;un 1111 prn~r.1m-prog ram conroh p ~cb l'bb XIII chp:lt ciq'ngun.l-
k.Hl !.iJ n ,~ i kotnpilJ ~i schingg:~ m cnpdi .EXE J. Progr:1111 contoh y:1 ng
(Kode : 53 ) THEil
Sel••• ; : : T;:?lJE
ELSE .11ill .t k"~ud J\ !Jl.:h:
IF t40T ( ( Kooe = ?•<ll AH_ATAS) OR (~ode = PAII41i_ 8Arl<•H )) ',;f tl

BEGitl h,-v.r.m1 1.3 - 3 -> SIMPAN . EXE


Bi klnJendela (", 1,1 , 80,25, 0, ft32 , 7, 7); l'r')t!ram Ll-~ --. TAivlPIL.EXE
HodeKursor (IIORHAl); 11 rnt!ra rn U-S -> Gt\NTI. EXE
WRITE ( ' Tungg u .• . ');
l'rugrant U-6-+ HAPUS .EX E
CASE Pll ~ hanSaru OF Khmt! ' nya u:Huk Progr:1m 13 -.\ brcna sc mul.t hJnya dikhu su>k.m
1 : EXEC ( 'SIHPAII. EXE' , ' ');
ll!: tu k n:c·:J.1IIlbhk:m data kc fik y.mg sudah ::IL'b (dici ptak.ln). maka
pcrlucht:h.dJ :- upaY.l prusnm jp~:.1 bi-;.1 mcncipr .1k.m fi le. k::d.1 u tik bL·Iulll
2 : EXEC ('GAIITI.EXE' , " ) ;
3 : EXE C ('HAPU9 . EXE', ");
c : DEC ( ' T~P!l. EXE', " ) ; .. d.t. Ukh k .ii'L' IJ.1 Htl , JK'fll\'J[;1.lll:
EtlO ;

ASSIGN :File _Pegawai, 'PEGAWt : DTA' ::


IF OOSERROR () 0 THEN
RE SET (File _Pegawail:
BEGIN
ClRSCR;
WRITEUI ('Ad& ~ es&l.,h•n . Subproses (pi lihAn) tidak b i,... dijohnkO/\. 'l;
pcrlu J i moditika~1 mcnjad i:
WRITE ( 'Tekan EIITER t ');
REPEAT UNTIL REAOKEV : 113 ; ;$1-:
EtiD ; ASSIGN !File _Pegawai, 'PEGAWAI.DTA'};
H~pusJendel&; RESET !File _Pegawall ,
' EtiD ; : Sl+:
UNTil Selesal ; IF IORESULT <,.'> 0 THEN
H~pusJendela: REWRITE !File _Pegawail ;
EtiD; ( akhlr prosedur MenuPI 1 ih&n
ScdnL·r.m pcrnv.ltaan yang haru ini mcny.1takan b.lll'.\'a jiL1 file c1k .1cb
BEGIN ('t pr ogra• ut.a11a •)
p.1d .1 ~.w di-RESET , mab file dic iptabn (!<.EWIUTE).
.,.enuPi l i n.an :
EtiO .

Program Z0 - 6.

-CS
424
Biner ASCII
tUllllOI .I GS
!Hllll!O RS
!Jj1~i - us
LAMP IRAN A i
·'
.31
.32
IF
.)I
!Hllllll
l J lH~Y'fl) sr (SPt\SI J
DAFTAR ASCII ~ 21 Otl(X)))l
'1 .3.3
34
,, () )j(X))J()

1' ::_; 01}(1~111


.•)

y, 2~
i • l \(~l}Ul s
n,:~

I 'I
.
2.;
."2!1
I Il}\)1!11\
ld\1 11\\ 1)
,,
~
_1,1) 27 lll}!!llll
2>-! Ill} I Jli0.)
1. Daftar ASCII Standar -\il
')<) 11 1\ll!n 11
.J l
2:\ ,))\tllillll
Dcsimal Heksa Biner ASCll -12
2Jj )llji\Jtll i +
-t ~)
0 1(1 mxXXX'.i) NUL )'' 111\tll\f)!
..w _ \. .

0! O)HXXll "A SOH II ']I l]}t)j


4) 21>
-') 0:2 !).'0)()110 ·n ST.\ .Jh 2E ill] i 1\\1 1'
J 0.3 l('fOXl li ·c ETX ..
•') 2F tllJtlllll
.j ().j mxmm ·o EC>T .;::) .>' I I)\~~~)())
(I

::> OS ff(k) l}l)\ 'E ENQ .J'J ;i t•l\11 o'l,)j


,
(, 06 (l)..'('()lj() .F :\ CK :111 -'~
I ~ I] \! ~ ~ 1II -
;
I 1)7 ((X )'X) }} 1 ·c BEL n 11ll• i11
L :1 1 _\_ '

8 Ill; ():fK)J(X"() .H ns '...; I !1\\ 11\1 jl ..1


~2
(! t) \¥) ()')() )1 (X)j '1 HT '.ol]\ 111 1il 5
t,:
::: _-; ·~
i'lllllllli l A
\I • UA {((XlJI) )() 'j LF - I
)-,
y-..
'
w
,l 11 0!3 <iXlO l t lll "K VT ::).)
'7
.1
. mJnJll 7
:-,
]~ oc IXXXll HXl 'L FF 36 .'I' mlllt l ll
<)

!I u
14
OD
OE
(HXlll01
o:xm tw
'M CR
.N so
57
58
J<J
'!JA
('I)] \!tAll
c.lllltl!O

l OF ·o (l111101 1
1-
,) (X'X.X'lllll SI 59 .111
·p DLE ( l) llllf'k) <
16 10 OCO!!:XXXl ; 61) JC
17 11 OCOHXXH ·q DC! ..... -,
61 _\]) IX lll l Ill 1
.R DC2 ~,:1 ())! 11110 >
18 12 OOOHXHO 62 3E
J 19 13 tHliOOlt ·s DCJ I j 0\ 111111
~.
63 J l- ((,
ud
~
21
14
IS
00')10100
fXXlJO!Ol
'T DC4
·u NAK
;.1 64 -11 1 ()}IHO)l
()JIXH'A\1 A
~I ,., ·v SYN t1' 65 .Jl
B
ti - 16
1-
!n)J{)IJO
·w ETB .
-.... -! h6 42
.lJ
OltOX) 11l
tiliO~ lll
c
II 23
:?.J
'I
1!)
lnl!O lll
P".m HH) ·x CAN .
!•l A7
-+4
(llt U)\i)l D
"'tl
il
y
_) !9 fn11100l ·y EMN '
68
hl) ·I ; (\JI Hl \11 1
E
F
• 2tJ 1.'\ IIXlllOIO ·z suu 711 .j{, il }IHI!lil
c

I
~7 '[ ESC i\ \!Hl\)1
IU OOliiOll 71 ..1/

28\ lC <1'W)IJJm

.Q6 \
\
- ASCII
Desimal Heksa BiDer ASCU Desimal Heksa Biner
- -- -
T2 48 OlOOlfXX) H 115
-.~
/.l 01110011
73 49 01001001 •J 116 74 01110100

'
4A 01001010 J. 75 01 11lll01 u
74 117
K 0 11 \0 11 0 ,.
·~
75 4B ()1()')1011 76
118
76 4C OJ(X)1100 L 119 n 0 !110111 \\'

77 4D 01001101 \I ·¢~ Dl 78 0!11Hnl X

78 4E 010:11110 N ; !21 7') 0 1\11\:()1 I y


(C.i 4F 01())1111 ~~ 7A 0 1!11il1 0
122
to I 50 !l101!Hlc.) p 12..) 7B IJ\ JJj l)l1
81 51 0\fJIIHJJ Q 124 7C : :1 1I I If ~ )
,_; ')
L-
-')
:J_ 0101WIO R 125 7D 0 111 11 1)]
>< '
(_,.,) 53 ()11110011 s 12o /!: () 111 l 11 ()
u1l.llll r
0-1
~)
54
55
ll 101()]()'l
IJI01010 1 ... .
~
T 127 7F
- - - -- -- ---- ------- - ------- ---- - - - - --- -------------
DEL

v so OltliO! lll \'

'-'"7 57 fl 10 10 111 'X'


Kctcr ~H1!! ..ill:
~ 58 0 101\CXX) X
S<J 0101 UXll y NU L -Null
'"I
·~ . SA 1)1()1 J()JO z SO H - Start ui JkJdi n ~
~ I ! 513 0101 Ill 11 i STX - S r~rt of T ex t
<]:: sc O!lli111Xl ETX - End uf Text
.,_; 5!'1 I) It l I ! Ill I ! f(YT - Enci , ,( r rJn:-.m .ssio•.
'-J- 5F. tl lll \1 I 111 Ef':l~- F.nqu1r~

J:' SF ll It J! I I II -
.-\ C K -\ckno" kd)!l'
.... , (,1) :l l! tXWXl !IEL - lkll
~- ol Il l \(~~)'11 J
l3S - Bacbpau.:
l r,-! r.2 Olll'Oll!l l1 HT - Hori zomJl T abula ti t~n
(f.) 63 f1 lltnl! I (
Li- - Line Fccd
11 y l

In 1
64
05
(11 ]())\()')
01 WHO!
d
l'
.
l
VT -
-
Vertical Tabular-inn
Form Feed
j FF
1•12 (:1, 011 ()'1110 f I CR - Carriage Return
\I)_'\ 67 Ol HXllll g ·J so - Shift Out
lt l..l 68 0 I 10 H'f() h : SI - Shift In
J
!tiS 69 llllllHX11
01 !01010
t .. ~
j
OLE -
-
Data Link E~ capc
Device Control
11 r l 6A .l DC
' Negative Ad~o\\· lcclge
1t l7 on ()J 101011 k
,j NAK -
11~ 6C Olltll\00 I SYN - Synchronous ldk
01101 101 • - E;1d of Transi.;siott Block
'
It~~ 6D JJl
ETI3
11• hE !) I I!) Ill 0 n l C AN - C3tKd
Ill 6F Il l Ill I Ill ,, J
[.\1 - End t'f \1cdiuttt
!I:: 7() ll lll t·x~X l p ~ i sun - \ub,tin:re
~
(1
113 71 011 11 X\11 '1 E~C - L ·ulJ't'
IH 72 Ollll~lltl r
-· '1
J
FS - Ftk SepaJatt>r

1 429
-CR
\ ':~
~
., ..· ..
·

I
~·.,~
19~ ~0~ 22-t ~~0
GS - Group Separator
Oltt ..\A
Vl\Ul
l • 128 144 !60 176
RS - Record Separator Hlll
B c D E F
l:fS
SP
-
-
Unit Separator
Space
~

-~
• Ot t11o41t. l
VAl U(
8 l) · A
, [I r:x_
DEL - Ddcte ' 0 0 <:=
..
£ a, ...
-
II. Oaftar Karakter IBM PC
I I u i- 1 ~
~ ~ ~ ~;
·>> T f3 +
eA, LE , r~ I"' >
.. ~ -.
O!C1MA
0 16 32 48 64 80 96 112
V~lUI 2 2 ~ o
i .H -
ll --
A l , 1-+-
a o .\ u f--JI tt rr < ,
IilJA .
O!CIMAL 0 I 2 3 4 5 6 7
3 3
ar6i-n .='-·: -ri=; -z:[ CI
VAlU I

0 0 ,Q @ p
It ... ,...
I'll-
llA~K
1$1 a(( ' p- 4 -t
-~N{}f~vU
IJIU\ ll
1
g --411 I 1 A Q a q
~~~-~ +
I l 5 5
. t
2 @) t 2 B R b r
~I~- ~ ~ bLfrF ~~ ~~
;
2 ~ - 6 6 .

3 3 v II # 3 c s c s
e v ;,A k~9' 0
7 7
4

5-
4

5

1T $ 4 D T
5 E u
+-- § o/o 6,.
d t
e u
8 8
e 1Q1r-8tjJEP--e ~
·-
6 6 A •1& I
~F
v f v e JD\T ~[~ 4 J1_ · .\I
n- ~
111.
I

7 7 • 1 - ' 7 G'W g \V II B
.. I
1 \ C Y2 .""- - c -4 -F'"
l I I
1

8 8 }ti_L ( 8 HX h X 12 c f -£ VI . -- - .I=' -:,


. y I¥ i OI q,ll
9 9 0 l ) 9 I y 1
.
«bd~
13 0
.. 1 z
[@] * J z An E •1
--+
~
10 A 14 E
. [ k {
0

A r
->----1

n '.'.·~
' K
II 8 cJ 15 F >> l
1 I
12
13
c
D
9
}
L
+----4 -
' < L
- M ] m } "' I

(Su mbcr : IH:\f Pcrson .1l c ,,,p11ta


TNhlii <nl Rc(t:rcllce :\lamwl , C-1.?/ C - lJ )

14 £ ~ A . > N 1\ n _rv
? 0
15 F -0 y
I . - 0 6
4Jl

'~\
TURB03.TPU
Berupa unit yang mcmun g kinkan fas ilita s khusus (no n-
grafik) d ala m Turbo Pas c ·t! 3.0 dap:lt dija lankan pada vcrs1

LAMPIRAN B 5.0.
GRAPH3.TPU
PETUNJUK PENGOPERASIAN TURBO Bcrupa un it untuk me nga tur agar fas ilitas grafik dalam Tur bo
PASCAL Pascal ,·crs i J.O dap:H dijahnkan pa dJ vcrsi 5. 0.
GRAPH.TPU
Berup a unit ~· .mg b erisi f.1si liras grafik untu k Tur bo P.!',L.ll
Turbo Pascal 5.3 tcrdi~i Jari -+ diskct, bnupa:
vcrsi 5 .!1.
lN ST ALL/CO t\1 PILEI<
• *.CHR m cny aDkan file dat a font Ucni s br.1ktcr ) y:mg ...iigu n:~bn
TOUR / ONLINE HEL P
untuk p:td:t m ode grail k.
OO J>/ DEMO S/BGiiDO C
UTILITI E S/ MIS C • *. BGI mcnvatab n fik pcngend ali gr.1fik pn g ciigun:tbn p:tdJ IIH!lk

gr ;d)k .
Mengcnai in form;:;si dar i ma;ing- mas1ng diskn J apat diliha t pJd:l fi k
RE / \DME yang ada pad a diskct lNST J\.LL/COM PILER. dengar1 can Jik a pcmrogram lllL'mc rlukan bantuan (beru p.1 kcrc rang .m dari ~~~tcr:1
memberikan perintah ( p :~da DOS ). Turbo Pascal), file TURBO.HLP perlu d iscrtakan.
File program mcmpunyai nan1J ex ten sion . P.'\S .
README ._
:IL.l U
TYPE RE .'\D M E ..-
Langkah Awal Pengoperaslan
P crs iapan yang di rnlukan ad :~ lah dc· ng:~n mt·n,·IJpk.In d<Ll d1~kL·t h··u
y;; ng sudah J itn~Ill~t. Di skct pcrr a m.1 ~L'b a g<~i d i~i.:L· t ~i:-tun. m:n;rl :.d
D:~ri kee mpat d iskc t yang discd iakan ,h.ln\·a bcbcrapJ file SJj.l ,·ang
bcrisi TUHBO. EXE ch n TUHBO.TPL. Di skL· t ini hi~ J d"'' dcn pn illc·-
., mcrupakan kchar usan um uk J i,.,:unakan dabrn implernentasi prog ram.
tllc b:nvaan lainny a sqxrti y:mg bcrJL'ni s -t..TPU ..... BGI ,bn •·.C H it
I Fik yang harus ada:
Sebaikn ya disk ct sisrem mcngan c!ung ~i~rcm Jl( )S (tnutam.l C<..l.v1-
1. TURBO.EXE (Sistem Tu r bo Pascal dengan lingkungan terpadu, MAND .COM ). Jgar fa si litas y.1ng m cmcrluka n C OMI\1.'\ND .COM
tcrmasuk di d::damnya bcrupa editor, kornpilcr dan debugger atau dapat bcrjalan clcngan scmpmna . Diskct kcdu .1 ~cbagai Jiskct kc1ja.
f.1 s iliras untuk melacak kesal:l han dalam program) atau TPC.EXE untuk mcnyimpan program sumbcr (s o11rcc prosrmn ) bcscrta pr og ram
(kompilcr dengan mod el baris-perintah, yang dapat dijalankan secara basil kompiL1 si.
langsung d ah m DOS). D alam buku in i, scluruh penjclasan dilakukan Langkah sclanjutn\'a:
un ruk TURBO .EXE . I. Di skct sisrc m di ma sukkan p.1d .1 pc nggcLi k di' k A d.m d i~kc t kt:rja
, TURBO. TPL, meru pabn pustaka prog ram, yang bcrisi bcbcrapa p::~da pc nggc rak l3 .
unit srandar (Unit Sy.;rc•H, Crr, D os, 0 11erlay dan Printer). , Pada prompt A). tuli s!Jh TU H.Ll O diikuri dL· n gan ENTFR

Fi k lain yang mu ng ki n dilib.n bn dalarn prog ram mcmiliki ex ten sion : A)TUH.BO - '

mcnprakau fil e unit Turbo Pas cal , ya ng bcrisi fa silitas- Bchcr:1pa ~J .H kL' II!l!di,ln kL·tc·r.lll !',.111 11 l c'l1~L'll.II ,-cr~I Tur bo
l!lllll L" \11
\ >T PU fasilitas yang tda h dikompil asi sccara tcrpisah dcnga n !'~ seal. Unru k mcnuju kc llt.l !l!.l (t ;.1n! h.11· I • - I). rc·k.111l.Jh tc)mho l
11 1\.'Tlll

prog ram . Bcberap.l diant:~ranyJ telah d1scdiakan dalam di skct SPAS!. Dcn g.1n Il!llllCl dn ya menu i111 . ~'Lil !-!t'dH.IIl Jll .lUf'lln pcn g k<1n!pdJ-
Tu rbo Pascal. \"l!Cu: sian ch pat ,lil.lk,,mak.ln
--
e----

. . .i h ,It i!trWf#•tillJ!!t.!lififl'l.tM$B!G81Will.'l:u'mli
Mengatur Dlrektorl
Scbcium melakukan pcmbu:.~tan
program , scre\ah ma suk kc
1 8 Turbo Pascal, biasanya pcrlu mengatur dircktori tcrleb ih ,-\ah ulu (kc
Linr 1 ~I 1 Insert Indent Onindrnt C:HOIII~t. PAS
kalau konfigurasi yang diinginkan sudah scsuai). Cnmk meng:~ktit'K
dircktori B misalnya ditcmpuh dcngan mcmilih ril i\l:u1 File diik
dcngan Change dir . kcmudi:1n kctikkan 13: d 1ikuti dcngan EN TER
1 Konfigurasi dirckrori yan g lcbih lcngkap dapat cbrm dcngan mcng
.L ~ nabn pilihan Option d an diikuti dcng:an Directori es (G:1mbar B -2) .

• ::HNiri~t.P ~S
Line 1 Col 1

CJmhJr B - 1. Menu Urama

Sduruh menu (b:1ik menu utama lll:lUpun sublllC11ll · mc· n:;_.;,m~bn


sisrcm ptt/1-d,>wn. Su:Hu pilih an dap:1t dibkuk:w dcns:m m,·n~gl'Scr
pcnunjuk pilihan mcm akai wmbol p:lllah. Oi sampin::: mcn:,:'-!un.lbn
s i~t C!ll gcscr, riJihan dJ}'·ll dilakuk:m dt:'ll):;:lll illl'!1Ck.ll: tJi1;bol :::lll:,:
S·..'>\1,]1 lkngan huruf tCf:11l?, dabm pilihJn. Miqln\' .1 r:,J.i me ~.! \'!.1: 11.1.
1------------- \latch - - - - ----- - ------1
unruk mcmilih Edit, dap.1t di!J k ukJn dcng:m IllCll,·kJil t•·mh,, E.
.m~~otii'Simllf»Jll,
Untuk m cm pcrccpat pclak s.wa:m pilih :m . dari ;;d1.11.11~b '~~~'111L'nu
mcnuju sub menu dari pilihan dalam menu urama dJr.n ,\ t!.lks.:r;abn
dcn gan mcnckan rombol Alt dan huruf dcpan cbr i pii in.1 n ,ccar.1 C.unb .JY l3 !. Sub lllt't!U 11Jllitn l / Jirrcror)'
sc rcnt ak . Tomb ol :\LT-C misalnya abn mc nYCh Jbbn pilihan Compi -
Pililun yang :-tlh:
le ditampi lkan . mcn ya takan dirckcori tc!1l~'·lt t : ._· ,._.,,

,
• Turbo directory figurasi (TUl"tBO .TP) d.:m ti'-: h.11H'.
'
Proses Dalam Pemrograman an (TURBO.HLP). TGRBO.l !'
H Proses dalam implemcntasi prog ram Turbo Pascal dapat dinnngkan
!'
isi data konftgurasi sisr c111 Tu :hl
dalam bcnruk algoritm a scbagai bcrikut:
(,1\.

l Mcnulis at au mcngcdit program. m cn\·.1t.1k.1n dircktori te nT-H


2 M cnyimpan program kc dalam diskct. • EX£ &: TPU directory ku m ril.l.,i ~'r~)~:r.llll .H.1\l \lll \t.
.i. Mcbkukan kompilasi kc mcmori (RAM) .
-L Jika ada kcsa lahan sccara sintak sis (kaid:Jh), .n l.lka mc·nunju !Jn~bh
mcn\'.H.1k .1:1 ,lir,·krnri tCT1lt' ·l!
• i nclude dirccrcnie s
h·-1 . t/1 (.
~ l\·1l·nguji ~'rogram ha~il kumpdasi. dir;.:ktu ri tctllt'·lt iik
111Cll \.,1(.1 K.111
.
( Jib acb kcsabh:111 sccara log1ka, 111.1ka m cn uju bngbh kc-1. ill Un it directories
1·.
Mcngkompilasi pro~r:1111 kc daiJm diskct, sl·hingf:!a bt>.t di_j.l!.u1k.ut .T PU
I sccar.1 lanpung dalam lingkung;m DOS . ~
~ 1
fi 1

.
;: -+3-t l
_j
I
menyatakan direktori tcmpat file ob-- Menylmpan Program
• Object directories Program yang tclah ditulis perlu disimpan dalam disket deng .ll1 ma
ject (rutin bahasa rakitan/asscmbler) . memungkinkan untuk mengcdit di saat lain. Langbh awal menyim
• Pick file nama mcnyatakan nama file yang sctiap prog ram adalah dengan menunju ke submenu File (T o mbol Alt-F, ji
kclua-r dari sistem Turbo Pascal akan scmula sedang berada dalam editor). Selanjutm·a bisa mcblui pilih an
bcrisi 8 atau kurang data nama file • Save (F2) untuk mcn,·i mpan program dcng3n na ma file sc p cr
tcrakhi r yang pernah dimuat _ dahm
yang ada FJ,h edi tor.
ediwr. Jib dibcri nama TUR- a \Vrite to untuk men vi!ll~':tll prog~:1 m LbLun l',~aor clcngan n.1ma
BO. PCK , mab isinya akan dimuat
file vant?- lam.
sa Jt m.1suk ke sistL' In Turbo Pascal d~111
file van g tcrak11ir dicdit abn dimuar
Mengkompllasl Program
kc ed ito r. Program pcriu dikompila si .1g:tr bisa dijabnk.111. Ko n~;:-1lasi scndiri hany.1
Pad :~ .Gambar B-2 . scluruh tile scbin TUHBO.HLP dan TURBO .TP hcrh.1<il dcngan scrnpurn.l k.1lau progra m ri Ll.lk rnc ngandun g s~tl '
bcrad:~ dahm ciirekwri abr B:\. k cs.1l.1. n pun sccar a sinu~: sis (kaidJh ~ .
Koniigur:~si h :lsi l pcn gatur:~n dirckrori scbnjutnva dapat d isimpn J-L\ :-;t ko mpi \:lsi d apat ~i tcmp:itk.lll c!J\.un 111 •-': 1 ' _, ri ,ltJ\1 kc d:t ·l ;n
dalam file . .Jika konfigurasi tcrscbut dipcrlukan di suatu sa:~t. m ab tid~k diskct. Komrilasi kc mem cri \HA!'vi ) mcmr·uw.-.1' ;~c.J ntung:m . rebk sa
pcrlu dilakukan pcngatur:m bgi mclainkan cukup memanggil nama tik naanny ;; bcrj:dan san g ar ccF.lt, k.Hl'il.l ti,i .lk , ,L ~-;o,;e~ pc'nu\is :m k
konfigurasi. Bib konfigurasi disctel sccara otomatis seti ap masuk kc d:d.llll diskc t. Kcrugian. t':v,:ram lLm\ J bi~:J di_i ..l.l ti'-' Jn clJri lint:kun~:l
sis tcm Turbo Pascal. mak:1 nama file pcnyimpan konfi gu rasi hJn b Turbo Pascal. Kompil:t, . l;__- di~kct !llL'nlp u:·:,·.,;· kc unt u ng:an. !•asi
bcrupa A:TUHBO.TP. Pcrimah yang digunakan untuk m cn\·imp ,~ !l komf'ilasi (b crtipc .EXE ,; lpt dij ,,l.mbn scor.l !Jn~sun~ d,liam J"K)S
dat:t konflgurasi sistcm Turbo Pascal bcrupa pilihan Option/ Savt' Kcru::;1an. p: oscs kompi\ :; , . ~'c'1j.1:.1n L:nb.1t. F.r.u,:: ' ..J lltuk kom r i:.bi k
options. Nanwn pcrintah ini tid:;k akan mcn,·i m pan Lb ta pcnt?-gc' r:Jk
dl, ~_ ('t:
\·:tng aktif pacb s:t:tt pnint ah tcrsebut dibc ri kan. Kar cm itu . minim,:]
scbclum mclakukan proses pemrograman, perintah File/ Change dir/B: I! utttuk pro,_:r:tm, iu,,: :: ·.- . nll'up.1 tiil· bcni r : .E\.E
harus d ibcrikan. agar program n antiny a Jisimpan pad.1 d iskct kcrja vang II untuk unlt . hJ,ihl\J ·: ·.·"tF.l file l'crr ipL· .1 Pl_'
bcrada pada penggcrak disk n.
Pcmanggilan tile konfigurasi dapat dil:tkubn jug:t kc tika bnad:t dabm !lll!!l!!llnnlll!!ll' ~I'll. PAS
sistcm Turbo P;:scal dcngan mcnggunakan pil i han Option/ Retrieve Lin~ 1 Col 1
options . diikuti dengan pcmasukan n ama file konfiguras i.

Menulls Program
Prog ram dapat ditulis dcngan menggunakan editor. va n g Jiscdiakan
Turbo Pascal. Editor ini mcmiliki kcmiripan dcngan pcngobh bt J
Wordstar, dari scgi pcrintah-pcrintah yang dig unakan.
Untuk masuk kc editor, pcrintah yang digunakan d:tpat bcrupa:
• E jika scdang berada dalam menu utama .
• Alt-E ji k .1 scdang berada dal:tm posisi submenu manJ pun.

Sclanju mya, program dapat ditulis atau dicclit. Pada kcada:~n awal, mm a
r---------- - - lhtch -------------1
tik a,Llla h NONAMES , tetap i namJ ini nantinva cl:tpar d iganri clcn~an
muclah . Untuk keluar dari edi tor, pcrintah yang digunakan bcrup.1
c~mb~r B - J. Submrn u
tombol FlO (mcnuju kc menu utama) .

4V·
Awal kompibsi dilakukan dengan menggunakan tombol C atau A1t- Comoh Femakaian misalnya untuk menguji Program 16-3 yang
C. Suhmmu Compile ditunjukkan pada Gambar-B-3. Pengaturan dijalankan dari lingkung:m Turbo Pascal.
kompibsi ke di skct d:1par dilakukan melalui pilihan Destination. Jib
p:1da submenu Compi le terdapat keterangan:

iii Destination Memory ber;mi kompilasi nantinya dilakukan ke


I
1
CacHJn :
P.hh semua submenu , untuk kembali dari suatu submenu ke menu .Hau
submenu indukny:1 d:1pat dilakukan dengan mcnckan ESC.
I
memon . l
• Destination Disk heruri kompilasi nan tin ya dilakubn kr
di s kct.

PeldkS.li Jaa n k01npih s t dii.J;.;uLtn d L·n ga n mcmilih Compile Alt-FY


ITo mho l Alt-F9 atau C).

Menjalank<m Program
fJro g r.u n d:~p . 1t ,~iytlanbn d.u i Jingkungan Turbo Pasc1l deng an mcm ilif:
pili h3n Run p;Hh menu utama (Alt-R dari sebarang submenu ~.
Su b m enu ~ong. mun cul ~cperri tcrlihat pada Gambar B-4 . Pilih ~r:
seL1 nj u tn v:1 bL· ru pJ Run. Pada saar mcnjalankan program, k:~bu progr 2r:~
bd:t m dikomp i la~i abn dikompibsi terkbih dahulu.

I Watch -------------l
Li n~ Unindrnt C:~l!t.PAS
=.:;:JJ~~1'itG:JaRUfMMfiiDWS!;J';'I~ CAP~ l;a&~

CJ'" "J' B - 5 . f> i lih .:r• O pri,>n/ P.uJmrtus

-~
I I ESC )
I
I Submrnu
akt!f
ESC_/
1------------llitch ------------1
(;,w ri>J r B - 6 . ESC untult kort~ali ltr mrnu (su~rnrnu) irrdult

Penjelasan Menu File


G.unbar B-4. S-ubm~nu Run
Load Umuk mcmuat program d.1L1m diskct kc nl1tnr.
Kalau pr og r.1m melibatkan argumcn bari s-perintah, maka arg~men ini (Perinuh ini dapa t dibksJn:tkJn juga dcngan ni cnck.lll
bi sa dim:J~ukkan mclalu i pil ihan Option/Parameters (Gamb.u B-5). tomhol FJ). Scsud.1h pL·rint.lh ini dihcrikJn. l'urbu
P ;~ scal :1bn mcn.myakan tile y ;m~ ,Ibn dimu .lt I ),d:l!ll
P.1 Lb contoh , arg umen h1ris-perintah berupa:
h:~l ini. ruma file d.1pat , lihcrik.m '> L'C.lf:l bn~ ' 111).! ~Litl
AND O NG KFRETA DOKAR d.Ip3t JUga mcngandung r.m,iJ ll'rldutrd [)(iS 1- ,i.tll • ).

4JH 4Y!
~·~
---··--··~--·-..~.~~c--~ "' )( ,.; *13 -ZX44:4£ +lf&f!..·~~Yi£§#.>}flfj@f§:~~~
an pada posisi kursor. Pilih an 1m dapat dilakukan
Jika tl'ildcard dilibatkan, seluruh file yang bersesuaian .. dcngan mcnckan F-t.
den g an spesifikasi tanda t~rsebut akan ditamp_ilkan pada ~ . Memungkinbn eksekusi dijalankan per pernyataan.
Jayar, dan sclanJUtnya pthhan terhadap file btsa dilaku- S!
Trace mto Unruk rn cbnju tkan ck seku si. maka pi lih :~n ini pcrlu
kan den gan mcnunjuk kc nama file diikuti den gan ·'l dilakukan bgi (untuk mud ahr. n dapat mcnggLU1akan
tombol F7) . Kalau tcrchp at r,· rn y a r :~an proscdur atau
1
ENTER.
Pick Untuk m cmuat (ke dalam editor) salah satu di antara 8 pcman gg ilan fungsi. p..:rny .H.1.il1 \·ang ada lblam prmc-
program te rak hir y:mg pcrnah di edir. Pcrintah ini juga dur arau fu n gsi -juga .1k:t11 d i_u!.t r:k:111 saru per sa tu .
dapat dil::tks:mabn dcnga n mcnggunabn tornbol li. I: -
F3. Kc·g un .un s.1r11.1 d cng.1n f'd :J;:.• t Trace into . lkd,m\·.1.
Step over
.c;~I.Hll l'ros..:dur .H.HI fu : 1~~ ' .1 -.. ;1: ,l 1 ,m~gap seh:~g .1 i s:~nt
New Mcngoso n gbn cd1 tor N,nna fi k '>Ctcla h pcngo~ o n ~ .. n ke~:Hu.1n (5elu ruh pc'rtl\ ,1: ...... \ .• n~ ,lll-1 ch ,bi.1mrw.1
adalah NONAMES . d ija l.m k .1 11 scr J ra !.111 pun,: . .: .d 1 buk.ut s.Hll per ~:I ttl \.
Untuk mcnvimpan progra m pada ed it or .ke dalam Tomb o i F8 ,i.Jp.tt Ji~un .1br, •.:n t•lk mel.tk uka n pilih:.1n
Save
di sket (D J pat di laku k:m dcngan rnencbn F2). 1111.
\,i :· :1 g dip .1k.1 i ,cb.•g~i
\\'r ite w Untuk m cny1mpan progr.nn y:lllf: Jda pada cdit<.>r User screen Disun.1k.1:1 untuk m,·\i li.H
,'d ~ ks .m.1k.m ,kns.m
dcnga11 n.l!llJ lain. t,"111f.'-1t kclu.tr .111 l'~"''~r.llll . i' ,:,.1:
1!1 CI1l'K:ln rom bol r\ L T- f; .
Directory Fungsi unr uk mcn:11~1pi lkan .isi d irck ror i. Tctapi d:tf'.H
diop~-ra s 1 kan UIHUk 111<:muar progra n1 kc edi tor .

Chang e dir Digun ak:ln unru k rm: n ga ktifkan suaru dirckto ri atJu Pen)elasan Menu compile
Untuk J11 Cl1j:J I.lnk .n: f'I"Ll,c> -.,' !l .,'li.ht. !'tt'·H d ibku\...111
!'cngger:1k disk.
Compile
dl· n~~.111ll lL'ill"k .lll .\l.T-F' ·. o' .llc'll lt'·lt.tl: h.b il kulllf'll.lsi
kc· cll'K :lt.lll !11L"llllH I 1 I L\.\~ .: .:J.l;t::· li!Ci.llt: i pii ih.l n
OS shell l.Jnruk mcn UJ ll kc DO S scca r;! scrn cr1t ar.1. Un tu k
kcmb:1li kc Tmbo Pa sca l. pcrlu dibcrikan pcrinr:~h: Destinati o n .

EX IT ..._; p:~ci:1 pro mpt DOS . . j1k.1 pil ih .111 ]11/Ji/ ,11 )" r/1,: ,: .'1 ,',·1 ;.t il .;t·~tll 11.1111.1 tile
Make pro~r,111 1. mJk.t !'1.''!2~" ·1 111 1·:d .. h \.1:1~ .t\....111 di\...clrnpil.l~i
Quit (Ait-X) Un tuk kcl ua r d ar i ~i~tcm Turb o Pas cal scca ra mcnctar . P''rt:l ll l:l k.1li. \\·.ll.1lli'tll • • •'·:,, r >cr1' 1 t~k ,u rn bn y.•ns
K o ntrol akan dikcm ba li kan k e DO S. bin. h. :~bu ko <;ong. nuk 1 , .•l lt~'ll.l> l dti.1k.uk.1n tc·rh,lli.lp
yan s Jd.l p.1d.1c·ciir or. h. .1lx.. ,-1ic j' rtllllT mclib:ttk.n1ul1tt,
PenJelasan Menu RUN un it ,1k:1n dipc· r iks .l okh 1 .-:· b,, P.1sc.tl d.tn ,llb kcmun g -
Run Untuk mcnjahnk:111 prog ram d cng:m parameter b ~ris ki n.1n ,1k.1 11 ,!Jk,,ntpi\.1-.i L ::: b.1h P c mniks:t,m di!akuk.m
perintah yang tcrdap:u pada Option / Parameter. Pc- bc·r,l.l s.u k :lll \\·.1kw d .Ht :i:: ,u!l1bl' r d.111 lusil kompil.t si
rintah ini Japat pula dcn gan menekan CTRL-F9 sc:ca ra (.-r Pl :). h. Ll l1lf'il.1>i \...c·IJJ 1'. i1 Jil.lk ubn jib file sulll bn
langsung. kbd1 b.1ru dib.ttlllin~\.; .J•: :·k un 1t. l'l·mcriksJ .m ~,·n q'.J
hnl.1k u un tuk tik ,,b_j,·\... :\...,: :r11.1l (ru rin h,,,i! b.1h.1 ,,1
Program reset K egun aan unruk n1en ga khir1 proses tft•lnt~e_e ins (pcncJrian
kesalahan). P ilihan ini akan m cny ebJbka n se mu J iilc
r:~ kiun) n t.tll!'tl ll.i;!.- ~~'·'""' \', ·int .th ini ,i.lp.H ,\il.1kuk .1 11
yang tc rb uk a ditutup ,bn mcn em patkan pointer (pc- ~l'C.\Ll \.l n~...:un:-'- ~..1L 11~ .l;) i\'!lll"'')l F9 .
nunjuk) pada pcrn~·ara ..1n p..:rtanu dala rn program. l ,,!uruh untt un~ dilib.Hk.tn
~L' Ill.ll .1!11 J\1ak l". h.I JI \ .I'··
Pilih ,111 ini dap:n dibkukan d c ngJn mcnekan C: TRL-F~ . Build
.1k .111 dil.;nllll'li · 'i u\.11H:
Goto cursor Digunakan untuk m c lakukan cksckusi sa mpai pcrny ata- -! -I I

44!1

.:1
Destination · Untuk mcngarur h asil kompilasi nantinya ditcmpatkan mcngcnal bentuk pcmrograman baru yang mulai dipcrkcnalkan pada
kc rn c:m o ri at<lU disk . vcrsi 5.5, yaitu pcmrograman yang bcroricntasi pada objck, buku Turb<'
Pascal 5. 5 0/Uect-Orimted Programmi11g n'icrupabn buku pcdomannya.
Find error Untuk mcnda p atkan po sisi pe rnyataan yang mengalami
kc:saiahan sc waktu cksckusi (nmtime error). Misalnya
tcrjaj i kcsal:l ha n bcrupa:

Runtime error 106 at 0000:001F


Pcsan ini bcr arti :

a Kodc L ·;a lah .J n ad.·l.t h 11 1!, (1) .1 p.H d i! d1 ,1t p :~ th RtFr(ll£t' C uidt•).
II Kcsaiah ,m tc· rlct ak ~'.lcb Ji.1111.H ''''' " ': ' ''·i F.
K :li.au pr s:1n ini m u n cd ,L1Lm1 !i ngL111g.1 n DOS, nuka mul.l- mu!J pcrlu
m c n uj u kc ~ i,tcm T ur L' v P.1-;cai tkn f:.lll c·di wr bc risi program sut1\bcr dan
bcri b n pc· r in t,1 h Compile / Find err o r . l.tlu kctikbn

, 11}1)( ':' !Ill r


m Jka J. , k:b: kL·,,tl, ;h.u, ,,h,,,,, dJtulljt: k okh k ursor. K:~ Ll\1 prog ram
dij :ll ank.1 n d.1ri !it ,~ Kllt:\.: .. ll 1 u: '''1 1' ,1 S,·:-t l. ILJ b >i kcsa la han :~bn d itunjuk-
k :m scc:1r:1 <HO !l J:Jti~.

Prima ry fil e Un~uk ::.c·:;enrukJn iik l'r i:1:er ,·an g snua ~' r omaris aka n
l~lk 01~~~':!.~:-.; k.dJ u .h.:.J r1:d~..t :1 ~ " ! n pi l ::l':>i . FJsli !rJ s ini sangat
1H: r !l1Jn~- i ..t{ llll[':k r~()~!",ltn ' ,! ~:_ : 1 H:'Tlggu n ~lk J n riJe ~ li JllbCr
~ ..i n~ ha : 1\ · .1~.. i i ct~ih ~. Llri ~. i ~u \

G c· t info l .: nr u•: rnc·mpc r<>id1 int·:,r rn,; ,J mc ngc nai fi le ~ umber


,·,ms ad a p;1da c,~i ro r. !n t'o r ma s i mdipuu :
N.111ra di rck to:i
N:1 m J file Sllmbcr
Uku ran fi le
M cmo ri EM S
Jum lah baris va ng di ko mpilasi
U kura n kodc p rogr:1 m
U kura n d:~ t a pro gram
Uku ran ;tack
M .tks irnu m da n m in imut n heap.

lnformasi Bagl Pemrogram


l:hgi y.m s in g in rn cngc tahu i sc luk-bcl uk 1 ur b o Pa scal sccara lcbih
111 l'!ldcril. pc nu Ji, .mjurk .1n unt uk rn c mhao buk u m anual . T u rh o Pascal
ver s t :i .ll: Hcti·rcfl" Cu te!,· d.m ( '•cr (~utd,· . Adapun ba g i \'a n g ingm
:~1

4-i ~ ""~·~
1"J.
il
.tR
~
~ oaftar Pertntah

f~
LAMPIRAN C ~t
Menggerakkan Kursor ~ ---...-;:----.

~ Ctrl-S I P anah-k iri Kursor ke ki ri satu ka ra krcr


DAFTAR PERINTAH EDITOR TURBO PASCAL l C rri- D I Panah-kanan Kursor ke kanan satu karakter
Cr rl-A I Ctrl-Panah- kiri Kurso r k e kiri satu kata
C trl- F I Ctrl-Panah- ka nan Kursor k e kana n sa tu k ata
C trl-E I P anah- aras Kursor ke at as
C trl- X I P:mah- bJ.\v :th Kurso r kc b:1wa h
C rrl-W Mcn ggcsc r laya r ke Jt .<s sa tu b an s
saris Status pada Jend ela Edit C tri-Z Men ggescr !Jva r kc baii'J h sa ru h:;ns
Bar is s tatu s pad a jcnd cb Ed it 'bhm kca t.b :\11 b:twa .m bcru pa: C ui- R M en g gulu ng kc atas sat u !J vJr
_;. C trl-C Men gg ul un g kc h aw ah >J tu ia nr
C tri-Q S I H ome Kurso r kc J ,,·al b:l ris
Line n Co l n Insert Inden t Tab Fi ll U ni ndent X:f\:AMA. E XT
C trl- Q D I End Kurso r k e .1khir b ari s
Li n e n Po sis1 i-. u r,ur b c-rJ da patb ban., fi k 1·ang ke- n Ctrl- Q E I Ctrl-Hom e K u rso r ke at.lS lay Jr
C trl - Q X I Ctrl-End Kursor ke akhi r lay ar
Co l n Po sisi k:n ~ or b crad a p:tcLl ko io:n ke- n.
Ctrl-Q R I C trl-PgUp Kurso r ke J. wa l file
Insert pt' m· isipan k ar::t kr ;.· r cbp.lt dih k u k .o~•
['vkll i"J t.l k .lll C trl-Q C I Ctrl- PgD n Kurso r kc ak h ir file
pada r~)sis; k u bo r, tan pa m cng h:tp us braktn C u l- Q B Kurso r ke awal hl o k
scmu!J l" :lll ~ bcr.1d a mu l.t i po si,; i ku r>n r. C rrl-Q K Kursor kc akh ir blok
C rrl-Q P K u rso r kc posisi kurso r scbcl u mnya
Inde nt 1\: aLw m u nc u!. 111L'llllln g killk .t n f' <'l1 <"1! 1p.l un h;~­
C tri-Q \V Kursor kc posisi ha ris 1· .ms m cn s .•b :n i
~<> r ll! L'ng;k ut i k o lom d.H i k J r.IL tL' I J'L rr.t :n,
kcsala h an sn,·ab u d .. scku si
fb uk .tn - ~p .b l ) 1· ;;n~ tcrk r ..~k d : t' :~ri , .: Lb ~: urso r.
sw .tp ru m boi F ;"-.;TEH d1 tc bn .
Penylslpan/ Penghapusan
Ta b Kala u mun cul. mc n yJ tak an bah 11·,; r ·: n l·;s;pan C ui - V I INS M cn on akriikan / m cn ga kt ifbn mode pe-
tab dJpat dilaks .l!laka n . n pslpan
Ctri-N M enyisipk :m bari s k osong
Fill Ka lau muncul da n Tab jug a ;nu ncul. Jl 1.1 k.l abn
C trl- Y M engh apus bari s
rncngusahakan schi ngga bar i ~ mcn g an d un g b -
C trl-Q Y M en gha pus seluruh karakter d i pos1S1
ra k tcr sc ~ cd i ki t mu ngk in (Ha l 1111 bcrb iran
kanan kurso r
dcn g an indent).
C trl-H I B ackspace M en gh apus karaktcr di k iri kurso r
U nind e nt Kalau muncul , pcngh apu san dc ng an Back space C trl- G I D el M enghapus ka rakter pada posis i kursor
tcrha tbp k.i raktc r (hu ka-spa si) tcrkiri a bn dirata- C trl- T M en ghapus sa tu bt J.
kan dcng an p o sisi ka rakt cr b u kan-spas i tcrkin
ya ng rcrlctak pada baris d i .H a~np. Perlntah Blolc
C trl-K B I F7 M cnandai aw al blok
X :NAMA .EXT X m t·nyanbn ko dc pcn ggc·r.1k d1 ~ k. N r\M :\
C trl-K K I F8 M cn .m d ;u .1k h ir blok
m cn1-.H.ik.1n n.l :nJ dc p.tn fi k ,l.tn EX 'T llll'fUpJ-
C trl-K T Mnn bl ok ,,1t u ka t.1
kan Tl.l lll .l pL·r luJS.ll1.
445
-H-l
ke ~ Ctrl-l I TAB

I
- ";~·:.... 1'1
Ctrl-K P Mencetak isi blok printer
Ctrl-K C Meny;ilin isi~ blok -: Ctrl-0 T I Ctrl-Q T
Y Menghapus isi blok Crr-0 U

i
Ctrl-K
Ctrl-K V Memindahkan isi blok
Menyembunyikanlmenampilkan blok

~';1
Ctrl-'-K H
Ctri-K R Menyisipkan isi file bin .
I>

Ctrl-K W Menyi mpan isi blok ke file lain


Ctrl-K I Menggeser isi blok ke kanan satu kolom
Menggeser isi blok ke kiri satu kolom
l
Ctri-K U 5
Perlntah Lanjutan
Crrl-U .\\ :mi..,,HJik.m opcusi/pcrint:~h
Ctrl-0 I I Ctrl-Q I ,\ .knonak ti fk an l mengakrifkan in dent
yang Jilakukan sec.Ha oro mari s
Ctrl-P Menyisipkan karakrer konrrol. Selanjur-
nn di ikuti denga n penckanan karakter
k or.rrol (Tanda kontrol tid ak bcrpcngaruh
rerhJdap program)
Ctrl-K D I Ctr l-K Q Kc lu.F da ri editor. unpa m cnyim pan
Ctrl-K S I F2 M enyimpan ke fil e
Ctri-Q F U n~uk menemu bn pos isi sua ru tek s
Ctrl-Q A Unruk m engganri suatu teks
Ctrl-Q n :_;muk mcnunj u kc suaru posisi ya;1g
d ·:.-.'1dai dengan nilai n
Crrl-K n l!nrui( menandai suatu lokasi dengan nildi
n •n berkisar an tara 0 .. 3)
Ctrl-0 0 M enyisipkan seluruh pengarah kompilcr
FlO tvknunju ke menu utama
Ctrl-F1 M ima bantuan (Mengakses TUR-
BO.HLP)
F3 Memuat suatu file
Ctrl-0 F Menonaktifkan atau mcngaktifkan pcng-
oprimalan jumlah karakter dalam baris
Ctrl-Q [ I Ctrl-Q ] M enempatkan kursor ke karakrcr yang
berpasangan, yaitu (,), [,], (*, *), {, }, '
dan ··. Caranya tempatkan pada lokasi
m1salnya yang berisi (, maka kursor akan
ditem patkan pada pasangannya yaitu (.
Ctrl-L Mengulang Ctrl-Q A atau Ctrl-Q F
Crrl-Q L Mcngcmbalikan baris yang dihapus de-
nga;l C trl-Y

!C
446

j
~ . -·
H

~ · :~ .. .-.,....,,."""
.
~; _ . -. ,. ,,_
_.,....oz;:::puaz;t\L%U$4.£KW @I Uk . J. . ·.' ----·~ '.
.,._.
\. 'j' l . . i-'t;: :j:':
' !--'
- ~ - . ,_... .,, . -., '..! 0-·~
oAFtA~;:PUsTAK)C'~
.! ~
· r·

1. C. Edward, Charles, Ad,.mzced Techniques in Turbo PQSCil/, Sybex lnc. , USA, 1987. -.~~
2 Leesona, Sanford dan Nyhoff, Larry, PASCAL Programming mzJ Problem Solz•i11g. i
Macmillm Publishing Company, New York, Collier Maanillan Publis~rs,
London, 1984.
3. IBM Procnal Computer Technical Rcfererzce Mamwl.
4. K.adir, Abdul, Ptnzrograma~z Dasar Turbo Pascal, Andi Offset, Yogyakarta, 1987.
5. K. Obrien, Stephen, Turbo Pascal Adz•mu~ Progranmzer's Guide, Borland-Osboml
McGraw-Hill, I.JSA, 1988.
6. Turbo Pascal 5.5 Object-Oriemed Programming Guide, Borland lntemational, USA ,
!989.
7. Turbo Pa.<Cal Rrjermce Guide Versio~z 5.0, Borland International, USA.
8. Turbo Turor Vmiorz 4.0, Borland lntcmational, USA.
9. Turbo Pascal L',;o- Guide Version 5.0, Borland international, USA.
10. Wood, Steve, l'si11g Turbo Pascal Versiorz 4.0, Borland-Osbomc/McGraw-Hill.
USA.

$d:1 ~ fi •i:tlC ~,
-~---
7l "'~ (1... v Ol·. '1'-</~9' _' 'll"
l\.' 1 ,' I('"( , . l "I
1
,;.

~
.!J
,. s
I

448

You might also like