Professional Documents
Culture Documents
'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 \
!
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
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
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 .
~ /
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
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
~--··
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 ---~-~--
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..
<
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:
··~
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
,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:
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.
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 !':'
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.
~
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.
2 t 3•4
21
"'
.L
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).
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
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 ~
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 :
~ -~
.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?
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
28 31
·-- I
.6 :=.--,~ ~ .
Bit operand 1
0
I ,
·# ;..; , ,
-~
~ -
B it operand 2
\ _0
" .~
Bit hasir : · •
0
1
Operator Xor r
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?
A :: A SHR 1;
Hasil C == 182 bisa dijelasktfl melalui pola bit berikut: WRITELN ('lsi A aetelah A;: A SHR 1 --> ',A);
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 .
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.
~
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
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!;
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
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
~-- --
Program 3-3.
buka nll\·a:
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
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
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.
~!~~--.-....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;
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);
READ Qumlah);
20. 1 30 40 1 ~
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
,: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 .
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
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:
58
: ···~:o:"·~-.-. ,~-...,.
- -- --
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 relasi yang tertcra pada Tabel 5-l d:1pa t di kenakan pada tipe ' salah benar satah saiah I salah ,. .· ; ' ("!. · ••
/ ·~
'·'' .
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 :
Pemyataan..l;
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;
'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;
I
(dan nantinya disimpan dalam variabel Gaji_total dengan benar) , maka PemyataanJ
Contot) ek-kust :
7~
Garnbar 5-1. Prnrnr..an lrlasifilttUi A., B, C, D dan E terhadap ni/ai uorang sisw1 l<las1f1kasi : 8
70
I
E
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.
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);
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).
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
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
)
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))};
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
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
BEGIN
CLRSCR;
Gul1lbar 5- 5. Dio,crJm alir ptrny.:~rJ,m W HILE
WRITE ( ' Masukkan nilai PENYEBUT dan PEI-lBILAI<G (po sit ii): ') :
.
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
i
- Jika Golongan adalah 4, besarnya Gaji yaitu ')!J(J()(){)
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;
.
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.
' .........~........ .._ ......,, ~·,..· .. ~ ~· ., , ...~ ..'<"'·_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
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
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:
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
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
~ '
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.
----
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 ~).
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
_________________. ........ ._~-
konstanta bertipe.
PROGRAM Par~eter1;
. )
i z -~ .. .. ...... .. ....... ... ........ .. .........
[____ melewatkan parameter
;:
I!
106
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 } '
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 }
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:
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:
menghasilkan nilai 2.
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.
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.
NilaLawal .. -NilaL..ali:hlr
TYPE
oataHari = !Senln, Selasa. Rabu, Kamls, Jumat. 5abtU, Mlnggu); <• enumerasl •l
KodePendldlli:an = 0.. 4;
HariKer)a = sentn ..Sabtu;
HurufBesar= 'A' ..'7:;
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 )
--
Penulisan string kosong:
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).
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) ;
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
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;
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:
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
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.
Gambar 9- 4. l si
' 1 ' i
JrT" )'
NILALTES
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.,.• ..,.,,.....+..,_,..,_~·
.,
erup aka n instruksi unruk m cnampilkan nilai clemen kcdua dari array ,
01 Contoh eksekusi :
;"Jilui- Tes.
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 ;
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-
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;
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
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~
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
153
~
RECORD
daft..ar _fiel d..1: tlpeJecord_1:
datwr _fteld...2: tlpe_record...2:
TYPE
FormatTanggal • RECORD
Tanggal : 1..31:
Bulan . : 1..12:
Tahun :WORD
·END;
VAR
Tanggallahlr • FormatTanggal:
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 .
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
.
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.±.:..'§. ~
,.
..
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 )
163
162
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 }
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
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
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
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];
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
170 171
~·
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
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;
173
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:
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 ·~ .
.,
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:
179
178
.,
_/
-· - - -
Sc
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:
' .
1Ril 181
.-
END;
._. mbentuk himpunan huruf kap;-tal yang ada p&da KALIHAT E~
8
dan dit~patkan pada HIMPKARAKTER } END; { akhir prosedur CotakHimpunan
BEGIN
IF Ka'rakter· r'N · HimpKarakter THEil WRITELN <HimpKarakterl;
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 ;
END;
Karakter:= SUCC(Karakterl BEGIN
TYPE
in 1 )
184 ~,;)~
!:
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
Program 11-J.
CONST
HlmpHurufKapltal : SET OF CHAR
~ !"A' ..'Z'l ;
HlmpHuruf : SET OF CHAR
!"A' ..'Z',J ',.'z'l ;
189
188
..
.' ~ ·~,.
~·~ .
~-- ~
....
"
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
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);
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
.
(* -------------------- ---------- -------------- *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 •)
195
. .,
akan mencmpatkan tulisan 'Turbo Pascal' pada baris 2 mulai kolom 25
TEXTCOLOR ( 9) : dari jendela yang sedang aktif.
WRITEL~ ('leks BIRU MUOA');
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
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
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
""
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
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.
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 . )
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:
FILE
Komponen
~ Komponen
;. - 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
\,
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
T~ktor1
Contoh yang bin :
VAR
Oata_5uhu: FILE OF ARRAY!1 .. 71 OF REAL; kode disk driv~.:
Baik Rt'5 t'l m:wp tm Rewritt' menycb ab kan pointer file akan ditempatbr: NIP 11896~
I
I
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
~
~l
WAL DT.A. dibuk:l dengan HEWRlTE.
• )
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,
Re cord_Pega wa i.
r-- komponen no 1 omponen no 2 - l
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
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;
~ 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 :
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 ,
_ _
•
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
_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;
'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
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;
'
Gaj t Pokok
Nt;t'lJu..-o..hkan oat a
~o
'•9;
•oooco
( 'f f1 I " 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 :
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 =~ == == = =: == == == ===== = ====== = === = = = = = = = = == = == == ~
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 ;
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
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~
•)
)
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;
I
PROCEDuRE ~enggantiData; [ "l)
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.
.
)
!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 ;
PROCEDURE Menghapu.Oats ;
• Seluruh komponen pada PEGAWAI.DTA yang NIP-nya
tidak berupa tanda '*' disalin ke file TEMPORER.DTA COII~T
"">~ 229
.,.
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
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
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
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.
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 .
234
235
!':
~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
Kmkter = ?
'Pointer file
Karakter = 'A'
Gambar 13- 15. READLN (•·ariuhri_J ilr, S t) P"J" filr ttlt.<
I
i
I
USES CRT;
VAR
Sebelum READLN sesuclah FjloTe ks TEXT ;
READLN !variabeLftlel
Sf.PI~I
t
'
Pointer file Pointer file
ASSIGII (Fileleks,
REWRITE (Fileleks);
'AUT OD EC . 8 AT" );
( buk• d an c;pto•an file
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;
E'ID
1 _,. EOLM pada fila bertipe TEKS.
:. . 'I
•'paJ<A' ..,tul< -napia apaal berturutan •)
EIIO ;
..,
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 :
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~
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;
(.
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
~
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
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
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) ;
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 ,
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 ;
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
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+)
...,,
(• 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 .
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:
.)
(t Ga.baran ••derh&n. tentang pointer t)
atau dipersempit selama cksekusi berlangsung, tanpa harus
sejumlah memori terlcbih dJhulu dalam pendeklarasian. {• ---------------------------------- •)
~61
--
·--~~~~.a '
nns' Z
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 /
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
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;
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)
I 1 I D ~ I I I
Nama Jabatan Lanjutan PtrKepaJa
D- ~J "DIREKTUR' I 7--J
Nama Jabatan LanJutan
_266
267
•..
F-·
~
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
'UDIN'
I DIREKTUi
""'""
I PtrKepala _
I
~
Nama
"'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 : ') ;
W~IT E
(Pt rBaru· . llama);
(' Jabat a n '):
Nama Jabatan Lan]utan R:;:.ouJ (PtrBaru · . Jabatan):
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 :
'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) .
,-------------------- · -- ~
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
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:'>
., ~:.---;.·
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
1
'1 • \ ··"·''-' . =· PtrKepala· .Lanjutan:
,1, 1, ,, , ,,\"
··lch PrrPosisiData. dengan pernyataan
PtrPosisloata
,., ' r- 1\.l i 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
~.~,~~~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 (•
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;
BEG III
Otg\Jna k a n untul.. ""•,.II lh proaa a :
I proses pe nghapusan } MaMaavkkan d• t o~
Ptllha n CHAR;
ELSE 8EGI II
~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
( 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
~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 ;
Ptr1,
lanjutan Pt r2 ,
&eaudah P t rA~al " INTEGER ;
d i cipt akannya var iabe l d ir~i s
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.
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) .
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 .
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:
.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
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£
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.
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
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
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:
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
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 :
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:
<• -----------------------------------------
(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 ;
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);
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));
<•
TlpeProsedur2;
.)
WRITELN !Genap (100ll;
(* ------- - - - --------
)..,
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
{$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
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;
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.
<•
. )
Contoh okaakuei :
.
(• 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;
.
:. '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
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
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- .
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
~ 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 )
PROCEDURE Kv raor_Bea.r;
!a! (bl (C) BEGIN
~ursor
I
Bentuk_Kursor {0 , 7 )
l ! a ) Penomoran garis benn;t
,. ------------------------ ------- ------------ •> 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 ;
BEGIN
CootOh akaekuai :
·--.-.. a • ·. J:-------....&:'' . f - _...,_~,.._
........ _
z::
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
.j
FUtiCTIOII Di sk Drt veAkt if : CHAR; 1 oleh lnrerupsl !
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.
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];
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 -\
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
:
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:
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);
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
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
•>
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
. 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 ;
341
...
~esb~llkanMeMor!Oa erahJam ;
)(VII.S LAIN·LAIN
TEXTATTR : : AttrAa ll ; , ..!
~~-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
J
0
· ,b~.•Oioml
Detect 0
CCA 1
J
199
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 .
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;
·---- •)
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
'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
--
~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.
?,') "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 .
-· -~-- ------
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
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" ,, . :-~ ..,·. ~ .;
....-
~--- .-:;~:~·;: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
~
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 I'
1 i.
I -,
I I
l LB
' I
2 LB 1 Hijau Merah coklat I i
I ! ' '
j'
·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
~~ ·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
- - - -...~ ·
~ -....-.-:....__.-
- 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
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
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;
kan dcn gan SerFii/ P,.rtcm :lt.J.u SecFillSr yle. Garis luar po ligon akan ~A O ilr.l : 4 0;
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-.... : .. ..
~ -
.................-' ::=
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):
PASCAL
Gambllr 18- 16. B ubagai ulturart urt.J .zrah tu/ ; ••
-------- ~·--~--~~
- ......_
-~
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 :
1 ('
( • Canton pro-gr . . untuk -.ngatur .,
' l
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;
.,
•)
K•~H0raf1k,
c• , •• nu ••
Moc)e.Craftk : INTfGU ;
~t""' -..oyka •ht . . graf'tk • )
akan menghasilkan Iebar · dari teks 'PASCAL'. END; t akhi r pro. .ctt.w ...,.t,__font )
I
~:· Str_,ont : ARitAY{O .. 4} M STRIHQ
Fungsi RegisterBCIFont memungkinkan suatu file font tidak dimuat lagi • ('O.rault Font• , ' Trtp l elli 'orot' ,
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•••~~~-~~ •)
376 3T7
. ·."'\, "
---~· - ~-·-·-
.:_
. .• . -~ - . , ·, RZ1fta a -
., . ..
-
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;
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');
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;
0.
a ·-_... _ _
~-
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
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);
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 }
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;
..
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)
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
~...
:· ~·· 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 ):
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;
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
: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:
_\(})) 399
aacaOlglt : = KarOiglt ... ..-
~
~
)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
..:!:
,..• ~~··-··~···'··~······$························••*·······>
: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 •)
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);
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.
BEGIN
VAR KarOiglt : CHAR; CLRSCR ;
BEGIN
SacaKarakta r (KarOigit, H\mpOigi~ ):
• 401
400
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 :
T
c
Program /9 -1.
Huruf := 'T' :
402
kesalah an sewaktu program d ~jalanbn berupa:
'Numeric co-p rocessor req u ired'.
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
{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 .
(•
. )
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;
'
,·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 *)
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
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:
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 ,
-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 •)
(•
(• -
------------ --
yang ditunjuk oleh PTR LAYAR ke layar • j
.)
.
(. *) 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
<•
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);
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 •)
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).
12 ( 1
. -- -- -- -~------
T
) TEXTATTR :: $IF;
)(){.4 IMPa.EMENTASI PILIHAN PROSES DENCAN SISTEM GESER END; { akhir VideoNoraal
~
..._
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
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()
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 _ \. .
!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 \\'
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
A r
->----1
n '.'.·~
' K
II 8 cJ 15 F >> l
1 I
12
13
c
D
9
}
L
+----4 -
' < L
- M ] m } "' I
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
,
• 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\.
.
;: -+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:
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&~
-~
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
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:
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
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 \
4-i ~ ""~·~
1"J.
il
.tR
~
~ oaftar Pertntah
f~
LAMPIRAN C ~t
Menggerakkan Kursor ~ ---...-;:----.
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>
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