Anda di halaman 1dari 615

BAHASA PEMROGRAMAN

Untuk SMK
Penulis : Suprapto
Kadarisman Tejo Yuwono
Totok Sukardiyono
Adi Dewanto
Editor : Ratu Amilia Avianti
Perancang Kulit : Tim
kuran !uku : "#$% & "'$( cm
Direktorat Pembinaan Sekolah Menengah Kejuruan
Direktorat )enderal *anajemen Pendidikan Dasar dan *enenga+
Departemen Pendidikan ,asional
Ta+un %--#
KATA PENGANTAR
Pertama kali kami memanjatkan rasa syukur ke +adirat Alla+
Su.+ana+u /ata0la .a+wasanya penyusunan .uku dengan judul 1!a+asa
Pemrograman 1 ini dapat diselesaikan2 Kerja keras yang tela+ dilakukan dalam
penulisan ini tela+ mem.ua+kan +asil dengan .aik2 !uku ini sangat .erarti
.agi para siswa Sekola+ *enenga+ Kejuruan 3S*K4 terutama mereka yang
mempelajari .idang teknologi in5ormatika dan komunikasi atau .idang lain
yang sejenis2
Selain itu$ dengan ditulisnya .uku ini$ akan menam.a+ per.enda+araan
pustaka yang dapat dijadikan pegangan .agi para guru2 Kami menyadari
.a+wa ketersediaan .uku yang memadai .agi para siswa dan guru sekarang
ini dirasakan masi+ kurang2 Sejalan dengan kemajuan jaman dan teknologi
yang ada$ maka suda+ sepantasnya perlu ada upaya untuk mencerdaskan
para siswa dengan kampanye penulisan .uku2
!uku yang ditulis ini di+arapkan dapat menjem.atani ke.utu+an siswa
dan guru ter+adap materi6materi pelajaran yang diajarkan di sekola+2 Dengan
demikian kelu+an sulitnya mencari .uku .ermutu yang ditulis dalam .a+asa
7ndonesia suda+ tidak akan didengar lagi2 Se.agaimana yang ditulis dalam
pengantar !uku Standar Kompetensi ,asional !idang teknologi 7n5ormasi dan
Telekomunikasi .a+wa demikian luasnya .idang T7K$ prioritas utama dalam
penyusunan standar kompetensi ditujukan untuk .idang6.idang pekerjaan
yang .er+u.ungan dengan Teknologi 7n5ormasi dan Telekomunikasi2 ,amun
.uku pegangan 1.a+asa Pemrograman1 ini akan memuat pengeta+uan
mendasar tentang .a+asa Pemrograman k+ususnya .a+asa Prosedural dan
88P2 Selanjutnya .agi yang .erkepentingan dengan .uku ini dapat
mengimplementasikannya dalam pem.erdayaan proses .elajar mengajar yang
.erlangsung di S*K2
Dalam kesempatan ini ucapan terima kasi+ yang se.esar6.esarnya
disampaikan kepada para anggota Tim Penulis$ para konstri.utor materi yang
tela+ .ersama kami menyusun dan menyempurnakan isi .uku ini2 Kepada
Direktur Pem.inaan Sekola+ *enenga+ Kejuruan 3PS*K4$ kami sampaikan
peng+argaan dan terima kasi+ atas dukungan dan .antuannya se+ingga
penulisan .uku ini dapat dilaksanakan dengan .aik dan .er+asil memenu+i
kriteria2
Ak+irnya kami persem.a+kan .uku ini kepada para pelaksana di
jajaran S*K2 Apapun +asil yang tela+ dicapai merupakan perwujudan kerja
keras yang +asilnya .ersama6sama dapat kita li+at setela+ implementasi dan
siswa mencapai ke.er+asilan studi2 Semoga .erman5aat .agi kita sekalian2
Tim Penulis
ii
DATAR !S!
9A:A*A, )D: 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 i
KATA PE,;A,TAR 222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ii
DA<TAR 7S7 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 iii
!A! "2 DASAR6DASAR PE*R8;RA*A, K8*PTER
"2"2 Penda+uluan 222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "
"2%2 Perangkat Keras Komputer 22222222222222222222222222222222222222222222222222222222222222 =
"2=2 Arsitektur Komputer 22222222222222222222222222222222222222222222222222222222222222222222222222 >
"2?2 Kerja Komputer222222222222222222222222222222222222222222222222222222222222222222222222222222222 ">
"2'2 Sistem !ilangan22222222222222222222222222222222222222222222222222222222222222222222222222222222 "@
"2>2 Pemrograman Komputer 222222222222222222222222222222222222222222222222222222222222222222 %#
"2(2 !a+asa Pemrograman2222222222222222222222222222222222222222222222222222222222222222222222 =-
"2#2 Penulisan !a+asa Pemrograman 22222222222222222222222222222222222222222222222222222 =?
"2@2 Element !a+asa Pemrograman 2222222222222222222222222222222222222222222222222222222 =#
"2"-2 !a+asa ABB22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?-
"2""2 Struktur !a+asa ABB 222222222222222222222222222222222222222222222222222222222222222222222222 ?%
"2"%2 7nputCoutput222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?'
"2"=2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?>
!A! %2 !A9ASA DA, A:;8R7T*A PE*R8;RA*A,
%2"2 !a+asa Pemrograman2222222222222222222222222222222222222222222222222222222222222222222222 ?(
%2%2 Aompiler dan 7nteprete 222222222222222222222222222222222222222222222222222222222222222222222 '-
%2=2 Tipe Pemrograman 222222222222222222222222222222222222222222222222222222222222222222222222222 '-
%2?2 Algoritma 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '%
%2'2 Airi Algoritma 222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '=
%2>2 Penerapan Algoritma 222222222222222222222222222222222222222222222222222222222222222222222222 '?
%2(2 ,otasi Algoritma 2222222222222222222222222222222222222222222222222222222222222222222222222222222 ''
%2#2 Deskripti5 Algoritma 22222222222222222222222222222222222222222222222222222222222222222222222222 ''
%2@2 <low c+art 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '>
%2"-2 Pseudo code2222222222222222222222222222222222222222222222222222222222222222222222222222222222222 >-
%2""2 Penerjema+an ke kode sum.er22222222222222222222222222222222222222222222222222222222 >"
%2"%2 :ati+an Soal22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 #(
!A! =2 T7PE DATA DA, 8PERAT8R
=2"2 Pengertian Data22222222222222222222222222222222222222222222222222222222222222222222222222222222 #@
=2%2 7ndenti5ier 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 @-
=2=2 Konstanta 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 @%
=2?2 Daria.el 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 @>
=2'2 Tipe Data 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "-"
=2>2 8perator !a+asa ABB 2222222222222222222222222222222222222222222222222222222222222222222222 ""-
=2(2 8perator nary 222222222222222222222222222222222222222222222222222222222222222222222222222222222 ""%
=2#2 8perator !inary 22222222222222222222222222222222222222222222222222222222222222222222222222222222 ""(
=2@2 8perator Ternary 222222222222222222222222222222222222222222222222222222222222222222222222222222 "%>
=2"-2 ngkapan 3Ekspresi4 222222222222222222222222222222222222222222222222222222222222222222222222 "%#
=2""2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "%@
iii
!A! ?2 STRKTR PER:A,;A,
?2"2 Perulangan 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "="
?2%2 8perator 7ncrement dan Decrement 2222222222222222222222222222222222222222222222222 "=%
?2=2 Ekspresi *atematika BB dan 66 22222222222222222222222222222222222222222222222222222222 "==
?2?2 Peng+itung 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "=?
?2'2 Pernyataan <8R2222222222222222222222222222222222222222222222222222222222222222222222222222222 "=>
?2>2 Pernyataan ,ESTED E <8R 222222222222222222222222222222222222222222222222222222222222 "?@
?2(2 Pernyataan /97:E 22222222222222222222222222222222222222222222222222222222222222222222222222 "'"
?2#2 Pernyataan ,ESTED6/97:E 2222222222222222222222222222222222222222222222222222222222 "''
?2@2 Perulangan D86/97:E 22222222222222222222222222222222222222222222222222222222222222222222 "'#
?2"-2 Pernyataan ,ESTED D86/97:E22222222222222222222222222222222222222222222222222222 ">"
?2""2 Perulangan Tidak !er+ingga 222222222222222222222222222222222222222222222222222222222222 ">=
?2"%2 Pernyataan !reak 22222222222222222222222222222222222222222222222222222222222222222222222222222 ">'
?2"=2 Pernyataan Aontinue 222222222222222222222222222222222222222222222222222222222222222222222222 ">(
?2"?2 Pernyataan ;oto 222222222222222222222222222222222222222222222222222222222222222222222222222222 ">@
?2"'2 :ati+an Soal22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "(-
!A! '2 STATE*E,T KE,DA:7
'2"2 Pengertian Statement 22222222222222222222222222222222222222222222222222222222222222222222222 "("
'2%2 8perator Relasi 22222222222222222222222222222222222222222222222222222222222222222222222222222222 "(%
'2=2 Statement 7< 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222 "(>
'2?2 Pernyataan 7<CE:SE 2222222222222222222222222222222222222222222222222222222222222222222222222 "#?
'2'2 Pernyataan 7<CE:SE 7<222222222222222222222222222222222222222222222222222222222222222222222 "##
'2>2 Pernyataan 7<CE:SE *ajemuk 222222222222222222222222222222222222222222222222222222222 "@>
'2(2 Pernyataan ,ESTED 7< 2222222222222222222222222222222222222222222222222222222222222222222 "@#
'2#2 8perator :ogika 22222222222222222222222222222222222222222222222222222222222222222222222222222222 %-%
'2@2 8perator Kondisional 222222222222222222222222222222222222222222222222222222222222222222222222 %-#
'2"-2 Statement S/7TA9 22222222222222222222222222222222222222222222222222222222222222222222222222 %""
'2""2 Pernyataan Switc+ F Aase22222222222222222222222222222222222222222222222222222222222222 %"%
'2"%2 7<222T9E,$ 7<222T9E,222E:SE dan ,ested 7< 222222222222222222222222222222222222 %"#
'2"=2 Aplikasi Pernyataan 7< pada *enu222222222222222222222222222222222222222222222222222 %%-
'2"?2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %%%
!A! >2 PR8SEDR DA, S!R8T7,
>2"2 Prosedur 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %%=
>2%2 Parameter Prosedur 2222222222222222222222222222222222222222222222222222222222222222222222222 %%?
>2=2 Pemanggilan Prosedur 222222222222222222222222222222222222222222222222222222222222222222222 %%'
>2?2 Su. Rutin 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %%#
>2'2 Su. Rutin dalam !a+asa Pemrograman 222222222222222222222222222222222222222222 %%@
>2>2 <unction yang *engem.alikan ,ilai2222222222222222222222222222222222222222222222222 %==
>2(2 <unction yang Tidak *engem.alikan ,ilai 222222222222222222222222222222222222222 %=>
>2#2 <unction Aall <unction 2222222222222222222222222222222222222222222222222222222222222222222222 %=@
>2@2 Aall .y Dalue dan Aall .y Re5erences 2222222222222222222222222222222222222222222222 %?"
>2"-2 Parameter dengan ,ilai De5ault 2222222222222222222222222222222222222222222222222222222 %??
>2""2 8verloading 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %?>
>2"%2 :ati+an Soal22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %'"
iv
!A! ( <,;S7
(2"2 Penda+uluan 222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %'=
(2%2 <ungsi Doid222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %''
(2=2 Pemanggilan <ungsi 2222222222222222222222222222222222222222222222222222222222222222222222222 %''
(2?2 Prototipe <ungsi 2222222222222222222222222222222222222222222222222222222222222222222222222222222 %>%
(2'2 Pengiriman data pada <ungsi22222222222222222222222222222222222222222222222222222222222 %>?
(2>2 Passing Data .y Dalue 222222222222222222222222222222222222222222222222222222222222222222222 %>@
(2(2 Pernyataan Kem.ali 2222222222222222222222222222222222222222222222222222222222222222222222222 %("
(2#2 *engem.alikan ,ilai dari <ungsi 22222222222222222222222222222222222222222222222222222 %(%
(2@2 Pengem.alian ,ilai !oolean 222222222222222222222222222222222222222222222222222222222222 %(>
(2"-2 *enggunakan <ungsi dalam program menu 222222222222222222222222222222222222 %((
(2""2 Daria.el :okal dan ;lo.al 222222222222222222222222222222222222222222222222222222222222222 %(@
(2"%2 Daria.el Static :ocal 2222222222222222222222222222222222222222222222222222222222222222222222222 %#?
(2"=2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 %#(
!A! #2 8PERAS7 STR7,;
#2"2 String pada .a+asa A 22222222222222222222222222222222222222222222222222222222222222222222222 %#@
#2%2 Pointer pada 8perasi String 2222222222222222222222222222222222222222222222222222222222222 %@?
#2=2 :i.rary String !a+asa ABB 222222222222222222222222222222222222222222222222222222222222222 %@'
#2?2 *em.andingkan string 222222222222222222222222222222222222222222222222222222222222222222222 %@#
#2'2 8perator :ogika ,8T 22222222222222222222222222222222222222222222222222222222222222222222222 =-%
#2>2 Pengurutan String22222222222222222222222222222222222222222222222222222222222222222222222222222 =-%
#2(2 <ungsi konversi StringC,umeric22222222222222222222222222222222222222222222222222222222 =->
#2#2 *enguji se.ua+ Karakter222222222222222222222222222222222222222222222222222222222222222222 =-@
#2@2 Deskripsi <ungsi Karakter 2222222222222222222222222222222222222222222222222222222222222222 =""
#2"-2 Konversi Karakter 22222222222222222222222222222222222222222222222222222222222222222222222222222 ="?
#2""2 *enulis string 22222222222222222222222222222222222222222222222222222222222222222222222222222222222 =">
#2"%2 Pointer untuk menguraikan String 2222222222222222222222222222222222222222222222222222 ="@
#2"=2 Alass String pada ABB 222222222222222222222222222222222222222222222222222222222222222222222 =%"
#2"?2 *em.uat Alass String Sendiri 2222222222222222222222222222222222222222222222222222222222 =%(
#2"'2 Studi Kasus 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ==-
#2">2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ==%
!A! @2 ARRAY
@2"2 Pengertian Array2222222222222222222222222222222222222222222222222222222222222222222222222222222 ===
@2%2 Deklarasi Array 222222222222222222222222222222222222222222222222222222222222222222222222222222222 ==@
@2=2 7nisialisasi Array22222222222222222222222222222222222222222222222222222222222222222222222222222222 =?%
@2?2 Array multi dimensi 222222222222222222222222222222222222222222222222222222222222222222222222222 =?%
@2'2 *engurutkan element Array 2222222222222222222222222222222222222222222222222222222222222 =?>
@2>2 Aonto+ program array 2222222222222222222222222222222222222222222222222222222222222222222222 ='-
@2(2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ='=
!A! "-2 REKRS7<
"-2"2 Pengertian Rekursi5 22222222222222222222222222222222222222222222222222222222222222222222222222 =''
"-2%2 Pengertian Teknik 7terati5222222222222222222222222222222222222222222222222222222222222222222 =>"
"-2=2 Per.andingan Teknik Rekursi5 dan Teknik 7terati5 2222222222222222222222222222 =>"
v
"-2?2 Algoritma Teknik Rekursi522222222222222222222222222222222222222222222222222222222222222222 =>?
"-2'2 Algoritma Teknik 7terati5 22222222222222222222222222222222222222222222222222222222222222222222 =>'
"-2>2 Penerapan Algoritma Rekursi52222222222222222222222222222222222222222222222222222222222 =>>
"-2(2 Penerapan Algoritma 7terati5 2222222222222222222222222222222222222222222222222222222222222 =>#
"-2#2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 =(%
!A! ""2 ;RA<7K
""2"2 Pengertian ;ra5ik222222222222222222222222222222222222222222222222222222222222222222222222222222 =(=
""2%2 ;ra5ik :i.rary 222222222222222222222222222222222222222222222222222222222222222222222222222222222222 =(?
""2=2 ;ra5ik Seder+ana 22222222222222222222222222222222222222222222222222222222222222222222222222222 =('
""2?2 Animasi ;ra5ik 2222222222222222222222222222222222222222222222222222222222222222222222222222222222 =#%
""2'2 Dasar6dasar ;ame 222222222222222222222222222222222222222222222222222222222222222222222222222 =@%
""2>2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 =@#
!A! "%2 8PERAS7 <7:E
"%2"2 Pengertian <ile 222222222222222222222222222222222222222222222222222222222222222222222222222222222 =@@
"%2%2 Alass stream2222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?-"
"%2=2 9irarki class stream 22222222222222222222222222222222222222222222222222222222222222222222222222 ?-%
"%2?2 <ile 7nputC8utput ABB 22222222222222222222222222222222222222222222222222222222222222222222222 ?-?
"%2'2 Pem.acaan String 2222222222222222222222222222222222222222222222222222222222222222222222222222 ?-(
"%2>2 Routin6routin konversi <ile 2222222222222222222222222222222222222222222222222222222222222222 ?-@
"%2(2 <ile !inary dan ASA77 22222222222222222222222222222222222222222222222222222222222222222222222 ?"%
"%2#2 !inary 7C8 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?"?
"%2@2 !u55er 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?"?
"%2"-2 Rutin6rutin pada ABB 222222222222222222222222222222222222222222222222222222222222222222222222 ?%-
"%2""2 <ile sekuensial 2222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?%%
"%2"%2 Program 8perasi <i7e 2222222222222222222222222222222222222222222222222222222222222222222222 ?%'
"%2"=2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?="
!A! "=2 P87,TER
"=2" Pemrograman pointer 22222222222222222222222222222222222222222222222222222222222222222222222 ?==
"=2% Deklarasi varia.el .ertipe pointer 22222222222222222222222222222222222222222222222222222 ?=>
"=2= 7nisialisasi Pointer 22222222222222222222222222222222222222222222222222222222222222222222222222222 ?=@
"=2? Pointer untuk 5ungsi 22222222222222222222222222222222222222222222222222222222222222222222222222 ??%
"=2' *engakses dan *engu.a+ isi Pointer2222222222222222222222222222222222222222222222 ??(
"=2> Array dan Pointer222222222222222222222222222222222222222222222222222222222222222222222222222222 ?'-
"=2( Pointer dalam <ungsi222222222222222222222222222222222222222222222222222222222222222222222222 ?'@
"=2# <ungsi Pointer ke Static Alass *em.er <unction22222222222222222222222222222 ?>>
"=2@ <ungsi Pointer pada Alass anggota <ungsi ,on6static222222222222222222222 ?>#
"=2"- Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?(-
!A! "?2 A:ASS
"?2"2 8.yek dan Alass 222222222222222222222222222222222222222222222222222222222222222222222222222222 ?("
"?2%2 Tipe Alass22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?(%
"?2=2 Deklarasi Alass22222222222222222222222222222222222222222222222222222222222222222222222222222222 ?(?
"?2?2 Struktur dan kelas22222222222222222222222222222222222222222222222222222222222222222222222222222 ?(@
"?2'2 Aonstructor dan destructor 222222222222222222222222222222222222222222222222222222222222222 ?#>
vi
"?2>2 8verloading Aonstructor2222222222222222222222222222222222222222222222222222222222222222222 ?##
"?2(2 *enulis Alass 22222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?#@
"?2#2 Re5erence this 2222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?@'
"?2@2 8verloading *et+od 2222222222222222222222222222222222222222222222222222222222222222222222222 ?@'
"?2"-2 Access *odi5ier 22222222222222222222222222222222222222222222222222222222222222222222222222222222 '--
"?2""2 Aonto+ Program Alass 222222222222222222222222222222222222222222222222222222222222222222222 '-"
"?2"%2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '-'
!A! "'2 PE*R8;RA*A, !ER8R7E,TAS7 8!YEK
"'2"2 Pemrograman 8.ject68riented dan Prosedural 2222222222222222222222222222222 '-'
"'2%2 Per.edaan 8.ject68riented dan Prosedural 222222222222222222222222222222222222 '->
"'2=2 Pemrograman .erorientasi o.jek 22222222222222222222222222222222222222222222222222222 '->
"'2?2 7mmuta.le o.yek 222222222222222222222222222222222222222222222222222222222222222222222222222222 '"-
"'2'2 *odularitas dan A.straksi Data22222222222222222222222222222222222222222222222222222222 '"%
"'2>2 *odularitas dan Penye.unyian 7n5ormasi 2222222222222222222222222222222222222222 '"(
"'2(2 7nter5ace22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '"#
"'2#2 7nter5ace dan Alass222222222222222222222222222222222222222222222222222222222222222222222222222 '"@
"'2@2 9u.ungan dari 7nter5ace ke Alass 2222222222222222222222222222222222222222222222222222 '%"
"'2"-2 Pewarisan Antar 7nter5ace 2222222222222222222222222222222222222222222222222222222222222222 '%%
"'2""2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '%%
!A! ">2 S 7,9ER7TA,AE$ <R7E,DS$ P8:Y*8RP97S* DA,
8DER:8AD7,;
">2"2 *enggunakan 8.yek dan Alass 222222222222222222222222222222222222222222222222222222 '%=
">2%2 Realisasi Prosedur dan <ungsi dalam Alass 222222222222222222222222222222222222 '=-
">2=2 Alass Private $ Alass Pu.lic$ dan Alass Protected 222222222222222222222222222 '=?
">2?2 <riend 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '?"
">2'2 <riend class 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ''?
">2>2 7n+eritance 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ''(
">2(2 Alass .asis virtual22222222222222222222222222222222222222222222222222222222222222222222222222222 '>'
">2#2 7n+eritance .etween class 2222222222222222222222222222222222222222222222222222222222222222 '>@
">2@2 *ultiple in+eritance222222222222222222222222222222222222222222222222222222222222222222222222222 '("
">2"-2 Polymorp+ism 22222222222222222222222222222222222222222222222222222222222222222222222222222222222 '(%
">2""2 8verloading 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '(@
">2"%2 Soal :ati+an22222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '#=
:A*P7RA, 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 '#'
vii
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
BAB "
DASAR#DASAR PEMROGRAMAN KOMPUTER
"2"2 Penda+uluan
"2%2 Perangkat Keras Komputer
"2=2 Arsitektur Komputer
"2?2 Kerja Komputer
"2'2 Sistem !ilangan
"2>2 Pemrograman Komputer
"2(2 !a+asa Pemrograman
"2#2 Penulisan !a+asa Pemrograman
"2@2 Element !a+asa Pemrograman
"2"-2 !a+asa ABB
"2""2 Struktur !a+asa ABB
"2"%2 7nputCoutput
"2"=2 Soal :ati+an
"$"$ Pen%ahuluan
Setiap orang yang .ekerja
.iasanya mem.utu+kan alat .antu
untuk menyelesaikan pekerjaannya
supaya menjadi le.i+ muda+2
Seorang tukang kayu misalnya
mem.utu+kan palu$ gergaji dan
pengukur2 A+li mesin mem.utu+kan
kunci pas dan o.eng2 Seorang teknisi
elektronika mem.utu+kan multimeter$
oscilloscope dan solder untuk
menyelesaikan pekerjaannya2
!e.erapa peralatan .antu
terse.ut dapat dikategorikan sesuai
dengan jenis pekerjaannya$ misalnya
seorang a+li .eda+$ maka orang
terse.ut +arus mempunyai peralatan
yang didesain secara k+usus untuk
melakukan operasi2 Peralatan
terse.ut tentunya tidak .iasa
digunakan ole+ orang lain selain a+li
.eda+2
Ada .e.erapa peralatan yang
digunakan ole+ .e.erapa pro5esi$
misalnya: o.eng digunakan ole+ a+li
mesin$ tukang kayu$ tukang listrik dan
lain se.againya2 Selain o.eng$
komputer juga merupakan se.ua+
peralatan yang digunakan ole+
.anyak pro5esi$ se+ingga +al terse.ut
sangat sulit dikategorikan pada
.idang apa2
Selain seperti dijelaskan diatas
komputer juga mencakup .anyak
pekerjaan yang .er.eda atau .ole+
jadi dapat dikatakan menjadi
peralatan yang paling ser.aguna
yang perna+ di.uat2
Peman5aatan komputer ole+
seorang akuntan$ digunakan untuk
2008 | Direktorat Pembinaan SMK
"
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
menganalisis keuntungan$ untuk
mem.uat laporan keuangan$ tetapi
pada se.ua+ pa.rik komputer
digunakan se.agai kendali mesin6
mesin produksi$ sedangkan pada
seorang mekanik digunakan untuk
menganalisis .er.agai sistem pada
mesin dan permasala+an lainnya2
*engapa komputer menjadi
peralatan yang sangat ser.agunaG2
)awa.anya sangat seder+ana$
komputer dapat mengerjakan tugas6
tugas yang .ervariasi karena
komputer dapat diprogram2 Komputer
merupakan se.ua+ mesin yang
k+usus +anya mengikuti instruksi
yang di.erikan padanya2Karena
komputer .ersi5at programmable$
se+ingga komputer tidak +anya milik
satu pro5esi saja2 Komputer
dirancang untuk mengerjakan
pekerjaan yang sesuai program6
program yang di.erikannya padanya2
Pekerjaan se.agai programmer
merupakan pekerjaan yang sangat
penting karena merekala+ yang
mem.uat perangkat lunak yang
digunakan untuk menginstruksikan
komputer se.agai peralatan yang
sesuai dengan yang diinginkan2
Tanpa programmer$ pengguna
komputer tidak mempunyai perangkat
lunak$ dan tanpa perangkat lunak
komputer tidak akan .isa
mengerjakan apapun2
Dalam pemrograman komputer
ada dua kom.inasi yang tidak
terpisa+kan yaitu seni dan ilmu
pengeta+uan2 Dikatakan dalam seni
karena setiap aspek dalam program
+arus dirancang dengan +ati6+ati2
9al6+al yang perlu diper+atikan
dalam mendesain se.ua+ komputer
adala+ se.agai .erikut: Aliran
instruksi secara logic$ Procedure
matematik$ Tampilan yang akan
muncul pada layar monitor$ 7n5ormasi
yang ditampilkan ole+ user$ Program
+arus Huser friendly1$ serta Petunjuk
penggunaan maupun .entuk
dokumen tertulis lainnya2
Pemprograman .erkaitan
dengan aspek ilmu pengeta+uan
.erkaitan dengan ilmu teknik karena
jarang sekali program dapat .erjalan
.aik pada saat program pertama kali
ditulis2 !iasanya perlu .anyak
dilakukan perco.aan$ pem.etulan
dari kesala+an maupun dirancang
ulang sesuai dengan ke.utu+an2
Dengan adanya +al terse.ut diatas
maka di.utu+an seorang programmer
yang mema+ami dua kemampuan
yaitu seni dan ilmu pengeta+uan2
Seorang programmer +arus
menguasai .a+asa yang dimiliki ole+
komputer seperti .a+asa ABB$ )ava
atau .a+asa pemrograman lainnya2
!a+asa terse.ut merupakan cara
komputer supaya .isa mema+ami
apa yang diperinta+kan karena
komputer tidak pa+am .a+asa
7ndonesia atau .a+asa manusia
manusia$ se+ingga programmerla+
yang +arus menyesuaikan dengan
komputer2
!a+asa komputer mempunyai
aturan6aturan yang +arus diikuti2
Dalam menulis program komputer
yang meliputi seni dan ilmu
pengeta+uan terse.ut seperti +alnya
dalam merancang se.ua+ mo.il$
dimana mo.il terse.ut +arus
mempunyai tingkat 5ungsional yang
tinggi$ e55icient$ .ertenaga maksimal$
muda+ digunakan$ dan amat
menyenangkan jika dili+at2
&
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
"$&$ Perangkat Kera' Kom(uter
Komputer merupakan se.ua+
mesin yang .ekerja untuk
memproses$ menyimpan$ serta
mendapatkan data2 Data6data
terse.ut .erupa angka$ karakter$ titik
warna$ gelom.ang .unyi atau suatu
kondisi se.ua+ sistem$ seperti
pendingin atau AD player2 Semua
data disimpan dalam .entuk angka6
angka2
Angka terse.ut dalam .entuk
.ilangan .iner yang diwakili ole+
angka " dan - yang sering dise.ut
.it2 Supaya muda+ dalam
mengingatnya$ maka komputer
mengelompokan data .iner terse.ut
menjadi nible, byte dan word2
Dengan mengelompokan terse.ut$
selain muda+ diingat$ juga akan
memuda+kan pengguna dalam
menuliskan se.ua+ program .erupa
kode yang dimengerti ole+ mesin$
merancang se.ua+ struktur data dan
algoritma yang komplek2
Komputer memanipulasi data
dengan melakukan operasi$ .aik
penjumla+an$ pengurangan$
perkalian maupun pem.agian2 9asil
manipulasi angka terse.ut ditunjukan
dalam .entuk gam.ar pada monitor
serta deretan angka6angka pada
memori video$ dimana masing6
masing angka atau sejumla+ angka
akan mewakili suatu pi&el warna2
ntuk memainkan se.ua+ *P=$
komputer akan mem.aca deretan
angka6angka dari disk dan
meminda+kannya kedalam memori2
Selanjutnya komputer menggerakkan
angka6angka terse.ut untuk
dikonversi menjadi data audio yang
dimampatkan2 Dan yang terak+ir
adala+ data audio yang dimampatkan
terse.ut akan dikirim ke c+ip audio2
Semua +al yang dikerjakan ole+
komputer$ mulai dari we. .rowsing
sampai mencetak$ meli.atkan
perpinda+an dan pemprosesan
angka2 Secara elektronis komputer
tak lain +anya suatu sistem atau
.enda yang +anya dirancang untuk
menyimpan$ dan meminda+kan$
menggerakkan$ serta meru.a+
angka6angka2
2008 | Direktorat Pembinaan SMK
)
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
;am.ar "2"2 !agian6.agian komputer
Komputer terdiri dari .e.erapa
komponen$ yang secara garis .esar
di.agi menjadi dua yaitu: .erupa
perangkat keras dan perangkat
lunak2 Komponen utama pada
perangkat keras, terletak pada pusat
komputer adala+ prosesor$ prosesor
ini .er5ungsi mengeksekusi program
komputer2
Selain prosesor$ komputer juga
mempunyai memori2 Dalam se.ua+
komputer .iasanya terdapat
.e.erapa memori yang .er.eda6
.eda2 *emori ini digunakan untuk
menyimpan program ketika prosesor
sedang .ekerja2 Komputer juga
mempunyai piranti untuk
menyimpanan dan mempertukarkan
data dengan dunia luar atau yang
sering dise.ut 7C82
Piranti 7C8 akan mempertukarkan
data$ seperti: masukan teks melalui
key.oard serta mendisplaykannya
pada layar monitor2 7C8 juga
digunakan untuk meminda+kan data
maupun program ke atau dari suatu
disk drive$ modem$ printer$ mouse
dan lain6lain2
*
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer
Bahasa Pemrorgraman
;am.ar2 "2%2 Perangkat Keras Se.ua+ Sistem Komputer
Perangkat lunak mengendalikan
dalam komputer2 Secara umum
5ungsi dan operasi se.ua+ komputer2 lapisan akan saling .er+u.ungan
Ada .e.erapa lapisan 3layer4 dengan layer diatas atau
perangkat lunak yang digunakan di di.awa+nya2
;am.ar2 "2=2 :apisan Perangkat :unak
Pada perangkat lunak tingkatan
Perangkat lunak ini melakukan
yang paling renda+$ perangkat lunak inisialisasi perangkat keras sistem
dijalankan ole+ prosesor ketika terse.ut untuk mengeta+ui kondisi
komputer pertama kali
2008 | Direktorat Pembinaan SMK
di+idupkan2 dan mengatur komputer pada operasi
+
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
yang .enar2 Perangkat lunak ini
.ersi5at permanen dan disimpan
dalam memori komputer2 Perangkat
lunak inila+ yang dikenal se.agai
firmware
Firmware digunakan untuk
meletakan program bootloader2
Bootloader adala+ se.ua+ program
k+usus dan dijalankan ole+ prosesor
ketika mem.aca sistem operasi dari
disk atau memori nonvolatile yang
kemudian menempatkannya di dalam
memori2 !ootloader .iasanya dimiliki
komputer desktop dan workstation2
:apisan perangkat lunak diatas
5irmware$ adala+ sistem operasi2
Perangkat lunak ini .er5ungsi
mengendalikan operasi komputer$
mengorganisir penggunaan memori
dan mengendalikan peralatan seperti
key.oard$ mouse$ monitor$ disk drive$
dan se.againya2 Sistem operasi juga
mem.erikan 5silitas kepada user
untuk melakukan antarmuka dengan
piranti lain$ menjalankan program
aplikasi dan mengakses 5ile memori
luar seperti Aompact Disk 3AD42
Sistem operasi$ secara umum
menyediakan satu set tool untuk
program aplikasi$ melakukan suatu
mekanisme pengaksesan monitor$
disk drive$ dan seterusnya2
Kenyataan dilapangan se.ua+
komputer tidak semua menggunakan
sistem operasi2 Sering juga komputer
.ersi5at sangat seder+ana dan
langsung menjalankan tugasnya2
Pada permasala+an tertentu$ seperti
router jaringan$ perangkat lunaknya
terintegrasi dan sangat seder+ana
proses pengem.angan2
Perangkat lunak pada lapisan
paling tinggi adala+ perangkat lunak
aplikasi yang merupakan program
yang langsung .er+u.ungan dengan
kemampuan se.ua+ komputer2
Kemampuan se.ua+ komputer
sangat tergantung pada aplikasi
perangkat lunak sistem2
"$)$ Ar'itektur Kom(uter
Se.ua+ prosesor atau yang
sering dise.ut dengan central
Procesing nit 3AP4 pada se.ua+
komputer tidak .isa .ekerja sendiri
dalam melakukan kerja se.agai
pemroses2 AP memerlukan
komponen6komponen pendukung
seperti memori untuk menyimpan
data dan program$ serta piranti 7C8
37nputC8utput4 yang digunakan untuk
meminda+kan data antara komputer
dan dunia luar2
Selain itu juga komputer
memerlukan clock 3detak4 se.agai
penggerak prosesor dalam
memproses data2
*ikroprosesor adala+ suatu
pengola+ yang di.entuk ole+ se.ua+
c+ip tunggal atau sering dise.ut
integrated circuit2 *ikroprosesor ini
sering ditemukan pada se.ua+
superkomputer$ komputer PA$ atau
sekarang ini +ampir semua pengola+
data modern adala+ mikroprosesor2
*ikroprosesor yang paling
.anyak digunakan saat ini adala+:
seri 7ntel Pentium$ <reescaleC7!*
PowerPA$ *7PS$ AR*$ and t+e Sun
SPARA$ dan lain6lain2
!lok diagram se.ua+ sistem
komputer dapat ditunjukkan pada
;am.ar di.awa+2
,
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer
Bahasa Pemrorgraman
;am.ar2 "2?2 Diagram .lok sistem komputer
Pada gam.ar diagram .lok
instruksi ataupun .erupa data2
se.ua+ sistem komputer diatas$ 7nstruksi diam.il dan di.aca dari
memori .erisi instruksi dan .ersama6 memori menuju prosesor$ sedangkan
sama prosesor melaksanakan dan data di.aca dari dan ditulis ole+
menggerakkan data2 *emori suatu prosesor ke memori$ +al ini
sistem komputer tidak perna+ kosong ditunjukan pada gam.ar di.awa+:
dan selalu terisi apaka+ .erupa
;am.ar2"2'2 Aliran Data pada se.ua+ Komputer
2008 | Direktorat Pembinaan SMK
-
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
!entuk aliran data arsitektur
komputer terse.ut diatas dikenal
dengan arsitektur Don ,eumann$
dimana nama terse.ut diam.il dari
penemunya yaitu: Yo+anes Don
,eumann2 9ampir semua komputer
modern sekarang ini mengikuti 5ormat
arsitektur ini2
Pada komputer arsitektur Don
,eumann langka+6langka+nya diatur
ole+ kendali suatu program2 Dengan
kata lain$ komputer mengikuti suatu
langka+6langka+ program yang
memerinta+kan operasinya2
"$)$"$ .entral Pro/e''ing Unit 0.PU1
AP atau yang sering dise.ut
prosesor merupakan .agian
terpenting pada se.ua+ komputer2
Dalam sistem komputer$ prosesor
menjadi .agian yang menjalankan
komputasi dari komputer terse.ut2
Prosesor adala+ suatu piranti
elektronik yang mampu melakukan
manipulasi data dengan cara yang
disesuaikan ole+ suatu urutan
instruksi2 7nstruksi terse.ut .er5ungsi
se.agai opcode atau kode mesin2
rutan instruksi ini dapat diu.a+ dan
disesuaikan dengan aplikasi$ +al ini
dikarenakan si5at komputer yang
programma.le2 rutan instruksi
adala+ sesuatu yang mendasari
se.ua+ program2
7nstruksi pada se.ua+ komputer
adala+ .erupa angka6angka2 Angka
yang .er.eda$ ketika di.aca dan
yang dieksekusi ole+ suatu prosesor$
akan menye.a.kan sesuatu +al yang
.er.eda pula2 7nstruksi pada se.ua+
mesin menyesuaikan dengan
machine code yang sesuai$ ini artinya
.a+wa setiap prosesor mempunyai
instruksi masing6masing sesuai
industri yang memproduksinya2 Suatu
instruksi yang .er.eda mempunyai
arti .a+wa mesin yang diprogram
juga .er.eda2
"$)$&$ Memori
*emori digunakan untuk
menyimpan perangkat lunak yang
.erupa data maupun o.code se.ua+
prosesor2 *emori dapat
dikategorikan menjadi memori yang
dapat menyimpan data secara
permanen walaupun listrik yang
mengalir pada memori terse.ut
diputus dan memori ini sering dise.ut
Nonvolatail memory 3tidak muda+
.eru.a+ isinya4, dan memori yang
.ersi5at sementara atau data yang
disimpan dalam memori terse.ut
akan +ilang jika listrik yang mengalir
diputus$ dan jenis memori ini sering
dise.ut dengan Volatail memory2
Kedua jenis memori terse.ut
mempunyai kele.i+an serta
kelema+an masing6masing$ se+ingga
penggunaannyapun disesuaikan
dengan ke.utu+an masing6masing2
*emori diimplementasikan
dalam .entuk c+ip yang didalamnya
.erisi ri.uan komponen elektronika2
*emori ini dapat digam.arkan dalam
.lok diagram seperti gam.ar
di.awa+:
2
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
;am.ar2 "2>2 *emori # .it data & "- .it alamat
;am.ar terse.ut diatas adala+
memori yang terdiri dari .us alamat
yang dikodekan dengan A
-
E A
@2
!us
alamat ini .ersi5at satu ara+ yaitu
se.agai masukan sja2 Selain .us
alamat terdapat juga .us data
se.anyak # .it yang .ersi5at dua ara+
se.agai masukan maupun keluaran2
!us yang dimiliki memori selain
.us alamat dan data adala+ .us
kendali2 !us alamat digunakan untuk
memili+ data yang disimpan pada
lokasi memori$ dimana .anyaknya
lokasi pada tiap .lok memori adala+
%
n$
$ jika n I "- maka jumla+ lokasi
memori yang mungkin adala+ %
"-
I
"-%? .it2
Setiap .it data tersimpan dalam
memori dalam .entuk .iner - atau "2
)ika .anyaknya lokasi dikalikan
dengan jumla+ .anyaknya .it dalam
tiap lokasi$ untuk "- alamat .it maka
akan memperole+ kapasistas memori
"-%?&# .it2
"$)$&$"$ Ran%om A//e'' Memor3 0RAM1
RA* adala+ memori yang dapat
diakses secara Acak2 ,ama ini
se.enarnya se.enarnya kurang
tepat$ karena ke.anyakan memori
komputer dapat diproses secara
akses acak2 RA* menjadi memori
akti5 didalam sistem komputer$
dimana AP dapat dengan muda+
menulis data pada memori jenis ini2
Data pada memori RA* muda+
+ilang$ jika aliran listriknya terputus2
7n5ormasi apapun yang disimpan
didalam RA* +arus dita+an atau
+arus ditulis kem.ali setiap .e.erapa
waktu tertentu$ walaupun ada RA*
,onvolatile k+usus yang
mengintegrasikan .attery .ackup
pada sistem2
RA* dapat dikategorikan
menjadi dua yaitu: RA* statis yang
sering dikenal se.agai SRA* dan
RA* dinamik yang sering dikenal
se.agai DRA*2 RA* statis
menggunakan ger.ang logika yang
.erpasangan untuk menjaga
masing6masing .it data2 SRA*
2008 | Direktorat Pembinaan SMK
4
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
mempunyai keuntungan mempunyai
proses yang le.i+ cepat dan muda+
digunakan$ memerlukan rangkaian
pendukung eksternal yang sedikit$
dan dengan konsumsi daya yang
relati5 renda+2 Kelema+an SRA*
adala+ pada kapasitas memori
SRA* sangat kecil di.andingkan
DRA*$ serta teknologinya jau+ le.i+
ma+al2
Dengan kapasitas SRA* yang
renda+$ memerlukan le.i+ .anyak
c+ip untuk digunakan pada
penerapan yang sama2 Pada
rancangan PA modern penggunaan
SRA* +anya pada mesin yang
mem.utu+kan kinerja yang sangat
cepat seperti pada Aac+e *emory
Prosesor2
DRA* menggunakan kapasitor
se.agai komponen utamanya untuk
memperta+ankan data tiap6tiap .it2
Deretan kapasitor akan menjaga data
+anya dalam waktu yang sangat
pendek$ selanjutnya data terse.ut
akan +ilang sesuai dengan si5at
kapasitor2
DRA* memerlukan penyegaran
.erlanjut$ tiap6tiap penyegaran
terse.ut sedikitnya seperseri.u detik2
Penyegaran ini dilakukan secara
terus6menerus2 Penyegaran terse.ut
memerlukan komponen pendukung
tam.a+an yaitu komponen eksternal2
DRA* mempunyai kele.i+an yaitu
dapat mempuyai kapasitas yang
tinggi2
"$)$&$&$ Rea% Onl3 Memor3 0ROM1
Read 8nly *emory 3R8*4
adala+ memori yang +anya dapat
di.aca saja2 R8* .ersi5at ,onvolatile
memory$ karena memori ini dapat
memperta+ankan muatannya2 R8*
.iasanya le.i+ lam.at di.anding
RA*$ dan sangat le.i+ lam.at
di.anding RA* statis2
<ungsi R8* yang utama di
dalam suatu sistem adala+ menjaga
kode atau data yang diperlukan$
seperti untuk inisialisasi pada saat
start2 Perangkat lunak terse.ut
.iasanya dikenal se.agai 5irmware2
<irmware .erisi perangkat lunak
inisialisasi komputer dan penempatan
sarana 7nputC8utput 37C84 ke dalam
suatu status yang dapat dikenal2
Standard R8* di.uat ole+ suatu
deretan diode yang sangat .anyak2
Ketika datanya kosong$ semua data
R8* dalam kondisi .erlogika "$ ini
artinya data R8* pada # .it adala+
-<<92 Ketika mengisikan data
kedalam R8* sering dikenal dengan
.urning R8*2 Pengisian data ini
dilakukan dengan mengu.a+ data
yang .erada dalam R8* yang
semuanya .erupa data " dengan
menciptakan data nol pada
penempatan .it2 Suatu piranti yang
digunakan untuk meminda+kan data
dise.ut R8* downloader atau sering
juga dise.ut dengan R8*
Programmer2
R8* .iasanya dise.ut juga
dengan ne !ime Programmable
38TP4$ karena sesuai namanya
R8* yang +anya .isa di.aca saja2
Pada 7ndustri komputer R8*
.iasanya digunakan se.agai
firmware2 *ask Programma.le R8*
juga merupakan R8* yang +anya
sekali diprogram$ tetapi tidak sama
dengan 8TP$ karena *ask
Programma.le R8* diprogram ole+
industri pem.uatnya se.elum
dipasarkan2 Sedangkan 8TP
.iasanya diprogram ole+ pengguna
sesuai dengan keinginan dan setela+
"5
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
diprogram tidak .isa diprogram ulang2
"$)$&$)$ Era'able Rea% Onl3 Memor3 0EPROM1
8TP R8* mempunyai si5at
+anya diprogram sekali$ dan +al ini
menye.a.kan pem.orosan karena
jika data tela+ dimasukan dalam 8TP
R8* dan terdapat kesala+an tidak
.isa di+apus lagi$ dan +arus ganti
dengan yang .aru serta yang lama
+arus di.uang2 9al ini jelas
merupakan kelema+an dari R8*
terse.ut2 Dengan demikian perlu
adanya R8* yang .aru yang .isa
diprogram ulang$ jika data yang
dimasukan dalam R8* terdapat
kesala+an2
R8* yang muncul setela+ 8TP
R8* adala+ jenis R8* yang
Erasa.le Read 8nly *emory yang
sering dise.ut dengan EPR8*2 R8*
ini sangat cocok untuk
pengem.angan sistem2 Aara
meng+apus data yang .erada dalam
EPR8* adala+ dengan mem.erikan
ca+aya ultraungu melalui jendela
kecil yang terdapat pada c+ip dengan
waktu tertentu2 Setela+ .erapa saat
data yang .erada dalam c+ip
terse.ut akan ter+apus dan menjadi
data .erlogika tinggi semua2
Setela+ data yang .erada pada
EPR8* ter+apus memungkinkan
untuk dapat memprogram kem.ali2
EPR8* .anyak digunakan
dalam pengem.angan sistem karena
kepraktisanya serta le.i+ +emat
di.andingkan dengan 8TP R8*2
!iasanya 8TP R8* dan EPR8*
mempunyai kapasitas yang sangat
kecil di.andingkan dengan kapasitas
memori yang ada sekarang ini2
Kapasitas ini .iasanya +anya
.e.erapa kilo.yte saja$ tetapi
walaupun .egitu memori ini tetap
digunakan pada .er.agai peralatan
tertentu$ +al ini dikarenakan .er.agai
pertim.angan yang tidak mungkin
digantikan ole+ memori jenis lain2
Kelema+an jenis memori
EPR8* ini adala+ .a+wa c+ip +arus
dipinda+kan dari rangkaian ketika
akan melakukan peng+apusan data
yang ada didalamnya2 Selain itu
dalam melakukan +apus$
memerlukan waktu .e.erapa menit2
Dalam melakukan penulisan program
ke dalam c+ip juga +arus
meminda+kannya ke memori
EPR8* programer2 9al terse.ut
jelas sangat menyulitkan dan
memakan waktu$ se+ingga dengan
munculnya teknologi memori
sekarang ini$ jenis EPR8* mulai
ditinggalkan dan jarang digunakan2
"$)$&$*$ Ele/tri/all3 Era'able ROM 0EEROM1
EER8* adala+ memori yang
dapat di+apusCtulis secara elektris$
atau Electrically Erasa.le
Programma.le Read 8nly *emory
dan sering dikenal dengan se.utan
se.agai EEPR8*2 EEPR8* dapat
di+apus dan ditulis ulang dengan
tidak perlu dilepas dari rangkaiannya$
se+ingga menjadi sangat praktis dan
e55isien2
Pemrograman dan peng+apusan
data pada EEPR8* dapat dilakukan
dengan cepat di.andingkan dengan
memori R8* se.elumnya2 9al inila+
yang mem.uat alasan mengapa
EEPR8* .erkem.ang pesat2
2008 | Direktorat Pembinaan SMK
""
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Kapasitas memori EEPR8*
.iasanya +anya .e.erapa kilo.yte
saja2 *emori ini tidak cocok se.agai
5irmware$ .iasanya memori ini
digunakan untuk menyimpan
in5ormasi atau data sistem$ se+ingga
ketika listrik terputus$ datanya tidak
akan +ilang2
"$)$&$+$ Memori la'h
<las+ merupakan teknologi R8*
yang ter.aru$ dan sekarang ini paling
.anyak digunakan2 <las+ *emori
merupakan EER8* yang dapat
ditulis dan +apus ulang .erkali6kali2
<las+ memori mempunyai kapasitas
yang sangat .esar diatas R8*
standard2
<las+ A+ip ini sering juga dikenal
se.agai 5las+ R8* atau <las+ RA*2
Karena R8* terse.ut tidak seperti
standard R8* atau standard RA*
se.elumnya$ maka +al terse.ut dapat
juga dise.ut dengan 5las+ saja untuk
meng+indari kekacauan penye.utan
antara RA* dan R8* se.elumnya2
<las+ memori secara umum
diatur menjadi .e.erapa sektor
memori$ dan +al ini akan
menguntungkan$ karena pada tiap6
tiap sektor memungkinkan di+apus
dan ditulis ulang tanpa
mempengaru+i isi sektor lain2
9al yang k+usus pada 5las+
memori adala+ se.elum ditulisi$
sektor akan di+apus terle.i+ da+ulu$
se+ingga +al terse.ut tidak akan
terjadi overwrite seperti pada RA*2
Ada .e.erapa per.edaan6
per.edaan teknologi 5las+ terutama
pada peng+apusan dan penulisan
yang di.utu+kan ole+ piranti terse.ut2
"$)$)$ !n(ut6Out(ut
Dalam se.ua+ komputer$
prosesor dan memori .er+u.ungan
dengan .er.agai piranti luar yang
di+u.ungkannya2 Karena .er.agai
piranti terse.ut merupakan suatu
yang ditam.a+kan dengan prosesor$
maka piranti terse.ut sering dikenal
se.agai piranti perip+eral2 Piranti
terse.ut melakukan komunikasi
dengan prosesor yang diatur
melalui protocol tertentu2
Selanjutnya$ .er.agai piranti terse.ut
memerlukan pengaturan yang dalam
+al ini dilakukan ole+ sistem operasi2
Sesuai dengan ara+
penyalurannya$ dalam komputer
dikenal se.agai piranti 7nput
3masukan4$ piranti output 3keluaran4$
dan piranti input output 3masukan
keluaran42 Diantara .er.agai jenis
piranti terse.ut terdapat piranti
perekaman in5ormasi .er.entuk disk
atau disket2 Piranti terse.ut sering
dikenal dengan p+eriperal2 !iasanya
perip+eral di.uat ole+ .er.agai
perusa+aan untuk .er.agai
kegunaan2
Pada piranti tertentu$ .agian
sistem pengelolaan piranti itu di.uat
juga ole+ perusa+aan pem.uat
piranti .ersangkutan2 Tentunya
pem.uatan .agian sistem operasi
pengelolaan piranti itu tela+
disesuaikan dengan sistem operasi
yang pada umumnya ada di dalam
sistem komputer2
!agian sistem operasi untuk
pengelolaan piranti perip+eral itu
secara k+usus$ diatur ole+
pengendali piranti secara umum$
"&
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
diatur ole+ piranti lunak pengatur
piranti 3driver42
Ara+ komunikasi masukan
keluaran .ersangkutan dengan
alamat2 *ereka menunjukan dari
alamat mana ke alamat mana$
masukkan dan keluaran itu
mengara+2 *asuk ke suatu alamat
dapat .erarti keluar dari alamat
yang lain$ dan demikian pula
se.aliknya2
Dalam +al ini prosesor dijadikan
se.agai alamat acuan untuk masuk
atau keluar2 *asukan .erarti masuk
menuju prosesor atau menuju piranti
yang sedang dikelola ole+ prosesor2
Keluaran artinya keluar dari prosesor
atau dari piranti yang sedang dikelola
ole+ prosesor2 Dengan demikian$
dapat dinamakan se.agai suatu
piranti masukan manakala piranti itu
memasukan in5ormasi ke prosesor
atau memori kerja2 Aara serupa$
dapat dinamakan se.agai piranti
keluaran manakala piranti itu
menerima in5ormasi dari prosesor
atau memori kerja2
Selain ta+u dimana saja letak
perip+eral$ prosesor juga +arus dapat
mengendalikan piranti perip+eral itu2
Pengendalian itu terdiri atas dua
.agian2 !agian pertama adala+
pengaturan perangkat keras yang
.erupa penggerak piranti 3device
controller4 serta .agian kedua adala+
pengaturan perangkat lunak .erupa
protocol trans5er data 3data trans5er
protocol42
Protocol trans5er data dikenal
ada lima macam protocol data2
Pertama adala+ protocol trans5er
data pengendali$ kedua adala+
protocol trans5er data serta
pengendali dengan interupsi$ ketiga
adala+ protocol trans5er data dengan
akses memori langsung $ keempat
adala+ protocol trans5er data dengan
penggerak piranti$ serta kelima
adala+ protocol trans5er data .e.as
piranti2
Kerjasama antara penggerak
piranti dengan protocol trans5er data
memungkinkan prosesor
mengendalikan piranti perip+eral2
!iasanya$ pengendali piranti tela+
disiapkan ole+ perusa+aan pem.uat
piranti perip+eral serta disesuaikan
dengan sistem komputer dimana
piranti perip+eral itu dipasang2
Adakalanya$ .ersama6sama dengan
piranti peng+u.ung lainnya$
pengendali piranti terpasang pada
kartu antar muka 3inter5ace card42
Dengan memasang kartu antar muka
ke sistem komputer$ maka tela+
dapat memasang juga pengendali
piranti yang siap diperinta+ ole+
pengendali aplikasi atau ole+
pemakai komputer2
!iasanya piranti perip+eral
terdiri atas .agian mekanik dan
.agian elektronika2 Kalau .agian
mekanik adala+ piranti perip+eral itu
sendiri$ maka .agian elektronika
yang mengatur kerja piranti mekanik
itu$ atau .iasanya dinamakan
penggerak piranti 3device controller4
atau adapter2 Dengan demikian$
pada sejumla+ piranti yang memiliki
penggerak piranti terse.ut .er.entuk
rangkaian elektronika2 !a+kan
dalam .anyak +al$ rangkaian
elektronika itu disusun dalam suatu
papan rangkaian tercetak 3printed
circuit42 Dengan adanya rangkaian
ini$ maka sistem operasi selalu
.erurusan dengan penggerak piranti
serta tidak .erurusan langsung
dengan pirantinya2
Sala+ satu se.a. mengapa
sistem operasi selalu .er+u.ungan
dengan penggerak piranti dan tidak
dengan piranti itu sendiri$ adala+
karena pada umumnya$ piranti
2008 | Direktorat Pembinaan SMK
")
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
perangkat keras merupakan piranti
yang cukup kasar2 Penggunaan
piranti memerlukan kegiatan yang
cukup rumit se+ingga dengan
mem.e.ankan kerumitan iti pada
penggerak piranti$ sistem operasi
tidak perlu terjun ke dalam kerumitan
itu2
Setiap penggerak piranti memiliki
register untuk mencatat data serta
melalui .us$ penggerak piranti
.er+u.ungan dengan prosesor2
Dengan register terse.ut$ penggerak
piranti memonitor status piranti$
mengendalikan pengendali piranti
pada motor$ melaksanakan
pemeriksaan data serta mengeta+ui
5ormat data dari piranti2 Selanjutnya$
penggerak diperlukan untuk
mengu.a+ perinta+ prosesor ke
dalam pulsa listrik yang sepadan
untuk diterapkan kepiranti2
Se.aliknya$ penggerak piranti juga
mengu.a+ in5ormasi tentang status
piranti ke dalam .entuk yang dapat
dipa+ami ole+ prosesor2
Dengan demikian$ penggerak
piranti menggerakkan piranti secara
elektronika2 Pada piranti perekam
.er.entuk disk atau disket$
penggerak piranti mengatur
pemutaran disk atau disket itu melalui
motor listrik serta mengatur pula
gerakan +ead tulis .aca 3read write
+ead4 pada disk atau disket itu2 Pada
pencetak$ penggerak piranti
melaksanakan gerakan +ead cetak
sesuai dengan ara+ yang ditentukan2
Dan demikian seterusnya$ penggerak
piranti menggerakan piranti
perip+eral yang .ersangkutan
dengan penggerak piranti itu2
Setela+ piranti itu digerakan ole+
penggerak piranti$ maka kerja piranti
itu selanjutnya perlu diatur melalui
suatu pengendali atau su.rutin2
Sala+ satu cara pengaturan adala+
dengan melalui se.ua+ protocol
trans5er data pengendali2 Protocol ini
dikenal juga se.agai programmed
data trans5er protocol2 Sesuai dengan
namanya$ pada protokol ini$ trans5er
data diatur ole+ pengendali2 Pada
saat data akan ditrans5er dari
prosesor kepiranti atau dari piranti ke
prosesor$ pengendali mem.uat
se+ingga semua permo+onan
interupsi dia.aikan2 Setela+ itu$
trans5er data dilaksanakan2
Dengan demikian$ pada protocol
terse.ut$ tidak dapat mengenal
interupsi melalui permintaan2 Sekali
trans5er data dilaksanakan$ maka
pelaksanaan akan .erlangsung
sampai selesai$ kecuali tentunya
kalau muncul interupsi dan jenis
interupsi yang tak tera.aikan2
Protokol trans5er data pengendali ini
sering meman5aatkan pustaka
3li.rary4 dan spool 3simultameous
perip+eral operation on line42 Pada
pustaka$ dapat dilakukan
pemanggilan rutin masukan keluaran
tertentu dan .a+kan dapat mengatur
5ormat masukan keluaran itu2 Pada
spool$ dapat dilakukan pengaturan
piranti yang tak dapat dipakai
.ersama yakni piranti seperti
pencetak atau panel kunci ketik2
Protokol trans5er data
pengendali dengan interupsi2
Protokol ini juga dikenal dengan
nama programmed interrupt data
trans5er protocol2 Sesuai dengan
namanya$ protocol ini masi+
mengenal interupsi melalui
permintaan2 Dengan demikian$ setiap
terjadi interupsi$ maka interupsi itu
dilayani2 Pada saat itu$ trans5er data
terputus$ untuk kemudian
dilanjutkan lagi setela+ interupsi
selesai2 Selama tiada interupsi$ maka
trans5er data dapat terus
"*
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
.erlangsung$ sampai pada saat
trans5er data itu selesai2
Dengan menerima interupsi$
maka proses yang tadinya suda+
ter+enti$ kini memiliki peluang
melanjutkan kem.ali2 cara
melanjutkan proses yang suda+
ter+enti itu adala+ melalui interupsi2
Protokol trans5er data dengan akses
memori langsung 3direct memory
access4 merupakan suatu proses
yang cukup rumit2 *ula6mula
penggerak piranti mem.aca data di
dalam .lok secara .erurutan2 Setela+
itu$ penggerak piranti perlu
memeriksa apaka+ data yang di.aca
itu tidak mengandung kekeliruan2 )ika
tidak terdapat kekeliruan$ maka
prosesor akan mem.aca semua data
dari atau ke memori kerja melalui
penampung 3.u55er42 Karena prosesor
+arus terli+at dalam pem.acaan
data$ maka selama pem.acaan dan
penulisan itu .erlangsung$ prosesor
tidak dapat mengerjakan pekerjaan
lain2 ntuk mem.e.askan prosesor
dari akti5itas ini$ maka diciptakan
penggerak yang dapat mendukung
protocol trans5er data akses memori
langsung 3direct memory access42
Pada protokol ini$ prosesor
diinterupsi pada saat trans5er data
dimulai2 Setela+ itu$ prosesor tidak
lagi ikut mencampuri kegiatan
trans5er data itu2 Kemudian$ pada
saat trans5er data selesai$ .arula+
prosesor diinterupsi sekali lagi2
Dengan demikian$ di antara saat awal
dan saat ak+ir trans5er data itu$
prosesor dapat melaksanakan
pekerjaan lain2
Karena protocol trans5er data
melalui akses memori ini
mem.e.askan prosesor untuk
melaksanakan pekerjaan lain$ maka
protocol ini le.i+ unggul dari kedua
protocol lainnya2
Protokol trans5er data dengan
penggerak piranti2 Penggerak piranti
juga dikenal se.agai devide driver2
Penggerak piranti ini .er.entuk
piranti lunak yang meng+u.ungkan
prosesor dengan alat$ tentunya
melalui penggerak alat2 !a+kan
register pada penggerak alat
diman5aatkan ole+ penggerak alat
untuk menyalurkan in5ormasi dari
prosesor kealat dan demikian pula
se.aliknya2
Dalam keadaan tertentu$ satu
alat dapat .er+u.ungan dengan
.e.erapa penggerak piranti sejenis2
Satu piranti disk atau disket$ misalnya
dapat .er+u.ungan dengan satu atau
le.i+ penggerak piranti disk atau
disket2 Pada saat kegiatan$
penggerakan piranti .er.entuk
proses yang mengendalikan kerja
piranti perip+eral2 Di antaranya$
proses terse.ut menerima
permintaan piranti masukan keluaran
3ada kalanya .er.entuk suatu
antrian4$ memulai kerja masukan
keluaran$ menata kekeliruan umum
pada penyaluran in5ormasi$
melaksanakan interupsi$ serta
mengirim .erita selesai kem.ali ke
proses2
Ada yang mengatakan .a+wa
tugas utama proses pada penggerak
piranti mencakup mencega+
permintaan dari satu proses$
melaksanakan kerja tertentu pada
prose situ$ serta mem.erita+ukan
proses yang meminta itu tentang
+asil kerja yang tela+ terlaksana2
Proses yang meminta itu adala+
proses umum yang tidak tergantung
kepada piranti 3tidak k+as piranti
tertentu42 Dengan demikian$
penggerak piranti menerima perinta+
umum serta melaksnakan perinta+ iti
pada piranti perip+eral2
2008 | Direktorat Pembinaan SMK
"+
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Rincian dari proses itu sendiri
.er.eda dari piranti menuju alat$
misal$ penggerak disk 3disk driver4
merupakan .agian satu6satunya
pada sistem operasi yang
mengeta+ui .erapa register yang
dimiliki ole+ penggerak disk serta apa
gunanya register itu2 Pelaksana disk
itu adala+ satu6satunya yang
mengeta+ui seluk .eluk sector$ lintas
3track4$ silinder$ +ulu$ gerak tangkai
+ulu$ factor seling 3interleave4$ waktu
pengaturan +ulu$ serta segala
sesuatu yang dapat mem.uat disk itu
.ekerja secara .enar2
Penggerak piranti .ekerja sama
secara erat dengan penggerak
piranti2 Karena itu$ ada orang yang
menamakan kedua6duanya se.agai
penggerak piranti saja 3device
controller4 atau se.agai penggerak
piranti 3device driver4 saja2 Di sini$
mereka tetap kita pisa+kan yakni
se.agai penggerak piranti dan
se.agai penggerak piranti$
sedangkan secara .ersama6sama$
mereka kita namakan se.agai
pengendali piranti2
"$*$ Kerja Kom(uter
Komputer yang merupakan
mesin peng+itung sekarang ini mesin
terse.ut .anyak dipakai untuk
pemroses data2 <ungsinya sangat
seder+ana yaitu digunakan untuk
memproses data$ kemudian +asil
prosesnya diselesaikan secara
elektronis didalam Aentral
Processing nit 3AP4 dan
komponen lainnya yang menyusun
se.ua+ komputer personal2
Suatu sinyal yang dikirimkan dari
suatu pemancar 3transmitter4 ke
penerima 3receiver4 untuk
.erkomunikasi adala+ .erupa data2
Data6data yang .iasa dijumpai
se+ari6+ari memiliki .anyak .entuk$
antara lain: suara$ +uru5$ angka$ dan
karakter lain 3tulisan tangan atau
dicetak4$ 5oto$ gam.ar$ 5ilm dan lain
se.againya2 Suatu sistem yang dapat
memproses nilai yang kontinyu
.er.anding ter+adap waktu
dinamakan sistem analog2 Pada
sistem analog$ nilainya .iasa diwakili
ole+ tegangan$ arus dan kecepatan2
!erikut ini adala+ gam.ar gra5ik nilai
tegangan analog ter+adap waktu2
",
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer
Bahasa Pemrorgraman
;am.ar "2( ;ra5ik ,ilai Tegangan Analog Ter+adap /aktu
Sistem
yang memproses nilai menggunakan Analog to Digital
diskrit 3langka+ demi langka+4 Aonverter 3ADA42 ADA mengu.a+
dinamakan digital2 Pada sistem digital sinyal kontinyu menjadi sinyal diskrit
untuk menunjukkan suatu nilai dengan menyamplingnya tiap detik
digunakan sim.ol yang dinamakan 3tiap satuan waktu42 Per+atikan
digit2 Sinyal pada gam.ar diatas gam.ar di.awa+ ini2
dapat Hdidigitalkan1 dengan
;am.ar "2#2 Sinyal Diskrit Dengan Penyamplingan Tiap Detik
Komputer adala+
se.ua+ direpresentasikan ole+ sinyal listrik2
perangkat elektronik2 Data yang Sinyal yang digunakan .isa
dapat diola+ adala+ data yang dianalogikan dengan saklar listrik$
2008 | Direktorat Pembinaan SMK
"-
Bahasa Pemrograman
Dasar-dasar Pemrograman Komputer
yaitu tom.ol
o55 3mati4 atau on +idup$ maka komputer mem.aca
3+idup42 )ika saklar pada kondisi o55$
maka komputer mem.aca se.agai
se.agai angka "2 Per+atikan gam.ar
.erikut:
data -$ jika saklar dalam kondisi
;am.ar "2@2 Saklar Dalam Kondisi 9idup Dan *ati
Se.ua+
komputer terdiri dari Setiap angka - dan " .iasa
saklar6saklar yang .anyak jumla+nya dise.ut !it2 !it adala+ singkatan dari
saklar6saklar ini menggunakan Binary Digit2 Kata !inary diam.il dari
komponen elektronik .erupa nama Sistem !ilangan !iner 3!inary
transistor2 )umla+ transistor yang ,um.er Sistem42 Ta.el di.awa+
digunakan .isa sampai jutaan$ .erikut menunjukkan tentang .it:
se+ingga dapat memproses data dari
jutaan angka - dan "2
Ta.el "2" !ilangan !iner dengan .esar .it data
0 1
bit
1 1
bit 0110 4
bit 1001110
1
8
bit
Sistem
.ilangan .iner disusun Pengola+an data yang paling
dari angka6angka$ sama seperti sering digunakan saat ini adala+
sistem .ilangan desimal 3sistem pengola+ kata 3word processing422
.ilangan "-4 yang sering digunakan Ketika melakukan suatu pengola+an
saat ini2 Tetapi untuk desimal kata$ komputer .ekerja dengan
menggunakan angka - sampai @$ key.oard2 Ada "-" tom.ol yang
sistem .ilangan .iner +anya mewakili karakter alp+a.et A$ !$ A$
menggunakan angka - dan "2 dan seterusnya2 Selain itu juga akan
"2
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
ditemui karakter angka - sampai
dengan @$ dan karakter6karakter lain
yang diperlukan$ antara lain: 7 $ # 8 0 1 9
: ; < = > ? @ A $
Seluru+ karakter yang ada pada
key.oard +arus didigitalkan2
Karakter6karakter terse.ut diwakili
ole+ angka6angka - dan "2 !it yang
digunakan adala+ # .it .iner2 # .it
.iner dinamakan !yte2
Pada sistem .ilangan .iner$
.anyaknya kom.inasi di+itung
dengan %
n
J m$ dimana n adala+
jumla+ .it$ m adala+ kom.inasi yang
dapat diwakili$ se+ingga pada # .it
.iner$ dapat mewakili %
#
I%'>
kom.inasi maksimal2
Ketika mengetik kata Hdigital1
sim.ol yang digunakan adala+ >
+uru5$ saat komputer mengola+nya$ >
+uru5 terse.ut didigitalkan menjadi >
.ytes$ yang kemudian disimpan pada
RA* komputer saat mengetik$ dan
kemudian disimpan pada +arddisk$
jika disimpan2 Ta.el seperti di.awa+
menunjukkan per.andingan ukuran
unit data2
Ta.el "2%2 Per.andingan kuran nit Data
UNIT DEFINISI BYTE BI
T
CONTOH
APLIKASI Bit (b) Binary Digit, 0
dan 1
1 1 On/Of, buka/tutup
Byte (B) 8 bit 1 8 Kode ASCII
Kiobyte
(KB)
1!0"# byte 1000 8000
$kuran e%ai bia&a '
" KB
10 (aa%an
doku%en' 10
)egabyt
e
()B)
1!0"# kiobyte
1!0#8!*+, byte
1
-uta
8
-uta
.oppy di&k& ' 1,##
)B
CD/O) ' ,*0 )B 0igabyte
(0B)
1!0"# %egabyte
1!0+1!+#1!8"#
byte
1
%iyar
8
%iyar
2ard dri3e ' #0 0B
4errabyte
(4B)
1!0"# gigabyte 1
triyun
8
triyun
Data yang dapat
dikiri%
pada 5ber optik
&ea%a 1 detik!
"$+$ Si'tem Bilangan
Sistem .ilangan yang paling
umum digunakan adala+ sistem
.ilangan desimal$ .iner$ oktal$ dan
+eksadesimal2 Sistem .ilangan
desimal merupakan sistem .ilangan
yang paling .anyak digunakan ole+
manusia karena .er.agai
kemuda+annya untuk dipergunakan
se+ari6+ari2 Sistem .ilangan .iner
merupakan sistem .ilangan yang
paling .anyak digunakan dalam
sistem digital karena sistem .ilangan
ini secara langsung dapat mewakili
logika yang ada$ sedangkan sistem
.ilangan oktal dan +eksadesimal
.iasanya .anyak digunakan dalam
sistem digital untuk memperpendek
penyajian suatu .ilangan yang
tadinya disajikan dalam sistem
.ilangan .iner$ se+ingga le.i+ muda+
dipa+ami atau di+a5alkan2
2008 | Direktorat Pembinaan SMK
"4
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Secara umum .ilangan dapat
di.agi menjadi .e.erapa kategori2
Ditinjau dari segi koma desimal
3point4$ .ilangan dapat di.agi menjadi
.ilangan .ulat 3integer num.erC5i&ed6
point num.er4 dan .ilangan peca+an
3floating-point number42 Dili+at dari
dari segi tanda$ .ilangan dapat di.agi
menjadi .ilangan tak .ertanda
3unsigned num.er4 dan .ilangan
.ertanda 3signed num.er42
"$+$"$ Bilangan De'imal
Sistem .ilangan desimal disusun
ole+ "- angka atau lam.ang2 Dengan
menggunakan lam.ang6lam.ang
terse.ut se.agai digit pada se.ua+
.ilangan$ maka akan dapat
mengekspresikan suatu kuantitas2
Kesepulu+ lam.ang terse.ut adala+:
D ' 6 0, 1, ", 1, #, *, ,,
+, 8, 7 8
Sistem .ilangan desimal dise.ut
juga sistem .ilangan .asis "- atau
radiks "- karena mempunyai "- digit2
Sistem .ilangan ini .ersi5at alamia+
karena pada kenyataannya manusia
mempunyai "- jari2 Kata digit itu
sendiri diturunkan dari kata .a+asa
:atin finger2
;am.ar "2"-2 !ilangan desimal
Airi .ilangan yang menggunakan
sistem .ilangan desimal adala+
adanya tam.a+an su.skrip des atau
"- atau tam.a+an D di ak+ir suatu
.ilangan2
1*+
de&
' 1*+
10
'
1*+D!
,amun karena .ilangan desimal
suda+ menjadi .ilangan yang
digunakan se+ari6+ari$ su.skrip
terse.ut .iasanya di+ilangkan2
Sistem .ilangan desimal merupakan
se.ua+ sistem nilai posisi2
Biangan
1*+!
Pada .ilangan terse.ut$ digit =
.erarti = ratusan$ ' .erarti ' pulu+an$
dan ( .erarti ( satuan2 Se+ingga$ =
mempunyai arti paling .esar di antara
tiga digit yang ada2 Digit ini .ertindak
se.agai digit paling .erarti 3*ost
Signi5icant Digit$ *SD42 Sedangkan (
mempunyai arti paling kecil di antara
tiga digit yang ada dan dise.ut digit
paling tidak .erarti 3:east Signi5icant
Digit$ :SD42
Biangan
1*,"+
!ilangan ini mempunyai arti =
pulu+an ditam.a+ ' satuan ditam.a+
% per sepulu+an2 Koma desimal
memisa+kan pangkat positi5 dari "-
dengan pangkat negati5nya2
&5
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
1*," ' 1 9 10
1
: * 9 10
0
:
" 9 10
;1
Secara umum dapat dikatakan$ nilai
suatu .ilangan desimal merupakan
penjumla+an dari perkalian setiap
digit dengan nilai posisinya2
"$+$&$ Bilangan Biner
Sistem sistem digital +anya
mengenal dua logika$ yaitu - dan "2
:ogika - .iasanya mewakili kondisi
mati dan logika " mewakili kondisi
+idup2 Pada sistem .ilangan .iner$
+anya dikenal dua lam.ang$ yaitu -
dan "2 Karena itu$ sistem .ilangan
.iner paling sering digunakan untuk
merepresentasikan kuantitas dan
mewakili keadaan dalam sistem
digital maupun sistem komputer2
Digit .ilangan .iner dise.ut
.inary digit atau .it2 Empat .it
dinamakan ni..le dan delapan .it
dinamakan .yte2 Sejumla+ .it yang
dapat diproses komputer untuk
mewakili suatu karakter 3dapat
.erupa +uru5$ angka atau lam.ang
k+usus4 dinamakan word2 Se.ua+
komputer dapat memproses data
satu word yang terdiri dari ? sampai
>? .it2 Se.agai conto+$ se.ua+
komputer yang menggunakan
mikroprosesor =% .it dapat
menerima$ memproses$ menyimpan
dan mengirim data atau instruksi
dalam 5ormat =% .it2
Pada komputer yang digunakan
untuk memproses karakter$ maka
karakter 3yang meliputi +uru5$ angka$
tanda .aca dan karakter kontrol4
terse.ut +arus di5ormat dalam .entuk
kode al5anumerik2 <ormat kode ASA77
3American Standard Aode 5or
7n5ormation 7nterc+ange4
menggunakan 5ormat data tuju+ .it
untuk mewakili semua karakter yang
ada termasuk tanda .aca dan
penanda kontrol2 Dengan
menggunakan 5ormat tuju+ ( .it
terse.ut$ maka ASA77 dapat
menanpung %
(
I "%# data2 Sistem
.ilangan .iner merupakan sistem
.ilangan .asis dua2 Pada sistem
.ilangan ini +anya dikenal dua
lam.ang$ yaitu:
B ' 6 0,
1 8
Airi suatu .ilangan yang
menggunakan sistem .ilangan .iner
adala+ adanya tam.a+an su.skrip
.in atau % atau tam.a+an +uru5 ! di
ak+ir suatu .ilangan2
1010011
bin
' 1010011
"
'
1010011B!
!it paling kiri dari suatu .ilangan
.iner .ertindak se.agai .it paling
.erarti 3*ost Signi5icant !it$ *S!4$
sedangkan .it paling kanan .ertindak
se.agai .it paling tidak .erarti 3:east
Signi5icant !it$ :S!42
"$+$)$ Bilangan Oktal
Sistem .ilangan oktal
merupakan sistem .ilangan .asis
delapan2 Pada sistem .ilangan ini
terdapat delapan lam.ang$ yaitu:
O ' 6 0, 1, ", 1, #, *, ,, + 8
2008 | Direktorat Pembinaan SMK
&"
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Airi suatu .ilangan menggunakan
sistem .ilangan oktal adala+ adanya
tam.a+an su.skrip okt atau # atau
tam.a+an +uru5 8 di ak+ir suatu
.ilangan2
11,1
okt
' 11,1
8
' 11,1O
"$+$*$ Bilangan Hek'a%e'imal
Sistem .ilangan +eksadesimal
merupakan sistem .ilangan .asis
enam.elas2 *eskipun operasi pada
sistem digital dan komputer secara
5isik dikerjakan secara .iner$ namun
untuk merepresentasikan data
menggunakan 5ormat .ilangan
+eksadesimal karena 5ormat ini le.i+
praktis$ muda+ di.aca dan
mempunyai kemungkinan tim.ul
kesala+an le.i+ kecil2
Penerapan 5ormat .ilangan
+eksadesimal .anyak digunakan
pada penyajian lokasi memori$
penyajian isi memori$ kode instruksi
dan kode yang merepresentasikan
al5anumerik dan karakter
nonnumerik2 Pada sistem .ilangan ini
terdapat enam .elas lam.ang$ yaitu:
2 ' 6 0,1, ", 1, #, *, ,, +, 8, 7, A, B,
C, D, <, . 8
Airi suatu .ilangan menggunakan
sistem .ilangan +eksadesimal adala+
adanya tam.a+an su.skrip +eks atau
"> atau tam.a+an +uru5 9 di ak+ir
suatu .ilangan2
"+1
(ek&
' "+1
1,
'
"+12!
"$+$+$ KonBer'i Bilangan
Sistem .ilangan dapat dilakukan
konversi menjadi .ilangan yang
diinginkan2 Tujuan konversi ini adala+
untuk menjem.atani antara manusia
dan mesin dalam +al ini komputer
supaya dapat .erkomunikasi2
*anusia le.i+ muda+ mema+ami
.ilangan decimal karena memang
.ilangan decimal merupakan
.ilangan yang digunakan manusia
se+ari6+ari$ sedangkan komputer
.ekerja dengan .ilangan .iner2
Komputer yang .ekerja dengan
.ilangan .iner tentunya +arus .isa
disingkat .aik penulisan maupun
pem.acaannya dala+ +al ini
menggunakan .ilangan +e&adecimal
atau oktal2 Karena komputer +anya
pa+am ter+adap sat .ilangan yaitu
.iner maka manusia dituntut untuk
.isa mema+ami .agaimana konversi
antara .ilangan6.ilangan terse.ut2
Konversi .ilangan .iner ke desimal
dilakukan dengan menjumla+kan
+asil perkalian semua .it .iner
dengan .eratnya2
&&
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
Konversi .ilangan desimal .ulat
ke .iner dilakukan dengan mem.agi
.ilangan desimal dengan % secara
.erulang6ulang se+ingga akan dapat
diketa+ui sisa tiap operasi
pem.agian2 Sisa yang di+asilkan
setiap pem.agian merupakan .it
yang didapat2 Dengan cara
mengurutkan .it6.it terse.ut dari
.awa+ keatas maka dapat diketa+ui
+asil konversi yang tela+ dilakukan2
cara memisa+kan antara .agian .ulat
dan .agian peca+annya2 Konversi
.agian .ulat dapat dilakukan seperti
pada gam.ar diatas2 Sedangkan
konversi .agian peca+an dilakukan
dengan mengalikan peca+an terse.ut
dengan %$ kemudian .agian peca+an
dari +asil perkalian terse.ut dikalikan
dengan %2 :angka+ terse.ut diulang6
ulang se+ingga mendapatkan +asil
ak+ir -2 !agian .ulat dari setiap +asil
perkalian merupakan .it yang
didapat2
Se.ua+ .ilangan desimal real
dapat pula dikonversi ke .ilangan
real .iner2 Konversi dilakukan dengan
2008 | Direktorat Pembinaan SMK
&)
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Konversi .ilangan oktal ke
desimal dilakukan dengan
menjumla+kan +asil perkalian semua
digit oktal dengan .eratnya2
Konversi .ilangan .ulat desimal
ke oktal dilakukan dengan mem.agi
secara .erulang6ulang suatu .ilangan
desimal dengan #2 Sisa setiap
pem.agian merupakan digit oktal
yang didapat2
Konversi .ilangan desimal peca+an
ke oktal dilakukan dengan cara
+ampir sama dengan konversi
.ilangan desimal peca+an ke .iner$
yaitu dengan mengalikan suatu
.ilangan desimal peca+an dengan #2
!agian peca+an dari +asil perkalian
ini dikalikan dengan #2 :angka+ ini
diulang +ingga didapat +asil ak+ir -2
!agian .ulat dari setiap +asil
perkalian merupakan digit yang
didapat2
Konversi .ilangan oktal ke .iner
le.i+ muda+ di.andingkan dengan
konversi .ilangan oktal ke desimal2
Satu digit oktal dikonversi ke = .it
.iner2
Konversi .ilangan .iner ke oktal
le.i+ muda+ di.andingkan konversi
.ilangan desimal ke oktal2 ntuk
.agian .ulat$ kelompokkan setiap tiga
.it .iner dari paling kanan$ kemudian
konversikan setiap kelompok ke satu
digit oktal2 Dan untuk .agian
peca+an$ kelompokkan setiap tiga .it
.iner dari paling kiri$ kemudian
konversikan setiap kelompok ke satu
digit oktal2 Proses ini merupakan
ke.alikan dari proses konversi
.ilangan oktal ke .iner2
&*
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
Konversi .ilangan +eksadesimal
ke desimal dilakukan dengan
menjumla+kan +asil perkalian semua
digit +eksadesimal dengan .eratnya2
Konversi .ilangan desimal .ulat
ke +eksadesimal dilakukan dengan
mem.agi secara .erulang6ulang
suatu .ilangan desimal dengan ">2
Sisa setiap pem.agian merupakan
digit +eksa6desimal yang didapat2
Konversi .ilangan desimal
peca+an ke +eksadesimal dilakukan
dengan cara +ampir sama dengan
konversi .ilangan desimal peca+an
ke .iner$ yaitu dengan mengalikan
suatu .ilangan desimal peca+an
dengan ">2 !agian peca+an dari
+asil perkalian ini dikalikan dengan
">2 :angka+ ini diulang +ingga
didapat +asil ak+ir -2 !agian .ulat
dari setiap +asil perkalian merupakan
digit yang didapat2
Konversi .ilangan +eksadesimal
ke .iner le.i+ muda+ di.andingkan
konversi .ilangan +eksadesimal ke
desimal2 Satu digit +eksadesimal
dikonversi ke ? .it2
2008 | Direktorat Pembinaan SMK
&+
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
271
hex
=
1001110001
bi
Sehi!!" #e$"%i
1 =
0001
7 =
0111
2 =
0010
1001110001
bi
Konversi .ilangan .iner ke
+eksadesimal le.i+ muda+
di.andingkan konversi .ilangan
desimal ke +eksadesimal2 ntuk
.agian .ulat$ kelompokkan setiap
empat .it .iner dari paling kanan$
kemudian konversikan setiap
kelompok ke satu digit +eksadesimal2
Pada .agian .ilangan peca+an$
kelompokkan setiap empat .it .iner
dari paling kiri$ kemudian konversikan
setiap kelompok ke satu digit
+eksadesimal2 Proses ini merupakan
ke.alikan dari proses konversi
.ilangan +eksadesimal ke .iner2
1001110001
bi
=
271
hex
&i'" %i(e)"h #e$"%i
0001 = 1
0111 = 7
0010 = 2
271
hex
"$+$,$ Data Karakter
!e.erapa aplikasi menggunakan
data yang .ukan +anya .ilangan
tetapi juga +uru5 dari al5a.et dan
karakter k+usus lainnya2 Data
semacam ini dise.ut dengan data
al5anumerik dan mungkin dapat
ditunjukkan dengan kode numerik2
)ika .ilangan6.ilangan dimasukkan
dalam data$ maka .ilangan6.ilangan
terse.ut juga dapat ditunjukkan
dengan kode k+usus2
Set karakter al5anumerik secara
k+usus mencakup %> +uru5 al5a.et
3termasuk +uru5 .esar dan +uru5
kecil4$ angka dalam digit sepulu+
desimal$ dan sejumla+ sim.ol seperti
B$ I$ K$ L$ F$ dan M2 Dua kode al5a.et
yang paling umum dipakai adala+
ASA77 3American Standard Aode 5or
7n5ormation 7nterc+ange4 dan
E!AD7A 3E&tended !inary Aoded
Decimal 7nterc+ange Aode42 ASA77
merupakan kode (6.it dan E!AD7A
.erupa kode # .it2 )ika suatu
komputer menangani #6.it 3"6.yte4
kode le.i+ e5isien$ versi #6.it$ dise.ut
dengan ASA776# juga tela+
dikem.angkan2
Selain itu ada juga .e.erapa
kode spesial didalam penam.a+an
set karakter al5anumerik2 Kode
simpanan ini digunakan se.agai
signal komunikasi dalam aplikasi
dimana data trans5er terjadi antara
komputer yang di+u.ungkan melalui
.aris komunikasi2 *isalnya$ :< 3line
feed4 dan AR 3carriage return4
di+u.ungkan dengan printer$ !E:
&,
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
digunakan untuk mengakti5itaskan
.ellN AAK 3acknowledge4$ ,AK
3negative acknowledge4$ dan D:E
3data link escape4 .erupa signal yang
dapat diu.a+ dalam .aris
komunikasi2
8rang yang suda+ cukup lama
.erkecimpung di dunia komputer$
pasti perna+ .ekerja dengan Okode
ASA7702 Dan .agi yang .ekerja
dengan mesin6mesin main5rame 7!*$
pasti perna+ menjumpai Okode
E!AD7A02 Di luar ASA77 dan E!AD7A$
.esar kemungkinan anda paling tidak
perna+ mendengar istila+6istila+ lain
seperti .erikut ini: 7S86##'@6"$ AS6
%$ T<6#$ T<6">$ atau windows6
"%'%2 Kode6kode apaka+ ituG ASA77$
E!AD7A$ 7S86##'@6P$ AS6%$ T<6
P$ dan windows6& merupakan
se.agian dari kumpulan c+aracter set
3set karakter4 yang ada di dunia
komputer2
"$+$-$ Ko%e B.D
Se.elum ASA77 dan E!AD7A
.erkem.ang terle.i+ da+ulu
dikem.angkan !inary Aoded Decimal
3!AD42 *etode ini awalnya
digunakan pada komputer main5rame
7!*2 Pada grup ini karakter diwakili
ole+ >? 6 3 %
>
4 lam.ang2 Dengan kode
ini$ setiap +uru5Cangka di.erikan kode
yang terdiri dari enam .it$ dua untuk
Qone dan empat untuk angka2 9uru5
A sampai dengan 7 di.erikan tanda
"" pada tempat Qone2 Karena A
adala+ +uru5 pertama dalam
kelompok ini$ maka kodenya adala+:
---"$ ! se.agai +uru5 kedua dengan
kode: --"-$ A adala+ --"" dan
seterusnya2 Dengan perkataan lain$
Qone .it yang mempunyai 5ormasi ""
+arus juga disertakan pada kode
lengkap masing6masing pada grup
ini2
;rup al5a.etik kedua adala+ )
+ingga R$ ditetapkan kode awalnya
"-$ yang juga posisi masing6masing
+uru5 ditentukan ole+ angkanya
masing6masing2 9uru5 S +ingga R
di.entuk dengan menam.a+kan
angka .it --"- +ingga "--"
.erurutan pada kode -" dimana pada
grup ini +anya ada delapan +uru52
Angka6angka - +ingga sem.ilan
di.erikan kode -- di depannya diikuti
ole+ angka itu sendiri dalam sistim
.inary2 Angka - 3nol4 +arus
di.edakan dengan tanda kosong
3spasi4 guna mempermuda+ cara
penggunaan kode2
"$+$2$ Ko%e EB.D!.
"istim #$tended Binary %oded
Decimal &nterchange %ode 3E!AD7A4
merupakan set karakter yang
merupakan ciptaan dari 7!*2 Sala+
satu penye.a. 7!* menggunakan
set karakter di luar ASA77 se.agai
standar pada komputer ciptaan 7!*
adala+ karena E!AD7A le.i+ muda+
dikodekan pada punc+ card yang
pada ta+un "@>-6an masi+ jamak
digunakan2
Penggunaan E!AD7A pada
main5rame 7!* masi+ ter.awa
+ingga saat ini$ walaupun punc+ card
suda+ tidak digunakan lagi2 Seperti
+alnya ASA77$ E!AD7A juga terdiri
2008 | Direktorat Pembinaan SMK
&-
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
dari "%# karakter yang masing6
masing .erukuran (6.it2 !ila
menggunakan ukuran #6.it maka
karakternya menjadi %'> atau %
#
2
9ampir semua karakter pada ASA77
juga terdapat pada set karakter
E!AD7A2
"$+$4$ Ko%e AS.!!
ASA77 3Sistem American
Standard Aode 5or 7n5ormation
7nterc+ange1 dan E!AD7A
merupakan awal dari set karakter
lainnya2 ASA77 merupakan set
karakter yang paling umum
digunakan +ingga sekarang2 Set
karakter ASA77 terdiri dari "%# E 3%
(
4
.ua+ karakter yang masing6masing
memiliki le.ar (6.it atau ga.ungan
tuju+ angka - dan "$ dari -------
sampai dengan """""""2 *engapa
(6.itG Karena komputer pada
awalnya memiliki ukuran memori
yang sangat ter.atas$ dan "%#
karakter dianggap memadai untuk
menampung semua +uru5 :atin
dengan tanda .acanya$ dan
.e.erapa karakter kontrol2 ASA77
tela+ di.akukan ole+ A,S7
3American ,ational Standards
7nstitute4 menjadi standar A,S7 P=2?6
"@#>2
"$,$ Pemrograman Kom(uter
Komputer se.ua+ mesin yang data per jam .ekerja dan setela+
dirancang untuk mengikuti instruksi2 ditekan E,TER maka komputer
Program komputer merupakan akan memasukan data ke dalam
se.ua+ instruksi yang digunakan ole+ memory
komputer untuk memeca+kan '2 Komputer melakukan perkalian
masala+ atau tugas6tugas yang antara jumla+ jam dengan gaji
di.erikan padanya2 *isalnya jika perjam
menggunakan komputer untuk >2 Komputer menampilkan +asil
meng+itung pem.ayaran pada per+itungan gaji pegawai yang
seorang pegawai maka langka+6 +arus di.awa pulang2
langka+ yang dilakukan adala+ Sekumpulan instruksi6instruksi
se.agai .erikut:
"2 *enampilkan pesan pada layar H
.erapa jam kamu .ekerjaG1
%2 *enunggu pengguna memasukan
data jam .ekerja dan setela+
ditekan E,TER maka komputer
akan memasukan data ke dalam
memory2
=2 *enampilkan pesan pada layar H
.erapa .esarnya gaji tiap
jamnyaG1
?2 *enunggu pengguna memasukan
terse.ut diatas dise.ut dengan
algoritma2 Algoritma merupakan
kumpulan instruksi yang terde5inisi
langka+ demi langka+ secara .aik
dengan tujuan untuk menyelesaikan
masala+2 Aatatan langka+6langka+
ini diurutkan secara sekensial2 Dalam
algoritma langka+ pertama +arus
dilakukan le.i+ da+ulu se.elum
langka+ kedua dan seterusnya2
:angka+6langka+ komputer tidak .isa
ter.alik2 Pada langka+6langka+
&2
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
diatas$ komputer diinstruksikan untuk
meng+itung .esarnya gaji pegawai$
untuk dapat .ekerja maka langka+6
langka+ terse.ut +arus dikonversi
.a+asa yang .isa diproses ole+
komputer$ karena kenyataannya
prosesor +anya dapat memproses
instruksi yang ditulis dalam .a+asa
mesin2 Prosesor +anya mengeta+ui
penggunaan .ilangan se.agai
perinta+ yang +arus dilakukan$ ole+
karena itu algoritma terse.ut +arus
dikodekan menjadi .a+asa mesin2
Penulisan .a+asa mesin secara
langsung akan sangat sulit dan
mem.osankan2 Supaya penulisan
.a+asa pemrograman komputer
menjadi le.i+ muda+ maka
digunakan .a+asa aras tinggi yang
.a+asanya suda+ mendekati .a+asa
manusia2 Dengan .a+asa inila+
programer dapat menulis instruksi6
instruksi yang akan dilakukan ole+
komputer2 Pemrograman dengan
menggunakan ABB misalnya akan
menjadi le.i+ muda+ dan ABB inila+
yang akan mengkonversi .a+asa
program yang ditulis menjadi .a+asa
mesin2 Di.awa+ ini merupakan
program seder+ana yang ditulis
dengan .a+asa ABB2
Program "2"
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
%,*b-e -a%, be&ar, bayarA
>out ?? BBerapa Ca% Ka%u beker-aD BA
>in @@ -a%A
>out ?? BBerapa be&ar ga-i tiap -a%nyaD BA
>in @@ be&arA
bayar ' -a% E be&arA
>out ?? BKa%u %endapatkan 0a-i (/p)B ?? bayar ?? endA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+:
Berapa Ca% Ka%u beker-aD 10
Berapa be&ar ga-i tiap -a%nyaD 1*000/ete.0
Ka%u %endapatkan 0a-i (/p)1*0000
Dengan .a+asa pemrograan
terse.ut diatas$ maka instruksi
komputer dapat di.uat dengan
muda+2 Seperti program diatas yang
digunakan untuk meng+itung gaji
pegawai$ jika diminta memasukan
2008 | Direktorat Pembinaan SMK
&4
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
data jumla+ jam kerja kemudian diisi
"- dan memasukan gaji tiap jamnya
"'---- maka komputer akan
meng+itung dengan mengalikan data
terse.ut se+ingga data keluaran akan
muncul "'----2
"$-$ Baha'a (emrograman
!a+asa pemrograman adala+
notasi yang digunakan untuk menulis
program 3komputer42 !a+asa ini
di.agi menjadi tiga tingkatan yaitu
.a+asa mesin$ .a+asa tingkat renda+
dan .a+asa tingkat tinggi2
!a+asa mesin 3machine
language4 .erupa microinstruction
atau +ardwire2 Programnya sangat
panjang dan sulit dipa+ami2 Di
samping itu sangat tergantung pada
arsitektur mesin2 Keunggulannya
adala+ prosesnya sangat cepat dan
tidak perlu interpreter atau
penterjema+ !a+asa tingkat renda+
3low level language4 .erupa
macroinstruction 3assem.ly42 Seperti
+alnya .a+asa mesin$ .a+asa tingkat
renda+ tergantung pada arsitektur
mesin2 Programnya panjang dan sulit
dipa+ami walaupun prosesnya cepat2
)enis .a+asa tingkat ini perlu
penterjema+ .erupa assem.ler2
!a+asa tingkat tinggi 3+ig+ level
language4 menyerupai struktur
.a+asa manusia se+ingga muda+
dipa+ami2 !a+asa ini tidak tergantung
pada arsitektur mesin tetapi
memerlukan penterjema+ .erupa
compiler atau interpreter2
Secara garis .esar ada dua
kategori .a+asa pemrograman yaitu:
.a+asa pemrograman aras renda+
3low level4 dan .a+asa pemrograman
level tinggi 3+ig+ level42 !a+asa
pemrograman aras renda+
cenderung mendekati level komputer$
ini artinya .a+wa .a+asanya ditulis
mendekati atau sama dengan .a+asa
mesin komputer$ +al ini sangat sulit
ditulis karena .a+asanya jau+ dari
.a+asa manusia yang digunakan
se+ari6+ari2
!a+asa pemrograman yang le.i+
muda+ dipelajari adala+ .a+asa
pemrograman aras tinggi2 Dise.ut
aras tinggi karena .a+asanya
mendekati level .a+asa manusia
se+ingga le.i+ muda+ dipa+ami2
;am.ar di.awa+ ini merupakan
gam.aran antara .a+asa aras tinggi
dengan aras renda+2
)5
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
;am.ar "2""2 !a+asa aras tinggi
;am.ar "2"%2 !a+asa aras renda+
2008 | Direktorat Pembinaan SMK
)"
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Dengan gam.ar terse.ut diatas$
maka dapat dili+at .a+wa menulis
program dengan .a+asa aras tinggi
akan le.i+ muda+ dan dapat
dipa+ami di.andingkan dengan
.a+asa aras renda+ karena
.a+asanya ditulis dengan kode
numerik ataupun dengan sintak yang
sangat pendek se+ingga sulit sekali
dipa+ami2 ntuk le.i+ jelasnya
.e.erapa jenis .a+asa pemrograman
aras tinggi yang digunakan dapat
dili+at pada ta.el di.awa+ ini:
Ta.el "2=2 .a+asa pemrograman aras tinggi
NA1A PEN&ELAS
AN BASI
C
Beginner& A;purpo&e Sy%boi> In&tru>tion Code, ba(a&a
pe%rogra%an
yang bia&a digunakan untuk %eran>ang progra%
&eder(ana pada FO2T2A
N
.or%ua 4ran&ator, Ba(a&a pe%rogra%an yang
diran>ang untuk
%enyee&aikan agorit%a %ate%atika yang ko%pek& COBO
L
Co%%on Bu&ine&&;Oriented Fanguage! Ba(a&a
pe%rogra%an yang
diran>ang pada apika&i bi&ni& P"+)
"-
Ge%rogra%an ter&truktur, ber&iHat u%u%, dan
bia&anya ba(a&a
pe%rogra% ini banyak dia-arkan C Ge%rogra% ter&truktur, ber&iHat u%u%! Ba(a&a ini
dike%bangkan oe(
be aboratorie&! Ba(a&a C ini dapat digunakan &ebagai
ba(a&a ara& tinggi C33 Da&ar penge%bangan C! C:: dapat digunakan &ebagai
ba(a&a berorienta&i
ob-ek, yang tidak dite%ukan pada ba(a&a C! Ba(a&a ini -uga
dike%bangkan C4 C= atau IC &(arpJ! Ba(a&a ini dite%ukan oe(
%i>ro&oHt untuk
%enge%bangkan apika&i pada apika&i %i>ro&oHt !K<4 &"5" Ba(a&a ini %erupakan ba(a&a berorienta&i ob-ek yang
dike%bangkan oe(
Su% )i>ro&i&te%! Dengan -a3a %e%ungkinkan untuk
penge%bangan 6ISUAL
BASIC
Ba(a&a pe%rogra%an %i>ro&oHt di%ana ba(a&a ini
bertu-uan untuk
penge%bangan perangkat unak yang dapat
%e%uda(kan progra%%er daa% %e%buat apika&i
Dalam memili+ .a+asa
pemrograman +arus memper+atikan
+al6+al yang dimiliki ole+ .a+asa
terse.ut$ dan tentunya setiap .a+asa
pasti mempunyai kekurangan dan
kele.i+an yang +arus kita
pertim.angan dalam memili+nya2
Pada .a+asa ABB mempunyai
kemampuan pada .a+asa aras tinggi
maupun .a+asa aras renda+2 !a+asa
ABB .asisnya adala+ pengem.angan
dari .a+asa A$ selain itu ABB juga
mendukung .a+asa pemrograman
.erorientasi o.jek2 Se.enarnya
.a+asa ini ari awal dikem.angkan
untuk menulis program sistem
operasi se.ua+ komputer maupun
compiler2 Karena .a+asa ABB
mengem.angkan A se.elumnya
maka kemampuannya ABB diper.aiki
dan ditingkatkan daripada .a+asa A2
)&
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
ABB sangat populer$ tidak +anya
karena ga.ungan antara aras tinggi
dan aras renda+$ tetapi juga karena
si5at porta.ilitas yang dimilikinya$ ini
artinya ABB dapat ditulis pada satu
jenis komputer dan dapat dijalankan
pada jenis komputer lain yang
.er.eda2 9al ini .iasanya
mem.utu+kan compiler ulang pada
jenis sistem komputer yang akan
digunakan$ tetapi program yang
ditulis terse.ut tidak ada peru.a+an2
Sala+ satu sistem operasi yang ditulis
dengan menggunakan ABB adala+ P6
/indow sistem dan sistem operasi
yang dimiliki ole+ *acintos+2
Ketika progam ABB ditulis$ +al
terse.ut +arus disesuaikan dengan
komputer dan disimpan dalam .entuk
5ile2 Editor te&t yang digunakan
seperti +alnya program pengola+
kata2 *elalui editor ini$ statement
ditulis ole+ seorang programmer
yang dise.ut dengan kode sum.er
3source code4 dan 5ile yang disimpan
dise.ut dengan 5ile sum.er 3source
5ile42 Setela+ kode sum.er disimpan
dalam .entuk 5ile maka proses
translasi 3terjema+an4 menuju
.a+asa mesin dapat dimulai2 Selama
5ase ini diproses$ se.ua+ program
yang dinamakan dengan preprosesor
mem.aca kode sum.er2
Preprosesor mencari .aris
k+usus yang terdapat sim.ol2 !aris
ini terdiri dari instruksi yang
menye.a.kan preprosesor
mengu.a+ kode sum.er dalam
.e.erapa langka+ atau peru.a+an
yang dike+endaki ole+ programmer2
Selama terjadi p+ase lanjut$ compiler
melangka+ melalui preproses kode
sum.er2 Translasi tiap instruksi kode
sum.er menjadi instruksi .a+asa
mesin yang sesuai2 Proses ini akan
di.uka ole+ .e.erapa kesala+an
sintak yang mungkin terjadi pada
program2 Kesala+an sintak adala+
penggunaan kata yag sala+ atau
tidak sesuai$ atau penggunaan
operator$ tanda .aca$ atau elemen
.a+asa yang lainnya2 )ika program
tela+ ter.e.as dari kesala+an sintak
yang terjadi$ maka compiler akan
menyimpan instruksi .a+asa mesin
yang dise.ut dengan kode o.jeck
3o.jeck code4 dalam .entuk ob'ect
file
*eskipun se.ua+ o.jeck 5ile
terdiri dari instruksi .a+asa mesin$
tetapi +al terse.ut .ukan se.ua+
program yang lengkap2 ABB tela+
menyediakan .er.agai kelengkapan
dengan li.rary yang kodenya tela+
ada dan .iasanya atau kadang6
kadang digunakan untuk
mengerjakan tugas6tugas yang sulit2
Se.agai conto+ saja li.rary
digunakan untuk menangani kode
perangkat keras k+usus seperti
menampilkan pada layar$ menangani
masukan dari key.oard2 Selain itu
juga menyediakan routin 5ungsi
matematika seperti operasi kwadrat$
perakaran .ilangan2 Kumpulan kode
ini dise.ut dengan run-time library2
9ampir semua program
menggunakan .agian terse.ut2
Ketika compiler mem.angkitkan 5ile
o.ject$ meskipun +al terse.ut tidak
termasuk dalam code mesin untuk
setiap routin run-time library yang
mungkin digunakan ole+ seorang
programmer2 Selama p+ase ak+ir
dari proses translasi$ program lain
yang dise.ut dengan linker
mengkom.inasikan 5ile o.ject dengan
routin6routin li.rary yang penting2
:ingker akan meng+entian langka+
setela+ 5ile e&ecuta.le tela+ selesai
di.uat2 <ile e&ecuta.le terdiri dari
instruksi .a+asa mesin atau kode
instruksi dan siap dijalankan pada
se.ua+ komputer2 ;am.ar di.awa+
2008 | Direktorat Pembinaan SMK
))
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
ini menunjukan proses translasi dari
5ile sum.er menjadi 5ile e&ecuta.le2
Seluru+ proses pada gam.ar
terse.ut dilakukan ole+ preprosesor$
compiler dan linker yang +al terse.ut
dilakukan dengan satu aksi tunggal2
;am.ar "2"=2 proses translasi dari 5ile sum.er menjadi 5ile e&ecuta.le
"$2$ Penuli'an Baha'a (emrograman
Secara umum$ .a+asa
pemrograman yang .er.asiskan
prosedur terdiri dari .lok atau su.
program2 Yang memiliki dua .agian
utama yaitu: !agian deklarasi dan
!agian Statement2
)*
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
"$2$"$ Bagian Deklara'i
!agian deklarasi merupakan
.agian program untuk mende5inisikan
tipe data suatu varia.le$ konstanta$
serta 5ungsi dan prosedur yang akan
digunakan pada program2 Selain itu$
.agian deklarasi dapat juga
digunakan untuk mem.eri nilai awal
suatu varia.le2 Dengan kata lain$
deklarasi digunakan untuk
memperkenalkan suatu nama kepada
Aompiler program2 !erikut conto+
deklarasi:
a2 Deklarasi Daria.le:
Per+atikan deklarasi antara dua
.ua+ program yang .er.eda2
Di.awa+ ini merupakan deklarasi
program yang digunakan ole+
.a+asa pascal dan .a+asa A2
per+atikan per.edaan antara dua
.a+asa terse.ut2
!a+asa Pascal
Lar I,i" M
IntegerA
& M StringA
!a+asa A
Int
1,1"A C(ar
&N100OA
ntuk mendeklarasikan varia.le
pada Pascal$ digunakan reserved
word Bar$ kemudian diikuti dengan
nama varia.le 3identi5ier4 yang ingin
digunakan$ dan kemudian tipe data
dari varia.le terse.ut2 Sedangkan
pada A$ deklarasi diawali dengan tipe
data varia.le .aru diikuti dengan
nama varia.le 3identi5ier42 Suatu
identi5ier +arus diawali ole+ karakter
.ukan angka$ tetapi tidak .ole+
mengandung karakter k+usus seperti
K $ 6 B C S I T U 2 G V dan se.againya2
Pada .a+asa Pascal$ identi5ier tidak
.ersi5at case sensitive$ maksudnya$
+uru5 .esar ataupun +uru5 kecil
dianggap sama2 Se.aliknya pada
!a+asa A$ identi5ier .ersi5at case
sensitive$ se+ingga varia.le s dan S
akan dianggap dua identi5ier yang
.er.eda2
.2 Deklarasi Konstanta:
Dalam melakukan deklarasi nilai
konstanta atau nilai tetap$ dilakukan
dengan cara menulis const2
per+atikan conto+ penulisan program
di.awa+ ini:
),+t p(i '
1!1#A
Konstanta yaitu nilai yang tetap2 )adi
jika mengacu pada conto+ di atas$
maka nilai p+i tidak dapat diu.a+6
u.a+ dan akan selalu =2"?
c2 Deklarasi Tipe Data2
Per+atikan deklarasi antara
kedua program antara A dan pascal
seperti terli+at di.awa+ ini:
2008 | Direktorat Pembinaan SMK
)+
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
!a+asa A
+t.*)t data&i&Pa 6
>(ar
na%aN10OA
>(ar
aa%atN10OA
>(ar
tepN"0OA
8
e*# (ari ' (&enin,&ea&a,rabu,ka%i&,-u%at,Sabtu,%ingu)A
!a+asa Pascal
4ype 4data&i&Pa '
QdataSi&Pa
Data&i&Pa' re>ord
Ka%a M
StringN10OA Aa%at M
StringN10OA 4ep M
StringN"0OA
endA
type (ari ' (&enin,&ea&a,rabu,ka%i&,-u%at,Sabtu,%ingu)A
a4 Tipe Data seder+ana
Tipe data seder+ana merupakan
tipe data yang paling kecil$ yang
+anya meli.atkan satu item data$
misalnya tipe data integer$ string$
real$ !oolean$ dan se.againya2 Kita
dapat juga mende5inisikan sendiri tipe
data ini2 Tipe data yang dide5inisikan
sendiri terse.ut diistila+kan
enumerated data type 3pada conto+
adala+ type +ari42
.4 Tipe Data terstruktur
Tipe data terstruktur merupakan
tipe data yang terdiri dari .e.erapa
item data2 !entuk dari tipe data ini
dapat .erupa array 3terdiri dari item6
item yang memiliki tipe data yang
sama4 ataupun record 3terdiri dari
item6item yang .ole+ memiliki tipe
data yang .er.eda42 Pada conto+ di
atas$ DataSiswa termasuk tipe data
terstruktur2
c4 Tipe Data Pointer
Tipe data pointer digunakan
untuk menunjuk pada alamat memory
suatu data yang lain2 )adi tipe data
pointer pada dasarnya tidak
menyimpan nilai data secara
langsung$ melainkan +anya
menyimpan alamat dimana data
.erada2 ntuk conto+ pada .a+asa
Pascal$ TDataSiswa merupakan tipe
data pointer2 Pada !a+asa A$ untuk
mendeklarasikan pointer untuk tipe
data DataSiswa pada varia.le yang
.ernama TDataSiswa$ dapat
dituliskan se.agai .erikut:
DataSi&Pa
E4DataSi&PaA
d2 Deklarasi ProcedureC<unction:
ntuk mem.a+as masala+
procedure pada .a+asa Pascal dan
5unsi pada A Per+atikan potongan
program di.awa+ ini:
),
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
Pada .a+asa pascal
(.,)e%*.e >etak (kaM &tring)A
7*)ti, 4a%ba( (a,bM integer)M IntegerA
Pada .a+asa A
5,i% >etak (>(ar 8&tring)A
it 4a%ba( (int a, int b)A
)ika meli+at pada conto+
deklarasi pada .a+asa A$ mungkin
tim.ul pertanyaan apa .eda prosedur
dengan 5ungsiG Pada !a+asa A$
semua su. program dianggap 5ungsi$
.er.eda dengan Pascal yang
menyertakan reserved word
(ro/e%ure dan Cun/tion untuk
mem.edakan antara keduanya2
Se.enarnya$ per.edaan utama
antara prosedur dan 5ungsi yaitu:
prosedur adala+ 5ungsi yang tidak
mengem.alikan suatu nilai2
Se.aliknya 5ungsi adala+ suatu
prosedur yang mengem.alikan nilai2
Apa.ila mengacu pada conto+ di
atas$ maka 5ungsi tam.a+ akan
mengem.alikan suatu nilai yang
.ertipe integer$ sedangkan prosedur
Aetak tidak mengem.alikan nilai apa6
apa2 Pada !a+asa A$ procedure
pada dasarnya adala+ 5unction yang
mengem.alikan Boi% alias tidak
mengem.alikan nilai apa6apa$
"$2$&$ Statement
!agian statement merupakan
.agian program yang .erisi perinta+
yang akan dieksekusi Cdijalankan2
Pada .a+asa Pascal$ .agian
statement selalu diawali dengan
reserved word begin dan en%2
Apa.ila .lok statement adala+ .lok
utama program$ maka reserved word
en% +arus diak+iri dengan tanda
titik324$ se.aliknya jika .lok statement
.ukan .lok utama program maka
reserved word en% diak+iri dengan
tanda titik koma 3N42 Se.aliknya pada
.a+asa A$ dimulai dari deklarasi
varia.le +ingga ak+ir statement
diawali dan diak+iri dengan tanda
kurung kurawal W dan X2 !erikut
adala+ conto+ potongan kode untuk
implementasi meng+itung luas
lingkaran dengan !a+asa2
Program "2%
=in>ude ?&tdio!(@
5,i% %ain()
6
),+t p(i ' 1!"#A
8,"t
dia%eter,radiu&,ua&A
&>anH (BRHB,
Sdia%eter)A radiu& '
dia%eter/"!0A
ua& ' p(i E radiu& E radiu&A
printH (BRHB,Fua&)A
2008 | Direktorat Pembinaan SMK
)-
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
!erikut adala+ penjelasan .aris demi
.aris dari potongan kode !a+asa A
untuk conto+ di atas2
"2 Yinclude Tstdio2+U
!aris di awal program ini
mengincludekan +eader li.rary
stdio ke dalam program2 Seperti
+alnya Pascal$ !a+asa A juga
memiliki cukup .anyak li.rary
standar yang dapat digunakan2
%2 void main34
!aris kedua ini menandakan awal
dari .lok statement utama2 Pada
.a+asa A$ .lok program utama
merupakan suatu 5ungsiCsu.
program yang di.eri nama Omain02
=2 W const p+i I =2"?N
Pada awal .aris ketiga ini$
terdapat tanda kurung kurawal
se.agai pem.uka .lok statement2
Kemudian reserved word /on't
digunakan untuk mendeklarasikan
konstanta p+i2
?2 5loat diameter$ radius$ :uasN
!aris keempat ini digunakan untuk
mendeklarasikan varia.le
diameter$ radius$ dan luas dengan
tipe data 5loat 3.ilangan peca+an4
'2 scan53HZ51$ Vdiameter4N
!aris kelima .erisi perinta+ yang
.er5ungsi untuk meminta input
.ertipe 5loat dari user$ dan
kemudian nilainya disimpan ke
varia.le diameter2
>2 radius I diameter C %2-N
(2 :uas I p+i K radius K radiusN
!aris keenam dan ketuju+
melakukan operasi matematika
untuk meng+itung luas lingkaran2
#2 print53HZ51$:uas4N
!aris ini digunakan untuk
mencetak isi varia.le luas yang
.ertipe 5loat2
@2 X
!aris ini menandakan ak+ir dari
.lok statement2
"$4$ Element Baha'a Pemrograman
Ketika kita mempelajari suatu
.a+asa pemrograman$ kita akan
menjumpai element6element yang
pada dasarnya serupa antara satu
.a+asa dengan .a+asa yang lain2
9al itu dikarenakan element6element
terse.ut merupakan .agian dari tata
.a+asa pemrograman yang
.ersangkutan2 !erikut adala+
element6element pada .a+asa
pemrograman: Aturan :eksikal$ Tipe
data$ E&pression$ Statement$ serta
<unction dan Procedure2
Aturan leksikal yaitu aturan yang
digunakan dalam mem.entuk suatu
deklarasi$ de5inisi$ maupun statement
+ingga menjadi satu program yang
utu+2 Aturan ini meliputi .e.erapa
element antara lain:
a2 Token
.2 Komentar
c2 7denti5ier
d2 Keywords 3Reserved /ords4
e2 8perator
Di.awa+ ini akan di.a+as satu
per satu element6element terse.ut di
atas2
a2 Token
Token yaitu element terkecil
pada .a+asa pemrograman yang
memiliki arti penting .agi compiler2
Yang termasuk token antara lain:
identi5ier$ keywords3reserved words4$
operator$ dan se.againya2 Token
yang satu dengan yang lain
)2
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
dipisa+kan dengan satu atau le.i+
spasi$ ta.$ .aris .aru$ atau komentar2
.2 Komentar
Komentar yaitu teks 3kumpulan
karakter4 yang dia.aikan ole+
Aompiler2 Komentar sangat .erguna
untuk mem.eri catatan mengenai
.agian program tertentu se.agai
re5erensi .aik .agi programmer itu
sendiri maupun orang lain yang
mem.aca kode program terse.ut2
Pada .a+asa Pascal$ teks yang
.erada di antara kurung kurawal
pem.uka Wdan kurung kurawal tutup X
akan dianggap se.agai komentar2
Selain itu$ dapat pula menggunakan
tanda 3K se.agai pem.uka komentar$
dan tanda K4 se.agai penutup2
Per+atikan conto+ program di.awa+:
be!i
{ Cetak hello World Oleh Saya}
Triten (U2eo TordV)A
e%!
Pada .a+asa A$ teks yang .erada di
antara tanda CK dan tanda KC akan
dianggap se.agai komentar2 Dan
untuk teks yang ada setela+ tanda CC
juga akan dianggap komentar satu
.aris2 !erikut adala+ conto+
penggunaan komentar pada .a+asa
A:
5,i% %ain() 6
// Cetak hello World
// Oleh Saya
printH(I2eo TordJ)A
8
c2 7denti5ier
7denti5ier merupakan kumpulan
karakter yang digunakan se.agai
penanda untuk nama varia.le$ nama
tipe data$ 5ungsi$ prosedur$ dan
se.againya2 Aturan penulisan
identi5ier pada .a+asa Pascal dan
.a+asa A dapat dikatakan serupa2
Yaitu: suatu identi5ier +arus diawali
ole+ karakter non angka se.agai
.erikut:
Wa b > d e H g ( i - k % n o p X r & t
u 3 P Y y Z
A B C D < . 0 2 I C K F ) K O G [ / S 4 $ L T 9
\ ]
Selanjutnya .ole+ menggunakan
karakter angka 3 - " % = ? ' > ( # @ 4
maupun karakter non angka terse.ut
di atas$ namun tidak .ole+
menggunakan karakter k+usus
seperti B 6 K C G M W X [ \ dan
se.againya2 !erikut adala+ conto+6
conto+ identi5ier yang .enar maupun
sala+2
2008 | Direktorat Pembinaan SMK
)4
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
Ta.el "2?2 7denti5ier .enar maupun sala+
Wna%a Benar
noW4epon Benar
biangan" Benar
#data Saa(, karena diaPai oe( karakter angkaM #data
tek&D Saa(, karena %engandung karakter
k(u&u&/&pe>iaM 4ek&D
Aatatan yang perlu diingat$
identi5ier pada .a+asa Pascal .ersi5at
case insensitive 3+uru5 .esar dan
+uru5 kecil dianggap sama4$
sedangkan pada .a+asa A$ identi5ier
.ersi5at case sensitive 3+uru5 .esar
dan +uru5 kecil di.edakan42 Se.agai
conto+$ identi5ier ,o]Telpon dan
no]telpon pada .a+asa Pascal
dianggap sama$ sedangkan pada
.a+asa A$ dianggap se.agai dua
identi5ier yang .er.eda2
d2 Keywords 3Reserved /ords4
Keywords atau Reserved words
merupakan kata6kata yang tela+
adaCdide5inisikan ole+ .a+asa
pemrograman yang .ersangkutan2
Kata6kata terse.ut tela+ memiliki
de5inisi yang suda+ tetap dan tidak
dapat diu.a+2 Karena tela+ memiliki
de5inisi tertentu$ maka kata6kata ini
tidak dapat digunakan se.agai
identi5ier2Pada .a+asa Pascal$ yang
termasuk reserved words antara lain:
and array a&% begin >a&e >on&t di3
do doPnto e&e end 5e Hor HorPar
d Hun>tion goto iH In abe %od ni
not oH or pa>ked pro>edure progra% re>ord
repeat
unti
&et
u&e&
&tring
3ar
t(en
P(ie
to
Pit(
type unit
Pada .a+asa A$ yang termasuk reserved words antara lain:
break >a&e >(ar >on&t >ontinue deHaut do
doube e&e enu% ^oat Hor goto iH
inine int ong return &(ort &igned &iZeoH
&tati>
un&igne
d
&tru>t
P(ie
&Pit>( type deH union 3oid
"$"5$ Baha'a .DD
!a+asa ABB diciptakan ole+
!jarne Stroustrup di ATVT !ell
:a.oratories awal ta+un "@#-6an
.erdasarkan A A,S7 3American
,ational Standard 7nstitute42 Pertama
kali$ prototype ABB muncul se.agai A
yang dipercanggi+ dengan 5asilitas
kelas2 !a+asa terse.ut dise.ut A
dengan kelas 3 A wi+ class42 Selama
ta+un "@#=6"@#?$ A dengan kelas
disempurnakan dengan menam.a+
5asilitas pem.e.an le.i+an operator
dan 5ungsi yang kemudian
mela+irkan apa yang dise.ut ABB2
*5
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
Sym.ol BB merupakan operator A
untuk operasi penaikan$ muncul
untuk menunjukkan .a+wa .a+asa
.aru ini merupakan versi yang le.i+
canggi+ dari A2
!orland 7nternational merilis
compiler !orland ABB dan Tur.o
ABB2 Kedua compiler terse.ut sama6
sama dapat digunakan untuk
mlakukan kompilasi kode ABB2
!edanya$ !orland ABB selain
dapat digunakan di.awa+ lingkungan
D8S$ juga dapat digunakan untuk
pemrograman /indows2 Selain
!orland 7nternational$ .e.erapa
perusa+aan lain juga merilis compiler
ABB$ seperti Topspeed ABB dan
Rortec+ ABB2 Per+atikan dan
.andingkan program di.awa+ ini:
Program "2=2 Aonto+ program dalam .a+asa A
=in>ude ?&tdio!(@
it %ain()
6
%,*b-e -a%, be&ar, bayarA
printH ( BBerapa Ca% Ka%u beker-aD B)A
&>anH ( -a%)A
printH ( BBerapa be&ar ga-i tiap -a%nyaD B)A
&>antH( be&ar)A
bayar ' -a% E be&arA
printH (BKa%u %endapatkan 0a-i (/p)B, bayar ?? endA
.et*. 0A
8
Program "2?2 Aonto+ program dalam .a+asa ABB
=in>ude ?io&trea%@
it %ain()
6
%,*b-e -a%, be&ar, bayarA
>out ?? BBerapa Ca% Ka%u beker-aD BA
>in @@ -a%A
>out ?? BBerapa be&ar ga-i tiap -a%nyaD BA
>in @@ be&arA
bayar ' -a% E be&arA
>out ?? BKa%u %endapatkan 0a-i (/p)B ?? bayar ?? endA
.et*. 0A
8
ABB diciptakan untuk
mendukung pemrograman
.erorientasi pada o.jek 38.ject
8riented PragrammingC88P4 yang
tidak dimiliki A2 sementara A
merupakan .a+asa pemrograman
2008 | Direktorat Pembinaan SMK
*"
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
ter.aik dilingkungannya$ .a+asa ini
tidak memiliki kemampuan 88P2
Reputasi A tidak diragukan lagi
dalam meng+asilkan program 2EPE
.erukuran kecil$ eksekusi yang cepat$
antarmuka 3inter5acing4 yang
seder+ana dengan .a+asa lain dan
5leksi.ilitas pemrograman2 Apa yang
mem.uat A tampak sukar dipelajari
mungkin karena tiadanya
pemeriksaan tipe2 Se.agai conto+$
dapat mencampur .ilangan .ulat
dengan string untuk meng+asilkan
karakter2 ,amun$ justru dsitu letak
5leksi.ilitas A$ dapat mengola+ data
A se.e.as mengola+ data dalam
.a+asa assem.ly2
Di.andingkan compiler ABB yang
lain$ !orland ABB memiliki
keunggulan terutama dalam +al
kecepatan dan e5isiensi kompilasi2
Disamping itu$ !orland ABB
mendukung .e.erapa sistem operasi
yaitu D8S$ /indows ">.it 3/indow
=2-4 dan windows =% .it 3/indows
,T42 *eskipun demikian compiler
!orland ABB juga memiliki
kelema+an .ila di.andingkan
compiler ABB yang lain$ misalnya :
pemrograman dengan !orland ABB
terutama yang menyangkut tampilan
jau+ le.i+ sulit daripada
pemrograman dengan *icroso5t
Disual ABB2
"$""$ Struktur Baha'a .DD
Program A maupun ABB selalu
tersusun dari ? 3empat4 .agian
utama$ yaitu : .agian komentar yang
ditandai dengan sim.ol CC dan
pasangan CK F KC$ .agian pengara+
compiler yang ditandai dengan
sym.ol Y$ .agian deklarasi dan
.agian de5inisi
"$""$"$ Bagian Komentar
Program yang .aik pada
umumnya di.eri komentar yang akan
mem.antu orang lain maupun
pem.uat program itu untuk
mema+ami program yang di.uat2
Dalam A atau ABB setiap tulisan
yang diapit ole+ sym.ol CK F KC atau
setiap .aris yang dimulai dengan
sym.ol CC dianggap komentar2
!a+asa ABB tidak mengiQinkan
komentar .ersarang 3nested
comment4$ namun !orland ABB le.i+
5leksi.el dalam +al ini2
Program "2'
=in>ude ?io&trea%@
it %ain()
6
%,*b-e -a%, be&ar, bayarA // tipe data
double
>out ?? BBerapa Ca% Ka%u beker-aD BA // tampilkan kata
tersebut
>in @@ -a%A // masukan jam
>out ?? BBerapa be&ar ga-i tiap -a%nyaD BA // tampilkan kata
tersebut
>in @@ be&arA // masukan
besar gaji tiap jam bayar ' -a% E be&arA
*&
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
8
Pada !orland ABB dapat
menggunakan komentar .ersarang
asalkan opsi cek ,ested comments
pada menu 8ptionsCAompilerCSource
dipili+2
"$""$&$ Bagian Pengarah Kom(iler
Supaya le.i+ jelas mengenai .a+asa ABB per+atikan program di.awa+ ini:
Program "2>
= in>ude ?io&trea%!(@
5,i% %ain ( )
6
)h". pe&an N O ' B2eo, C:: progra%%er&_B A
>out ?? pe&an A
.et*. 0 A
8
*erupakan statement pre6
prosesor$ dise.ut juga pengara+
compiler karena .er5ungsi mengatur
proses kompilasi2 iostream2+
merupakan 5ile program yang
mengandung deklarasi kelaskelas
yang diperlukan ole+ o.jek cout2 <ile6
5ile dengan ekstensi 2+ yang .erisi
deklarasi 5ungsi65ungsi standar A ini$
dise.ut secara umum se.agai 5ile
+eader2
!e.erapa pengara+ compiler
antara lain: Y de5ine$ Y include$ Y i5$
Y else$ Y eli5$ Y endi5$ Y i5de5$ Y i5nde5
a2 Pengara+ kompiler Y de5ine
ntuk mende5inisikan suatu
pengenal C konstanta yang nantinya
akan digantikan ole+ praprosesor
saat program dikompilasi2 Per+atikan
conto+ Program di.awa+ ini:
= deHine SI]< 10
it array NSI]<O A
7,. (.e!i+te. it i ' 0 A i ? SI]< A i::)
6
>out ?? array N i O A
8
.2 Pengara+ Kompiler Y 7nclude
!er5ungsi mem.aca 5ile program
tertentu dan mengikutsertakan 5ile
terse.ut dalam proses kompilasi2
,ama 5ile yang dimaksud +arus diapit
sym.ol O T O dan O U O atau tanda kutip
dua 3 H F H42
2008 | Direktorat Pembinaan SMK
*)
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
c2 Pengara+ Kompiler Y 75$ Y Else$ Y Eli5$ Y Endi5
Digunakan untuk memili+ .agian
program yang akan dikompilasi2
Kompilasi cari ini dise.ut kompilasi
.ersyarat dan program yang .aik
.iasanya meman5aatkan teknik ini2
d2 Pengara+ Kompiler Y 75de5$ Y 75nde5
Digunakan juga dalam kompilasi
.ersyarat2 > !C%eC dapat di.aca: Ojika
dide5inisikan0 dan > iCn%eC dapat
di.aca: Ojika tidak dide5inisikan02
Pengara+ compiler ini sering
digunakan untuk menandai .a+wa
suatu 5ile suda+ diikutsertakan dalam
kompilasi2
"$""$)$ Deklara'i Dan DeCini'i
Semua program A pada
dasarnya tersusun dari rangkaian
pemanggilan 5ungsi yang .ekerja
atas sekelompok data2 Selain
pemanggilan 5ungsi$ program A
mengandung komponen lain yang
dise.ut statement2
Statement A ada dua$ yaitu :
statement yang tidak dapat
dieksekusi C non e&ecuta.le 3 .ila
dikompilasi tidak meng+asilkan kode
o.jek dan .iasanya digunakan untuk
mengatur alur program4$ dan
statement yang dapat dieksekusi C
e&ecuta.le 3.ila dikompilasi akan
meng+asilkan kode o.jek42
Setiap pemanggilan 5ungsi
maupun statement e&ecuta.le dalam
A +arus diak+iri dengan tanda titik
koma 3N42 Per+atikan Aonto+ program
ABB:
Program "2(
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
)h". pe&an N O ' B2eo, Grogra%%er C:: _B A
>out ?? pe&anA
get>(()A
.et*. 0 A
8
Keluaran programnya adala+:
2eo, Grogra%%er C:: _
Dalam conto+ program ABB
diatas$ return merupakan conto+
statement e&ecuta.le yang
menginstruksikan agar suatu 5ungsi
**
Direktorat Pembinaan SMK | 2008
Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman
mengem.alikan nilai .alik tertentu2
Aonto+ statement non e&ecuta.le
adala+: 75$ else$ dan w+ile2 *ain 34
merupakan conto+ 5ungsi$ sedangkan
pesan adala+ conto+ data2 !aik data
maupun 5ungsi +arus dideklarasikan2
Data perlu dideklarasikan agar
compiler ta+u .erapa .yte memori
yang +arus disediakan untuk data
yang .ersangkutan$ sedangkan
5ungsi perlu dideklarasikan agar
compiler dapat memeriksa ketepatan
pemanggilan 5ungsi yang
.ersangkutan2 Deklarasi 5ungsi sering
dise.ut pula prototype 5ungsi2
"$"&$ !n(ut Dan Out(ut
Di A,S7 A$ operasi input dan
output dilakukan dengan
menggunakan 5ungsi65ungsi yang ada
di +eader 5ile stdio2+2 conto+nya
untuk input dan output ke layer
monitor digunakan perinta+ seperti
print5$ scan5$ putc+$ dan se.againya2
7nstruksi input dan output ke 5ile
digunakan perinta+ seperti 5read$
5write$ 5putc$ dan se.againya2
!a+asa ABB mempunyai teknik
input dan output yang .aru$ yaitu:
menggunakan stream2 9eader 5ile
untuk input dan output stream adala+
iostream2+ dan .e.erapa 5ile lain$
!entuk umum operator output adala+
se.agai .erikut:
>out ??
ek&pre&i A
!entuk umum operator 7nput adala+
se.agai .erikut:
>in @@
3ariabe A
seperti strstrea2+$ 5stream2+$ dan
constrea2+2
Stream adala+ suatu logika
device 3peralatan logika4 yang
meng+asilkan dan menerima
in5ormasi atau se.agai tempat yang
digunakan untuk menampung
keluaran dan menampung aliran
data2 Stream adala+ nama umum
untuk menampung aliran data
3conto+: 5ile$ key.oard$ mouse4$
maupun untuk keluaran 3conto+:
layer$ printer42 Dalam .a+asa ABB$
input .erarti mem.aca dari stream
dan output .erarti menulis ke stream2
Dalam ABB$ menggunakan
escape se^uences untuk
merepresentasikan suatu karakter
yang tidak terdapat dalam tradisional
sim.ol2 !e.erapa diantaranya :
` n M ineHeed / bari& baru
` b M ba>k &pa>e
` I M petik ganda
Program "2#2 conto+ program versi A,S7 A :
= in>ude ?&tdio!(@
5,i% %ain ( )
6
it Y A
printH ( B)a&ukkan &ebua( biangan M `nB ) A
&>anH ( B Rd B, SY ) A
printH ( BBiangan yang di%a&ukkan adaa( Rd`n B, Y ) A
2008 | Direktorat Pembinaan SMK
*+
Bahasa Pemrograman Dasar-dasar Pemrograman Komputer
8
Program "2@ conto+ program versi ABB :
= in>ude ?io&trea%!(@
5,i% %ain ( )
6
it Y A
>out ?? B)a&ukkan &ebua( biangan M B ?? end A
>in @@ Y A
>out ?? BBiangan yang di%a&ukkan adaa( B ?? Y ?? end A
8
Program "2"- conto+ program input dan output pada ABB:
= in>ude ?io&trea%!(@
5,i% %ain ( )
6
it a A
>out ?? B%a&ukkan &uatu biangan MB A
>in @@ a A
>out ?? Bniai ter&ebut dita%ba( 1 ' a ?? a:1 A
.et*. 0 A
8
"$"+$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Se.utkan .agian6.agian perangkat keras komputer
%2 Se.utkan lapisan perangkat lunak komputer personal
=2 Se.utkan .er.agai macam memori yang digunakan pada komputer
?2 Apa yang dimaksud dengan piranti 7nput dan output 37C842
'2 )elaskan sistem .ilangan yang digunakan ole+ komputer
>2 )elaskan proses translasi dari 5ile sum.er menjadi 5ile e&ecuta.le
(2 )elaskan struktur .a+asa ABB
#2 Se.utkan per.edan .a+asa A dan ABB
*,
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
BAB &
BAHASA DAN AEGOR!TMA PEMROGRAMAN
%2"2 !a+asa Pemrograman
%2%2 Aompiler dan 7ntepreter
%2=2 Tipe Pemrograman
%2?2 Algoritma
%2'2 Airi Algoritma
%2>2 Penerapan Algoritma
%2(2 ,otasi Algoritma
%2#2 Kalimat deskripti5 pada Algoritma
%2@2 <low c+art
%2"-2 Pseudo code
%2""2 Penerjema+an ke kode sum.er
%2"%2 Soal :ati+an
&$"$ Baha'a (emrograman
!a+asa atau dalam .a+asa
inggris language adala+ suatu sistim
untuk .erkomunikasi2 !a+asa tertulis
menggunakan sim.ol 3yaitu +uru54
untuk mem.entuk kata2 Dalam ilmu
komputer$.a+asa manusia dise.ut
.a+asa alamia+ 3natural languages4$
dimana komputer tidak .isa
mema+aminya$ se+ingga diperlukan
suatu .a+asa komputer2 Komputer
mengerjakan trans5ormasi data
.erdasarkan kumpulan perinta+ 6
program 6 yang tela+ di.uat ole+
pemrogram2 Kumpulan perinta+ ini
+arus dimengerti ole+ komputer$
.erstruktur tertentu 3synta&4 dan
.ermakna2
!a+asa pemrograman
merupakan notasi untuk mem.erikan
secara tepat program komputer2
!er.eda dengan .a+asa alamia+$
mis2 !a+asa 7ndonesia$ 7nggris ds.2
yang merupakan .a+asa
alamia+3natural language4$ sintaks
dan semantik .a+asa pemrograman
3komputer4 ditentukan secara kaku$
se+ingga .a+asa pemrograman juga
dise.ut se.agai .a+asa 5ormal
35ormal language42 )adi$ dalam
.a+asa pemrograman yang
digunakan se.agai alat komunikasi
untuk mem.erikan perinta+ kepada
komputer tidak .erlaku ke.e.asan
.erekspresi seperti laiknya dalam
.a+asa alamia+2
Pemrograman dalam pengertian
luas meliputi seluru+ kegiatan yang
tercakup dalam pem.uatan program$
termasuk analisis ke.utu+an
3re^uirement_s analysis4 dan
keseluru+an ta+apan dalam
perencanaan 3planning4 $
&552 F Direktorat Pembinaan SMK
*-
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
perancangan 3design4 dan
pewujudannya 3implementation42
Dalam pengertian yang le.i+ sempit$
pemrograman merupakan
pengkodean 3coding atau program
writing I penulisan program4 dan
pengujiannya 3testing4 .erdasarkan
rancangan tertentu2
Pema+aman yang le.i+ sempit
ini sering digunakan dalam
pem.uatan program6program terapan
komersial yang mem.edakan antara
system analyst yang .ertanggung
jawa. dalam menganalisa
ke.utu+an$ perencanaan dan
perancangan program dengan
pemrogram 3programmer4 yang
.ertugas mem.uat kode program dan
menguji ke.enaran program2
;enerasi .a+asa pemrograman:
;enerasi 7: mac+ine language
;enerasi 77: assem.ly language :
Asssem.ler
;enerasi 777: +ig+6level
programming language: A$
PASAA:$ dan se.againya2
;enerasi 7D: ? ;: 35ourt+6
generation language4: S`:
&$"$"$ Baha'a Tingkat Ren%ah
*erupakan .a+asa assem.ly
atau .a+asa mesin2 !a+asa ini le.i+
dekat ke mesin 3hardware4$ dimana
pada +ig+6level programming
languages$ suatu .a+asa yang suda+
dekat pada .a+asa manusia2 Pada
.a+asa ini akan le.i+ cepat dipa+ami
ole+ programmer karena si5atnya
yang dekat dengan .a+asa manusia
&$"$&$ Baha'a Me'in
!a+asa mesin merupakan
representasi tertulis mac+ine code
3kode mesin4$ yaitu kode operasi
suatu mesin tertentu2 !a+asa ini
.ersi5at k+usus untuk mesin tertentu
dan adimengertia langsung ole+
mesin$ se+ingga pelaksanaan proses
sangat cepat2 !a+asa mesin
kelompok komputer tertentu
.erlainan dengan .a+asa mesin
kelompok komputer yang lain2
A.straksi .a+asa ini adala+
kumpulan kom.inasi kode .iner a-a
dan a"a yang sangat tidak alamia+
.agi ke.anyakan orang 6 kecuali
insinyur pem.uat mesin komputer2
Karena tidak alamia+ .agi
ke.anyakan orang$ .a+asa mesin
juga dise.ut .a+asa tingkat renda+2
&$"$)$ Baha'a A''embl3
!a+asa rakitan 3assem.ly
language4 merupakan notasi untuk
menyajikan .a+asa mesin yang le.i+
muda+ di.aca dan dipa+ami ole+
manusia2 !a+asa ini suda+
menggunakan sim.ol alpa.et yang
.ermakna 3mnemonic42 Aonto+ H*8D
AP """"1$ pinda+kan ke register AP
nilai """"2Proses data ole+ komputer
.erdasarkan perinta+ .a+asa rakitan
adala+ cepat2 *eski demikian masi+
merepotkan6.a+kan .agi ke.anyakan
pemrogram$ karena masi+ +arus
mengingat6ingat tempat
penyimpanan data2 !a+asa rakitan
juga .ersi5at k+usus untuk mesin
tertentu2 Aonto+: Assem.ler
&$"$*$ Baha'a Tingkat Tinggi
Adala+ .a+asa pemrograman
yang dekat dengan .a+asa manusia$
kele.i+an utama dari .a+asa ini
adala+ muda+ untuk di .aca$ tulis$
maupun diper.a+arui$ se.elum .isa
*2
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
dijalankan program +arus terle.i+
da+ulu di6compile2 Aonto+ Ada$ Algol$
!AS7A$ A8!8:$ A$ ABB$ <8RTRA,$
:7SP$ dan Pascal$ ds.2 Pada
generasi .a+asa pemrograman
terak+ir sekarang ini$ kedua cara
interpretasi dan kompilasi
diga.ungkan dalam satu lingkungan
pengem.angan terpadu
37DEIintegrated development
environ6ment42
Aara interpretasi memuda+kan
dalam pem.uatan program secara
interakti5 dan cara kompilasi
menjadikan eksekusi program le.i+
cepat2 Pertama program
dikem.angkan interakti5$ kemudian
setela+ tidak ada kesala+an
keseluru+an program dikompilasi2
Aonto+ .a+asa program seperti ini
adala+ Disual !AS7A yang .er.asis
!AS7A dan Delp+i yang .er.asis
PASAA:2 !a+asa tingkat tinggi
.ersi5at porta.le2 Program yang
di.uat menggunakan .a+asa tingkat
tinggi pada suatu mesin komputer
.ersistem operasi tertentu$ +ampir
"--Z .isa digunakan pada .er.agai
mesin dengan aneka sistem operasi2
Kalaupun ada per.aikan si5atnya
kecil sekali2
&$"$+$ Baha'a Genera'i ) A *
:e.i+ dekat ke .a+asa manusia
di.andingkan dengan +ig+6level
programming languages2 !iasanya
dipakai untuk mengakses data.ase2
Aonto+ perinta+ pada .a+asa S`::
<7,D A:: REA8RDS /9ERE
,A*E 7S a)89,a2
&$"$,$ Baha'a Pemrograman
untuk tujuan tertentu
Di.awa+ ini merupakan Ta.el
!a+asa Pemrograman untuk tujuan
tertentu2 3*c2 Aonnell$ + ?>4
Ta.el %2"2 !a+asa Pemrograman
&ENIS P2O92A1 BAHASA
TE2BAIK
BAHASA
TE2BU2UK Data ter&truktur ADA, C /C::,
GASCAF
A&&e%ber, BASIC
Groyek >epat BASIC GASCAF, ADA,
A&&e%ber <k&eku&i >epat A&&e%ber, C BASIC,Intrepreter
Fanguage
Kakua&i %ate%atika .O/4/AK GASCAF
)enggunakan
%e%ori dina%i&
GASCAF, C BASIC
Fingkungan %e%ori
terbata&
BASIC,
A&&e%ber, C
.O/4/AK
Grogra% rea;ti%e ADA, A&&e%ber,
C
BASIC, .O/4/AK
)anipua&i &tring BASIC, GASCAF C
Grogra% %uda( dikeoa GASCAF, ADA C, .O/4/AK
Ta.el Rasio pernyataan .a+asa tingkat tinggi dengan kode .a+asa rakitan
yang setara2 3*c2 Aonnell$ + ?>4
&552 F Direktorat Pembinaan SMK
*4
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
Ta.el %2%2 Rasio .a+asa tingkat tinggi dengan kode .a+asa rakitan
BAHAS
A
2ASI
O A&&e%ber 1M 1
ADA 1 M #!*
[ui>k / 4urbo / Ba&i> 1 M *
C 1 M "!*
.O/4/AK 1 M 1
GASCAF 1 M 1!*
&$&$ .om(iler %an !nte(reter
Aompiler Adala+ suatu program
yang menterjema+kan .a+asa
program 3source code4 ke dalam
.a+asa o.jek 3o.ject code42 Aompiler
mengga.ungkan keseluru+an .a+asa
program dikumpulkan kemudian
disusun kem.ali2
&$&$"$ Taha(an Kom(ila'i9
Dalam melakukan penulisan
.a+asa pemrograman komputer ada
.e.erapa ta+apan6ta+apan yang
+arus dilakukan antara lain:
Pertama source code 3 program yang
ditulis4 di.aca ke memory komputer2
Source code terse.ut diu.a+
menjadi o.ject code 3.a+asa
assem.ly4
8.ject code di+u.ungkan
dengan li.rary yang di.utu+kan
untuk mem.entuk 5ile yang .isa
di eksekusi2
Aompiler memerlukan waktu untuk
mem.uat suatu program yang dapat
dieksekusi ole+ komputer2 Tetapi$
program yang diproduksi ole+
Aompiler .isa .erjalan le.i+ cepat
di.andingkan dengan yang
diproduksi ole+ 7nterpreter$ dan
.ersi5at independen2
&$&$&$!nter(reter
!er.eda dengan compiler$
7nterpreter menganalisis dan
mengeksekusi setiap .aris dari
program tanpa meli+at program
secara keseluru+an2 Keuntungan dari
7nterpreter adala+ dalam eksekusi
yang .isa dilakukan dengan segera2
Tanpa melalui ta+ap kompilasi$ untuk
alasan ini interpreter digunakan pada
saat pem.uatan program .erskala
.esar2
&$)$ Ti(e Pemrograman
Dalam !a+asa pemrograman
komputer terdapat tipe
pemrograman2 Tipe pemrograman
yang pertama adala+ pemrograman
terstruktur dan prosedural2
&$)$"$ Pemrograman Ter'truktur
Pemrograman terstruktur adala+
cara pemrosesan data yang
terstuktur2 Terstruktur dalam: analisa$
cara dan penulisan program2 Prinsip
pemrograman terstruktur adala+
mempunyai ciri se.agai .erikut:
*enggunakan rancangan
pendekatan dari atas ke .awa+
3top down design4$
+5
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
*em.agi program ke dalam
modul6modul logika yang sejenis$
*enggunakan su.6program untuk
proses6proses sejenis yang sering
digunakan$
*enggunakan pengkodean
terstruktur: 7< 22222222222 T9E,$
D8 22222222 /97:E dan lain6lainnya$
*eng+indari penggunaan perinta+
;8 T8 .ila tidak diperlukan$
;unakan nama6nama .ermakna
3mnemonic names4$ dan
*em.uat dokumentasi yang
akurat dan .erarti2
Dalam perencanaan dan
perancangan dari atas ke .awa+$
kategori dan penyelesaian masala+
dimulai dari .agian yang utama
kemudian di.agi menjadi .agian
yang le.i+ kecil2 Rancangan cara ini
memuda+kan penulisan$ pengujian$
koreksi dan dokumentasi program2
Ta+apan rancangan atas ke .awa+
dalam pemrograman:
Tentukan keluaran 3output4 yang
diminta$ masukan 3input4 yang
diperlukan dan proses6proses
utama yang diperlukan untuk
trans5ormasi data2
*em.agi proses utama ke dalam
modul6modul 5ungsional2
!uat algoritma msing6masing
modul$ dari modul utama ke su.6
su. modul2
Setiap modul dalam proses
rancangan atas ke .awa+ .iasanya
di.atasi dalam isi maupun .atasan6
.atasan .erikut:
Setiap modul +anya mempunyai
satu masukan dan keluaran
Setiap modul +anya mewakili satu
5ungsi program2
Rancangan 3design4 terstruktur:
*em.agi program menjadi
su.program
*enekankan 5ungsionalitas2
Aocok untuk sistem yang .anyak
mempunyai 5ungsi independen2
;aya penulisan program
terstruktur: *enggunakan
indentasi se+ingga jelas struktur
dan kontrol program2
*emuda+kan pem.acaan$
pema+aman$ penelusuran
kesala+an dan pem.uatan
koreksi2
&$)$&$ Pemrograman (ro/e%ural
%an ter'truktur
!a+asa pemrograman
prosedural adala+ .a+asa
pemrograman yang mendukung
pem.uatan program se.agai
kumpulan prosedur2 Prosedur6
prosedur ini dapat saling memanggil
dan dipanggil dari manapun dalam
program dan dapat menggunakan
parameter yang .er.eda6.eda untuk
setiap pemanggilan2 Prosedur adala+
.agian dari program untuk
melakukan operasi6operasi yang
suda+ ditentukan dengan
menggunakan parameter tertentu2
!a+asa pemrograman terstruktur
adala+ pemrograman yang
mendukung a.straksi data$
pengkodean terstruktur dan kontrol
program terstruktur2 Kontrol program
terstruktur adala+ se.agai .erikut:
"2 Runtun 6 urut 3se^uence4
%2 Pili+an 3selection4
=2 Pengulangan 3repetition 6 loop4
?2 !atasan *asala+ *erencanakan
sistim dan spesi5ikasi program:
Siapa yang akan menggunakan
program dan untuk apaG dengan
cara:
*enentukan tujuan dan +asil
yang akan dicapai
&552 F Direktorat Pembinaan SMK
+"
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
*enentukan +al6+al yang
diperlukan ole+ sistim
Pengumpulan data
'2 Pengem.angan *odel Pem.uatan
model dari sistim yang akan kita
.angun$ model adala+ suatu
gam.aran seder+ana dari sistim
yang kita .uat2 Dengan
pem.uatan model akan terli+at
dengan jelas +u.ungan antara
o.jek6o.jek dalam sistim yang
akan kita .angun2 ntuk
penyelesaian aritmatik$ .iasanya
model di.uat dalam .entuk rumus
matematik2 Aonto+: untuk
mem.uat program luas]lingkaran
kita mem.uat model matematis
c I a&.
>2 Rancangan algoritma Pem.uatan
urutan instruksi yang akan ditulis
pada program 3 dijelaskan le.i+
lanjut4
(2 Pemrograman 7mplementasi
algoritma ke dalam program
3algoritma sendiri dalam komputer
adala+ merupakan program42
#2 ji dan Dalidasi Pengujian
ter+adap program : seperti
kesala+an penulisan 3synta& error4
$ kesala+an saat eksekusi 3runtime
error4 kesala+an logika program
3program .erjalan tapi
meng+asilkan output yang sala+6
5atal error42
Dokumentasi Pem.uatan catatan
pada program terutama pada modul6
modul yang rumit2
&$*$ Algoritma
Pemrograman komputer dan
algoritma pemrograman adala+ dua
+al yang tidak dapat dipisa+kan
karena pem.uatan program
komputer akan le.i+ sulit dan lama
tanpa mengeta+ui dengan pasti
.agaimana algoritma penyelesaian
masala+nya2 Se.elum mengeta+ui
le.i+ lanjut apa yang dimaksud
dengan algoritma pemrograman$ kita
.a+as da+ulu apa yang dimaksud
dengan pemrograman komputer atau
program komputer2
De5inisi program komputer
adala+ sederetan perinta+6perinta+
3instruksi4 yang +arus dikerjakan ole+
komputer untuk menyelesaikan
masala+2 Deretan perinta+6perinta+
terse.ut tidak .isa kita tulis secara
sem.arangan atau semau kita tetapi
+arus teratur agar komputer dapat
mema+ami dan memprosesnya
dengan .aik se+ingga permasala+an
yang ada dapat diselesaikan dengan
.aik pula2
ntuk itula+ diperlukan algoritma
karena de5inisi dari algoritma itu
sendiri menurut *icroso5t Press
Aomputer and 7nternet Dictionary
3"@@#4 adala+ urutan langka+ logis
tertentu untuk memeca+kan suatu
masala+2 Yang ditekankan adala+
urutan langka+ logis$ yang .erarti
algoritma +arus mengikuti suatu
urutan tertentu$ tidak .ole+
melompat6lompat dan disusun secara
sistematis2 Sedangkan yang
dimaksud dengan langka+6langka+
logis adala+ kita +arus dapat
mengeta+ui dengan pasti setiap
langka+ yang kita .uat2
*enurut Sjukani 3%--'4$
algoritma adala+ alur pemikiran
dalam menyelesaikan suatu
pekerjaan yang dituangkan secara
tertulis2 Yang ditekankan pertama
adala+ alur pikiran$ se+ingga
algoritma seseorang dapat .er.eda
dari algoritma orang lain2 Sedangkan
penekanan kedua adala+ tertulis$
yang artinya dapat .erupa kalimat$
gam.ar$ atau ta.el tertentu2 )adi
+&
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
dapat disimpulkan .a+wa algoritma
le.i+ merupakan alur pemikiran untuk
menyelesaikan suatu pekerjaan atau
suatu masala+ daripada pem.uatan
program komputer2 Algoritma inila+
yang kemudian dijadikan landasan
3pedoman4 untuk mem.uat program
komputer2
*eskipun algoritma tidak dapat
dipisa+kan dengan pemrograman
komputer tetapi jika anda
.eranggapan .a+wa algoritma identik
dengan pemrograman komputer$
anda sala+ .esar2 9al ini dikarenakan
dalam ke+idupan se+ari6+aripun
seringkali kita .er+adapan dengan
masala+6masala+ yang kalau kita
cermati mengikuti kaida+6kaida+
penyelesaian secara algoritma2
*isalkan saja cara6cara memasak
mie instan$ mem.uat kopi atau te+$
memasak makanan yang dinyatakan
dalam .entuk resep$ dan masi+
.anyak lagi yang semuanya itu dapat
kita se.ut se.agai algoritma2 Pada
mie instan misalnya$ .iasanya pada
.ungkusnya terdapat urutan langka+6
langka+ .agaimana cara memasak
atau menyajikannya2 !ila langka+6
langka+ terse.ut tidak logis$ maka
dapat dipastikan .a+wa kita akan
memperole+ +asil yang tidak sesuai
dengan yang di+arapkan2 Kita +arus
mem.aca satu demi satu langka+6
langka+ pem.uatannya kemudian
mengikutinya agar memperole+ +asil
yang .aik2
Yang +arus diingat disini adala+
kita tidak +arus mengikuti langka+6
langka+ yang suda+ di.erikan$ tetapi
kita dapat memodi5ikasinya atau
.a+kan mem.uat resep atau cara
.aru yang le.i+ .aik tetapi
meng+asilkan +al yang sama
3mempunyai tujuan yang sama4$ yaitu
dapat menikmati +asil masakan2
Demikian juga dengan pemrograman
komputer$ kita juga tidak +arus
mengikuti algoritma yang suda+ ada$
tetapi kita dapat menam.a+ ataupun
mengurangi .a+kan mem.uat
algoritma yang .aru asalkan
permasala+an yang ada dapat
terpeca+kan dengan .aik2
&$+$ .iri Algoritma
8le+ karena algoritma digunakan
untuk memeca+kan suatu
permasala+an maka algoritma
terse.ut +arus meng+asilkan suatu
jawa.an atas permasala+an terse.ut2
Dengan kata lain algoritma +arus
memiliki paling tidak satu keluaran2
Sedangkan masukan dari algoritma
dapat nol 3tidak ada4 atau .anyak
masukan 3data42 Yang dimakdud
dengan nol masukan adala+ jika
algoritma itu +anya untuk
menampilkan suatu in5ormasi saja2
*isalnya output I2eo TordJ yang
sering kita temukan pada tutorial6
tutorial saat kita .aru .elajar
mem.uat program dari suatu .a+asa
pemrograman tertentu2 Kedua +al
diatas$ memiliki paling sedikit satu
keluaran dan dapat memiliki nol atau
.anyak masukan$ merupakan dua
dari .e.erapa ciri algoritma2
Tugas algoritma dikatakan
selesai kalau algoritma terse.ut
suda+ meng+asilkan satu atau le.i+
jawa.an atas permasala+an yang
ada2 Dengan demikian setela+
mengerjakan langka+6langka+
penyelesaian masala+$ maka
algoritma terse.ut +arus .er+enti
tidak melakukan proses apapun2
!er+enti di sini artinya adala+ jika
diterjema+kan ke dalam .entuk
program dan program dijalankan$
&552 F Direktorat Pembinaan SMK
+)
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
maka setela+ meng+asilkan suatu
output$ program dapat langsung
.er+enti atau menunggu instruksi
le.i+ lanjut dari pengguna program
seperti mengulang per+itungan lagi$
keluar program 3meng+entikan
program4$ dan lain se.againya2
Dengan demikian ciri ketiga dari
algoritma adala+ setela+ selesai
mengerjakan langka+6langka+
penyelesaian masala+$ algoritma
+arus .er+enti2
Airi keempat dari algoritma
adala+ setiap langka+ yang di.uat
+arus di.uat seseder+ana mungkin
tetapi e5ekti5 agar dapat dipa+ami
ole+ pemroses 3manusia maupun
komputer4 se+ingga dapat
diselesaikan dalam waktu yang
singkat serta masuk akal2 Sedangkan
ciri yang terak+ir adala+ setiap
langka+ dalam algoritma +arus
dide5inisikan dengan tepat dan jelas
se+ingga tidak .erarti6dua
3am.iguitas4 se+ingga menim.ulkan
kesala+an dalam pena5siran ole+
pemroses
&$,$ Penera(an Algoritma
!erikut adala+ conto+
pemeca+an masala+ 3algoritma4
yang diam.il dari permasala+an yang
mungkin sering kita +adapi dalam
ke+idupan kita se+ari6+ari2 Diketa+ui
dua .ua+ em.er A dan ! dimana
em.er A .erisi air dan em.er ! .erisi
minyak tana+2 )ika diinginkan isi
kedua em.er itu saling ditukar
se+ingga em.er A .erisi minyak
tana+ dan em.er ! .erisi air$
.agaimanaka+ caranyaG Apaka+
cukup dengan cara 3mem.uat
algoritma4$ tuangkan isi em.er A ke
em.er ! dan kemudian tuangkan isi
em.er ! ke em.er AG Apaka+
permasala+an dapat diselesaikan
dengan cara 3algoritma4 terse.utG
)awa.annya adala+ tidak$ karena
algoritma terse.ut tidak logis dan
+asilnyapun tidak sesuai dengan
yang diinginkan karena algoritma
terse.ut akan meng+asilkan em.er A
akan .erisi campuran air dan minyak
tana+ sedangkan em.er ! akan
kosong2
!agaimanaka+ cara 3algoritma4
yang .enar dari permasala+an
terse.utG Algoritma yang .enar
adala+ pinda+kan da+ulu isi em.er A
ke em.er lain 3misal em.er A4$
kemudian setela+ em.er A kosong
pinda+ isi em.er ! ke em.er A2
:angka+ terak+ir adala+ mengisi
em.er ! dengan minyak tana+ yang
ada di em.er A2 7nila+ algoritma yang
paling logis dan meng+asilkan
jawa.an yang .enar atas
permasala+an terse.ut2
Seperti yang tela+ dikemukakan
se.elumnya$ setiap orang
mempunyai cara pemeca+an sendiri6
sendiri se+ingga setiap orang
dimungkinkan mempunyai algoritma
yang .er.eda6.eda untuk
memeca+kan suatu permasala+an
yang sama2 Aonto+nya adala+
permasala+an di atas2 :angka+
pertama .isa saja yang dipinda+
.ukan isi em.er A ke em.er A dulu$
tetapi isi em.er ! yang dipinda+kan
ke dalam em.er A terle.i+ da+ulu2
Setela+ itu .aru meminda+kan isi
em.er A ke dalam em.er ! dan
terak+ir meminda+ isi em.er A ke
em.er A2 Algoritma ini sedikit
.er.eda tetapi tetap meng+asilkan
jawa.an yang sama atas persoalan
yang ada2
+*
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
&$-$ Nota'i Algoritma
Algoritma mempunyai aturan
penulisan sendiri yang dise.ut
dengan notasi algoritma2 ,otasi
algoritma ini tidak tergantung dari
spesi5ikasi .a+asa pemrograman
tertentu dan komputer yang
mengeksekusinya2 9al ini
dikarenakan notasi algoritma
.ukanla+ notasi .a+asa
pemrograman2 ,otasi algoritma
merupakan .a+asa universal yang
dapat diterima ole+ semua .a+asa
pemrograman yang ada2 8le+ se.a.
itu algoritma yang .aik +arus dapat
diterjema+kan ke dalam .entuk
source code dari semua .a+asa
pemrograman yang ada2
ntuk mem.uat algoritma dari
suatu permasala+an$ .iasanya
digunakan sala+ satu dari tiga .ua+
notasi algoritma yang dikenal$ yaitu
uraian kalimat deskripti5$ 5low c+art$
atau pseudo code2 Se.agai conto+
permasala+an$ jika diinginkan se.ua+
program komputer yang dapat
mengeta+ui .ilangan ter.esar dari
tiga .ua+ .ilangan yang dimasukkan2
!agaimanaka+ algoritmanyaG
&$2$ De'kri(tiC Algoritma
Algoritma dengan uraian kalimat
deskripti5 adala+ notasi algoritma
yang paling seder+ana karena
algoritma ini menggunakan .a+asa
se+ari6+ari2 ntuk permasala+an
yang seder+ana penggunaan notasi
ini sangatla+ muda+$ akan tetapi
untuk permasala+an yang le.i+
komplek dan rumit$ penggunaan
notasi ini akan le.i+ sulit dan sering
kali terjadi am.igu dalam langla+6
langka+ penyelesaian masala+2 8le+
karena itula+ untuk kasus6kasus yang
le.i+ komplek$ penggunaan notasi ini
jarang sekali .a+kan tidak digunakan2
Permasala+an di atas$ yaitu
mencari .ilangan ter.esar dari tiga
.ua+ .ilangan yang dimasukkan$
tergolong permasala+an yang
seder+ana$ jadi algoritmanya masi+
muda+ dan dapat dijelaskan dengan
uraian kalimat deskripti5 se.agai
.erikut:
1! )a&ukkan &e%barang biangan &ebanyak tiga bua(!
"! A%bi biangan perta%a dan &et %ak&i%u%;nya &a%a dengan
biangan perta%a!
1! A%bi biangan kedua dan bandingkan dengan %ak&i%u%!
#! Apabia biangan kedua ebi( be&ar dari %ak&i%u% %aka uba(
%ak&i%u%;nya
%en-adi &a%a dengan biangan kedua!
*! A%bi biangan ketiga dan bandingan dengan %ak&i%u%!
6. Apabia biangan ketiga ebi( be&ar dari %ak&i%u% %aka uba( agi
%ak&i%u%;
nya %en-adi &a%a dengan biangan ketiga!
7. Lariabe %ak&i%u% akan beri&i biangan yang terbe&ar dan ta%pikan
(a&inya!
Algoritma dengan uraian kalimat
deskripti5 seperti di atas suda+ jarang
sekali kita temukan karena kadang
kala agak sulit untuk mema+aminya2
Yang paling .anyak kita temukan
adala+ algoritma 3dengan uraian
kalimat deskripti54 yang ditulis secara
le.i+ sistematis dan e5isien se+ingga
le.i+ muda+ untuk mema+aminya2
Algoritma terse.ut adala+ se.agai
.erikut:
&552 F Direktorat Pembinaan SMK
++
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
1! )a&ukkan a, b, dan >!
"! %ak a!
1! Cika b @ %ak, ker-akan angka( ke;#! Cika tidak, ker-akan angka( ke;
*!
#! %ak b!
*! Cika > @ %ak, ker-akan angka( ke;,! Cika tidak, ker-akan angka( ke;
+!
,! %ak >!
+! 4ui& %ak!
Dalam notasi algoritma$ .aik
menggunakan notasi algoritma
dengan uraian kalimat deskripti5$ 5low
c+art maupun pseudo code$ kita tidak
menggunakan tanda I 3sama
dengan4 tetapi menggunakan sim.ol
anak pana+ ke ara+ kiri 34 seperti
yang terli+at pada langka+ ke6%$ ?$
dan >2 Se.agai conto+ pada langka+
ke6%$ arti dari notasi terse.ut adala+
nilai varia.el a 3yang ada di se.ela+
kanan anak pana+4 di.erikan kepada
varia.el mak 3yang ada di se.ela+
kiri anak pana+42 Dengan demikian
jika nilai varia.el a adala+ "-$ maka
nilai mak juga "- atau dalam
penulisan secara matematis mak I a2
Penggunaan anak pana+ ini
dikarenakan$ seperti yang tela+
dikemukakan se.elumnya$ algoritma
tidak diperuntukkan untuk suatu
.a+asa pemrograman tertentu$ tetapi
dapat diaplikasikan atau
diterjema+kan ke dalam .entuk
source code dari semua .a+asa
pemrograman yang ada2 Dalam
pascal misalnya$ notasi yang
digunakan untuk tanda I 3sama
dengan4 adala+ :I 3titik dua
dilanjutkan dengan tanda sama
dengan4 se+ingga langka+ ke6% akan
diterjema+kan menjadi mak :I a2
Akan tetapi dalam .a+asa ABB
maupun )ava$ tanda I 3sama
dengan4 masi+ tetap digunakan
se+ingga penerjema+annya adala+
mak I a
&$4$ loG .hart
,otasi algoritma yang paling
.anyak digunakan adala+ 5low c+art
karena .entuknya yang seder+ana
dan muda+ dipa+ami2 <low c+art
3diagram alir4 adala+ penggam.aran
secara gra5ik dari langka+6langka+
pemeca+an masala+ yang +arus
diikuti ole+ pemroses2 <low c+art
terdiri atas sekumpulan sim.ol$
dimana masing6masing sim.ol
menggam.arkan suatu kegiatan
tertentu2 <low c+art diawali dengan
penerimaan masukan 3input4$
pemrosesan masukan$ dan diak+iri
dengan menampilkan +asilnya
3output42
Adapun sim.ol6sim.ol yang
sering digunakan untuk menyusun
5low c+art 3dalam microso5t visio4
adala+ se.agai .erikut :
"4 *asukan
*asukan merupakan kegiatan
penerimaan data yang
disim.olkan dengan jajaran
genjang2 Kita dapat menuliskan
masukan yang diperlukan pada
suatu waktu secara satu per satu
maupun secara keseluru+an$
akan tetapi untuk alasan e5isiensi
ruang gam.ar .iasanya masukan
+,
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
dituliskan .ersamaan secara
keseluru+an2
;am.ar %2=2 Sim.ol proses
;am.ar %2"2 Sim.ol masukan
%4 *asukan manual
ntuk masukan secara manual
yang dimasukkan melalui
key.oard$ atau perangkat input
lainnya seperti .arcode reader$
kita dapat menggunakan sim.ol
masukan secara manual2 Sama
dengan sim.ol masukan$ pada
sim.ol masukan manual ini untuk
alasan e5isiensi ruang gam.ar
.iasanya masukan juga dituliskan
.ersamaan secara keseluru+an2
;am.ar %2%2 Sim.ol masukan
manual
=4 Proses
Data yang dimasukan kemudian
diproses untuk meng+asilkan
jawa.an atas persoalan yang
ingin dipeca+kan2 Kegiatan
memproses data ini disim.olkan
dengan persegi panjang2 Sama
seperti sim.ol pada masukan$
penulisan operasi6operasi pada
data dapat dilakukan secara satu
per satu maupun secara
keseluru+an2
?4 Keluaran
Keluaran adala+ +asil dari
pemrosesan data dan merupakan
jawa.an atas permasala+an yang
ada2 Keluaran ini +arus
ditampilkan pada layar monitor
agar dapat di.aca ole+ pengguna
program2 Sama seperti aturan
pada sim.ol6sim.ol se.elumnya$
penulisan +asil pemrosesan data
dapat dilakukan secara satu per
satu maupun secara keseluru+an2
;am.ar %2?2 Sim.ol keluaran
'4 Perca.angan
Yang dimaksud dengan
perca.angan disini adala+ suatu
kegiatan untuk mengecek atau
memeriksa suatu keadaan
apaka+ memenu+i suatu kondisi
tertentu atau tidak2 )adi dalam
perca.angan ini$ kita +arus
menuliskan kondisi apa yang
+arus dipenu+i ole+ suatu
keadaan2 9asil dari pemeriksaan
keadaan ini adala+ YA atau
T7DAK2 )ika pemeriksaan
keadaan meng+asilkan kondisi
yang .enar$ maka jalur yang
dipili+ adala+ jalur yang .erla.el
YA$ sedangkan jika pemeriksaan
keadaan meng+asilkan kondisi
yang sala+$ maka jalur yang
&552 F Direktorat Pembinaan SMK
+-
>4 Su. rutin
Su. rutin adala+ suatu .agian
dalam program yang dapat
melakukan 3atau di.eri4 tugas
tertentu2 )adi su. rutin
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
dipili+ adala+ jalur yang .erla.el
T7DAK2 !er.eda dengan aturan
pada sim.ol6sim.ol se.elumnya$
penulisan kondisi +arus dilakukan
secara satu per satu 3satu notasi
perca.angan untuk satu kondisi42
;am.ar %2'2 Sim.ol perca.angan
merupakan Hprogram kecil1 yang
menjadi .agian dari suatu
program yang .esar2 Su. rutin
ada dua macam$ yaitu prosedur
3procedure4 dan 5ungsi 35unction42
Per.edaan antara keduanya
adala+ setela+ dipanggil prosedur
tidak mengem.alikan suatu nilai
sedangkan 5ungsi selalu
mengem.alikan suatu nilai2
Dalam .a+asa ABB kedua su.
rutin terse.ut dijadikan satu yaitu
5unction$ sedangkan untuk )ava
menggunakan class dimana
keduanya .isa diatur untuk dapat
mengem.alikan nilai atau tidak
dapat mengem.alikan nilai2 Su.
rutin ini akan didiskusikan pada
.a. tersendiri2
Su. rutin memiliki suatu 5low
c+art yang .erdiri sendiri diluar
5low c+art utama2 )adi dalam
sim.ol su. rutin$ kita cukup
menuliskan nama su. rutinnya
saja$ sama seperti jika kita
melakukan pemanggilan ter+adap
suatu su. rutin pada program
utama 3main program4 yang akan
anda pelajari pada .agian atau
.a. lain pada .uku ini2 Aturan
penulisan sim.ol su. rutin sama
dengan sim.ol perca.angan$
yaitu penulisan nama su. rutin
dilakukan secara satu per satu2
;am.ar %2>2 Sim.ol su. rutin
(4 Ara+ aliran
Ara+ aliran merupakan jalur yang
+arus diikuti dan merupakan garis
peng+u.ung yang
meng+u.ungkan setiap langka+
pemeca+an masala+ yang ada
dalam 5low c+art2 Ara+ aliran ini
disim.olkan dengan anak pana+
;am.ar %2(2 Sim.ol ara+ aliran
#4 Terminator
Terminator .er5ungsi untuk
menandai titik awal dan titik ak+ir
dari suatu 5low c+art2 Sim.ol
terminator ini di.eri la.el *:A7
untuk menandai titik awal dari
5low c+art dan la.el SE:ESA7
untuk menandai titik ak+ir dari
5low c+art2 )adi dalam se.ua+
5low c+art +arus ada dua sim.ol
terminator$ yaitu sim.ol
terminator untuk *:A7 dan
SE:ESA72
+2
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
;am.ar %2#2 Sim.ol terminator
@4 Konektor
Konektor .er5ungsi untuk
meng+u.ungkan suatu langka+
dengan langka+ lain dalam
se.ua+ 5low c+art dengan
keadaan on page atau o55 page2
Yang dimaksud dengan konektor
on page adala+ konektor yang
digunakan untuk meng+u.ungkan
suatu langka+ dengan langka+
lain dalam satu +alaman2
Sedangkan konektor o55 page
adala+ konektor untuk
meng+u.ungkan suatu langka+
dengan langka+ lain dalam
+alaman yang .er.eda2 Konektor
ini digunakan apa.ila ruang
gam.ar yang kita gunakan untuk
menggam.ar 5low c+art tidak
cukup luas untuk memuat 5low
c+art secara utu+$ jadi perlu
dipisa+kan atau digam.ar di
+alaman yang .er.eda2
3a4 3.4
;am.ar %2@2 Sim.ol konektor on
page 3a4 dan o55 page 3.4
"-4 Dokumen
Dokumen merupakan tampilan
data secara 5isik yang dapat
di.aca ole+ manusia2 Data ini
.iasanya merupakan +asil
pemeca+an masala+ 3in5ormasi4
yang tela+ dicetak 3print out42
;am.ar %2"-2 Sim.ol dokumen
!erikut adala+ 5low c+art untuk
permasala+an yang di.erikan
3mencari .ilangan ter.esar dari tiga
.ilangan acak yang dimasukkan4
&552 F Direktorat Pembinaan SMK
+4
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
*ulai
a$ .$ c
Ya
*aksimum T . *aksimum .
*aksimum a
Tidak
*aksimum T c
Ya
*aksimum c
Tidak
*aksimum
Selesai
;am.ar %2""2 <lowc+art
&$"5$ P'eu%o /o%e
Pseudo code adala+ algoritma
yang .entuknya 3strukturnya4 sangat
mirip dengan .a+asa pemrograman
k+ususnya .a+asa pemrograman
terstruktur seperti pascal2 Kemiripan
ini merupakan keuntungan dari
pseudo code karena implementasi
atau penerjema+an algoritma ke
dalam source code suatu .a+asa
pemrograman sangatla+ muda+
meskipun penggunaannya tidak
sepopuler 5low c+art2
Dalam penulisannya$ pseudo
code +arus terdiri dari tiga .agian$
yaitu :
"2 )udul algoritma
!agian yang terdiri atas nama
algoritma dan penjelasan
,5
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
3spesi5ikasi4 dari algoritma
terse.ut2 ,ama se.aiknya
singkat dan menggam.arkan
apa yang dapat dilakukan ole+
algoritma terse.ut2
%2 Deklarasi
!agian untuk mende5inisikan
semua nama yang digunakan di
dalam program2 ,ama terse.ut
dapat .erupa nama tetapan$
peu.a+ atau varia.el$ tipe$
prosedur$ dan 5ungsi2
=2 Deskripsi
!agian ini .erisi uraian langka+6
langka+ penyelesaian masala+
yang ditulis dengan
menggunakan aturan6aturan yang
akan dijelaskan selanjutnya2
Algoritma untuk permasala+an di
atas yaitu mencari .ilangan ter.esar
dari tiga .ilangan acak yang
dimasukkan dengan menggunakan
pseudo code adala+:
Algoritma .ilangan]ter.esar
6agorit%a ini %en>ari biangan terbe&ar dari tiga biangan yang
di%a&ukkan8
dekara&i
a,b,>,%ak M
integer de&krip&i
read(a,b,>)
%ak a
iH (%ak?b)
%ak
b e&e
iH(%ak?>)
%ak >
end iH
Prite(%a
k)
Dalam pseudo code$ garis
.awa+ +arus digunakan untuk kata
algoritma 3yang diikuti ole+ judul dari
algoritma4$ kata deklarasi$ kata
deskripsi$ tipe data$ read$ write$ i5$
else$ end i5$ 5or$ end 5or$ w+ile$ end
w+ile$ do w+ile$ dan end do w+ile
&$""$ Penerjemahan ke ko%e
'umber
Se.elum mem.a+as mengenai
penerjema+an algoritma ke dalam
.entuk source code .a+asa
pemrograman 3program komputer4
ABB atau .a+asa lainnya seperti
)ava maka se.aiknya kita
mengeta+ui le.i+ da+ulu langka+6
langka+ yang .iasa dilakukan untuk
mem.uat suatu program komputer2
:angka+6langka+ terse.ut adala+ :
"2 *ende5inisikan permasala+an
7ni merupakan langka+ pertama
yang sering dilupakan orang2
*enurut +ukum *urp+y 39enry
:edgard4: HSemakin cepat
menulis program$ akan semakin
lama kita dapat
menyelesaikannya12 9al ini
terutama dirasakan apa.ila kita
mem.uat program untuk
&552 F Direktorat Pembinaan SMK
,"
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
permasala+an yang komplek2
8le+ karena itu se.elum kita
menulis source code suatu
program se.aiknya kita
menentukan atau
mengidenti5ikasi terle.i+ da+ulu
inti dari permasala+annya$
kemudian apa saja yang dapat
dan +arus dipeca+kan dengan
.antuan komputer$ dan yang
terak+ir adala+ apa masukan
untuk programnya dan
.agaimana nanti keluarannya2
%2 *enemukan solusi
Setela+ mende5inisikan masala+$
maka langka+ .erikutnya adala+
menentukan solusinya2 )ika
permasala+an terlalu komplek$
maka ada .aiknya masala+
terse.ut dipeca+ menjadi
.e.erapa modul kecil dapat
.erupa prosedure$ 5ungsi$ atau
class se+ingga akan le.i+ muda+
untuk diselesaikan2 Penggunaan
modul ini akan mem.uat program
utamanya menjadi le.i+ singkat$
muda+ untuk dili+at dan dianalisis
untuk tujuan de.uging serta untuk
pengem.angan dari program2
=2 *emili+ algoritma
Pili+la+ 3atau .uatla+4 algoritma
yang .enar6.enar sesuai dan
e5isien untuk permasala+an yang
di.erikan2
?2 *emili+ .a+asa pemrograman
dan menulis source code
program
!a+asa pemrograman yang
digunakan +endaknya .a+asa
yang memang suda+ anda kuasai
dengan .aik2 Atau jika masi+
dalam ta+ap .elajar$ pili+la+
.a+asa pemrograman yang
muda+ dipelajari dan digunakan
serta memiliki tingkat
kompati.ilitas tinggi dengan
perangkat keras dan plat5orm
3sistem operasi4 lainnya2
'2 *enguji program
Setela+ selesai menulis source
code 3program suda+ jadi4$ ujila+
program terse.ut dengan segala
macam kemungkinan yang ada$
termasuk error6+andling$ se+ing6
ga program terse.ut .enar6.enar
+andal dan layak untuk
digunakan2
>2 *enulis dokumentasi
Dokumentasi sangatla+ penting
agar pada suatu saat jika kita
ingin mengem.angkan program$
kita tidak mengalami kesulitan
dalam mem.aca source code
yang suda+ kita tulis2 Aara paling
muda+ dan seder+ana dalam
mem.uat suatu dokumentasi
adala+ dengan menuliskan
komentar6komentar kecil pada
suatu .aris 3atau suatu .agian
dari source code4 tentang apa
maksud dari kode6kode terse.ut
dan apa kegunaannya$ kemudian
varia.el apa saja yang digunakan
dan untuk apa$ serta parameter6
parameter yang ada pada suatu
prosedur dan 5ungsi2
(2 *erawat program
Program yang suda+ jadi
se.aiknya juga dilakukan
perawatan untuk mencega+
munculnya .ug yang se.elumnya
tidak terdeteksi2 Selain itu juga
.erguna untuk menam.a+
5asilitas65asilitas .aru yang da+ulu
sewaktu di.uat .elum ada2
Pada .a. ini kita +anya 5okus
pada langka+ pertama sampai
dengan langka+ keempat saja2
Sedangkan untuk dapat
menerjema+kan notasi algoritma
yang tela+ di.uat ke dalam .entuk
,&
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
source code suatu .a+asa
pemrograman$ se+arusnya kita
mama+ami terle.i+ da+ulu .a+asa
pemrograman yang akan kita
gunakan$ seperti aturan tata
.a+asanya$ intruksi6instruksi yang
digunakan$ tipe data$ dan masi+
.anyak lagi2 Semua itu akan kita
pelajari satu persatu di.agian lain
pada .uku ini2 8le+ karena kita .aru
akan mempelajari .a+asa
pemrograman yaitu ABB atau
program lainnya seperti java$ maka
untuk mempermuda+ pema+aman
tentang algoritma akan di.erikan
conto+6conto+ permasala+an
seder+ana yang sering dijumpai
dalam pemrograman$ .agaimana
algoritmanya dalam .entuk tiga
notasi algoritma yang tela+ di.erikan$
dan kemudian .agaimana
mengimplementasikan atau
menerjemakan algoritma terse.ut ke
dalam .entuk source code .a+asa
pemrograman ABB atau program
lainnya seperti java2
ntuk mem.antu penerjema+an
algoritma kita juga +arus
memper+atikan jenis6jenis proses
yang .iasanya kita temukan dalam
algoritma2 Dalam algoritma ada
empat jenis proses yang dikenal$
yaitu :
"2 Se^uence Process$ merupakan
instruksi yang dikerjakan secara
sekuensial 3.erurutan42
%2 Selection Process$ adala+
instruksi yang dikerjakan jika
memenu+i suatu kriteria atau
kondisi 3keadaan4 tertentu2
=2 7teration Process$ yaitu instruksi
yang dikerjakan selama
memenu+i suatu kriteria atau
kondisi 3keadaan4 tertentu2
?2 Aoncurrent Process$ .e.erapa
instruksi dikerjakan secara
.ersama2
!erikut merupakan conto+6
conto+ permasala+an$ algoritma
penyelesaian dalam tiga notasi
algoritma serta penerjema+annya
dalam .a+asa pemrograman ABB
atau program lainnya seperti java2
"2 *asala+ penukaran isi em.er
3conto+ se^uence process42
*asala+ penukaran isi em.er
dapat kita aplikasikan untuk
masala+ .erikut ini2 *ula6mula A
.ernilai "@ dan ! .ernilai ==2 )ika
nilai kedua varia.el A dan !
terse.ut ditukar$ A menjadi ==
dan ! menjadi "@$ maka
algoritmanya adala+ :
*enggunakan uraian kalimat deskripti5
1) Set niai 3ariabe A 17 dan B 11
") Set niai dari 3ariabe C %en-adi &a%a dengan 3ariabe A!
1) Set niai 3ariabe A %en-adi &a%a dengan B!
#) Set niai 3ariabe B %en-adi &a%a dengan C!
*) 4a%pikan niai 3ariabe A dan B!
Algoritma diatas dapat juga ditulis seperti di.awa+ ini:
1) A 17 dan B 11
") C A
1) A B
&552 F Direktorat Pembinaan SMK
,)
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
#) B C
*) 4ui& A dan B
)ika algoritma terse.ut diatas digam.ar menggunakan 5low c+art adala+
se.agai .erikut:
*ulai
A "@
! ==
A A
A !
! A
A$ !
Selesai
;am.ar %2"%2 ;am.ar 5lowc+art
,*
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
a4 *enggunakan pseudo code
Algoritma tukar]data
{algoritma ini digunakan untuk menukarkan dua buah data }
dekara&i
a,b,> M
integer
de&krip&i
a
17 b
11
> a
a
b
b >
Prite(a,
b)
Dari ketiga notasi algoritma di
atas dapat disimpulkan .a+wa
langka+6langka+ pemeca+an
masala+ yang tela+ di.uat dapat
di.agi dalam tiga kelompok$ yaitu
mem.eri nilai varia.el A dan !$
menukarkan nilainya$ dan terak+ir
adala+ menampilkannya2 8le+
karena itu penerjema+an notasi
algoritma ke dalam .entuk source
code .a+asa pemrograman juga
+arus mengikuti langka+6langka+
yang di.erikan dalam ketiga
algoritma2 !erikut adala+
penerjema+an algoritma ke dalam
.a+asa ABB2
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int %ain() 6
#! int a ' 17, b ' 11A
*! int > ' aA
,! a ' bA
+! b ' >A
8! >out ?? Ia ' I ?? a ?? endA
7! >out ?? Ib ' I ?? bA
10! return 0A
11!8
:angka+ ke6? merupakan
pem.erian nilai varia.el A dan !2
:angka+ selanjutnya$ langka+ ke6'
sampai dengan langka+ ke6($
merupakan proses penukaran data2
Dan langka+ terak+ir$ yaitu
menampilkan data yang tela+ ditukar$
ada dalam langka+ ke6# dan @2
:angka+6langka+ yang lainnya
merupakan aturan tata .a+asa dalam
.a+asa ABB yang akan dijelaskan
dalam .a.6.a. selanjutnya2
&552 F Direktorat Pembinaan SMK
,+
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
Sedangkan penerjema+an algoritma6
algoritma terse.ut dalam .a+asa
)ava adala+ se.agai .erikut:
1! >a&& tukarData 6
"! pubi> &tati> 3oid %ain(StringN O arg&) 6
1! int a'17, b'11A
#! int > ' aA
*! a ' bA
,! b ' >A
+! Sy&te%!out!printn(Ba ' B : a)A
8! Sy&te%!out!printn(Bb ' B : b)A
7! 8
10! 8
:angka+ ke6= merupakan
pem.erian nilai varia.el A dan !$
langka+ ke6? sampai dengan
langka+ ke6> merupakan proses
penukaran data$ dan langka+ ke6
( dan # merupakan kode untuk
menampilkan data yang tela+
ditukar2 Sedangkan langka+ yang
lainnya merupakan aturan tata
.a+asa )ava yang akan
dijelaskan dalam .a.6.a.
selanjutnya2
%2 *asala+ mencari .ilangan
ter.esar dari tiga .ilangan yang
dimasukkan 3conto+ selection
process42
Algoritma pada permasala+an
ini suda+ di.erikan$ silakan li+at
kem.ali su. .a. notasi algoritma2
Dari ketiga notasi algoritma
terse.ut dapat kita keta+ui .a+wa
ada dua proses pemeriksaan
keadaan 3data42 Pada algoritma
dengan uraian kalimat deskripti5$
proses pemeriksaan ini dapat kita
identi5ikasi dengan adanya kata
kunci )7KA2 Dengan demikian
pada saat menerjema+kan
langka+ ke6= dan langka+ ke6'
dari algoritma terse.ut ke dalam
.entuk source code .a+asa ABB
atau program lainnya seperti java$
kita +arus menggunakan klausa
i5342
Sedangkan pada algoritma
dengan 5low c+art$ proses
pemeriksaan keadaan
disim.olkan dengan sim.ol
perca.angan dimana kalau
jalurnya kita telusuri$ .aik jalur YA
maupun T7DAK$ akan ter+u.ung
dengan langka+ penyelesaian
masala+ selanjutnya$ tidak
kem.ali ke langka+ se.elumnya
ataupun kem.ali ke sim.ol
perca.angan semula karena jika
ini terjadi kita tidak .isa
menggunakan klausa i534 dalam
penerjema+an ke .entuk source
code .a+asa ABB atau program
lainnya seperti java 3li+at conto+
permasala+an .erikutnya$ yaitu
conto+ ke6= dan ke6?42
ntuk algoritma dengan
pseudo code$ penerjema+an
akan jau+ le.i+ muda+ karena
seperti yang tela+ dikemukakan
se.elumnya .a+wa pseudo code
ini strukturnya sangat mirip
,,
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
dengan penulisan source code
.a+asa pemrograman2
Dengan demikian penerjema+an
algoritma ke dalam .a+asa ABB
adala+ 3per+atikan source code .aris
ke6"% dan "=4:
1! =in>ude ?io&trea%@
"! *+i! "#e+(")e &tdA
1! it %ain() 6
#! it a,b,>,%akA
*! >out ?? BBiangan perta%a ' BA
,! >in @@ aA
+! >out ?? BBiangan kedua ' BA
8! >in @@ bA
7! >out ?? BBiangan ketiga ' BA
10! >in @@ >A
11! %ak ' aA
1"! i7 (%ak ? b) %ak ' bA
11! e-+e i7 (%ak ? >) %ak ' >A
1#! >out ?? BBiangan terbe&arnya ' B ?? %akA
1*! .et*. 0A
1,! 8
Sedangkan penerjema+an dalam
.a+asa lain misalnya .a+asa
)ava adala+ se.agai .erikut
3per+atikan source code .aris ke6
"? dan "'4
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& bi4erbe&ar 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int a,b,>A
,! S>anner input ' neP S>anner(Sy&te%!in)A
+! Sy&te%!out!print(BBiangan perta%a ' B)A
8! a ' input!neYtInt()A
7! Sy&te%!out!print(BBiangan kedua ' B)A
10! b ' input!neYtInt()A
11! Sy&te%!out!print(BBiangan ketiga ' B)A
1"! > ' input!neYtInt()A
11! int %ak ' aA
1#! iH (%ak ? b) %ak ' bA
1*! e&e iH (%ak ? >) %ak ' >A
1,! Sy&te%!out!print(BBiangan terbe&arnya ' B : %ak)A
&552 F Direktorat Pembinaan SMK
,-
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
1+! 8
18! 8
Pada permasala+an ini$ kita juga
dapat menggunakan algoritma
lain$ yaitu :
a4 *enggunakan uraian kalimat
deskripti5
1) )a&ukkan a, b, dan >!
") Cika a @ b, %aka ker-akan angka( ke;1! Cika tidak, ker-akan
angka ke;*!
1) Cika a @ >, %aka ker-akan angka( ke;#! Cika tidak, ker-akan
angka ke;+!
#) %ak a!
*) Cika b @ >, ker-akan angka( ke;,! Cika tidak, ker-akan angka(
ke;+!
,) %ak b!
+) %ak >!
8) 4ui& %ak!
,2
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
.4 *enggunakan 5low c+art
*ulai
a$ .$ c
Ya
a U . a U c
Ya
*aksimum a
Tidak Tidak
Ya
*aksimum .
. U c
Tidak
*aksim um c
*aksimum
Selesai
;am.ar %2"=2 <lowcart
a4 *enggunakan pseudo code
Algoritma .ilangan]ter.esar
6agorit%a ini %en>ari biangan terbe&ar dari tiga biangan
yang di%a&ukkan &e>ara a>ak8
&552 F Direktorat Pembinaan SMK
,4
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
dekara
&i
a,b,>,%ak M
in teger de&krip&i
read(a,b,>)
iH (a @ b)
iH (a @ >)
%ak
a e&e %ak
> end iH
e&e
iH(b @ >)
%ak
b e&e %ak
> end iH
end iH
Prite(%
ak
Pada algoritma dengan uraian
kalimat deskripti5 kita dapat
mengidenti5ikasi .a+wa terdapat
tiga .ua+ pemeriksaan keadaan$
yaitu langka+ ke6%$ =$ dan '2
Pada langka+ ke6%$ jika kondisi
terpenu+i$ langka+ selanjutnya$
yaitu langka+ ke6=$ adala+
merupakan pemeriksaan
keadaan lagi2 Demikian pula jika
kondisi yang tela+ ditentukan
tidak terpenu+i$ langka+
.erikutnya$ yaitu langka+ ke6'$
adala+ merupakan pemeriksaan
keadaan kem.ali2 Dari sini dapat
disimpulkan .a+wa nantinya
penggunaan klausa i534 yang
kedua 3langka+ ke6=4 akan
.erada di dalam klausa i534 yang
pertama 3langka+ ke6%42
Sedangkan penggunaan klausa
i534 yang ketiga 3langka+ ke6'4
juga ada dalam klausa i534 yang
pertama pada .agian else2 9al ini
dinamakan perca.angan
.ersarang$ yaitu perca.angan
yang ada dalam perca.angan
lainnya2
Ke.eradaan perca.angan
.ersarang ini juga dapat diidenti5ikasi
dari sim.ol perca.angan yang
ter+u.ung dengan sim.ol
perca.angan lainnya2 7denti5ikasi ini
le.i+ jelas terli+at pada algoritma
dengan pseudo code2 Dengan
demikian penerjema+an algoritma ke
dalam .a+asa ABB adala+:
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int %ain() 6
#! int a,b,>,%akA
*! >out ?? BBiangan perta%a ' BA
,! >in @@ aA
-5
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
+! >out ?? BBiangan kedua ' BA
8! >in @@ bA
7! >out ?? BBiangan ketiga ' BA
10! >in @@ >A
11! iH (a @ b) 6
1"! iH (a @ >)
11! %ak ' aA
1#! e&e %ak ' >A
1*! 8
1,! e&e 6
1+! iH (b @ >)
18! %ak ' bA
17! e&e %ak ' >A
"0! 8
"1! >out ?? BBiangan terbe&arnya ' B ?? %akA
""! return 0A
"1! 8
Klausa i534 pada source code
.aris ke6"% sampai dengan .aris ke6
"? ada di dalam klausa i534 .aris ke6
""2 Sedangkan klausa i534 .aris ke6"(
sampai dengan .aris ke6"@ juga ada
di dalam klausa i534 3.aris ke6""4
.agian else 3.aris ke6">42 Sedangkan
penerjema+an algoritma ke dalam
.a+asa )ava adala+ 3per+atikan .aris
ke6"= sampai dengan .aris ke6%%4 :
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& biBe&ar 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int a,b,>,%akA
,! S>anner input ' neP S>anner(Sy&te%!in)A
+! Sy&te%!out!print(BBiangan perta%a ' B)A
8! a ' input!neYtInt()A
7! Sy&te%!out!print(BBiangan kedua ' B)A
10! b ' input!neYtInt()A
11! Sy&te%!out!print(BBiangan ketiga ' B)A
1"! > ' input!neYtInt()A
11! iH (a @ b) 6
1#! iH (a @ >)
1*! %ak ' aA
1,! e&e %ak ' >A
1+! 8
&552 F Direktorat Pembinaan SMK
-"
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
18! e&e 6
17! iH (b @ >)
"0! %ak ' bA
"1! e&e %ak ' >A
""! 8
"1! Sy&te%!out!print(BBiangan terbe&arnya ' B : %ak)A
"#! 8
"*! 8
=2 Diminta suatu program dimana
jika dimasukkan suatu .ilangan 3"
sampai dengan (4 maka akan
menampilkan nama +ari$ yaitu :
!ilangan " untuk +ari *inggu2
!ilangan % untuk +ari Senin2
!ilangan = untuk +ari Selasa2
!ilangan ? untuk +ari Ra.u2
!ilangan ' untuk +ari Kamis2
!ilangan > untuk +ari )umat2
!ilangan ( untuk +ari Sa.tu2
Algoritmanya adala+ :
*enggunakan uraian kalimat deskripti5
1) )a&ukan biangan &ebua( biangan buat (angka)!
") Cika angka 1, %aka ker-akan angka( ke;1! Cika tidak, ker-akan
angka( ke;#!
1) (ari I)ingguJ!
#) Cika angka ", %aka ker-akan angka( ke;*! Cika tidak, ker-akan
angka( ke;,!
*) (ari ISeninJ!
,) Cika angka 1, %aka ker-akan angka( ke;+! Cika tidak, ker-akan
angka( ke;8!
+) (ari ISea&aJ!
8) Cika angka #, %aka ker-akan angka( ke;7! Cika tidak, ker-akan
angka( ke;10!
7) (ari I/abuJ!
10) Cika angka *, %aka ker-akan angka( ke;11! Cika tidak, ker-akan
angka( ke;1"!
11) (ari IKa%i&J!
1") Cika angka ,, %aka ker-akan angka( ke;11! Cika tidak, ker-akan
angka( ke;1#!
11) (ari ICu%atJ!
1#) Cika angka +, %aka ker-akan angka( ke;1*! Cika tidak, ker-akan
angka( ke;1,!
1*) (ari ISabtuJ!
1,) (ari I4idak ada na%a (ari untuk angka ter&ebutJ
1+) 4a%pikan (ari!
-&
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
a4 *enggunakan 5low c+art
*ulai
A !
angka
angka %
Ya
+ari HSenin1
Tidak
Ya
angka " +ari H*inggu1
Ya
angka = +ari HSelasa1
Tidak
A
Tidak
!
Ya
angka ? +ari HRa.u1
Tidak
Ya
angka ' +ari HKamis1
Tidak
Ya
angka > +ari H)umat1
Tidak
Ya
angka ( +ari HSa.tu1
Tidak
+ari HTidak ada
nama +ari1
+ari
;am.ar %2"?2 <lowc+art
Selesai
&552 F Direktorat Pembinaan SMK
-)
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
.4 *enggunakan pseudo code
Algoritma nama]+ari
{algoritma ini digunakan untuk mengetahui nama hari dari
bilangan bulat yang dimasukkan}
dekara&i
angka M
integer (ari
M >(ar
de&krip&i
read(angk
a) iH(angka
1)
(ari I)ingguJ
e&e iH(angka
") (ari
ISeninJ e&e
iH(angka 1)
(ari ISea&aJ
e&e iH(angka
#) (ari
I/abuJ e&e
iH(angka *)
(ari
IKa%i&J e&e
iH(angka ,)
(ari ICu%atJ
e&e iH(angka
+) (ari
ISabtuJ
e&e
(ari I4idak ada na%a (ariJ
end iH
Prite((a
ri)
Algoritma diatas dapat juga ditulis seperti di.awa+ ini:
Algoritma nama]+ari
{algoritma ini digunakan untuk mengetahui nama hari dari
bilangan bulat yang dimasukkan}
dekara&i
angka M integer
(ari M
>(ar
de&krip&i
read(angka)
&Pit> ( (angka)
>a&e 1 M (ari I)ingguJ
>a&e " M (ari ISeninJ
-*
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
>a&e 1 M (ari
ISea&aJ >a&e # M
(ari I/abuJ >a&e
* M (ari IKa%i&J
>a&e , M (ari
ICu%atJ >a&e + M
(ari ISabtuJ
deHaut M (ari I4idak ada na%a (ariJ
end &Pit>(
Prite((ari)
Pada algoritma dengan uraian
kalimat deskripti5 kita dapat
mengidenti5ikasi .a+wa terdapat
tuju+ .ua+ pemeriksaan keadaan$
yaitu langka+ ke6%$ ?$ >$ #$ "-$ "%$
dan "?2 Pemeriksaan yang se.anyak
ini sangat tidak e5ekti5 kalau kita
menggunakan klausa i5342 Agar
program kita le.i+ e5isien$ maka kita
menggunakan switc+34 untuk
pemeriksaan keadaan se.anyak ini2
Dengan demikian penerjema+an
algoritma ke dalam .a+asa ABB
adala+ :
1! =in>ude ?io&trea%@
"! =in>ude ?>&tring@
1! u&ing na%e&pa>e &tdA
#! int %ain() 6
*! int angkaA
,! &tring (ariA
+! >out ?? BBiangan ' BA
8! >in @@ angkaA
7! iH (angka''1) (ari'B)ingguBA
10! e&e iH (angka''") (ari'BSeninBA
11! e&e iH (angka''1) (ari'BSea&aBA
1"! e&e iH (angka''#) (ari'B/abuBA
11! e&e iH (angka''*) (ari'BKa%i&BA
1#! e&e iH (angka'',) (ari'BCu%atBA
1*! e&e iH (angka''+) (ari'BSabtuBA
1,! e&e (ari'Btidak adaBA
1+! >out ?? BKa%a (ari ke;B ?? angka ?? B adaa( B ?? (ariA
18! return 0A
17! 8
&552 F Direktorat Pembinaan SMK
-+
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
Program diatas dapat juga ditulis seperti di.awa+ ini:
1! =in>ude ?io&trea%@
"! =in>ude ?>&tring@
1! u&ing na%e&pa>e &tdA
#! int %ain() 6
*! int angkaA
,! &tring (ariA
+! >out ?? BBiangan ' BA
8! >in @@ angkaA
7! &Pit>((angka) 6
10! >a&e 1 M (ari ' B)ingguBA
11! breakA
1"! >a&e " M (ari ' BSeninBA
11! breakA
1#! >a&e 1 M (ari ' BSea&aBA
1*! breakA
1,! >a&e # M (ari ' B/abuBA
1+! breakA
18! >a&e * M (ari ' BKa%i&BA
17! breakA
"0! >a&e , M (ari ' BCu%atBA
"1! breakA
""! >a&e + M (ari ' BSabtuBA
"1! breakA
"#! deHaut M (ari ' Btidak adaBA
"*! 8
",! >out ?? BKa%a (ari ke;B ?? angka ?? B adaa( ' B ?? (ariA
"+! return 0A
"8! 8
Sedangkan dalam conto+ dalam .a+asa )ava adala+ :
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& bab"W01 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int angkaA
,! String (ariA
+! S>anner input ' neP S>anner(Sy&te%!in)A
8! Sy&te%!out!print(BBiangan ' B)A
7! angka ' input!neYtInt()A
10! iH (angka''1) (ari'B)ingguBA
-,
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
11! e&e iH (angka''") (ari'BSeninBA
1"! e&e iH (angka''1) (ari'BSea&aBA
11! e&e iH (angka''#) (ari'B/abuBA
1#! e&e iH (angka''*) (ari'BKa%i&BA
1*! e&e iH (angka'',) (ari'BCu%atBA
1,! e&e iH (angka''+) (ari'BSabtuBA
1+! e&e (ari'Btidak adaBA
18! Sy&te%!out!print(BKa%a (ari ke;B : angka : B adaa( ' B :
(ari)A
17! 8
"0! 8
Program diatas dapat juga ditulis seperti di.awa+ ini:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& bab"W01W" 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int angkaA
,! String (ariA
+! S>anner input ' neP S>anner(Sy&te%!in)A
8! Sy&te%!out!print(BBiangan ' B)A
7! angka ' input!neYtInt()A
10! &Pit>((angka) 6
11! >a&e 1 M (ari ' B)ingguBA
1"! breakA
11! >a&e " M (ari ' BSeninBA
1#! breakA
1*! >a&e 1 M (ari ' BSea&aBA
1,! breakA
1+! >a&e # M (ari ' B/abuBA
18! breakA
17! >a&e * M (ari ' BKa%i&BA
"0! breakA
"1! >a&e , M (ari ' BCu%atBA
""! breakA
"1! >a&e + M (ari ' BSabtuBA
"#! breakA
"*! deHaut M (ari ' Btidak adaBA
",! 8
"+! Sy&te%!out!print(BKa%a (ari ke;B : angka : B adaa( ' B :
(ari)A
"8! 8
"7! 8
&552 F Direktorat Pembinaan SMK
--
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
?2 *asala+ meng+itung rata6rata
dari sejumla+ data yang
dimasukkan secara manual
melalui key.oard 3conto+ iteration
process42 Algoritmanya adala+:
*enggunakan uraian kalimat deskripti5
1) )a&ukan -u%a( (n) data yang diinginkan!
") Sea%a -u%a( data yang di%a&ukkan kurang dari n, ker-akan
angka( ke;
1 dan ke;#! Cika tidak ker-akan angka( ke;*!
1) )a&ukan data!
#) 4a%ba(kan data yang di%a&ukkan dengan data &ebeu%nya!
*) 2itung rata;rata data!
,) 4a%pikan be&ar rata;ratanya!
raian diatas dapat juga ditulis seperti di.awa+ ini:
1) )a&ukkan n
") i 0
1) Su% 0
#) Sea%a i ? n, ker-akan angka( ke;*, ,, dan +!
*) )a&ukkan dataNiO
,) Su% Su% : dataNiO
+) i::
8) /ata" Su% / n
7) 4ui& /ata"
:angka+ ke6% dan ke6=
merupakan proses inisialisasi atau
pem.erian nilai awal yang diperlukan
dalam penulisan source code2
Se.aiknya varia.el Rata% juga
diinisialisasi agar keluaran dari
program le.i+ valid2 Daria.el i
digunakan se.agai counter
3peng+itung4 untuk proses
perulangan yang digunakan untuk
memasukkan data satu persatu dan
sekaligus menjumla+kan data yang
dimasukkan dengan penjumla+an
data se.elumnya dimana
penjumala+an data se.elumnya
disimpan dalam varia.el Sum
-2
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
.4 *enggunakan 5low c+art
*ulai
)umla+ data 3n4
i -
Sum -
Tidak
Ya
i T n
Data[i\
Sum Sum B Data[i\
iBB
Rata% Sum C n
Rata%
Selesai
;am.ar %2"'2 <lowc+art
Proses perulangan diperlukan
karena .anyak data yang
dimasukkan .elum diketa+ui dengan
pasti 3li+at langka+ pertama yang
meminta pengguna untuk
memasukkan .anyak data42 :angka+
ke6( merupakan increment varia.el i$
yaitu menaikkan nilai varia.el i
&552 F Direktorat Pembinaan SMK
-4
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
se.esar satu tingkat2 Data pada
permasala+an ini disimpan dalam
tipe data array 3data[i\42 Tipe data
array ini akan di.a+as pada .a.
tersendiri2
c4 *enggunakan pseudo code
Algoritma +itung]rata%
{algoritma ini digunakan untuk menghitung ratarata dari
sejumlah data yang dimasukkan melalui keyboard}
dekara&i
i, n, &u%, dataN"0O M
integer rata"
M ^oat
de&krip&
i
read(
n) i
0
&u% 0
P(ie(i ?
n)
read(dataNiO
) &u% :'
dataNiO i::
end P (ie
rata" &u%
/ n
Prite(rata")
Algoritma diatas dapat juga ditulis seperti di.awa+ ini:
Algoritma +itung]rata%
{algoritma ini digunakan untuk menghitung ratarata dari
sejumlah data yang dimasukkan melalui keyboard}
dekara&i
i, n, &u%, dataN"0O M
integer rata"
M ^oat
de&krip&i
read(n)
&u%
0
Hor(i'0A i?nA
i::)
read(dataNiO
) &u% :'
dataNiO
end Hor
rata" &u%
/ n
Prite(rata")
25
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
:angka+ ke6% pada algoritma
dengan uraian kalimat deskripti5
yang pertama dan langka+ ke6?
pada algoritma dengan uraian
kalimat deskripti5 yang kedua$
terdapat kata kunci selama2 Kata
kunci ini mengidenti5ikasikan
.a+wa dalam penerjema+an ke
dalam .entuk source code
.a+asa ABB atau program
lainnya seperti java nanti kita
akan menggunakan klausa untuk
looping 3perulangan4 yaitu w+ile34
dan atau 5or34 karena langka+6
langka+ terse.ut memerinta+kan
kita untuk melakukan langka+
.erikutnya$ .ukan kem.ali ke
langka+ se.elumnya$ jika kondisi
yang tela+ ditentukan terpenu+i2
/+ile34 dan 5or34 dapat digunakan
secara .ergantian jika perulangan
yang terjadi dapat diketa+ui
.anyaknya 3jumla+ perulangan
yang terjdi4$ dalam +al ini .anyak
perulangannya adala+ n$ yaitu
.anyak data yang akan
dimasukkan2 Tetapi jika .anyak
perulangannya tidak dapat
diketa+ui dengan pasti$ maka kita
+arus menggunakan w+ile34$ tidak
.isa dengan 5or342 Pada conto+
.erikutnya akan di.erikan
perulangan yang tidak diketa+ui
.erapa .anyak perulangan yang
terjadi2
:angka+6langka+ yang masuk
dalam proses perulangan ini
adala+ langka+ ke6= dan ? pada
algoritma dengan uraian kalimat
deskripti5 yang pertama dan
langka+ ke6'$ >$ dan ( pada
algoritma dengan uraian kalimat
deskripti5 yang kedua2 Pada .a.
selanjutnya anda akan
mengeta+ui .a+wa klausa
perulangan ini$ dalam .a+asa
ABB atau program lainnya seperti
java$ ada tiga macam .entuk
yang dapat anda pili+$ yaitu 5or34$
w+ile34$ atau do w+ile342
ntuk algoritma dengan 5low
c+art$ proses perulangan yang
menggunakan klausa w+ile34 atau
5or34 dapat diidenti5ikasi dari
sim.ol perca.angan dimana
kalau jalurnya$ dalam +al ini jalur
yang .erla.el YA$ kita telusuri
akan ter+u.ung ke sim.ol
.erikutnya dan kemudian kem.ali
lagi sim.ol perca.angan semula2
Sedangkan untuk algoritma
dengan pseudo code$
penerjema+an tidak akan
mengalami kesulitan karena$
sekali lagi$ struktur dari pseudo
code sangat mirip dengan
penulisan source code .a+asa
pemrograman2
Dengan demikian penerjema+an
algoritma ke dalam .a+asa ABB
adala+ 3per+atikan .aris ke6# sampai
dengan .aris ke6"? dimana .aris ke6
@ dan "- merupakan .aris tam.a+an
agar program le.i+ user 5riendly42
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int %ain() 6
#! int n, i'0, &u%'0, dataN"0OA
*! ^oat rata"A
,! >out ?? BCu%a( data (%ak&i%u% "0 data) ' BA
&552 F Direktorat Pembinaan SMK
2"
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
+! >in @@ nA
8! P(ie(i ? n) 6
7! int - ' i : 1A
10! >out ?? B)a&ukkan data ke;B ?? - ?? B M BA
11! >in @@ dataNiOA
1"! &u% :' dataNiOA
11! i::A
1#! 8
1*! rata" ' &u% / nA
1,! >out ?? B/ata;ratanya ' B ?? rata"A
1+! return 0A
18! 8
Program diatas dapat juga ditulis seperti di.awa+ ini:
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int %ain() 6
#! int n, i, &u%'0, dataN"0OA
*! ^oat rata"A
,! >out ?? BCu%a( data (%ak&i%u% "0) ' BA
+! >in @@ nA
8! Hor(i'0A i ? nA i::) 6
7! int - ' i : 1A
10! >out ?? B)a&ukkan data ke;B ?? - ?? B M BA
11! >in @@ dataNiOA
1"! &u% :' dataNiOA
11! 8
1#! rata" ' &u% / nA
1*! >out ?? B/ata;ratanya ' B ?? rata"A
1,! return 0A
1+! 8
Sedangkan jika ditulis dalam .a+asa )ava adala+ se.agai .erikut:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& bab"W01 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int n, i'0, &u%'0A
,! intN O data ' neP intN"0OA
+! ^oat rata"A
8! S>anner input ' neP S>anner(Sy&te%!in)A
2&
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
7! Sy&te%!out!print(BCu%a( data (%ak! "0) ' B)A
10! n ' input!neYtInt()A
11! P(ie(i ? n) 6
1"! int - ' i : 1A
11! Sy&te%!out!print(B)a&ukkan data ke;B : - : B M B)A
1#! dataNiO ' input!neYtInt()A
1*! &u% :' dataNiOA
1,! i::A
1+! 8
18! rata" ' &u% / nA
17! Sy&te%!out!print(B/ata;ratanya ' B : rata")A
"0! 8
"1! 8
Program diatas dapat juga ditulis seperti di.awa+ ini:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& bab"W01W" 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int n, i, &u%'0A
,! intN O data ' neP intN"0OA
+! ^oat rata"A
8! S>anner input ' neP S>anner(Sy&te%!in)A
7! Sy&te%!out!print(BCu%a( data (%ak! "0) ' B)A
10! n ' input!neYtInt()A
11! Hor(i'0Ai ? nAi::) 6
1"! int - ' i : 1A
11! Sy&te%!out!print(BData ke;B : - : B M B)A
1#! dataNiO ' input!neYtInt()A
1*! &u% :' dataNiOA
1,! 8
1+! rata" ' &u% / nA
18! Sy&te%!out!print(B/ata;ratanya ' B : rata")A
17! 8
"0! 8
'2 *asala+ menentukan <aktor
Persekutuan !esar 3<P!42
ntuk memeca+kan persoalan
<P! di atas$ kita dapat
menggunakan algoritma Euclid
yang langka+6langka+nya adala+
se.agai .erikut :
"4 Di.erikan dua .ua+ .ilangan
.ulat positi5$ misalnya m dan n
dimana syaratnya adala+ m U
n2
&552 F Direktorat Pembinaan SMK
2)
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
%4 !agila+ m dengan n$ misalnya
+asilnya adala+ r2
m 36
"2 I
n 20
mempunyai sisa
=4 Apa.ila r I -$ maka +asilnya
adala+ n itu sendiri
3merupakan <P! dari m dan
n42
r I ">
%2 r I "> r -
=2 m I %- dan n I ">
?4 )ika r
0 maka proses
m
?2 I
20
mempunyai sisa
pencarian dilanjutkan yaitu
ganti m dengan n dan n
dengan r dan ulangi langka+
ke6%$ demikian selanjutnya2
n 16
r I ?
'2 r I ? r -
>2 m I"> dan n I ?
*isalnya akan dicari <P! dari =>
(2
m
=
16
mempunyai sisa r
dan %-$ maka penyelesaiannya n 4
menurut algoritma Euclid adala+ : I -
)adi <P!3 =>$ %-4 I ?
.4 *enggunakan 5low c+art
*ulai
A
m$ n
Ya
5p. n r I -
Tidak
m U n
Ya
Tidak
Tidak
r MI -
m n
Ya
n r
r m Z n
5p. n
r m Z n
5p.
A
Selesai
;am.ar %2">2 <lowc+art
2*
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
Algoritma Euclid di atas merupakan
algoritma dengan uraian kalimat
deskripti52 Algoritma terse.ut dapat
ditulis kem.ali se.agai .erikut:
a4 *enggunakan uraian kalimat deskripti5
1) )a&ukkan % dan n!
") Sea%a % ? n uangi ke%bai angka( perta%a!
1) r % R n
#) Cika r ' 0 %aka Hpb n!Cika tidak ker-akan angka( ke;*!
*) Sea%a r _' 0 ker-akan angka( ke;, &a%pai ke;8!
,) % n dan n r
+) r % R n
8) Hpb n
7) 4ui& Hpb!
c4 *enggunakan pseudo code
{algoritma ini digunakan untuk mencari faktor persekutuan
besar dari dua buah bilangan yang dimasukkan}
dekara&i
%, n, r, Hpb M
integer de&krip&i
do
read(%,n)
P(ie(%?n
) end do
P(ie r
% R n
iH (r '' 0) Hpb
n e&e
P(ie(r _'
0)
%
n
n r
r % R
n Hpb
n
end
P (ie end
iH
Prite(Hpb)
:angka+ ke6% pada algoritma
dengan uraian kalimat deskripti5
mempunyai kata kunci SE:A*A
yang mengidenti5ikasikan .a+wa
dalam penerjema+annya ke
dalam source code .a+asa
pemrograman nanti
menggunakan klausa untuk
perulangan2 Akan tetapi kita tidak
dapat menggunakan klausa
w+ile34 seperti pada conto+
se.elumnya karena pada kasus
ini langka+ terse.ut
memerinta+kan untuk kem.ali ke
langka+ se.elumnya jika kondisi
yang di.erikan terpenu+i2
&552 F Direktorat Pembinaan SMK
2+
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
8le+ karena itu klausa yang
paling tepat digunakan adala+ do
w+ile342 Sedangkan langka+ ke6'
kita gunakan klausa w+ile34
karena langka+ ke6'
memerinta+kan kita untuk
melakukan langka+6langka+
.erikutnya$ .ukan kem.ali ke
langka+ se.elumnya2 Kita tidak
.isa menggunakan klausa 5or34
karena$ sesuai dengan
penjelasan pada conto+
se.elumnya$ kita tidak .isa
mengeta+ui dengan pasti .erapa
.anyak perulangan yang terjadi2
Dengan demikian dapat kita
simpulkan .a+wa jika setela+
proses pemeriksaan keadaan
memerinta+kan kita untuk
melakukan langka+6langka+
.erikutnya maka kita
menggunakan klausa w+ile342
Se.aliknya jika setela+ proses
pemeriksaan keadaan
memerinta+kan kita untuk
kem.ali lagi melakukan langka+6
langka+ se.elumnya maka kita
menggunakan klausa do w+ile342
ntuk algoritma dengan 5low
c+art$ proses perulangan yang
menggunakan klausa do w+ile34
dapat diidenti5ikasi dari sim.ol
perca.angan dimana kalau
jalurnya$ dalam +al ini jalur yang
.erla.el T7DAK$ kita telusuri akan
ter+u.ung ke sim.ol se.elumnya
dan kemudian kem.ali lagi sim.ol
perca.angan semula2
Sedangkan untuk algoritma
dengan pseudo code$
penerjema+an tidak akan
mengalami kesulitan karena$
sekali lagi$ struktur dari pseudo
code sangat mirip dengan
penulisan source code .a+asa
pemrograman2 Dengan demikian
penerjema+an algoritma ke
dalam .a+asa ABB adala+
3per+atikan .aris ke6' sampai
dengan .aris ke6"- dan .aris ke6
"? sampai dengan .aris ke6"@4
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int %ain() 6
#! int %,n,r,HpbA
*! do 6
,! >out ?? B)a&ukkan biangan perta%a ' BA
+! >in @@ %A
8! >out ?? B)a&ukkan biangan kedua ' BA
7! >in @@ nA
10! 8 P(ie (% ? n)A
11! r ' % R nA
1"! iH (r''0) Hpb ' nA
11! e&e 6
1#! P(ie(r_'0) 6
1*! % ' nA
1,! n ' rA
1+! r ' % R nA
2,
Direktorat Pembinaan SMK | 2008
Bahasa dan (lgoritma Pemrograman Bahasa Pemrorgraman
18! Hpb ' nA
17! 8
"0! 8
"1! >out ?? B.GB;nya ' B ?? HpbA
""! return 0A
"1! 8
Sedangkan jika ditulis dalam .a+asa )ava adala+ se.agai .erikut:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& bab"W0# 6
#! pubi> &tati> 3oid %ain(StringN O arg&) 6
*! int %,n,r,HpbA
,! S>anner input ' neP S>anner(Sy&te%!in)A
+! do 6
8! Sy&te%!out!print(B)a&ukkan biangan perta%a ' B)A
7! % ' input!neYtInt()A
10! Sy&te%!out!print(B)a&ukkan biangan kedua ' B)A
11! n ' input!neYtInt()A
1"! 8 P(ie(% ? n)A
11! r ' % R nA
1#! Hpb ' 0A
1*! iH (r '' 0) Hpb ' nA
1,! e&e 6
1+! P(ie(r _' 0) 6
18! % ' nA
17! n ' rA
"0! r ' % R nA
"1! Hpb ' nA
""! 8
"1! 8
"#! Sy&te%!out!print(BBiangan terbe&arnya ' B : Hpb)A
"*! 8
",! 8
&$"&$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan .a+asa pemrograman
%2 Apa yang dimaksud dengan compiler dan intepreter
=2 Apa yang dimaksud dengan .a+asa pemrograman prosedural dan
terstruktur
?2 Apa yang dimaksud dengan algoritma pemrograman
&552 F Direktorat Pembinaan SMK
2-
Bahasa Pemrograman Bahasa dan (lgoritma Pemrograman
'2 Se.utkan ciri6ciri algoritma pemrograman
>2 !uatla+ algoritma seder+ana untuk mencari .ilangan ganjil dan genap
(2 Dari soal no > diatas .uatla+ diagram alirnya
#2 Dari soal no ( diatas tulisla+ kode semu 3psudocode4 diagram alir terse.ut
@2 Dari soal no # diatas tulisla+ kode sum.ernya
22
Direktorat Pembinaan SMK | 2008
dan sim.ol6sim.ol lain yang .er5ungsi "2 Data ,umerik atau .ilangan$ yaitu
se.agai masukan untuk proses jenis data yang digunakan dalam
komputer2 Data .isa .erujut suatu proses aritmatika atau proses
keadaan$ gam.ar$ suara$ +uru5$ matematis lainnya2
angka$ matematika$ .a+asa ataupun %2 Data String$ yaitu jenis data yang
sim.ol6sim.ol lainnya yang .isa kita dapat terdiri dari .er.agai macam
gunakan se.agai .a+an untuk karakter2 Digunakan untuk proses
meli+at lingkungan$ o.yek$ kejadian yang non matematis2
ataupun suatu konsep2 =2 Data :ogika$ yaitu data yang
Data .elum mempunyai arti +anya terdiri dari dua satuan$
apa.ila tidak diola+2 Data yang tela+ yaitu .enar 3true4 dan sala+
diola+ menjadi se.ua+ .entuk yang 35alse42 Digunakan dalam suatu
.erarti dise.ut in5ormasi 2 Data yang proses logika yang terdiri dari
mewakili sim.ol6sim.ol .ukan persamaan .oolean2
merupakan in5ormasi kecuali dalam
!ipe data dan perator Bahasa Pemrorgraman
BAB )
T!PE DATA DAN OPERATOR
=2"2 Pengertian Data
=2%2 7ndenti5ier
=2=2 Konstanta
=2?2 Daria.el
=2'2 Tipe Data
=2>2 8perator !a+asa ABB
=2(2 8perator nary
=2#2 8perator !inary
=2@2 8perator Ternary
=2"-2 ngkapan 3Ekspresi4
=2""2 Soal :ati+an
)$"$ Pengertian Data
Data merupakan .entuk jamak
dari .a+asa :atin dengan kata
datum$ yang .erarti 5akta atau
sesuatu yang di.erikan2 Data adala+
kelompok sim.ol6sim.ol yang teratur
dan mewakili kuantitas$ tindakan$
.enda dan se.againya2 Dalam istila+
umum data mewakili angka$ karakter
pengertian tertentu2 Pada komputer
data disimpan dalam memori
se.elum dan sesuda+ pemrosesan
ole+ mikroprosesor2
)enis data dalam setiap .a+asa
pemrograman .elum tentu sama$
namun se.agian .esar .iasanya
ter.agi menjadi tiga$ yaitu :
2008 | Direktorat Pembinaan SMK
24
Bahasa Pemrograman !ipe Data dan perator
)$&$ !n%entiCier
7denti5ier adala+ nama yang
dide5inisikan ole+ programmer dan
digunakan untuk mewakili se.ua+
elemen pada program2 ,ama
varia.el merupakan sala+ satu
conto+ dari identi5ier2 Programmer
dapat memili+ sendiri nama se.ua+
varia.el pada ABB$ selama tidak
menggunakan sala+ satu dari kata
kunci 3)eyword* yang dimiliki ole+
ABB2 Keywords atau kata kunci
merupakan Hinti1 pada .a+asa dan
memiliki tujuan tertentu2 Ta.el
di.awa+ ini menunjukkan da5tar
lengkap kata kunci ABB2 Dan yang
perlu diper+atikan pada .a+asa A
adala+ .a+wa semua +arus +uru5
kecil2
a&% auto break boo >a&e
>at>( >(ar >a&& >on&t >on&tW>a&t
>ontinue deHaut deete do doube
dyna%i>W>a
&t
e&e enu% eYpi>it eYtern
Ha&e ^oat Hor Hriend goto
iH inine int ong %utabe
na%e&pa>e neP operator pri3ate prote>ted
pubi> regi&ter reinterpretW>a
&t
return &(ort
&igned &iZeoH &tati> &tati>W>a&t &tru>t
&Pit>( te%pate t(i& t(roP true
try typedeH typeid typena%e union
un&igned u&ing 3irtua 3oid 3oatie
P>(arWt P(ie
7ndenti5ier atau pengenal adala+
nama yang di.erikan untuk nama
varia.le$ nama konstanta$ nama
5ungsi$ nama o.jek$ nama met+od$
nama class$ dan o.yek yang lain
yang dide5inisikan ole+ pemrogram2
Dalam menulis program +arus
selalu memili+ nama varia.el yang
mem.erikan indikasi mengenai +al
yang .er+u.ungan dengan yang
digunakan varia.le terse.ut2 )ika
dimungkinkan mendeklarasikan
se.ua+ varia.el dengan nama seperti
.erikut ini:
int YA
maka & tidak termasuk sesuatu jenis
tertentu$se+ingga +al terse.ut tidak
mem.erikan petunjuk pada tujuan
varia.el2 Per+atikan conto+ .erikut
di.awa+ yang le.i+ .aik2
int
daHtar$rutanA
,ama da5tarrutan mem.erikan
ses.uat pada pem.aca program
se+ingga akan ide dari varia.el yang
digunakan2 Aara coding ini akan
mem.antu dalam meng+asilkan
dokumentasi program sendiri$ yang
.erarti anda akan mendapatkan
pema+aman tentang apa yang
dilakukan program +anya dengan
mem.aca kode yang digunakannya2
45
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Karena dunia program .iasanya
ada ri.uan .aris$ +al ini penting agar
.isa diingat ole+ programmer itu
sendiri dan se.agai dokumentasi
yang .aik2 Selain itu yang perlu
disadari adala+ adanya campuran
+uru5 .esar dan +uru5 dalam varia.el
nama da5tarrutan2 /alaupun semua
ABB$ kata kunci +arus ditulis dalam
+uru5 kecil$ tetapi dalam penulisan
terse.ut dapat menggunakan +uru5
.esar se.agai varia.el nama2
Dalam .a+asa pemrograman A
maupun pada .a+asa java identi5ier
si5atnya case sensitive$ artinya +uru5
.esar dan +uru5 kecil dianggap
.er.eda artinya$ walaupun
dipernole+kan2 7denti5ier terdiri dari :
Karakter alp+a.et$ yaitu : +uru5 OA0
sampai OR0 dan +uru5 Oa0 sampai OQ0
nderscore 3 ] 4 dan tanda dollar
3L4
Digit decimal$ yaitu: .ilangan
antara O-0 sampai O@0
Dalam menulis program ada +al6
+al yang +arus diper+atikan se.agai
ketentuan dalam pem.erian nama
identi5ier2 Ketentuan6ketentuan dalam
penulisan identi5ier antara lain:
Terdiri dari ga.ungan +uru5 dan
angka dengan karakter pertama
+arus .erupa +uru5 atau
underscore atau tanda dollar 3L42
Tidak .ole+ mengandung spasi
dan sym.ol6sim.ol k+usus$ kecuali
garis .awa+ 3underscore4 atau
tanda dollar 3L4 k+usus untuk java2
Yang termasuk sym.ol k+usus
yang tidak diper.ole+kan antara
lain: L$ G$ Z$ Y$ M$ V$ K$ 3$ 4$ 6$ B$ I$
dan se.againya2
Panjangnya .e.as$ tetapi +anya
=% karakter pertama yang
terpakai$ tetapi se.aiknya
sependek mungkin minimal satu
karakter2
Tidak .ole+ sama dengan kata
kunci 3keyword4 dan kata
tercadang 3reserved word1 yang
ada dalam .a+asa pemrograman2
ntuk le.i+ jelasnya mengenai
identi5ier dapat dili+at pada conto+
identi5ier yang .enar dan yang sala+
Ta.el =2"2 Penulisan 7denti5ier
PENULIS
AN
KETE2AN9AN
IDENTIFIE2 Ko%or
Ka%a
KiaiW&i&Padata1
/eka%W1
Wte%p
b(argaW-ua
Genui&an Benar
1data
Ko%or;&i&Pa,na%a
&i&Pa iH
"W-aan
"b
%ain
Genui&an Saa(
2008 | Direktorat Pembinaan SMK
4"
Bahasa Pemrograman !ipe Data dan perator
)$)$ Kon'tanta
Suatu data yang si5atnya tetap$
dan digunakan dalam pemrograman
diistila+kan dengan konstanta2
Konstanta adala+ se.ua+ nama
tempat penyimpanan sementara di
dalam memori yang nilainya tetap
atau tidak dapat diu.a+2 Konstanta
+arus dide5inisikan terle.i+ da+ulu
pada awal program2 Konstanta dapat
.ernilai integer$ peca+an$ karakter
atau string2 Per+atikan conto+
se.ua+ konstanta .erikut ini:
*
0
1!1
#
UA
V
IBa(a&a
Ge%rogra%anJ
Dalam melakukan pemrograman ada
dua tipe konstanta yaitu konstanta
.ilangan dan konstanta teks atau
string2
)$)$"$ Kon'tanta Bilangan
Konstanta .ilangan atau sering
juga dise.ut dengan konstanta
numeric yaitu suatu konstanta yang
nilai tetapnya .erupa .ilangan2
Konstanta .ilangan atau numerik
di.agi dalam dua kelompok$ yaitu :
a2 Konstanta .ilangan .ulat 3integer4
Konstanta .ilangan .ulat
merupakan se.ua+ konstanta yang
nilai tetapnya .erupa .ilangan .ulat2
Konstanta .ilangan .ulat dapat
disajikan dalam .entuk decimal$ oktal
ataupun +eksadesimal2 Dalam sistem
decimal$ .ilangan yang digunakan
.erkisar antara - sampai @2
Penulisan konstanta langsung
angkanya$ misalnya: "-$ @$ ' dan
se.againya2
Dalam sistem octal$ .ilangan
yang digunakan .erkisar antara -
sampai dengan (2 Penulisan
konstanta diawali dengan - misalnya:
-"-$ -?>$ -'' dan se.againya2
Dalam sistem +eksadesimal$
.ilangan yang digunakan .erkisar
antara - sampai dengan <2 !ilangan
yang dapat dipakai .erupa sala+ satu
diantara "> sim.ol adala+ .erikut:
0 1 " 1 # * , + 8 7 A B
C D < .
!isa juga ditulis se.agai .erikut:
0 1 " 1 # * , + 8 7 a b
> d e H!
Aara penulisan konstanta .ilangan
ini diawali dengan -& 3nol dan &4$
misalnya: -&A<$ -&(<$ dan
se.againya2
.2 konstanta .ilangan real atau
peca+an
Konstanta dengan nilai tetapnya
.erupa .ilangan peca+an2 Konstanta
.ilangan real atau peca+an di.agi
dua jenis$ yaitu: Konstanta data
.ilangan desimal .erpresisi tunggal
35loating point4$ dimana .ilangan ini
memiliki derajat ketelitian sampai (
digit dan dapat dinyatakan dalam dua
.entuk tampilan$ yaitu :
!entuk desimal$ conto+ : %"2===
!entuk eksponensial$ dituliskan
dengan notasi scientific2 Dengan
.entuk umum: .ulat peca+anWEbDX
W[B\ b [6\X pangkat misalnya:
-2%"===EB% dimana +al penulisan
ini mempunyai arti: -2%"== & "-
%
Sedangkan konstanta data
.ilangan desimal .erpresisi ganda
3dou.le precision4 serupa dengan
5loating point$ +anya derajat ketelitian
4&
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
dan range jangkauan yang dimiliki
le.i+ tinggi2 Derajat ketelitian untuk
5loating point ( digit$ sedangkan
dou.le precision "> digit2
)$)$&$ Kon'tanta Tek'6String$
Konstanta teks atau string
adala+ suatu konstanta yang nilai
tetapnya .erupa teks2 Konstanta teks
di.edakan dalam dua jenis$ yaitu:
a2 Konstanta data karakter
Konstanta data karakter terdiri
dari se.ua+ karakter saja dan
ditandai dengan dua tanda kutip
tunggal 3O204 se.agai pem.atasnya2
misalnya: OA, b, &, !.
Selain itu juga ada .e.erapa diantara
konstanta data karakter yang ditulis
dengan diawali tanda S 3penempatan
tanda S setela+ tanda petik tunggal
pem.uka42
Karakter ini dinamakan
rangkaian escape 3escape
se^uence4$ se+ingga dise.ut dengan
konstanta karakter rangkaian escape2
!e.erapa karakter rangkaian escape$
antara lain :
Ta.el =2%2 karakter rangkaian ESAAPE
KA2AKTE2 KETE2AN9AN
`a $ntuk bunyi be (aert)
`b )undur &atu &pa&i (ba>k&pa>e)
`H 0anti (aa%an (Hor% Heed)
`n 0anti bari& baru (neP ine)
`r Ke koo% perta%a, bari& yang
&a%a `3 4abua&i 3erti>a
`0 Kiai ko&ong (nu)
`V Karakter petik tungga
`J Karakter petik ganda
`` Karakter gari& %iring
ntuk menyatakan sem.arang
karakter ASA77$ notasi yang dapat
dipergunakan$ antara lain: SDDD
dengan DDD I " sampai dengan =
digit octal atau S&99 dengan 99 I "
sampai dengan % digit +eksadesimal$
misalnya: OS10 atau OS?%0 atau OS&%%02
Selain karakter .iasa$ juga terdapat
karakter k+usus yang dide5inisikan
dengan cara mengawalinya
menggunakan tanda S seperti pada
dijelaskan pada ta.el di.awa+ ini:
2008 | Direktorat Pembinaan SMK
4)
Bahasa Pemrograman !ipe Data dan perator
Ta.el =2=2 karakter k+usus
KODE NA1
A
NILAI
UNICODE `t 4ab `u0007
`b Ba>k&pa>e `u0008
`n FineHeed `
u000a `r Carriage return `u000d
`V Singe Xuote `u00"+
`E Doube Xuote `u00""
`` Ba>k&a&( `
u00*>
.2 Konstanta data string2
Konstanta data string merupakan
rangkaian dari .e.erapa karakter dan
ditandai dengan dua tanda kutip
ganda 3H 14 se.agai pem.atasnya2
Per+atikan conto+ penulisan di.awa+
ini:
I2eoJ, IFagi Bea-arJ
IBa(a&a Ge%rogra%anJ, IDi Sekoa(%u yaDJ
Dalam penulisan program$ se.ua+
konstanta perlu dideklarasikan$
dimana deklarasi konstanta
merupakan proses untuk
menye.utkan karakteristik konstanta
seperti nama$ tipe data$ jangkauan$
masa +idup$ dan nilai awal2 Dalam
.a+asa A pendeklarasikan konstanta
ada % cara$ yaitu: dengan
menggunakan pengara+ compiler
atau preprocessor #define$ dan
dengan keyword const. penulisan
ntuk le.i+ jelasnya pe+atikan
conto+ program di.awa+ ini:
sintaks dari deklarasi konstanta
dalam .a+asa A adala+ se.agai
.erikut:
=de5ne
?na%akon&tanta@ ?niai@
Atau dapat juga ditulis se.agai
.erikut:
>on&t ?tipedata@
?na%akon&tanta@ '
?niai
@A
Atau .isa juga ditulis seperti program
di.awa+ ini:
=de5ne no%or
100
=de5ne p(i 1!1#
=de5ne (uruH UKV
=de5ne na%a
I2eoJ
>on&t int no%or '
100A >on&t ^oat
p(i ' 1!1#A >on&t
>(ar (uruH ' UKVA
>on&t String na%a'I2eoJA
Program =2"2 Penggunaan konstanta dalam program
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=de5ne no%or 100
4*
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
=de5ne p(i 1!1#
=de5ne (uruH aKa
=de5ne na%a B2eoB
*+i! "#e+(")e &tdA
%ain()
6
>out ?? BKiai kon&tanta no%orM
B?? no%orA >out ?? B`nKiai
kon&tanta p(i M B?? p(iA >out ??
B`nKiai kon&tanta (uruHM B?? (uruHA
>out ?? B`nKiai kon&tanta na%a M B?? na%aA
get>(()A
.et*. 0 A
8
Keluaran programnya adala+ se.agai .erikut:
Kiai kon&tanta no%orM 100
Kiai kon&tanta p(i M 1!1#
Kiai kon&tanta (uruHM K
Kiai kon&tanta na%a M 2eo
Pada program di.awa+ ini +asil
setela+ decompile akan sama
dengan program diatas2 Program
di.awa+ merupakan sala+ satu
conto+ penulisan yang .er.eda tetapi
akan meng+asilkan +asil yang sama
dengan program se.elumnya2
Per+atikan pada penggunaan
konstanta dalam aplikasi program
di.awa+ ini:
Grogra% 1!"
=in>ude ?>onio!(@
=in>ude
?io&trea%@ ),+t
it no%or ' 100A
),+t 8,"t p(i '
1!1#A ),+t )h".
(uruH ' aKaA
),+t )h". na%aNO ' B2eoBA
*+i! "#e+(")e &tdA
%ain
()
6
>out ?? BKiai kon&tanta no%orM
B?? no%orA >out ?? B`nKiai
kon&tanta p(i M B?? p(iA >out ??
B`nKiai kon&tanta (uruHM B?? (uruHA
>out ?? B`nKiai kon&tanta na%a M B?? na%aA
2008 | Direktorat Pembinaan SMK
4+
Bahasa Pemrograman !ipe Data dan perator
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
Kiai kon&tanta no%orM 100
Kiai kon&tanta p(i M 1!1#
Kiai kon&tanta (uruHM K
Kiai kon&tanta na%a M 2eo
)$*$ Hariabel
Daria.el atau pengu.a+ adala+
suatu lam.ang dari se.ua+ lokasi
yang .erada dimemori utama
komputer yang dapat .erisi suatu
nilai2 ,ilai yang .erada di lokasi
memori terse.ut dapat .eru.a+
selama program dieksekusi2 ;una
varia.le adala+ se.agai tempat
sementara untuk menyimpan data
yang sedang diola+2 Pem.erian nilai
kedalam suatu varia.el mempunyai
.entuk penulisan yang .er.eda6.eda
pada setiap .a+asa pemrograman2
*eskipun mempunyai arti yang sama
dalam pemrogramannya2
Daria.el di.edakan atas varia.el
numerik dan varia.el string2 Daria.el
numerik adala+ varia.el yang
mengandung nilai numerik atau
angka sedangkan varia.el string
adala+ varia.el yang .erisi nilai +uru5
Calp+a6numerik2
Suatu varia.el dapat mewakili:
,ilai Konstanta
%,*b-e pe>a(an ' 11!#*A
it niai ' 8*A
,ilai dari pengu.a+ lain
)h". ab-ad ' J4J A
)h". (uruH ' ab-adA
,ilai yang diperole+ dari
kom.inasi .e.erapa pengu.a+
atau nilai konstanta dengan
melalui operator2
%,*b-e pi ' 1!1#1*71A
%,*b-e rA
%,*b-e Wingkaran ' pi E r E rA
)$*$"$ Ti(e Hariabel
!erdasarkan pada jenis data
yang disimpan pada varia.el yaitu:
Daria.el numeric dan varia.le teks2
Pada varia.le numeric merupakan
suatu varia.el yang dipakai untuk
menampung data .erupa angka2
Daria.el numerik digolongkan
atas: .ilangan .ulat atau integer dan
.ilangan real atau peca+an$ dimana
.ilangan real terdiri dari dua yaitu:
.ilangan decimal .erpresisi
tunggal 35loating point4
.ilangan decimal .erpresisi ganda
3dou.le precision42
Sedangkan pada varia.le teks
merupakan suatu varia.el yang
dipergunakan untuk menampung
data .erupa +uru5 atau teks2 Daria.el
teks di.edakan menjadi dua yaitu:
Karakter 3untuk karakter tunggal4
String 3untuk rangkaian karakter4
4,
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
)$*$&$ Ieni' Hariabel
!erdasarkan pada lokasi atau
wilaya+ dan waktu pengaksesannya$
varia.el dapat di.edakan atas %
jenis$ yaitu: Daria.el :okal dan
Daria.el ;lo.al2 Daria.el local
merupakan Daria.el yang
dideklarasikan pada 5ungsi termasuk
5ungsi utama 3main4$ varia.el
dialokasikan selama 5ungsi
pendeklarasi dijalankan dan Daria.el
didealokasikan jika 5ungsi
pendeklarasi tidak dijalankan2
Sedangkan Daria.el ;lo.al
adala+ Daria.el yang dideklarasikan
se.elum de5inisi 5ungsi termasuk
5unsi utama$ Daria.el dialokasikan
selama program dijalankan dan
Daria.el didealokasikan setela+
program selesai dijalankan
)$*$)$ Deklara'i Hariabel
Deklarasi varia.le adala+ proses
untuk menye.utkan karakteristik
varia.le seperti nama$ tipe data$
jangkauan$ masa +idup$ dan nilai
awal2 Penulisan Sintaks untuk
mendeklarasikan se.ua+ varia.le
adala+ se.agai .erikut:
?tipedata@ ?na%a3ariabe@ N' niaiaPaOA
?tipedata@ ?na%a3ariabe 1@ N' niaiaPaO, c, ?na%a3ariabe n@ N'
niaiaPaOA
Dalam penulisan sintak terse.ut
yang perlu diper+atikan adala+
.a+wa semua yang ada dalam tanda
TFU +arus ada dan semua yang
ada dalam tanda [F\ .ersi5at
tam.a+an .ole+ ada atau .ole+ tidak
tergantung keperluan2 Per+atikan
conto+ penulisan di.awa+ ini:
it bianganA
)h".
karakterA
8,"t
bide&i%aA
Setela+ mendeklarasikan se.ua+
varia.el dengan tipe data$
selanjutnya mem.erikan nilai varia.el
terse.ut dengan tanda I 3sama
dengan4
biangan '
"0A karakter '
akaA bide&i%a
' ""!"A
atau dapat juga mendeklarasikan dan
mem.erikan nilai dalam satu .aris2
it biangan ' "0A
)h". karakter ' akaA
)h". (uruH, (uruH1 ' aCa, (uruH" '
aOaA
8,"t bide&i%a ' ""!"A
)$*$*$ Kela' Hariabel
Selain digolongkan .erdasarkan
tipe datanya$ se.ua+ varia.el juga
diklasi5ikasikan .erdasarkan kelas
penyimpanan$ yaitu: Daria.le local
atau otomatis$ varia.le eksternal$
varia.le statis dan varia.le register
Daria.le local adala+ merupakan
varia.el yang dideklarasikan dalam
se.ua+ 5ungsi dan mempunyai si5at6
si5at se.agai .erikut:
Secara otomatis diciptakan ketika
5ungsi dipanggil dan akan lenyap
ketika eksekusi ter+adap 5ungsi
.erak+ir
9anya dikenal ole+ 5ungsi tempat
varia.le dideklarasikan
Tidak ada inisialisasi secara
otomatis 3saat varia.le diciptakan
nilainya tak menentu4
2008 | Direktorat Pembinaan SMK
4-
Bahasa Pemrograman !ipe Data dan perator
Deklarasinya dengan kata kunci
auto2
Per+atikan penulisan varia.le local
.erikut ini:
auto int
YA
ntuk le.i+ jelasnya per+atikan
program dengan menggunakan
varia.le local .erikut ini:
Program =2=
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% ta%pi(5,i%)A
%ain
()
6
8
"*t, it i ' 11A
ta%pi()A
>out ??B`ni daa% %ain() ' B?? iA
get>(()A
.et*. 0 A
5,i% ta%pi(5,i%)
6
"*t, it i ' 10A
>out ??B`ni daa% ta%pi() ' B?? iA
8
Keluaran program diatas adala+ se.agai .erikut:
i daa% ta%pi()
' 10 i daa%
%ain() ' 11
selain varia.le local seperti dijelaskan
diatas$ juga terdapat kelas varia.le
eksternal dimana varia.le ini
mendeklarasikan diluar se.ua+
5ungsi$ dan mempunyai si5at .erikut:
Dapat diakses ole+ semua 5ungsi
Kalau tidak di.eri nilai$ secara
otomatis diinisialisasi dengan nilai
sama dengan nol
Deklarasinya dengan kata kunci
e&tern didalam 5ungsi yang
menggunakan varia.le jenis ini2
Per+atikan penulisan varia.le
eksternal .erikut ini:
eYtern int YA
42
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
untuk le.i+ jelasnya per+atikan
program dengan menggunakan
varia.le eksternal .erikut ini:
Program =2?
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
/* ariabel j disini merupakan ariabel
eksternal bagi fungsi kali dan fungsi main!
sehingga ariabel j dapat diakses oleh semua
fungsi yang ada yaitu kali dan main */
it - ' 1A
5,i% kai(5,i%)A
%ain
()
6
>out ??BKiai aPa - ' B?? -??B`nBA
- ' - E *A
>out ??BKiai - ke%udian ' B?? -??B`nBA
kai()A
>out ??BKiai - kini ' B?? -??B`nBA
kai()A
>out ??BKiai - &ekarang ' B?? -??B`nBA
get>(()A
.et*. 0 A
8
5,i% kai(5,i%)
6
-E'10A
8
Keluaran program diatas adala+ se.agai .erikut:
Kiai aPa - ' 1
Kiai - ke%udian ' *
Kiai - kini ' *0
Kiai - &ekarang ' *00
Daria.le statis merupakan
se.ua+ varia.le internal yang
dide5inisikan didalam 5ungsi maupun
varia.le eksternal$ dan varia.le ini
mempunyai si5at6si5at se.agai
.erikut:
2008 | Direktorat Pembinaan SMK
44
Bahasa Pemrograman !ipe Data dan perator
Kalau .ersi5at internal$ maka
+anya dikenal ole+ 5ungsi tempat
varia.le dideklarasikan
Kalau .ersi5at eksternal$ maka
dapat dipergunakan ole+ semua
5ungsi yang terletak pada 5ile yang
sama tempat varia.le
dideklarasikan
Tidak +ilang sekeluarnya dari
5ungsi
7nisialisasi +anya dilakukan sekali
pada saat 5ungsi dipanggil
pertama kali$ jika tidak ada
inisialisasi ole+ pemrogram secara
otomatis akan di.eri nilai awal nol2
Deklarasinya dengan kata kunci
static2
Per+atikan penulisan varia.le statis
.erikut ini:
&tati> int YA
ntuk le.i+ jelasnya per+atikan
program dengan menggunakan
varia.le statis .erikut ini:
Program =2'
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% ta%ba((5,i%)A
%ain()
6
it k '
100A
ta%ba(()
A
ta%ba(()
A
>out??BKiai k daa% %ain() ' B?? k??B`nBA
get>(()A
.et*. 0 A
8
5,i% ta%ba((5,i%)
6
+t"ti) it kA //ariabel statis
k::A
>out ??BKiai k daa% ta%ba(() ' B?? k??B`nBA
8
Keluaran program diatas adala+ se.agai .erikut:
Kiai k daa% ta%ba( () ' 1
Kiai k daa% ta%ba( () ' "
Kiai k daa% %ain () ' 100
"55
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Daria.le register adala+ varia.le
yang nilainya disimpan dalam register
mikroprosesor .ukan didalam memori
RA*$ varia.le ini mempunyai si5at6
si5at se.agai .erikut:
*empunyai kecepatan akses le.i+
tinggi
9anya dapat diterapkan pada
varia.le local atau parameter
5ormal yang .ertipe c+ar atau int
!iasa diterapkan untuk
pengendalian loop2
Deklarasinya dengan kata kunci
register2
Per+atikan penulisan varia.le register
.erikut ini:
regi&ter int
YA
untuk le.i+ jelasnya per+atikan
program dengan menggunakan
varia.le register .erikut ini:
Program =2>
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
.e!i+te. it n, -%A//ariabel register
it % ' "#"A
7,.(n'1A n?'%A n::)
-% :' nA
>out ??B 1 : " : 1 : !!! : ' B ?? %?? -%A
get>(()A
.et*. 0 A
Keluaran program diatas adala+ se.agai .erikut:
1 : " : 1 : c : "#" '1","1
)$+$ Ti(e Data
Tipe data merupakan tempat
untuk menentukan pem.erian nilai
ter+adap suatu varia.el yang
di.erikan ole+ user2 Selain itu tipe
data juga dapat diartikan se.agai
.atasan ter+adap 5ungsi tanda
pengenal ter+adap semua nilai yang
diterima2 Se.agai gam.aran dari
pengertian terse.ut adala+ ketika
kita menempatkan tanda pengenal
+arga +anya mengenal angka$ maka
ketika kita mem.erikan nilai .erupa
string maka secara otomatis data
terse.ut akan ditolak karena nilai
terse.ut tidak dikenali ole+ tipe data
yang di.erikan2
Tipe data dalam varia.le
menentukan tipe data yang .isa
disimpan didalamnya$ 5ormat data
2008 | Direktorat Pembinaan SMK
"5"
Bahasa Pemrograman !ipe Data dan perator
yang disimpan$ dan .erapa .anyak
memori yang dialokasikan untuk
menyimpan data2
Tipe data terse.ut
diklasi5ikasikan .erdasarkan
.agaimana keadaan data disimpan
dalam memori$ dan jenis operasi
yang dapat dilakukan2 Tipe data
merupakan .agian program yang
paling penting karena tipe data
mempengaru+i setiap instruksi yang
akan dilaksanakan ole+ komputer2
*isalnya saja = di.agi % .isa saja
meng+asilkan +asil yang .er.eda
tergantung tipe datanya2 )ika = dan %
.ertipe integer$ maka program akan
meng+asilkan nilai "$ namun jika
keduanya .ertipe 5loat maka akan
meng+asilkan nilai "2'------2
Pemili+an tipe data yang tepat akan
mem.uat proses operasi data
menjadi le.i+ e5isien dan e5ekti52
<ungsi Tipe data antara lain:
*erepresentasikan nilai dari suatu
varia.el maupun konstanta$
Penyimpanan data di memori$ dan
*enentukan nilai yang dapat diisikan
ke dalam se.ua+ varia.le2
Sedangkan jenis tipe data ada
dua macam: Tipe dasar atau primitive
dan Tipe .entukan atau re5erensi2
Dalam .a+asa A terdapat lima tipe
data dasar$ yaitu: int$ c+ar$ 5loat$
dou.le$ dan void2 Sedangkan dalam
.a+asa pemrograman lain seperti
java misalnya memiliki tipe data yang
dapat dikategorikan menjadi dua
kelompok$ yaitu tipe data primiti5 dan
re5erensi2 Ada delapan macam tipe
data primiti5 dalam pemrograman
)ava$ yaitu : c+ar$ .yte$ s+ort$ int$
long$ 5loat$ dou.le$ dan !oolean2 Tipe
data re5erensi digunakan untuk
mere5erensikan o.jek atau class
tertentu$ seperti String2
Ta.el =2?2 Tipe Data 3"> .it4 Dalam A
TIPE UKU2A
N
2AN9
E un&igned >(ar 8 bit 0 ;
"** >(ar 8 bit ;1"8 ;
1"+ enu% 1,
bit
;1"+,8 ; 1"+,+
un&igned int 1,
bit
0 ;
,**1* &(ort int 1,
bit
;1"+,8 ; 1"+,+
int 1,
bit
;1"+,8 ; 1"+,+
un&igned ong 1"
bit
0 ; #"7#7,+"7*
ong 1"
bit
;"1#+#81,#8 ;
"1#+#81,#+ ^oat 1"
bit
1!#<;18 ; 1!#<:18
doube ,#
bit
1!+<;108 ; 1!+<:108
ong doube 80
bit
1!#<;#71" ;
1!1<:#71" 3oid 0 bit
near (pointer) 1,
bit Har (pointer) 1"
bit
"5&
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Ta.el =2'2 Tipe Data 3=% .it4 Dalam A
Ti(
e
U'*."

2"!
e un&igned
>(ar
8 bit 0 ;
"** >(a
r
8 bit ;1"8 ;
1"+ &(ort int 1, bit ;1"+,8 ; 1"+,+
un&igned int 1" bit 0 ; #"7#7,+"7*
int 1" bit ;"1#+#81,#8 ;
"1#+#81,#+ un&igned
ong
1" bit 0 ; #"7#7,+"7*
enu
%
1" bit ;"1#+#81,#8 ;
"1#+#81,#+ ong 1" bit ;"1#+#81,#8 ;
"1#+#81,#+ ^oat 1" bit 1!#<;18 ; 1!#<:18
doube ,# bit 1!+<;108 ; 1!+<:108
ong doube 80 bit 1!#<;#71" ;
1!1<:#71" 3oid 0 bit
near (pointer) 1, bit
Har (pointer) 1" bit
Ta.el =2>2 <ormat Tipe Data Dalam A
TIPE FO21A
T
KETE2AN9
AN >(ar R> Karakter/&tring
int Ri, Rd Integer/biangan buat
^oat RH .oat/biangan pe>a(an pre&i&i
tungga doube RH Biangan pe>a(an pre&i&i ganda
)$+$"$ Ti(e %ata !nteger
Program Komputer merupakan
kumpulan potongan data dan
memanipulasi data terse.ut dalam
.er.agai cara2 Ada .er.agai jenis
data dalam .idang in5ormasi$
misalnya: .ilangan$ terdapat .ilangan
.ulat dan .ilangan peca+an$ ada
.ilangan positi5 dan negative$ dan
ada pula .ilangan .esar serta
.ilangan kecil dan lain6lain$ atau
.a+kan .ilangan yang tidak memiliki
nama2
Kemudian ada juga in5ormasi
tekstual$ misalnya ,ama dan alamat$
maka data seperti ini akan disimpan
se.agai karakter2 !ila programmer
menulis se.ua+ program$ maka
+arus menentukan jenis in5ormasi
yang digunakannya2 )ika menulis
se.ua+ program untuk menentukan
jau+nya .erapa mil dari .umi ke
.intang$ maka diperlukan varia.el
yang dapat menampung jumla+ yang
sangat .esar2 )ika Anda sedang
merancang perangkat lunak untuk
merekam se.ua+ dimensi
mikroskopis$ maka +anya perlu untuk
2008 | Direktorat Pembinaan SMK
"5)
Bahasa Pemrograman !ipe Data dan perator
menyimpan data yang sangat kecil
dan angka sesuai2 Se.agai
tam.a+an$ jika Anda menulis se.ua+
program yang +arus melakukan
ri.uan per+itungan intensi5$ maka
akan menginginkan varia.el yang
dapat diproses dengan cepat2 Tipe
Data varia.el inila+ yang akan
menentukan semua 5actor terse.ut2
!a+asa ABB menyediakan
.er.agai tipe data$ yang secara garis
.esar +anya di.agi menjadi dua
yaitu: data numerik dan karakter2
,umerik merupakan tipe data yang
di.agi menjadi dua kategori yaitu:
integer dan 5loating6point2 7ntegers
adala+ .ilangan yang meliputi
seluru+ nomor seperti "%$ "'($ 6=?$ %
daln lain se.againya2 <loating6point
merupakan angka yang ada angka
decimal di .elakang koma$ misalnya
%=$($ "#@$-%="$ -$@#( dan lain
se.againya2
Se.elum kita mem.icarakan tipe
data karakter$ mari kita +ati6+ati
memeriksa variasi dari data numerik2
Pertim.angan utama untuk memili+
tipe data numerik adala+:
Angka Ter.esar dan terkecil yang
dapat disimpan dalam varia.le2
!erapa .anyak memori yang
digunakan ole+ varia.el2
Apaka+ varia.el menangani
penyimpanan 3.aik positi5 maupun
negati54 atau .ilangan unsigned
3+anya positi542
!ilangan decimal merupakan
varia.el yang presisi
kuran varia.el adala+ jumla+ .yte
memori yang digunakan2 !iasanya$
semakin .esar range varia.le$ maka
jumla+ yang digunakan akan le.i+
.esar pula2
)$+$&$ Ti(e Data Karakter
Karakter adala+ sem.arang
+uru5$ angka$ atau tanda .aca
tunggal2 Tipe data karakter
merupakan kumpulan .ermacam6
macam karakter yang terdiri dari
al5a.et2 Diman karakter antara lain:
Al5a.et .ilangan decimal: -$ "$ %$ F$
@$ Al5a.et +uru5 latin .esar : A$ !$ A$
F$ R$ Al5a.et +uru5 latin kecil : a$ .$
c$ 222 $ Q dan Tanda .aca tunggal :
M$ c$ d$ G$ N$ O$ V$ dan se.againya2
Tipe data karakter ini +anya
terdiri dari " karakter dan !entuk tipe
data dari karakter yaitu: c+ar2
Per+atikan penulisan conto+
deklarasi c+ar$ dimana c+ar +uru5
yang ditampilkan adala+ I OA0 N
Program =2(
in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
)h". (uruHW1 ' aCa, (uruHW" ' a:aA
>out ??B4ipe Data C(ar pada B ?? (uruHW1 ?? (uruHW"?? (uruHW"A
get>(()A
.et*. 0 A
8
"5*
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Keluaran program diatas adala+ se.agai .erikut:
4ipe Data C(ar pada C::
)$+$)$ Ti(e Data String
String adala+ deretan karakter
yang diak+iri dengan se.ua+ karakter
kosong2 Konstanta .ertipe ditulis
diantara tanda petik dua 3H F2142
Dalam .a+asa A string merupakan
larik atau array dari tipe data c+ar$
sedangkan dalam .a+asa java string
merupakan tipe data re5erensi atau
se.ua+ o.jek2 Aonto+ di.awa+
merupakan deklarasi string dalam A:
)h". tek N O ' B C:: B A
)h". kataN O ' 6aCa, a:a, a:a8A
untuk Aonto+ penulisan deklarasi string dalam A adala+ se.agai .erikut:
Program =2#
#in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
)h". (uruHNO ' B4ipe Data String pada C::BA
>out ?? (uruHA
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
4ipe Data String pada C::
)$+$*$ Ti(e Data Bilangan Bulat
Tipe data ini digunakan untuk
data6data angka yang tidak
mengandung angka di .elakang
koma 3int4 atau digunakan untuk
menyatakan .ilangan .ulat2
Peru.a+an tanda .ilangan pada
.ilangan .ulat dapat diset dalam dua
tipe$ yaitu: .ilangan .ulat .ertanda
3signed integer4$ yang merupakan
.ilangan .ulat yang memiliki range
dari .ilangan negatip sampai positip
dan .ilangan .ulat tak .ertanda
3unsigned integer4$ yang merupakan
.ilangan .ulat yang +anya memiliki
range nilai positip saja2
Tipe data yang termasuk ke
dalam .ilangan .ulat adala+: yang
pertama$ c+ar atau signed c+ar dan
unsigned c+ar atau .yte dalam java
dan pascal2 Rentang nilai signed c+ar
mulai 6"%# sampai "%(2 Kedua$
2008 | Direktorat Pembinaan SMK
"5+
Bahasa Pemrograman !ipe Data dan perator
rentang nilai unsigned c+ar mulai -
sampai %''$ s+ort int atau signed
s+ort int dan unsigned s+ort int2
Rentang nilai signed s+ort int mulai 6
=%2(># sampai =%2(>(2 Rentang nilai
unsigned s+ort int mulai - sampai
>'2'='2 Ketiga adala+ int atau signed
int dan unsigned int2 Rentang nilai
signed int mulai 6=%2(># sampai
=%2(>(2
Rentang nilai unsigned int mulai
- sampai >'2'='$ dan keempat
adala+ long int atau signed long int
dan unsigned long int2 Rentang nilai
signed long int mulai 6%"?(?#=>?(#
sampai %"?(?#=>?(2 Rentang nilai
unsigned long int mulai - sampai
?%@?@>(%@'2 Rentang di atas untuk
tipe data .ilangan .ulat dalam "> .it2
Aonto+ pendeklarasian .ilangan int adala+ se.agai .erikut:
it niaiA
it tota A
it (arga ' 10000A
Dapat juga ditulis se.agai .erikut:
it niai, tota A
it (argaA
(arga ' 10000A
)$+$+$ Ti(e Data Bilangan Real
atau Pe/ahan
Tipe ini merepresentasikan data6
data .ilangan yang mengandung
angka di .elakang koma atau
menyatakan .ilangan peca+an$
maupun eksponensial2 Tipe data
yang termasuk ke dalam kategori ini
adala+: 5loat dan dou.le2 Aonto+
deklarasi 5loat dan dou.le adala+
se.agai .erikut:
^oat
niaiA
doube
betaA
Semua .ilangan peca+an atau
desimal dalam )ava tanpa diak+iri
+uru5 C akan dianggap se.agai
dou.le2 Sedangkan .ilangan yang
ingin dikategorikan se.agai 5loat
+arus diak+iri dengan +uru5 2
*isalnya : ?2%%< atau %2="?52
Sedangkan untuk .ilangan dou.le$
.isa menam.a+ dengan +uru5 D$
karena secara de5ault .ilangan
dengan koma atau peca+an atau
desimal akan dianggap se.agai
dou.le2 Pe+atikan conto+ program
.erikut ini:
Program =2@
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
"5,
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
+h,.t it &&int%in ' ;1"+,8, &&int%ak ' 1"+,+A
*+i!e% +h,.t it u&int%ak
' ,**1*A it int%in ' ;1"+,8,
int%ak ' 1"+,+A *+i!e%
it uint%ak ' ,**1*A
-,! it &int%in ' ;"1#+#81,#8, &int%ak ' "1#+#81,#+A
*+i!e% -,! it uint%ak ' #"7#7,+"7*A
>out ??B`n/ange &igned &(ort int MB?? &&int%in?? &&int%akA
>out ??B`n/ange un&igned &(ort int MB?? u&int%akA
>out ??B`n/ange &igned int M B?? int%in?? int%akA
>out ??B`n/ange un&igned int MB?? uint%akA
>out ??B`n/ange &igned ong int MB?? &int%in?? &int%akA
>out ??B`n/ange un&igned ong int MB?? uint%akA
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
/ange &igned &(ort int M ;1"+,8 &/d 1"+,+
/ange un&igned &(ort int M 0 &/d ,**1*
/ange &igned int M ;1"+,8 &/d 1"+,+
/ange un&igned int M 0 &/d ,**1*
/ange &igned ong int M ;"1#+#81,#8 &/d "1#+#81,#+
/ange &igned ong int M 0 &/d #"7#7,+"7*
Program =2"- Per+atikan juga conto+ program di.awa+ ini:
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
8,"t ^oat%in ' 1!#<;18, ^oat%ak ' 1!#<:18A
%,*b-e doube%in ' 1!+<;108, doube%ak ' 1!+<:108A
-,! %,*b-e doube%in ' 1!#<;#71" , doube%ak ' 1!1<:#71"A
>out ??B/ange ^oat M `nB?? ^oat%in?? ^oat%akA
>out ??B/ange doube M `nB?? doube%in?? doube%akA
>out ??B/ange ong doube M `nB?? doube%in??
doube%akA
get>(()A
.et*. 0 A
Keluaran program adala+ se.agai .erikut:
2008 | Direktorat Pembinaan SMK
"5-
Bahasa Pemrograman !ipe Data dan perator
/ange ^oat M 0!000000 &/d
11777777*"1##1,#"*0000000000000!0
/ange doube M 0!000000<:00 &/d 1!+00000<'100
/ange ong dobe M 0 &/d 1!1<:#71"
)$+$,$ Ti(e Data Eogika
Tipe data logika digunakan untuk
merepresentasikan data6data yang
mengandung dua .ua+ nilai logika
.oolean$ yaitu: nilai " dan - atau
sering juga dise.ut se.agai nilai true
dan 5alse 3.enar dan sala+42 Dalam
.a+asa ABB tidak ada data tipe
.oolean2 Per+atikan conto+ deklarasi
!oolean .erikut ini:
Booean kondi&iA
Booean kondi&iWaPa ' trueA
Pe+atikan conto+ program .erikut ini:
Program =2""
in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
e*# booean 6.AFS<, 4/$<8A
e*# booean kondi&iA
kondi&i ' 4/$<A
i7 (kondi&i)
>out ??BKondi&i M B?? kondi&iA
e-+e
6
8
get>(()A
kondi&i ' .AFS<A
>out ??BKondi&i M B?? kondi&iA
.et*. 0 A
8
Keluaran program adala+ se.agai .erikut:
Kondi&i M 1
)$+$-$ Enumera'i 6 ENUM
Enumerasi adala+ serangkaian
sym.ol .erurutan yang
menspesi5ikasikan konstanta .ertipe
integer2 Dalam ABB tidak terdapat
tipe !olean$ se+ingga untuk
merepresentasikan TRE dengan
nilai integer .ukan nol 3 "$ %$ dst 4$
sedangkan <A:SE dengan nilai nol
"52
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
3-42 Per+atikan conto+ deklarasi
enum:
e*# booean 6 Ha&e, true
8 A atau
e*# booean 6 &aa( ' 0,
benar ' 1 8 A
)$+$2$ Ti(e Data Hoi%
Doid menyatakan tipe kosong
dan digunakan untuk: pertaman
untuk mendeklarasikan 5ungsi yang
tidak mengem.alikan nilai apapun2
Serta 5ungsi kedua adala+ untuk
mendeklarasikan 5ungsi yang tidak
menerima parameter apapun2 Pada
tipe data ini jika diawali dengan
operator K$ menyatakan penunjuk
ter+adap sem.arang tipe data2
Per+atikan conto+ deklarasi void
seperti .erikut ini:
5,i% >>trput&
(>(arE,int )A
atau ditulis:
%ain
(5,i%) A
atau dapat juga ditulis
untuk le.i+ jelasnya mengenai tipe
data pointer akan dijelaskan dalam
.a. pointer
)$+$"5$ Ti(e Data Earik 6 arra3
Array adala+ sekelompok data
.ertipe sama yang menduduki lokasi
memori yang .erurutan2 )umla+
elemen array dinyatakan dengan
cara mengapit jumla+ yang di
maksud dengan tanda O [ F \ O2 Aara
penulisan sintaks tipe data larik
adala+ se.agai .erikut :
?tipedata@
?na%a3ariabeArray@ ?N
-u%a(ee%en
O@ A
*isalnya penulisan tipe c+ar dengan
array adala+ se.agai .erikut:
>(ar
kataN*OA
ntuk menyatakan array .erdimensi
le.i+ dari " 3satu4$ maka ditam.a+kan
tanda O[ F \0 se.anyak dimensi yang
diinginkan2 *isalnya jika ingin
mendeklarasikan array % dimensi
adala+ se.agai .erikut:
5,i%E
a>tion A
int i3aue '
100 A
a>tion '
Si3aue A
)$+$4$ Ti(e Data Pointer
Pointer adala+ varia.le yang
.erisi nilai alamat suatu lokasi
memori tertentu2 Deklarasi penunjuk
dilakukan dengan menspesi5ikasikan
K$ se.elum nama vari.elCkonstanta2
Aonto+ deklarasi pointer adala+
se.agai .erikut:
>(ar
EpA
int %atriY N"ON1O A
ntuk le.i+ jelasnya mengenai tipe
data array akan dijelaskan dalam .a.
selanjutnya yang mem.a+as array2
)$+$""$ Ti(e Data Stru/t7 Union
Tipe data ini digunakan untuk
mendeklarasikan sekelompok data
yang memiliki tipe yang .erlainan2
'tru/t: elemennya .erada dilokasi
memori yang .er.eda$ dan union:
elemennya ada dilokasi memori yang
sama2 Per+atikan potongan program
di.awa+ ini:
2008 | Direktorat Pembinaan SMK
"54
Bahasa Pemrograman !ipe Data dan perator
*i, na%aunion
6
4ipeanggota1
na%aAnggota1 A
4ipeanggota"
na%aAnggota" A
cccc!
8A
Atau dapat juga ditulis seperti
di.awa+ ini:
*i,
6
4ipeanggota1
na%aAnggota1 A
4ipeanggota"
na%aAnggota" A
cccc!
8
na%aunionA
+t.*)t na%aStruktur
6
4ipeanggota1
na%aAnggota1 A
4ipeanggota"
na%aAnggota" A
cccc!
Atau dapat juga ditulis
+t.*
)t
6
4ipeanggota1
na%aAnggota1 A
4ipeanggota"
na%aAnggota" A
cccc!
8
na%aStrukt
ur A
)$+$"&$ Ti(e Data t3(e%eC
Tipe data typede5 digunakan
untuk menamakan suatu tipe data
dengan pengenal yang le.i+ .erarti
atau muda+ diingat2 Sintaks
penulisan program tipe data ini
adala+ se.agai .erikut:
typedeH tipedata
na%abaruA
Per+atikan conto+ penulisan program
di.awa+ ini :
typedeH un&igned >(ar
byteA
8A
)$,$ O(erator Baha'a .DD
!a+asa ABB menyediakan
.e.erapa operator untuk
memanipulasi data2 Secara umum$
terdapat tiga jenis operator: unary$
.inary dan ternary2 7stila+ terse.ut
mencerminkan jumla+ operands
operator yang di.utu+kan2
8perator unary +anya
memerlukan satu operand2 *isalnya$
mempertim.angkan ekspresi .erikut:
6'2 Dalam conto+ diatas perlu
dipa+ami .a+wa mewakili angka lima
.ernilai negati52 Konstanta ' adala+
diawali dengan tanda minus2 Tanda
minus$ .ila digunakan dengan cara
seperti ini$ yang dise.ut
penyangkalan operator2 Karena
+anya memerlukan satu operand$ +al
terse.u merupakan operator unary2
8perator .inary .ekerja dengan dua
operand2
Tugas operator ini .iasanya
pada operasi aritmetik yang +al
terse.ut suda+ sangat umum dalam
.a+asa pemrograman2 Ta.el
di.awa+ menunjukkan operator
arit+metic pada .a+asa ABB2
""5
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Ta.el =2>2 8perator pada .a+asa ABB
OPE2AT
O2
A2TI TIPE CONTOH
: perkaian binary taY ' >o&t E rateA
; Ge%bagian Binary &aeGri>e ' origina
/ "A
< )oduu& Binary re%ainder ' 3aue
R 1A 3 Gen-u%a(an Binary tota ' >o&t : taYA
= Gengurangan binary >o&t ' tota ; taYA
Ke.anyakan se.agai seorang
programmer tidak akan asing dan
selalu .ekerja dengan operator2
8perator Penam.a+an digunakan
untuk menjumla+kan dua operand2
Pada pernyataan .erikut ini
merupakan 5ungsi varia.el jumlah
yang di.eri dengan nilai "% adala+:
-u%a( ' #
: 8A
operator pengurangan merupakan
operasi dimana nilai penguranga
.erasal dari operand se.ela+ kiri
dikurangi atau disu.tracted operand
se.ela+ kanan2 Pernyataan di.awa+
ini akan memperole+ nilai @# untuk
su+u:
&u(u ' 11" ;
1#A
Pada se.ua+ operator perkalian akan
mengalikan dua .ua+ operand2
Per+atian pernyataan .erikut
ini$dimana markup akan diisi nilai =:
%arkup ' 1" E
0,"*A
pada operator pem.agian +asil
diperole+ dengan cara memlakukn
.agi operand dise.ela+ kiri di.agi
dengan operand se.ela+ kanan2
Dalam pernyataan .erikutnya$
varia.le poin akan memperole+ nilai
':
poin ' 100 /
"0A
Dalam operasi pem.agian integer
ternyata tidak selalu memasukan
+asil dari operasi pem.agian tetapi
yang diam.il adala+ sisa dri +asil
.agi terse.ut2 ntuk le.i+ jelasnya
per+atikan pernyataan .erikut ini$
dimana +asilnya adala+ % atau nilai
sisa sama dengan %:
&i&a '
1+R 1A
Program =2"% Per+atikan conto+ program di.awa+ ini:
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
2008 | Direktorat Pembinaan SMK
"""
Bahasa Pemrograman !ipe Data dan perator
it %ain()
6
%,*b-e reg2our& '
#0!0, ot2our& ' 10,
regGay/ate '
18!"*, otGay/ate '
"+!+8, regTage&,
otTage&,
totaTage
&A
regTage& ' regGay/ate E
reg2our&A otTage& '
otGay/ate E ot2our&A
totaTage& ' regTage& :
otTage&A
>out ?? B$pa( untuk %inggu ini adaa( /p! B ?? totaTage& ??
endA
get>(()A
.et*. 0 A
8
Keluaran Program diatas adala+
$pa( untuk %inggu ini adaa( /p! 100+!8
)$-$ O(erator Unar3
8perator nary merupakan
operator yang +anya memiliki atau
meli.atkan se.ua+ operand saja2
Terdapat .e.erapa operator unary$
seperti terli+at pada ta.el .erikut ini:
Ta.el =2(2 8perator nary
OPE2AT
O2
A2T
I
LETA
K
CONTO
H
E>UI6ALE
N ; $nary %inu& Sebeu% operator A : ;B E
C
A : (;B) E
C :
:
Geningkatan
dengan
Gena%ba(an niai
Sebeu% dan
&e&uda(
A:
:
A ' A : 1
;; Genurunan
dengan
Gengurang;an
Sebeu% dan
&e&uda(
A;; A ' A d 1
&iZeoH $kuran dari
operand
daa% byte
Sebeu% &iZeoH(I) ;
_ $nary KO4 Sebeu% _A ;
e BitPi&e KO4 Sebeu% e
A
;
S
)eng(a&ikan
aa%at
%e%ori
operand
Sebeu% SA ;
E )eng(a&i;kan
niai
dari pointer
Sebeu% EA ;
""&
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Dalam operator unary ada yang perlu
diper+atikan ketika menulis program
yaitu: .a+wa operator peningkatan
BB dan penurunan 66 jika diletakkan
se.elum atau sesuda+ operand
terdapat per.edaan2
)$-$"$ O(erator !n/rement %an
De/rement
Suatu varia.le yang nilainya
selalu .ertam.a+ satu$ seperti pada
se.ua+ varia.le pencaca+ naik 3up
counter4 dengan rumus: +itung I
+itung B " dapat ditulis dengan +itung
BI " dan secara singkat ditulis
+itungBB atau BB+itung2 ,otasi BB
dise.ut operator penam.a+
3increment4 dan pada se.ua+
varia.le pencaca+ turun 3down
counter4 dengan rumus: +itung I
+itung 6 " dapat ditulis dengan +itung
6I " dan secara singkat ditulis +itung6
6 atau 66+itung2 ,otasi 66 dise.ut
operator pengurang 3decrement42
Program di.awa+ merupakan
operasi +itung perulangan se.anyak
loop kali yang dimulai dari - naik ke
satu$ dua dan seterusnya2 8perasi
dilakukan dengan melakukan
penam.a+an satu keatas
3increment42 Per+atikan program
di.awa+ ini:
Program =2"=
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
it (itung ' 0, oopA
oop ' ::(itungA
>out ??BFoop ' Rd, 2itung ' B?? oop?? (itungA
oop ' (itung::A
>out ??BFoop ' Rd, 2itung ' B?? oop?? (itungA
get>(()A
.et*. 0 A
Keluaran program diatas adala+ se.agai .erikut:
Foop ' 1,
2itung
' 1
Foop ' 1,
2itung
' "
Program di.awa+ merupakan operasi
+itung perulangan se.anyak loop kali
yang dimulai dari "- turun ke
sem.ilan$ delapan dan seterusnya2
Setiap operasi looping dilakukan
dengan melakukan pengurangan
satu ke.awa+2 Per+atikan conto+
program di.awa+ ini:
2008 | Direktorat Pembinaan SMK
"")
Bahasa Pemrograman !ipe Data dan perator
Program =2"?
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
it (itung ' 10, oopA
oop ' ;;(itungA
>out ??BFoop ' , 2itung ' B?? oop?? (itungA
oop ' (itung;;A
>out ??BFoop ' , 2itung ' B?? oop?? (itungA
get>(()A
.et*. 0 A
Keluaran program diatas adala+ se.agai .erikut:
Foop ' 7,
2itung
' 7
Foop ' 7,
2itung
' 8
)$-$&$ O(erator 'iJeoC
8perator akan meng+asilkan
ukuran dari suatu varia.le atau tipe
pada saat dikompilasi2 kuran ini
digunakan untuk mengeta+ui tipe
data apaka+ dan .erapa ukuran data
yang ada didalam se.ua+ varia.le
terse.ut2 Per+atikan potongan
program di.awa+ ini:
&iZeoH(tipe
data)A
&iZeoH(>(ar)A
&iZeoH(int)A
program di.awa+ ini akan melakukan
pengukuran ter+adap varia.le tipe
data dan kemudian +asilnya akan
dimunculkan setela+ dilakukan
kompilasi2 Per+atikan program
di.awa+ ini:
Program =2"'
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
>out ??BSiZe oH >(ar ' B?? +i?e,7()h".)A
""*
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
>out ??BSiZe oH &(ort int ' `nB?? +i?e,7(+h,.t it)A
>out ??BSiZe oH int ' `nB?? +i?e,7(it)A
>out ??BSiZe oH ong int ' `nB?? +i?e,7(-,! it)A
>out ??BSiZe oH ^oat ' `nB?? +i?e,7(8,"t)A
>out ??BSiZe oH doube ' `nB?? +i?e,7(%,*b-e)A
>out ??BSiZe oH ong doube ' `nB?? +i?e,7(-,! %,*b-e)A
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
SiZe oH >(ar
' 1 byte SiZe oH &ort int
' " byte SiZe oH int
' " byte SiZe oH ong int
' # byte SiZe oH ^oat
' # byte SiZe oH doube
' 8 byte SiZe oH ong
doube ' 10 byte
Aonto+ program yang menggunakan
operator unary K 3pointer4 dan V
3alamat memori42 Penjelasan dari
program terse.ut dapat diuraikan
dalam .entuk program secara
langsung se+ingga le.i+ muda+
dipa+ami2
Program =2">
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
it Y ' ,+, yA /* ar pointer menunjuk ke data yg
bertipe int */
it EpYA // p" diisi dengan alamat dari ar "
pY ' SYA // y diisi dengan nilai yang ditunjuk oleh
p"
y ' EpYA
>out ??B`nAa%at Y '
B?? SYA >out ??B`nI&i
pY ' B?? pYA >out
??B`nI&i Y ' B?? YA
>out ??B`nKiai yang ditun-uk oe( pY ' B?? EpYA
>out ??B`nKiai y ' B?? yA
get>(()A
.et*. 0 A
2008 | Direktorat Pembinaan SMK
""+
Bahasa Pemrograman !ipe Data dan perator
Keluaran program diatas adala+ se.agai .erikut:
Aa%at Y '
"A,. M ""1A I&i pY
' "A,. M ""1A I&i Y
' ,+
Kiai yang ditun-uk oe( pY
' ,+
Kiai y
' ,+
Adapun penjelasan mengenai pointer program diatas adala+ se.agai .erikut :
Alamat *emori 7si memori Daria.el
FFFF2 FFFF2 FFFF2
%A><:%%=%
%A><:%%=A p&
FFFF2 FFFF2 FFFF2
%A><:%%=#
%A><:%%=A y
FFFF2 FFFF2 FFFF2
%A><:%%=A >( &
FFFF2 FFFF2 FFFF2
Per+atikan program 8perator
nary V dan K serta gam.ar diatas2
Daria.el & dan y merupakan suatu
lam.ang dari se.ua+ daera+ di
memori utama komputer2 Artinya &
dan y masing6masing se.enarnya
adala+ suatu alamat memori2 Ketika
varia.el terse.ut dideklarasikan
se.agaimana di.awa+ ini:
int Y ' ,+, yA
maka varia.el & sama dengan
alamat memori misalnya %A><:%%=A
dialokasikan dan diisi data >($
varia.el y sama dengan alamat
memori misalnya %A><:%%=#
dialokasikan2 )adi & .erisi >( atau
alamat memori %A><:%%=A .erisi
data >(2
Daria.el terse.ut .ertipe integer
maka akan menempati lokasi memori
se.esar "> .it2 Alamat6alamat
memori terse.ut dipergunakan
selama 5ungsi main dijalankan2
Deklarasi:
int EpYA
.erarti varia.el p& sama dengan
alamat memori misalnya %A><:%%=%
dialokasikan dengan ukuran memori
se.esar "> .it 3ukuran tipe integer42
Perinta+ penugasan:
pY ' SYA
.erarti varia.el p& 3alamat
memori %A><:%%=%4 diisi data
%A><:%%=A 3alamat dari varia.el &42
"",
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
)adi isi p& I %A><:%%=A$ 7si p& ini
merupakan alamat dari varia.el &$
per+atikan gam.ar diatas agar le.i+
jelas2 Perinta+ penugasan
selanjutnya adala+:
y ' EpYA
.erarti varia.el y 3alamat memori
%A><:%%=#4 diisi data alamat memori
varia.le p& 3%A><:%%=%42 Alamat
terse.ut .erisi data >(2 Suatu alamat
memori yang .erisi data alamat
memori dise.ut pointer2
)$2$ O(erator Binar3
8perator .inary adala+ operator
yang meli.atkan atau dikenakan
pada dua .ua+ operand2 Di.awa+ ini
merupakan tergolong dalam operator
.inary adala+ adala+ se.agaimana
dijelaskan di.awa+ ini:
)$2$"$ O(erator Aritmatika
Digunakan untuk
mengoperasikan data6data numerik$
seperti perkalian$ pem.agian$ sisa
+asil .agi$ penjumla+an$ dan
pengurangan2 Dalam proses
aritmatika terse.ut$ pengerjaan
operasi tergantung dari tingkat
valensi operator6operator yang
terli.at2 Perkalian memiliki valensi
tertinggi$ kemudian dilanjutkan
dengan sisa pem.agian$ pem.agian$
sedangkan penjumla+an dan
pengurangan mempunyai valensi
yang terenda+2 jenis operator
aritmatika$ yaitu :
Ta.el =2#2 8perator aritmetika
OPE2AT
O2
A2T
I
CONTO
H E Kai a E b a dikaikan dengan b
1 E " ' ,
R )oduo atau
&i&a
pe%bagian
aRb &i&a (a&i pe%bagian buat a dibagi
dengan b
1 R " ' 1 ; Bag
i
a / b a dibagi dengan b
1 / " ' 1 untuk tipe data integer
1 / " ' 1!* ntuk tipe data ^oat
: Gu& atau
ta%ba(
a : b a dita%ba( dengan b
1 : " ' *
= )inu& atau
kurang
a d b a dikurangi b
1 d " ' 1
Program di.awa+ ini merupakan
operasi6operasi aritmetika dan
.ertujuan untuk melakukan operasi
pem.agian$ modulo$ serta operasi
kom.inasi aritmatika pada .ilangan
.ulat2 9asil operasi terse.ut
kemudian ditampilkan dilayar
monitor2 ntuk le.i+ jelasnya
per+atikan program di.awa+ ini:
Program =2"(
=in>ude ?>onio!(@
=in>ude ?io&trea%@
2008 | Direktorat Pembinaan SMK
""-
Bahasa Pemrograman !ipe Data dan perator
*+i! "#e+(")e &tdA
%ain()
6
/*operasi aritmatika
dengan bilangan
bulat */ it 3, P, Y,
y, ZA
3 ' 100A
P ' 1A
Y ' 3 / PA
y ' 3 R PA
Z ' 3 E P ; P : 3 R 3 / PA
>out ??BOpera&i Arit%atika pada Biangan Buat`nBA
>out ??B9 ' `nB?? 3?? PA
>out ??B ' `nB?? YA
>out ??B\ ' B?? 3?? PA
>out ??B ' B?? yA
>out ??B] ' `nB?? 3?? P?? P?? 3?? 3?? PA
>out ??B ' `nB?? ZA
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
Opera&i Arit%etika pada biangan Buat
9 ' 100/1
'
11
\ ' 100 )OD 1
'
1
] ' 100 E 1 d 1 : 100 %od 100/1
'
"7+
8perator Z 3modulo4 +anya .erlaku pada tipe data integer$ Per+atikan
program operasi aritmatika dengan .ilangan real di.awa+ ini:
Program =2"#
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
8,"t a, b, >, d, eA
""2
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
a ' 100!0A
b ' 1!0A
> ' a / bA
d ' 100 R 1A
e ' a E b ; b : 100 R 100 / bA
>out ??B`nOpera&i Arit%atika pada Biangan /ea`n`nBA
>out ??BC ' `nB?? a?? bA
>out ??B ' `nB?? >A
>out ??BD ' `nB?? a?? bA
>out ??B ' `nB?? dA
>out ??B< ' `nB?? a?? b?? b?? a?? a?? bA
>out ??B ' `nB?? eA
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
Opera&i Arit%etika pada biangan /ea
C ' 100!000000 / 1!000000
' 11!11111"
D ' 100!000000 %od 1!000000
' 1!000000
< ' 100!00000 E 1!00000 d 1!00000 : 100!000000 / 1!000000
' "7+!000000
Dari conto+ program diatas
dapat dili+at dengan jelas .a+wa
8perator C 3pem.agian4 dapat
.er5ungsi se.agai pem.agian .ulat
3div4 atau pem.agian real2 9al ini
tergantung pada tipe data yang
dipergunakan2 Tingkat pengerjaan
operasi dari operator aritmatika
adala+: K 3perkalian4$ Z 3modulo4$ C
3pem.agian4$ B 3penjumla+an4$ dan
E 3pengurangan42
Per+atikan conto+ mengenai +al
terse.ut diatas dapat dili+at pada
program di.awa+ ini:
Z ' 100 E 1 ; 1 : 100 R
100 / 1
Proses penyelesaian dalam program
adala+ sama +alnya dengan ketika
menyelesaikan persamaan aritmatika
secara ditulis se.agai .erikut ini:
Z ' ((100 E 1) d (1 : ((100 R
100) / 1)))
' ( 100 d (1 : ((100 R 100) / 1)))
' ( 100 d (1 : ( 0 / 1 )))
' ( 100 d (1 : 0 ))
' ( 100 d 1 )
' "7+
)$2$&$ O(erator Rela'ional
2008 | Direktorat Pembinaan SMK
""4
Bahasa Pemrograman !ipe Data dan perator
8perator relasi digunakan untuk
mem.andingkan +u.ungan antara
dua .ua+ operand 3se.ua+ nilai atau
varia.le4 atau digunakan untuk
mewakili se.ua+ nilai logika 3nilai
.oolean4$ dari suatu persamaan atau
nilai2 )enis6jenis operator relasi$sepeti
terli+at pada ta.el di.awa+ ini:
Ta.el =2@2 8perator relasi
OPE2AT
O2
A2T
I
CONTO
H ? Kurang dari Y ? y Apaka( Y kurang dari y
?
'
Kurang dari &a%a
dengan
Y ?' y Apaka( Y kurang dari &a%a
dengan
y @ Febi( dari Y @ y Apaka( Y ebi( dari y
@
'
Febi( dari &a%a
dengan
Y @' y Apaka( Y ebi( dari &a%a
dengan y '
'
Sa%a dengan Y '' y Apaka( Y &a%a dengan
_
'
4ida( &a%a dengan Y _' y Apaka( Y tidak &a%a
dengan y
)$2$)$ O(erator logika
8perator logika digunakan untuk
mem.andingkan logika +asil dari
operator6operator relasi atau
digunakan untuk mengoperasikan
operand 3konstanta$ varia.el$ atau
suatu ekspresi4 secara logis2
8perator logika ada tiga macam yaitu
operator A,D$ 8R dan operator
,8T2 ntuk le.i+ jelasnya per+atikan
dalam ta.el .erikut:
Ta.el =2"-2 8perator logika
OPE2AT
O2
A2TI CONTO
H
SS AKD
a b a SS b
0 0 0
0 1 0
1 0 0
1 1 1
("?1) SS (1?1)
' 0
0 SS 0
' 0 ("?#) SS
(1?1) ' 0
ff O/
a b a ff b
0 0 0
0 1 1
1 0 1
1 1 1
("?1) ff (#?1) '
0
0 ff 0
' 0 ("?#) ff
(1?1) ' 1
1 ff 0 '
_ KO4
a _a _("@1)
' 1
0 1 _0
' 1
Program 8perasi logika pada 8perator !inary :ogika
"&5
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
Grogra% 1!17
in>ude
?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
it Y, Y1, Y", y, y1, y", Z, Z1, Z", a, b, >A
a '
1"*A b
' 100A
> '
"*A
Y1 ' a ?
bA Y" ' a
@ bA y1
' > ?'
bA y" ' >
@' bA Z1
' a ''
>A Z" ' a
_' >A
Y ' Y1 SS Y"A
y ' y1 ff y"A
Z ' _Z1A
>out ??B`nA ' B?? a?? b?? > A
>out ??B`n91 ' B A
>out ??B`n ' B??
a?? b A >out ??B`n
' B?? Y1 A >out
??B`n9" ' B A
>out ??B`n ' B?? a?? b A
>out ??B`n ' B?? Y" A
>out ??B`n\1 ' B A
>out ??B`n ' B??
>?? b A >out ??B`n
' B?? y1 A >out
??B`n\" ' B A
>out ??B`n ' B??
>?? b A >out ??B`n
' B?? y" A >out
??B`n]1 ' B A
>out ??B`n ' B?? a?? > A
>out ??B`n ' B?? Z1 A
>out ??B`n]" ' B A
>out ??B`n ' B??
a?? b A >out ??B`n
' B?? Z" A >out
??B`n9 ' B A
>out ??B `n ' B?? Y1?? Y" A
2008 | Direktorat Pembinaan SMK
"&"
Bahasa Pemrograman !ipe Data dan perator
>out ??B `n ' B?? Y A
>out ??B\`n ' B A
>out ??B`n ' B?? y1?? y" A
>out ??B`n ' B?? y A
>out ??B]`n ' B A
>out ??B`n '
B?? Z1 A >out
??B`n ' B?? Z A
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
A ' 1"*
B ' 100
C ' "*
91 ' a
? b
' 1"* ? 100
' 0
9" ' a
@ b
' 1"* @ 100
' 1
L1 ' C
?' B
' "* ?' 100
' 1
L" ' C
@' B
' "* ?' 100
' 0
]1 ' A _
' C
' 1"* _' "*
' 0
]" ' A
'' B
' 1"* '' 100
' 1
9 ' 91 SS 9"
' 0 SS 1
' 0
\ ' \1 ff \"
' 1 ff 0
' 1
] ' _]1
' _0
' 1
"&&
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
)$2$*$ O(erator BitGi'e atau mani(ula'i bit
8perator .itwise digunakan
untuk memanipulasi .it6.it dari nilai
data yang ada di memori2 Semua
operator .itwise +anya .isa
dikenakan pada operand .ertipe
integer atau karakter2 8perator
.itwise se.agaimana terli+at dalam
ta.el di.awa+ ini:
Ta.el =2""2 8perator .itwise
OPE2AT
O2
A2T
I
CONTOH
@
@
Gerge&eran bit ke kiri 7 ??
" @
@
Gerge&eran bit ke
kanan
7 @@
" A BitPi&e AKD 7 S
" B BitPi&e 9O/ (<Y>u&i3e
O/)
7 Q
" C BitPi&e
O/
7 f "
D BitPi&e KO4 e
7
Per+atikan conto+ operasi .itwise P8R antara data @D dengan %D maka akan
meng+asilkan data ""D
7D ' 00001001B di 9O/ dengan
"D ' 00000010B
11D ' 00001011B ?' (a&i 9O/
Atau conto+ lain misalnya antara data @D dengan (D maka akan di+asilkan
data "?D seperti di.awa+ ini:
7D ' 00001001B di 9O/ dengan
+D ' 00000111B
1#D ' 00001110B ?' (a&i 9O/
Ta.el =2"%2 Ke.enaran P8R
A B A EO2 B
0 0 0
1 0 1
0 1 1
1 1 0
Pada ta.el P8R terse.ut diatas
adala+: data keluaran akan .ernilai -
jika data masukannya .ernilai sama
.aik - semua atau " semua2 Dalam
operasi aritmetika se.ua+ data @D
misalnya akan digeser kekanan atau
2008 | Direktorat Pembinaan SMK
"&)
Bahasa Pemrograman !ipe Data dan perator
kekiri untukan operasi .aik 8R$ A,D$
8R maupun ,8T2 Per+atikan conto+
pergeseran data @D yang digeser
kekiri maka nilai akan .eru.a+2
Peru.a+an terse.ut akan
mewakili se.ua+ operasi perkalian$
pem.agian atau operasi yang lain2
Per+atikan conto+ pergeseran data
@D di.awa+ ini:
7D ' 00001001B
digeser kekiri:
1Y '@ 00010010B ' 18D
"Y '@ 00100100B ' 1,D
Kalau digeser kekanan:
1Y '@ 00000100B ' #D
"Y '@ 00000010B ' "D
7D ' 00001001B di AKD dengan
"D ' 00000010B
0D ' 00000000B ?' (a&i AKD
7D ' 00001001B di O/ dengan
"D ' 00000010B
11D ' 00001011B ?' (a&i O/
7D ' 00001001B di KO4 %en-adiM
e7D ' 11110110B ' ;10D %ode ko%pe%en "
Selain +asil terse.ut diatas$
dapat di.uktikan dengan cara
melakukan komplemen kedua2
Komplemen satu yaitu dengan
melakukan konversi data - menjadi "
atau se.aliknya$ sedangkan
komplemen kedua yaitu dengan
melakukan penam.a+an data -"
pada +asil komplemen pertama2
ntuk le.i+ jelasnya per+atikan
conto+ di.awa+ ini:
10D ' 00001010B
;10D ' 11110101B %ode
ko%pe%en 1 ' 11110110B %ode
ko%pe%en "
ntuk menyatakan .ilangan negatip diperole+ dengan cara model
dalam .ilangan .iner dipakai model
komplemen2 *odel komplemen %
komplemen " ditam.a+ "2
Program =2%-2 8perasi .it pada 8perator !itwise
=in>ude ?>onio!(@
=in>ude ?io&trea%@
"&*
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
*+i! "#e+(")e &tdA
%ain()
6
it u, 3, P, Y, y, ZA
u ' 7
?? "A 3
' 7 @@
"A P ' 7
S "A
Y ' 7 Q "A
y ' 7 f "A
Z ' e7A
>out ??B$ ' 7
?? "`nBA >out ??B
' Rd`nB, uA >out
??BL ' 7 @@
"`nBA >out ??B '
Rd`nB, 3A >out
??BT ' 7 S "`nBA
>out ??B '
Rd`nB, PA >out
??B9 ' 7 Q "`nBA
>out ??B '
Rd`nB, YA >out
??B\ ' 7 f "`nBA
>out ??B '
Rd`nB, yA >out
??B] ' e7`nBA
>out ??B ' Rd`nB, ZA
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
$ '
7?? "
'
1,
L '
7@@"
'
"
T ' 7
S "
'
0
9 ' 7
Q "
'
11
\ ' 7
f "
'
11
] '
e7
' ;10
Aonto+ program diatas menunjukkan .a+wa +asil operasi dari operator relasi
atau operator logika +anya mempunyai satu nilai dari dua nilai ke.enaran$
yaitu :
2008 | Direktorat Pembinaan SMK
"&+
Bahasa Pemrograman !ipe Data dan perator
- I 5alse I sala+ atau
" I true I .enar
)$2$+$ O(erator Penuga'an %an O(erator Kombina'i
8perator penugasan 3(ssignment operator4 atau pem.eri nilai .erupa
tanda sama dengan 3HI142 Per+atikan conto+ di.awa+ ini:
niai ' 80A Artinya M 3ariabe IniaiJ dii&i dengan 80
A ' Y E yA Artinya M 3ariabe IAJ dii&i dengan (a&i perkaian antara Y dan y!
8perator kom.inasi merupakan
ga.ungan antara dua operator
tertentu$ yaitu antara operator
aritmatika atau operator .itwise
dengan operator penugasan yang
digunakan untuk memendekkan
penulisan operasi penugasan$ seperti
.erikut:
Ta.el =2"=2 8perator penugasan
OPE2AT
O2
A2T
I
CONTO
H
A2TINY
A E' )e%beri niai &etea( niai &e%ua
dikaikan
Y E' *A Y ' Y E *A
/' )e%beri niai &i&a bagi &etea( niai
&e%ua
dibagi
Y /' *A Y ' Y / *A
R
'
)e%beri niai &i&a bagi dari pe%bagian
niai
&e%ua
Y R' *A Y ' Y R
*A
:
'
)e%beri niai &etea( niai &e%ua
dita%ba(kan
Y :' *A Y ' Y :
*A ;
'
)e%beri niai &etea( niai &e%ua
dikurangkan
Y ;' *A Y ' Y ; *A
??
'
)e%beri niai dari perge&eran bit ke kiri Y ??'
*A
Y ' Y ??
*A @@
'
)e%beri niai dari perge&eran bit ke
kanan
Y @@'
*A
Y ' Y @@
*A S
'
)e%beri niai (a&i bitPi&e AKD Y S' *A Y ' Y S
*A f' )e%beri niai (a&i bitPi&e O/ Y f' *A Y ' Y f *A
Q
'
)e%beri niai (a&i bitPi&e 9O/ Y Q' *A Y ' Y Q
*A
)$4$ O(erator Ternar3
8perator ternary adala+ operator
yang meli.atkan tiga .ua+ operand2
Yang tergolong operator ini adala+:
8perator kondisi dengan sym.ol G:
!entuk ungkapan operator kondisi
adala+ :
?kondi&i@ D
?ungkapanW1@ M
?ungkapan
W"@
*aksud dari ungkapan kondisi
adala+: )ika kondisi .ernilai .enar$
maka nilai ungkapan kondisi .erupa
nilai ungkapan]" dan jika kondisi
.ernilai sala+$ maka nilai ungkapan
kondisi .erupa nilai ungkapan]%2
Per+atikan conto+ di.awa+ ini:
"&,
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
%ak&i% ' niaiWaPa @
niaiWak(ir D
niaiWaPa M niaiWak(irA
maksud dari conto+ diatas dapat di
ungkapkan dalam .entuk kalimat
seperti ini:
-ika niaiWaPa ' 80 dan niaiWak(ir ' +*, %aka %ak&i% ' 80 (&a%a
dengan niaiWaPa) -ika niaiWaPa ' +* dan niaiWak(ir ' 80, %aka
%ak&i% ' 80 (&a%a dengan niaiWak(ir) -ika niaiWaPa ' +* dan
niaiWak(ir ' +*, %aka %ak&i% ' +* (&a%a dengan niaiWak(ir)
Program =2%"2 8perasi kondisi pada 8perator Kondisi
=in>ude
?>onio!(@
=in>ude
?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
it a, b, >, dA
a ' 80A
b ' +*A
> ' a @ b D a M bA
>out ??B)en>ari niai yang ebi( tinggi`n`nBA
>out ??Ba ' `nB?? a?? bA
>out ??B> ' `nBA
>out ??B ' `nB?? a?? b?? a?? bA
>out ??B ' `n`nB?? >A
a ' +*A
b ' 80A
> ' a @ b D a M bA
>out ??B)en>ari niai yang ebi( tinggi`n`nBA
>out ??Ba ' `nB?? a?? bA
>out ??B> ' `nBA
>out ??B ' `nB?? a?? b?? a?? bA
>out ??B ' `nB?? >A
get>(()A
.et*. 0 A
8
Keluaran program diatas adala+ se.agai .erikut:
)en>ari Kiai yang ebi(
tinggi a ' 80
b ' +*
2008 | Direktorat Pembinaan SMK
"&-
Bahasa Pemrograman !ipe Data dan perator
> ' a @ b D a M b
' 80 @ +* D 80 M +*
' 80
)en>ari Kiai yang ebi(
tinggi a ' +*
b ' 80
> ' a @ b D M b
' +* @ 80 D +* M 80
' 80
)$"5$ Ungka(an 0Ek'(re'i1
ngkapan dapat .erupa
konstanta 3untaiCnumerik4$ varia.el
dan nilai tunggal yang diperole+
dengan mengkom.inasikan operand
dan operator$ seperti 'B?2 ngkapan6
ungkapan di.agi menjadi empat
kategori :
a2 ngkapan numerik
" : * 1 E #
" : + / *
.2 ngkapan string
IABCDJ :
I<.02J
ni% :
na%a
Satu6satunya operator yang
.erlaku pada ungkapan string
+anyala+ tanda B$ yang .er6
5ungsi untuk mengga.ungkan dua
untai2
c2 ngkapan relasiC+u.ungan
Tipe untai dapat juga
menggunakan operator relasi
seperti +alnya dengan tipe
numerik2 *isalnya diketa+ui
.a+wa:
UAV ebi( ke>i
dari UBV
d2 ngkapan logika
_
A
((A@*) SS
(B'#))
((Ka%a ' JAgu&J) ff
(na%a '
JDoniJ
))
e2 Program seder+ana
menggunakan Tipe data
Program =2%%2 conto+ penggunaan tipe data
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
tF(e%e7 *+i!e% )h". byteA
%ain()
6
-,! it data1 ' *#,+,+"",*11A
it data" ' ""1*,#1A
"&2
Direktorat Pembinaan SMK | &552
!ipe data dan perator Bahasa Pemrorgraman
+h,.t it data1 ' +1#A
byte data# ' 1#A
7-,"t ata, ' 1!+11A // tipe data
pecahan %,*b-e ata* ' #!7,+A //
tipe data pecahan )h". data+ '
aCaA
e*# booean
67"-+e, t.*e8A e*#
booean kondi&iA
kondi&i ' t.*eA
)h". data8N,OA
data8NO ' kondi&i ' ' 1 D
BtrueBMBHa&eBA printH(BKiai Fong
M Rd`nB?? data1A >out
??BKiai Int M Rd`n B?? data"A
>out ??BKiai S(ort M
R(d`nB?? data1A >out
??BKiai Byte M Rd`nB??
data#A >out ??BKiai Doube M
RH`nB?? data*A >out ??BKiai
.oat M RH`nB?? data,A >out
??BKiai C(ar M R>`nB??
data+A >out ??BKiai Booean M
R&`nB?? data8A get>((A
.et*. 0 A
8
)$""$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan data
%2 Se.utkan jenis6jenis data yang digunakan pada .a+asa pemrograman
=2 Apa yang dimaksud dengan konstanta
?2 !uatla+ se.ua+ program seder+ana menggunakan varia.el konstanta
'2 Apa yang dimaksud dengan operator unary$ .inary dan ternary
>2 Apa yang dimaksud dengan varia.el
(2 Se.utkan tipe varia.el yang digunakan dalm .a+asa cBB
#2 !uatla+ program seder+ana yang menggunakan operator unary$ .inary
dan ternary
2008 | Direktorat Pembinaan SMK
"&4
Bahasa Pemrograman !ipe Data dan perator
")5
Direktorat Pembinaan SMK | &552
"tru)tur Perulangan Bahasa Pemrorgraman
BAB *
STRUKTUR PERUEANGAN
?2"2 Perulangan
?2%2 8perator 7ncrement dan Decrement
?2=2 Ekspresi *atematika BB dan 66
?2?2 Peng+itung
?2'2 Pernyataan <8R
?2>2 Pernyataan ,ESTED 6 <8R
?2(2 Pernyataan /97:E
?2#2 Pernyataan ,ESTED6/97:E
?2@2 Perulangan Do6/97:E
?2"-2 Pernyataan ,ESTED D86/97:E
?2""2 Perulangan Tidak !er+ingga
?2"%2 Pernyataan !reak
?2"=2 Pernyataan Aontinue
?2"?2 Pernyataan ;oto
?2"'2 Soal :ati+an
*$"$ Perulangan
Perulangan atau iterasi atau
yang .iasa dise.ut dengan Hlooping1
adala+ proses melakukan tindakan
yang sama secara .erulang6ulang
atau .erkali6kali sampai .atas yang
tela+ ditentukan2 Perulangan
digunakan untuk menjalankan satu
atau .e.erapa pernyataan se.anyak
.e.erapa kali2 Dengan kata lain$
perulangan dipakai untuk
menjalankan .e.erapa pernyataan
dengan +anya menuliskan
pernyataan terse.ut satu kali2 9al ini
.anyak sekali dijumpai dalam
pemrograman2
Perulangan proses dalam
.a+asa pemrograman ditangani
dengan suatu mekanisme yang
dise.ut loop2 Dengan memakai loop$
suatu proses yang .erulang misalnya
menampilkan angka " sampai "---
atau tulisan yang sama se.anyak
sepulu+ kali di layar dapat
diimplementasikan dengan kode
program yang pendek2
Pada pemrograman proses
perulangan di.agi menjadi % jenis$
yaitu: Perulangan yang tela+
diketa+ui jumla+ perulangannya
se.elum perulangan terse.ut di
lakukan2 )enis perulangan ini
dilakukan dengan penyataan 5or2 Dan
kedua adala+ perulangan yang .elum
di keta+ui jumla+ perulangannya
se.elum perulangan terse.ut
dilakukan2 Perulangan jenis ini terdiri
2008 | Direktorat Pembinaan SMK
"="
Bahasa Pemrograman "tru)tur Perulangan
dari dua kategori$ yaitu: kondisi
perulangan diperiksa diawal
perulangan2 )enis perulangan ini
dilakukan dengan penyataan w+ile2
Kondisi perulangan diperiksa diak+ir
perulangan2 )enis perulangan ini
dilakukan dengan penyataan do6
w+ile2 Struktur perulangan secara
umum terdiri dari dua .agian:
Kondisi perulangan$ yaitu ekspresi
.oolean yang +arus dipenu+i
untuk melaksanakan perulangan2
!adan 3.ody4 perulangan$ yaitu
.agian algoritma yang diulang2
*$&$ O(erator !n/rement %an De/rement
Se.elum jau+ mem.a+as
perulangan$ akan dipelajari da+ulu
mengenai operasi increment2
8perator 7ncrement digunakan untuk
menaikan atau .isa juga untuk
meningkatkan nilai dengan satu$
sedangkan decrement digunakan
untuk mengurangi nilai turun
dengan satu2 Kedua pernyataan
.erikut merupakan untuk
menaikan varia.el num dengan
satu:
nu% ' nu%
: 1A
nu%
:' 1A
num di kurangi dengan satu dapat
dili+at dari pernyataan .erikut ini:
nu% ' nu%
; 1A
nu% ;'
1A
dalam .a+asa ABB menyediakan
satu set operator unary seder+ana
yang dirancang +anya untuk
menam.a+ dan mengurangi se.ua+
varia.el dengan "2 8perator
increment adala+ mengunakan kode
BB2 Sedangkan operator decrement
adala+ 662 Pernyataan yang
menggunakan operator BB untuk
menaikan varia.el num adala+
se.agai .erikut:
nu%:
:A
sedangkan pernyataan decrement
yang digunakan untuk mengurangi
varia.el num adala+ se.agai .erikut:
nu% ;
; A
dalam .a+asa pemrograman .aik
se.elum maupun sesuda+ .a. ini
di.a+as sering menggunakan operasi
kenaikan dan pengurangan yang
menggunakan dalam mode post5i&$
mode post5ik artinya operator
diletakkan setela+ varia.el2 8perator
juga .ekerja dalam mode pre5ik$
dimana operator ditempatkan
se.elum nama varia.el:
: :
nu%A
; ;
nu%A
Kedua operator mode post5i& dan
pre5i& diatas akan menam.a+kan "
atau mengurangi dengan " pada
setiap operand2 Program di.awa+
menunjukkan operator increment dan
decrement2
"=%
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
Program ?2"
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it bigLa ' 10, &%aLa ' 1A
>out ?? B3abe&ar adaa( B ?? bigLa ?? B dan 3ake>i adaa( B ?? &%aLa
?? endA
&%aLa::A
bigLa;;A
>out ?? B3abe&ar adaa( B ?? bigLa?? B dan 3ake>i adaa( B ?? &%aLa
?? endA
::&%aLaA
;;bigLaA
>out ?? B3abe&ar adaa( B ?? bigLa?? B dan 3ake>i adaa( B ?? &%aLa
?? endA
.et*. 0A
8
Keluaran programnya adala+ :
3abe&ar adaa( 10 dan 3ake>i
adaa( 1 3abe&ar adaa( 7 dan
3ake>i adaa( " 3abe&ar
adaa( 8 dan 3ake>i adaa( 1
*$)$ Ek'(re'i Matematika DD %an # #
Pada operator kenaikan dan
pengurangan dapat juga digunakan
pada varia.el dalam ekspresi
matematika2 Per+atikan potongan
program .erikut ini:
a '
"A
b '
*A
> ' a E
b::A
>out ?? a ?? B B ?? b
?? B B ?? >A
dalam pernyataan c I a K .BB$ c
adala+ +asil dari perkalian a dan .$
dimana "-2 *erupakan se.ua+
varia.el . yang ditam.a+kan dengan
satu2 Kemudian dengan
menggunakan pernyataan cout maka
+asil ditampilkan se.agai .erikut:
" ,
10
)ika pernyataannya c terse.ut diatas
.eru.a+ maka dapat di.aca:
> ' a E :
:bA
varia.el . akan ditam.a+kan dengan
satu se.elum keduanya dikalikan
dengan a2 dalam kasus ini c
merupakan +asil dari nilai % dikalikan
>$ se+ingga pernyataan cout akan
menampilkan:
" ,
1"
Dengan satu saja dapat
mem.awa .e.erapa aksi dalam satu
pernyataan menggunakan operator
kenaikan dan pengurangan$ +al
terse.ut juga tidak terlalu rumit untuk
digunakan2 Per+atikan potongan
program di.awa+ ini:
2008 | Direktorat Pembinaan SMK
"==
Bahasa Pemrograman "tru)tur Perulangan
a '
"A
b '
*A
> ' ::(a E b)A //
<rror_
pernyataan terse.ut diatas
merupakan pernyataan seder+ana
yang tidak .ekerja karena adanya
operator kenaikan dan pengurangan2
Pada operator kenaikan dan
pengurangan .iasanya ada varia.el
operand$ tetapi umumnya$ sesuatu
yang ada di se.ela+ kiri dari operator
yang disetujui2
Seperti suda+ kita keta+ui .a+wa
dalam .a. ini$ operator BB dan 66
digunakan se.agai kalimat
peng+u.ung2 Sama seperti dalam
ekspresi matematika$ per.edaan
antara mode post5i& dan pre5i& sangat
dekat2 Per+atikan potongan program
.erikut ini:
Y ' 10 A
iH (Y : :@ 10)
>out ?? BY ebi( be&ar daripada 10!
`nBA
Dua operasi yang terjadi dalam
pernyataan 7< terse.ut diata adala+:
3"4 nilai yang diuji pada & untuk
menentukan apaka+ nilainya le.i+
.esar daripada "-$ dan 3%4 & adala+
diincremented2 Karena kenaikan
operator yang digunakan dalam
mode post5i&$ !andingan +al yang
terjadi terle.i+ da+ulu2 Sejak "- tidak
le.i+ dari "-$ pernyataan cout tidak
akan dijalankan2 )ika mode kenaikan
operator .eru.a+$ sedangkan jika
pernyataan akan mem.andingkan
""6"- dan pernyataan cout akan
dijalankan2
*$*$ Penghitung
Kadang6kadang penting .agi
se.ua+ program untuk melacak
jumla+ 7terasi yang dilakukan dalam
satu loop2 *isalnya$ Program
di.awa+ menampilkan se.ua+ ta.el
yang terdiri dari angka " sampai
dengan "-$ jadi loop +arus iterasi "-
kali2 Program terse.ut di.awa+ akan
menampilkan angka " sampai
dengan "- dan kemudian
dikuadratkan:
Program ?2%2
in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it nu% ' 1A // inisialisasi penghitung
>out ?? B Angka Angka kuadrat`nBA
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
Ghi-e (nu% ?' 10)
6
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
nu%::A // penghitung #ncrement
"=?
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
8
.et*. 0A
8
Keluaran programnya adala+ se.agai .erikut:
Angka Angka kuadrat
;;;;;;;;;;;;;;;;;;;;;;;;;
1 1
" #
1 7
# 1,
* "*
, 1,
+ #7
8 ,#
7 81
10 100
Dalam Program diatas$ varia.el
num$ dimulai dari angka "$ kemudian
diincrement pada setiap kali putaran
loop2 Ketika num mencapai ""
lingkaran .er+enti2 num digunakan
se.agai counter varia.el$ yang .erarti
varia.el terse.ut secara teratur di
increment pada setiap perulangan2
Pada dasarnya$ num terus
meng+itung jumla+ lingkaran 7terasi
yang tela+ dilakukan2 Ketika varia.el
num digunakan se.agai
pengendalian pada loop dan kapan
akan keluar dari loop$ dise.ut
lingkaran kontrol varia.el2
Dalam conto+ program diatas$
penam.a+an varia.el num adala+
pada lingkaran2 Pendekatan lain
adala+ dengan mengga.ungkan la.a
operasi yang .er+u.ungan dengan
pengujian$ seperti yang ditunjukkan
dalam pada program di.awa+ ini2
Program ?2=
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it nu% ' 0A
>out ?? BAngka Angka kuadrat`nBA
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
Ghi-e (nu%:: ? 10)
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
.et*. 0A
8
2008 | Direktorat Pembinaan SMK
"='
Bahasa Pemrograman "tru)tur Perulangan
Keluaran programnya adala+ se.agai .erikut:
Angka Angka kuadrat
;;;;;;;;;;;;;;;;;;;;;;;;;
1 1
" #
1 7
# 1,
* "*
, 1,
+ #7
8 ,#
7 81
10 100
Per+atikan .a+wa sekarang
varia.el num diinisialisasi ke -$ .ukan
"$ dan relati5 menggunakan ekspresi
Toperator .ukan TI2 9al ini karena
cara operator untuk menaikan
.ekerja jika diga.ungkan dengan
ekspresi peng+u.ung2
Kenaikan operator yang
digunakan dalam mode post5i&$
.erarti pada varia.el num menam.a+
satu setela+ .er+u.ungan ujian2
Ketika lingkaran pertama
melaksanakan$ num diatur kenilai -$
kemudian - di.andingkan dengan "-2
8perator BB kemudian akan
menam.a+kan varia.el num segera
setela+ dilakukan per.andingan2 !ila
pernyataan cout dieksekusi$ num
memiliki nilai "2
*# dibandingkan dengan 10, ke%udian di;
in>re%ent! Bia pernyataan >out
diak&anakan, nu% 1 berniai ebi( be&ar dari
itu pengu-ian ter&ebut!
P(ie (*#:: ? 10)
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ??
endA
Di dalam looping$ num selalu memiliki
nilai le.i+ dari " di.anding
se.elumnya nilai "-2 7tula+ mengapa
peng+u.ung operator menggunakan
T .ukan TI2 Ketika varia.el num
.ernilai @ maka diuji$ se+ingga akan
menjadi .ernilai "- pada pernyataan
cout2
*$+$ Pern3ataan OR
)enis loop dalam .a+asa ABB
adala+ loop <8R2 <8R sangat ideal
untuk situasi yang memerlukan
peng+itung karena ekpresinya suda+
built-in 3menjadi satu4 dengan
memper.arui varia.el2 !erikut ini
adala+ 5ormat perulangan <8R
"=>
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
7,. oop!
7,. (initiaiZationA te&tA update)
6
pernyataanA
pernyataanA
// tempat banyaknya pernyataan
!isa juga se.ua+ perulangan
menggunakan pernyataan 5or ditulis
dalam .entuk 5ormat potongan
program se.agai .erikut:
7,. (ini&iai&a&iA &yarat peruanganA penguba( niai pen>a>a()
pernyataanA
!isa juga ditulis seperti di.awa+ ini:
7,. (ungkapan1A ungkapan"A ungkapan1)
pernyataanA
Penjelasan mengenai 5ormat
pernyataan <8R diatas adala+
seperti di.awa+ ini:
ngkapan" atau inisialisasi:
digunakan untuk mem.erikan
inisialisasi ter+adap varia.el
pengendali loop2
ngkapan% atau se.agai syarat
perulangan: dipakai se.agai
pemegang kontrol ter+adap
pengulangan$ karena .agian ini
yang akan menentukan suatu
kondisi perulangan untuk
diteruskan atau di+entikan dari
loop2
ngkapan= atau pengu.a+ nilai
pencaca+: dipakai se.agai
pengatur peru.a+an nilai varia.el
pengendali loop2 Peru.a+an nilai
.isa kenaikan atau penurunan nilai
pencaca+
Ketiga ungkapan dalam <8R
terse.ut +arus dipisa+kan dengan
titik koma 3N42 Pernyataan dalam 5or
dapat .erupa pernyataan tunggal
maupun jamak 3le.i+ dari satu42 )ika
pernyataannya .er.entuk jamak$
maka pernyataan6pernyataan
terse.ut +arus diletakan didalam satu
.lok dengan memakai tanda kurung
kurawal seperti .erikut:
7,. (ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a()
6
pernyataanW1A
pernyataanW"A
ccc
Gernyataan
WnA
8
2008 | Direktorat Pembinaan SMK
"=(
Bahasa Pemrograman "tru)tur Perulangan
!erikut ini adala+ se.ua+ diagram alir pernyataan <8R adala+ se.agai .erikut:
Ii+i"-i+"+i
Foop ' 1
(e!*b"h i-"i (e)")"h
oop:: atau oop ' oop : 1
Pe.F"t"
"
Cet"'
bi-"!"
>out ?? oop
?? B BA
SF"."t
(e.*-"
!" Foop
?' 10
Be".
S"-"
h
;am.ar ?2"2 Diagram Alir Pernyataan <8R
Seperti perulangan dua lainnya$
jika +anya ada satu pernyataan
dalam tu.u+ perulangan$ kotak
pernyataan 3.race4 akan dapat
dia.aikan2 Perulangan <8R
mempunyai tiga ekspresi didalam
tanda kurung$ dipisa+kan ole+
semicolon2 3Per+atikan tidak ada
koma setela+ ketiga ekspresi24
Pertama adala+ ekspresi
initialiQation e&pression2 Ekspresi ini
.iasanya digunakan untuk se.ua+
initialiQe peng+itung atau varia.el
yang +arus memiliki nilai awal2 7ni
adala+ tindakan yang pertama
dilakukan ole+ perulangan dan +anya
dilakukan sekali2
Ekspresi yang kedua adala+ test
e&pression2 Seperti ekspresi test
dalam perulangan w+ile dan do6
w+ile$ test e&pression mengendalikan
pelaksanaan perulangan2 Selama ini
ungkapan itu .enar$ mka tu.u+
perulangan <8R akan mengulang
lagi2
Ekpresi ketiga adala+ ekspresi
update e&pression2 Ekspresi ini akan
melaksanakan diak+ir setiap
perulangan2 !iasanya$ ia akan
menam.a+kan se.ua+ peng+itung
atau varia.el yang +arus diu.a+ pada
setiap perulangan2 Program di.awa+
adala+ Program yang menggunakan
<8R se.agai pengganti dari w+ile
loop2
"=#
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
Program di.awa+ menggunakan
pernyataan <8R untuk menampilkan
angka " sampai dengan "- dan
kemudian mengkuadratkannya2
ntuk le.i+ jelasnya per+atikan
program di.awa+ ini:
Program ?2?
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it nu%A
>out ?? BAngka Angka
kuadrat `nBA >out ??
B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
7,. (nu% ' 1A nu% ?' 10A
nu%::)
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
get>( ()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
Angka Angka kuadrat
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1 1
" #
1 7
# 1,
* "*
, 1,
+ #7
8 ,#
7 81
10 100
2008 | Direktorat Pembinaan SMK
"=@
Bahasa Pemrograman "tru)tur Perulangan
;am.ar di.awa+ menjelaskan
mengenai mekanisme looping dalam
perulangan untuk menjelaskan
proses langka+6langka+ program
diatas2
Step 1! )eakukan ini&iai&a&i ek&pre&i!
Step "! )enge3aua&i te& ek&pre&i! Cika %e%ang,
an-ut ke Step 1! Cika tidak, %eng(entikan oop
Step #! )eakukan update ek&pre&i!
Ke%bai ke
&tep "!
7,. (nu% ' 1A nu% ?' 10A nu%::)
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
Step 1! Caankan tubu( peruangan!
;am.ar ?2%2 *ekanisme Perulangan
*eskipun pada umumnya gaya
pemrograman diatas dianggap jelek$
tetapi satu atau .e.erapa kalimat
perulangan dapat dia.aikan2
7nitialiQation ekspresi yang mungkin
dapat di+ilangkan dari dalam kurung
loop$ jika suda+ dilakukan atau jika
tidak ada initialiQation diperlukan2
!erikut di.awa+ ini adala+ conto+
program perulangan dalam
melakukan pengaksesan se.elum
perulangan:
it nu% ' 1A
7,. ( A nu% ?' 10A nu%::)
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
Kita juga dapat menga.aikan
pem.aruan ekspresi$ jika sedang
dilakukan di tempat lain didalam
perulangan atau jika tidak ada yang
diperlukan2 perulangan .erikut ini
untuk .ekerja seperti loop w+ile2
it nu% ' 1A
7,. ( A nu% ?' 10A )
6
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
nu%::A
8
"?-
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
Kita .a+kan dapat tidak
menggunakan atau menga.aikan
semua tiga ekspresi dari tanda
kurung loop <8R2 )ika +al terse.ut
dia.aikan maka akan terjadi
peringatan .a+wa kita mem.iarkan
test e&pression2 Per+atikan conto+
di.awa+ ini:
7,. ( A A )
>out ?? B2eo Tord`nBA
Karena perulangan ini tidak
memiliki cara untuk .er+enti$
maka program diatas akan
menampilkan kata a9ello /orld S na
selamanya atau sampai terjadi
interupsi program2
!entuk lain yang memper.arui
Ekspresi dilakukan supaya kita tidak
di.atasi dalam menggunakan
pernyataan increment pada ekspresi
update2 !erikut ini adala+ se.ua+
perulangan yang menampilkan
semua atau .a+kan angka % +ingga
"-- dengan menam.a+kan % pada
setiap peng+itung2 Per+atikan
program di.awa+ ini:
7,. (nu%ber ' "A nu%ber ?' 100A nu%ber :' ")
>out ?? nu%ber ?? endA
program di.awa+ ini merupakan
program perulangan yang melakukan
+itungan turun mulai dari "- turun
sampai nilai -2
7,. (nu%ber ' 10A nu%ber @' 0A nu%ber;;)
>out ?? nu%ber ?? endA
perulangan di.awa+ ini tidak memiliki
.adan resmi2 ;a.ungan kenaikan
operasi dan pernyataan cout
pem.aruan ekspresi akan melakukan
semua pekerjaan pada setiap iterasi:
7,. (nu%ber ' 1A nu%ber ?' 10A >out ?? nu%ber::)A
)ika perulangan memerlukan
melakukan le.i+ dari satu pernyataan
se.agai .agian dari inisialisasi$
pernyataan dipisa+kan dengan tanda
koma2 Program di.awa+ adala+ versi
Program se.elumnya yang diu.a+
untuk mem.erita+u pengguna
mengenai angka penjualan selama
satu minggu2
Program di.awa+ ini akan
.erlangsung setiap +ari selama satu
minggu dan kemudian program akan
meng+itung totalnya2 Per+atikan
program .erikut ini:
2008 | Direktorat Pembinaan SMK
"?"
Bahasa Pemrograman "tru)tur Perulangan
Program ?2'
=in>ude ?io&trea%@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
it %ain()
6
),+t it K$)WDA\S ' +A
it >ountA
%,*b-e totaA
7,. (>ount ' 1, tota ' 0!0A >ount ?' K$)WDA\SA >ount::)
6
%,*b-e &ae&A
>out ?? B)a&ukkan pen-uaan untuk (ari B ?? >ount ?? BM BA
>in @@ &ae&A
tota :' &ae&A
8
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(")A
>out ?? B4ota pen-uaan adaa( bB ?? tota ?? endA
.et*. 0A
8
Keluaran Program setela+ mem.erikan masukan adala+ se.agai .erikut:
)a&ukkan pen-uaan untuk (ari 1M
#87!1"N<nterO )a&ukkan pen-uaan
untuk (ari "M #"1!,*N<nterO )a&ukkan
pen-uaan untuk (ari 1M #7+!87N<nterO
)a&ukkan pen-uaan untuk (ari #M
*1"!1+N<nterO )a&ukkan pen-uaan
untuk (ari *M *0,!7"N<nterO )a&ukkan
pen-uaan untuk (ari ,M #87!01N<nterO
)a&ukkan pen-uaan untuk (ari +M
#+,!**N<nterO 4ota pen-uaan adaa( b
1#11!+1
Dalam perulangan menggunakan
<8R$ peng+itung diinisialisasi ke "$
maka total inisialisasi adala+ -$-2 Kita
dapat menempatkan le.i+ dari satu
pernyataan untuk melakukan
pem.a+aruan se.ua+ ekspresi2
Per+atikan program di.awa+ ini:
%,*b-e &ae&A
7,. (>ount ' 1, tota ' 0!0A >ount ?' K$)WDA\SA >ount::, tota :'
&ae&)
6
>out ?? B)a&ukkan pen-uaan untuk (ari B ?? >ount ?? BM BA
>in @@ &ae&A
"?%
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
8
Dalam melakukan pem.aruan
ekspresi se.ua+ perulangan$
peng+itung di increment$ maka nilai
penjualan terse.ut akan ditam.a+kan
ke total pada ak+ir setiap perulangan2
Per+atikan conto+ mengenai
program looping menggunakan <8R2
Program di.awa+ ini digunakan untuk
mencetak .ilangan dari " +ingga "-
secara naik2
Program ?2>
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oopA
7,. (oop ' 1A oop ?' 10A oop::)
>out ?? oop ?? B BA
get>(()A
.et*. 0A
8
Keluaran program adala+ se.agai .erikut:
1 " 1 # * , + 8 7 10
Pada program diatas terdapat
int oopA
tipe data varia.el loop adala+ integer
Hor (oop ' 1A oop ?' 10A oop:
:)
>out ?? oop ?? B BA
Perinta+ di atas akan
menampilkan angka dari " dan
se.ua+ spasi kosong sampai angka
"- dan spasi kosong secara
+oriQontal atau .erjajar2 Proses
terse.ut dilakukan secara iterasi
sepulu+ kali yang diawali dengan nilai
loop I "$ kenaikan nilai loop satu
3loopBB4$ dan .erak+ir sampai syarat
terpenu+i loop TI "-$ $ yaitu: loop I
"-2 Per+atikan tanda loopBB yang
.erarti loop I loop B "2 Proses
perulangan potongan program diatas
adala+ se.agai .erikut:
Gada oop ' 1 dita%pikan M 1 di&a%bung dengan oop ke "
Gada oop ' " dita%pikan M " di&a%bung dengan oop ke 1
cc
cc
cc
Gada oop ' 10 dita%pikan M 10
2008 | Direktorat Pembinaan SMK
"?=
Bahasa Pemrograman "tru)tur Perulangan
Gada oop ' 11 pro&e& itera&i &ee&ai atau ber(enti karena niai
ini &uda( tidak %e%enu(i &yarat yang ditentukan, yaituM 11 ?' 10!
Selanjutnya adala+:
get>((
)A
meminta masukan sem.arang
tom.ol$ perinta+ ini dimaksudkan
untuk mena+an +asil tampilan dilayar
supaya tetap nampak dan akan
menutup sampai adanya sem.arang
tom.ol ditekan2
return
0A
untuk mem.eri nilai kem.alian pada
5ungsi main2 Pada program di atas$
kenaikan ter+adap varia.el
pengendali loop se.esar " 3positi54$
yang dinyatakan dengan ungkapan:
oop
::
artinya ungkapan terse.ut sama
dengan:
oop ' oop
: 1
Kenaikan ter+adap varia.el
pengendali loop .isa diatur jaraknya
dengan mengatur stepnya2 *isalnya
untuk jarak kenaikkannya %$ maka
dinyatakan dengan:
Foop
:' "
9al diatas sama artinya sama
dengan program di.awa+ ini:
Foop ' oop
: "
Pada conto+ yang meli.atkan
pernyataan 5or diatas$ kenaikan
varia.el pengendali loop .erupa nilai
positi52 Se.enarnya kenaikan
ter+adap varia.el pengendali loop
dapat pula diatur supaya .ernilai
negati5$ seperti diconto+kan pada
program di.awa+ ini2 Program
di.awa+ akan mencetak .ilangan
dari "- +ingga " secara menurun2
Program ?2(
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oopA
7,. (oop ' 10A oop @' 1A oop;;)
>out ?? oop ?? B BA
get>(()A
.et*. 0A
8
"??
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
9asil keluaran program adala+ se.agai .erikut:
10 7 8 + , * # 1 " 1
Program lainnya yang mennggunakan pernyataan <8R untuk
menampilkan .ilangan ganjil antara " +ingga "- adala+ se.agai .erikut:
Program ?2#
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oopA
7,. (oop ' 1A oop ?' 10A oop:'")
>out ?? oop ?? B BA
get>(()A
.et*. 0A
8
9asil keluaran program diatas adala+ se.agai .erikut:
1 1 * + 7
Selain .erupa angka$ pencaca+ perulangan juga dapat .erupa karakter2
Per+atikan conto+ program di.awa+ ini:
Program ?2@
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
)h". (uruHA
7,. ((uruH ' aAaA (uruH ?' a]aA (uruH::)
>out ?? B2uruH ab-ad ' B ?? (uruH ?? B`nBA
get>(()A
7,. ((uruH ' aAaA (uruH ?' a]aA (uruH:'11)
>out ?? B2uruH ab-ad ' B ?? (uruH ?? B`nBA
get>(()A
7,. ((uruH ' aZaA (uruH @' aaaA (uruH;;)
>out ?? B2uruH ab-ad ' B ?? (uruH ?? B`nBA
get>(()A
2008 | Direktorat Pembinaan SMK
"?'
Bahasa Pemrograman "tru)tur Perulangan
7,. ((uruH ' aZaA (uruH @' aaaA (uruH;'8)
>out ?? B2uruH ab-ad ' B ?? (uruH ?? B`nBA
get>(()A
.et*. 0A
8
9al yang perlu diper+atikan pada
program diatas adala+ potongan
program seperti di.awa+ ini:
7,. ((uruH ' aAaA (uruH ?' a]aA
(uruH::)
>out ?? B2uruH ab-ad ' B ??
(uruH ?? B`nBA
Perinta+ di atas akan menampilkan
teks 9uru5 a.jad I mulai dari A
sampai dengan R2 Per+atikan
perinta+ pada huruCDD$
2uruH ab-ad
' A 2uruH
ab-ad ' B
2uruH ab-ad
' C 2uruH
ab-ad ' D
2uruH ab-ad
' < 2uruH
ab-ad ' .
2uruH ab-ad
' 0 2uruH
ab-ad ' 2
2uruH ab-ad
' I 2uruH
ab-ad ' C
2uruH ab-ad
' K 2uruH
ab-ad ' F
2uruH ab-ad
' ) 2uruH
ab-ad ' K
2uruH ab-ad
' O 2uruH
ab-ad ' G
2uruH ab-ad
' [ 2uruH
ab-ad ' /
2uruH ab-ad
' S 2uruH
ab-ad ' 4
2uruH ab-ad
' $ 2uruH
ab-ad ' L
2uruH ab-ad
'T 2uruH
ab-ad ' 9
2uruH ab-ad
' \
2uruH ab-ad ' ]
Per+atikan potongan program
di.awa+ ini:
7,. ((uruH ' aAaA (uruH ?' a]aA
(uruH:'11)
>out ?? B2uruH ab-ad ' B ??
(uruH ?? B`nBA
Perinta+ diatas akan menampilkan
teks 9uru5 a.jad I mulai dari A
sampai dengan R dengan step "=$
maka yang muncul adala+:
2uruH ab-ad
' A 2uruH
ab-ad ' K
Per+atikan pada instruksi huruCDK")
Hor ((uruH ' aZaA (uruH @' aaaA (uruH;;)
>out ?? B2uruH ab-ad ' B ??
(uruH ?? B`nBA
Perinta+ terse.ut akan menampilkan
teks 9uru5 a.jad I mulai dari Q
sampai dengan a2 Per+atikan pada
perinta+ huruC##
2uruH ab-ad
' Z 2uruH
ab-ad ' y
2uruH ab-ad
' Y 2uruH
ab-ad ' P
2uruH ab-ad
' 3 2uruH
ab-ad ' u
2uruH ab-ad
' t 2uruH
ab-ad ' &
2uruH ab-ad
' r 2uruH
ab-ad ' X
"?>
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
2uruH ab-ad
' p 2uruH
ab-ad ' o
2uruH ab-ad
' n 2uruH
ab-ad ' %
2uruH ab-ad
' 2uruH
ab-ad ' k
2uruH ab-ad
' - 2uruH
ab-ad ' i
2uruH ab-ad
' ( 2uruH
ab-ad ' g
2uruH ab-ad
' H 2uruH
ab-ad ' e
2uruH ab-ad
' d 2uruH
ab-ad ' >
2uruH ab-ad
' b 2uruH
ab-ad ' a
Per+atikan potongan program
di.awa+ ini:
7,. ((uruH ' aZaA (uruH @' aaaA
(uruH;'8)
>out ?? B2uruH ab-ad ' B ??
(uruH ?? B`nBA
Perinta+ itu akan menampilkan teks
9uru5 a.jad I mulai dari Q sampai
dengan a dengan step 6#$ maka yang
muncul adala+:
2uruH ab-ad
' Z 2uruH
ab-ad ' r
2uruH ab-ad
' - 2uruH
ab-ad ' b
Per+atikan instruksi +uru5 6I#2
Kadang6kadang dijumpai adanya
pernyataan <8R yang tidak
mengandung .agian ungkapan yang
lengkap 3.e.erapa ungkapan
dikosongkan42 Dengan cara ini$ maka
pernyataan adala+ se.agai .erikut:
7,. (oop ' 1A oop ?' 10A
oop:'")
>out ?? oop ?? B BA
Dari potongan program diatas dapat
ditulis menjadi :
oop ' 1A
7,. ( A oop ?' 10A )
6
>out ?? oop ?? B BA
oop :'
"A
8
Pengosongan juga dilakukan
pada ungkapan untuk menaikkan
nilai varia.el pengendali loop2
Se.agai gantinya$ di dalam tu.u+
loop di.erikan pernyataan untuk
menaikkan nilai varia.el pengendali
loop$ yaitu .erupa:
oop :' "A
ngkapan yang tidak di+ilangkan
.erupa loop TI"-2 ngkapan ini tetap
disertakan karena dipakai se.agai
kondisi untuk keluar dari loop2
Se.enarnya ungkapan yang dipakai
se.agai kondisi keluar dari loop juga
.isa di+ilangkan$ se+ingga .entuknya
menjadi:
7,. (AA)
pernyataa
nA
:alu .agaimana cara keluar dari
loop terse.ut2 Aaranya adala+
dengan menggunakan pernyataan
yang dirancang k+usus untuk keluar
dari loop2 Pernyataan itu adala+
.reak yang akan dijelaskan dalam
su. .a+asan tersendiri2 Pernyataan
.reak digunakan untuk keluar dari
satu .lok loop 5or2 Per+atikan
program <8R untuk menampilkan
warna seperti program .erikut:
2008 | Direktorat Pembinaan SMK
"?(
Bahasa Pemrograman "tru)tur Perulangan
Program ?2"-
=in>ude?&tdio!(@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it i ' 0A
7,. (AA)
6
i::A
teYtattr(i : ((i:1) ??
#))A >printH(BTarna
atribut`r`nB)A i7 (i''"0)
b.e"'A
8
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
Pada conto+ .erikut merupakan
penggunaan loop tanpa +enti2 Karena
program memang dirancang untuk
tidak .er+enti maka untuk
meng+entikannya dilakukan dengan
cara menekan tom.ol ATR:EPASE
atau ATR: E !REAK2 Per+atikan
program <8R untuk menampilkan
warna seperti .erikut:
Program ?2""
=in>ude?&tdio!(@
=in>ude?>onio!(@
"?#
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
*+i! "#e+(")e &tdA
%ain()
6
it n ' 0A
7,.(AA)
6
::nA
gotoYy(n,
n)A
teYt>oor(
n)A
>printH(BParna ke Rd`nB,n)A
8
get>(()A
.et*. 0A
8
Keluaran program adala+ se.agai .erikut:
*$,$ Pern3ataan NESTED # OR
Pernyataaan nested 5or adala+
suatu perulangan 5or didalam
perulangan 5or dalam .entuk lain2
Dalam mempelajari perulangan ini
dituntut +rus teliti2 Perulangan
didalam perulangan sering kali
masuk digunakan ole+ program
!entuk umum pernyataan ,ested 5or
adala+ se.agai .erikut:
7,. ( ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a( )
6
7,. ( ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a()
6
pernyataanA
8
8
2008 | Direktorat Pembinaan SMK
"?@
Bahasa Pemrograman "tru)tur Perulangan
Selain pernyataan diatas$ nested <or dapat juga ditulis seperti di.awa+ ini:
7,. ( ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a( )
6
7,. ( ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a()
6
7,. ( ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a()
6
cccc!!
7,. ( ini&iai&a&iA &yarat penguanganA penguba( niai pen>a>a()
6
pernyataanA
8
cccc!
8
Didalam penggunaan ,ESTED6
<8R$ perulangan yang .erada
didalam terle.i+ da+ulu +arus
di+itung sampai selesai$ kemudian
perulangan yang diluar diselesaikan
terus sampai perulangan yang paling
luar2 Per+atikan conto+ program
dengan ,ESTED <8R pada operasi
.ilangan naik .erikut ini:
Grogra% #!1"
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it a, bA
7,.(a ' 1A a ?' *A a::)
6
8
get>((
)A
>out ?? B`n BA
7,.(b ' aA b ?' *A b::)
>out ?? a ?? B BA
.et*. 0A
8
Keluaran program diatas adala+ se.ai .erikut:
1 1 1 1 1
" " " "
"'-
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
1 1 1
# #
*
*$-$ Pern3ataan LH!EE
!a. se.elumnya tela+
memperkenalkan konsep statement
kontrol$ yang .erupa aliran program
langsung2 Se.ua+ loop adala+
struktur kontrol yang menye.a.kan
pernyataan atau kelompok untuk
mengulang pernyataan2 !a+asa ABB
mempunyai tiga looping struktur
kontrol: w+ile loop$ do6w+ile loop$ dan
loop <8R2
Per.edaan antar masing6masing
looping adala+ .agaimana mereka
melakukan kontrol pengulangannya2
Selama melakukan loop ada dua
.agian penting: 3"4 se.ua+ ekspresi
yang diuji dengan nilai .enar atau
sala+$ dan 3%4 pernyataan atau .lok
yang .erulang6ulang selama
ekspresinya .enar2
Perulangan dengan pernyataan
Ghile merupakan perulangan yang
mirip dengan perulangan Cor2
Perulangan 5or dipakai pada
perulangan yang suda+ diketa+ui
.erapa kali akan dijalankan2
Sedangkan yang .elum diketa+ui
.erapakali akan diulangi maka
digunakan w+ile2 Pernyataan w+ile
digunakan ketika kondisi perulangan
diperiksa terle.i+ da+ulu se.elum
menjalankan pernyataan2 Pada
pernyataan w+ile$ disini pemeriksaan
ter+adap loop dilakukan di .agian
awal 3se.elum tu.u+ loop42
Pernyataan w+ile akan mengulang
proses secara terus menerus sampai
kondisi .ernilai .enar atau akan
diulangi selama kondisi .ernilai
.enar$ jika kondisi .ernilai sala+
maka perulangan 3loop4 selesai2
:e.i+ jelasnya$ .entuk pernyataan
w+ile adala+ se.agai .erikut:
!entuk perulangan Ghile
dikendalikan ole+ syaratCkondisi
tertentu$ yaitu perulangan akan terus
dilaksanakan selama syaratCkondisi
terse.ut terpenu+i2 Pernyataan dalam
w+ile akan dilaksanakan .erulangkali
selama syaratCkondisi .ernilai .enar2
)ika syaratCkondisi .ernilai sala+
.adan perulangan tidak akan
dilaksanakan$ yang .erarti
perulangan selesai2 Yang +arus
diper+atikan adala+ perulangan
+arus .er+enti2 Perulangan yang
tidak perna+ .er+enti menandakan
.a+wa logika dari algoritma terse.ut
sala+2
!entuk umum perulangan Ghile$
se.agai .erikut :
Ghi-e (
&yarat/kondi&i )
pernyata
anA
penjelasan mengenai +al terse.ut
diatas adala+ .a+wa syaratCkondisi
merupakan ungkapan logika yang
+anya .ernilai .enar atau sala+$
se+ingga operator yang dipakai disini
adala+ operator relasi dan operator
logika atau ga.ungan dari keduanya2
ntuk le.i+ jelasnya gam.ar diagram
alir dari pernyataan w+ile adala+
se.agai .erikut:
2008 | Direktorat Pembinaan SMK
"'"
Bahasa Pemrograman "tru)tur Perulangan
(e.F"t""
K,%i+i
Be".
S"-"
h
;am.ar ?2=2 Diagram pernyataan /+ile
Pernyataan dalam Ghile dapat
.erupa pernyataan tunggal maupun
jamak 3le.i+ dari satu42 )ika
pernyataannya .er.entuk jamak$
maka pernyataan6pernyataan
terse.ut +arus diletakan didalam satu
.lok dengan memakai tanda kurung
kurawal2
!entuk umum perulangan Ghile$
dengan satu dengan le.i+ dari satu
pernyataan$ adala+ seperti .erikut :
P(ie (
&yarat )
6
Gernyataa
nA
Gernyataa
nA
8
ntuk le.i+ jelasnya pengenai
pernyataan w+ile$ di.awa+ ini
merupakan conto+ program untuk
menaik .ilangan2 Program
lengkapnya adala+ se.agai .erikut:
Program ?2"=
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oop ' 1A
Ghi-e(oop ?' 10)
>out ?? oop:: ?? B BA
get>(()A
.et*. 0A
8
"'%
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
Keluaran program adala+ se.agai .erikut:
1 " 1 # * , + 8 7 10
Program di.awa+ ini merupakan
se.ua+ penerapan pernyataan w+ile
yang digunakan untuk melakukan
per+itungan turun2 Program di.awa+
ini akan meng+itung .ilangan turun
mulai dari angka "-$ menjadi @$ #$ (
sampai angka "2 Per+atikan program
di.awa+ ini:
Program =2"?
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oop ' 10A
Ghi-e(oop @' 1)
>out ?? oop;; ?? B BA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
10 7 8 + , * # 1 " 1
Se.ua+ program yang
menggunakan pernyataan w+ile juga
.isa digunakan untuk menentukan
.ilangan ganjil2 Program di.awa+ ini
merupakan program yang keluaranya
.ilangan "$ =$ ' dan seterusnya
sampai .atasan looping yang
dimasukan2 !atasan program
di.awa+ ini adala+ "-$ untuk le.i+
jelasnya per+atikan program di.awa+
ini:
Program ?2"'
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oop ' 1A
Ghi-e(oop ?' 10)
6
>out ?? oop ?? B BA
2008 | Direktorat Pembinaan SMK
"'=
Bahasa Pemrograman "tru)tur Perulangan
oop:'"A
8
get>(()A
.et*. 0A
8
Keluaran program diatas adala+:
1 1 * + 7
Program di.awa+ ini penggunaan
w+ile untuk aplikasi manampilkan
+uru52 9uru5 yang ditampilkan adala+
+uru5 a.jad2 ntuk le.i+ jelasnya
per+atikan program di.awa+ ini:
Program ?2">
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
)h". (uruH ' aAaA
Ghi-e((uruH ?' a]a)
>out ?? B2uruH ab-ad ' B ?? (uruH:: ?? B`nBA
get>(()A (uruH
' aAaA
Ghi-e((uruH
?' a]a)
6
>out ?? B2uruH ab-ad ' B ?? (uruH ?? B`nBA
(uruH:'11A
8
get>(()A (uruH
' aZaA
Ghi-e((uruH
@' aaa)
>out ?? B2uruH ab-ad ' B ?? (uruH;; ?? B`nBA
get>(()A (uruH
' aZaA
Ghi-e((uruH
@' aaa)
6
>out ?? B2uruH ab-ad ' B ?? (uruH ?? B`nBA
(uruH;'8A
8
get>(()A
.et*. 0A
"'?
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
8
Keluaran program adala+ se.agai .erikut:
2uruH ab-ad
' A 2uruH
ab-ad ' B
2uruH ab-ad
' C 2uruH
ab-ad ' D
2uruH ab-ad
' < 2uruH
ab-ad ' .
2uruH ab-ad
' 0 2uruH
ab-ad ' 2
2uruH ab-ad
' I 2uruH
ab-ad ' C
2uruH ab-ad
' K 2uruH
ab-ad ' F
2uruH ab-ad
' ) 2uruH
ab-ad ' K
2uruH ab-ad
' O 2uruH
ab-ad ' G
2uruH ab-ad
' [ 2uruH
ab-ad ' /
2uruH ab-ad
' S 2uruH
ab-ad ' 4
2uruH ab-ad
' $ 2uruH
ab-ad ' L
2uruH ab-ad
'T 2uruH
ab-ad ' 9
2uruH ab-ad
' \ 2uruH
ab-ad ' ]
*$2$ Pern3ataan NESTED#LH!EE
Pernyataaan nested w+ile adala+
suatu perulangan w+ile didalam
perulangan w+ile yang lainnya2
!entuk umum pernyataan ,ested
w+ile se.agai .erikut :
Ghi-e (&yarat)
6
Ghi-e (&yarat)
6
pernyataanA
8
8
2008 | Direktorat Pembinaan SMK
"''
Bahasa Pemrograman "tru)tur Perulangan
Selain cara penulisan pernyataan ditulis diatas$ dapat juga ditulis se.agai
.erikut:
P(ie (&yarat)
6
P(ie (&yarat)
6
cccc!!
P(ie (&yarat)
6
pernyataanA
8
cccc!
8
8
Didalam penggunaan ,ESTED6
/97:E$ perulangan yang .erada
didalam terle.i+ da+ulu di+itung
+ingga selesai$ kemudian perulangan
yang diluar diselesaikan terus sampai
perulangan yang paling luar2
Per+atikan Aonto+ program dengan
nested w+ile dimana program
terse.ut merupakan program
Segitiga Pascal dengan ,ESTED
/97:E seperi .erikut ini2
Program ?2"(
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
=in>ude ?%at(!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it roP ' 0A
Ghi-e(roP?'1)
6
it >o ' 1A
Ghi-e(>o ?' 1;roP)
6
>out ?? B BA
>o::A
8
>o'0A
Ghi-e(>o?'roP)
"'>
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
6
>out ?? B B ?? (it)poP(", >o)A
>o::A
8
>o' roP ; 1A
Ghi-e (>o@' 0)
6
>out ?? B B ?? (it)poP(", >o)A
>o;;A
8
>out ?? B`nBA
roP::A
8
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
1
1 "
1
1 " # "
1
1 " # 8 #
" 1
Aonto+ program di.awa+ ini
digunakan untuk menjumla+kan
sejumla+ data angka2 Angka yang
akan dijumla+kan dimasukan satu6
persatu2 Proses pemasukan data
angka akan .er+enti ketika
dimasukkan angka E"2 Setela+ itu
tampil +asil penjumla+annya2
Program ?2"#
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
*+i! "#e+(")e &tdA
5,i% %ain()
6
it >a>a( ' 0, data ' 0, -u%a( ' 0A
Ghi-e (data _' ;1)
6
>out ?? B)a&ukkan data angka M BA
>in @@ dataA
-u%a( :'
dataA
>a>a(::A
8
>out ?? BCu%a( data adaa( M B ?? -u%a(B ?? endA
2008 | Direktorat Pembinaan SMK
"'(
Bahasa Pemrograman "tru)tur Perulangan
>out ?? B/ata;rata M B ?? -u%a(/>a>a(A
8
*$4$ Perulangan DO#LH!EE
Selain operasi loop
menggunakan /97:E$ .a+asa ABB
juga mempunyai D86/97:E dan
untuk perulangan2 Setiap perulangan
dapat tepat untuk mengatasi
.er.agai masala+ pemrograman2
Yang dilakukan D86/97:E terli+at
mirip dengan perulangan yang
.erpaling ter.alik2
Perulangan dengan pernyataan
do6w+ile merupakan perulangan yang
mirip dengan perulangan w+ile
ataupun 5or2 Perulangan 5or dipakai
pada perulangan yang suda+
diketa+ui .erapa kali akan dijalankan2
Sedangkan yang .elum diketa+ui
.erapakali akan diulangi maka
digunakan w+ile atau do6w+ile2
Pernyataan do6w+ile digunakan untuk
menjalankan pernyataan terle.i+
da+ulu .aru kemudian memeriksa
kondisi perulangan2
Pada pernyataan do6w+ile$ disini
pemeriksaan ter+adap loop dilakukan
di .agian ak+ir 3setela+ tu.u+ loop42
Pernyataan do6w+ile akan
mengulang proses secara terus
menerus selama kondisi .ernilai
.enar dan perulangan 3loop4 selesai
jika kondisi .ernilai sala+2
!entuk perulangan do6w+ile
dikendalikan ole+ syaratCkondisi
tertentu$ yaitu perulangan akan terus
dilaksanakan selama syaratCkondisi
terse.ut terpenu+i2 Pernyataan dalam
do6w+ile akan dilaksanakan
.erulangkali selama syaratCkondisi
.ernilai .enar2 )ika syaratCkondisi
.ernilai sala+ .adan perulangan tidak
akan dilaksanakan$ yang .erarti
perulangan selesai2 Yang +arus
diper+atikan adala+ perulangan
+arus .er+enti2 Perulangan yang
tidak perna+ .er+enti menandakan
.a+wa logika dari algoritma terse.ut
sala+2
Per.edaan dengan w+ile
se.elumnya yaitu .a+wa pada do6
w+ile statement perulangannya
dilakukan terle.i+ da+ulu .aru
kemudian di cek kondisinya2
Sedangkan w+ile kondisi dicek dulu
.aru kemudia statement
perulangannya dijalankan2 Aki.at dari
+al ini adala+ dalam do6w+ile minimal
terdapat sekali perulangan2
Sedangkan w+ile dimungkinkan
perulangan tidak perna+ terjadi yaitu
ketika kondisinya langsung .ernilai
sala+2 !entuk umum perulangan do6
w+ile$ se.agai .erikut :
%,
pernyataanA
Ghi-e ( &yarat/kondi&i )
SyaratCkondisi: merupakan ungkapan
logika yang +anya .ernilai .enar atau
sala+$ se+ingga operator yang
dipakai disini adala+ operator relasi
dan operator logika atau ga.ungan
dari keduanya2 ;am.ar diagram alir
dari pernyataan do6w+ile adala+
se.agai .erikut:
"'#
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
(e.F"t"
"
Bena
r
K,%i
+i
Saa
(
;am.ar ?2?2 Diagram alir pernyataan do6w+ile
Pernyataan dalam do6Ghile
dapat .erupa pernyataan tunggal
maupun jamak 3le.i+ dari satu42 )ika
pernyataannya .er.entuk jamak$
maka pernyataan6pernyataan
terse.ut +arus diletakan didalam satu
.lok dengan memakai tanda kurung
kurawal2 !entuk umum perulangan
do6Ghile$ dengan le.i+ dari satu
pernyataan$ seperti .erikut di.awa+
ini:
do
6
Gernyataa
nA
Gernyataa
nA
8
P(ie (&yarat)
program di.awa+ ini merupakan
aplikasi dengan menggunakan do6
w+ile pada operasi .ilangan naik2
Program dengan do6w+ile di.awa+ ini
merupakn program do6w+ile .ilangan
naik2 ntuk le.i+ jelasnya per+atikan
conto+ program .erikut:
Program ?2"@
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
2008 | Direktorat Pembinaan SMK
"'@
Bahasa Pemrograman "tru)tur Perulangan
*+i! "#e+(")e &tdA
it %ain()
6
it oop ' 1A
%,
>out ?? oop::
?? B BA
Ghi-e(oop ?'
10)A get>(()A
.et*. 0A
8
9asil keluaran program adala+:
1 " 1 # * , + 8 7 10
Seperti +alnya program diatas$
pernyataan do6w+ile juga .isa
digunakan untuk operasi .ilangan
turun2 Program di.awa+ ini
digunakan untuk menurunkan
.ilangan mulai dari "- kemudian
turun menjadi @$ # dan seterusnya2
ntuk le.i+ jelasnya per+atikan
program .erikut ini:
Program ?2%-
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it oop ' 10A
%,
>out ?? oop;;
?? B BA Ghi-e
(oop @' 1)A
get>(()A
.et*. 0A
8
9asil keluaran program adala+:
10 7 8 + , * # 1 " 1
Selain digunakan untuk
menaikan dan menurunkan .ilangan$
di.awa+ ini juga di.erikan conto+
se.ua+ program yang menggunakan
pernyataan perulangan do6w+ile yang
menampilkan .ilangan ganjil2
">-
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
!ilangan yang ditampilkan adala+
.ilangan ganjil dengan urutan mulai
dari satu sampai .atas yang
ditentukan yaitu "-2 Se+ingga
.ilangan yang keluar dari program
adala+ "$ =$ '$ ($ dan @2 ntuk le.i+
jelasnya per+atikan program di.awa+
ini:
Program ?2%"
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it
%ain()
6
it oop ' 1A
%,
6
>out ?? oop ?? B BA
oop:'"A
8
Ghi-e (oop ?' 10)A
get>(()A
.et*. 0A
8
9asil keluaran program diatas adala se.agai .erikut:
1 1 * + 7 W
*$"5$ Pern3ataan NESTED DO#LH!EE
Pernyataaan nested do6w+ile
adala+ suatu perulangan do6w+ile
didalam perulangan do6w+ile lainnya2
!entuk umum pernyataan ,ested do6
w+ile se.agai .erikut :
do
6
do
6
pernyataanA
8
P(ie (&yarat)A
8
P(ie (&yarat)A
pernyataan diatas dapat juga ditulis seperti potongan pernyataan di.awa+ ini:
2008 | Direktorat Pembinaan SMK
">"
Bahasa Pemrograman "tru)tur Perulangan
do
6
do
6
ccc
c!!
do
6
pernyataanA
8
P(ie (&yarat)A
! cccc!
8
P(ie (&yarat)A
8
P(ie (&yarat)A
Didalam penggunaan nested do6
w+ile$ perulangan yang didalam
terle.i+ da+ulu di+itung +ingga
selesai$ kemudian perulangan yang
diluar diselesaikan terus sampai
perulangan yang paling luar2
Program perulangan nested do6
w+ile se.enarnya le.i+ komplek
di.andingkan program do w+ile
.iasa2 Dalam mengerjakan program
nested$ .aik w+ile$ do6w+ile tentunya
+arus le.i+ teliti$ karena jika tidak
seringkali terjadi kesala+an ketika de6
compile2 Program di.awa+ ini
merupakan conto+ aplikasi nested
do6w+ile yang digunakan untuk
mencari Segitiga Pascal2 ntuk le.i+
jelasnya per+atikan conto+ program
di.awa+ ini:
Program ?2%%
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
=in>ude ?%at(!(@
=in>ude?&tdib!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it roP ' 0A
%,
6
it >o ' 0A
%,
6
>out ?? B BA
>o::A
">%
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
8
Ghi-e(>o ?' 1;roP)A
>o'0A
%,
6
>out ?? B B ?? (it)poP(", >o)A
>o::A
8
Ghi-e(>o?'roP)A
>o ' roP ; 1A
%,
6
>out ?? B B ?? (it)poP(", >o)A
>o;;A
8
Ghi-e
(>o@' 0)A
>out ??
B`nBA roP::A
8
Ghi-e(roP?'1)A
get>(()A
.et*. 0A
8
9asil keluaran program adala+:
1
0
1 "
1
1 " # "
1
1 " # 8 # "
1
*$""$ Perulangan Ti%ak Berhingga
Perulangan tidak .er+ingga
merupakan perulangan 3loop4 yang
tak perna+ .er+enti atau mengulang
terus$ +al ini sering terjadi
dise.a.kan adanya kesala+an
penanganan kondisi yang dipakai
untuk keluar dari loop2 !a+kan suatu
ketika program perulangan ini
memang dirancang untuk tidak
perna+ .er+enti$ walaupun +al ini
sangat jarang sekali2 Perulangan
tidak ter+ingga .iasanya karena
adanya kesala+an penulisan
program$ se+ingga ketika program
dijalankan akan .erjalan terus6
menerus$2
Se.agai conto+ saja pada
program yang digunakan untuk
penulisan perinta+ nilai pencaca+
sala+ seperti pada program .erikut:
2008 | Direktorat Pembinaan SMK
">=
Bahasa Pemrograman "tru)tur Perulangan
Program ?2%=
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
it bA
7,.(b ' ,A b @' 1A b::)
>out ??
bA get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
Pada program terse.ut diatas
tidak akan .er+enti sampai dilakukan
peng+entian dengan paksa2 Pada
pernyataan 5or diatas tidak akan
.er+enti untuk menampilkan .ilangan
menaik$ kesala+an terjadi pada
pengu.a+ nilai pencaca+$
se+arusnya penulisan yang .enar
adala+:
b d
Akan tetapi yang ditulis dalam
program adala+ :
b :
:
8le+ karena kondisi . UI " selalu
.ernilai .enar 3 karena . .ernilai >4$
maka pernyataan >out ?? bA
akan terus dijalankan2 )ika terjadi +al
semacam ini$ untuk meng+entikan
proses yang terus menerus semacam
ini dilakukan dengan menekan
">?
Direktorat Pembinaan SMK | 2008
dikerjakan$ maka eksekusi akan
dilanjutkan ke pernyataan yang
"tru)tur Perulangan Bahasa Pemrorgraman
tom.ol ATR:B PASE atau ATR: B !REAK2
*$"&$ Pern3ataan Break
Kadang6kadang perlu untuk 6
meng+entikan satu looping se.elum
meninggalkan semua 7terasi2
Pernyataan .reak$ dapat digunakan
untuk .erali+ pada didalam satu
8
perulangan2 !ila menemui .reak $
perulangan .er+enti dan program
>out ?? >ount ?? endA
i7 (>ount '' *)
b.e"'A
Pernyataan .reak .er5ungsi
melompat ke pernyataan setela+
perulangan2
Perulangan dengan w+ile pada
segmen program untuk menjalankan
"- kali$ namun pernyataan .reak
dapat menye.a.kannya .er+enti
setela+ kelima perulangan atau
perulangan tertentu2 ntuk le.i+
jelasnya per+atikan potongan
program di.awa+ ini:
it >ount
' 0A
Ghi-e (>ount::
? 10)
untuk keluar dari perulangan .aik 5or$
w+ile dan do6w+ile serta struktur
switc+2 )ika pernyataan .reak
terletak sesuda+ ak+ir dari .adan
perulangan 3loop42
Per+atikan conto+ program
pemakaian .reak dalam pernyataan
5or di.awa+2 Program digunakan
untuk meng+entikan .ilangan deret
menggunakan .reak
Program %2%?
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it -u%a(' 0A
it bianganA
7,. (biangan'0Abiangan ? "0Abiangan::)
6
-u%a( :' bianganA
i7 (-u%a( @' 100) b.e"'A
8
>out ?? BDeret Biangan M 1 : " : !!! : B ?? biangan ?? endA
>out ?? BCu%a( Deret Biangan ' B ??-u%a(A
2008 | Direktorat Pembinaan SMK
">'
Bahasa Pemrograman "tru)tur Perulangan
get>(()A
.et*. 0A
8
9asil keluaran program diatas adala+ se.agai .erikut:
Deret Biangan M 1 : " : cc : 1#
Cu%a( Deret Biangan ' 10*
Program di.awa+ ini menggunakan
.reak dengan pernyataan w+ile2
Program deret .ilangan yang
menggunaan .reak adala+ se.agai
.erikut:
Program ?2%'
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it -u%a(' 0A
it biangan ' 0A
Ghi-e (biangan
? "0)
6
biangan::A
-u%a( :' bianganA
i7 (-u%a( @' 100) b.e"'A
8
>out ?? BDeret Biangan M 1 : " : !!! : B ?? biangan ?? endA
>out ?? BCu%a( Deret Biangan ' B ??-u%a(A
get>(()A
.et*. 0A
8
9asil keluaran program:
Deret Biangan M 1 : " : cc : 1#
Cu%a( Deret Biangan ' 10*
Aonto+ program di.awa+ ini
menggunakan .reak dengan
pernyataan do6w+ile2 Per+atikan
program deret .ilangan dengan
menggunakan .reak .erikut ini:
">>
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
Program ?2%>
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it -u%a('
0A it
biangan '
0A %,
6
biangan::A
-u%a( :' bianganA
i7 (-u%a( @' 100) b.e"'A
8
Ghi-e (biangan ? "0)A
>out ?? BDeret Biangan M 1 : " : !!! : B ?? biangan ?? endA
>out ?? BCu%a( Deret Biangan ' B ??-u%a(A
get>(()A
.et*. 0A
8
9asil keluaran program diatas adala+ se.agai .erikut:
Deret Biangan M 1 : " : cc : 1#
Cu%a( Deret Biangan ' 10*
*$")$ Pern3ataan .ontinue
Pernyataan continue digunakan
untuk mengara+kan eksekusi ke
iterasi 3proses loop4 .erikutnya yang
.erada pada loop yang sama$ atau
dengan kata lain mengem.alikan
proses yang sedang dilaksanakan
keawal loop lagi$ tanpa menjalankan
sisa perinta+ dalam loop terse.ut2
Per+atikan conto+ program yang
menggunakan continue dalam
pernyataan 5or .erikut ini:
Program ?2%(
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
2008 | Direktorat Pembinaan SMK
">(
Bahasa Pemrograman "tru)tur Perulangan
it -u%a(' 0A
it bianganA
7,.(biangan ' 1A biangan ?' "0Abiangan::)
6
i7 (biangan '' 10 ff biangan '' 11) ),ti*eA
-u%a( :' bianganA
8
>out ?? BDeret Biangan M 1 : " : !!! : 7 : 1" : 11 : !!! : B ??
biangan;1 ?? endA
>out ?? BCu%a( Deret Biangan ' B ??-u%a(A
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
Deret Biangan M 1 : " : cc : 7 : 1" : 11 : c : "0
Cu%a( Deret Biangan ' 187
Per+atikan conto+ program yang menggunakan continue dengan pernyataan
w+ile se.agai .erikut ini:
Program ?2%#
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it -u%a(' 0A
it biangan ' 0A
Ghi-e (biangan
? "0)
6
biangan::A
i7 (biangan '' 10 ff biangan '' 11) ),ti*eA
-u%a( :' bianganA
8
>out ?? BDeret Biangan M 1 : " : !!! : 7 : 1" : 11 : !!! : B ??
biangan ?? endA
>out ?? BCu%a( Deret Biangan ' B ??-u%a(A
get>(()A
.et*. 0A
8
9asil keluaran program:
Deret Biangan M 1 : " : cc : 7 : 1" : 11 : c : "0
">#
Direktorat Pembinaan SMK | 2008
"tru)tur Perulangan Bahasa Pemrorgraman
Cu%a( Deret Biangan ' 187
!erikut ini merupakan conto+
program menggunakan continue
dalam se.ua+ pernyataan do6w+ile2
Per+atikan program .ilangan deret
dengan mengguakan continue seperti
di.awa+:
Program ?2%@
=in>ude?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain(5,i%)
6
it -u%a('
0A it
biangan '
0A %,
6
biangan::A
i7 (biangan '' 10 ff biangan '' 11) ),ti*eA
-u%a( :' bianganA
8
Ghi-e (biangan ? "0)A
>out ?? BDeret Biangan M 1 : " : !!! : 7 : 1" : 11 : !!! : B ??
biangan ?? endA
>out ?? BCu%a( Deret Biangan ' B ??-u%a(A
get>(()A
.et*. 0A
8
9asil keluaran program:
Deret Biangan M 1 : " : cc : 7 : 1" : 11 : c : "0
Cu%a( Deret Biangan ' 187
*$"*$ Pern3ataan Goto
Pernyataan goto merupakan
instruksi untuk mengara+kan
eksekusi program menuju pernyataan
yang diawali dengan suatu la.el2
:a.el merupakan suatu pengenal
3identi5ier4 yang diikuti dengan tanda
titik dua 3 : 42
!entuk pemakaian goto adala+
se.agai .erikut:
goto
abeA
Aonto+ penggunaan instruksi goto
dapat dili+at pada conto+ program
.erikut ini:
2008 | Direktorat Pembinaan SMK
">@
Bahasa Pemrograman "tru)tur Perulangan
Program ?2=-
=in>ude?io&trea%!(@
=in>ude?&tdio!(@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
%ain()
6
it a,
bA )h".
agiA
ata&M
>out ?? B)a&ukkan Biangan ' BA
>in @@ aA
b ' a R "A
>out ??BKiai B ?? a ?? B R " adaa( ' B ?? bA
>out ?? B`n`nIngin 2itung Fagi N\/4O M BA
agi ' get>(e() A
i7 (agi '' a\a ff agi '' aya)!,t, ata&A
get>(()A
.et*. 0A
8
Keluaran program terse.ut diatas adala+:
)a&ukan Biangan
' Kiai * R " adaa(
' 1
Ingin 2itung agi (\/4) M t
*$"+$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Struktur perulangan secara umum terdiri dari dua .agian$ se.utkan
%2 Se.utkan 5ungsi operator increment dan decrement
=2 )elaskan .entuk pernyataan 5or dalam .a+asa pemrograman
?2 )elaskan apa yang dimaksud dengan potongan program di.awa+ ini:
it nu% ' 1A
7,. ( A nu% ?' 10A )
6
>out ?? nu% ?? B`t`tB ?? (nu% E nu%) ?? endA
nu%::A
8
'2 Se.utkan 5ungsi .reak
>2 Se.utkan 5ungsi goto
(2 Apa yang dimaksud dengan ,ESTED6/97:E
"(-
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
BAB +
STATEMENT KENDAE!
'2"2 Pengertian Statement
'2%2 8perator Relasi
'2=2 Statement 7<
'2?2 Pernyataan 7<CE:SE
'2'2 Pernyataan 7<CE:SE 7<
'2>2 Pernyataan 7<CE:SE *ajemuk
'2(2 Pernyataan ,ESTED 7<
'2#2 8perator :ogika
'2@2 8perator Kondisional
'2"-2 Statement S/7TA9
'2""2 Pernyataan Switc+ F Aase
'2"%2 7<222T9E,$ 7<222T9E,222E:SE dan ,ested 7<
'2"=2 Aplikasi Pernyataan 7< pada *enu
'2"?2 Soal :ati+an
+$"$ Pengertian Statement
Penyeleksian kondisi digunakan
untuk mengara+kan perjalanan suatu
proses2 Penyeleksian kondisi dapat
dii.aratkan se.agai katup atau kran
yang mengatur jalannya air2 !ila
katup ter.uka maka air akan mengalir
dan se.aliknya .ila katup tertutup air
tidak akan mengalir atau akan
mengalir melalui tempat lain2 Seleksi
kondisi adala+ proses penentuan
langka+ .erikutnya .erdasarkan
proses yang terjadi se.elumnya2
Seleksi kondisi ini sangat penting
dalam pemrograman se.a. dengan
adanya seleksi kondisi$ program
dapat menentukan proses apa yang
+arus dilakukan selanjutnya
.erdasarkan keadaan se.elumnya2
Se+ingga nampak seola+ ola+
program dapat .erpikir dan
mengam.il keputusan2 Disinila+ letak
kekurangan komputer yaitu tidak
mampu .erpikir sendiri$ semua +al
yang dilakukan adala+ .erdasarkan
perinta+2
Dalam memprogram seringkali
digunakan suatu perca.angan untuk
pengam.ilan keputusan dari
sejumla+ pili+an yang mungkin2
!a+asa pemrograman menyediakan
pernyataan 7<FT9E, dan kata kunci
yang lain seperti S/7TA9222AASE
untuk melakukan suatu perca.angan2
Dalam perca.angan$ keputusan
diam.il .erdasarkan ekspresi kondisi2
Ekpresi .erkondisi adala+ se.agian
dari pernyataan program yang
menanyakan pertanyaan True atau
<alse 3!enar atau Sala+4 mengenai
2008 | Direktorat Pembinaan SMK
"-"
Bahasa Pemrograman "tatement Kendali
properti$ varia.el$ atau data lain pada
kode program2
Kode6kode perinta+ yang
di.erikan dari suatu .a+asa
pemrograman untuk melakukan
suatu proses2 !lok merupakan satu
atau le.i+ statemen yang +arus
dikerjakan setela+ suatu kondisi
dipenu+i2
Pernyataan Perca.angan
digunak6an untuk memeca+kan
persoalan untuk mengam.il suatu
keputusan diantara sekian
pernyataan yang ada2 ntuk
keperluan pengam.ilan keputusan$
!orland ABB menyediakan .e.erapa
perinta+ antara lain2
+$&$ O(erator Rela'i
Dalam melakukan pemrograman$
ke.anyakan programmer tentunya
suda+ .anyak ta+u .a+wa program6
program komputer di.uat supaya
mengikuti alur2 Tentunya kita juga
.er5ikir .agaimana jika komputer
diprogram ternyata tidak mengikuti
alur atau urutan yang tela+ di.uatG
*aka komputer terse.ut akan
tidak .isa .erjalan sesuai dengan
yang kita inginkan2 Alur atau urutan
pada komputer ini antara lain:
Adanya masukan dari pengguna2
Dapat melakukan Satu atau le.i+
per+itungan atau proses2
*enampilkan +asilnya pada layar2
Se.ua+ komputer yang .aik$
selain dapat melakukan per+itungan$
tetapi juga sangat a+li dalam
mem.andingkan se.ua+ nilai untuk
menentukan apaka+ le.i+ .esar$
kurang dari$ atau sama dengan2 )enis
operasi terse.ut sangat .er+arga
untuk memeriksa tugas6tugas seperti
angka6angka penjualan$ penentuan
la.a rugi$ memeriksa untuk
memastikan angka terse.ut dalam
rentang yang dapat diterima$ dan
memvalidasi input yang di.erikan
ole+ pengguna2
Data ,umerik pada .a+asa ABB
akan di.andingkan dengan
menggunakan se.ua+ operator2
Se.ua+ karakter juga dapat
di.andingkan dengan menggunakan
operator$ karena dianggap se.agai
karakter yang mempunyai nilai
numerik pada ABB2 Peng+u.ung
pada setiap operator akan
menentukan apaka+ ada +u.ungan
antara dua nilai2 Se.agai conto+$
operator le.i+ 3 U 4 menentukan jika
nilai le.i+ .esar daripada yang lain2
8perator kesetaraan 3II4
menentukan apaka+ dua nilai sama2
Ta.el di.awa+ merupakan semua
operator peng+u.ung pada .a+asa
ABB2
Ta.le '2"2 8perator Relasional
2ELASI OPE2AT
O2 @ Febi( be&ar daripada
? Febi( ke>i daripada
@
'
Febi( be&ar dari &a%a
dengan ?
'
Kurang dari &a%adengan
'
'
Sa%a dengan
_
'
4idak &a%a dengan
"-&
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Semua operator relasional terse.ut
diatas$ .isa juga dise.ut dengan
operator .iner2 9al ini karena mereka
menggunakan dua operand2 !erikut
adala+ conto+ yang menggunakan
operator ekspresi yang le.i+ .esar
daripada:
Y @
y
Ekspresi terse.ut merupakan
ekspresi peng+u.ung atau relational
e$pression2 Digunakan untuk
menentukan apaka+ & le.i+ .esar
daripada y2 !erikut ekspresi untuk
menentukan jika & kurang dari y:
Y
?y
Selanjutnya .agaimana
menentukan nilai se.ua+ operator
peng+u.ung terse.ut dan .agaimana
relational e&pression digunakan
dalam programG ntuk menjawa+ +al
terse.ut ada yang perlu diingat yaitu:
semua memiliki nilai2 Relational
ekspresi adala+ ekspresi !oolean$
yang .erarti mereka +anya terdapat
nilai .enar atau sala+2 )ika & le.i+
.esar dari y$ maka ekspresi &U y
akan .enar$ sedangkan kalimatnya
dapat ditulis se.gai .erikut:
\
''
9
Pernyataan diatas akan akan sala+
jika$ operator II digunakan untuk
menentukan apaka+ operand
se.ela+ kiri adala+ sama dengan
operand di kanan2 )ika kedua
operand memiliki nilai yang sama$
ungkapan itu .enar2 Dengan asumsi
.a+wa a adala+ ? merupakan
ungkapan yang .enar:
a
''
#
,amun .erikut ini adala+ sala+:
a
''
"
pasangan sesuatu +al yang
.er+u.ungan merupakan se.ua+
operator yang digunakan untuk
menguji dua +u.ungan2 Pada
operator UI digunakan untuk
menentukan jika operand dise.ela+
kiri le.i+ .esar dari atau sama
dengan operand dise.ela+ kanan2
Dengan asumsi .a+wa jika a adala+
?$ dan . adala+ >$ serta c adala+ ?$
maka ekspresi yang paling .enar
adala+ se.agai .erikut:
b@ '
a a@
' >
,amun ekpresi .erikut di.awa+ ini
adala+ sala+:
a@
' *
operator TI digunakan untuk
menentukan jika operand dise.ela+
kiri kurang dari atau sama dengan
operand dise.ela+ kanan2 Perlu
ditekankan sekali lagi$ .a+wa
dengan asumsi a adala+ ?$ . adala+
>$ dan c adala+ ?$ maka ekspresi
yang .enar adala+ se.agai .erikut:
a
?'
>
b ?'
10
,amun ekpresi .erikut adala+ sala+:
b
?'
a
8perator peng+u.ung terak+ir adala+
MI$ yang artinya adala+ operator tidak
2008 | Direktorat Pembinaan SMK
"-)
Bahasa Pemrograman "tatement Kendali
sama2 8perator ini untuk menentukan
jika operand dise.ela+ kiri tidak sama
dengan operand dise.ela+ kanan$
sedangkan ke.alikan dari operator
terse.ut adala+ operator II2 Seperti
conto+ se.elumnya$ dengan asumsi
a adala+ ?$ . adala+ >$ dan c adala+
?$ maka ekspresi yang .enar adala+
se.agai .erikut:
a _'
b b _
' >
Kalimat terse.ut adala+ .enar karena
a tidak sama dengan . dan . tidak
sama dengan c2 ,amun .erikut ini
adala+ ekspresi sala+ karena sama
dengan c:
a _'
>
Ta.el di.awa+ ini menunjukkan
operator dimana nilai6nilai .enar atau
sala+2
Ta.le '2%2 8perator nilai .enar atau sala+2
EKP2ESI KIFAI
x @
F
&aa(, karena Y ebi( ke>i daripada y
x H
F
Betu, karena Y ebi( be&ar daripada y
x H= F Betu, karena Y ebi( be&ar atau &a%a
dengan y x @= F Saa(, karena Y ebi( ke>i atau &a%a
dengan y F I= x Betu, karena y tidak &a%a dengan Y
Setela+ diamati$ se.enarnya
terdapat se.ua+ pertanyaan yang
sering kita tidak ta+u yaitu: aapa yang
dimaksud dengan .enarGa2
Pertanyaan terse.ut merupakan
suatu +al yang sangat perlu untuk
dipertim.angkan2 )ika ekspresi relati5
dapat dilakukan secara .enar atau
sala+$ .agaimana sesuatu yang
mewakili nilai6nilai internal dalam
se.ua+ programG Pada se.ua+
komputer misalnya$ .agaimana
komputer menyimpan .enarG2
!agaimana pula cara menyimpan
data yang sala+G2 9al ini
mem.utu+kan suatu tanda atau kode
yang disepakati sesuai dengan
kesepakatan umum pada se.ua+
komputer2
Dalam .a+asa ABB$ nilai .enar
akan diwakili dengan angka " dan
sala+ dengan angka -2 ntuk
menggam.arkan le.i+ lengkap$
per+atikan program di.awa+ ini:
Program '2"2
=in>ude?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
b,,- niaiBetu, niaiSaa(A
"-*
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
it Y ' *, y ' 10A
niaiBetu ' Y ? yA
niaiSaa( ' y '' YA
>out ?? BBenar adaa( B ??
niaiBetu ?? endA >out ?? BSaa(
adaa( B ?? niaiSaa( ?? endA
get>(()A
.et*.
0A
8
Keluaran Programnya adala+ se.agai .erikut:
Benar adaa( 1
Saa( adaa( 0
Selanjutnya co.a kita memeriksa
pernyataan6pernyataan yang .erisi
ekspresi relasi sedikit le.i+ dekat:
niaiBetu' Y
? yA
niaiSaa( ' y
'' YA
pernyataan6pernyataan terse.ut
tampaknya ane+ karena
menempatkan nilai per.andingan ke
dalam se.ua+ varia.el2 Pada
pernyataan pertama$ varia.el
trueHalue dengn di.eri +asil & Ty2
Ketika & kurang dari y$ ungkapan itu
.enar$ dan varia.el trueDalue
mem.erikan nilai "2 Sedangkan pada
pernyataan yang kedua ungkapan y
II & adala+ sala+$ se+ingga varia.el
5alseDalue akan keluar nilai -2
Per+atikan .a+wa dalam kedua
kasus operasi relasional
dilaksanakan se.elum tugas operasi
dilakukan2
Selain itu tanda kurung dapat
digunakan untuk mengu.a+ urutan
operasi$ +al ini selalu terjadi karena
adanya operator relasional
tingkatannya relati5 le.i+ tinggi dan
+arus dida+ulukan dalam operasinya
daripada operator yang tingkatnya
le.i+ renda+2 Demikian juga$ ada
operator aritmatika yang +arus le.i+
diutamakan daripada operator
relasional2 Seperti dalam pernyataan
.erikut ini:
KiaiSaa( ' Y ? y d 8A
Dari peryataan diatas misalnya$
yang pertama Y 6 # akan dievaluasi
terle.i+ da+ulu untuk meng+asilkan
nilai %2 Kemudian P yang .ernilai '
akan di.andingkan dengan %2 )ika
nilai ' kurang dari %$ nilai nol akan
masukan ke 5alseDalue2 Ta.el
di.awa+ menunjukkan conto+ lainnya
termasuk pernyataan yang relati5
.iasa2
2008 | Direktorat Pembinaan SMK
"-+
Bahasa Pemrograman "tatement Kendali
Ta.el '2=2 Pernyataan ekpresi relasional
PE2NYATAAN KELUA2
AN Z ' Y ? y Z &a%a dengan 0 karena Y tidak kurang
daripada y >out ?? (Y @ y)A 4a%pikan 1 karena Y ebi( be&ar daripada y!
Z ' Y @' yA Z &a%adengan 1 karena Y ebi( be&ar
&a%adengan y! >out ?? (Y ?' y)A 4a%pikan 0 karena Y tidak kurang
&a%adengan y
Z ' y _' YA Z &a%adengan 1 karena y tidak &a%adengan
Y >out ?? (Y '' y :
1)A
4a%pikan 1 karena Y &a%a dengan y : 1
8perator relasional juga memiliki
urutan yang mempunyai prioritas
diantara mereka sendiri2 Kedua
operator dalam tes kesamaan atau
tidak sama 3II dan M I4 mempunyai
tingkat kesamaan yang sama antara
satu sama lain2
Empat peng+u.ung operator
lainnya$ ada yang mempunyai
prioritas tinggi atau renda+ antara
satu sama lain2 Keempat operator
relasional seperti dalam2 Ta.el
di.awa+ menunjukkan diutamakan
yang .er+u.ungan operator2
Ta.el '2?2 Prioritas operator relasional 3dari tertinggi ke renda+4
''
_'
@ @' ?
?'
!erikut ini adala+ se.ua+ conto+
.agaimana operator diterapkan2 )ika
a I @$ . I %?$ dan c I -$ pernyataan
.erikut ini akan menye.a.kan a
.ernilai " akan ditampilkan2
>out ??(> ''
a@ b)A
Karena adanya nilai yang relati5
diutamakan dari operator dalam
.erekspresi ini$ a U . akan dievaluasi
terle.i+ da+ulu2 Ketika @ tidak le.i+
.esar dari %?$ maka +al terse.ut
akan mengevaluasi sala+ atau -2
Kemudian ketika A II - maka akan
di+asilkan2 Ketika c tidak sama
dengan -$ +al terse.ut akan
meng+asilkan nilai .etul$ atau "2
Se+ingga nilai " akan dimasukkan ke
dalam output stream dan ditampilkan2
+$)$ Statement !
Anda mungkin .erpikir mengenai
pernyataan dalam program
procedural seperti langka+6langka+
yang diam.il se.agai individu2 ntuk
mencapai tujuan terse.ut $ maka
+arus dimulai dari awal dan mengikuti
setiap langka+$ satu setela+ yang lain
+ingga dapat mencapai tujuan2
Program6program yang ditulis ini
adala+ seperti +alnya se.ua+ ajalana
dimana pelaksanaannya +arus diikuti2
Per+atikan langka+ program di.awa+
ini:
"-,
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
=in>ude
?io&trea%@
*+i!
"#e+(")e &tdA
it
%ain()
6
doube pan-ang, ebar, ua&A
>out ?? B%a&ukan pan-ang &egie%patM BA
>in @@
pan-angA
>out ?? B)a&ukan ebar &egie%patM BA
>in @@
ebarA
ua& ' pan-ang E ebarA
>out ?? BFua&nyaM B ?? ua& ?? endA
.et*.
0A
8
;am.ar '2"2 :angka+6langka+ program
Seperti ditunjukkan dalam
;am.ar diatas$ pelaksanaan
program mengalir secara .erurutan
dari satu pernyataan ke pernyataan
.erikutnya2 )enis program ini sering
dise.ut6garis lurus karena program
yang dijalankan dalam pernyataan
yang lurus a.aris$a tanpa simpangan
keara+ yang lain2 Apaka+ +al
terse.ut tidak akan .erguna$ jika
se.ua+ program dapat memiliki le.i+
dari satu ajalur atau ara+a
pelaksanaanG !agaimana jika
se.ua+ program dapat menjalankan
.e.erapa pernyataan +anya dalam
kondisi tertentuG2
9al yang dapat dicapai dengan
pernyataan 7<$ seperti digam.arkan
ole+ Program di.awa+ ini2 Pengguna
memasukan tiga nilai ujian dan
program meng+itung rata6rata nilai
terse.ut2 )ika rata6rata le.i+ .esar
dari @'$ program mem.erikan
selamat pada pengguna
mendapatkan nilai tinggi terse.ut2
ntuk le.i+ jelasnya per+atikan
program untuk mencari rata6rata
pada tiga nilai masukan di.awa+:
Program '2%
=in>ude ?io&trea%@
=in>ude ?io%anip@
2008 | Direktorat Pembinaan SMK
"--
Bahasa Pemrograman "tatement Kendali
*+i! "#e+(")e &tdA
it
%ain()
6
it &>ore1, &>ore", &>ore1A
%,*b-e a3erageA
>out ?? B)a&ukan 1 niai $-ian dan &aya akan %en>ari rata;ratanyaM
BA
>in @@ &>ore1 @@ &>ore" @@ &>ore1A
a3erage ' (&>ore1 : &>ore" : &>ore1) / 1!0A
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(1)A
>out ?? B/ata;rata Kiai Anda Adaa(B ?? a3erage ?? endA
i7 (a3erage '' 100)
6
>out ?? BSea%atc!_ BA
>out ?? BKiai Anda Se%purna_`nBA
8
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
)a&ukan 1 niai $-ian dan &aya akan %en>ari rata;ratanyaM 80 J0
70/Ete.0
/ata;rata Kiai Anda Adaa( 80K0
Keluaran program diatas adala+ se.agai .erikut:
)a&ukan 1 niai $-ian dan &aya akan %en>ari rata;ratanyaM 100
100 100N<nterO /ata;rata Kiai Anda Adaa( 100!0
Sea%atc!_ Kiai Anda Se%purna_
)ika dalam program terse.ut pada potongan program seperti di.awa+ ini:
i7 (a3erage '' 100)
6
>out ?? BSea%atc!_ BA
>out ?? BKiai Anda Se%purna_`nBA
8
*aka potongan program terse.ut
diatas akan menampilkan data tulisan
aselamatF2M aF22$ jika data yang
dimasukan sama dengan seratus2
)ika tidak maka +anya akan
menampilkan rata6rata nilainya saja
tanpa ada ucapan selamat atau a
SelamatF2M a2 ;am.ar di.awa+ ini
menunjukkan .entuk pernyataan
yang digunakan pada pernyataan 7<
dan 5lowc+art visual dapat dijelaskan
cara kerjanya se.agai .erikut:
"-2
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Kondisi
sala+
!etul
Pernyataan
;am.ar '2%2 Diagram alir pernyataan 7<
Dari gam.ar terse.ut diatas pernyataan 7< dapat ditulis se.agai .erikut:
iH (ek&pre&i)
6
Gernyataan
1A
Gernyataan
"A
!
!
Gernyataan nA
8
Pernyataan 7< adala+ sangat
seder+ana cara kerjanya2 )ika
ekspresi didalam tanda kurung yang
.enar$ maka pernyataan didalam
.races 3kotak4 yang akan dijalankan$
jika tidak$ maka mereka dia.aikan2
!lok pernyataan ini adala+
merupakan conditionally e$ecuted
karena pernyataan +anya dijalankan
didalam kondisi yang diekspresikan
dalam tanda kurung yang .enar2
Program diatas menggam.arkan
se.ua+ pernyataan 7<2 Dalam
pernyataan cout +anya dilaksanakan
di.awa+ kondisi yang sama dengan
rata6rata "--2
*isalnya kalau diuraikan dalam
se.ua+ pernyataan dalm kese+arian
adala+ se.agai .erikut: )ika .ensin
mo.il suda+ +ampir +a.is$ maka
.er+enti dipompa .ensin untuk
mengisi .ensin2
)ika diluar +ujan$ pergi kedalam
ruma+2
)ika Anda lapar$ carila+ sesuatu
untuk dimakan2
)ika .lok pernyataan
conditionally e$ecuted +anya satu
2008 | Direktorat Pembinaan SMK
"-4
Bahasa Pemrograman "tatement Kendali
pernyataan$ maka .races dapat
dia.aikan2 *isalnya$ dalam Program
diatas$ jika dua pernyataan cout yang
diga.ungkan menjadi satu
pernyataan$ mereka dapat menulis
seperti yang ditunjukkan di sini2
iH (a3erage '' 100)
>out ?? B&ea%at _ Kiai anda Se%purna_`nBA
Perinta+ 7< yang menyatakan
pernyataan kondisional 3.ersyarat4
dapat ditulis sintaks seder+ana 7<
adala+
iH (kondi&i) &tate%entA
Statement pada sintaks di atas
akan dilakukan jika kondisinya
.ernilai TRE 3tidak sama dengan
nol42 Apa.ila statement yang akan
dilakukan le.i+ dari satu$ maka
sintaksnya menjadi seperti di.awa+
ini:
iH (kondi&i)
6
&tate%ent1A
&tate%ent"A
!!
8
Aonto+ seder+ana penggunaan
7< adala+ untuk menentukan .ole+
tidaknya seseorang meli+at 5ilm
.ioskop2 Seseorang diper.ole+kan
menonton jika usianya "( ta+un ke
atas2 Per+atikan conto+ program ABB
.erikut ini:
Program '2=
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
*+i! "#e+(")e &tdA
it %ain()
6
it u&iaA
>out ?? BBerapa u&ia Anda M BA
>in @@ u&iaA
i7 (u&ia ? 1+)
>out ?? BAnda tidak boe( %enonton bio&kopBA
get>(()A
.et*. 0A
8
"25
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Keluaran program diatas adala+:
Berapa u&ia Anda M 7
Anda tidak boe( %enonton bio&kop
Statement 7< juga dapat
ditam.a+kan E:SE se.agai
konsekuensi alternati5 jika kondisi
tidak dipenu+i 3<A:SE42 ntuk le.i+
jelasnya per+atikan sintaks program
di.awa+ ini:
iH (kondi&i)
6
&tate%ent1A
&tate%ent"A
!!8
e&e 6
&tate%ent1A
&tate%ent"A
8
Anda dapat pula memodi5ikasi
program ABB untuk menentukan
.ole+ tidaknya seseorang menonton
.ioskop seperti program di.awa+ ini:
Program '2?
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
*+i! "#e+(")e &tdA
it %ain()
6
it u&iaA
>out ?? BBerapa u&ia Anda M BA
>in @@ u&iaA
i7 (u&ia ? 1+)
>out ?? BAnda tidak boe( %enonton bio&kopBA
e-+e
>out ?? BAnda boe( %enonton bio&kopBA
get>(()A
.et*. 0A
8
Keluaran programnya adala+ se.agai .erikut:
Berapa u&ia Anda M 1,
Anda tidak boe( %enonton bio&kop
2008 | Direktorat Pembinaan SMK
"2"
Bahasa Pemrograman "tatement Kendali
ntuk menyatakan kondisi atau
syarat$ akan dicek pada 7<$ Anda
dapat menggunakan operator logika
dan operator relasional seperti yang
tela+ dijelaskan se.elumnya2
Per+atikan conto+ penulisan program
di.awa+ ini:
i7 ((a @' ") SS (b '' 1))
6
c!
8
)angan dituliskan seperti ini:
i7 (a @' ") SS (b '' 1)
6
c!
8
Dan juga tidak .ole+ seperti ini:
i7 ((a @' ") SS (b ' 1))
6
c!
8
Perinta+ . I = merupakan
assignment .ukan relasional2 ABB
selalu memperlakukan nilai tidak
sama dengan nol se.agai TRE atau
.enar dan nilai nol sama dengan
<A:SE atau nilai sala+2 8le+ karena
itu$ dua perinta+ di.awa+ ini adala+
identik2 Per+atikan potongan program
di.awa+ ini:
i7 (bi R " _' 0)
>out ?? IBiangan gan-iJA
i7 (bi R ")
>out ?? IBiangan gan-iJ
Selain itu$ 7< juga dapat .er.entuk seperti program di.awa+ ini:
iH (kondi&i1)
&tate%ent
1A e&e iH
(kondi&i")
&tate%ent"A
e&e iH (kondi&i1)
&tate%ent1A
!
!
e&e &tate%entA
7< dapat juga menggunakan
operator pem.anding 3comparison
operators4 untuk mengeksekusi suatu
pili+an dari % pili+an yang ada$
tergantung +asil pem.andingannya2
Penulisan 7nstruksi atau sintaknya
adala+ se.agai .erikut:
iH ($ondisi%
6
"2&
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
8
e&
e
6
8
Gerinta( yang akan diek&eku&i -ika kondi&i berniai true
Gerinta( yang akan diek&eku&i -ika kondi&i berniai Ha&e
Kondisi menunjukkan .er.agai
tipe statement atau 5ungsi yang
meng+asilkan nilai .enar atau sala+2
!erikut ini di.erikan conto+ kondisi
yang .erupa per.andingan antara
varia.el dengan nilai$ varia.el lain
atau 5ungsi2 Per+atikan potongan
program di.awa+ ini:
iH (Y @ *)
6
y ' 10A
8
iH (Y @ y)
6
y ' YA
8
iH (Y @ 3a(angka))
6
y ' "0A
8
Suatu ketika akan ditemui pula
penggunaan instruksi &F ++ !,#N
statements$ dimana isntruksi ini
digunakan untuk mengevaluasi le.i+
dari satu kondisi2 ntuk itu digunakan
tam.a+an blo) &F++!,#N++#-"# &F
statements2 Per+atikan conto+
program di.awa+ ini:
iH (Y ? *)
>out??IKiai Y kurang dari *JA
e&e
iH (Y ? 10)
>out??IKiai 9 antara * dan 7JA
e&
e
>out??IKiai Y ebi( dari 7JA
)ika suatu kondisi tergantung pada
kondisi lain yang suda+ .ernilai true
3seperti i5 +ari I senin dan i5 jam I
>2=- 4 maka +arus digunakan
perca.angan .ersarang 3nested 75
statements42 Per+atikan conto+
.erikut ini:
2008 | Direktorat Pembinaan SMK
"2)
Bahasa Pemrograman "tatement Kendali
iH ((ari ' &enin)
6
iH (-a% ' ,!10)
6
c
8
8
ntuk le.i+ jelasnya mengenai
pernyataan 7<$ per+atikan se.ua+
kasus yang digunakan untuk
menentukan .esarnya potongan dari
pem.elian .arang yang di.erikan
seorang pem.eli$ dimana kasus
terse.ut mempunyai kriteria se.agai
.erikut:
Tidak ada potongan jika total
pem.elian kurang Rp2 '-2---$6
)ika total pem.elian le.i+ dari atau
sama dengan Rp2 '-2---$6
potongan yang diterima se.esar
%-Z dari total pem.elian2
Per+atikan Program yang
menggunakan pernyataan 7<2
Program '2'
=in>ude?&tdio!(@
=in>ude?>onio!(@
=in>ude?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
%,*b-e totWbei, potongan'0, -u%Wbayar'0A
>out??B4ota Ge%beian /p! BA
>in@@totWbeiA
i7 (totWbei @' *0000)
potongan ' 0!" E totWbeiA
>out??BBe&arnya Gotongan /p! BA
-u%Wbayar ' totWbei ; potonganA
>out??BCu%a( yang (aru& dibayarkan /p! B,-u%WbayarA
get>(()A
.et*. 0A
8
+$*$ Pern3ataan !6EESE
Pernyataan 7<CE:SE merupakan
se.ua+ pengem.angan pernyataan
7<2 Secara umum .entuk pernyataan
ini juka digam.arkan dalam .entuk
5lowc+art se.agai .erikut:
"2*
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
!etul sala+
Kondisi
Pernyataan "
Pernyataan %
;am.ar '2=2 Diagram alir 7<6E:SE
)ika diuraikan dalam .entuk kalimat$
gam.ar diatas dapat ditulis menjadi
se.ua+ pernyataan seperti di.awa+
ini:
iH (kondi&i)
6
8
e&
e
6
8
Gernyataan 1
Gernyataan "
Seperti pada pernyataan 7<
diatas$ se.ua+ kondisi akan dili+at
terle.i+ da+ulu2 )ika kondisi adala+
.enar$ maka se.ua+ .lok yang .erisi
satu atau le.i+ pernyataan akan
dijalankan2 )ika ekspresi adala+
sala+$ maka pernyataan grup
.er.eda yang akan dijalankan2
Program di.awa+ merupakan conto+
penggunaan pernyataan .ersama
operator modulus untuk menentukan
apaka+ angka yang di+asilkan ganjil
atau genap2
Program '2>
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
2008 | Direktorat Pembinaan SMK
"2+
Bahasa Pemrograman "tatement Kendali
6
it nu%berA
>out ?? B%a&ukan biangan buat dan &aya akan %e%ia(nya dengan
I.`nBA
>out ?? Badaa( gan-i atau genap! BA
>in @@ nu%berA
i7 (nu%ber R " '' 0)
>out ?? nu%ber ?? B adaa( genap!`nBA
e-+e
>out ?? nu%ber ?? B adaa( gan-i!`nBA
get>(()A
.et*. 0A
8
Keluaran program adala+ se.agai .erikut:
%a&ukan biangan buat dan &aya akan %e%ia(nya dengan I.
adaa( gan-i atau genap! 17/Ete.0
1+ adaa( gan-i
!agian lain diak+ir pernyataan 7<
akan menentukan pernyataan yang
akan dijalankan ketika kondisi yang
ada tidak sesuai atau sala+2 !ila
angka %Z tidak sama -$ pesan yang
dicetak menunjukkan angka ganjil2
Perlu diketa+ui .a+wa program ini
+anya akan mengam.il sala+ satu
dari dua jalur pernyataan 7<CE:SE22
)ika Anda .erpikir tentang
pernyataan dalam program komputer$
langka+6langka+ yang diam.il
.erdasarkan pertim.angkan
pernyataan 7<CE:SE se.agai penentu
jalan2 !a+kan kadang terjadi jalanya
program memutar$ seperti +alnya
pada se.ua+ pernyataan 7<$
sedangkan pada pernyataan 7<CE:SE
menye.a.kan pelaksanaan program
mengikuti sala+ satu dari dua jalur
yang tersedia2
Per+atikan gaya pemrograman
yang digunakan untuk mem.angun
pernyataan 7<CE:SE2 Atau dengan
kata lain adala+ pada tingkat yang
sama seperti +alnya per.edaan2
Pernyataan eksekusi yang
dikendalikan ole+ orang lain kadang
.er.eda satu tingkat2
Seperti +alnya pada pernyataan
7<$ jika tidak menggunakan kotak
se.agai .agian kontrol se.ua+
pernyataan2 Program diatas
menggam.arkan +al terse.ut ini2 7a
juga memperli+atkan sala+ satu cara
untuk menangani se.ua+ masala+
pemrograman yaitu pem.agian ole+
nol2
Pem.agian dengan nol sangat
musta+il untuk dilakukan secara
matematis dan .iasanya
menye.a.kan program cras+2 9al 7ni
.erarti program akan ter+enti
se.elum waktunya$ kadang6kadang
akan muncul dengan pesan
kesala+an2 Program diatas
menunjukkan sala+ satu cara untuk
menguji nilai dari pem.agi se.elum
dilakukan pem.agian2 ,ilai num%
akan diuji se.elum pem.agian
dilakukan2 )ika pengguna
memasukkan angka -$ maka .aris
dikontrol ole+ .agian 7< ketika
program dijalankan$ menampilkan
"2,
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
pesan yang menunjukkan program
tidak dapat melakukan pem.agian
nol2 )ika tidak$ .agian lain mengam.il
kontrol$ dan kemudian mem.agi
num" ole+ num% serta menampilkan
+asilnya2
Sala+ satu aplikasi penggunaan
7<CE:SE misalnya digunakan pada
suatu permasala+an untuk
menentukan .esarnya potongan dari
pem.elian .arang yang di.erikan
seorang pem.eli$ dengan kriteria
se.agai .erikut:
jika total pem.elian kurang dari
Rp2 '-2---$6 potongan yang
diterima se.esar 'Z dari total
pem.elian2
)ika total pem.elian le.i+ dari atau
sama dengan Rp2 '-2---$6
potongan yang diterima se.esar
%-Z dari total pem.elian2
ntuk le.i+ jelasnya per+atikan
conto+ program 7<CE:SE di.awa+ ini:
Program '2(
=in>ude?&tdio!(@
=in>ude?>onio!(@
=in>ude?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
%,*b-e totWbei, potongan'0, -u%Wbayar'0A
>out??B4ota Ge%beian /p! BA
>in@@totWbeiA
i7 (totWbei @'
*0000) potongan '
0!" E totWbeiA e-+e
potongan ' 0!0* E totWbeiA
>out??BBe&arnya Gotongan /p! B??potongan??endA
-u%Wbayar ' totWbei ; potonganA
>out??BCu%a( yang (aru& dibayarkan /p! B,-u%WbayarA
get>(()A
.et*. 0A
8
Program di.awa+ ini digunakan
untuk menentukan se.ua+ operasi
pem.agian yang menggunakan
7<CE:SE $ jika suatu .ilangan di.agi
dengan nol maka program akan
mem.erita+ukan .a+wa program
tidak .isa melakukan operasi2
2008 | Direktorat Pembinaan SMK
"2-
Bahasa Pemrograman "tatement Kendali
Program '2#
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
%,*b-e nu%1, nu%", XuotientA
>out ?? B)a&ukan AngkaM BA
>in @@ nu%1A
>out ?? B)a&ukan Angka FainM BA
>in @@ nu%"A
i7 (nu%" '' 0)
6
>out ?? BGe%bagian oe( 0 tidak %ungkin diakukan!`nBA
>out ?? B&iakan %a&ukan angka agi, BA
>out ?? BAngka ain yang ebi( be&ar daripada 0!`nBA
8
e-+e
6
Xuotient ' nu%1 / nu%"A
>out ?? B4(e Xuotient oH B ?? nu%1 ?? B di3ided by BA
>out ?? nu%" ?? B i& B ?? Xuotient ?? B!`nBA
8
get>(()
A
.et*.
0A
8
Keluaran program setel+ di.eri masukan adala+ se.agai .erikut:
)a&ukan AngkaM 10/Ete.0
)a&ukan Angka FainM 0/Ete.0
Ge%bagian oe( 0 tidak %ungkin diakukan!
&iakan %a&ukan angka agi, Angka ain yang ebi( be&ar daripada 0
+$+$ Pern3ataan !6EESE !
Pernyataan 7<CE:SE 7<
merupakan se.ua+ pernyataan
dimana programmer dapat mem.uat
.e.erapa keputusan dengan
menggunakan aturan yang .er.eda
tetapi ada kaitannya dengan
pernyataan se.elumnya2 *isalnya$
programmer akan menentukan jenis
mantel atau jaket yang dipakai dalam
"22
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
konsultasi se+ingga aturanya adala+ se.agai .erikut:
i7 &angat dingin, pakaia( %ante
yang teba, e-+e, -ika dingin,
%e%akai -aket yang tipi&, e-+e, -ika
berangin, %e%akai ba-u (e%,
e-+e, -ika pana&, tidak peru %e%akai -aket!
Tujuan aturan terse.ut adala+
untuk menentukan jenis pakaian luar
yang akan dipakai2 )ika sangat
dingin$ pertama men+aruskan
menggunakan aturan yang memakai
mantel te.al2 Semua peraturan
lainnya kemudian dapat dia.aikan2
)ika aturan pertama tidak .erlaku$
dan jika tidak dingin sekali$ maka
aturan kedua digunakan2 )ika aturan
tidak .erlaku$ aturan yang ketiga
digunakan$ dan seterusnya2
Suatu cara yang digunakan
untuk men+u.ungkan peraturan
terse.ut sangat penting2 )ika mereka
+anya .erdiri sendiri$ dimungkinkan
akan keluar ruma+ dengan memakai
jaket yang sala+$ atau mungkin$ le.i+
dari satu jaket2 *isalnya$ jika
.erangin$ maka aturannya +arus
.erpakaian .aju +em2 !agaimana jika
ada keduanya yaitu sangat dingin
dan .eranginG Apaka+ akan
memakai se.ua+ .aju +emG2 Karena
aturan +arus dipatu+i$ pertama akan
menentukan aturan memakai mantel
te.al dan memakai .aju +em karena
.erangin2
)enis pengam.ilan keputusan
juga sangat umum dalam
pemrograman2 Dalam .a+asa ABB
+al terse.ut dicapai melalui
pernyataan 7<CE:SE 7<2 ;am.ar
di.awa+ menunjukan 5ormat cara
kerjanya2
2008 | Direktorat Pembinaan SMK
"24
Bahasa Pemrograman "tatement Kendali
Betu

K,%i+i 1
Pe.F"t"" 1
&aa(
Betu
K,%i+i 2
Pe.F"t"" 2
&aa
(
Betu

K,%i+i
Pe.F"t""
&aa
(
;am.ar '2?2 Pernyataan 7<CE:SE 7<
Dari gam.ar diatas dapat diuraikan dalam pernyataan umu 7<CE:SE 7< adala+
se.agai .erikut:
iH (kondisi &)
6
'ernyataan &A
8
e&e iH (kondi&i ()
6
'ernyataan (A
8
!
!
e&e iH (kondi&i n)
6
'ernyataan nA
8
"45
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Susunan ternyataan terse.ut
seperti +alnya se.ua+ pernyataan
.er.entuk rantai 7<CE:SE2 Pada
.agian E:SE se.ua+ pernyataan
akan terkait dengan 7< dari .agian
yang lain2 Ketika diga.ungkan cara
ini$ maka 7<CE:SE dari rantai akan
menjadi se.ua+ pernyataan2 Program
di.awa+ menunjukkan conto+$
dimana Pengguna diminta untuk
memasukkan angka skor tes dan
program menampilkan +uru5 yang
.esar2
Program di.awa+ ini
menggunakan pernyataan 7<CE:SE
yang digunakan untuk operasi 5ile
+uru5 kapital2
Program '2@
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it te&tS>oreA
)h". gradeA
>out ?? B)a&ukan Kiai Angka %aka &aya akan %engu-inya`nBA
>out ?? BKiai Kon3er&i (uruH adaa(M BA
>in @@ te&tS>oreA
i7 (te&tS>ore ? ,0)
grade ' a.aA
e-+e i7 (te&tS>ore ? +0)
grade ' aDaA
e-+e i7 (te&tS>ore ? 80)
grade ' aCaA
e-+e i7 (te&tS>ore ? 70)
grade ' aBaA
e-+e i7 (te&tS>ore ?' 100)
grade ' aAaA
>out ?? B 0rade Anda Adaa( B ?? grade ?? B!`nBA
get>(()A
.et*. 0A
8
Keluaran program setela+ memasukan data adala+ se.agai .erikut:
)a&ukan Kiai Angka %aka &aya akan %engu-inya
Kiai Kon3er&i (uruH adaa(M 70
2008 | Direktorat Pembinaan SMK
"4"
Bahasa Pemrograman "tatement Kendali
0rade Anda Adaa( A!
Pernyataan 7<CE:SE mempunyai
sejumlag karakterisitik k+usus2
Per+atikan dan analisis kerja dari
ekprsesi relasional pengujian se.ua+
testscore T >- di.awa+ ini:
iH (te&tS>ore ?
,0)
niai '
a.aA
)ika testScore kurang dari >-$ +uru5
_<_ dimasukan ke nilai dan sisanya
dari pernyataan yang terkait dengan
7< dia.aikan2 )ika TestScore tidak
kurang dari >-$ maka tugsa akan
diam.il ali+ ole+ .agian lain
pernyataan 7< .erikutnya yang akan
dijalankan2
e&e iH (te&tS>ore
? +0)
niai '
aDaA
Pertama jika seluru+ pernyataan
disaring untuk memili+ nilai kurang
dari >-$ se+ingga saat ini .erikutnya
pernyataan 7< memili+$ varia.el
testScore akan memiliki nilai >- atau
le.i+ .esar2 )ika atestScorea kurang
dari (-$ +uru5 _D_ dimasukan ke nilai
dan sisanya dari Pernyataan 7<CE:SE
7< ini dia.aikan2 lingkaran peristiwa
ini terus .erlangsung sampai sala+
satu ekspresi kondisional ditemukan
.enar atau ak+ir pernyataan yang
di+adapi2 Dalam kedua kasus$
program ini dilanjutkan kem.ali pada
pernyataan yang mengikutinya2
Pernyataan 7<CE:SE 7<$
merupakan pernyataan untuk
mencetak kondisi yang .er+asil2
;am.ar di.awa+ menunjukkan jalan
yang dapat diam.il melalui
pernyataan 7<CE:SE 7<2
"4&
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
4idak \a
Skor4e&
t
?
,0 D
4idak \a
Skor4e&
t
?
+0 D
Ni-"i= LF
L
4idak \a
Skor4e&
t
?
80 D
Ni-"i= LD L
4idak \a
Skor4e&
t
?
70 D
Ni-"i= LC L
4ida
k
\a
Skor4e&t
?'100 D
Ni-"i= LB L
Ni-"i= LA L
;am.ar '2'2 Pernyataan 7<CE:SE 7<
pernyataan 7< pada setiap struktur
.ergantung pada semua pernyataan
7< se.elumnya yang sala+2
Pernyataan E:SE 7< .erikutnya
dijalankan apa.ila ekspresi
kondisional mengikuti E:SE 7< itu
.enar dan semua ekspresi
kondisional se.elumnya adala+
sala+2 ntuk mendemonstrasikan
.agaimana .ekerjanya$ per+atikan
program di.awa+$ yang
menggunakan pernyataan 7< yang
independen .ukan se.ua+
pernyataan 7<CE:SE2 Program
2008 | Direktorat Pembinaan SMK
"4)
Bahasa Pemrograman "tatement Kendali
terse.ut digunakan untuk
mengilustrasikan kesala+an yang
terjadi ketika pernyataan 7<CE:SE
yang digunakan untuk menentukan
nilai +uru5 ke nilai angka2 Per+atikan
program di.awa+ ini:
Program '2"-
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it &korte&tA
)h". niaiA
>out ?? B)a&ukan Kiai Angka %aka &aya akan %engu-inya`nBA
>out ?? BKiai Kon3er&i (uruH adaa(M BA
>in @@ &korte&tA
i7 (&korte&t ? ,0)
niai ' a.aA
i7 (&korte&t ? +0)
niai ' aDaA
i7 (&korte&t ? 80)
niai ' aCaA
i7 (&korte&t ? 70)
niai ' aBaA
i7 (&korte&t ?' 100)
niai ' aAaA
>out ?? B Kiai Anda Adaa( B ?? niai ?? B!`nBA
get>(()A
.et*. 0A
8
Keluaran program setela+ dilakukan pengisian data pada masukan adala+:
)a&ukan Kiai Angka %aka &aya akan %engu-inya
Kiai Kon3er&i (uruH adaa(M #0/Ete.0
Kiai Anda Adaa( A!
Pada program di.awa+$ semua
pernyataan 7< dijalankan karena +al
terse.ut merupakan pernyataan yang
.erdiri sendiri2 Pada conto+ keluaran$
testScore di.erikan nilai ?-$ namun
ada siswa yang menerima A2
!erikutnya apa yang terjadi G2
Karena skor siswa kurang dari >-$
"4*
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
yang pertama pernyataan 7< akan
menye.a.kan nilai _<_
memasukannya ke varia.el grade2
,amun$ karena pernyataan
.erikutnya jika tidak tersam.ung ke
pernyataan pertama$ maka +al
terse.ut akan dieksekusi dengan
.aik2 ketika testScore kurang dari (-$
dan menye.a.kan nilai _D_
ditugaskan ke grade$ dan mengganti
_<_ yang se.elumnya disimpan di
sana2 7ni terus sampai semua jika
ada pernyataan dijalankan2 Yang
terak+ir akan menye.a.kan _A_ akan
ditugaskan untuk agradea2
Pada program di.awa+
menggunakan pernyataan i5Celse i5
untuk melaksanakan konversi nilai
+uri5 3A$ !$ A$ D$ or <4 menjadi nilai
angka2 Per+atikan program di.awa+
ini:
Program '2""
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
it te&tS>oreA
)h". gradeA
b,,- goodS>ore ' t.*eA
>out ?? B)a&ukan Kiai Angka %aka &aya akan %engu-inya`nBA
>out ?? BKiai Kon3er&i (uruH adaa(M BA
>in @@ te&tS>oreA
i7 (te&tS>ore ? ,0)
grade ' a.aA
e-+e i7 (te&tS>ore ? +0)
grade ' aDaA
e-+e i7 (te&tS>ore ? 80)
grade ' aCaA
e-+e i7 (te&tS>ore ? 70)
grade ' aBaA
e-+e i7 (te&tS>ore ?' 100)
grade ' aAaA
e-+e
goodS>ore ' 7"-+eA
i7 (goodS>ore)
>out ?? B 0rade Anda Adaa( B ?? grade ?? B!`nBA
e-+e
6
2008 | Direktorat Pembinaan SMK
"4+
Bahasa Pemrograman "tatement Kendali
8
get>((
)A
>out ?? te&tS>ore ?? B Adaa( &kor anda yang tidak &a(!`nBA
>out ?? BSiakan %a&ukan &kor dibaPa( 100! `nBA
.et*. 0A
8
Keluaran program ddiatas setela+ memasukan data adala+ se.agai .erikut:
)a&ukan Kiai Angka %aka &aya akan %engu-inya
Kiai Kon3er&i (uruH adaa(M 110
110 Adaa( &kor anda yang
tidak &a(! Siakan %a&ukan
&kor dibaPa( 100!
+$,$ Pern3ataan !6EESE Majemuk
!entuk dari 7<6E:SE .ertingkat
se.enarnya serupa dengan ,ESTED
7<$ keuntungan penggunaan 7<6E:SE
.ertingkat di.anding dengan
,ESTED 7< adala+ cara atau .entuk
penulisan yang le.i+ seder+ana2
ntuk le.i+ jelasnya per+atikan
.entuk penulisan program di.awa+
ini:
iH (&yarat)
6
c perinta(A
c perinta(A
8
e&e iH (&yarat)
6
8
e&
e
6
8
c perinta(A
c perinta(A
c perinta(A
c perinta(A
ntuk le.i+ jelasnya$ per+atikan
se.ua+ kasus di suatu perusa+aan
mem.erikan komisi kepada para
selesman dengan ketentuan se.agai
.erikut:
!ila salesman dapat menjual
.arang +ingga Rp2 %--2--- $6 $
akan di.erikan uang jasa se.esar
Rp2 "-2--- ditam.a+ dengan uang
komisi Rp2 "-Z dari pendapatan
yang diperole+ +ari itu2
!ila salesman dapat menjual
.arang diatas Rp2 %--2--- $6 $
akan di.erikan uang jasa se.esar
"4,
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Rp2 %-2--- ditam.a+ dengan uang
komisi Rp2 "'Z dari pendapatan
yang diperole+ +ari itu2
!ila salesman dapat menjual
.arang diatas Rp2 '--2--- $6 $
akan di.erikan uang jasa se.esar
Rp2 =-2--- ditam.a+ dengan uang
komisi Rp2 %-Z dari pendapatan
yang diperole+ +ari itu2
Kasus yang ada di perusa+aan
terse.ut dapat diatasi dengan
menggunakan program 7<6Else67<$
dimana programnya adala+ se.agai
.erikut:
Program '2"%
=in>ude?&tdio!(@
=in>ude?>onio!(@
=in>ude?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
8,"t pendptan, -a&a'0, ko%i&i'0, tota'0A
>out??BGendapatan 2ari ini /p! BA
>in@@pendptanA
i7 (pendptan @' 0 SS pendptan ?' "00000)
6
-a&a'10000A
ko%i&i'0!1EpendptanA
8
e-+e i7(pendptan?'*00000)
6
-a&a'"0000A
ko%i&i'0!1*EpendptanA
8
e-+e
6
-a&a'10000A
ko%i&i'0!"EpendptanA
8
/* menghitung total */
tota ' ko%i&i:-a&aA
>out??B$ang Ca&a /p! B??-a&a??endA
>out??B$ang Ko%i&i /p!
B??ko%i&i??endA
>out??B''''''''''''''''''''
'''''''''B??endA
2008 | Direktorat Pembinaan SMK
"4-
Bahasa Pemrograman "tatement Kendali
>out??B2a&i 4ota /p! B??tota??endA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
Gendapatan 2ari ini /p! 10000
$ang Ca&a /p! 10000
$ang Ko%i&i /p! 1000
'''''''''''''''''
'''''''''''' 2a&i
4ota /p! 11000
+$-$ Pern3ataan NESTED !
Ketika se.ua+ pernyataan 7<
muncul didalam pernyataan 7< lain$
maka +al ini dikategorikan se.agai
nested2 Kenyataannya dalam struktur
7<CE:SE adala+ pernyataan nested i52
)ika masing6masing setela+ i5
pertama adala+ nested di .agian lain
7< se.elumnya2 Karena nested i5
merupakan pernyataan i5 yang
.erada didalam pernyataan i5 yang
lainnya$ se+ingga utuk le.i+ jelasnya
.entuk penulisan pernyataan ,ested
i5 dapat ditulis seperti .erikut di.awa+
ini:
iH(&yarat)
iH(&yarat)
c perinta(A
e&e
c perinta(A
e&e
iH(&yara
t)
c perinta(A
e&e
c perinta(A
Se.agai conto+ saja misalnya
program di.awa+ digunakan untuk
menentukan apaka+ pelanggan .ank
memenu+i syarat k+usus untuk
mendapatkan .unga pinjaman$
dimana syarat k+usus ini ditujukan
untuk pelanggan orang6orang yang
.aru lulus dari sekola+ dan .ekerja2
Program .erikut ini
mendemontasikan pernyataan nested
i52
Program '2"=
=in>ude?>onio!(@
"42
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
)h". peker-a, baruuu&A
>out ?? BCaPaba( pertanyaan
dibaPa( ini`nBA >out ?? Bdengan
-aPaban \ untuk \a atau BA >out ??
B4 untuk 4idak`nBA
>out ?? BApaka( Anda Beker-aD BA
>in @@ peker-aA
>out ?? Btea(kan Anda &ee&ai &ekoa( BA
>out ?? Bdaa% dua ta(un iniD BA
>in @@ baruuu&A
i7 (peker-a '' a\a)
6
i7 (baruuu& '' a\a)
6
>out ?? BKPaita& anda k(u&u& BA
>out ?? Btertarik D`nBA
8
8
get>(()A
.et*. 0A
8
Keluaran program diatas setela+ di.eri masukan adala+:
CaPaba( pertanyaan dibaPa( ini
dengan -aPaban \ untuk \a atau 4 untuk 4idak
Apaka( Anda Beker-aD \
Karena pernyataan 7< pertama
kondisinya melaksanakan masala+
kedua$ .aik varia.el pekerja dan
.arululus +arus diatur ke _Y_ supaya
pesan mengenai pengguna dengan
kuali5ikasi k+usus dicetak sesuai
dengan tingkat suku .unga2 )enis
pernyataan nested i5 yang .aik untuk
pili+an yang kecil dengan
mengkategorisasikan data2 Satu6
satunya cara untuk menjalankan
program pernyataan 7< yang kedua
adala+ dengan ekspresi kondisional
yang pertama +arus .enar2 ,amun
kadang ada 5itur yang tidak
dike+endaki atau sering dikenal
se.agai kesala+an dalam se.ua+
program2 )ika seorang pengguna
2008 | Direktorat Pembinaan SMK
"44
Bahasa Pemrograman "tatement Kendali
memasukkan _,_ 3atau karakter selain
_Y_4 se.agai pekerja atau .arululus$
program tidak mencetak pesan yang
mem.erita+ukan .a+wa mereka tidak
memenu+i syarat2
Pernyataan lain yang dapat
digunakan untuk mengatasi masala+
ini digam.arkan dalam program
di.awa+2 Program di.awa+ ini
merupakan se.ua+ pernyataan
,ESTED 7<2
Program '2"?
=in>ude?>oni
o!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
)h". peker-a, baruuu&A
>out ?? BCaPaba( pertanyaan
dibaPa( ini`nBA >out ?? Bdengan
-aPaban \ untuk \a atau BA >out ??
B4 untuk 4idak`nBA
>out ?? BApaka( Anda Beker-aD BA
>in @@ peker-aA
>out ?? Btea(kan Anda &ee&ai &ekoa( BA
>out ?? Bdaa% dua ta(un iniD BA
>in @@ baruuu&A
i7 (peker-a '' a\a)
6 // )ested if
i7 (baruuu& '' a\a)
6
>out ?? BKPaita& anda k(u&u& BA
>out ?? BAnda tertarik`nBA
8
e-+e
6
>out ?? BAnda (aru& Fuu& dari BA
>out ?? B&ekoa( paing a%a " ta(un`nBA
>out ?? Bdan berkPaita&!`nBA
8
8
e-+e
6
>out ?? BAnda (aru& %en-adi peker-a yang
berkPaita&!`nBA
8
&55
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
.et*. 0A
8
Keluaran program diatas setela+ di.eri masukan adala+:
CaPaba( pertanyaan dibaPa( ini
dengan -aPaban \ untuk \a atau 4 untuk 4idak
Apaka( Anda Beker-aD \
tea(kan Anda &ee&ai &ekoa( daa% dua
ta(un iniD \ KPaita& anda k(u&u& Anda
tertarik
conto+ lainnya misalnya pada
suatu perusa+aan yang mem.erikan
komisi kepada para selesman
dengan ketentuan se.agai .erikut:
!ila salesman dapat menjual
.arang +ingga Rp2 %-2--- $6 $ akan
di.erikan uang jasa se.esar Rp2
"-2--- ditam.a+ dengan uang
komisi Rp2 "-Z dari pendapatan
yang diperole+ +ari itu2
!ila salesman dapat menjual
.arang diatas Rp2 %-2--- $6 $ akan
di.erikan uang jasa se.esar Rp2
%-2--- ditam.a+ dengan uang
komisi Rp2 "'Z dari pendapatan
yang diperole+ +ari itu2
!ila salesman dapat menjual
.arang diatas Rp2 '-2--- $6 $ akan
di.erikan uang jasa se.esar Rp2
=-2--- ditam.a+ dengan uang
komisi Rp2 %-Z dari pendapatan
yang diperole+ +ari itu2
Per+atikan conto+ program dengan
menggunakan pernyataan ,ested6
75 di.awa+:
Program '2"'
=in>ude?&tdio!(@
=in>ude?>onio!(@
=in>ude?io&trea%!(@
*+i! "#e+(")e &tdA
it %ain()
6
8,"t pendptan, -a&a'0, ko%i&i'0, tota'0A
>out??BGendapatan 2ari ini /p! BA
>in@@pendptanA
i7 (pendptan @' 0 SS pendptan ?' "00000)
6
-a&a'100
00A
ko%i&i'0!1EpendptanA
8
e-+e
2008 | Direktorat Pembinaan SMK
&5"
Bahasa Pemrograman "tatement Kendali
6
i7(pendptan?'*00000)
6
-a&a'"0000A
ko%i&i'0!1*EpendptanA
8
e-+e
6
-a&a'10000A
ko%i&i'0!"EpendptanA
8
8
/* menghitung total */
tota ' ko%i&i:-a&aA
>out??B$ang Ca&a /p! B??-a&a??endA
>out??B$ang Ko%i&i /p!
B??ko%i&i??endA
>out??B''''''''''''''''''''
'''''''''B??endA >out??B2a&i
4ota /p! B??tota??endA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+:
Gendapatan 2ari ini /p! *,00
$ang Ca&a /p! 10000
$ang Ko%i&i /p! *,0
'''''''''''''''''
'''''''''''' 2a&i
4ota /p! 10*,0
+$2$ O(erator Eogika
Selain operator relasional$
.a+asa pemrograman umumnya
mendukung tam.a+an operator yaitu
A,D$ 8R$ dan ,8T2 8perator And$
8r$ dan ,ot dikenal dengan nama
operator logika2 Dengan
menggunakan operator ini dua atau
le.i+ test per.andingan dapat
dilakukan2 Pada .agian se.elumnya
tela+ ditulis se.ua+ program tes
dengan dua kondisi pada pernyataan
7<2 Dalam .agian ini ditulis program
yang menggunakan operator logis
untuk mengga.ungkan dua atau le.i+
menjadi satu kalimat relasional2 Ta.el
.erikut merupakan da5tar operator
logika pada .a+asa ABB2
&5&
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Ta.el '2'2 8perator :ogika
OPE2AT
O2
A2TI PEN&ELAS
AN AA AKD )eng(ubungkan dua ekpre&i %en-adi &atu! Kedua
ekpre&i
ter&ebut (aru& benar &upaya (a&inya benar CC O/ )eng(ubungkan dua ekpre&i %en-adi &atu!
2a&i akan %en-adi benar -ika &aa( &atu
atau keduanya ada yang
benar!
I KO4 Operator yang %eakukan kebaikan dari ekpre&i!
Cika ekpre&i
benar %aka (a&i &aa( atau &ebaiknya!
+$2$"$ O(erator AA
8perator VV yang dikenal
se.agai operator logika2 Dua kalimat
diperlukan se.agai operands dan
mem.uat kalimat .enar$ jika kedua
su.6kalimatnya .enar2 !erikut
di.awa+ ini adala+ conto+ program
pernyataan 7< yang menggunakan
operator VV:
iH (&u(u ? "0 SS Paktu @ 1")
>out ?? B&u(u tea( %en>apai e3e yang berba(ayaBA
Per+atikan .a+wa kedua kalimat
yang diA,Dkan .ersama adala+
kalimat yang lengkap untuk
mengevaluasi .enar atau sala+2
Pertama su+u T%- dievaluasi untuk
meng+asilkan +asil .enar atau sala+2
Kemudian menitU "% dievaluasi untuk
meng+asilkan +asil .enar atau sala+2
Kemudian kedua +asil terse.ut
diA,Dkan se+ingga akan
mendapatkan +asil ak+ir untuk
seluru+ ekspresi2 Pernyataan cout
+anya akan dijalankan jika su+u
kurang dari %- dan waktunya le.i+
.esar daripada "%2 )ika sala+ satu
peng+u.ung terese.ut sala+$ seluru+
ekspresi yang di+asilkan juga sala+
dan pernyataan cout tidak dijalankan2
Ta.el di.awa+ meruapkan ta.el
ke.enaran untuk operator VV2
Ke.enaran ta.el .erisi semua
kemungkinan kom.inasi nilai yang
mungkin dimiliki ole+ dua kalimat$
Se.agaimana dalam ta.el
menunjukkan$ kedua su.6ekspresi
+arus .enar untuk operator VV
se+ingga akan meng+asilkan nilai
yang .enar pula2
Ta.le '2>2 :ogika A,D
2008 | Direktorat Pembinaan SMK
&5)
Bahasa Pemrograman "tatement Kendali
<KG/<SI KIFAI
K<B<KA/AK
FO0IKA
Saa( SS
&aa(
Saa
(
0
Saa( SS
benar
Saa
(
0
Benar SS
&aa(
Saa
(
0
Benar SS
benar
bena
r
1
8perator VV dapat digunakan
untuk mempermuda+ program6
program lain yang akan
menggunakan pernyataan ,ESTED
7<2 Program di.awa+ ini adala+ versi
Program se.elumnya yang kemudian
ditulis ulang dengan operator logika2
Per+atikan program di.awa+ ini:
Program '2">
=in>ude?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
)h". peker-a, baruuu&A
>out ?? BCaPaba( pertanyaan dibaPa( ini`nBA
>out ?? Bdengan -aPaban \ untuk \a atau BA
>out ?? B4 untuk 4idak`nBA
>out ?? BApaka( Anda Beker-aD BA
>in @@ peker-aA
>out ?? Btea(kan Anda &ekoa( BA
>out ?? Bdaa% dua ta(un iniD BA
>in @@ baruuu&A
i7 (peker-a '' a\a SS baruuu& '' a\a) //
menggunakan **
6 // logical
operator
>out ?? BKPaita& anda &pe&ia BA
>out ?? Bdan anda tertarik!`nBA
8
e-+e
6
8
get>((
)A
>out ?? Banda (aru& beker-a dan %e%punyai`nBA
>out ?? Buu&an dari &ekoa( S)K daa%`nBA
>out ?? BPaktu paing a%a 1 ta(un!`nBA
&5*
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
.et*. 0A
8
Keluaran program diatas setela+ di.eri masukan adala+
CaPaba( pertanyaan dibaPa( ini
dengan -aPaban \ untuk \a atau 4 untuk 4idak
Apaka( Anda Beker-aD 4
tea(kan Anda &ekoa( daa% dua ta(un iniD \
anda (aru& beker-a dan
%e%punyai uu&an dari
&ekoa( S)K daa% Paktu
paing a%a 1 ta(un!
+$2$&$ O(erator bb
8perator bb yang dikenal se.agai
operator logika 8R2 Dua kalimat yang
diperlukan se.agai operand akan
mem.uat kalimat .enar .ila sala+
satu dari su.6kalimat yang .enar2
!erikut di.awa+ ini adala+ conto+
se.ua+ pernyataan 7< yang
menggunakan operator bb
iH (&u(u ? "0 ff &u(u @ 100)
>out ?? B&u(u daa%
e3e yang
berba(aya!BA
Pernyataan cout akan dijalankan jika
su+u kurang dari %- ATA su+u le.i+
.esar dari "--2 )ika sala+ satunya
.enar$ maka seluru+ ekspresi akan
meng+asilkan keluaran .enar dan
pernyataan cout akan dijalankan2
Setela+ cout dijalankan maka akan
meng+asilkan keluaran asu+u dalam
level yang .er.a+ayaa2 Ta.le
di.awa+ ini merupakan ta.le
ke.enaran operator 8R
Ta.le '2(2 :ogika 8R
<KG/<SI KIFAI
K<B<KA/AK
FO0IKA
Saa( SS
&aa(
Saa
(
0
Saa( SS
benar
Bena
r
1
Benar SS
&aa(
Bena
r
1
Benar SS
benar
bena
r
1
Semua ekspresi pada operator
8R akan menjadi sala+ jika semua
dari su.6kalimat sala+$ tetapi akan
.enar jika sala+ satu su.6kalimatnya
.enar2 Tidak peduli apaka+ sala+
satu su.6ekspresinya sala+ atau
.enar2 Program di.awa+ ini akan
melakukan tes untuk mengeta+ui
orang yang memenu+i syarat untuk
mendapatkan pinjaman2 Program ini
akan menentukan apaka+ pelanggan
mempunyai gaji setidaknya L='$---
2008 | Direktorat Pembinaan SMK
&5+
Bahasa Pemrograman "tatement Kendali
per ta+un atau tela+ .ekerja selama
le.i+ dari lima ta+un2 Per+atikan
program di.awa+ ini:
Program '2"(
=in>ude?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
%,*b-e in>o%eA
it year&A
>out ?? BApaka( ini %a&ukan ta(unan AndaD BA
>in @@ in>o%eA
>out ?? Bberapa banyak anda beker-a &etiap ta(unnya B
?? BGeker-aan anda &ekarangD BA
>in @@ year&A
i7 (in>o%e @' 1*000 ff year& @ *) // +ses the ,, logical operator
>out ?? BKPai5ka&i Anda!`nBA
e-+e
6
>out ?? BAnda akan %endapatkan ga-i paing tidak b1*,000 atau
ebi(`nBA
>out ?? B&etea( beker-a ebi( dari i%a ta(un!`nBA
8
get>(()A
.et*. 0A
8
Keluaran program diatas setela+ di.eri masukan adala+
Apaka( ini %a&ukan ta(unan AndaD 10000
berapa banyak anda beker-a &etiap ta(unnya Geker-aan anda &ekarangD *
Anda akan %endapatkan ga-i paing tidak b1*,000 atau ebi(
&etea( beker-a ebi( dari i%a ta(un!
+$2$)$ O(erator <
8perator M akan melakukan
operasi logika ,8T2 Di.utu+kan
se.ua+ operand atau se.eliknya
seperti .enar atau sala+2 Dengan
kata lain$ jika ungkapan itu .enar$
maka operator M akan mem.alik
menjadi sala+$ dan jika ekspresi
sala+$ maka akan di.alik menjadi
.enar2 Di.awa+ ini adala+ suatu
&5,
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
pernyataan 7< yang meggunakan
operator M:
iH (_(&u(u @ 100))
>out ?? Banda
dibaPa( &u(u
%ak&i%u%!`nBA
pada potongan program diatas$
ekspresi 3su+uU "--4 yang akan diuji
2
.enar atau sala+2 *aka operator M
akan diterapkan pada nilai2 )ika
ekspresi 3su+uU "--4 itu .enar$ maka
operator M akan mem.alik menjadi
sala+2 )ika +al terse.ut sala+$ maka
operator M akan kem.ali .enar2 Ta.el
di.awa+ merupakan ta.le ke.enaran
operator M
Ta.el '2#2 operator M
<KG/<SI 2ASIF <KG/<SI FO0IKA
_ &aa( bena
r
1
_ benar Saa
(
0
Program di.awa+ sama dengan
program se.elumnya$ yaitu akan
melakukan operasi dengan operator
M2 Pernyataan 7< terse.ut
menggunakan operator M untuk
menentukan apaka+ pengguna tidak
mem.uat rekening di .ank yang
setidaknya ada L ='2--- atau .elum
mempunyai pekerjaan yang le.i+ dari
lima ta+un2 Per+atikan program
di.awa+ ini:
Program '2"#
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
%,*b-e in>o%eA
it year&A
>out ?? BApaka( ini %a&ukan ta(unan AndaD BA
>in @@ in>o%eA
>out ?? Bberapa banyak anda beker-a &etiap ta(unnya B??
BGeker-aan andaD BA
>in @@ year&A
i7 (_(in>o%e @' 1*000 ff year& @ *)) // menggunakan
operator -
2008 | Direktorat Pembinaan SMK
&5-
Bahasa Pemrograman "tatement Kendali
6
ebi(`nBA
8
e-+e
>out ?? BAnda akan %endapatkan ga-i paing tidak
b1*,000 atau >out ?? B&etea( beker-a ebi( dari
i%a ta(un!`nBA
>out ?? BKPai5ka&i Anda!`nBA
.et*. 0A
8
Keluaran program diatas sama dengan program se.elumnya
+$2$)$ Hariabel Boolean %an O(erator <
<itur yang menarik dari varia.el
!oolean adala+ nilainya dapat diuji2
*isalnya moreData adala+ se.ua+
varia.el !oolean2 Kemudian
pengujiannya adala+:
iH (%oreData '' true)
>an be Pritten &i%py a&
iH (%oreData)
and t(e te&t
iH(%oreData ''
Ha&e)
>an be Pritten
&i%py a& iH(_
%oreData)
Program diatas .iasanya diselesaikan dengan menggunakan operator M2
+$4$ O(erator Kon%i'ional
8perator kondisional merupakan
ek&pre&i D ek&pre&i M ek&pre&iA
operator kuat dan unik2 8perator
terse.ut menyediakan se.ua+ disini di.erikan se.ua+ conto+
metode sedernana yang
mengekpresikan pernyataan
7<CE:SE2 8perator ini terdiri dari
tanda tanya 3G4 dan titik dua 3:42
ntuk le.i+ jelasnya mengenai
operator ini per+atikan ekpresi
di.awa+ in7:
pernyataan diatas sering dise.ut
dengan conditional e$pression dan
terdiri dari tiga su.6e&pressions ang
dipisa+kan dengan menggunakan
pernyataan yang menggunakan
operator kondisional
Y ? 0 D y ' 10 M Z
' "0A
tanda Tanya dan sym.ol titik dua 3 : 42
Se.ua+ ekspresi diatas T -$ y I "-$
dan Q I %- dapat diuraikan se.agai
.erikut:
&52
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
MN 5 ; OK"5 9 P K &5
;am.ar '2> conditional e&pression
Se.ua+ Ekspresi kondisional yang
diatas melakukan operasi yang sama
seperti +alnya pernyataan 7<CE:SE2
Per+atikan pernyataan di.awa+ ini:
iH (Y ?
0)
y ' 10A
e&
e
Z ' "0A
!agian dari ekspresi kondisional
se.elum tanda tanya adala+ ekspresi
yang akan diuji2 9al ini merupakan
kalimat dalam kurung seperti pada
se.ua+ pernyataan 7<2 )ika ekspresi
.enar$ .agian dari pernyataan antara
tanda tanya 3G4 dan titik dua 3 : 4
akan dijalankan2 )ika tidak$ .agian
setela+ : yang dijalankan2 ;am.ar
di.awa+ ini menggam.arkan aturan
yang diakukan ole+ tiga su.6ekspresi
adala+ se.agai .erikut:
<k&pre&i
perta%a
yang akan
<k&pre&i kedua yang akan
diek&eku&i -ika ek&pre&i
perta%a benar
<k&pre&i ketiga
yang akan
diek&eku&i -ika
ek&pre&i perta%a
MN 5 ; OK"5 9 P K &5
;am.ar '2(2 aturan yang diakukan ole+ tiga su.6ekspresi
Anda dapat meletakkan tanda kurung di sekitar su.6ekspresi$ seperti conto+
.erikut ini:
(Y ? 0) D (y ' 10) M (Z ' "0)A
Dalam menggunakan nilai
ekspresi dalam .a+asa ABB yang
perlu diingat$ .a+wa pada .a+asa
ABB semua ekspresi memiliki nilai$
dan +al ini termasuk ekspresi
kondisional2 )ika su.6ekspresi
pertama .enar$ maka nilai dari
ekspresi kondisional adala+ nilai
kedua su.6ekspresi terse.ut2
Se.aliknya )ika +al terse.ut .ukan
.erarti nilai su.6ekspresi yang ketiga2
!erikut di.awa+ ini adala+ conto+
se.ua+ pernyataan yang
menggunakan nilai ekspresi
kondisional
a ' Y @ 100 D
0 M 1
,ilai akan ditetapkan .aik - atau "$ tergantung apaka+ & le.i+ .esar dari "--2
Pernyataan terse.ut dapat dinyatakan dalam pernyataan 7<CE:SE se.agai
.erikut:
2008 | Direktorat Pembinaan SMK
&54
Bahasa Pemrograman "tatement Kendali
iH (Y @ 100)
a ' 0A
e&e
a ' 1A
Program di.awa+ dapat
digunakan untuk mem.antu seorang
konsultan untuk meng+itung .iaya2
Konsultasn terse.ut meminta
.ayaran L '-$-- per jam$ tetapi
minimum selama lima jam$ jika
kurang dari ' jam maka tidak akan
di.ayar2 8perator kondisional
digunakan dalam pernyataan
terse.ut untuk memastikan .a+wa
jumla+nya tidak kurang atau di.awa+
lima2 ntuk le.i+ jelasnya per+atikan
program di.awa+ ini
Program '2"@
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
it %ain()
6
),+t %,*b-e GA\W/A4< ' *0!0A
%,*b-e (our&, >(arge&A
>out ?? BBerapa -a% anda beker-aD BA
>in @@ (our&A
(our& ' (our& ? * D * M (our&A // Conditional operator
>(arge& ' GA\W/A4< E (our&A
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(")A
>out ?? BBe&ar ga-i anda adaa( bB ?? >(arge& ?? endA
get>(()A
.et*. 0A
8
Program 8utput wit+ E&ample 7nput S+own in !old
Berapa -a% anda beker-aD *
Be&ar ga-i anda adaa( b"*0!00
&"5
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
+$"5$ Statement SL!T.H
Statement S/7TA9 juga
.er5ungsi sama dengan 7<2 Perinta+
S/7TA9 sama dengan perinta+
AASE 8< dalam PASAA:2 Dimana
sintaksnya menggunakan:
&Pit>( (3ariabe)
6
>a&e 3aue1 M &tate%ent1A
breakA
>a&e 3aue" M &tate%ent"A
breakA
!!
deHaut M &tate%entA /E optiona E/
breakA
8
Per+atikan conto+ program menggunakan statement switc+ adala+ se.agai
.erikut:
Program '2%-
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% %ain()
6
it biA
>out ?? B)a&ukkan biangan M BA
>in @@ bi
+Git)h
(bi)
6
)"+e 1 M >out ?? BAnda %e%a&ukkan bi! &atuBA
b.e"'A
)"+e " M >out ?? BAnda %e%a&ukkan bi! duaBA
b.e"'A
)"+e 1 M >out ?? BAnda %e%a&ukkan bi! tigaBA
b.e"'A
%e7"*-tM >out ?? BAnda %e%a&ukkan bi &eain 1, ", dan 1BA
b.e"'A
8
8
2008 | Direktorat Pembinaan SMK
&""
Bahasa Pemrograman "tatement Kendali
Selanjutnya co.a kalian +apus
semua .reak program di atas dan
kalian jalankan2 Apa yang terjadiG
Keane+an akan muncul2 *engapaG
+$""$ Pern3ataan SL!T.H Q .ASE
Aara lain untuk menangani
pengam.ilan keputusan dalam
se.ua+ program adala+ dengan
menggunakan Statement switc+F2
case$ yang mampu menangani
sejumla+ kondisi dari satu varia.el2
switc+ 2222 case serupa dengan 75 222
T+en 22222 Else75$ tetapi le.i+ e5isien
apa.ila perca.angan .ergantung
kepada satu kondisi saja2 Dengan
menggunakan switc+ 2222 case
se.agai pengganti dari 75 222 T+en 222
Else 75$ akan mem.uat program
menjadi le.i+ seder+ana2 <ormat
penggunaan switc+ 2222 case:
&Pit>( na%aW3ariabe
6
>a&e niaiW1M6
Gerinta( yang akan diek&eku&i -ika %e%enu(i niaiW1A
breakA8
>a&e niaiW"M6
Gerinta( yang akan diek&eku&i -ika %e%enu(i niaiW"A
breakA8
deHautM6
Gerinta( yang akan diek&eku&i -ika tidak %e%enu(i &e%uaA
eYit(0)A8
8
Struktur Select Aase dimulai
dengan kata Select Aase dan diak+iri
dengan kata End Select2
nama]varia.el dapat diganti dengan
varia.el$ properti$ atau ekpresi lain
yang akan dijadikan se.agai kondisi2
Sedangkan nilai]"$ nilai % dapat
diganti dengan angka$ string atau
nilai lain yang .erkaitandengan
nama]varia.el2 )ika sala+ satu nilai
sesuai dengan varia.el$ maka
pernytaan di .awa+ kata case akan
dijalankan dan Disual !asic akan
melanjutkan mengeksekusi program
setela+ End2 Anda dapat
menggunakan kata case se.anyak
mungkin dalam struktur select222
case$ dan anda juga dapat
menyertakan le.i+ dari satu nilai
pada kata case2
)ika anda menyertakan .anyak
nilai setela+ case$ pisa+kan dengan
tanda koma2
See>t Ca&e intAge
Ca&e * M b4ite!Caption '
BKindergartenB Ca&e , M
b4ite!Caption ' B1&t 0radeB
&"&
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
Ca&e + M b4ite!Caption '
B"nd 0radeB Ca&e 8 M
b4ite!Caption ' B1rd 0radeB
Ca&e 7 M b4ite!Caption '
B#t( 0radeB Ca&e 10 M
b4ite!Caption ' B*t( 0radeB
Ca&e 11 M b4ite!Caption '
B,t( 0radeB Ca&e <&eM
b4ite!Caption ' BAd3an>edB
<nd
See>t
!entuk dari S/7TA9 6 AASE
merupakan pernyataan yang
dirancangan k+usus untuk
menangani pengam.ilan keputusan
yang meli.atkan sejumla+ atau
.anyak alternati5 penyelesaian2
Pernyataan S/7TA9 6 AASE ini
memiliki kegunaan sama seperti 7< E
E:SE .ertingkat$ tetapi
penggunaannya untuk memeriksa
data yang .ertipe karakter atau
integer2 !entuk penulisan perinta+ ini
se.agai .erikut :
&Pit>( (ek&pre&i integer atau karakter )
6
>a&e
kon&tanta;1 M
c perinta(A
c perinta(A
breakA
>a&e
kon&tanta;" M
c perinta(A
c perinta(A
breakA
cc
cc
deHaut M
c perinta(A
c perinta(A
8
Setiap ca.ang akan dijalankan
jika syarat nilai konstanta terse.ut
dipenu+i dan de5ault akan dijalankan
jika semua ca.ang diatasnya tidak
terpenu+i2 Pernyataan brea)
menunjukan .a+wa perinta+ siap
keluar dari switch2 )ika pernyataan ini
tidak ada$ maka program akan
diteruskan keca.ang E ca.ang yang
lainnya2 Per+atikan conto+ program
di.awa+ ini menggunakan Switc+6
Aase$ untuk menentukan alat yang
dike+endaki$ seperti alat ola+raga$
alat elektronik atau alat masak2
Program '2%"
2008 | Direktorat Pembinaan SMK
&")
Bahasa Pemrograman "tatement Kendali
in>ude?&tdio!(@
=in>ude?>onio!(@
=in>ude?io&trea%!(@
*+i! "#e+(")e &tdA
%ain()
6
)h". kodeA
>out??B)a&ukkan Kode Barang NA!!CO M BA
>in@@kodeA
+Git)h(kode)
6
)"+e aAa M
>out??BAat Oa( /agaBA
b.e"'A
)"+e aBa M
>out??BAat <ektronikBA
b.e"'A
)"+e aCa M
>out??BAat )a&akBA
b.e"'A
%e7"*-tM
>out??BAnda Saa( )e%a&ukan kodeBA
b.e"'A
8
get>(()A
8
Keluaran program diatas adala+:
)a&ukkan Kode Barang
NA!!CO M B Aat <ektronik
Program diatas juga .isa ditulis
dengan program di.awa+ ini$ dimana
kele.i+an program di.awa+ .isa
mem.aca .aik kode +uru5 kecil
maupun +uru5 .esar2 Pada program
diatas +anya .isa mem.aca kode
+uru5 .esar saja2 Kedua6duanya
sama6sama menggunakan switc+6
case2 )ika dalam memasukan
kodenya salam maka akan muncul
pesan HAnda Sala+ *emasukan
kode12 ntuk le.i+ jelasnya
per+atikan program di.awa+ ini:
Program '2%%
&"*
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
=in>ude?&tdio!(@
=in>ude?>onio!(@
=in>ude?io&trea%!(@
*+i! "#e+(")e &tdA
%ain()
6
)h". kodeA
>out??B)a&ukkan Kode Barang NA!!CO M BA
>in@@kodeA
+Git)h(kode)
6
)"+e aAa M
)"+e aaa M
>out??BAat Oa( /agaBA
b.e"
'A )"+e
aBa M
)"+e aba
M
Cout??BAat <ektronikBA
b.e"
'A )"+e
aCa M
)"+e a>a
M
>out??BAat )a&akBA
b.e"'A
%e7"*-tM
>out??BAnda Saa( )e%a&ukan kodeBA
b.e"'A
8
get>(()A
.et*. 0A
8
Struktur kondisi switc+2222case2222
de5ault digunakan untuk penyeleksian
kondisi dengan cukup .anyak
kemungkinan yang terjadi2 Struktur ini
akan melaksanakan sala+ satu dari
.e.erapa pernyataan Ocase0
tergantung nilai kondisi yang ada di
dalam switc+2 Selanjutnya proses
diteruskan +ingga ditemukan
pernyataan O.reak02 )ika tidak ada
nilai pada case yang sesuai dengan
nilai kondisi$ maka proses akan
diteruskan kepada pernyataan yang
ada di .awa+ Ode5ault02 !entuk umum
dari struktur kondisi ini adala+:
2008 | Direktorat Pembinaan SMK
&"+
Bahasa Pemrograman "tatement Kendali
&Pit>((kondi&i)
6
>a&e 1 M pernyataan;1A
breakA
>a&e " M pernyataan;"A
breakA
!!!!!
!!!!!
>a&e n M pernyataan;nA
breakA
deHaut M pernyataan;%
8
Pada program di.awa+
merupakan program dengan
menggunakan switc+$ dimana
program terse.ut digunakan untuk
menentukan jumla+ +ari2 Per+atikan
program di.awa+ ini:
Program '2%=
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain() 6
it AngkaBuan,4a(un, Cu%a(2ariA
>out??BAngka Buan M BA
>in @@ AngkaBuanA
>out ??B4a(un M BA
>in @@ 4a(unA
+Git)h (AngkaBuan) 6
)"+e
1M
)"+e
1M
)"+e
*M
)"+e
+M
)"+e
8M
)"+e
10M
)"+e 1"M Cu%a(2ari '
11Ab.e"'A
)"+e
#M
)"+e
,M
)"+e
7M
&",
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
)"+e 11 M Cu%a(2ari ' 10Ab.e"'A
)"+e " M i7 (4a(un R # '' 0) Cu%a(2ari ' "7A
e-+e Cu%a(2ari ' "8Ab.e"'A
8
>out??BCu%a( (ari B?? Cu%a(2ariA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+:
Angka Buan M #
4a(un M 1770
Cu%a( (ari 10
Program di.awa+ merupakan
program yang digunakan untuk
menentukan .ilangan ;enap atau
;anjil dengan case:
Program '2%?
#in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
it Op1, Op",
Gii(A
8,"t
2a&iA
>out ??
BOperand 1M BA
>in @@
Op1A
>out ??
BOperand "M BA
>in @@
Op"A
>out ?? B1! Operator
:`nBA >out ?? B"!
Operator ;`nBA >out
?? B1! Operator E`nBA
>out ?? B#! Operator
/`nBA >out ?? BGii(
Operator M BA >in @@
Gii(A
+Git)h
(Gii() 6
)"+e 1 M 62a&i ' Op1 :
Op"A b.e"'A8 )"+e " M
62a&i ' Op1 ; Op"A
b.e"'A8 )"+e 1 M 62a&i '
Op1 E Op"A b.e"'A8 )"+e #
M 6i7 (Op" _' 0)
>out
??Op1/Op"A
2008 | Direktorat Pembinaan SMK
&"-
Bahasa Pemrograman "tatement Kendali
b.e"
'A8
8
e-+e
>out ??BerrorBA
printH(B2a&i dari per(itungan ter&ebut adaa( RHB,2a&i)A
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
Operand 1M 1
Operand "M 1
1! Operator :
"! Operator ;
1! Operator E
#! Operator /
Gii( Operator M 1
2a&i dari per(itungan ter&ebut adaa( 1!000000
Dari .e.erapa conto+ program
diatas$ maka dapat diketa+ui .entuk
.a+asa umum mengenai pernyataan
75EElse adala+ se.agai .erikut:
IH Kondi&i 4(en
Gerinta( yang akan diek&eku&i -ika kondi&i berniai true
<FS
<
Gerinta( yang akan diek&eku&i -ika kondi&i berniai Ha&e
<nd IH
+$"&$ !$$$THEN7 !$$$THEN$$$EESE %an Ne'te% !
Struktur 7<$ kita dapat mem.uat
algoritma6algoritma yang melakukan
perinta+ .erdasarkan kondisi tertentu2
Perinta+ akan dilakukan jika +anya
jika ekspresi .oolean .ernilai true
3jika ekspresi .oolean .ernilai 5alse
maka perinta+ tidak akan dikerjakan42
I. ?ek&pre&i booean@ t(en
Gerinta(W1
<&
e Gerinta(W"
<ndiH
I. ?ek&pre&i booean 1@ t(en
Gerinta( 1
&"2
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
<&e iH ?ek&pre&i booean "@ t(en
Gerinta(
"
<&e iH ?ek&pre&i booean n@ t(en
Gerinta(
n
<&e Gerinta( n:1
<ndiH
Program statement kondisi 7<6
E:SE untuk mencari .ilangan ;enap
dan ;anjil2 Per+atikan conto+
program di.awa+ ini:
Program '2%'
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
it BiA
>out ?? B%a&ukan biangan M BA
>in @@ BiA
i7 (Bi R "
'' 0)
6
>out ?? Bbiangan genapBA
8
e-+e
6
>out ?? Bbiangan gan-iBA
8
get>(()A
.et*. 0A
8
Keluaran program diatas adala+
%a&ukan
biangan M *
biangan gan-i
Program di.awa+ ini digunakan untuk meng+itung atau mencari .ilangan
ter.esar2
Program '2%>
=in>ude ?>onio!(@
=in>ude ?io&trea%@
2008 | Direktorat Pembinaan SMK
&"4
Bahasa Pemrograman "tatement Kendali
*+i! "#e+(")e &tdA
%ain()
6
it A, B,
C,%ak&A >out
?? BA M BA >in
@@ AA
>out ?? BB M BA
>in @@ BA
>out ?? BC M BA
>in @@ CA
i7 ((A@B) SS (A@C))
%ak& ' AA
e-+e i7 ((B@A) SS (B@C))
%ak& ' BA
e-+e
get>((
)A
%ak& ' CA
>out ??Bbiangan terbe&ar adaa( B ?? %ak&A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
A M #0
B M *,
C M *7
biangan terbe&ar adaa( *7
+$")$ A(lika'i Pern3ataan ! (a%a Menu
*enu adala+ layar yang
menampilkan .e.erapa pili+an
se+ingga pengguna dapat memili+2
Se.agai conto+ pada se.ua+
program yang dapat mem.erikan
menu pili+an .erikut ini:
"2 *enam.a+kan nama ke dalam
da5tar2
%2 9apus nama dari da5tar2
=2 *engu.a+ nama dalam da5tar2
?2 *encetak da5tar2
'2 Keluar dari program ini2
Pengguna dapat memili+ sala+
satu operasi dengan memasukkan
nomor2 *isalnya memasukan nomer
?$ se+ingga akan menye.a.kan
da5tar dicetak$ dan memasukkan '
akan menye.a.kan keluar program2
struktur 7<CE:SE 7< dapat digunakan
untuk mem.uat menu seperti diatas2
Setela+ pengguna memasukkan
nomor$ maka nomor akan digunakan
untuk mem.andingkan pili+an yang
tersedia dan melaksanakan se.ua+
pernyataan yang melakukan operasi2
program di.awa+ digunakan untuk
meng+itung .iaya keanggotaan
dise.ua+ klu. kese+atan2 Klu.
memiliki tiga paket keanggotaan
pili+an: keanggotaan standar
&&5
Direktorat Pembinaan SMK | 2008
"tatement Kendali Bahasa Pemrorgraman
dewasa$ anggota anak$ dan anggota
orang senior2
Program ini menyajikan menu
yang memungkinkan pengguna untuk
memili+ paket yang diinginkan$
kemudian meng+itung .iaya
keanggotaannya2 ntuk le.i+
jelasnya per+atikan program di.awa+
ini:
Program '2%(
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
it %ain()
6
it >(oi>e, %ont(&A
%,*b-e >(arge&A
// .isplay menu pilihan
>out ?? B`t`t)enu Anggota Kub Ke&e(atan`n`nBA
>out ?? B1! Keanggotaa Standard DePa&a`nBA
>out ?? B"! Keanggotaan Anak`nBA
>out ?? B1! Keanggotaan )a&yarakat Senior`nBA
>out ?? B#! Keuar Grogra%`n`nBA
>out ?? B)a&ukan Gii(an AndaM BA
>in @@ >(oi>eA
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(")A
i7 (>(oi>e '' 1)
6
>out ?? B$ntuk berapa BuanD BA
>in @@ %ont(&A
>(arge& ' %ont(& E #0!00A
>out ?? B4ota pe%bayaranya adaa(M bB ?? >(arge& ?? endA
8
e-+e i7 (>(oi>e '' ")
6
>out ?? B$ntuk berapa BuanD BA
>in @@ %ont(&A
>(arge& ' %ont(& E "0!00A
>out ?? B4ota pe%bayaranya adaa(M bB ?? >(arge& ?? endA
8
e-+e i7 (>(oi>e
'' 1)
2008 | Direktorat Pembinaan SMK
&&"
Bahasa Pemrograman "tatement Kendali
6
>out ?? B$ntuk berapa BuanD BA
>in @@ %ont(&A
>(arge& ' %ont(& E 10!00A
>out ?? B4ota pe%bayaranya adaa(M bB ?? >(arge& ?? endA
8
e-+e i7 (>(oi>e _' #)
6
>out ?? BGii(an yang 3aid adaa( antara 1 &a%pai #`nBA
>out ?? BGrogra% akan %e%ii( agi dari &aa( &atu %enu diata&`nBA
8
get>(()A
.et*. 0A
8
Keluaran program diatas seperti di.awa+ ini:
)enu Anggota Kub Ke&e(atan
1! Keanggotaa Standard DePa&a
"! Keanggotaan Anak
1! Keanggotaan )a&yarakat Senior
#! Keuar Grogra%
)a&ukan Gii(an AndaM 1
$ntuk berapa BuanD 1
4ota pe%bayaranya adaa(M b70!00
Dalam program terse.ut
memungkinkan pengguna yang tidak
valid dapat mem.uat pili+an2 )ika
angka lain seperti "$ %$ =$ atau ?
dimasukkan$ maka akan ada pesan
kesala+an yang dicetak2 Kesala+an
ini dikenal se.agai masukan validasi
3input validation*+
+$"*$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan statement
%2 Se.utkan .e.erapa operator relasionaldalam .a+asa cBB
=2 )elaskan cara kerja pernyataan i5 pada .a+asa cBB
?2 Apa per.edaan antara pernyataan i5 dangan i56else
'2 Apa yang dimaksud dengan i56else majemuk
>2 Apa yang dimaksud dengan nested i5
(2 Se.utkan .e.erapa operator logika
#2 Tuliskan perinta+ yang digunakan ole+ pernyataan switc+
&&&
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
BAB ,
PROSEDUR DAN SUBROUT!N
>2"2 Prosedur
>2%2 Parameter Prosedur
>2=2 Pemanggilan Prosedur
>2?2 Su. Rutin
>2'2 Su. Rutin Dalam !a+asa Pemrograman
>2>2 <unction yang *engem.alikan ,ilai
>2(2 <unction yang Tidak *engem.alikan ,ilai
>2#2 <unction Aall <unction
>2@2 Aall .y Dalue dan Aall .y Re5erences
>2"-2 Parameter dengan ,ilai De5ault
>2""2 8verloading
>2"%2 Soal :ati+an
,$"$ Pro'e%ur
Prosedur adala+ sederetan
instruksi algoritmik yang di.eri nama$
dan akan meng+asilkan e5ek neto
yang terde5inisi2 Prosedur
menyatakan suatu aksi dalam konsep
algoritma yang di.icarakan pada
cerita H*engupas kentang12 Dimana
conto+ ini dari aksi yang dilakukan
ple+ 7.u Tati yang mengupas kentang
untuk mempersiapkan makan malam
se.agai .erikut2 Pernyataan ini
mencakup +al yang luas ruang
lingkupnya$ misalnya :
Apaka+ kentangnya +arus di.eli
dulu atau suda+ ada di dapur G
Apaka+ yang dimaksud dengan
mengupas kentang untuk makan
malam .erarti sampai dengan
kentang ter+idang G
Ketika kentangnya ter+idang$ jadi
sup$ digoreng atau dire.us saja G
*aka kita +arus mem.atasi dengan
jelas keadaan awal yang menjadi titik
tolak mengupas kentang dan
keadaan ak+ir yang ingin dicapai
supaya dapat Hmerencanakan1 e5ek
neto yang diinginkan2 Se+ingga +al
terse.ut dapat ditentukan:
&nitial state 372S2 keadaan awal4$
T-$ adala+ kentang suda+ ada di
kantong kentang$ yang ditaru+ di
rak di dapur$ di mana i.u Tati akan
mengupasnya
Final state 3<2S2 keadaan ak+ir4$
T"$ kentang dalan keadaan
terkupas di panci$ siap untuk
dimasak dan kantong kentangnya
+arus dikem.alikan ke rak lagi2
2008 | Direktorat Pembinaan SMK
%%=
Bahasa Pemrograman Prosedur dan "ubroutin
Pengandaian yang lain adala+
.a+wa persediaan kentang di i.u
selalu cukup untuk makan malam2
Penam.a+an kentang ke dapur di
luar tinjauan masala+ ini2 7ni adala+
conto+ .agaimana kita menentukan
.atasan dari persoalan yang akan
diprogram2 Suatu kejadian dapat
dipandang se.agai urut6urutan dari
.e.erapa kejadian$ .erarti dapat
diuraikan dalan .e.erapa 3su.4 aksi
yang terjadi secara sekuensial2
Dengan sudut pandang ini makan
e5ek kumulati5nya sama dengan e5ek
neto dari seluru+ kejadian2 Dikatakan
.a+wa kejadian terse.ut dianggap
se.agai se^uential process atau
disingkat proses2
*ende5inisikan 3mem.uat
spesi5ikasi4 prosedur .erarti
menentukan nama prosedur serta
parameternya 3jika ada4$ dan
mende5inisikan keadaan awal 37nitial
State$ 72S24 dan keadaan ak+ir 3<inal
State$ <2S24 dari prosedur terse.ut2
Prosedur dide5inisikan 3dituliskan
spesi5ikasinya4 dalam kamus2 Aara
penulisan spesi5ikasi : prosedur di.eri
nama$ dan parameter 5ormal 3jika
ada4 yang juga di.eri nama dan
dijelaskan typenya2
Secara seder+ana$ dapat
diartikan .a+wa se.ua+ prosedur
yang terde5inisi Hdisimpan1 di tempat
lain$ dan ketika Hdipanggil1 dengan
menye.utkan namanya Hseakan6
akan1 teks yang tersimpan di tempat
lain itu menggantikan teks
pemanggilan2 Pada saat itu terjadi
asosiasi parameter 3jika ada42
Dengan konsep ini$ maka 72S dan <2S
dari prosedurla+ yang menjamin
.a+wa eksekusi program akan
meng+asilkan e5ek neto yang
di+arapkan2 )adi$ setiap prosedur
+arus :
Dide5inisikan 3di.uat
spesi5ikasinya4 dan dituliskan kode
programnya
Dipanggil$ pada saat eksekusi ole+
prosedur lain atau ole+ program
utama
,$&$ Parameter Pro'e%ur
Prosedur tanpa parameter
meman5aatkan nilai dari nama6nama
yang terde5inisi pada kamus glo.al2
Pemakaiannya .iasanya +arus H+ati6
+ati1$ apalagi jika teks program suda+
sangat .esar dan implementasinya
menjadi .anyak 5ile2 Prosedur
.erparameter dirancang$ agar
sepotong kode yang sama ketika
eksekusi dilakukan$ dapat dipakai
untuk nama parameter yang .e.eda6
.eda2 ,ama parameter yang
dituliskan pada de5inisiCspesi5ikasi
prosedur dise.ut se.agai parameter
5ormal2 Sedangkan parameter yang
dituliskan pada pemanggilan
prosedur dise.ut se.agai parameter
aktual2
Parameter 5ormal adala+ nama6
nama varia.el 3list nama4 yang
dipakai dalam mende5inisikan
prosedur$ dan mem.uat prosedur
terse.ut dapat dieksekusi dengan
nama6nama yang .er.eda ketika
dipanggil2 Parameter 5ormal adala+
list nama yang akan dipakai pada
prosedur$ yang nantinya akan
diasosiasikan ter+adap nama
varia.el lain pada saat pemanggilan2
Sesuai dengan ketentuan nilainya$
ada tiga type parameter 5ormal:
%%?
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
parameter 7nput$ yaitu parameter
yang diperlukan prosedur se.agai
masukan untuk melakukan aksi
yang e5ekti52
parameter 8utput$ yaitu parameter
yang nilainya akan di+asilkan ole+
prosedur2 9asil nilai akan
disimpan pada nama parameter
8utput ini2
parameter 7nputC8utput$ yaitu
parameter yang nilainya diperlukan
prosedur se.agai masukan untuk
melakukan aksi$ dan pada ak+ir
prosedur akan di+asilkan nilai yang
.aru2
,$)$ Pemanggilan Pro'e%ur
*emakai$ atau amemanggila
prosedur adala+ menuliskan nama
prosedur yang perna+ dide5inisikan$
dan mem.erikan +arga6+arga yang
di.utu+kan ole+ prosedur itu untuk
dapat melaksanakan suatu aksi
terde5inisi2 Se.ua+ prosedur juga
.ole+ amemakaia atau memanggil
prosedur2 Pada saat pemanggilan
terjadi Hpassing parameter12
Parameter aktual adala+ nama6
nama in5ormasi yang dipakai ketika
prosedur itu dipakai 3adipanggila42
Parameter aktual dapat .erupa nama
atau +arga$ tetapi +arus .erupa nama
jika parameter terse.ut adala+
parameter 8utput 3karena +asilnya
akan disimpan dalam nama terse.ut42
Sesuai dengan jenis parameter
5ormal$ parameter aktual pada saat
pemanggilan :
parameter input +arus terde5inisi
nilainya 3karena di.utu+kan ole+
prosedur untuk meng+asilkan
nilai42 Karena yang di.utu+kan
untuk eksekusi +anya nilai$ maka
parameter input dapat digantikan
dengan suatu nilai tanpa
menggunakan nama2
parameter output tidak perlu
terde5inisi nilainya$ tetapi justru
setela+ pemanggilan prosedur
akan diman5aatkan ole+ deretan
instruksi .erikutnya$ karena
nilainya akan di+asilkan ole+
prosedur2 Karena parameter
output menampung +asil$ maka
+arus .erupa nama$ dan tidak
.ole+ di.erikan nilai saja2
parameter inputCoutput +arus
terde5inisi nilainya dan nilai .aru
yang diperole+ karena eksekusi
prosedur akan diman5aatkan ole+
deretan instruksi .erikutnya2
Seperti +alnya parameter output$
maka paramteter aktual +arus
.erupa nama2
Pada saat eksekusi$ terjadi
asosiasi nama parameter 5ormal
dengan nama parameter aktual2
Pada notasi algoritmik$ asosiasi
dilakukan dengan cara H.y position12
rutan nama pada parameter aktual
akan diasosiasikan sesuai dengan
urutan parameter 5ormal2 Karena itu$
type +arus kompati.el2 !e.erapa
.a+asa pemrograman$ dapat
dilakukan asosiasi dengan nama dan
memper.ole+kan adanya nilai
default2 !e.erapa .a+asa
pemrograman 3Ada$ A4 juga
memper.ole+kan nama prosedur
yang sama tetapi parameternya
.er.eda 3overloading4+
Prosedur dapat mempunyai
kamus lokal$ yaitu pende5inisan nama
yang dipakai dan +anya .erlaku
dalam ruang lingkup prosedur
2008 | Direktorat Pembinaan SMK
%%'
Bahasa Pemrograman Prosedur dan "ubroutin
terse.ut2 )ika nama yang dipakai di
dalam prosedur tidak terde5inisi
dalam list parameter 5ormal atau
dalam kamus lokal$ maka nama
terse.ut +arus suda+ terde5inisi pada
prosedur yang memakainya2
Penulisan kamus lokal sama dengan
kamus glo.al$ yang .er.eda adala+
lingkup .erlakunya nama yang
dide5inisikan:
pada kamus aglo.ala$ nama
.erlaku untuk program dan semua
prosedurC5ungsi yang dide5inisikan2
pada kamus lokal$ nama .erlaku
untuk prosedurC5ungsi yang
.ersangkutan dan prosedur C
5ungsi yang dide5inisikan di
dalamnya2
nilai yang disimpan dalam nama
yang dide5inisikan pada kamus
lokal$ +anya akan terde5inisi
selama eksekusi prosedur$ dan
tidak dikenal lagi ole+
pemanggilnya2
Program yang moduler adala+
program yang di.agi6.agi menjadi
modul6modul yang terde5inisi dengan
.aik dalam .entuk prosedur6
prosedur2 Setiap prosedur +arus jelas
de5inisi dan ruang lingkupnya$ supaya
dapat dipanggil secara independent2
Pem.agian program .esar dalam
prosedur6prosedur akan
mempermuda+ pem.agian kerja di
antara .e.erapa pemrogram2
Penulisan prosedur juga akan
memuda+kan program untuk di.aca
ole+ amanusiaa karena kita tidak perlu
terpaku pada detil kode prosedur
untuk mengerti e5ek neto yang
di+asilkannya2
!a+kan dalam .e.erapa +al$
pemrogram tidak perlu ta+u sama
sekali aisia atau kode dari prosedur
dengan mengeta+ui spesi5ikasinya$
.e.erapa .a+asa pemrograman
.a+kan menyediakan prosedur
terde5inisi yang sering dipakai dalam
memrogram se+ingga pemrogram
tidak perlu lagi menuliskan kodenya2
Prosedur .erlaku untuk ruang lingkup
3universe4 tertentu$ terutama untuk
prosedur yang tidak mempunyai
parameter2 Dalam dua .a. .erikut$
yaitu *esin ;am.ar dan *esin
Karakter$ akan di.erikan gam.aran
le.i+ jelas dan lengkap tentang
pende5inisian dan pemakaian
prosedur karena keduanya adala+
mesin a.strak yang tertentu2
.ontoh "#Pro'e%ur9 HOETAGE
Tuliskanla+ program yang mem.aca
ta+anan 38+m4 dan arus 3Ampere4$
kemudian meng+itung tegangan yang
di+asilkan dan menuliskan +asilnya2
Per+itungan tegangan +arus
dituliskan menjadi suatu prosedur
.ernama PR8SES$ supaya struktur
program jelas: 7nput 6 Proses E
8utput2
Input M / M integer, ta(anan (O(%) dan A M integer,
aru& (A%pere) Gro&e& M %eng(itung L' / E A
Output M L M integer,
tegangan (Lot)
Pelajarila+ dua .ua+ solusi yang
di.erikan .erikut ini$ dan .erikan
komentar anda2
Solusi " : Prosedur tanpa parameter
%%>
Direktorat Pembinaan SMK |
2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
Program D8:TA;E"
6Grogra% yang %e%ba>a ta(anan dan aru&,
%eng(itung Lotage dan %en>etak (a&i per(itungan8
Ka%u& M
/ M integer 6 ta(anan
daa% o(%8 A M integer
6 aru& daa% o(%8
L M integer 6 tegangan daa% o(%8
procedure PR8SES"
6 Gro&edur untuk B%e%pro&e&B ta(anan dan aru& %en-adi tegangan 8
Agorit%
a M input
(/,g)
G/OS<S1
output
(L)
Procedure PR8SES"
6 I!S M diberikan (arga / dan A yang tea( terde5ni&i8
6 .S M %e%pro&e& / dan A &e(ingga di(a&ikan L yaitu
tegangan dengan ru%u& M L ' / E A8
Ka%u& oka M
Agorit%
a M L h /
E A
Solusi % : Prosedur dengan parameter
Program D8:TA;E%
6Grogra% yang %e%ba>a ta(anan dan aru&,
%eng(itung Lotage dan %en>etak (a&i per(itungan8
Ka%u& M
/ M integer 6 ta(anan daa% o(%8
A M integer 6 aru& daa% o(%8
L M integer 6 tegangan daa% o(%8
Procedure PR8SES%
(Input M /,A M integerA Output LMinteger)
6 Gro&edur untuk B%e%pro&e&B ta(anan / dan
aru& A %en-adi tegangan L8
Agorit%a M
input (/,g)
2008 | Direktorat Pembinaan SMK
%%(
Bahasa Pemrograman Prosedur dan "ubroutin
G/OS<S" (/,A,L)
output (L)
,$*$ Sub Routin
Suatu program komputer
.iasanya merupakan suatu sistem
.esar yang terdiri dari su. sistem 6
su. sistem yang mempunyai tugas
sendiri6sendiri$ saling .ekerja sama
dan .erinteraksi untuk
menyelesaikan suatu permasala+an2
Dengan adanya pem.agian tugas
ole+ su. sistem E su. sistem ini
maka suatu permasala+an dapat
diselesaikan dengan le.i+ cepat dan
kesala+an6kesala+an yang mungkin
terjadi selama proses penyelesaian
masala+ dapat dideteksi dan
diketa+ui sedini mungkin$ termasuk di
su. sistem mana kesala+annya
terjadi2
Program komputer 3terutama
yang komplek4 juga se.aiknya
Hdipeca+6peca+1 menjadi program6
program kecil2 Program6program kecil
terse.ut dise.ut dengan su. rutin2
Su. rutin di.agi menjadi dua macam$
yaitu su. rutin yang mengem.alikan
nilai dan su. rutin yang tidak
mengem.alikan nilai2 Dalam Pascal
kedua su. rutin yang mengem.alikan
nilai dise.ut dengan 5unction$
sedangkan yang tidak
mengem.alikan nilai dise.ut dengan
procedure2 Tetapi untuk ABB dan
)ava$ kedua su. rutin terse.ut
dijadikan satu tetapi dapat diatur
untuk dapat mengem.alikan nilai
maupun tidak mengem.alikan nilai2
ntuk ABB$ su. rutin terse.ut
ada dalam suatu 5unction$ sedangkan
pada )ava$ su. rutin .er.entuk suatu
met+od yang dise.ut dengan 5unction
met+od2
int %ain() 6
cc!
Hung&iW1
()A
cc!
Hung&iW"()A
cc!
return
0A
8
int Hung&iW1() 6
cc!
return
0A
8
int Hung&iW"() 6
cc!
return 0A
8
;am.ar >2"2Su.Rutin
%%#
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
!aik ABB maupun )ava terdapat
dua macam 5ungsi$ yaitu user6de5ined
5unction dan .uilt6in 5unction2 ser6
de5ined 5unction merupakan 5ungsi
yang dide5inisikan sendiri atau di.uat
sendiri ole+ pemrogram2 Sedangkan
.uilt6in 5unction adala+ 5ungsi yang
suda+ ada atau suda+ disediakan
ole+ kompiler dan siap digunakan
ole+ pemrogram2
,$+$ Sub Rutin %alam Baha'a Pemrograman
!entuk umum su. rutin 35unction4
pada ABB dan )ava sangat mirip2
ntuk 5unction yang mengem.alikan
nilai$ setiap 5unction +arus dida+ului
ole+ tipe data yang sesuai dengan
jenis data yang akan dikem.alikan$
kecuali tipe data array2 Setiap
5unction juga mempunyai da5tar
parameter dimana setiap parameter
dipisa+kan dengan tanda koma 3$42
Parameter6parameter ini digunakan
untuk menerima data 3nilai4 dari
program yang memanggilnya2
Kita dapat mendeklarasikan
.anyak parameter atau tidak sama
sekali2 ntuk 5ungsi yang tidak
mempunyai parameter merupakan
5ungsi yang nilainya tetap 3tidak
.eru.a+42 Sedangkan 5ungsi yang
mempunyai parameter nilai 5ungsinya
dinamis 3dapat .eru.a+6u.a+42
Parameter6parameter ini merupakan
varia.el6varia.el yang +arus
dideklarasikan sendiri6sendiri
meskipun tipe datanya sama2
!entuk umum dari 5unction yang
mengem.alikan nilai adala+ se.agai
.erikut
tipeWdata na%aWHung&i(daHtarWpara%eter)
6
i&i dari Hung&i
return?ek&pr
e&i@
8
Per+atikan conto+ progam 5unction yang .enar
int >onto((int a, int b) 6
cc!!
return(>
)A
8
Sedangkan program yang menggunakan 5unction sala+ adala+ se.agai
.erikut:
int >onto((int a, b) 6
cc!!
return(>
)A
8
Setiap 5unction mempunyai
kode6kode program sendiri6sendiri
karena tugas yang +arus
diselesaikan ole+ setiap 5unction juga
2008 | Direktorat Pembinaan SMK
%%@
Bahasa Pemrograman Prosedur dan "ubroutin
.er.eda6.eda2 Daria.el6varia.el yang
digunakan dalam 5unction dise.ut
dengan varia.el lokal2 8le+ karena
itu varia.el terse.ut +anya dapat
digunakan didalam 5unction itu sendiri
tidak .isa digunakan ole+ 5unction
lain atau program utama2
Daria.el lokal ini .er5ungsi pada
saat 5unction terse.ut akti5 dan akan
+ilang 3di+apus4 jika 5unction suda+
tidak akti5 lagi atau setela+ 5unction
selesai melakukan tugasnya 3kecuali
varia.el yang digunakan dalam
5unction adala+ varia.el glo.al yang
dapat digunakan ole+ semua 5unction
dan program utama42
ntuk dapat digunakan$
5unction .iasanya mempunyai
parameter6parameter yang
digunakan untuk menerima masukan
dari program yang memanggilnya2
Parameter6parameter ini dise.ut
dengan parameter 5ormal2 Parameter
5ormal ini termasuk dalam varia.el
lokal yang akan .er5ungsi pada saat
5unction akti5 dan akan di+apus pada
saat 5unction selesai melakukan
tugasnya2 Per+atikan conto+ 5unction
dalam .a+asa ABB .erikut ini:
/* function akan menghasilkan nilai & jika c sama dengan s!
sebaliknya bernilai / jika c tidak sama dengan s */
int >ek(>(ar &,
>(ar >)
6 iH(&''>)
return 1A
return 0A
8
<unction cek34 mempunyai dua
.ua+ parameter 5ormal$ yaitu s dan c
yang mempunyai tipe data yang
sama$ c+ar2 <unction cek34
merupakan 5unction yang
mengem.alikan nilai se+ingga dia
+arus mempunyai tipe data dimana
tipe data6nya dalam +al ini adala+
integer2
<unction cek34 ini .ertugas untuk
memeriksa apaka+ varia.el c sama
dengan varia.el s2 )ika sama maka
5unction cek34 akan .ernilai "$
se.aliknya jika tidak maka akan
.ernilai -2 Daria.el s dan c ini
merupakan varia.el lokal yang +anya
dapat digunakan dalam 5unction cek34
saja$ tidak .isa digunakan ole+
5unction atau program lain2
Permasala+an yang sama untuk )ava
adala+ se.agai .erikut:
>a&& ri>ek 6
pubi> int >ek(>(ar &, >(ar >) 6
iH(&''>) return 1A
return 0A
8
8
Tela+ dise.utkan se.elumnya
.a+wa su. rutin dalam )ava
.er.entuk class dimana didalam
class terse.ut dimungkinkan untuk
mempunyai satu atau le.i+ 5unction
met+od2 Alass ricek34 ini dapat
%=-
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
digunakan ole+ class lain$ dalam +al
ini untuk mengecek suatu karakter
karena class ricek34 mempunyai
2
Per+atikan Program dalam .a+asa ABB :
=in>ude
?io&trea%@
u&ing na%e&pa>e
&tdA
5unction met+od cek342 !erikut ini
adala+ kode lengkap dari kedua
program di atas
int >ek(>(ar &,
>(ar >)
6 iH(&''>)
return 1A
return 0A
8
int
%ain(3
oid)
6 >(ar
a,bA a
' aaaA
b ' aaaA
>out ?? >ek(a,b) ?? endA
return 0A
8
Keluaran program adala+ :
1
Dari kode program ABB di atas
terli+at .a+wa 5unction cek34
dipanggil melalui argumen pada
program utama 3main344 dimana
argumen terse.ut mempunyai
varia.el masukan untuk 5unction
cek34 yaitu varia.el a dan .2
Daria.el a dan . ini kemudian
disalin ole+ parameter 5ormal 5unction
cek34 yaitu s dan c2 Parameter 5ormal
ini kemudian diproses le.i+ lanjut
yaitu pengecekan apaka+ parameter
5ormal s sama dengan parameter
5ormal c2 )ika sama maka 5unction
cek34 akan .ernilai "$ se.aliknya jika
tidak sama maka 5unction cek34 akan
.ernilai -2 ,ilai dari 5unction cek34 ini
kemudian langsung dicetak ke layar
ole+ program utama2 Kode program
untuk .a+asa )ava dari
permasala+an yang sama adala+:
>a&& ri>ek 6
pubi> int >ek(>(ar &, >(ar >) 6
iH(&''>) return 1A
return 0A
8
8
>a&& ri>ekApp 6
pubi> &tati> 3oid %ain
2008 | Direktorat Pembinaan SMK
%="
Bahasa Pemrograman Prosedur dan "ubroutin
(StringN O arg&) 6
ri>ek >k ' neP ri>ek()A
>(ar a'aaa,b'abaA
Sy&te%!out!printn(>k!>ek
(a,b))A
8
8
Keluaran program adala+ :
0
Dalam )ava$ class ricek34 yang
mempunyai 5unction met+od cek34
tidak .isa langsung kita gunakan 3kita
panggil4$ tetapi +arus di.uat C
diciptakan da+ulu o.yek dari class
ricek34 seperti yang terli+at pada .aris
ke6@ dimana o.yek .aru dari class
ricek34 dalam class ricekApp34 di.eri
nama ck2 Dengan o.yek ck inila+ kita
dapat mengakses met+od yang
dipunyai ole+ class ricek34 karena
secara otomatis o.yek ck juga
mempunyai met+od cek34 yang
dimiliki ole+ class ricek342
Aonto+ di atas merupakan
conto+ 5unction dimana 5unction
terse.ut mempunyai parameter$
dalam +al ini parameter s dan c yang
.ertipe c+ar2 <unction cek34 terse.ut
nilainya akan .eru.a+6u.a+ sesuai
dengan nilai masukannya2 ntuk
conto+ di atas nilai 5unction dari cek34
cuma ada dua$ yaitu - atau "2 !erikut
ini adala+ conto+ 5unction yang tidak
mempunyai parameter sama sekali
se+ingga nilai 5unction6nya tidak akan
.eru.a+6u.a+ seperti +alnya pada
conto+ se.elumnya2
Aonto+ program dalam .a+asa ABB :
=in>ude
?io&trea%@
u&ing na%e&pa>e
&tdA int Hpb()6
int a'"#,b'18,(a&iA
int r ' a R bA
iH (r''0) (a&i ' bA
e&e 6
P(ie(r_
'0) 6
a ' bA
b ' rA
r ' a R bA
(a&i ' bA
8
8
return((a&i)A
8
3oid %ain() 6
%=%
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
>out ?? B.GB;nya ' BA
>out ?? Hpb() ??endA
8
Keluaran programnya adala+ :
.GB;nya ' ,
Aonto+ program dalam .a+asa )ava :
1! >a&& (itung 6
"! pubi> int Hpb()6
1! int a'+8,b'"#,(a&i'0A
#! int r ' a R bA
*! iH (r''0) (a&i ' bA
,! e&e 6
+! P(ie(r_'0) 6
8! a ' bA
7! b ' rA
10! r ' a R bA
11! (a&i ' bA
1"! 8
11! 8
1#! return (a&iA
1*! 8
1,! 8
1+! >a&& HpbApp 6
18! pubi> &tati> 3oid %ain(StringN O arg&) 6
17! (itung &ekutu ' neP (itung()A
"0! Sy&te%!out!printn(BBiangan terbe&arnya'B: &ekutu!Hpb())A
"1! 8
""! 8
Keluaran programnya adala+ :
Biangan terbe&arnya ' ,
,ilai dari 5unction 5p.34 di atas untuk
.a+asa ABB pasti > karena nilai dari
a dan . tela+ ditetapkan .esarnya$
yaitu %? dan "#2 Sedangkan untuk
.a+asa )ava nilai met+od 5p.34 dari
class +itung34 juga pasti tetap$ yaitu >
karena nilai a dan . juga tela+
ditentukan 3aI(# dan .I%?42
,$,$ un/tion 3ang Mengembalikan Nilai
Yang dimaksud dengan 5unction
yang mengem.alikan nilai adala+
suatu su. rutin yang .ila dipanggil
ole+ suatu program 3argumen4 maka
argumen terse.ut akan memperole+
nilai .alikan dari 5unction terse.ut2
2008 | Direktorat Pembinaan SMK
%==
Bahasa Pemrograman Prosedur dan "ubroutin
Atau dengan kata lain$ suatu 5unction
yang mempunyai nilai2
Karena mempunyai nilai inila+
maka suatu 5unction yang
mengem.alikan nilai +arus
mempunyai tipe data sesuai dengan
nilai yang di+asilkannya2 Per+atikan
.aris ke6% pada 5unction cek34 pada
conto+ se.elumnya2 <unction cek34
digunakan meng+asilkan nilai integer
3li+at .aris ke6= dan ke6?4 yaitu -
atau " 3return - dan return "4$
se+ingga tipe data6nya juga +arus
integer2
Dengan demikian dapat
disimpulkan .a+wa ciri dari 5unction
yang mengem.alikan nilai adala+ :
<unction terse.ut mempunyai tipe
data2
Diak+iri dengan klausa return2
!erikut conto+ program ABB
yang menggunakan 5unction dimana
5unction6nya dapat mengem.alikan
nilai
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int Hpb(int a, int b) 6
#! int (a&iA
*! int r ' a R bA
,! iH (r''0) (a&i ' bA
+! e&e 6
8! P(ie(r_'0) 6
7! a ' bA b ' rA
10! r ' a R bA
11! (a&i ' bA
1"! 8
11! 8
1#! return((a&i)A
1*! 8
1,! 3oid %ain() 6
1+! int %,nA
18! do 6
17! >out ?? BBiangan perta%a ' BA
"0! >in @@ %A
"1! >out ?? BBiangan kedua ' BA
""! >in @@ nA
"1! 8 P(ie (% ? n)A
"#! >out ?? B.GB;nya ' B ?? Hpb(%,n)??endA
"*! 8
Keluaran programnya :
Biangan perta%a ' "#
Biangan kedua ' "0
.GB;nya ' #
%=?
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
!aris ke6= sampai dengan ke6">
merupakan su. rutin 35unction4 yang
.ernama 5p.342 Sedangkan .aris ke6
"( sampai dengan ke6%> merupakan
program utamanya2 Program utama
ini akan memanggil 5unction 5p.34
melalui suatu argumen 3li+at .aris ke6
%'42 <unction 5p.34 .ertugas untuk
melakukan pencarian 5aktor
persekutuan .esar dari dua .ua+
.ilangan yang dimasukkan di
program utama 3li+at .aris ke6"@
sampai dengan ke6%?42 Setela+
selesai melakukan tugasnya$ maka
5unction 5p.34 akan mempunyai nilai
yang langsung ditampilkan pada
program utama2
<unction 5p.34 mempunyai tipe
data integer dan mempunyai dua
.ua+ parameter 5ormal yang .ertipe
data integer juga$ yaitu a dan . 3.aris
ke6=42 <unction terse.ut juga
mempunyai varia.el +asil yang
.ertipe data integer 3.aris ke6?42
<unction 5p.34 ini nilainya akan sama
dengan varia.el +asil 3.aris ke6"'42
Daria.el a$ .$ dan +asil
merupakan varia.el lokal dimana
ketiga varia.el ini +anya .er5ungsi
pada 5unction 5p.34 saja2 Daria.el a
dan . .ertugas untuk menerima data
yang dikirim ole+ program lain yang
memanggilnya sedangkan varia.el
+asil digunakan untuk menyimpan
data +asil pencarian 5aktor
persekutuan .esar 3.aris ke6> dan
.aris ke6"%42 ntuk permasala+an
yang sama dengan menggunakan
.a+asa )ava adala+ se.agai .erikut:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& (itung 6
#! pubi> int Hpb(int a, int b) 6
*! int (a&i'0A
,! int r ' a R bA
+! iH (r''0) (a&i ' bA
8! e&e 6
7! P(ie(r_'0) 6
10! a ' bA
11! b ' rA
1"! r ' a R bA
11! (a&i ' bA
1#! 8
1*! 8
1,! return (a&iA
1+! 8
18! 8
17! >a&& &ekutuBe&ar 6
"0! pubi> &tati> 3oid %ain(StringN O arg&) 6
"1! (itung &ekutu ' neP (itung()A
""! int %,nA
2008 | Direktorat Pembinaan SMK
%='
Bahasa Pemrograman Prosedur dan "ubroutin
"1! S>anner input ' neP S>anner(Sy&te%!in)A
"#! do 6
"*! Sy&te%!out!print(BBiangan perta%a ' B)A
",! % ' input!neYtInt()A
"+! Sy&te%!out!print(BBiangan kedua ' B)A
"8! n ' input!neYtInt()A
"7! 8 P(ie(% ? n)A
10! Sy&te%!out!printn(BBianganterbe&arnya'B:&ekutu!Hpb(%,n))A
11! 8
1"! 8
Keluaran programnya :
Biangan perta%a ' 1,
Biangan kedua ' "8
Biangan terbe&arnya ' #
Pada program )ava di atas
terli+at .a+wa pencarian 5aktor
persekutuan .esar6nya dilakukan
ole+ Alass +itung342 Alass +itung34 ini
mempunyai met+od 5p.34$ yang
merupakan 5unction 5p.34 pada ABB$
dan .ertugas untuk melakukan
pencarian 5aktor persekutuan .esar2
Alass sekutu!esar34 kemudian
mem.uat o.yek .aru dari Alass
+itung34 dengan nama sekutu 3li+at
.aris ke6%"42 Atau dengan kata lain
Alass +itung34 Hdipanggil1 ole+
program utamanya yaitu Alass
sekutu!esar342
Program )ava terse.ut jika di6
compile akan meng+asilkan dua
.ua+ class$ yaitu +itung2class dan
sekutu!esar2class dimana program
sekutu!esar2class akan memanggil
+itung2class untuk melakukan
per+itungan 5aktor persekutuan .esar
dari dua .ua+ .ilangan2
,$-$ un/tion 3ang Ti%ak Mengembalikan Nilai
ntuk su. rutin 35unction4 yang
tidak mengem.alikan nilai .entuknya
sangat mirip dengan 5unction yang
mengem.alikan nilai2 Per.edaannya
adala+ penggunaan kata kunci atau
klausa void pada 5unction yang tidak
mengem.alikan nilai .aik pada
.a+asa ABB maupun .a+asa )ava2
ntuk le.i+ jelasnya$ per+atikan
program ABB .erikut ini untuk
permasala+an yang sama$ yaitu
mencari 5aktor persekutuan .esar2
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! 3oid Hpb(int a, int b) 6
#! int (a&iA
*! int r ' a R bA
,! iH (r''0) (a&i ' bA
%=>
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
+! e&e 6
8! P(ie(r_'0) 6
7! a ' bA
10! b ' rA
11! r ' a R bA
1"! (a&i ' bA
11! 8
1#! 8
1*! >out ?? B.GB;nya ' B ?? (a&i ??endA
1,! 8
1+! 3oid %ain() 6
18! int %,nA
17! do 6
"0! >out ?? BBiangan perta%a ' BA
"1! >in @@ %A
""! >out ?? BBiangan kedua ' BA
"1! >in @@ nA
"#! 8 P(ie (% ? n)A
"*! Hpb(%,n)A
",! 8
Keluaran programnya :
Biangan perta%a ' 10
Biangan kedua ' 18
.GB;nya ' ,
Program di atas$ 5unction 5p.34
3.aris ke6= sampai dengan .aris ke6
">4 tidak mempunyai tipe data dan
klausa return diak+ir program$
se+ingga dapat kita simpulkan .a+wa
5unction 5p.34 .ukan merupakan
suatu 5unction yang mengem.alikan
nilai2 Se.aliknya$ 5unction 5p.34
diawali dengan klausa void se+ingga
5unction terse.ut merupakan suatu
5unction yang tidak mengem.alikan
nilai2
9asil per+itungan 5aktor
persekutuan .esar dari dua .ua+
.ilangan tidak dikem.alikan ke
program utama yang memanggilnya
tetapi ditampilkan sendiri ole+
5unction terse.ut 3.aris ke6"'42
Dengan argumen pada program
utama yang memanggil 5uction 5p.34
3.aris ke6%'4 tidak meng+asilkan
suatu nilai seperti +alnya pada
conto+ se.elumnya 35unction yang
mengem.alikan nilai42 ntuk conto+
5unction yang tidak mengem.alikan
nilai pada .a+asa )ava dengan
permasala+an yang sama adala+
se.agai .erikut:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
2008 | Direktorat Pembinaan SMK
%=(
Bahasa Pemrograman Prosedur dan "ubroutin
1! >a&& (itung 6
#! pubi> 3oid Hpb(int a, int b) 6
*! int (a&i'0A
,! int r ' a R bA
+! iH (r''0) (a&i ' bA
8! e&e 6
7! P(ie(r_'0) 6
10! a ' bA
11! b ' rA
1"! r ' a R bA
11! (a&i ' bA
1#! 8
1*! 8
1,! Sy&te%!out!printn(BBiangan terbe&arnya ' B : (a&i)A
1+! 8
18! 8
17! >a&& &ekutuBe&ar 6
"0! pubi> &tati> 3oid %ain(StringN O arg&) 6
"1! (itung &ekutu ' neP (itung()A
""! int %,nA
"1! S>anner input ' neP S>anner(Sy&te%!in)A
"#! do 6
"*! Sy&te%!out!print(BBiangan perta%a ' B)A
",! % ' input!neYtInt()A
"+! Sy&te%!out!print(BBiangan kedua ' B)A
"8! n ' input!neYtInt()A
"7! 8 P(ie(% ? n)A
10! &ekutu!Hpb(%,n)A
11! 8
1"!8
Keluaran programnya :
Biangan perta%a ' ##
Biangan kedua ' 1,
Biangan terbe&arnya ' #
Sama seperti pada .a+asa ABB$
class yang mempunyai 5unction
met+od untuk yang tidak
mengem.alikan nilai pada .a+asa
)ava juga tidak mempunyai tipe data$
tetapi diawali dengan klausa void
3.aris ke6?42
9asil per+itungan 5aktor persekutuan
.esar ole+ class +itung34 juga tidak
ditampilkan ole+ class sekutu!esar34
yang memanggilnya 3.aris ke6=-4$
tetapi ole+ class +itung34 itu sendiri
3.aris ke6">42
%=#
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
,$2$ un/tion .all un/tion
Su. rutin dalam suatu program
tidak +anya dapat dipanggil ole+
program utama saja tetapi antar su.
rutin juga dapat saling memanggil2
int
%ain() 6
cc!
Hung&iW1
()A
cc!
Hung&iW"
()A
cc!
return
0A
8
int Hung&iW1()
6
cc!
Hung&iW1()A
cc!
return
0A
8
int
Hung&iW"() 6
c
c!
return
0A
int Hung&iW1() 6
cc!
Hung&iW#()A
return 0A
8
int
Hung&iW#() 6
cc!
return 0A
8
8
;am.ar >2%2 Su. rutin yang tidak +anya dipanggil ole+ program utama
!erikut adala+ conto+ su. rutin yang memanggil su. rutin lainnya2
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! 3oid Hpb(int a, int b)6
#! int (a&iA
*! int r ' a R bA
,! iH (r''0) (a&i ' bA
+! e&e 6
8! P(ie(r_'0) 6
7! a ' bA
10! b ' rA
11! r ' a R bA
1"! (a&i ' bA
11! 8
1#! 8
1*! >out ?? B.GB;nya ' B ?? (a&i ??endA
1,! 8
1+! 3oid inputWdata()6
2008 | Direktorat Pembinaan SMK
%=@
Bahasa Pemrograman Prosedur dan "ubroutin
18! int %,nA
17! do 6
"0! >out ?? BBiangan perta%a ' BA
"1! >in @@ %A
""! >out ?? BBiangan kedua ' BA
"1! >in @@ nA
"#! 8 P(ie (% ? n)A
"*! Hpb(%,n)A
",! 8
"+! 3oid %ain() 6
"8! inputWdata()A
"7! 8
Keluaran programnya adala+ :
Biangan perta%a ' *,
Biangan kedua ' "#
.GB;nya ' 8
Program di atas mempunyai dua
.ua+ 5unction$ yaitu 5unction 5p.34 dan
5unction input]data342 Pertama kali
5unction yang dipanggil ole+ program
utama adala+ 5unction input]data34
3.aris ke6%#42 Kemudian 5unction
input]data34 melakukan pemanggilan
5unction lain yaitu 5unction 5p.34 3.aris
ke6%'4 setela+ user memasukkan
data untuk .ilangan pertama dan
.ilangan kedua2 Sedangkan kode
program dalam .a+asa )ava untuk
permasala+an yang sama adala+:
1! i%port -a3a!uti!S>annerA
"! i%port -a3a!io!EA
1! >a&& (itung 6
#! pubi> 3oid Hpb(int a, int b)6
*! int (a&i'0A
,! int r ' a R bA
+! iH (r''0) (a&i ' bA
8! e&e 6
7! P(ie(r_'0) 6
10! a ' bA
11! b ' rA
1"! r ' a R bA
11! (a&i ' bA
1#! 8
1*! 8
1,! Sy&te%!out!printn(BBiangan terbe&arnya ' B : (a&i)A
1+! 8
%?-
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
18! 8
17! >a&& inputWdata 6
"0! pubi> 3oid dataWinput() 6
"1! (itung &ekutu ' neP (itung()A
""! int %,nA
"1! S>anner input ' neP S>anner(Sy&te%!in)A
"#! do 6
"*! Sy&te%!out!print(BBiangan perta%a ' B)A
",! % ' input!neYtInt()A
"+! Sy&te%!out!print(BBiangan kedua ' B)A
"8! n ' input!neYtInt()A
"7! 8 P(ie(% ? n)A
10! &ekutu!Hpb(%,n)A
11! 8
1"! 8
11! >a&& &ekutuBe&ar 6
1#! pubi> &tati> 3oid %ain(StringN O arg&) 6
1*! inputWdata %a&ukan ' neP inputWdata()A
1,! %a&ukan!dataWinput()A
1+! 8
18! 8
Keluaran programnya adala+ :
Biangan perta%a '+,
Biangan kedua '18
Biangan terbe&arnya ' "
,$4$ .all b3 Halue %an .all b3 ReCeren/e'
Ada dua cara .agaimana suatu
argumen dalam suatu program dapat
memanggil su. rutin 35unction4$ yaitu
call .y value dan call .y re5erence2
Yang dimaksud dengan call .y value
adala+ metode yang menyalin data
3nilai4 dari argumen yang memanggil
5unction ke parameter dari 5unction
terse.ut2 Aki.atnya jika ada
peru.a+an nilai pada parameter
5unction tidak akan .erpengaru+
pada nilai aslinya 3nilai yang ada
pada argumen program yang
memanggil 5unction terse.ut42
Se.aliknya untuk call .y
re5erence yang disalin .ulan
nilainya tetapi alamat memori
yang menyimpan nilai terse.ut
se+ingga jika terjadi peru.a+an6
peru.a+an nilai pada parameter
5unction$ maka secara otomatis
nilai argumennya juga akan ikut
.eru.a+2 ntuk le.i+ jelasnya$
per+atikan conto+ call .y value
dengan ABB .erikut ini:
2008 | Direktorat Pembinaan SMK
%?"
Bahasa Pemrograman Prosedur dan "ubroutin
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! int &Xr(int Y) 6
#! Y ' YEYA
*! return(Y)A
,! 8
+! int %ain(3oid) 6
8! int t'10A
7! >out ?? &Xr(t) ?? B, B ?? t ??endA
10! return 0A
11! 8
Keluaran programnya adala+ :
100, 10
,ilai argumen s^r34 pada
program utama yaitu t 3.ernilai "-4
disalin ke parameter & 5unction
s^r342 Didalam 5unction s^r34$ nilai &
diru.a+ 3&I&K&4 se+ingga 5unction
s^r34 .ernilai "--2 ,ilai 5unction
s^r34 ini langsung ditampilkan ole+
program yang memanggilnya 3.aris
ke6@42 Akan tetapi nilai t$ yang juga
ditampilkan ole+ program utama
3.ariske6@4$ tetap "-2 Keluaran
program ini adala+ "--$ "- dimana
"-- adala+ nilai dari 5unction 5p.34
dan "- adala+ nilai varia.el t2
Kiai
aPa t
' 10
Kiai 3ariabe t
di&ain ke
para%eter Hung&i
&Xr()
Y ' 10
Ge%anggian
ke%bai 3ariabe
t
t '
10
Gro&e& di
Hun>tion &Xr()
Y ' 100 atau
&Xr() '100
;am.ar >2=2 call .y value
ntuk permasala+an yang sama dalam .a+asa )ava adala+ se.agai .erikut :
1! i%port -a3a!io!EA
"! >a&& kuadrat 6
%?%
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
1! pubi> int &Xr(int Y) 6
#! Y ' YEYA
*! return(Y)A
,! 8
+! 8
8! >a&& poPer 6
7! pubi> &tati> 3oid %ain(StringN O arg&) 6
10! kuadrat a ' neP kuadrat()A
11! int t'10A
1"! Sy&te%!out!printn(a!&Xr(t) : B, B : t)A
11! 8
1#! 8
Keluaran programnya adala+ :
100, 10
ntuk call .y re5erence$ tipe data
yang digunakan adala+ tipe data
pointer karena yang disalin adala+
alamat dari memori dimana data
disimpan 3pem.a+asan mengenai
pointer ini ada di .a. tersendiri42
ntuk .a+asa )ava tidak
menggunakan call .y re5erence
karena tidak ada pointer dalam
.a+asa )ava2 Aonto+ call .y
re5erence 3dengan menggunakan
.a+asa ABB4 adala+ se.agai .erikut:
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! 3oid tukar(int EY, int Ey) 6
#! int te%pA
*! te%p ' EYA
,! EY ' EyA
+! Ey ' te%pA
8! 8
7! int %ain(3oid) 6
10! int i, -A
11! i ' 10A
1"! - ' "0A
11! >out ?? B)ua;%ua M B ?? endA
1#! >out ?? BKiai i M B ?? i ?? endA
1*! >out ?? BKiai - M B ?? - ?? endA
1,! tukar(Si, S-)A
1+! >out ?? end ?? BSetea( ditukar M B ?? endA
18! >out ?? BKiai i M B ?? i ?? endA
17! >out ?? BKiai - M B ?? - ?? endA
"0! return 0A
"1! 8
2008 | Direktorat Pembinaan SMK
%?=
Bahasa Pemrograman Prosedur dan "ubroutin
Tanda K pada varia.el di 5unction tukar34 merupakan varia.el pointer2
Keluaran dari program di atas adala+ :
)ua;
%ua M
Kiai I M
10
Kiai - M "0
Setea(
ditukar M Kiai
I M "0
Kiai - M 10
!aris ke6"? dan "'$ digunakan
untuk menampilkan nilai dari varia.el
i dan j yang nilainya masing6masing
"- dan %-2 Setela+ dilakukan
penukaran dengan memanggil
5unction tukar34 pada .aris ke6">$
program kemudian memanggil
kem.ali varia.el i dan j 3.aris ke6"#
dan ke6"@42 Ternyata varia.el i dan j
tela+ tertukar2 9al ini terjadi karena
pada 5unction tukar34 menyalin alamat
memori yang menyimpan varia.el i
dan j dan kemudian menukar isinya
se+ingga jika varia.el i dan j jika
dipanggil nilainya akan .eru.a+
karena isinya tela+ ditukar2
Kiai
aPa
i ' 10,
-'"0
Aa%at %e%ori yang
%enyi%pan niai dari
3ariabe Y dan y di&ain
ke para%eter Hung&i
tukar()
Y ' 10, y'"0
Ge%anggian
ke%bai 3ariabe
i dan -
i ' "0, -'10
Gro&e&
penukaran di
Hun>tion tukar()
Y ' "0, y '10
;am.ar >2?2 Aall .y re5erence
,$"5$ Parameter %engan Nilai DeCault
,ilai parameter dalam suatu
5unction ABB dapat kita .eri nilai
de5ault$ yaitu suatu nilai yang
di.erikan secara de5ault ole+ 5unction
jika parameter dari argumen yang
memanggil 5unction terse.ut tidak
%??
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
kita .erikan2 ntuk le.i+ jelasnya per+atikan conto+ .erikut ini:
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! doube ua&W&egi1(int aa&, int tinggi'10)6
#! return(0!* E aa& E tinggi)A
*! 8
,! 3oid %ain() 6
+! int a'1*,t'"0A
8! >out ?? BFua& &egitiga ' BA
7! >out ?? ua&W&egi1(a,t) ??endA
10! >out ?? endA
11! >out ?? BFua& &egitiga ' BA
1"! >out ?? ua&W&egi1(a) ??endA
11! 8
Keluaran programnya adala+ :
Fua& &egitiga ' 1*0
Fua& &egitiga ' +*
Program di atas mempunyai satu
.ua+ 5unction yaitu 5unction
luas]segi=34 dimana 5unction terse.ut
mempunyai dua .ua+ parameter
5ormal yaitu alas dan tinggi2
Parameter alas tidak mempunyai nilai
de5ault$ tetapi untuk parameter tinggi
mempunyai nilai de5ault$ yaitu "-2
Program utama dari program
terse.ut tela+ menentukan .a+wa
nilai dari varia.el a yang nantinya
digunakan se.agai varia.el masukan
untuk parameter alas dari 5unction
luas]segi=34 adala+ "'2 Sedangkan
varia.el t yang nantinya digunakan
se.agai varia.el masukan untuk
parameter tinggi dari 5unction
luas]segi=34 adala+ %-2 Se+ingga
ketika argumen program utama yang
memanggil 5unction luas]segi=34
pada .aris ke6@ dijalankan$ maka nilai
dari parameter alas dan tinggi pada
5unction luas]segi=34 masing6masing
adala+ "' dan %-2 Dengan demikian
5unction luas]segi=34 akan .ernilai
"'-2
Akan tetapi untuk argumen .aris
ke6"% pada program utama terli+at
.a+wa argumen terse.ut tidak
menyertakan varia.el t$ tetapi +anya
menyertakan varia.el a2 Se+ingga
ketika argumen terse.ut dijalankan
maka +anya parameter alas pada
5unction luas]segi=34 saja yang
menerima masukan dari argumen
terse.ut2 Sedangkan untuk
parameter tinggi tidak memperole+
masukan2 Akan tetapi karena
parameter tinggi mempunyai nilai
de5ault "-$ maka nilai varia.el tinggi
yang digunakan untuk meng+itung
luas segitiga adala+ "-2 Dengan
demikian nilai dari 5unction
luas]segi=34 adala+ ('2
2008 | Direktorat Pembinaan SMK
%?'
Bahasa Pemrograman Prosedur dan "ubroutin
,$""$ OBerloa%ing
8verloading adala+ 5unction6
5unction yang ada dalam suatu
program dimana 5unction65unction
terse.ut mempunyai nama yang
sama tetapi parameter 5ormal6nya
.er.eda6.eda antara yang satu
dengan yang lainnya2 Ada tiga jenis
overloading$ yaitu:
"2 <unction terse.ut mempunyai
jumla+ parameter 5ormal yang
.er.eda tetapi tipe data6nya
sama2
%2 <unction terse.ut mempunyai
jumla+ parameter 5ormal yang
sama tetapi tipe data yang
.er.eda2
=2 <unction65unction terse.ut
mempunyai jumla+ parameter
5ormal yang .er.eda dan tipe
data dari parameter 5ormal
terse.ut juga .er.eda2
!erikut ini di.erikan conto+ untuk
5unction65unction yang mempunyai
jumla+ parameter 5ormal yang
.er.eda tetapi tipe data6nya sama2
ntuk .a+asa ABB
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! 3oid ua&W&egi1(int aa&)6
#! int tinggi'10A
*! >out ?? BFua& &egitiga 1 ' B
,! >out ?? (0!* E aa& E tinggi) ?? endA
+! 8
8! 3oid ua&W&egi1(int aa&,int tinggi)6
7! >out ?? BFua& &egitiga " ' B
10! >out ?? (0!* E aa& E tinggi) ?? endA
11! 8
1"! 3oid ua&W&egi1(int aa&, int tinggi,int bagi)6
11! >out ?? BFua& &egitiga " bagi B
1#! >out ?? bagi ?? B ' B
1*! >out ?? (0!* E aa& E tinggi)/bagi
1,! >out ?? endA
1+! 8
18! 3oid %ain() 6
17! ua&W&egi1(10)A
"0! ua&W&egi1(10,1*)A
"1! ua&W&egi1(10,1*,1)A
""! 8
Keluaran programnya adala+ :
Fua& &egitiga 1 ' 1*0
Fua& &egitiga " ' +*
Fua& &egitiga " bagi 1 ' "*
%?>
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
Program di atas mempunyai tiga
.ua+ 5unction yang mempunyai nama
sama yaitu luas]segi=342 <unction
yang pertama 3.aris ke6=4 +anya
mempunyai satu .ua+ parameter
5ormal yaitu alas dengan tipe data
integer2 Sedangkan 5unction yang
kedua 3.aris ke6#4 mempunyai dua
.ua+ parameter 5ormal alas dan
tinggi dimana keduanya .ertipe data
integer2 <unction yang terak+ir 3.aris
ke6"%4 mempunyai tiga .ua+
parameter 5ormal yaitu alas$ tinggi$
dan .agi yang semuanya .ertipe data
yang sama$ yaitu integer2
Pada program utama$ terdapat
tiga .ua+ argumen dimana argumen
pertama 3.aris ke6"@4 +anya
mempunyai satu varia.el masukan
untuk 5unction$ argumen kedua 3.aris
ke6%-4 mempunyai dua .ua+ varia.el
masukan$ dan argumen terak+ir
3.aris ke6%"4 mempunyai tiga .ua+
varia.el masukan2
ABB secara otomatis akan
mengara+kan argumen pertama
kepada 5unction yang pertama$
argumen kedua kepada 5unction yang
kedua$ dan argumen ketiga kepada
5unction yang ketiga$ sesuai dengan
varia.el masukan yang dipunyai ole+
masing6masing argumen2 Sedangkan
untuk .a+asa )ava:
1! >a&& (itung 6
"! pubi> 3oid ua&W&egi1(int aa&)6
1! int tinggi'10A
#! doube ua&'0!*Eaa&EtinggiA
*! Sy&te%!out!printn(BFua& &egitiga 1 ' B : ua&)A
,! 8
+! pubi> 3oid ua&W&egi1(int aa&,int tinggi)6
8! doube ua&'0!*Eaa&EtinggiA
7! Sy&te%!out!printn(BFua& &egitiga " ' B : ua&)A
10! 8
11! pubi> 3oid ua&W&egi1(int aa&, int tinggi,int bagi)6
1"! doube ua&'(0!*Eaa&Etinggi)/bagiA
11! Sy&te%!out!printn(BFua& &egitiga " dibagi B : bagi : B ' B :
ua&)A
1#! 8
1*! 8
1,! >a&& o3eroad1 6
1+! pubi> &tati> 3oid %ain(StringN O arg&) 6
18! (itung &ekutu ' neP (itung()A
17! &ekutu!ua&W&egi1(10)A
"0! &ekutu!ua&W&egi1(10,1*)A
"1! &ekutu!ua&W&egi1(10,1*,1)A
""! 8
"1! 8
2008 | Direktorat Pembinaan SMK
%?(
Bahasa Pemrograman Prosedur dan "ubroutin
Keluaran programnya adala+ :
Fua& &egitiga 1 ' 1*0
Fua& &egitiga " ' +*
Fua& &egitiga " bagi 1 ' "*!0
Sedangkan conto+ untuk 5unction6
5unction yang mempunyai jumla+
parameter 5ormal yang sama tetapi
tipe data6nya .er.eda adala+ seperti
.erikut2 ntuk .a+asa ABB:
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! 3oid ua&W&egi1(int aa&)6
#! int tinggi'10A
*! >out ?? BFua& &egitiga 1 ' B ?? (0!* E aa& E tinggi) ?? endA
,! 8
+! 3oid ua&W&egi1(>(arE aa&)6
8! >out ?? aa& ?? endA
7! 8
10! 3oid %ain() 6
11! ua&W&egi1(10)A
1"! ua&W&egi1(BBea-ar pe%rogra%anB)A
11! 8
Keluaran programnya adala+ :
Fua& &egitiga 1 ' 1*0
Bea-ar pe%rogra%an
Program di atas mempunyai dua
.ua+ 5unction yaitu luas]segi=34
dimana setiap 5unction mempunyai
satu .ua+ parameter 5ormal tetapi
tipe datanya .er.eda2 <unction yang
pertama parameter 5ormalnya
mempunyai tipe data integer$ dan
5unction kedua mempunyai
parameter 5ormal dengan tipe data
pointer c+ar2
Sama seperti se.elumnya$ ABB
juga secara otomatis akan
mengara+kan argumen yang
memanggil 5unction pada program
terse.ut kepada 5unction yang
.erkesesuaian2 Argumen pertama
3.aris ke6""4 akan diara+kan kepada
5unction pertama pula 3.aris ke6=4
karena tipe data dari varia.el
masukan sama dengan parameter
5ormal dari 5unction yang pertama$
yaitu integer2
Sedangkan untuk argumen
kedua 3.aris ke6"%4 akan diara+kan
kepada 5unction kedua 3.aris ke6(4
karena tipe data dari varia.el
masukan sama dengan parameter
5ormal dari 5unction yang kedua$ yaitu
c+ar2 ntuk .a+asa )ava dengan
permasala+an yang sama adala+
se.agai .erikut:
%?#
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
1! >a&& (itung 6
"! pubi> 3oid ua&W&egi1(int aa&)6
1! int tinggi'10A
#! doube ua&'0!*Eaa&EtinggiA
*! Sy&te%!out!printn(BFua& &egitiga 1 ' B : ua&)A
,! 8
+! pubi> 3oid ua&W&egi1(String aa&)6
8! Sy&te%!out!printn(aa&)A
7! 8
10! 8
11! >a&& o3eroad" 6
1"! pubi> &tati> 3oid %ain(StringN O arg&) 6
11! (itung &ekutu ' neP (itung()A
1#! &ekutu!ua&W&egi1(10)A
1*! &ekutu!ua&W&egi1(BBea-ar pe%rogra%anB)A
1,! 8
1+! 8
Keluaran programnya adala+ :
Fua& &egitiga 1 ' *0!0
Bea-ar pe%rogra%an
Aonto+ untuk 5unction65unction yang
mempunyai jumla+ parameter 5ormal
yang .er.eda dan tipe data yang
.er.eda pula adala+ seperti .erikut:
ntuk .a+asa ABB :
1! =in>ude ?io&trea%@
"! u&ing na%e&pa>e &tdA
1! 3oid ua&W&egi1(int aa&)6
#! int tinggi'10A
*! >out ?? BFua& &egitiga 1 ' B
,! >out ?? (0!* E aa& E tinggi) ?? endA
+! 8
8! 3oid ua&W&egi1(>(arE aa&)6
7! >out ?? aa& ?? endA
10! 8
11! 3oid ua&W&egi1(>(arE aa&,int data)6
1"! >out ?? aa& ?? B M B ?? endA
11! >out ?? BGangkat dua dari B
1#! >out ?? data ?? B adaa( B
1*! >out ?? (dataEdata) ?? endA
1,! 8
1+! 3oid %ain() 6
18! ua&W&egi1(10)A
2008 | Direktorat Pembinaan SMK
%?@
Bahasa Pemrograman Prosedur dan "ubroutin
17! ua&W&egi1(BBea-ar pe%rogra%anB)A
"0! ua&W&egi1(BBea-ar pe%rogra%an agiB,1)A
"1! 8
Keluaran programnya adala+ :
Fua& &egitiga 1 ' 1*0
Bea-ar pe%rogra%an
Bea-ar pe%rogra%an
agi M Gangkat dua dari
1 adaa( 7
Program di atas mempunyai tiga
.ua+ 5unction yang mempunyai nama
yang sama$ yaitu luas]segi=342
*asing6masing 5unction mempunyai
jumla+ parameter 5ormal yang
.er.eda dan tipe data dari parameter
5ormal terse.ut juga .er.eda2
Sama dengan se.elumnya$ ABB
secara otomatis juga akan
mengara+kan argumen yang
memanggil 5unction65unction terse.ut
sesuai dengan jumla+ varia.el
masukan dan tipe datanya2 ntuk
.a+asa )ava dengan permasala+an
yang sama adala+ se.agai .erikut:
1! >a&& (itung 6
"! pubi> 3oid ua&W&egi1(int aa&)6
1! int tinggi'10A
#! doube ua&'0!*Eaa&EtinggiA
*! Sy&te%!out!printn(BFua& &egitiga 1 ' B : ua&)A
,! 8
+! pubi> 3oid ua&W&egi1(String aa&)6
8! Sy&te%!out!printn(aa&)A
7! 8
10! pubi> 3oid ua&W&egi1(String aa&,int data)6
11! Sy&te%!out!printn(aa& : B M B)A
1"! Sy&te%!out!printn(BGangkat dua dari B : data : B adaa( B :
(dataEdata))A
11! 8
1#! 8
1*! >a&& o3eroad1 6
1,! pubi> &tati> 3oid %ain(StringN O arg&) 6
1+! (itung &ekutu ' neP (itung()A
18! &ekutu!ua&W&egi1(10)A
17! &ekutu!ua&W&egi1(BBea-ar pe%rogra%anB)A
"0! &ekutu!ua&W&egi1(BBea-ar pe%rogra%anB,1)A
"1! 8
""! 8
%'-
Direktorat Pembinaan SMK | 2008
Prosedur dan "ubroutin Bahasa Pemrorgraman
Keluaran programnya adala+ :
Fua& &egitiga 1 ' *0!0
Bea-ar pe%rogra%an
Bea-ar Ge%rogra%an
M Gangkat dua dari 1
adaa( 7
,$"&$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan prosedur dan
%2 Se.utkan per.edaan prosedur dengan 5ungsi
=2 Apa sajaka+ parameter6parameter yang dimiliki ole+ prosedur
?2 *engapa dalam program perlu ditulis dalam .entuk su.rutin
'2 Apa yang dimaksud dengan 5untion call 5unction
>2 Apa yang dimaksud dengan call .y value dan call .y re5erence
(2 Apa yang dimaksud dengan overloading
2008 | Direktorat Pembinaan SMK
%'"
Bahasa Pemrograman Prosedur dan "ubroutin
%'%
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
BAB -
UNGS!
(2"2 Penda+uluan
(2%2 <ungsi Doid
(2=2 Pemanggilan <ungsi
(2?2 Prototipe <ungsi
(2'2 Pengiriman data pada <ungsi
(2>2 Passing Data .y Dalue
(2(2 T+e return Statement
(2#2 Returning a Dalue 5rom a <unction
(2@2 Returning a !oolean Dalue
(2"-2 *enggunakan <ungsi dalam program menu
(2""2 Daria.el :okal dan ;lo.al
(2"%2 Soal :ati+an
-$"$ Pen%ahuluan
<ungsi adala+ kumpulan
pernyataan yang melakukan tugas
tertentu2 Sejau+ ini Anda tela+
menggunakan 5ungsi dalam dua cara:
3"4 Anda tela+ mem.uat se.ua+
5ungsi .ernama utama dalam setiap
program yang tela+ ditulis$ dan 3%4
Anda memiliki 5ungsi li.rary dise.ut
seperti s^rt dan pow2 Dalam .a. ini
akan mempelajari cara mem.uat
5ungsi yang dapat digunakan seperti
5ungsi li.rary pada ABB2
Sala+ satu alasan mengapa
menggunakan 5ungsi adala+ untuk
memeca+ program ke dalam se.ua+
program yang le.i+ kecil se+ingga
muda+ dikelola2 Setiap unit modul$
diprogram se.agai 5ungsi terpisa+2
*isalnya pada se.ua+ .uku yang
memiliki seri.u +alaman$ tetapi tidak
di.agi ke dalam .a. atau .agian2
)ika ingin menco.a untuk
menemukan satu topik dalam .uku
ini akan sangat sulit2 Real6world
program dapat dengan muda+ ada
ri.uan .aris kode$ dan kecuali
mereka modulariQed$ mereka .isa
jadi sangat sulit untuk mengu.a+ dan
memeli+ara2
Alasan lain untuk menggunakan
5ungsi adala+ untuk .a+wa 5ungsi
menyeder+anakan program2 )ika
tugas tertentu dilakukan di .e.erapa
tempat di se.ua+ program$ se.ua+
5ungsi dapat ditulis sekali saja untuk
melakukan tugas itu$ dan kemudian
2008 | Direktorat Pembinaan SMK
%'=
Bahasa Pemrograman Fungsi
akan dijalankan kapan saja
di.utu+kan2
Ketika mem.uat se.ua+ 5ungsi$
yang +arus ditulis adala+ de5inisi2
Semua de5inisi mempunyai .agian6
.agian di.awa+ ini:
Name
Setiap 5ungsi +arus memiliki nama2
Secara umum$ peraturan yang sama
.erlaku untuk nama varia.el juga
.erlaku untuk nama 5ungsi2
Parameter li't
Program modul 5ungsi panggilan
yang dapat mengirim data ke2 Da5tar
parameter adala+ da5tar varia.el
yang memegang nilai6nilai yang
disampaikan ke 5ungsi2
Bo%3
!adan 5ungsi adala+ serangkaian
pernyataan yang melaksanakan
tugas melakukan 5ungsi2 Pernyataan
ini akan ditutupi dalam satu set
.races2
Return t3(e9
5ungsi dapat mengirim kem.ali ke
nilai program modul yang
memanggilnya2 Return type
merupakan tipe data dari nilai yang
dikirim kem.ali2
;am.ar di.awa+ menunjukkan
de5inisi dari 5ungsi yang seder+ana
dengan .er.agai .agian .erla.el2
Per+atikan .a+wa 5ungsi dari jenis
kem.ali se.enarnya tercantum
pertama2
.et*.
"#"
P"."#ete. -i+t
b,%F
it %ain ()
6
Cout ?? I 2eo Si&Pa
S)K`nJA
.et*.
0A
8
;am.ar (2"2 5unction +eader
Aonto+ program diatas merupakan .aris pende5inisian int main 34 yang dise.ut
dengan function header2
%'?
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
-$&$ ung'i Hoi%
Yang suda+ ta+u pada 5ungsi
adala+ .a+wa 5ungsi dapat
mengem.alikan nilai2 <ungsi utama
dalam semua program yang tela+
dili+at dalam .uku ini dinyatakan
untuk kem.ali ke nilai int se.ua+
sistem operasi2 Return -N merupakan
se.ua+ pernyataan yang
menye.a.kan nilai - .ila 5ungsi
utama tela+ selesai melaksanakan
tugasnya2 9al terse.ut tidak semua
5ungsi diperlukan untuk kem.ali ke
nilai terse.ut2 !e.erapa 5ungsi +anya
melakukan satu atau le.i+
pernyataan dan kemudian
mengak+iri2 7ni dise.ut void 5ungsi2
<ungsi TampilPesan seperti
ditampilkan di .awa+ ini adala+
se.agai conto+:
5,i% 4a%piGe&an()
6
>out ?? B2eo Hro% t(e Hun>tion 4a%piGe&an!`nBA
8
,ama 5ungsi terse.ut diatas
TampilPesan2 ,ama ini jelas$ se.agai
nama 5ungsi +arus2 7a mem.eri
indikasi tentang apa yang tidak
.er5ungsi: ini menampilkan pesan2
Per+atikan kem.ali 5ungsi dari jenis
void2 7ni .erarti 5ungsi tidak
mengem.alikan nilai ke .agian
program yang dijalankan terse.ut2
Pem.erita+uan juga tidak memiliki
5ungsi pernyataan Kem.ali2 7ni +anya
menampilkan pesan pada layar dan
keluar2
-$)$ Pemanggilan ung'i
5ungsi dijalankan ketika
dipanggil2 <ungsi utama akan
dipanggil secara otomatis saat
program dimulai$ namun semua
5ungsi +arus dijalankan ole+
pernyataan function call2 Ketika
se.ua+ 5ungsi dipanggil$ program
untuk melakukan perca.angan
menuju dan melaksanakan semua
pernyataan yang ada didalam tu.u+
5ungsi terse.ut2 ntuk le.i+ jelasnya
mari kita li+at Program di.awa+$ yang
.erisi dua 5ungsi yaitu: TampilPesan
dan utama2
Program (2"2
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% 4a%piGe&an()
6
>out ?? B @@ Saa% 2eo dari Hung&i 4a%piGe&an!`nBA
2008 | Direktorat Pembinaan SMK
%''
Bahasa Pemrograman Fungsi
8
it %ain()
6
>out ?? B2eo dari progra% $ta%a!`nBA
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
4a%piGe&an()A // memanggil 0ampil'esan
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
>out ?? Bke%bi ke .ung&i $ta%a agi!`nBA
get>(()A
.et*. 0A
8
Keluaran programnya adala+:
2eo dari progra% $ta%a!
;;;;;;;;;;;;;;;;;;;;;;;;;
@@ Saa% 2eo dari Hung&i 4a%piGe&an!
;;;;;;;;;;;;;;;;;;;;;;;;;
ke%bi ke .ung&i $ta%a agi!
<ungsi TampilPesan dise.ut ole+
.aris utama adala+: TampilPesan34N
!aris ini digunakan untuk 5ungsi
panggilan2 Dimana +al ini merupakan
nama 5ungsi yang diikuti ole+ tanda
kurung dan titik koma2 Ao.a kita
.andingkan dengan 5ungsi +eader
seperti .erikut:
.un>tion 2eader 3oid 4a%piGe&an()
.un>tion Ca 4a%piGe&an()A
<ungsi +eader adala+ .agian
dari de5inisi 5ungsi2 7a menyatakan
kem.ali se.ua+ 5ungsi dari jenis$
nama$ dan da5tar parameter2 9al ini
tidak diak+iri dengan titik koma
karena de5inisi dari tu.u+ 5ungsi yang
mengikutinya2 <ungsi panggilan
adala+ pernyataan yang
melaksanakan 5ungsi terse.ut$
se+ingga diak+iri dengan titik koma
seperti pernyataan ABB lainnya2
<ungsi panggilan tidak ada dalam
da5tar$ dan jika program ini tidak ke
dalam 5ungsi$ tanda kurung yang
akan dikosongkan2
/alaupun program mulai
dijalankan pada program utama
3main4$ 5ungsi TampilPesan
dide5inisikan terle.i+ da+ulu2 9al ini
karena compiler +arus mengeta+ui
5ungsi dari jenis return$ jumla+
parameter$ dan setiap jenis
parameter se.elumnya yang
dipanggil2 Sala+ satu cara agar
compiler mengeta+ui in5ormasi ini
adala+ dengan menempatkan 5ungsi
%'>
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
de5inisi se.elum semua panggilan ke
5ungsi2
Per+atikan .agaimana program
diatas mengalir2 Dalam memulai$
tentu saja$ didalam 5ungsi utama2 !ila
panggilan ke TampilPesan yang
di+adapi$ program untuk ca.ang
yang .er5ungsi dan melakukan
pernyataan6nya2 Setela+ selesai
melaksanakan TampilPesan$
program ca.ang kem.ali ke 5ungsi
utama dan kem.ali dengan .aris
yang mengikuti 5ungsi panggilan2 9al
ini diilustrasikan pada gam.ar
di.awa+ ini2
5,i% 4a%piGe&an()
6
>out ?? B @@ Saa% 2eo dari Hung&i
4a%piGe&an!`nBA
8
it %ain()
6
>out ?? B2eo dari progra%
$ta%a!`nBA 4a%piGe&an()A
>out ?? Bke%bi ke .un&gi $ta%a agi!`nBA
get>(()A
.et*. 0A
8
;am.ar (2%2 7lustrasi <ungsi
Dalam menyatakan pemanggilan
<ungsi dapat menggunakan struktur
kendali seperti loop$ pernyataan 7<$
dan pernyataan switc+2 Program
di.awa+ merupakan program yang
melakukan pemanggilan 5ungsi
TampiPesan kedalam satu looping
Program (2%2
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% 4a%piGe&an()
6
2008 | Direktorat Pembinaan SMK
%'(
Bahasa Pemrograman Fungsi
>out ?? B @@ Saa% 2eo dari Hung&i 4a%piGe&an!`nBA
8
it %ain()
6
>out ?? B2eo dari progra% $ta%a!`nBA
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
7,. (it >ount ' 0A >ount ? *A >ount::)
4a%piGe&an()A // memanggil 1ungsi
0ampil'esan
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;`nBA
>out ?? Bke%bi ke .un&gi $ta%a agi!`nBA
get>(()A
.et*. 0A
8
Keluaran Programnya adala+:
2eo dari progra% $ta%a!
;;;;;;;;;;;;;;;;;;;;;;;;;
@@ Saa% 2eo dari Hung&i 4a%piGe&an!
@@ Saa% 2eo dari Hung&i 4a%piGe&an!
@@ Saa% 2eo dari Hung&i 4a%piGe&an!
@@ Saa% 2eo dari Hung&i 4a%piGe&an!
@@ Saa% 2eo dari Hung&i 4a%piGe&an!
;;;;;;;;;;;;;;;;;;;;;;;;;
ke%bi ke .un&gi $ta%a agi!
Setiap program dapat dimungkinkan
untuk memiliki .anyak 5ungsi atau
se.ua+ 5ungsi dalam se.ua+
program2 Program di.awa+ (2=2
di.awa+ ini memiliki tiga 5ungsi: yaitu
utama$ 5ungsi pertama dan 5ungsi
kedua2 ntuk le.i+ jelas per+atikan
program di.awa+ ini:
Program (2=
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% perta%a()
6
>out ?? B @@Saya &ekarang &edang di .ung&i Gerta%a!`nBA
8
5,i% kedua()
%'#
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
6
>out ?? B @@ Saya &ekarang &edang di .ung&i Kedua!`nBA
8
it %ain()
6
>out ?? BSaya &edang di progra% $ta%a!`nBA
perta%a()A // pemanggilan
fungsi pertama kedua()A
// pemanggilan fungsi kedua >out ?? BSaya
ke%bai ke Grogra% $ta%a!`nBA
get>(()A
.et*. 0A
8
Keluaran programnya adala+ se.agai .erikut:
Saya &edang di progra% $ta%a!
@@ Saya &ekarang &edang di .ung&i Gerta%a!
@@ Saya &ekarang &edang di .ung&i Kedua!
Saya ke%bai ke Grogra% $ta%a!
Dalam program diatas 5ungsi utama
terdiri dari pemanggilan 5ungsi
pertama dan kedua dengan instruksi
se.agai .erikut:
perta%a()A
kedua()A
Setiap panggilan pernyataan
menye.a.kan program untuk ca.ang
ke sala+ satu 5ungsi dan kemudian
kem.ali ke utama .ila 5ungsi selesai2
;am.ar di.awa+ menggam.arkan
jalan yang diam.il ole+ program
2008 | Direktorat Pembinaan SMK
%'@
Bahasa Pemrograman Fungsi
5,i% perta%a()
6
>out ?? B @@Saya &ekarang &edang di .ung&i Gerta%a!`nBA
8
5,i% kedua()
6
>out ?? B @@ Saya &ekarang &edang di .ung&i Kedua!`nBA
8
it %ain()
6
>out ?? BSaya &edang di progra% $ta%a!`nBA
perta%a()A
kedua()A
>out ?? BSaya ke%bai ke Grogra% $ta%a!`nBA
get>(()A
.et*. 0A
8
;am.ar (2=2 Pemanggilan le.i+ dari satu 5ungsi
Se.ua+ 5ungsi sering juga
dipanggil dalam dalam se.ua+
+irarki$ atau .erlapis2 Program
di.awa+ ini merupakan se.ua+
program yang memiliki tiga .ua+
5ungsi dimana 5ungsi terse.ut adala+
utama$ Agakdalam dan PalingDalam2
Kerja program terse.ut adala+ 5ungsi
palingdalam dipanggil ole+ 5ungsi
agakdalam dan kemudian 5ungsi
AgakDalam dipanggil ole+ 5ungsi
tama2 ntuk le.i+ jelasnya
per+atikan program di.awa+ ini:
Program (2?2
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% GaingDaa%()
6
>out ?? BSaya &ekarang &edang di daa% Hung&i GaingDaa%!`nBA
8
5,i% AgakDaa%()
%>-
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
6
>out ?? B&ekarang &aya &edang di Hung&i
AgakDaa%!`nBA GaingDaa%()A
// panggil 1ungsi
>out ?? BSekarang &aya Ke%bai ke Hung&i AgakDaa%!`nBA
8
it %ain()
6
>out ?? B&aya &ekarang &edang didaa%
Hung&i $ta%a!`nBA AgakDaa%()A
// 'anggil 1ungsi
>out ?? BSaya ke%bai ke .ung&i $ta%a Fagi!`nBA
get>(()A
.et*. 0A
8
Keluaran Program adala+ se.agai .erikut:
&aya &ekarang &edang didaa%
Hung&i $ta%a! &ekarang &aya &edang
di Hung&i AgakDaa%!
Saya &ekarang &edang di daa% Hung&i GaingDaa%!
Sekarang &aya Ke%bai ke Hung&i
AgakDaa%! Saya ke%bai ke .ung&i
$ta%a Fagi!
Dalam Program (2? diatas5ungsi
utama +anya memanggil 5ungsi
agakDalam2 Sedangkan 5ungsi
AgakDalam memanggil <ungsi
PalingDalam2 Program diatas adala+
memanggil 5ungsi dan kemudian
5ungsi yang dipanggil terse.ut
memnggil 5ungsi yang lain2 ntuk
le.i+ jelasnya per+atikan gam.ar
di.awa+ ini:
2008 | Direktorat Pembinaan SMK
%>"
Bahasa Pemrograman Fungsi
5,i% AgakDaa%()
6
>out ?? B&ekarang &aya &edang di Hung&i
AgakDaa%!`nBA GaingDaa%()A
// panggil 1ungsi
>out ?? BSekarang &aya Ke%bai ke Hung&i AgakDaa%!`nBA
8
5,i% GaingDaa%()
6
>out ?? BSaya &ekarang di daa% Hung&i GaingDaa%!`nBA
8
it %ain()
6
>out ?? B&aya &ekarang &edang didaa%
Hung&i $ta%a!`nBA AgakDaa%()A
// 'anggil 1ungsi
>out ?? BSaya ke%bai ke .ung&i $ta%a Fagi!`nBA
get>(()A
.et*. 0A
8
;am.ar (2?2 Pemanggilan 5ungsi didalam 5ungsi
-$*$ Prototi(e ung'i
Se.elum compiler menemukan
panggilan ke 5ungsi tertentu$ kita
+arus suda+ mengeta+ui .e.erapa
+al mengenai 5ungsi2 Secara k+usus$
kita +arus mengeta+ui jumla+
parameter yang digunakan ole+
5ungsi$ jenis parameter$ dan cara
atau jenis kem.alinya 5ungsi2 Se.ua+
parameter mem.ole+kan in5ormasi
untuk dikirim ke sala+ satu 5ungsi2
ntuk saat ini$ 5ungsi yang akan
digunakan .erupa 5ugsi yang tidak
memiliki parameter dan$ kecuali pada
5ungsi utama$ dan cara kem.alinya
menggunakan jenis void2 Sala+ satu
cara untuk memastikan .a+wa
compiler ini memiliki in5ormasi yang
diperlukan adala+ dengan
menempatkan 5ungsi yang tela+
dide5inisikan se.elum melakukan
panggilan ke 5ungsi terse.ut2 7ni
merupakan pendekatan yang diam.il
seperti +alnya dalam program (2"
sampai program (2? diatas2 Aara
lainnya adala+ adala+ dengan
menyatakan 5ungsi dengan 5ungsi
prototipe 3a function prototype42
!erikut ini adala+ prototipe untuk
5ungsi TampilPesan seperti dalam
Program (2" adala+ se.agai .erikut:
3oid 4a%piGe&an()A
Prototipe terse.ut diatas tampak
mirip dengan 5ungsi +eader$ kecuali
ada titik koma di.agian ak+ir2 Se.ua+
pernyataan 5ungsi akan
%>%
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
mem.erita+ukan ke compiler .a+wa
5ungsi TampilPesan memiliki tipe
kem.ali 3return4 void$ .erarti 5ungsi
terse.ut tidak mengem.alikan nilai
serta tidak menggunakan parameter2
Prototipe 5ungsi .iasanya
ditempatkan pada .agian atas pada
program se+ingga compiler akan
melakukan eksekusi terle.i+ da+ulu
se.elum 5ungsi terse.ut dipanggil2
Program (2' di.awa+ ini adala+
modi5ikasi dari program (2= diatas2
De5inisi 5ungsi pertama dan kedua
tela+ ditempatkan setela+ program
utama$ dan 5ungsi prototip tela+
ditempatkan diatas program utama
secara langsung setela+ pernyataan
name'(a/e 't%2 Per+atikan program
di.awa+ ini:
Program (2'2
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
//'rototipe
1ungsi 5,i%
perta%a()A
5,i% kedua()A
it %ain()
6
>out ?? BSaya &edang di progra% uta%a!`nBA
perta%a()A // memanggil
fungsi pertama kedua()A
// memanggil fungsi kedua >out ?? BKe%bai
daa% progra% uta%a agi!`nBA
get>(()A
.et*. 0A
8
5,i% perta%a()
6
>out ?? B&aya &ekarang didaa% Hung&i perta%a!`nBA
8
5,i% kedua()
6
>out ?? B&aya &ekarang didaa% Hung&i kedua!`nBA
8
Keluaran Program adala+ se.agai .erikut:
Saya &edang di progra% uta%a!
2008 | Direktorat Pembinaan SMK
%>=
Bahasa Pemrograman Fungsi
&aya &ekarang didaa% Hung&i
perta%a! &aya &ekarang
didaa% Hung&i kedua! Ke%bai
daa% progra% uta%a agi!
Ketika compiler sedang
mem.aca program utama diatas$
kemudian program utama terse.ut
melakukan panggilan ke 5ungsi
pertama dan kedua se.elum compiler
mem.aca de5inisi dari 5ungsi
terse.ut2 Karena +al terse.ut se.agai
5ungsi prototip$ compiler suda+
mengeta+ui jenis parameter kem.ali
pada in5ormasi 5ungsi pertama dan
kedua2 Se+ingga +arus ada prototipe
pada setiap 5ungsinya dalam se.ua+
program kecuali program utama2
Se.ua+ prototipe program ini tidak
perna+ diperlukan ole+ program
utama karena tela+ dilakukan pada
awal program2
-$+$ Pengiriman %ata (a%a ung'i
,ilai6nilai yang akan dikirim pada
se.ua+ 5ungsi dise.ut dengan
argument 3arguments42 Programmer
yang a+li .iasanya suda+ akra.
dengan cara menggunakan argumen
dalam pemanggilan 5ungsi2
Pernyataan .erikut ini merupakan
5ungsi pow dengan dua argumen
yang sedang melakukan panggilan %
dan ?2
re&ut ' poP(", #)A
Se.ua+ parameter merupakan
varia.el k+usus yang menangani nilai
yang dilewatkan se.agai argumen
menuju se.ua+ 5ungsi2 Dengan
menggunakan parameter$ kita dapat
merancang sendiri 5ungsi yang dapat
menerima data2 Program .erikut
merupakan de5inisi se.ua+ 5ungsi
yang menggunakan parameter:
5,i% 4a%piKiai(int nu%)
6
>out ?? BKiainya adaa( B ?? nu% ?? endA
8
Per+atikan integer num yng
digunakan untuk mende5inisikan
varia.el yang .erada dalam kurung
3int num42 Daria.el num adala+
parameter2 7nteger 7ni digunakan
untuk mem.uat 5ungsi Tampil,ilai
supaya menerima nilai integer
se.agai argumen2 Program (2>
di.awa+ merupakan conto+ yang
menggunakan 5ungsi Tampil,ilai2
Per+atikan program di.awa+ ini:
Program (2>2
%>?
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
//'rototipe 1ungsi
5,i% 4a%piKiai(it)A
it %ain()
6
>out ?? BSaya &edang %e%a&ukan * ke Hung&i
4a%piKiai!`nBA 4a%piKiai(*)A // Call
0ampil)ilai dengan argument 2 >out ??
BSekarang &aya &uda( ke%bai ke progra%
uta%a!`nBA get>(()A
.et*. 0A
8
5,i% 4a%piKiai(it nu%)
6
>out ?? BBe&ar niainya adaa(M B ?? nu% ?? endA
8
Keluaran programnya adala+ se.agai .erikut:
Saya &edang %e%a&ukan * ke Hung&i
4a%piKiai! Be&ar niainya adaa(M *
Sekarang &aya &uda( ke%bai ke progra% uta%a!
Dalam prototype 5ungsi terse.ut diatas yang perlu diper+atikan adala+ pada
Tampil,ilai:
3oid 4a%piKiai(int)A // Hun>tion prototype
Dalam 5ungsi terse.ut kita tidak
perlu memasukan da5tar parameter
yang merupakan varia.el dalam
tanda kurung$ dan +anya dengan
memasukan type data yang
diperlukan saja2 <ungsi ini dapat
prototype ini juga dapat ditulis
se.agai .erikut:
3oid 4a%piKiai(int nu%)A
<ungsi terse.ut diatas sangat
muda+ digunakan walaupun$
compiler menga.aikan nama varia.el
pada parameter 5ungsi prototype
terse.ut2 Dalam program utama$
5ungsi Tampi,ilai dise.ut dengan
argumen '$ dimana +al terse.ut
.erada dalam tanda kurung2 ,omor '
2008 | Direktorat Pembinaan SMK
%>'
Bahasa Pemrograman Fungsi
dimasukan kedalam varia.el num$
yang mana num merupakan
parameter Tampil,ilai2 ntuk le.i+
jelasnya mengenai +al terse.ut$
per+atikan gam.ar di.awa+ ini:
4a%piKiai(*)A
5,i% 4a%piKiai(it nu%)
6
>out ?? BBe&ar niainya adaa(M B ?? nu% ?? endA
8
;am.ar (2'2 <ungsi prototipe
Dengan meli+at gam.ar
terse.ut$ apapun argumen yang
tertulis dalam tanda kurung pada
panggilan 5ungsi akan dicopy
kedalam varia.le parameter 5ungsi2
Pada dasarnya$ parameter adala+
varia.el yang diinisialisasi menjadi
nilai sesuai argument yang
.er+u.ungan2 Program (2( di.awa+
menunjukkan .a+wa 5ungsi
Stampil,ilai dapat dipanggil .e.erapa
kali dengan alasan sesuai masing6
masing kegunaannya2
Program (2(2
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
//'rototipe 1ungsi
5,i% 4a%piKiai(it)A
it %ain()
6
>out ?? BSaya &edang %engi&ikan beberapa niai pada
4a%piKiai!`nBA 4a%piKiai(*)A // 'anggil 0ampil)ilai
dengan argument 2
4a%piKiai(10)A // 'anggil 0ampil)ilai dengan argument &/
4a%piKiai(")A // 'anggil 0ampil)ilai dengan argument (
4a%piKiai(1,)A // 'anggil 0ampil)ilai dengan argument &3
>out ?? B&ekarang &aya ke%bai!`nBA
%>>
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
get>(()A
.et*. 0A
8
5,i% 4a%piKiai(it nu%)
6
>out ?? BKiainya adaa( B ?? nu% ?? endA
8
Keluaran programnya Adala+ se.agai .erikutN
Saya &edang %engi&ikan beberapa niai pada
4a%piKiai! Kiainya adaa( *
Kiainya adaa( 10
Kiainya adaa( "
Kiainya adaa( 1,
&ekarang &aya
ke%bai!
Setiap kali se.ua+ 5ungsi dalam
program diatas terse.ut dipanggil$
varia.el num akan mengam.il nilai
yang .er.eda2 Setiap ekspresi 5ungsi$
nilai akan di.erikan kedalam num
yang digunakan se.agai argumen2
Se.agai conto+$ panggilan 5ungsi
.erikut digunakan untuk memasukan
nilai # kedalam varia.el num:
Tampil,ilai3= B '4N
)ika kita memasukan jenis
argumen yang tidak sama dengan
jenis parameter$ argumen terse.ut
akan digunakan secara otomatis2
*isalnya$ jika Tampil,ilai dari se.ua+
parameter adala+ .ertipe integer$
argumen pada pemanggilan 5ungsi
akan dipotong$ se+ingga nilai ? akan
dimasukan ke vari.el num:
Tampil,ilai 3?2(4N
Seringkali +al terse.ut .erguna untuk
digunakan ole+ .e.erapa argumen
dalam se.ua+ 5ungsi2 Program
di.awa+ ini menunjukkan se.ua+
5ungsi dari 5ungsi yang memiliki tiga
.ua+ parameter2
Program (2#2
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
2008 | Direktorat Pembinaan SMK
%>(
Bahasa Pemrograman Fungsi
//'rototipe 1ungsi
5,i% 4a%ba(an(it, it, it)A
it %ain()
6
it 3aue1, 3aue", 3aue1A
>out ?? B)a&ukan 4iga biangan Integer& dan &aya akan %ena%pikan
BA
>out ?? BGen-u%a(anM BA
>in @@ 3aue1 @@ 3aue" @@ 3aue1A
4a%ba(an(niai1, niai", niai1)A // Call 0ambahan dengan 4 arguments5
get>(()A
.et*. 0A
8
5,i% 4a%ba(an(it nu%1, it nu%", it nu%1)
6
>out ?? (nu%1 : nu%" : nu%1) ?? endA
8
Keluaran Programnya adala+ se.agai .erikutN
)a&ukan 4iga biangan Integer& dan &aya akan %ena%pikan
Gen-u%a(anM # * ,
1*
Dalam +eader 5ungsi Tam.a+an$
da5tar parameter .erisi tiga de5inisi
varia.el yang dipisa+kan ole+ koma
adala+ se.agai .erikut:
3oid 4a%ba(an(int nu%1, int nu%", int nu%1)
9al yang perlu diper+atikan
pada setiap varia.el yaitu +arus
memiliki tipe data yang namanya
se.elum tela+ tertulis2 Error pada
compiler akan terjadi jika da5tar
parameter yang dinyatakan se.agai
int num"$ num%$ num= ternyata
.ukan int num"$ int num%$ int num=2
Dalam pemanggilan 5ungsi$
se.ua+ varia.el nilai"$ nilai% dan
nilai = dapat digunakan se.agai
argument:
4a%ba(an(niai1, niai", niai1)A
Potongan program diatas jika
diper+atikan ada per.edaan antara
+eader 5ungsi dan panggilan 5ungsi
saat melewati varia.el se.agai
argumen menjadi parameter2 Dalam
panggilan 5ungsi$ kita tidak dapat
menyertakan varia.el jenis data
didalam tanda kurung2 Per+atikan
potongan program di.awa+ ini:
%>#
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
4a%ba(an(int niai1, int niai", int niai1)A
Ketika se.ua+ 5ungsi dengan
.e.erapa parameter dise.ut$
argumen akan dimasukan kedalam
parameter yang di pesan2 9al
terse.ut dapat digam.arkan seperti
gam.ar di.awa+ ini2
4a%ba(an(niai1, niai", niai1)A
5,i% 4a%ba(an(it nu%1, it nu%", it nu%1)
6
>out ?? (nu%1 : nu%" : nu%1) ?? endA
8
;am.ar (2>2 <ungsi dengan .e.erapa Parameter
<ungsi di.awa+ ini akan
menye.a.kan nilai ' dimasukan
kedalam parameter num"$ nilai "-
dimasukan ke dalam num%$ dan "'
dimasukan kedalam num=2 ntuk
le.i+ jelasnya per+atikan instruksi
di.awa+ ini:
&(oPSu%(*, 10, 1*)A
meskipun pemanggilan 5ungsi .erikut
ini akan menye.a.kan "' yang
dimasukan kedalam parameter
num"$ ' dimasukan ke dalam num%$
dan nilai "- akan dimasukan kedalam
num=:
4a%ba(an(1*, *, 10)A
-$,$ Pa''ing Data b3 Halue
Parameter k+usus merupakan
varia.el tujuan yang ditentukan
didalam tanda kurung dari de5inisi
5ungsi2 Tujuan parameter terse.ut
adala+ untuk menyampaikan
in5ormasi yng dilakukan ole+
argumen dan tercantum dalam tanda
kurung pada panggilan 5ungsi2
Secara umum$ ketika in5ormasi
disampaikan kedalam 5ungsi dise.ut
2008 | Direktorat Pembinaan SMK
%>@
Bahasa Pemrograman Fungsi
passed by value2 9al ini .erarti
parameter menerima copy dari nilai
yang disampaikan kepadanya2
)ika se.ua+ parameter nilai
.eru.a+ didalam 5ungsi maka +al
terse.ut tidak mempengaru+i pada
argumen yang asli2 Per+atikan
program di.awa+ ini yang
menunjukkan konsep mengenai
passed by value2
Program (2@2
in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% >(ange4(e%(it, %,*b-e)A
it %ain()
6
it P(oe ' 1"A
%,*b-e rea ' 1!*A
>out ?? Bdaa% niai %ain adaIa(B ?? P(oe ?? endA
>out ?? Bdan niai rea adaa(B ?? rea ?? end ?? endA
>(ange4(e%(P(oe, rea)A // memanggil change0hem dengan (
arguments
>out ?? B&ekarang ke%bai daa% %ain agi, niainya adaa( BA
>out ?? B&e%uanya %a&i( B ?? P(oe ?? endA
>out ?? Bdan niai rea adaa( %a&i(B ?? rea ?? endA
.et*. 0A
8
5,i% >(ange4(e%(it i, %,*b-e d)
6
i ' 100A
d ' "+!*A
>out ?? Bdaa% Hung&i >(ange4(e% niainya diuba( %en-adi BA
>out ?? i ?? endA
>out ?? Bdan niainya diuba( %en-adi B ?? d ?? end ?? endA
8
Pada program diatas walaupun
parameter i dan 5 .eru.a+ dalam
5ungsi c+angeT+em$ kenyataannya
seluru+ argumen tidak diu.a+2
Parameter i dan 5 +anya .erisi
salinan keseluru+an dan nyata2
5ungsi A+angeT+em tidak memiliki
akses ke argumen se.elumnya
3original42 ;am.ar di.awa+
menunjukan .a+wa varia.el
%(-
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
parameter disimpan dalam lokasi
memori yang terpisa+ dari argumen
yang asli2 Per+atikan gam.ar .erikut
ini:
Argumen A'li
"&
ung'i Parameter
"&
;am.ar (2(2 Daria.el parameter yang disimpan dalam memori
-$-$ Pern3ataan Kembali
!ila pernyataan terak+ir dalam
5ungsi tela+ selesai eksekusi$ 5ungsi
akan diak+iri2 Program akan kem.ali
ke modul yang dipanggil dan
meneruskan eksekusi dari titik
dimana panggilan 5ungsi dilakukan
se.elumnya2 9al sangat
dimungkinkan$ meskipun sala+ satu
5ungsi memaksa untuk kem.ali
ketempat dimana pernyataan terak+ir
dari program se.elumnya yang
dieksekusi2 Ketika menemui
pernyataan kem.ali$ 5ungsi dengan
segera diak+iri dan menuju program
semula2 9al ini seperti ditunjukkan
dalam Program di.awa+2 5ungsi .agi
digunakan untuk menunjukkan +asil
pem.agian dari arg" di.agi arg%2 )ika
arg% diatur ke nol$ 5ungsi akan
kem.ali tanpa melakukan
pem.agian$ karena operasi
pem.agian tidak mungkin dilakukan2
Program (2"-2
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% di3ide(%,*b-e, %,*b-e)A
it %ain()
6
%,*b-e nu%1, nu%"A
>out ?? B%a&ukan dua angka yang akan dibagi `nBA
>out ?? Bangka yang keduaM BA
2008 | Direktorat Pembinaan SMK
%("
Bahasa Pemrograman Fungsi
>in @@ nu%1 @@
nu%"A
di3ide(nu%1,
nu%")A .et*. 0A
8
5,i% di3ide(%,*b-e arg1, %,*b-e arg")
6
i7 (arg" '' 0!0)
6
>out ?? B%aaH, tidak bi&a dibagi dengan biangan no!`nBA
.et*.A
8
>out ?? B-aPabanya adaa(M B ?? (arg1 / arg") ?? endA
8
-$2$ Mengembalikan Nilai %ari ung'i
Dari program diatas kita tela+
meli+at .a+wa in5ormasi dapat
dilewatkan menjadi sala+ satu 5ungsi
ole+ se.ua+ parameter2 7n5ormasi
juga dapat dikem.alikan dari 5ungsi$
kem.ali menuju program yang
memanggilnya2 /alaupun .e.erapa
argumen dapat dimasukan menjadi
sala+ satu 5ungsi$ +anya ada satu
nilai yang dapat dikem.alikannya2
Sesuatu dari 5ungsi memiliki
.e.erapa saluran komunikasi untuk
menerima data 3parameter4$ tetapi
+anya satu saluran untuk mengirim
data 3return value42
9al terse.ut dapat digam.arkan
seperti di.awa+ ini:
Argumen
Argumen
Argumen
Argumen
<ungsi ,ilai Kem.ali
;am.ar (2#2 <ungsi dengan saluran .e.erapa data 3parameter4
Dalam rangka untuk
mengem.alikan nilai6nilai dari
.e.erapa 5ungsi$ mereka +arus
adi.uat paketa se+ingga mereka
dianggap se.agai satu nilai2 Tipe
data nilai kem.ali mengawali 5ungsi
dengan nama +eader 5ungsi dan
prototipe2 !erikut ini menyatakan
prototipe 5ungsi dengan nama
persegi yang menerima se.ua+
%(%
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
argumen integer dan
mengem.alikannya menjadi integer:
it per&egi(int)A
instruksi diatas dapat dide5inisikan
dalam 5ungsi se.agai .erikut:
int per&egi(int nu%ber)
6
return nu%ber E nu%berA
8
<ungsi terse.ut +anya memiliki
satu .aris yang merupakan
pernyataan kem.ali2 !ila nilai 5ungsi
kem.ali$ maka +al terse.ut +arus
memiliki pernyataan kem.ali2
ngkapan yang mengikuti kata kunci
akan dievaluasi$ dikonversikan ke
tipe data 5ungsi kem.ali$ dan dikirim
kem.ali program yang memanggil
5ungsi terse.ut2 ntuk le.i+ jelasnya
per+atikan Program di.awa+ ini:
Program (2""
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it per&egi(it)A
it %ain()
6
it nu%ber, re&utA
>out ?? B)a&ukan angka yang akan diakarkanM BA
>in @@ nu%berA
(a&i ' per&egi (nu%ber)A
>out ?? nu%ber ?? B 2a&inya adaa( B ?? (a&i ?? endA
.et*. 0A
8
it per&egi(it nu%ber)
6
.et*. nu%ber E nu%berA
8
Di.awa+ ini merupakan se.ua+ .aris memanggil 5ungsi persegi:
(a&i ' per&egi (nu%ber)A
Se.ua+ ekspresi adala+ sesuatu
yang memiliki nilai2 )ika suatu 5ungsi
mengem.alikan nilai$ panggilan ke
5ungsi merupakan se.ua+ ekspresi2
Pernyataan diatas mem.erikan nilai
kem.ali dari persegi ke varia.el +asil2
2008 | Direktorat Pembinaan SMK
%(=
-- it
p
6
er&egi(it nu%ber)
.et*. nu%ber E
nu%berA 8
Bahasa Pemrograman Fungsi
)adi$ ketika nilai %- dinyatakan
se.agai argumen persegi$ %- kali %-$
atau ?--$ dan dikem.alikan ke +asil
yang ditugaskan2 ;am.ar di.awa+ ini
menggam.arkan .agaimana se.ua+
in5ormasi disampaikan ke dan
kem.ali dari 5ungsi2
(a&i ' per&egi (nu%ber)A
%-
?
;am.ar (2@2 Penyampaian in5ormasi dari 5ungsi
Se.enarnya dalam program diatas$
varia.le +asil adala+ varia.el yang
tidak penting2 Adanya nilai pada
5ungsi persegi tela+ ditampilkan
menggunakan cout o.jek$ seperti
ditunjukkan .erikut di.awa+ ini:
>out ?? nu%ber ?? B per&egi adaa( B ?? per&egi(nu%ber) ?? endA
Dari program diatas kita suda+
mengeta+ui .agaimana nilai
dikem.alikan ole+ 5ungsi dan
ditempatkan ke varia.el atau dicetak2
Program terse.ut diatas )uga
memungkinkan untuk menggunakan
nilai yang dikem.alikan ole+ 5ungsi
se.agai peng+u.ung dalam
pengujian se.ua+ ekspresi
aritmatika2 Per+atikan conto+ .erikut
yang menggunakan dua pernyataan
yang sempurna:
iH (per&egi(nu%ber) @ 100)
>out ?? Bper&egi be&ar`nBA
&u% ' 1000 : per&egi (nu%ber)A
Program di.awa+ menunjukkan versi
dari 5ungsi persegi yang kem.ali
sen.agai du.le2 <ungsi terse.ut
digunakan dalam pernyataan
matematis untuk meng+itung daera+
lingkaran2 Program di.awa+ juga
menggunakan 5ungsi getRadius
untuk mendapatkan radius lingkaran
dari pengguna dan kem.ali ke nilai
utama2
Program (2"%
=in>ude ?io&trea%@
=in>ude ?io%anip@
%(?
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
*+i! "#e+(")e &tdA
%,*b-e get/adiu&()A
%,*b-e &Xuare(%,*b-e)A
it %ain()
6
),+t %,*b-e GI ' 1!1#1*7A
%,*b-e radA
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(")A
>out ?? BGrogra% ini untuk %eng(itung ua& ingkaran!`nBA
rad ' get/adiu&()A
>out ?? BFua&nya adaa(M B ?? GI E &Xuare(rad) ?? endA
.et*. 0A
8
%,*b-e get/adiu&()
6
%,*b-e radiu&A
>out ?? B%a&ukan -ari;-ari ingkaranM BA
>in @@ radiu&A
.et*. radiu&A
8
%,*b-e &Xuare(%,*b-e nu%ber)
6
.et*. nu%ber E nu%berA
8
<ungsi Persegi dalam Program
(2"" merupakan se.ua+ integer$
sedangkan pada program (2"%
adala+ 5ungsi ganda2 Aara kem.ali
jenis 5ungsi +arus merupakan jenis
data yang diinginkan untuk kem.ali
dari 5ungsi2 )ika 5ungsi kem.ali ke
nilai ganda yang sedang ditugaskan
ke varia.el$ maka varia.el terse.ut
+arus juga menjadi dua kali lipat2 )ika
dua nilai dikem.alikan ole+ 5ungsi
persegi seperti pada program (2"%
maka akan ditugaskan ke sala+ satu
varia.el integer$ se+ingga nilai akan
dipotong2 9al ini diilustrasikan dalam
conto+ program .erikut:
int
re&utA
re&ut '
&Xuare("!+)A
2008 | Direktorat Pembinaan SMK
%('
Bahasa Pemrograman Fungsi
-$4$ Pengembalian Nilai Boolean
!iasanya ada sesuatu yang
di.utu+kan 5ungsi untuk menguji
argumen dan akan mengem.alikan
nilai .enar atau sala+ serta
mengindikasikan kondisi yang ada2
*isalnya$ dalam se.ua+ program
yang mem.utu+kan sesuatu untuk
mengeta+ui apaka+ nomor genap
atau ganjil$ se.ua+ 5ungsi dapat
ditulis kem.ali dengan .enar jika
argument genap dan 5alse jika
argumen yang ganjil2 ntuk le.i+
jelasnya per+atikan program di.awa+
ini:
Program (2"=
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
b,,- i&<3en(it)A
it %ain()
6
it 3aA
>out ?? B%a&ukan biangan integer MBA
>out ?? B-ika gan-i atau genap M BA
>in @@ 3aA
i7 (i&<3en(3a))
>out ?? 3a ?? Badaa( genap!`nBA
e-+e
>out ?? 3a ?? B adaa( gan-i!`nBA
.et*. 0A
8
b,,- i&<3en(it nu%ber)
6
i7 (nu%ber R ")
.et*. 7"-+eA // 6ilangan adalah ganjil
e-+e
.et*. t.*eA // bilangan adalah genap5
8
Keluaran Program adala+ se.agai .erikut:
%a&ukan biangan integer M *N<nterO
* adaa( gan-i!
%(>
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
Se.ua+ 5ungsi isEven dise.ut dalam
pernyataan di.awa+ ini:
iH (i&<3en(3a))
ketika pernyatasan 7< dieksekusi$
isEven dise.ut dengan val se.agai
argument2 )ika val genap$ isEven
adala+ .enar dan se.aliknya akan
sala+2
-$"5$ Menggunakan ung'i %alam (rogram menu
Dalam se.elumnya kita meli+at
menu6driven program yang
meng+itung .iaya kese+atan untuk
anggota klu.2 Program (2"? di.awa+
adala+ untuk meningkatkan modular
versi program2 Per+atikan .agaimana
setiap 5ungsi$ atau modul$ yang
dirancang untuk melakukan tugas
tertentu2
Program (2"?
=in>ude ?io&trea%@
=in>ude ?io%anip@
=in>ude ?&tring@
*+i! "#e+(")e &tdA
// 1unction prototypes
5,i% di&pay)enu()A
it getC(oi>e()A
5,i% >o%pute.ee&(&tring, %,*b-e, it)A
),+t %,*b-e AD$F4W/A4<
' #0!00, S<KIO/W/A4< '
10!00,
C2IFDW/A4< ' "0!00A
it %ain()
6
it
>(oi>e,
%ont(&A
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(")A
%,
6 di&pay)enu()A
>(oi>e ' getC(oi>e()A
i7 (>(oi>e _' #)
6
2008 | Direktorat Pembinaan SMK
%((
Bahasa Pemrograman Fungsi
>out ?? Bberapa -u%a( banyaknya buanMD BA
>in @@ %ont(&A
+Git)h (>(oi>e)
6
)"+e 1M >o%pute.ee&(BDePa&aB, AD$F4W/A4<, %ont(&)A
b.e"'A
)"+e "M >o%pute.ee&(BAnakB, C2IFDW/A4<, %ont(&)A
b.e"'A
)"+e 1M >o%pute.ee&(BSeniorB, S<KIO/W/A4<, %ont(&)A
8
8
8 Ghi-e (>(oi>e _' #)A
.et*. 0A
8
5,i% di&pay)enu()
6
>out ?? B`n%enu keanggotaan kub ke&e(atan `n`nBA
>out ?? B1! Keanggotaan dePa&a `nBA
>out ?? B"! Keangotaan anak`nBA
>out ?? B1! &enior`nBA
>out ?? B#! Keuar`n`nBA
8
it getC(oi>e()
6
it >(oi>eA
>in @@ >(oi>eA
Ghi-e (>(oi>e ? 1 ff >(oi>e @ #)
6
>out ?? Bpii(an (anya no 1 d # tekan enter! BA
>in @@ >(oi>eA
8
.et*. >(oi>eA
8
5,i% >o%pute.ee&(&tring %e%ber4ype, %,*b-e rate, it %ont(&)
6
>out ?? end
?? Btipe keanggotaanM B ?? %e%ber4ype ?? B B
?? Bbayaran perbuan /pB ?? rate ?? end
?? BCu%a( buanMB ?? %ont(& ?? end
%(#
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
?? B4otaM/p!B?? (rate E %ont(&)
?? end ?? endA
8
Yang perlu diper+atikan adala+
5leksi.ilitas dari 5ungsi compute<ees$
yang dise.ut pada tiga tempat yang
.er.eda6.eda dengan pernyataan
switc+2 9al ini disampaikan tiga
argumen: string memegang jenis
keanggotaan$ dou.le memegang
.iaya .ulanan untuk jenis
keanggotaan$ dan integer memegang
jumla+ tagi+an per .ulan2
Tanpa argumen$ kita akan
menetapkan sesuatu yang diperlukan
keseluru+an 5ungsi: satu untuk
meng+itung .iaya keanggotaan
dewasa$ anak yang lain untuk
meng+itung .iaya keanggotaan$ dan
ketiga untuk meng+itung .iaya
keanggotaan senior2 Karena kita
dapat in5ormasi yang .er.eda lulus
se.agai argumen ke 5ungsi terse.ut$
namun$ kami mampu mem.uat satu
tujuan umum65ungsi yang .ekerja
untuk semua tiga kasus2
-$""$ Hariabel Eokal %an Global
Seperti yang tela+ ditetapkan
.a+wa varia.el didalam 5ungsi
utama$ Anda juga dapat menetapkan
5ungsi di dalam 5ungsi65ungsi lainnya2
Daria.el yang ditetapkan dalam
5ungsi lokal ke 5ungsi2 *ereka
tersem.unyi dari pernyataan dalam
5ungsi lainnya$ yang .iasanya tidak
.isa mengaksesnya2 Program (2"'
menunjukkan .a+wa varia.el yang
ditetapkan dalam suatu 5ungsi yang
tersem.unyi$ dimana 5ungsi lainnya
mungkin tela+ terpisa+$ .er.eda
varia.el dengan nama yang sama2
Program (2"'
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% anot(er.un>tion()A
it %ain()
6
it nu% ' 1A
>out ?? BDaa% progra% utat%a,nu% adaa(M B ?? nu% ?? endA
anot(er.un>tion()A
>out ?? BKe%bai daa% progra% uta%a, nu% %a&i(B ?? nu% ??
endA
.et*. 0A
8
2008 | Direktorat Pembinaan SMK
%(@
Bahasa Pemrograman Fungsi
5,i% anot(er.un>tion()
6
it nu% ' "0A // ariabel 7ocal
>out ?? BDaa% anot(er.un>tion, nu% adaa(M B ?? nu% ?? endA
8
Keluaran Program adala+ se.agai .erikut:
Daa% progra% utat%a,nu% adaa(M 1
Daa% anot(er.un>tion, nu% adaa(M "0
Ke%bai daa% progra% uta%a, nu% %a&i( 1
*eskipun terdapat dua varia.el
num$ program ini +anya .isa
ameli+ata sala+ satu dari mereka
setiap saat2 Ketika program
dijalankan dalam program utama$
yang dide5inisikan pada varia.el num
akan terli+at pada program utama2
Ketika anot+er<unction dise.ut
se.agai varia.el yang ditetapkan
didalamnya akan terli+at$ se+ingga
dalam varia.el num program utama
tersem.unyi2 Per+atikan program
yang mengilustrasikan si5at tertutup
dari dua 5ungsi$ dimana .entuk kotak
mewakili lingkup varia.el
.ung&i %ain
Int nu% '
1A
Lariabe nu% (anya
teri(at pada progra%
uta%a
.ung&i anot(er.un>tion
int nu% '
"0A
Lariabe nu% (anya
teri(at pada
anot(er.un>tion
;am.ar (2"-2 Dua <ungsi yang mempunyai si5at tertutup$
Se.ua+ :okal varia.el dapat
dikatakan se.agai varia.le yang
aman dan tersem.unyi dari 5ungsi
lain$ tetapi varia.le ini tidak
menyediakan cara yang muda+ untuk
.er.agi data2 )ika sejumla+ .esar
data +arus dapat diakses ole+ semua
5ungsi dalam program$ varia.el glo.al
dapat digunakan se.agai alternati5
muda+2 Se.ua+ varia.el glo.al
merupakan varia.el yang ditetapkan
diluar ole+ semua 5ungsi dalam
se.ua+ program2 Program (2">
menunjukkan dua .ua+ 5ungsi utama
dan anot+er<unction$ dimana
menggunakan akses yang sama
yaitu varia.el glo.al num2
%#-
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
Program (2">
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% anot(er.un>tion()A // 1ungsi prototipe
it nu% ' "A // ariabel 8lobal
it %ain()
6
>out ?? Bdaa% progra% uta%a, nu% adaa(B ?? nu% ?? endA
anot(er.un>tion()A
>out ?? Bke%bai dari progra% uta%a, nu% adaa(B ?? nu% ??
endA
.et*. 0A
8
5,i% anot(er.un>tion()
6
>out ?? Bdaa% Hung&i anot(er.un>tion, nu% adaa( B ?? nu% ??
endA
nu% ' *0A
>out ?? Btetapi, &ekarang tea( diuba( %en-adi B ?? nu% ?? endA
8
Dalam Program (2"> diatas$
varia.el num dide5inisikan diluar
semua 5ungsi2 Karena muncul
se.elum de5inisi pada program utama
dan anot+er<unction$ maka
keduanya memiliki akses ke 5ungsi
terse.ut2
Program (2"(
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it gobaKu%A // ariabel 8lobal5 Otomatis
diatur ke null5
it %ain()
6
>out ?? BgobaKu% adaa( B ?? gobaKu% ?? endA
.et*. 0A
8
2008 | Direktorat Pembinaan SMK
%#"
Bahasa Pemrograman Fungsi
)ika se.ua+ 5ungsi memiliki varia.el
lokal dengan nama yang sama
se.agai varia.el glo.al$ varia.el lokal
+anya dapat dili+at ole+ 5ungsi2 9al
ini ditunjukkan ole+ Program di.awa+
ini:
Program (2"#
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
// 1unsi prototipe
5,i% teYa&()A
5,i% arkan&a&()A
it >oP& ' 10A //ariabel global
it %ain()
6
>out ?? BDi&ana banyak B ?? >oP& ?? B ),G+ di progra% uta%a!`nBA
teYa&()A
arkan&a&()A
>out ?? BKe%bai daa% progra% uta%a, di&ana banyakB ?? >oP&
?? B >oP&!`nBA
.et*. 0A
8
5,i% teYa&()
6 it >oP& ' 100A //ariabel 7ocal
>out ?? Bdi&ana B ?? >oP& ?? B >oP& di teYa&!`nBA
8
5,i% arkan&a&()
6 it >oP& ' *0A // ariabel 7ocal
>out ?? B4(ere are B ?? >oP& ?? B >oP& in arkan&a&!`nBA
8
Ketika program diatas sedang
menjalankan 5ungsi utama$ varia.el
glo.al cows akan terli+at2 Dalam
5ungsi te&as dan Arkansas$ meskipun
ada varia.el lokal dengan nama
cows2 Daria.el glo.al tidak terli+at
ketika program sedang menjalankan
5ungsi mereka2 program di.awa+
merupakan program untuk menda5tar
dan program ini menggunakan
varia.el glo.al dan lokal2 <ungsi
ringpSale meng+itung dan
menampilkan +arga$ pajak penjualan$
dan su.total untuk setiap item yang
di.eli2 *emiliki varia.el lokal$ pajak$
yang memiliki nama yang sama
%#%
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
seperti varia.el glo.al2 Pajak pada
ringpSale varia.el yang digunakan
untuk meng+itung pajak penjualan
pada item$ sementara glo.al pajak
varia.el yang digunakan ole+
program utama untuk meng+itung
total pajak penjualan pada
pem.elian2 Supaya le.i+ jelas$
per+atikan program di.awa+ ini:
Program (2"@
=in>ude ?io&trea%@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
5,i%
ring$pSae()A
// 1ungsi prototipe
),+t %,*b-e 4A9W/A4<
' 0!0,A
%,*b-e taY, &ae, totaA
// ariabel 8lobal
it %ain()
6
)h". againA
>out ?? 5Yed ?? &(oPpoint ?? &etpre>i&ion(")A
%,
6
ring$pSae()A
>out ?? BApaka( di&ana ada ada &e&uatu yang dapat di-uaD BA
>in @@ againA
8
Ghi-e (again '' aya ff again '' a\a)A
taY ' &ae E 4A9W/A4<A
tota ' &ae : taYA
>out ?? B`nGa-ak pen-uaannya adaa( B ??
taY ?? endA >out ?? B4ota Ge%bayaran
adaa( B ?? tota ?? endA .et*. 0A
8
5,i% ring$pSae()
6 //9ariabel 7ocal
it XtyA
%,*b-e unitGri>e, taY, t(i&Sae, &ub4otaA
>out ?? B`nCu%a(M BA
2008 | Direktorat Pembinaan SMK
%#=
Bahasa Pemrograman Fungsi
>in @@ XtyA
>out ?? B2arga per &atuanM BA
>in @@ unitGri>eA
t(i&Sae ' Xty E unitGri>eA // total harga unit
&ae :' t(i&SaeA // +pdate ariabel
global penjualan taY ' t(i&Sae E 4A9W/A4<A //
pembayaran pajak untuk item &ub4ota ' t(i&Sae
: taYA // subtotal untuk tiap item
>out ?? B(arga untuk tiap ite%MB ?? t(i&Sae ?? endA
>out ?? Bpa-ak untuk tiap ite%M B ?? taY ?? endA
>out ?? BSub4ota untuk tiap ite%M B ?? &ub4ota ?? endA
8
-$"&$ Hariabel Stati/ Eo/al
)ika suatu 5ungsi dipanggil le.i+
dari satu kali dalam se.ua+ program$
maka nilai yang disimpan dalam
5ungsi se.agai varia.el lokal tidak
akan kuat mena+an panggilan 5ungsi2
9al ini dise.a.kan karena varia.el6
2
Program (2%-
=in>ude
?io&trea%@
varia.el yang +ancur ketika 5ungsi
diak+iri dan kemudian kem.ali di.uat
.ila 5ungsi suda+ dimulai lagi2 9al ini
ditunjukkan dalam Program (2%-
di.awa+ ini:
*+i! "#e+(")e &tdA
// 1ungsi prototipe
5,i% &(oPFo>a()A
it %ain()
6
&(oPFo>a
()A
&(oPFo>a
()A .et*.
0A
8
5,i% &(oPFo>a()
6
it o>aKu% ' *A //ariabel 7ocal
>out ?? Bo>aKu% adaa- B ?? o>aKu% ?? endA
o>aKu% ' 77A
%#?
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
8
Keluaran Program adala+ se.agai .erikut:
o>aKu%
i& *
o>aKu%
i& *
/alaupun pernyataan terak+ir
dalam 5ungsi s+ow:ocal took @@ pada
local,um$ varia.el yang +ancur .ila
5ungsi kem.ali2 Pada saat 5ungsi
terse.ut dipanggil$ local,um akan
recreated dan diinisialisasi ke ' lagi2
Kadang6kadang keinginan untuk
se.ua+ program untuk amengingata
adala+ nilai yang disimpan dalam
varia.el lokal antara 5ungsi
panggilan2 9al ini dapat dicapai
dengan mem.uat varia.el statis2
varia.el Static adala+ varia.le lokal
yang tidak +ancur .ila 5ungsi kem.ali2
*ereka ada untuk seluru+ masa
program$ walaupun mereka +anya
lingkup 5ungsi mereka yang
ditetapkan2 Program (2%"
menunjukkan .e.erapa karakteristik
statik lokal varia.el2
Program (2%"
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
// 1ungsi prototipe
5,i% &(oPStati>()A
it %ain()
6
7,. (it >ount ' 0A >ount ? *A >ount::)
&(oPStati>()A
.et*. 0A
8
5,i% &(oPStati>()
6
+t"ti) it &tatKu%A // Static local ariable
>out ?? B&tatKu% adaa(B ?? &tatKu% ?? endA
&tatKu%::A
8
Program diatas terdapat varia.el
stat,um adala+ di tam.a+kan
dengan satu 3incremented4 pada
5ungsi s+owStatic$ dan tetap dengan
nilai antara setiap panggilan 5ungsi2
Per+atikan .a+wa walaupun tidak
2008 | Direktorat Pembinaan SMK
%#'
Bahasa Pemrograman Fungsi
secara eksplisit stat,um diinisialisasi$
dimulai pada nol2 Seperti varia.el
glo.al adala+ varia.el lokal statik
diinisialisasi ke nol secara de5ault2
)ika Anda mem.erikan nilai
initialiQation statis varia.el lokal$
+anya dilakukan sekali initialiQation2
9al ini .iasanya terjadi karena
varia.el inisialisasi di.uat$ dan
varia.el lokal statik +anya di.uat
sekali saat menjalankan se.ua+
program2 program di.awa+ +anya
sedikit modi5ikasi2
Program -$&&
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% &(oPStati>()A
it %ain()
6
7,. (it >ount ' 0A >ount ? *A >ount::)
&(oPStati>()A
.et*. 0A
8
5,i% &(oPStati>(5,i%)
6
+t"ti) it &tatKu% ' *A
>out ?? B&tatKu% adaa( B ?? &tatKu% ?? endA
&tatKu%::A
8
Keluaran program diatas adala+ se.agai .erikut:
&tatKu%
adaa( *
&tatKu%
adaa( ,
&tatKu%
adaa( +
&tatKu%
adaa( 8
&tatKu%
adaa( 7
/alaupun pernyataan yang
digunakan utuk mende5inisikan
inisialisasi stat,um ke '$ initialiQation
tidak terjadi pada setiap kali 5ungsi
dipanggil2 )ika tidak$ varia.el y tidak
dapat memperta+ankan nilai6nya
antara 5ungsi panggilan2
%#>
Direktorat Pembinaan SMK | 2008
Fungsi Bahasa Pemrorgraman
-$"&$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan 5ungsi pada pemrograman komputer
%2 Apaka+ alasanya menggunakan 5ungsi
=2 )elaskan cara pemanggilan 5ungsi didalam se.ua+ 5ungsi
?2 Apaka+ yang dimaksud dengan argumen
'2 Apaka+ per.edaan antara 5ungsi dengan prosedur
>2 !uatla+ program seder+ana menggunakan 5ungsi untuk mencari .ilangan
genap antara " sampai dengan "-
2008 | Direktorat Pembinaan SMK
%#(
Bahasa Pemrograman Fungsi
%##
Direktorat Pembinaan SMK | 2008
perasi "tring Bahasa Pemrorgraman
BAB 2
OPERAS! STR!NG
#2"2 String pada .a+asa A
#2%2 Pointer pada 8perasi String
#2=2 :i.rary String !a+asa ABB
#2?2 *em.andingkan string
#2'2 8perator :ogika ,8T
#2>2 Pengurutan String
#2(2 <ungsi konversi StringC,umeric
#2#2 *enguji se.ua+ Karakter
#2@2 Deskripsi <ungsi Karakter
#2"-2 Konversi Karakter
#2""2 *enulis string
#2"%2 Pointer untuk menguraikan String
#2"=2 Alass String pada ABB
#2"?2 *em.uat Alass String Sendiri
#2"'2 Studi Kasus
#2">2 Soal :ati+an
2$"$ String (a%a baha'a .
String merupakan se.ua+ .entuk
data yang sering dipakai dalam
.a+asa pemrograman untuk
keperluan menampung dan
memanipulasi data teks2 Se.agai
conto+ 5ungsi string misalnya
digunakan untuk menampung atau
menyimpan se.ua+ kalimat dan lain
se.againya2
Pada .a+asa A$ string .ukanla+
merupakan tipe data .erdiri
tersendiri$ melainkan +anyala+
kumpulan dari nilai6nilai karakter
yang .erurutan dalam .entuk array
.erdimensi satu2
Dalam .a+asa ABB$ string
merupakan suatu nilai karakter yang
.erurutan dan disimpan dalam
se.ua+ lokasi memori yang salalu
diak+iri dengan karakter null2
Se+ingga untuk memanggil string
akan selalu dalam .entuk karakter
ASA772 Dalam se.ua+ program
operasi string$ karakter null .iasanya
ditulis OS-0$ dimana +al terse.ut
.iasanya secara umum .erupa
.ilangan integer - atau nilai karakter
2008 | Direktorat Pembinaan SMK
%#@
ditulis secara langsung dalam
program secara .erurutan dengan
Bahasa Pemrograman perasi "tring
null konstanta2 Kemudian pernyataan
terse.ut disimpan dalam .entuk
karakter varia.el seperti di.awa+ ini:
>(ar >(1, >(",
>(1A
>(1 '
a`0aA
>(" '
0A
>(1 '
K$FFA
Array merupakan se.ua+ lokasi
memori yang .erurutan untuk
menyimpan nilai tipe data yang
sama$ tetapi pada string .erupa array
yang selalu diak+iri dengan karakter
null2 String dalam .a+asa ABB akan
muncul dalam program .erupa sala+
satu dari tiga .entuk di.awa+ ini:
H9ard6coded00 string literals
Programmer mende5inisikan array
dari karakter
Pointers ke karakter
Tanpa memper+atikan dari
ketiga .entuk string yang muncul
dalam program terse.ut$ string selalu
mempunyai ciri array yang diak+iri
ole+ karakter null dan
direpresentasikan dalam program
dalam .entuk pointer pada karakter
pertama dalam se.ua+ array2
Dengan kata lain tipe string pada
.a+asa ABB adala+:
>(ar
E
dimana +al terse.ut diatas adala+
tipe c+ar string menggunakan se.ua+
pointer
2$"$"$ Kon'tanta String
Penulisan String Secara +ara5ia+
se.enarnya dapat dise.ut juga
dengan konstanta string yang dapat
menam.a+ tanda ketik dua2
Per+atikan string di.awa+ ini:
I&iapaka( na%a
andaDJ
Igatotka>aJ
Kedua penulisan terse.ut diatas
merupakan cara penulisan string2
Per+atikan conto+ program di.awa+
ini:
Program #2"
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
>out ?? Bgatotka>aBA
.et*. 0A
8
Pada program diatas dapat
diketa+ui .a+wa compiler menangani
string yang datang dalam .entuk
string literal2 Ketika compiler
menemui se.ua+ string Hgatotkaca1$
maka +al terse.ut akan dialokasikan
dala se.ua+ array dengan panjang
sepulu+ karakter dalam .entuk data
dalam program2
Aompiler kemudian akan
menyimpan sem.ilan karakter dalam
.entuk string Hgatotkaca12 Dalam
penyimpanan pertama dimasukan
karakter kesem.ilan kedalam array
dan diak+iri dengan karakter null
pada penyimpanan ak+ir2 :angka+
terak+ir compiler melewatkan nilai
tipe c+ar K dan alamat array dari
karakter pertama menjadi o.yek cout2
%@-
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
g a t o t k a c a \0
;am.ar #2"2 Aonto+ se.ua+ string
Pada gam.ar diatas setiap
karakter akan menempati memori
se.esar " .yte2 !yte terak+ir
otomatis akan .erisi karakter ,::
3S-42 Dengan mengeta+ui .a+wa
suatu string diak+iri nilai ,::$ maka
ak+ir dari nilai suatu string akan
dapat dideteksi2 Se.agai se.ua+
array karakter$ karakter pertama dari
nilai string mempunyai indeks ke6-$
karakter kedua mempunyai indeks
ke6"$ dan seterusnya2 Program
di.awa+ ini mengilustrasikan se.ua+
string yang diperlakukan ole+
compiler se.agai se.ua+ nilai
dengan type data c+arK 2 9al terse.ut
merupakan se.ua+ operasi pointer
pada se.ua+ karakter2
Program #2%
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
&tring &toredAt ' B di&i%pan pada BA
)h". Ep, EXA
// memasukan string ke pointer sebagai char
p ' B2eo BA
X ' BBaieyBA
// pernyataan berikut sama dengan
>out ?? p ?? X ?? endA
//cetak alamat dimana string C disimpan
>out ?? p ?? &toredAt ??it(p)?? endA
>out ?? X ?? &toredAt ??it(X)?? end ??it (B&tring ainnyaB)A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
2eo Baiey
2eo di&i%pan pada #107##+
Baiey di&i%pan pada #107#*#
#107#,1
Dua tugas pada program diatas
adala+ menampilkan string dalam
.entuk pointer menjadi c+ar dengan
menggunakan varia.e type c+arK2
Pointer p dan ^ kemudian mena+an
se.agai alamat dari dua string2
Dengan memili+ se.ua+ pointer int
maka akan mengeta+ui dimana
2008 | Direktorat Pembinaan SMK
%@"
Bahasa Pemrograman perasi "tring
konstanta string disimpan dalam array dapat di.eri nilai dengan
se.ua+ memori2 Dalam kasus ini
se.ua+ compiler tela+ menyimpan
semua konstanta string pada se.ua+
program dalam lokasi memori yang
.erurutan2
2$"$&$ Hariabel String
Se.ua+ varia.el string dapat
dita+an ole+ string pada .a+asa A
yang ditulis dalam .entuk kode
program2 ntuk memiliki suatu
karakter string dari se.ua+ key.oard$
atau dari se.ua+ 5ile$ maka +arus
dapat mende5inisikan se.ua+ array
untuk menampung karakter string
terse.ut2 Di dalam melakukan +al ini$
yang perlu pastikan adala+ pada saat
mengalokasikan satu tam.a+an isi
array untuk mengak+iri karakter null2
Se.agai conto+$ jika string akan le.i+
dari "@ karakter panjangnya$ maka
perlu mengalokasikan se.ua+ array
dengan %- karakter$ seperti conto+
penulisan di.awa+ ini:
>(ar
>o%panyN"0OA
instruksi terse.ut diatas merupakan
instruksi untuk mendeklarasikan
varia.el string dengan panjang
maksimal %- karakter 3termasuk
karakter ,::42 Deklarasi terse.ut
se.enarnya tidak lain merupakan
deklarasi array .ertipe c+ar2
Pada se.ua+ konstanta string$
compiler string akan menunjukkan
string melalui alamat pertama
karakter string$ dalam +al ini$ array
identi5ier2 Pada satu array denti5ier
dengan tanpa tanda kurung
diinterprestasikan ole+ compiler
se.agai alamat pertama yang masuk
pada array2 Suatu string dalam
.a+asa c dide5inisikan se.agai satu
menginisialisasi string terse.ut2
Selain mem.eri nilai dapat juga
dilakukan dengan mem.aca karakter
string melalui se.ua+ key.oard atau
5ile$ atau dapat juga dengan
melakukan copy karakter ke dalam
array satu karakter pada saat yang
sama2 9al ini dapat juga dikatakan
.a+wa suatu varia.el string dapat
diinisialisasi seperti +alnya array
yang lain2 ,amun tentu saja elemen
terak+irnya +arusla+ .erupa karakter
,::2
>(ar
>orporationNO
'6V0V,VrV,VaV,VpV,V(V,VIV,V>V,V
&V,V`0V8A
yang menyatakan .a+wa name
adala+ varia.el string dengan nilai
awal .erupa string: H;rap+ics1
!entuk inisialisasi yang le.i+ singkat:
>(ar >orporationN O '
B0rap(i>&BA
atau conto+ lain .isa juga ditentukan
jumla+ karakternya:
>(ar >o%panyN"0O ' B/oboti>
Sy&te%&, in>!BA
Pada .entuk penulisan diatas$
karakter ,:: tidak perlu ditulis2
Secara implisit akan disisipkan ole+
kompiler2 Dalam penulisan yang perlu
diper+atikan$ .ila corporation
dideklarasikan se.agai string$
penugasan 3assignment4 suatu string
ke varia.el string dan tidak
diperkenankan menulis seperti
di.awa+ ini:
>orporation '
I0rap(i>&BA
%@%
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
dalam melakukan inisialisasi array
se.ua+ string caranya adala+$ ukuran
dari array di dalam se.ua+ array
merupakan se.ua+ opsional2 )ika +al
terse.ut tidak ditentukan$ maka
compiler itu akan mengatur ukuran
string sesuai dengan .anyaknya
karakter yang ada didalam string
terse.ut seperti conto+ diatas2
String pada .a+asa A
mende5inisikan se.agai aray atau
larik yang dapat ter.aca dan ditulis
dengan .er.agai o.ject$ operator$
maupun keanggotaan 5ungsi
masukan atau keluaran se.ua+
class2 Suatu string pada .a+asa A
akan disimpan seorang programmer
untuk mende5inisikan array yang
dapat diproses dengan notasi
su.script standar2 Program di.awa+
merupakan se.ua+ conto+ program
string2 Aonto+ terse.ut akan
mengeluarkan satu karakter string
pada waktu yang sama$ dan .er+enti
ketika itu menemukan ak+iran null2
7nstruksi terse.ut menggunakan
5ungsi keanggotaan getline yang
dimiliki ole+ .a+asa A2 ntuk le.i+
jelasnya per+atikan program di.awa+
ini:
Program #2=
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
),+t it F<K042 ' 80A
)h". ineNF<K042OA
it >ount ' 0A
>out ?? B)a&ukan kai%at tidak ebi( dari B
?? F<K042;1 ?? B >(ara>ter&M`nBA
>in!getine(ine, F<K042)A
>out ?? BKai%at yang anda )a&ukan Adaa(M`nBA
Ghi-e (ineN>ountO _' a`0a)
6
8
.et*.
0A
8
>out ?? ineN>ountOA
>ount::A
Keluaran program adala+ se.agai .erikut:
)a&ukan kai%at tidak ebi( dari +7
>(ara>ter&M Ba(a&a C:: &angat
%enantang \a DD/Ete.0 Kai%at
yang anda )a&ukan Adaa(M
Ba(a&a C:: &angat %enantang \a DD
2008 | Direktorat Pembinaan SMK
%@=
Bahasa Pemrograman perasi "tring
2$&$ Pointer (a%a O(era'i String
Seperti yang suda+ kita keta+ui
.a+wa string pada .a+asa A dapat
diwakili ketika konstanta string$ atau
array se.ua+ karakter2 Keduanya
metoda ini mengalokasikan array dan
lalu menggunakan alamat array
se.agai suatu pointerCpenunjuk untuk
c+ar se.agai aktualisasi yang
merepresentasikan string2
Per.edaan antara keduanya
adala+ .a+wa dalam kasus yang
pertama$ array digunakan untuk
menyimpan string yang dialokasikan
secara implisit ole+ compiler$
sedangkan pada kasus kedua$ array
secara eksplisit dialokasikan ole+
programmer2
*etoda yang ketiga adala+
dengan merepresntasikan string
.a+asa A menggunakan pointer
untuk operasi c+ar untuk menunjuk
string pada .a+asa A2 Dengan
metode ini penyimpanan suda+
dialokasikan ole+ sala+ satu atau dua
metoda yang lain2 Di sini ada
.e.erapa conto+ penggunaan string
.a+asa A adala+ se.agai .erikut:
)h". na%eN"0O ' BSekoa(
%enenga(BA
)h". EpA
p ' na%eA
>out ?? p ?? endA // cetak p
p ' B&ekoa(kuBA
>out ?? p ?? endA // cetak p
Keuntungan utama dalam
menggunakan se.ua+ varia.el
penunjuk pointer adala+ untuk
merepresentasikan string pada
.a+asa A yang mempunyai
kemampuan untuk mem.uat
penunjuk titik pointer yang menunjuk
string yang .er.eda2
Aara lain cara menggunakan
penunjuk pointer c+ar string pada
.a+asa ABB adala+ dengan
mende5inisikan penunjuk pointer dan
kemudian menetapkannya untuk
menunjuk secara dinamis dan
mengalokasikan penyimpanan yang
dikem.alikan ole+ operator yang
.aru2 9al ini dapat digam.arkan pada
conto+ program di.awa+ ini:
Program #2?
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
),+t it KA)<WF<K042 ' *0A
)h". Epna%eA
pna%e ' eG )h".NKA)<WF<K042OA // alokasi penyimpanan
>out ?? B)a&ukan na%a AndaM BA
>in @@ pna%eA // cetak nama
>out ?? B2eo B ?? pna%eA
.et*. 0A
%@?
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
8
Keluaran program diatas setela+ di.eri masukan adala+:
)a&ukan na%a AndaM S*(."(t, /Ete.0
2eo Suprapto
Suatu kesala+an umum yang
sering terjadi dalam menggunakan
penunjuk pointer c+ar pada string
.a+asa A adala+ ketika
menggunakan penunjuk pointer tetapi
tidak menunjuk dan mengalokasikan
string dengan .aik2 Per+atikan
conto+ kode di.awa+ ini:
)h". Epna%eA
>out ?? B)a&ukan Ka%a
AndaM BA
>in @@
pna%eA
kesala+annya adala+ karena
program menco.a untuk mem.aca
se.ua+ string ke dalam lokasi
memori yang ditunjuk ole+ (name$
ketika (name .elum diinisialisasi
dengan .aik2
2$)$ Eibrar3 String Baha'a .DD
:i.rary ABB menyediakan
.anyak 5ungsi untuk memanipulasi
dan menguji string2 Se.agai conto+$
se.ua+ program segmen .erikut
menggunakan 5ungsi 'trlen untuk
menentukan panjang se.ua+ string
yang disimpan dengan nama name:
)h". na%eN*0O ' B4(o%a&
<di&onBA
it
engt(A
engt( '
&tren(na%e)A
<ungsi strlen untuk menerima
string se.agai argumentasi2 9al
terse.ut digunakan untuk
mengem.alikan panjang string$
dimana .anyaknya karakter akan
sampai tetapi tidak termasuk tanda
null ak+ir string2 Se.agai +asil dari
panjang varia.el string akan memiliki
jumla+ karakter "= yang disimpan di
dalam string2 Panjang se.ua+ string
+arus tidak dikacaukan dengan
ukuran dari array yang mena+annya2
9al yang perlu diingat adala+ .a+wa
satu6satunya in5ormasi yang sedang
di.erikan kepada strlen adala+
alamat permulaan dari string2 9al
terse.ut tidak mengeta+ui yang
mana array se.agai tujuan ak+ir$
se+ingga +al terse.ut akan mencari
kode null yang menandai adanya
ujung string2
Karena string pada .a+asa A
.erupa penunjuk pointer untuk tipe
data c+ar$ string menangani 5ungsi
yang mengam.il parameter .erupa
array dari se.ua+ c+ar atau
ekivalensinya$ penunjuk pointer untuk
menangani tipe data c+ar2 string
pada A dapat juga dilewatkan pada
5ungsi di dalam tiga .entuk manapun
dimana string dapat mengam.il:
Konstanta string
,ama array yang menyimpan
string
Daria.el Pointer yang menangani
alamat A
Se.agai conto+ pada operasi untuk
meng+itung panjang string$ maka
5ungsi 'trlen dapat digunakan
se.agai ditunjukkan di.awa+ ini:
2008 | Direktorat Pembinaan SMK
%@'
Bahasa Pemrograman perasi "tring
engt( ' &tren(B4(o%a&
<di&onB)A
Aonto+ lain suatu 5ungsi
penanganan string pada A adala+
'tr/at2 <ungsi 'tr/at mengam.il dua
string ketika se.ua+ parameter
mengga.ungkan mereka$
mengem.alikan suatu string yang
terdiri dari semua karakter yang
diikuti string pertama ole+ karakter
string kedua2 Di .awa+ ini adala+
satu conto+ penggunaan pada
program:
)h". &tring1N11O '
B2eo BA )h".
&tring"N+O ' BTord_BA
>out ?? &tring1 ??
endA >out ?? &tring"
?? endA
&tr>at(&tring1,
&tring")A >out ??
&tring1 ?? endA
pernyatan6pernyataan terse.ut akan
meng+asilkan keluaran se.agai
.erikut:
2eo
Tord_
2eo Tord_
<ungsi strcat untuk menyalin isi
dari string% +ingga selesai dari
string"2 Di dalam conto+ ini$ string"
.erisi string a9ello a se.elum
memanggil ke strcat2 Setela+
panggilan dilakukan$ maka nilainya
akan .erisi string a 9ello /orldMa2
;am.ar di.awa+ menunjukkan isi
dari kedua array se.elum dan setela+
5ungsi terse.ut dipanggil2
%@>
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
Se.elum memanggil strcat 3string"$string%4N
String"
H e l l o R5
String%
L o r l % < R5
Setela+ memanggil strcat 3string"$ string%4
String"
H e l l o L o r l % < R5
String%
L o r l % < R5
karakter yang terak+ir pada
string" se.elum tanda null adala+
se.agai ruang atau space2 <ungsi
strcat tidak untuk menyisipkan
se.ua+ ruang$ dengan demikian +al
terse.ut adala+ tanggung jawa.
seorang programmer .a+wa space
tela+ dipastikan satu tela+ di sana$
jika +al terse.ut diperlukan2 9al
terse.ut merupakan tugas seorang
programmer untuk memastikan
.a+wa array dapat menjaga string"
dan suda+ cukup .esar untuk
mena+an string" dan string% serta
tanda ak+iran null2 Pada kasus ini$
se.ua+ segmen program yang
menggunakan operator siQeo5 untuk
menguji ukuran array se.elum strcat
dipanggil:
i7 (+i?e,7(&tring1) @' (&tren(&tring1): &tren(&tring"):1))
&tr>at(&tring1, &tring")A
e-+
e
>out ?? BString1 tidak >ukup be&ar untuk kedua &tring ter&ebut!`nBA
Array tidak .isa ditugaskan
selain dengan operator I 2 *asing6
masing unsur individu +arus
mempunyai tugas$ .iasanya di dalam
se.ua+ program pengulangan2
<ungsi strcpy$ dapat digunakan
untuk menyalin se.ua+ string ke
.entuk yang lain2 Aonto+
penggunaannya dapat dili+at pada
program di.awa+ ini:
)h".
na%eN"0OA
&tr>py(na%e, BAbert
<in&teinB)A
2008 | Direktorat Pembinaan SMK
%@(
Bahasa Pemrograman perasi "tring
Alasan penggunaan 5ungsi
'tr/(3 adala+ string pada .a+asa A2
String yang kedua dicopy pada
alamat yang ditetapkan ole+ argumen
string yang pertama2 )ika sesuatu
suda+ disimpan di dalam lokasi yang
tela+ disesuaikan ole+ argumen yang
pertama$ +al terse.ut akan terjadi
overwritten$ seperti ditunjukkan
dalam segmen program .erikut ini:
)h". &tring1N10O ' B2eoB,
&tring"N10O ' BTord_BA
>out ?? &tring1
?? endA >out ??
&tring" ?? endA
&tr>py(&tring1,
&tring")A >out ??
&tring1 ?? endA
>out ?? &tring"
?? endA
se+ingga keluaran program adala+
se.agai .erikut:
2eo
Tord
_
Tord
_
Tord
_
2$*$ Memban%ingkan 'tring
8perator assignment dan
operator relasional .ekerja dengan
class string pada .a+asa ABB string
karena mereka dapat terjadi overload
yang .ekerja .ersama kelas terse.ut2
*eskipun demikian$ sama seperti
operator assignment tidak .isa
digunakan untuk mem.eri pada string
A$ operator relasional TI$ T$ U$ UI$ MI$
dan II tidak .isa digunakan untuk
mem.andingkan pada string2 9al ini
dikarenakan ketika digunakan
dengan string$ operator terse.ut
mem.andingkan alamat6alamat
dimana strings terse.ut disimpan
daripada mem.andingkan karakter
yang .erurutan secara nyata yang
menjadi anggota string terse.ut2
Program di.awa+ menunjukkan
+asil keluaran yang sala+ dimana
program terse.ut menco.a
mem.andingkan string menggunakan
persamaan operator diatas2
Program #2'2
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
),+t it F<K042 ' #0A
)h". 5r&tStringNF<K042O, &e>ondStringNF<K042OA
>out ?? B)a&ukan &tringM BA
>in!getine(5r&tString,
F<K042)A >out ??
B)a&ukan &tring ainM BA
>in!getine(&e>ondString,
F<K042)A
%@#
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
i7 (5r&tString '' &e>ondString)
>out ?? B\ang anda %a&ukan &tringnya &a%a`nBA
e-+e
>out ?? BString 4idak Sa%a!`nBA
.et*. 0A
8
Keluaran program diatas adala+:
)a&ukan &tringM
AHon&oN<nterO )a&ukan
&tring ainM AHon&oN<nterO
String 4idak Sa%a!
*eskipun kedua string terse.ut
yang dimasukan serupa$ Program
diatas akan melaporkan .a+wa
mereka tidakla+ sama2 9al ini
dikarenakan adanya instruksi
di.awa+ ini:
5r&tString ''
&e>ondString
+al yang digunakan dalam dalam
program diatas adala+ statemen 7<
untuk mem.andingkan alamat
memori dari dua aray terse.ut$
daripada mem.andingkan karakter
string dan menyimpan alamat
terse.ut2 Karena alamatnya .er.eda$
maka per.andingan meng+asilkan
suatu +asil yang sala+2 Se.enarnya$
dalam .a+asa ABB$ per.andingan
dapat dilakukan seperti di.awa+ ini:
Bab>B ''
Bab>B
!iasanya instruksi diatas akan
meng+asilkan suatu +asil yang sala+2
7ni dikarenakan ke.anyakan compiler
tidak memeriksa atau meli+at jika
konstanta string suda+ ditemui
se.elumnya$ dan akan menyimpan
kedua string6string pada alamat
memori yang .er.eda2 Aompiler
terse.ut akan mem.andingkan kedua
alamat6alamat yang .er.eda$
kemudian mem.eri suatu nilai +asil
yang sala+2
2$*$"$ ung'i 'tr/m(
ntuk mem.andingkan string
pada A dengan .aik$ maka perlu
menggunakan 5ungsi li.rary 'tr/m(2
<ungsi ini mengam.il dua string
se.agai parameter dan
mengem.alikan .ilangan integer
untuk menandai$.agaimana dua
string di.andingkan antara satu sama
lain2 Per+atikan instruksi di.awa+ ini:
int &tr>%p(>(ar E&tring1, >(ar
E&tring")A
menunjukkan .a+wa 5ungsi
pengam.ilan dua string pada A
se.agai parameter dan
mengem.alikan +asil .ilangan
integar2 ,ilai dari +asil terse.ut diatur
menurut aturan se.agai .erikut:
9asilnya kosong jika kedua string
adala+ sama pada karakter
melalui karakter dasar
9asilnya negati5 jika string"
datang se.elum string% dalam
urutan menurut a.jad
2008 | Direktorat Pembinaan SMK
%@@
Bahasa Pemrograman perasi "tring
9asilnya positi5 jika string"
mengikuti string% dalam urutan
menurut a.jad
Per+atikan conto+ program dengan
e-+
e >out ?? BString tidak &a%aBA
Pada program diatas$ yang
menggunakan strcmp untuk
menentukan kesamaan dua .ua+
string:
i7(&tr>%p(&tring1, &tring") '' 0)
>out ?? B&tring adaa(
&a%aBA
+asilnya sala+ adala+ untuk menguji
dua .ua+ string dengan operator
relational$ dapat ditulis ulang secara
.enar dengan 5ungsi strcmp$ seperti
yang ditunjukkan pada program
di.awa+ ini:
Program #2>
=in>ude ?io&trea%@
=in>ude ?>&tring@
*+i! "#e+(")e &tdA
it %ain()
6
),+t it F<K042 ' #0A
)h". 5r&tStringNF<K042O, &e>ondStringNF<K042OA
>out ?? B)a&ukan StringM BA
>in!getine(5r&tString,
F<K042)A >out ??
B)a&ukan &tring ainM BA
>in!getine(&e>ondString,
F<K042)A
i7 (&tr>%p(5r&tString, &e>ondString) '' 0)
>out ?? B\ang anda %a&ukan &tringnya &a%a`nBA
e-+e
>out ?? BString tidak &a%a!`nBA
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
)a&ukan StringM
AHon&o/Ete.0 )a&ukan
&tring ainM AHon&o/Ete.0
\ang anda %a&ukan
&tringnya &a%a
<ungsi strcmp .ersi5at case6
sensitive ketika digunakan untuk
mem.andingkan string2 )ika
pengguna memasukan aAnjinga dan
aanjinga pada program diatas$ maka
akan melaporkan .a+wa kedua string
tidakla+ sama karena ada per.edaan
+uru5 kapital dan kecil pada kata
=--
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
anjing2 Ke.anyakan compiler
menyediakan 'tr/m( versi tidak
standar untuk melaksanakan
per.andingan case6insensitive2
Se.agai conto+$ !orland ABB
mempunyai 5ungsi 'tri/m(2 9al
terse.ut +ampir sama dengan
'tr/m( kecuali mengenai case dari
karakter terse.ut yang akan
dia.aikan2
Program di.awa+ ini adala+
conto+ yang le.i+ praktis .agaimana
'tr/m( digunakan2 9al terse.ut akan
minta kepada user untuk memasukan
sejumla+ angka le.i+ dari satu sesuai
dengan yang mereka .eli2 !agian
angka merupakan digit$ +uru5$ dan
tanda peng+u.ung$ se+ingga dengan
demikian +al terse.ut akan disimpan
se.agai suatu string2 !egitu
pengguna memasukan angka$
program akan menampilkan +arga
terse.ut2
Program #2(
in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>&tring@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
it %ain()
6
),+t %,*b-e AWG/IC< ' 100!00, BWG/IC< ' 1*0!00A
),+t it GA/4WF<K042 ' 8A
)h". partKu%NGA/4WF<K042OA
>out ?? Bkode no%er ganda adaa(M`nBA
>out ?? B`tKotak be&ar, kode no%ernyaM
S1#+;"7A`nBA >out ?? B`t/ak Be&ar, kode
no%ernyaM S1#+;"7B`nBA >out ??
B%a&ukan kode no%er yang ada`nBA
>out ?? Bingin %e%beiM BA
>in @@ &etP(7)A
>in @@ partKu%A
>out ?? &(oPpoint ?? 5YedA
>out ?? &etpre>i&ion(")A
i7 (&tr>%p(partKu%, BS1#+;"7AB) '' 0)
>out ?? B(arganya adaa( bB ?? AWG/IC< ?? endA
e-+e i7 (&tr>%p(partKu%, BS1#+;"7BB) '' 0)
>out ?? B(arganya adaa( bB ?? BWG/IC< ?? endA
e-+e
>out ?? partKu% ?? B no%er yang di%a&ukan tidak &a(!`nBA
get>(()A
.et*. 0A
2008 | Direktorat Pembinaan SMK
=-"
Bahasa Pemrograman perasi "tring
8
Keluaran program diatas adala+ se.agai .erikut:
kode no%er ganda
adaa(M
Kotak be&ar, kode no%ernyaM S1#+;"7A
/ak Be&ar, kode no%ernyaM S1#+;"7B
%a&ukan kode no%er
yang ada ingin %e%beiM
S1#+;"7AN<nterO
(arganya adaa( b100!00
2$+$ O(erator logika NOT
!e.erapa para programmer le.i+
suka menggunakan operator logika
,8T dengan strcmp ketika menguji
persamaan string6string2 Karena
logika - dipertim.angkan se.agai
logika sala+$ operator M akan
mengkonversi nilai terse.ut menjadi
.enar2 Ekspresi 'tr/m( 3string"$
string%4 akan kem.ali .enar jika
kedua string adala+ sama$ dan sala+
ketika string .er.eda2 Pada kedua
statemen .erikut melaksanakan
operasi yang sama:
iH (&tr>%p(5r&tString,
&e>ondString) '' 0)
iH (_&tr>%p(5r&tString,
&e>ondString))
2$,$ Pengurutan String
Program sering ditulis dengan
dicetak .erurutan menurut da5tar
a.jad2 *isalnya penggunaan sistem
komputer pada se.ua+ toko ser.a
ada untuk menyimpan nama dan
alamat pelanggan dalam se.ua+ 5ile2
,ama6nama terse.ut tidak akan
muncul dalam 5ile yang .erurutan
menurut a.jad tetapi dalam order
atau pesanan$ dimana sesuai
operator memasukkan mereka2
)ika suatu da5tar terse.ut dicetak
dalam urutan pesanan terse.ut$
maka akan menjadi sangat sulit untuk
menempatkan setiap nama terse.ut2
Da5tar terse.ut mau tidak mau +arus
diurutkan se.elum dicetak2 Karena
nilai yang dikem.alikan ole+ 'tr/m(
.erdasarkan pada urutan al5a.et
relative pesanan dari kedua string
yang sedang di.andingkan$ maka +al
terse.ut dapat digunakan dalam
program untuk jenis string pendek2
Program di.awa+ akan meminta
pemakai untuk memasukan dua
nama$ yang kemudian dicetak dalam
secara urutan al5a.et pemesan2
Program #2#
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>&tring@
*+i! "#e+(")e &tdA
it %ain()
=-%
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
6
),+t it GAKCAK0WKA)A ' 10A
)h". na%e1NGAKCAK0WKA)AO, na%e"NGAKCAK0WKA)AOA
>out ?? B)a&ukan Ka%a (a&t
Ka%e)M BA >in!getine(na%e1,
GAKCAK0WKA)A)A >out ??
B)a&ukan Ka%a FainM BA
>in!getine(na%e",
GAKCAK0WKA)A)A
>out ?? BDi&ini na%a akan di urutkan berda&arkan ap(abetM`nBA
i7 (&tr>%p(na%e1, na%e") ? 0)
>out ?? na%e1 ?? end ?? na%e" ?? endA
e-+e i7 (&tr>%p(na%e1, na%e") @ 0)
>out ?? na%e" ?? end ?? na%e1 ?? endA
e-+e
>out ?? BAnda %e%a&ukan na%a yang SA)A_`nBA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
)a&ukan Ka%a (a&t Ka%e)M &uprapto
)a&ukan Ka%a FainM anPar
Di&ini na%a akan di urutkan berda&arkan ap(abetM
anPar
&uprap
to
setela+ mempelajari .e.erapa program string diatas$ di.awa+ ini merupakan
ta.el ringkasan se.ua+ penanganan 5ungsi string2
Ta.el #2"2 <ungsi untuk menangani string
FUN9
SI
PEN&ELAS
AN +t.-e )eneri%a &tring &ebagai argu%en! Gernyataan pan-ang
&tring (tidak
ter%a&uk nu ter%inator! Conto( GenggunaanM en ' &tren +t.)"t )eneri%a dua &tring &ebagai argu%en! .ung&i
%ena%ba(kan i&i &tring
kedua untuk perta%a &tring! (\ang perta%a adaa( &tring
diuba(, kedua &tring ter&ebut dibiarkan tidak beruba(!)
Conto( GenggunaanM &tr>at (&tring1, &tring")A
+t.)(F )eneri%a dua &tring &ebagai argu%en! .ung&i &ainan
kedua &tring untuk perta%a &tring! String %iiknya kedua
&tring dibiarkan tidak beruba(!
Conto( GenggunaanM &tr>py (&tring1, &tring")A
+t.)(F )eneri%a dua &tring dan argu%en integer! Argu%en yang
ketiga, &ebua(
2008 | Direktorat Pembinaan SMK
=-=
Bahasa Pemrograman perasi "tring
integer, %enun-ukkan berapa banyak karakter yang di>opy
dari &tring
kedua %enu-u &tring perta%a! Cika kurang dari &tring"
&ebanyak n karakter, &tring1 adaa( dita%ba(kan
dengan dengan karakter a` 0a! Conto( GenggunaanM
+t.)#( )eneri%a dua &tring argu%en! Cika &tring1 dan &tring"
&a%a, Hung&i ini
%e%berikan (a&i 0! Cika &tring" aHabetnya ebi( be&ar
dari &tring1, ia ke%bai angka negatiH! -ika String"
aHabetnya kurang dari &tring1, ia ke%bai angka po&itiH!
Conto( GenggunaanM iH (&tr>%p (&tring1, &tring"))
+t.+t. Gen>arian untuk perta%a ter-adinya &tring" daa% &tring1!
Cika ter-adinya
&tring" dite%ukan, Hung&i akan %enge%baikan pointer
&tring perta%a! Cika tidak, ia akan %enge%baikan K$FF
pointer (aa%at 0)! Conto( GenggunaanM >out ??&tr&tr
<ungsi yang terak+ir dalam ta.el
diatas adala+ strstr$ yang digunakan
untuk mencari se.ua+ string dalam
dari se.ua+ string yang penjang2
Se.agai conto+$ misalnya digunakan
untuk mencari string atuju+a didalam
se.ua+ string kalimat yang le.i+
.esar a,ilai Empat dan tuju+ pada
ta+un yang lalua2 <ungsi
argumentasi yang pertama adala+
string dicari$ dan argumentasi yang
kedua adala+ string untuk mencari2
)ika 5ungsi menemukan string dalam
string yang kedua terle.i+ dulu +al
terse.ut kem.alikan ke alamat
kejadian string didalam string yang
kedua2 Se.aliknya jika +al terse.ut
tidak dikem.alikan alamat -$ atau
alamat ,::2 Di .awa+ ini adala+
conto+ pengunaan 5ungsi terse.ut:
)h". arrayNO ' BKiai e%pat
pada tu-u( ta(un yang auBA
)h". E&trGtrA
>out ?? array ?? endA
&trGtr ' &tr&tr(array, Btu-u(B)A
// mencari string :tujuh:
>out ?? &trGtr ?? endA
Dalam segmen program yang
se.elumnya$ strstr akan
menempatkan string atuju+a di dalam
string a,ilai Empat pada tuju+ ta+un
yang lalu12 9al terse.ut akan
kem.alikan kealamat dari karakter
yang pertama didalam atuju+a$ yang
selanjutnya akan disimpan dalam
varia.el penunjuk pointer strPtr2 )ika
menjalankan .agian dari suatu
program engkap$ segmen terse.ut
akan menampilkan se.agai .erikut:
Kiai <%pat pada tu-u( ta(un
yang au tu-u( pada ta(un
yang au
<ungsi strstr dapat .erman5aat
dalam setiap program yang +arus
menempatkan in5ormasi didalam
string satu atau le.i+2 Program
di.awa+ merupakan conto+$
menyimpan suatu data.ase sejumla+
produk dan penjelasan dalam satu
array pada string2 9al terse.ut
memper.ole+kan pengguna untuk
mengeta+ui penjelasan se.ua+
produk dengan memasukan semua
atau .agian dari nomor produknya2
=-?
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
Program #2@
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?&tring@
*+i! "#e+(")e &tdA
it %ain()
6
),+t it KWI4<)S ' *, SWF<K042 ' 11A
)h". prod&N*ONSWF<K042O ' 6B4L111
tee3i&i 11 in>(B, BCD111 CD GayerB,
B)C1"1 )e&in
Cu>iB, B4)#*,
tape )obiB,
BGC7** Ger&ona Co%puterB8A
)h". ook$pNSWF<K042O, E&trGtr ' K$FFA
it indeYA
>out ?? B`tGrodu>t Databa&e`n`nBA
>out ?? B)a&ukan Kode angka produ>t untuk %en>ari dataM BA
>in!getine(ook$p, SWF<K042)A
7,. (indeY ' 0A indeY ? KWI4<)SA indeY::)
6
&trGtr ' &tr&tr(prod&NindeYO, ook$p)A
i7 (&trGtr _' K$FF)
b.e"'A
8
i7 (&trGtr '' K$FF)
>out ?? Bkode tidak &e&uai dengan produk!`nBA
e-+e
>out ?? prod&NindeYO ?? endA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+:
Grodu>t Databa&e
)a&ukan Kode angka produ>t untuk %en>ari dataM CD111/Ete.0
CD111 CD Gayer
Grodu>t Databa&e
2008 | Direktorat Pembinaan SMK
=-'
Bahasa Pemrograman perasi "tring
)a&ukan Kode angka produ>t untuk %en>ari dataM 0C78+/Ete.0
kode tidak &e&uai dengan produk!
Dalam program terse.ut diatas$
karena pengulangan tiap putaran
melalui string dalam pemanggilan
array maka pernyataannya adala+
se.agai .erikut:
&trGtr ' &tr&tr(prod&NindeYO,
ook$p)A
<ungsi strstr mencari string yang
sesuai ole+ prods[inde&\ karena
nama yang dimasukkan ole+
pengguna$ yang mana disimpan
dalam lookp2 )ika lookp ditemukan
di dalam prods[inde&\$ 5ungsi akan
mengem.alikan alamatnya2 Dalam
kasus terse.ut$ statemen i5
menye.a.kan pengulangan akan
.erak+ir2
iH (&trGtr _'
K$FF)
brea
kA
Di luar pengulangan terse.ut$ sesuai
statemen 7<6E:SE untuk menentukan
jika string dimasukkan ole+ pengguna
ditemukan dalam array2 )ika tidak$
maka akan mengin5ormasikan
kepada pengguna .a+wa tidak ada
produk yang sesuai ditemukan2
Se.aliknya$ nomor produk dan
deskripsi akan ditampilkan:
i7 (&trGtr ''
K$FF)
>out ?? Bkode tidak &e&uai
dengan produk!`nBA
e-+
e
>out ?? prod&NindeYO ?? endA
2$-$ KonBer'i String6Numeri/
Ada suatu per.edaan .esar
antara nomor yang disimpan se.agai
string dan yang disimpan se.agai
nilai klasi5ikasi2 String a%>(@%a
se.enarnya tidak se.agai nomor$
tetapi rangkaian yang diwakili kode6
kode ASA77 untuk setiap digit6digit
dari nomor2 Rangkaian terse.ut
menggunakan enam .yte dari
memori termasuk kode ak+ir string
3null42
Karena itu .ukan se.agai nomor
nyata$ maka tidak mungkin untuk
melaksanakan operasi matematik
dengannya$ kecuali jika +al terse.ut
dikonversi menjadi nilai numerik2
!e.erapa 5ungsi yang ada dalam
pustaka ABB untuk mengu.a+
penyajian string angka ke dalam nilai
numerik dan se.aliknya2 Ta.el
di.awa+ menunjukan 5ungsi65ungsi
terse.ut:
Ta.el #2%2 <ungsi Konversi String
FUN9SI PEN&ELAS
AN "t,
i
Daa% &tring &ebagai argu%ent! .ung&i untuk
%enguba( String
%en-adi integer dan
%enge%baikan niai! Conto(
"t,
-
Daa% ba(a&a >, &tring &ebagai argu%ent! .ung&i
untuk %enguba(
String %en-adi ong integer dan %enge%baikan niai!
=->
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
Contoh Genggunaan; nu% ' ato(B*00000B)A
"t,
7
)eneri%a C;&tring &ebagai argu%en! .ung&i %enguba(
&tring ke dua yang ke%bai dan niai! 0unakan Hung&i
ini %engkon3er&i &tring ke
^oat atau doube!
Conto( GenggunaanM Hnu% ' atoH ( B1,1#1*7B)
it,
"
)engkon3er&i &ebua( integer ke &tring! Argu%en
perta%a, niai,
adaa( integer! 2a&inya akan di&i%pan di oka&i
yang oe( kedua argu%en, &tring! Argu%en yang
ketiga, ba&i&, %erupakan integer! It %enentukan
peno%oran &y&te% yang dikon3er&i integer yang (aru&
dinyatakan daa% (8 ' okta, de&i%a ' 10, 1, '
<ungsi atoi mengkonversi string
menjadi .ilangan integer2 9al
terse.ut menerima argumentasi
string dan ke.alika nilai .ilangan
integer yang dikonversi2 Di .awa+ ini
adala+ se.ua+ conto+ dari .agai6
mana cara melakukan konversi:
int nu%A
nu% ' atoi(B1000B)A
Dalam statemen ini$ atoi
mengkonversi string a"---a ke dalam
.ilangan integer "---2 !egitu
varia.el num di.erikan nilai
terse.ut$maka dapat digunakan
dalam operasi matematik atau setiap
opersi yang memerlukan suatu nilai
numerik2
<ungsi atol .ekerja seperti
+alnya atoi$ kecuali pada nilai dengan
tipe data long integer2 Per+atikan
conto+ di.awa+ ini:
dou.le akan dikem.alikan$ seperti
ditunjukkan pada program di.awa+
ini:
doube
Hnu%A
Hnu% '
atoH(B1"!,+B)A
<ungsi itoa adala+ serupa
dengan atoi$ tetapi itoa .ekerja
ke.alikannya2 7toa akan
mengkonversi suatu .ilangan integer
ke dalam penyajian string yang
merepresentasikan .ilangan integer2
<ungsi itoa menerima tiga
argumentasi: yaitu nilai .ilangan
integer untuk dikonversi$ suatu
penunjuk pointer menjadi lokasi
memori dimana string terse.ut
disimpan$ dan se.ua+ nomor
merepresentasikan dasar6dasar
se.ua+ nilai yang dikonversi2 Di
.awa+ ini adala+ satu satu conto+
instruksinya:
ong
bigKu%A
bigKu% '
ato(B*00000B)A
se.agaimana yang diinginkan$ 5ungsi
ato5 menerima se.ua+ argumentasi
string dan melakukan konversi string
menjadi dou.le2 Se.ua+ nilai numerik
>(ar nu%ArrayN10OA
itoa(1"00, nu%Array,
10)A >out ??
nu%Array ?? endA
Se.ua+ potongan program
terse.ut diatas akan mengkonversi
.ilangan integer "%-- menjadi string2
2008 | Direktorat Pembinaan SMK
=-(
Bahasa Pemrograman perasi "tring
String terse.ut kemudian disimpan di
dalam se.ua+ array dengan nama
numArray2 Argumentasi yang ketiga$
"-$ .erarti nomor +arus ditulis dalam
sistim desimal$ atau notasi dasar "-2
Keluaran dari statemen cout diatas
adala+:
1"0
0
Sekarang per+atikan program
di.awa+ ini$ yang menggunakan
se.ua+ 5ungsi konversi string6to6
num.er$ atoi2 Pada program meminta
pengguna untuk memasukan se.ua+
rangkaian nilai6nilai$ atau surat `
atau ^ untuk .er+enti2 Rata6rata dari
angka6angka terse.ut kemudian
di+itung dan ditampilkan2
Program #2"-
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>&tring@ // untuk strcmp
=in>ude ?>&tdib@ // untuk atoi
*+i! "#e+(")e &tdA
it %ain()
6
),+t it F<K042 ' "0A
)h".
inputNF<K042OA
it tota ' 0,
>ount ' 0A
%,*b-e a3erageA
>out ?? BGrogra% ini akan %en>ari rata;rata biangan!`nBA
>out ?? B)a&ukan biangan perta%a atau tekan [ untuk keuarM BA
>in!getine(input, F<K042)A
Ghi-e ((&tr>%p(input, B[B) _' 0)SS(&tr>%p(input, BXB) _' 0))
6
tota :' atoi(input)A
>ount::A
>out ?? B)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM BA
>in!getine(input, F<K042)A
8
i7 (>ount _' 0)
6
a3erage ' %,*b-e(tota)/>ountA
>out ?? B/eratanya adaa(M B ?? a3erage ?? endA
8
=-#
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
get>(()A
.et*. 0A
8
Keluaran program$ diatas adala+:
Grogra% ini akan %en>ari rata;rata biangan!
)a&ukan biangan perta%a atau tekan [ untuk keuarM #*
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM ,+
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM ,*
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM #*
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM #1
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM "1
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM "1
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM #*
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM ,+
)a&ukan biangan &ean-utnya atau tekan [ untuk keuarM X
/eratanya adaa(M #+
Pemanggilan 5ungsi strcmp
untuk mem.andingkan dua string2
)ika kedua string serupa$ maka nilai
akan diisi dengan -2 se.aliknya jika
tidak maka nilai yang diisikan .ukan
nol2 Se.agaimna statemen w+ile$
strcmp digunakan untuk menentukan$
jika string masukannya
menggunakan sala+ satu a`a atau
a^a2
P(ie ((&tr>%p(input, B[B) _'
0)SS(&tr>%p(input, BXB) _' 0))
)ika user terse.ut .elum
memasukkan karakter a`a atau a^a
maka program akan menggunakan
atoi untuk mengkonversi string
kedalam pada masukan menjadi
.ilangan integer dan menam.a+kan
nilai total secara keseluru+an
se.agaimana dalam insruksi .erikut
ini:
tota :' atoi(input)A // Keep a
running tota
user kemudian akan meminta nomor
.erikut2 Ketika semua angka6angka
tela+ dimasukkan$ user mengak+iri
pengulangan dengan memasukan
karakter a`a atau a^a2 )ika satu atau
le.i+ angka6angka terse.ut tela+
dimasukkan$ maka per+itungan rata6
rata angka6angka terse.ut akan
ditampilkan2
2$2$ Menguji 'ebuah Karakter
:i.rary .a+asa ABB
menyediakan .e.erapa 5ungsi yang
memper.ole+kan seorang programer
untuk menguji nilai dari se.ua+
karakter2 <ungsi terse.ut menguji
se.ua+ argumentasi int tunggal dan
+asil pengujian terse.ut .erupa
.enar atau sala+2 Se.ua+ .ilangan
2008 | Direktorat Pembinaan SMK
=-@
Bahasa Pemrograman perasi "tring
integer adala+ Kode ASA77 dari suatu
karakter2 Se.agai conto+ pada
segmen program .erikut di.awa+
menggunakan 5ungsi i'u((er 2,
untuk menentukan jika karakter lolos
dari se.agai +uru5 .esar se.agai
argumentasi yang diinginkan2 )ika +al
terse.ut sesuai maka 5ungsi akan
.enar2 )ika tidak$ maka +asilnya
sala+2
)h". etter
' aaaA
i7
(i&upper(etter
))
>out ?? B (uruH
upper>a&e!`nBA
e-+
e
>out ?? B (uruH bukan
upper>a&e!`nBA
Pada conto+ program diatas
menggunakan varia.el +uru5 yang
.erisi karakter +uru5 kecil$ maka
isupper akan sala+2 Se+ingga
statemen akan menye.a.kan pesan
yang muncul a+uru5 .ukan
uppercasea2 Ta.el di.awa+
merupakan da5tar .e.erapa 5ungsi
untuk menguji karakter2 Tiap6tiap
5ungsi diterapkan dalam 5ile +eader
cctype$ maka 5ile +eader +arus
dipastikan tertulis dalam program
ketika menggunakan 5ungsi terse.ut2
Ta.el #2=2 <ungsi Pengujian Karakter
FUN9
SI
KA2AKT
PEN&ELAS
AN
i&ap(a /eturn& betu (angka bukan angka no) -ika argu%en
adaa(
(uruH aHabet! /eturn& &aa( -ika argu%en bukan i&anu% /eturn betu (angka bukan angka no) -ika
argu%en berupa (uruH atau angka! Sebaiknya
return adaa( &aa(!
i&digit /eturn& betu (angka bukan angka no) -ika
argu%en adaa( angka 0 &a%pai 7! Sebaiknya
&eain itu &aa(!
i&oPer /eturn betu (angka bukan angka no) -ika
argu%en berupa (uruH ke>i! Sebaiknya -ika
tidak %aka &aa(!
i&print /eturn betu (angka bukan angka no) -ika argu%en
berupa
karakter yang dapat di>etak (ter%a&uk &pa&i)! -ika
tidak %aka
i&pun>t /eturn& betu (angka bukan angka no) -ika argu%en
yang
di>etak adaa( karakter &eain angka, (uruH, atau
ruang! Seain itu &aa(!
i&upper /eturn& betu (angka bukan angka no) -ika argu%en
adaa(
(uruH be&ar! Seain itu &aa( i&&pa>e /eturn betu (angka bukan angka no) -ika argu%en
berupa
karakter &pa&i, &eain itu &aa(!
Karakter &pa&i adaa( &aa( &atu dari karakter
berikut iniM &pa&i a a
="-
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
2$4$ De'kri('i ung'i Karakter
Program di.awa+ menggunakan
.e.erapa 5ungsi seperti pada ta.el
diatas2 9al terse.ut akan minta
pengguna untuk memasukan se.ua+
karakter dan selanjutnya tampilkan
se.agai pesan$ tergantung pada +asil
dari tiap 5ungsi yang digunakan2
Program #2""
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>>type@
*+i! "#e+(")e &tdA
it %ain()
6
)h". inputA
>out ?? B)a&ukan karakter beba&M BA
>in!get(input)A
>out ?? Bkarakter yang di%a&ukan adaa(M B ?? input ?? endA
>out ?? BKode ASCIInya adaa(M B ?? it(input) ?? endA
i7 (i&ap(a(input))
>out ?? BItu adaa( karater aHabet!`nBA
i7 (i&digit(input))
>out ?? BItu adaa( digit nu%erik!`nBA
i7 (i&oPer(input))
>out ?? B2uruH yang anda %a&ukan adaa( (uruH ke>i!`nBA
i7 (i&upper(input))
>out ?? B2uruH yang anda %a&ukan adaa( (uruH be&ar!`nBA
i7 (i&&pa>e(input))
>out ?? Bitu adaa( karakter &pa&i!`nBA
get>(()A
.et*. 0A
8
Keluaran Program adala+ se.agai .erikut:
)a&ukan karakter beba&M
g/Ete.0 karakter yang
di%a&ukan adaa(M g Kode
ASCIInya adaa(M 101
Itu adaa( karater
aHabet!
2uruH yang anda %a&ukan adaa(
(uruH ke>i!!
2008 | Direktorat Pembinaan SMK
=""
Bahasa Pemrograman perasi "tring
Program di.awa+ akan
menampilkan se.ua+ aplikasi praktis
mengenai 5ungsi uji karakter2
Program terse.ut menguji tuju+
karakter nomor pelanggan untuk
menentukan apaka+ sesuai dengan
5ormat atau .entuk yang tepat2
Program #2"%
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>>type@
*+i! "#e+(")e &tdA
b,,- te&tKu%()h". NO)A
),+t it K$)WF<K042
' 8A ),+t it
AFG2AWF<K042 ' 1A it
%ain()
6
)h". >u&to%erNK$)WF<K042OA
>out ?? B%a&ukan no%er peanggan daa% .or% BA
>out ?? BFFFKKKK`nBA
>out ?? B(FFF ' (uruH dan KKKK ' angka)M BA
>in!getine(>u&to%er, K$)WF<K042)A
i7 (te&tKu%(>u&to%er))
>out ?? BKo%er peanggan yang di%a&ukan 3aid`nBA
e-+e
6
>out ?? B(a ter&ebut tidak &e&uai dengan Hor%atBA
>out ?? Bangka peanggan!`n >onto(nya adaa( &eperti dibaPa( iniM`nBA
>out ?? B ABC1"1#`nBA
8
get>(()A
.et*. 0A
8
// <endefinisikan 1ungsi 0est)umb5
b,,- te&tKu%()h". >u&tKu%NO)
6
7,. (it >ount ' 0A >ount ? AFG2AWF<K042A >ount::)
6
i7 (_i&ap(a(>u&tKu%N>ountO))
="%
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
.et*. 7"-+eA
8
7,. (it >ount ' AFG2AWF<K042A >ount ? K$)WF<K042 ; 1A >ount::)
6
i7 (_i&digit(>u&tKu%N>ountO))
.et*. 7"-+eA
8
.et*. t.*eA
8
Keluaran program diatas adala+ se.agai .erikut:
%a&ukan no%er peanggan daa% .or%
FFFKKKK (FFF ' (uruH dan KKKK '
angka)M ABC1"1*
Ko%er peanggan yang di%a&ukan 3aid
Keluaran program diatas jika yang dimasukan sala+ adala+ se.agai .erikut:
%a&ukan no%er peanggan daa% .or%
FFFKKKK (FFF ' (uruH dan KKKK '
angka)M &a&HePHrP
(a ter&ebut tidak &e&uai dengan Hor%atangka
peanggan! >onto(nya adaa( &eperti
dibaPa( iniM
ABC1"1#
Dalam program diatas$ nomor
pelanggan di+arapkan terdiri dari
+uru5 al5a.et yang diikuti ole+ digit6
digit2 Kemudian 5ungsi te'tNum
menerima se.ua+ array dan menguji
karakter awal sesuai dengan
pengulangan .erikut ini:
7,. (>ount ' 0A >ount ?
AFG2AWF<KA
>ount::)
6
i7 (_
i&ap(a(>u&tKu%N>ountO))
.et*. 7"-+eA
8
<ungsi isalp+a untuk
mengem.alikan kondisi .enar jika
argumentasi adala+ satu karakter
al5a.et2 operator M digunakan
didalamnya$ jika statemen terse.ut
untuk menentukan apaka+ karakter
yang diuji .ukan .erupa al5a.et2 )ika
+al ini terjadi pada .e.erapa dari tiga
yang karakter pertama$ 5ungsi
test,um akan sala+2 Demikian juga$
karakter keempat .erikutnya diuji
dengan pengulangan .erikut ini:
7,. (>ount ' AFG2AWF<KA
>ount ? K$)WF<K042 ; 1A
>ount::)
6
i7 (_i&digit(>u&tKu%N>ountO))
.et*. 7"-+eA
8
<ungsi isdigit akan .ernilai .enar
jika argumentasi merepresentasikan
karakter tentang semua digit -
sampai @2 8perator M digunakan untuk
menentukan jika karakter yang diuji
.ukan se.ua+ digit2 7ni terjadi
.iasanya pada empat karakter
2008 | Direktorat Pembinaan SMK
="=
Bahasa Pemrograman perasi "tring
terak+ir$ 5ungsi test,um akan .ernilai
sala+2
)ika nomor pelanggan
mengggunakan .entuk yang tepat$
5ungsi terse.ut akan melalui siklus
kedua pengulangan tanpa ada +asil
yang nilai sala+2 Di kasus terse.ut$
garis terak+ir dalam 5ungsi terse.ut
adala+ statemen dengan +asil yang
.enar$ dimana +al terse.ut menandai
.a+wa nomor pelanggan adala+
valid2
2$"5$ KonBer'i Karakter
:i.rary !a+asa ABB
menyediakan dua 5ungsi$ toupper dan
tolower2 ntuk mengu.a+ kasus dari
se.ua+ karakter2 <ungsi terse.ut
digam.arkan pada Ta.el di.awa+ ini2
<ungsi ini merupakan prototype
dalam 5ile +eader cctype$ maka
pastikan untuk memasukkan dua
5ungsi didalamnya2
Ta.el #2?2 <ungsi Pengu.a+ Karakter
FUN9SI DEFINI
SI
toupper )enge%baikan (uruH be&ar &etara dengan
argu%en! tooPer )enge%baikan oPer>a&e &etara dengan
argu%en
Keduanya dari 5ungsi pada ta.el
diatas akan menerima se.ua+
representasi .ilangan integer kode
ASA77 dari suatu karakter yang
dikonversi dan mengem.alikan
representasikan .ilangan integer
Kode ASA77 dari +uru5 .esar atau
+uru5 kecil setara2 Tiap 5ungsi +anya
mengem.alikan argumentasinya$ jika
konversi tidak .isa di.uat atau tak
diperlukan2 Se.agai conto+$ jika
argumentasi terse.ut pada toupper
.ukan surat +uru5 kecil$ lalu toupper
+anya kem.alikan argumentasi yang
ada tanpa mengu.a+nya2 Prototipe
5ungsi65ungsi terse.ut adala+:
int toupper(int >()A
int tooPer(int >()A
kenyataannya 5ungsi dua veria.el ini
.ilangan integer pernyataan se.agai
.erikut:
>out ?? toupper(aaa)A //
print& ,*
pada potongan program diatas akan
mencetak .ilangan integer Kode
ASA77 dari _A02 ntuk mendapatkan
cetakan karakter$ maka dapat
memasukan +asil kenilai tipe data
c+ar$ seperti dalam potongan
program di.awa+ ini:
>out ??
&tati>W>a&t?>(ar@(toupper(aaa))
A
// prints
=
atau dapat juga dengan mem.eri
+asil ke nilai se.ua+ varia.el karakter
pertama dan kemudian karakter
terse.ut dicetak:
mengkem.alikan pada se.ua+ >(ar >( ' toupper(aaa)A
="?
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
>out ?? >(A //
print& A
Se.agaimana tela+ dise.utkan
diatas$ 5ungsi toupper akan
mengem.alikanya tanpa peru.a+an$
jika +al terse.ut .uka .erupa +uru5:
>out ??
&tati>W>a&t?>(ar@(toupper(aSa))
A
// print&
S
atau suatu +uru5 tetapi itu suda+
merupakan +uru5 .esar:
>out ??
&tati>W>a&t?>(ar@(toupper(aBa)A
// print&
B
Karena uraian mengenai toupper dan
tolower dilewati ole+ nilai$ 5ungsi
terse.ut tidak akan mengu.a+
parameter yang mereka miliki:
Se.agai gantinya$ mereka +anya
mengem.alikan ekivalensi +uru5
.esar atau +uru5 kecil2 Se.agai
conto+$ di dalam se.ua+ segmen
program yang .erikut$ varia.el +uru5
diatur menjadi nilai _A_2 <ungsi tolower
untuk mengem.alikan karakter _a0$
ketika +uru5 masi+ .erisi _A_2
>(ar etter '
UAVA
>(ar >( '
tooPer(etter)A
>out ?? >( ??
endA
>out ??
etterA
potongan program diatas kalau di
compile menampilkan +asil se.agai
.erikut:
a
A
Program .erikut di.awa+ untuk
mendemontrasikan 5ungsi toupper
dalam se.ua+ pengulangan sampai
ada kemungkian user memasukan
sala+ satu +uru5 Y atau ,2
Program #2"=
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>>type@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
it %ain()
6
),+t %,*b-e GI ' 1!1#1*7A
%,*b-e radiu&A
)h". goA
>out ?? BGrogra% untuk %eng(itung ua& ingkaran`nBA
>out ?? &etpre>i&ion(")A
>out ?? 5YedA
%,
6
2008 | Direktorat Pembinaan SMK
="'
Bahasa Pemrograman perasi "tring
>out ?? B)a&ukan -ari;-ari ingkaranM BA
>in @@ radiu&A
>out ?? BFua& ingkaran adaa( B ?? (GI E radiu& E radiu&)A
>out ?? endA
%,
6
>out ?? BAkan %eng(itung agiD (\ or K) BA
>in @@ goA
8 Ghi-e (toupper(go) _' a\a SS toupper(go) _' aKa)A
8 Ghi-e (toupper(go) '' a\a)A
get>(()A
.et*. 0A
8
Program keluaran program diatas adala+ .erikut
Grogra% untuk %eng(itung ua& ingkaran
)a&ukan -ari;-ari ingkaranM ++
Fua& ingkaran adaa( 18,",!#7
Akan %eng(itung agiD (\ or K) y
)a&ukan -ari;-ari ingkaranM "1
Fua& ingkaran adaa( 1,,1!70
Akan %eng(itung agiD (\ or K) n
2$""$ Menuli' 'tring
Setela+ mampu melewati materi
mengenai array$ maka anda dapat
menulis 5ungsi secara sendiri untuk
memproses se.ua+ string2 Se.agai
conto+$ program di.awa+ ini adala+
menggunakan se.ua+ 5ungsi untuk
melakukan copy atau menyalin string
dari satu array ke .entuk yang lain2
Program #2"?
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% &tringCopy()h". NO, )h". NO)A
it %ain()
6
),+t it SWF<K042 ' 10A
=">
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
)h". 5r&tNSWF<K042O, &e>ondNSWF<K042OA
>out ?? B%a&ukan &tring dengan tidak ebi( dari B
?? SWF<K042 ; 1 ?? B
karakterM`nBA
>in!getine(5r&t, SWF<K042)A
&tringCopy(5r&t, &e>ond)A
>out ?? BString yang anda %a&ukan adaa(M`nB ?? &e>ond ?? endA
get>(()A
.et*. 0A
8
// .e>nisi 1ungsi stringCopy *
5,i% &tringCopy()h". &tring1NO, )h". &tring"NO)
6
it indeY ' 0A
Ghi-e (&tring1NindeYO _' a`0a)
6
&tring"NindeYO ' &tring1NindeYOA
indeY::A
8
&tring"NindeYO ' a`0aA
8
Keluaran program diatas adala se.agai .erikut:
%a&ukan &tring dengan tidak ebi( dari
"7 karakterM (eo &aya &edang bea-ar
String yang anda %a&ukan
adaa(M
(eo &aya &edang
bea-ar
Yang perlu diper+atikan pada
program diatas adala+ pada 5ungsi
stringAopy yang tidak menerima satu
.entuk array2 Program terse.ut
+anya melakukan copy karakter6
karakter dari string" ke dalam string%
sampai menemui se.ua+ +al yang
dapat mengak+iri atau tanda null
dalam string"2
Ketika se.ua+ tanda yang
mengak+iri terse.ut ditemukan dan
pengulangan suda+ mencapai ujung
dri string$ statemen terak+ir dalam
5ungsi mem.eri suatu tanda .atal
3karakter _S-_ 4 +ingga selesai string%$
dengan demikian +al terse.ut dapat
diak+iri dengan .aik2
Program di.awa+ menggunakan
+andling 5unction 35ungsi untuk
menangani4 string: nameSlice2
Program akan minta pengguna itu
untuk memasukan nama awal dan
ak+ir pengguna$ yang dipisa+kann
ole+ spasi2 Kemudia 5ungsi mencari
string untuk spasi dan mengganti
2008 | Direktorat Pembinaan SMK
="(
Bahasa Pemrograman perasi "tring
dengan suatu terminator ak+ir2 Per+atikan program di.awa+ ini:
Program #2"'
=in>ude?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
5,i% potoganna%a()h". NO)A
it %ain()
6
),+t it GAKCAK0WKA)A ' #1A
)h". na%eNGAKCAK0WKA)AOA
>out ?? B)a&ukan na%a depan dan na%a ak(ir Anda dengan
dipi&a(kanBA
>out ?? Bdengan &pa&iM`nBA
>in!getine(na%e,
GAKCAK0WKA)A)A
potoganna%a(na%e)A
>out ?? BKa%a perta%a anda adaa(M B ?? na%e ?? endA
get>(()A
.et*. 0A
8
// .e>nisi 1ungsi potogan nama5
5,i% potoganna%a()h". u&erKa%eNO)
6
it >ount ' 0A
Ghi-e (u&erKa%eN>ountO _' a a SS u&erKa%eN>ountO _' a`0a)
>ount::A
i7 (u&erKa%eN>ountO '' a a)
u&erKa%eN>ountO ' a`0aA
8
Keluaran program diatas adala+ se.agai .erikut:
)a&ukan na%a depan dan na%a ak(ir Anda dengan
dipi&a(kandengan &pa&iM Supra indone&ia
Ka%a depan anda adaa(M &upra
Pengulangan pada varia.el
potongannama dimulai saat karakter
yang pertama dalam array dan
melakukan scan string$ kemudian
mencari .aik se.ua+ spasi atau
terminator null:
="#
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
P(ie (u&erKa%eN>ountO _
' a a SS u&erKa%eN>ountO
_' a`0a) >ount::A
)ika karakter dalam
user,ame[count\ .ukanla+ se.ua+
spasi atau terminator null$ count
akan ditam.a+ dengan karakter
.erikutnya yang akan diuji2 Dengan
conto+ memasukan string nama
depan dan nama .elakang supra
indonesia1$ pada program pengulang6
an menemukan pemisa+ spasi
Hsuprapto1 dan Hindonesia1$ pada
user,ame['\2 Ketika pengulangan
.er+enti$ count diatur sampai '2 Akan
le.i+ jelasnya jika memper+atikan
gam.ar di.awa+ ini:
Geruangan akan ber(enti ketika %ene%ukan tanda &pa&i atau
u&erKa%eN*O
& u p r a i n d o n e & i a `0
0 1 " 1 # * , + 8 7 10 11 1"
11 1# 1* 1, &ub&krip
!egitu pengulangan suda+
diselesaikan$ user,ame[count\ akan
.erisi sala+ satu spasi atau
terminator null2 )ika .erisi spasi$ dan
diikuti tanda i5 statemen kemudian
menggantikannya dengan terminator
null:
iH (u&erKa%eN>ountO '' a a)
u&erKa%eN>ountO ' a`0aA
se+ingga dapat diilustrasikan seperti
pada gam.ar di.awa+ ini:
/uangan diberi `0 atau tanda &ebagai &tring &ee&ai
& u p r a `0 i n d o n e & i a `0
0 1 " 1 # * , + 8 7 10 11 1" 11
1# 1* 1,
&ub&krip
2$"&$ Pointer untuk menguraikan String
Penunjuk pointer sangat
.erman5aat untuk menulis se.ua+
5ungsi proses pada string2 )ika
alamat awal se.ua+ string .eru.a+
menjadi se.ua+ varia.el parameter
penunjuk pointer$ maka akan dapat
diasumsikan .a+wa semua karakter
dari alamat tertinggi akan mena+an
tanda null menjadi .agian dari string2
Program di.awa+ menunjukkan
se.ua+ 5ungsi$ countA+ars$ yang
menggunakan penunjuk pointer untuk
2008 | Direktorat Pembinaan SMK
="@
Bahasa Pemrograman perasi "tring
meng+itung jumla+ karakter k+usus muncul didalam string2
Program #2">
=in>ude?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
// 1ungsi prototipe
it >ountC(ar&()h". E, )h".)A
it %ain()
6
),+t it GAKCAK0WS ' *1A
)h". u&erStringNGAKCAK0WSO, etterA
>out ?? B)a&ukan String (ebi( dari B ?? GAKCAK0WS;1 ?? B
karakter)M BA
>in!getine(u&erString, GAKCAK0WS)A
>out ?? B)a&ukan karakter dan &aya akan %eng(itung berapa`nBA
>out ?? Bkai yang %un>u daa% &tring yang tea( anda tui&M BA
>in @@ etterA
>out ?? etter ?? B )un>uM BA
>out ?? >ountC(ar&(u&erString, etter) ?? B kai!`nBA
get>( ()A
.et*. 0A
8
// .e>nisi countChars5
it >ountC(ar&()h". E&trGtr, )h". >()
6
it ti%e& ' 0A
Ghi-e (E&trGtr _' a`0a)
6
i7 (E&trGtr '' >()
ti%e&::A
&trGtr::A
8
.et*. ti%e&A
8
Keluaran program diatas adala+ se.agai .erikut:
=%-
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
)a&ukan String (ebi( dari *0 karakter)M &aya akan pergi
berangkat ke kantor
)a&ukan karakter dan &aya akan
%eng(itung berapa kai yang %un>u
daa% &tring yang tea( anda tui&M a a
)un>uM + kai!
Di dalam 5ungsi countA+ars$ strPtr
poin pada string terse.ut akan dicari
dan c+ .erisi karakter untuk mencari2
Pengulangan w+ile akan di ulangi
ketika panjang karakter strPtr poin
pada ak+ir .ukan terminator null:
P(ie (E&trGtr _'
a`0a)
Dalam pengulangan$ statemen i5
yang mengikutinya mem.andingkan
karakter strPtr poin dengan karakter
didalam c+:
iH (E&trGtr ''
>()
)ika keduanya sama$ varia.el times
akan diincrement2 Statemen yang
terak+ir dalam pengulangan terse.ut
adala+:
&trGtr:
:A
statemen increment menaikan alamat
dalam strPtr2 7ni menye.a.kan strPtr
akan menunjuk karakter .erikutnya
didalam se.ua+ string2 Kemudian
pengulangan memulai kem.ali2
Ketika strPtr ak+irnya menjangkau
terminator null$ pengulangan
mengak+iri dan 5ungsi
mengem.alikan nilai dalam 5ungsi
time2
2$")$ .la'' String (a%a .DD
Dari satu segi pandangan
metode pemrograman yang muda+$
li.rary standar class string
menawarkan .e.erapa keuntungan
pada string2 Ketika anda suda+
mengeta+ui dalam .a. ini$ class
string mempunyai .e.erapa anggota
5ungsi dan operator yang mempunyai
muatan le.i+2 9al ini jelas
menyeder+anakan tugas$ seperti
penempatan se.ua+ karakter atau
string di dalam suatu string$ yang jika
dilakukan tanpa 5ungsi akan
mengalami kesulitan dan
mem.osankan untuk melakukan
operasi string2
Setiap program class string
+arus menggunakan Yinclude
se.agai 5ile +eader string2 8.ject
string dapat diciptakan dengan
.e.erapa construktor2 Program
di.awa+ menunjukkan dua
construktor class string: se.agai
de5ault construktor dan konversi
konstruktor string ke menjdai o.yek
string2
Program #2"(
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?&tring@
*+i! "#e+(")e &tdA
2008 | Direktorat Pembinaan SMK
=%"
Bahasa Pemrograman perasi "tring
it %ain()
6
&tring u>apanA
&tring na%a(B&upraptoB)A
u>apan ' B2ao BA
>out ?? u>apan ?? na%a ?? endA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
2ao &uprapto
Supaya dapat mem.ua+ program
selain conto+ program diatas$
per+atikan ta.el pemakaian
konsruktor string yang di.erikan
dalam ta.el di.awa+ ini:
Ta.el #2'2 Pemakaian Konsruktor String
D<.IKI4IOK D<SC/IG4I
OK &tring aa%atA De5ni&i ob-ek &tring yang ang&ung di&ebutkan
&tring
na%a(B&upraptoB)A
)ende5ni&ikan &tring benda berna%a na%a,
diini&iai&a&i dengan B&upraptoB
&tring
per&on1(per&on")A
)ende5ni&ikan &tring benda berna%a
per&on1, yang
%erupakan &ainan dari per&on"! per&on"
%ungkin &aa( &atu ob-ek atau &tring karakter
&tring &et1(&et", *)A )ende5ni&ikan &tring berna%a &et1 ob-ek
yang
diini&iai&a&i untuk perta%a i%a
karakter daa% karakter array &et"!
&tring ine.u(aZa, 10)A )ende5ni&ikan &tring benda
berna%a ine.u diini&iai&a&i dengan
10 aZa karakter!
&tring
5r&tKa%e(HuKa%e,
0, +)A
)ende5ni&ikan &tring benda berna%a
Hir&tna%e,
diini&iai&a&i dengan &ub&tring dari &tring
HuKa%e! Sub&tring adaa( tu-u( karakter,
9al yang perlu diketa+i pada program
di.awa+$ menggunakan operator I
untuk mem.eri nilai o.yek string2
class string mem.eri muatan le.i+
pada .e.erapa operator$ yang
digam.arkan pada Ta.el di.awa+2
=%%
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
Ta.el #2>2 8perator String
O6E2LOADE
D
PEN&ELASAN OPE2ATO2
H
H
<k&trak karakter &trea% dan %a&ukkan karakter ke
daa% &tring!
Karakter akan di>opy &a%pai %ene%ui &pa&i atau
ak(ir kai%at dan &ekaigu& %en(itung karakter
@
@
)enyi&ipkan &tring ke daa% &trea%!
= )e%a&ukan &tring pada &ebea( kanan ke obyek
&tring pada &ebea( kiri!
3
=
)ena%ba(kan >opyan &tring pada &tring
&ebea( kanan ke obyek &tring pada &ebea(
kiri!
3 )enge%baikan &tring yang %erupakan
rangkaian dari dua operand &tring
/0 )eak&anakan tanda nota&i array, &eperti na%a NYO!
di%ana (a
ter&ebut %eru-uk pada karakter pada penge%baian 2e-"ti,"-
O(e."t,.+
)a&ing;%a&ing operator peng(ubung
dii%pe%enta&ikanM ? @ ?'
@' '' _'
Program di.awa+ digunakan untuk
mendemontrasikan se.agian dari
operator string
8
Program #2"#
&tr1 :' B02IBA
>out ?? &tr1 ?? endA
.et*. 0A
=in>ude
?io&trea%@
=in>ude
?&tring@
Keluaran program terse.ut diatas
adala+ se.agai .erikut:
*+i! "#e+(")e
&tdA
it %ain()
6
&tring &tr1, &tr",
&tr1A
&tr1 '
BABCBA
&tr" '
BD<.BA
&tr1 ' &tr1 :
&tr"A
>out ?? &tr1 ??
endA >out ??
&tr" ?? endA
>out ?? &tr1 ??
endA
ABC
D<.
ABCD
<.
ABCD<.02I
Alass string juga mempunyai
.e.erapa 5ungsi anggota2 Se.agai
conto+$ 5ungsi siQe mengem.alikan
panjang string2 9al terse.ut
didemontrasikan dalam pengulangan
<or pada program di.awa+ ini:
2008 | Direktorat Pembinaan SMK
=%=
Bahasa Pemrograman perasi "tring
Program #2"@
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?&tring@
*+i! "#e+(")e &tdA
it %ain()
6
&tring &tr1, &tr", &tr1A
&tr1 ' BABCBA
&tr" ' BD<.BA
&tr1 ' &tr1 : &tr"A
7,. (it Y ' 0A Y ? &tr1!&iZe()A Y::)
>out ?? &tr1NYOA
>out ?? endA
i7 (&tr1 ? &tr")
>out ?? B&tr1 adaa( ebi( ke>i daripada &tr"`nBA
e-+e
>out ?? B&tr1 tidak ebi( ke>i daripada &tr"`nBA
get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
ABCD<.
&tr1 adaa( ebi( ke>i daripada &tr"
Ta.el di.awa+ ini merupakan da5tar dari .anyak string yang merupakan
anggota class string variasi yang di.e.ankan2
Ta.el #2(2 Alass String Keanggotaan <ungsi
AN99OTA FUN9SI PEN&ELAS
AN t(eString!append(&tr)A )ena%ba(kan &tr ke t(eString! &tr bi&a
%en-adi ob-ek
atau &tring karakter array! t(eString!append(&tr, Y,
n)A
n -u%a( karakter dari &tr, di%uai pada
po&i&i Y, akan
dita%ba(kan ke t(eString! -ika 4(eString
terau ke>i, Hung&i akan %eakukan >opy
&e-u%a( karakter yang %ungkin bi&a
=%?
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
t(eString!append(&tr,
n)A
K karakter perta%a dari array karakter &tr
yang
dita%ba(kan ke t(eString! t(eString!append(n, aZa)A K %ena%ba(kan &ainan aZa untuk t(eString!
t(eString!a&&ign(&tr)A )e%berikan &tr ke t(eString! Gara%eter
&tr dapat %en-adi obyek &tring atau C;
&tring!
t(eString!a&&ign(&tr, Y,
n)A
-u%a( n karakter dari &tr, di%uai pada
po&i&i Y,
dituga&kan ke t(eString! -ika 4(eString
terau ke>i, Hung&i akan %enyain
t(eString!a&&ign(&tr, n)A karakter perta%a n dari array karakter &tr
dituga&kan
ke t(eString! t(eString!a&&ign(n, aZa)A )e%berikan &ainan n aZa %enu-u t(eString!
t(eString!at(Y)A )enge%baikan karakter pada po&i&i Y daa%
&tring! t(eString!begin()A Ke%bai pada &ebua( iterator yang
%enun-uk ke
karakter perta%a pada &tring! t(eString!>apa>ity()A )enge%baikan ukuran penyi%panan
diaoka&ikan
untuk &tring! t(eString!>ear()A )e%ber&i(kan &tring dengan %eng(apu&
&e%ua
karakter yang di&i%pan di daa%nya! t(eString!>o%pare(&tr)A )eakukan perbandingan &eperti Hung&i
&tr>%p
dengan niai yang &a%a ke%bai! &tr
bi&a %en-adi &tring ob-ek atau karakter
t(eString!>o%pare(Y, n,
&tr)A
)e%bandingkan t(eString dan &tr, %uai
dari po&i&i Y,
dan dian-utkan teru& untuk n karakter!
penge%baian niai &eperti &tr>%p! &tr bi&a
%en-adi ob-ek &tring atau karakter array!
t(eString!>opy(&tr, Y,
n)A
%enyain karakter &tr ke array t(eString,
%uai pada
po&i&i Y, untuk n karakter! 4(eString -ika
terau ke>i, %aka Hung&i akan %enyain
karakter &e%a%pu %ungkin!
t(eString!>W&tr()M )enge%baikan niai C;&tring &tring ob-ek!
t(eString!data()A Ke%bai karakter array yang beri&i nu &tring
di(entikan, karena di&i%pan daa%
t(eString!
t(eString!e%pty()A /eturn& true -ika t(eString ko&ong!
/eturn& true iH t(eString i& e%pty!
t(eString!end()A Ke%bai ke &ebua( iterator yang terak(ir
karakter dari
&tring di t(eString! ($ntuk inHor%a&i
ebi( an-ut tentang iterator&, i(at Bab
1*)!
/eturn& an iterator pointing to t(e a&t
>(ara>ter oH t(e &tring in t(eString! (.or
t(eString!era&e(Y, n)A <ra&e& n karakter dari t(eString, %uai di
po&i&i Y!
2008 | Direktorat Pembinaan SMK
=%'
Bahasa Pemrograman perasi "tring
<ra&e& n >(ara>ter& Hro% t(eString,
beginning at po&ition Y!
t(eString!Hind(&tr, Y)A Ke%bai po&i&i perta%a di uar atau di %ana
po&i&i Y
&tring &tr dite%ukan di t(eString!
Gara%eter &tr %ungkin &aa( &atu ob-ek
&tring atau C;&tring! Str -ika tidak
dite%ukan, po&i&i diuar ak(ir t(eString
dike%baikan!
/eturn& t(e 5r&t po&ition at or beyond
po&ition Y P(ere t(e &tring &tr i& Hound in
t(eString! 4(e para%eter &tr %ay be eit(er
a &tring ob-e>t or a C; &tring! IH &tr i& not
t(eString!Hind(aZa, Y)A Ke%bai po&i&i perta%a di uar atau di %ana
po&i&i Y aZa
yang dite%ukan di t(eString!
/eturn& t(e 5r&t po&ition at or beyond
po&ition Y P(ere aZa i& Hound in t(eString!in&ert(Y, &tr)A )enyi&ipkan &ainan &tr ke t(eString, %uai
di po&i&i Y! &tr %ungkin &aa( &atu ob-ek
atau &tring karakter
array
!
In&ert& a >opy oH &tr into t(eString,
beginning at po&ition Y! &tr %ay be
t(eString!in&ert(Y, n,
aZa)A
)enyi&ipkan aZa n kai %enu-u t(eString di
po&i&i Y! t(eString!engt(()A Gernyataan pan-ang &tring di t(eString!
/eturn& t(e engt( oH t(e &tring in t(eString!
t(eString!repa>e(Y, n,
&tr)A
)enggantikan n karakter di aPa t(eString di
po&i&i Y
dengan karakter daa% &tring &tr ob-ek!
/epa>e& t(e n >(ara>ter& in t(eString
beginning at po&ition Y Pit( t(e
t(eString!re&iZe(n, aZa)A Geruba(an be&arnya aoka&i di t(eString ke
n! K
kurang -ika dibandingkan dengan ukuran
&tring, &tring yang dipotong
untuk n karakter! Cika n ebi( be&ar, &tring
yang diperua& dan aZa yang dita%ba(kan
pada ak(ir Paktu yang >ukup untuk
%engi&i ruang;ruang baru!
=%>
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
i& e&& t(an t(e >urrent &iZe oH t(e &tring, t(e
&tring i&
trun>ated
to n >(ara>ter&! IH n i& greater, t(e &tring i&
eYpanded and aZa i& appended at t(e end
enoug( ti%e& to 5 t(e neP &pa>e&!
t(eString!&iZe()A Gernyataan pan-ang &tring pada t(eString!
t(eString!&ub&tr(Y, n)A Ke%bai %eakukan &ainan &uatu &ub&tring!
4(e
&ub&tring adaa( n karakter dan %uai
pada po&i&i Y dari t(eString!
t(eString!&Pap(&tr)A SPap& i&i dengan t(eString &tr!
2$"*$ Membuat .la'' String Sen%iri
Alass string pada .a+asa ABB
secara otomatis menangani .anyak
tugas6tugas yang terli.at dalam
penggunaan string$ seperti alokasi
memori dinamis dan memeriksa
margin dan lain se.againya2 7a juga
merupakann operator overload
seperti B dan I$ dan juga memiliki
.anyak anggota 5ungsi yang
memuda+kan dalam .ekerja dengan
string2 Dalam .e.erapa .agian$ kita
+arus mem.uat se.ua+ data tipe
string dengan .anyak kelas 5ungsi AB
B2
Dalam proses$ kita li+at misalnya
pada conto+ copy constructor
ke.eratan dan operator penu+ aksi$
serta conto+6conto+ teknik
pemrograman yang .erguna se.agai
solusi dari .er.aai masala+2 Kelas
*yString yang ditetapkan dalam
.agian ini adala+ jenis data a.strak
untuk menangani string2 *emiliki
.anyak keunggulan yang dimiliki ole+
kelas ABB string yang di.erikan ole+
Standard Template :i.rary:
*emori yang dteralokasi secara
dinamis untuk setiap string yang
tersimpan dalam *yString o.jek2
Programmer yang menggunakan
kelas ini tidak perlu k+awatir
dengan se.erapa .esar untuk
mem.uat array2
Strings mungkin akan ditugaskan
ke o.jek dengan *yString I
operator2 Programmer yang
menggunakan kelas ini tidak perlu
memanggil 5ungsi strcpy2
Satu string mungkin concatenated
lain dengan B I operator2 7ni
meng+ilangkan ke.utu+an untuk
5ungsi strcat2
Strings mungkin akan diuji untuk
kesetaraan dengan II operator2
Programmer yang menggunakan
kelas ini tidak perlu memanggil
5ungsi strcmp2
Pada se.ua+ Kelas *yString
memiliki pointer se.agai anggota dan
secara dinamis mengalokasikan
memori untuk menyimpan nilai string$
konstruksi salinan disediakan2 <ungsi
ini akan menye.a.kan o.jek diatur
dengan .enar datanya ketika
diinisialisasi dengan o.yek *yString
lain2
Kelas *yString memiliki %
overloaded I operator2 Yang pertama
adala+ untuk menempatkan satu
*yString ke o.jek lain2 5ungsi
8perator ini dipanggil ketika operand
di se.ela+ kanan dari tanda I adala+
2008 | Direktorat Pembinaan SMK
=%(
Bahasa Pemrograman perasi "tring
*yString o.jek$ seperti yang terli+at
pada segmen kode .erikut:
)yString 5r&t(B2eoB),
&e>ondA
&e>ond =
5r&tA
Kedua versi *yString I dari operator
untuk menempatkan tradisional string
ke *yString o.jek2 8perator 5ungsi ini
dipanggil ketika operand di kanan I
adala+ se.ua+ string konstan atau
pointer ke se.ua+ string 3seperti
nama se.ua+ c+ar array42 9al ini
ditunjukkan pada segmen program
.erikut:
)yString
na%eA
>(ar P(oNO '
BCi%%yBA
na%e =
P(oA
8perator B I dirancang untuk
mengga.ungkan string pada
*yString kanan ke kiri pada o.jek2
Seperti operator I$ *yString memiliki
dua versi I2 B Dersi pertama ini
dirancang untuk .ekerja pada saat
yang tepat operand adala+ *yString
o.yek lain$ seperti yang ditunjukkan
dalam program ini segmen:
)yString 5r&t(B2eo B),
&e>ond(BPordB)A
5r&t 3=
&e>ondA
Kedua versi dari operator B I akan
dipanggil ketika operand se.ela+
kanan adala+ string literal atau
pointer ke karakter :
)yString
5r&t(B2eo B)A
5r&t 3=
BTordBA
8.jek *yString yang memiliki
kele.i+an .e.an versi dari operator
II untuk melakukan ujian
kesetaraan2 Seperti operator lainnya$
versi yang pertama dirancang untuk
.ekerja dengan o.jek *yString
lainnya dan yang kedua dirancang
untuk .ekerja dengan string ABB
konvensional2 II <ungsi akan
kem.ali jika string .erada di se.ela+
kanan operand sesuai dengan
anggota str panggilan o.jek2 )ika
kedua operands string tidak cocok$
5ungsi return 5alse2 5ungsi 8perator ini
memungkinkan programmer
menggunakan kelas ini untuk
mem.angun peng+u.ung ekspresi
seperti ini:
)yString
na%e1(BSupraB),
na%e"(BSupraB)A
i7 (na%e1 ''
na%e")
>out ?? Bna%a adaa( &a%a!`nBA
e-+
e
>out ?? Bna%a adaa( berbeda`nBA
)yString
na%e1(BSupraptoB)A
i7 (na%e1 ''
BSupraB)
>out ?? Bna%a adaa( &a%a!`nBA
e-+
e
>out ?? Bna%a adaa( berbeda!`nBA
8.jek *yString memiliki dua
versi yan .erkele.i+an .e.an U le.i+
.esar daripada operator untuk
melakukan tes$ dan T operator untuk
melakukan kurang dari tes2 Dersi
pertama dari masing6masing
dirancang untuk .ekerja dengan
o.jek lain *yString dan yang kedua
ini dirancang untuk .ekerja dengan A
B B tradisional string2 35ungsi
perpustakaan menggunakan 5ungsi
strcmp untuk menentukan apaka+
se.ua+ le.i+ daripada atau kurang
daripada +u.ungan yang ada24
Se.ua+ 5ungsi U return .enar jika
str anggota panggilan o.jek le.i+
.esar daripada string dalam operand
=%#
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
kanan2 )ika tidak$ 5ungsi return 5alse2
Yang T5ungsi return true jika str
anggota panggilan o.jek kurang dari
string dalam operand kanan2 )ika
tidak$ mereka kem.ali palsu2
8perator 5ungsi ini memungkinkan
programmer menggunakan kelas ini
untuk mem.angun peng+u.ung
ekspresi seperti yang ditampilkan
dalam program ini segmen:
)yString
na%e1(BSupraptoB),
na%e"(BSupraB)A
i7 (na%e1 @
na%e")
>out ?? BSuprapto ebi( be&ar
daripada Supra`nBA
e-+
e
>out ?? BSuprapto tida
ebi( be&ar daripada
Supra!`nBA
)yString
na%e1(BSupraptoB)A
i7 (na%e1 ?
BSupraB)
>out ?? BSuprapto
ebi( ke>i
daripada
Supra!`nBA
e-+
e
>out ?? BSuprapto tidak
ebi( ke>i
daripada`nBA
Pada 5ungsi U I kem.ali .enar$
jika str anggota panggilan o.jek yang
le.i+ .esar dari atau sama dengan
string yang ada di se.ela+ kanan
operand2 )ika tidak$ 5ungsi return
sala+2 <ungsi TI return .enar jika str
anggota panggilan o.jek kurang dari
atau sama dengan string yang ada di
se.ela+ kanan operand2 )ika tidak$
mereka kem.ali palsu2 8perator
5ungsi ini memungkinkan programmer
menggunakan kelas ini untuk
mem.angun peng+u.ung ekspresi
seperti yang ditampilkan dalam
segmen program ini:
)yString
na%e1(BSupraptoB),
na%e"(BSupraB)A
i7 (na%e1 @' na%e")
>out ?? BSuprapto adaa(
ebi( be&ar atau &a%a
dengan Supra!`nBA
e-+e
>out ?? BSuprapto
ebi( ke>i
daripada
Supra!`nBA
)yString na%e1(BSupraptoB)A
i7 (na%e1 ?' BSupraB)
>out ?? BSuprapto ebi(
ke>i atau &a%a
dengan Supra!`nBA
8.jek *yString memiliki dua
versi U I operator untuk melakukan
operasi le.i+ .esar daripada atau tes
sama dengan$ dan TI operator untuk
melakukan kurang dari atau tes
kesamaan2 Dersi pertama dari
masing6masing dirancang untuk
.ekerja dengan o.jek lain *yString
dan yang kedua ini dirancang untuk
.ekerja dengan ABB tradisional
string2
e-+e
>out ?? BSuprapto ebi(
be&ar &a%a
dengan
Supra!`nBA
Program di.awa+ menunjukkan
.agaimana program *yString
memperli+atkan rangkaian stringnya2
Selain itu$ kode utama program
mendemonstrasikan .agaimana
*yString memungkinkan programmer
untuk memperlakukan string le.i+
.anyak yang lain seperti mengikutkan
tipa data didalamnya2
Program #2%-
2008 | Direktorat Pembinaan SMK
=%@
Bahasa Pemrograman perasi "tring
=in>ude ?io&trea%@
=in>ude B%y&tring!(B
*+i! "#e+(")e &tdA
it %ain()
6
)yString ob-e>t1(BIniB),
ob-e>t"(Badaa(B)A )yString
ob-e>t1(B%engu-i!B)A
)yString ob-e>t# ' ob-e>t1A // panggil copy constructor5
)yString ob-e>t*(Badaa( (anya %engu-i!B)A
)h". &tring1NO ' B&ebua( pengu-ian!BA
>out ?? BOb-e>t1M B ??
ob-e>t1 ?? endA >out ??
BOb-e>t"M B ?? ob-e>t" ??
endA >out ?? BOb-e>t1M B ??
ob-e>t1 ?? endA >out ??
BOb-e>t#M B ?? ob-e>t# ??
endA >out ?? BOb-e>t*M B ??
ob-e>t* ?? endA >out ??
BString1M B ?? &tring1 ?? endA
ob-e>t1 :' B BA
ob-e>t1 :'
ob-e>t"A
ob-e>t1 :' B BA
ob-e>t1 :'
ob-e>t1A
ob-e>t1 :' B BA
ob-e>t1 :'
ob-e>t#A
ob-e>t1 :' B BA
ob-e>t1 :'
ob-e>t*A
>out ?? Bob-e>t1M B ?? ob-e>t1 ?? endA
.et*. 0A
8
Keluaran Program diatas adala+ se.agai .erikut
Ob-e>t1M Ini
Ob-e>t"M
adaa(
Ob-e>t1M
%engu-i!
Ob-e>t#M Ini
Ob-e>t*M adaa( (anya
%engu-i! String1M &ebua(
pengu-ian!
ob-e>t1M Ini adaa( %engu-i! Ini (anya %engu-i &ebua( pengu-ian!
2$"+$ Stu%i Ka'u'
==-
Direktorat Pembinaan SMK| 2008
perasi "tring Bahasa Pemrorgraman
Se.agai programmer untuk
programmer lanjut pada So5tware
Enterprises$ kita .iasanya akan
diminta untuk mengem.angkan satu
kelas yang .ernama mata penyisipan
koma dan tanda dolar 3L4 di lokasi
yang sesuai dalam se.ua+ string
yang .erisi jumla+ dolar tidak
di5ormat2 Kelas konstruktor +arus
menerima string o.jek atau pointer ke
string .a+asa A yang .erisi nilai
seperti "-#?'>($#@2 Kelas +arus
menyediakan 5ungsi anggota yang
mengem.alikan o.ek string menjadi
sejumla+ 5ormatted6dollar$ seperti L
"2-#?2'>($#@2
Ta.el #2#2 Keanggotaan Daria.el
1E1BE2
6A2IABEL
PEN&ELAS
AN Origina Obyek &tring %ena(an &tring a&i
yang ber&iHat unHor%atted!
Hor%atted Obyek &tring %ena(an &tring yang ber&iHat
Hor%atted!
Ta.el #2@2 <ungsi Keanggotaan
FUN9SI
KEAN99OTAAN
PEN&ELAS
AN Con&tru>tor Di&ertakan daa% obyek &tring &ebagai
argu%en! Obyek
di&ain ke origina %e%ber, dan
%e%anggi Hung&i keanggotaan
doar.or%at )enyain keanggotaan origina %en-adi
Hor%at
%e%ber! 4anda ko%a dan doar
di&ertakan daa% %e%a&ukkan ke oka&i
getOrigina )enga%baikan keanggotaan origina
get.or%atted )enge%baikan bentuk keanggotaan
Program #2%"2 Penggunaan class
=in>ude ?io&trea%@
=in>ude ?&tring@
=in>ude B>urren>y!(B
*+i! "#e+(")e &tdA
it %ain()
6
&tring inputA
>out ?? B)a&ukan -u%a( doar ke rekening dengan Hor% nnnnn!nn M
BA
>in @@ inputA
Curren>y doar&(input)A
>out ?? Bdi&ini rekening diaturM`nBA
2008 | Direktorat Pembinaan SMK
=="
Bahasa Pemrograman perasi "tring
>out ?? doar&!get.or%atted() ?? endA
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut9
)a&ukan -u%a( doar ke rekening dengan Hor% nnnnn!nn M M
1084MN7K8J/Ete.0
di&ini rekening diaturM
b1,08#,*,+!87
2$",$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan string
%2 Tulisla+ program seder+ana dengan string untuk menampilkan tulisan
a9allo saya siswa smka
=2 !uatla+ program untuk mengga.ungkan dua string a+elloa dan aapa
k+a.ara
?2 Apa per.edaan anatara string dengan pointer
'2 Tulisla+ program yang menggunakan pointer untuk operasi string
>2 Se.utkan .e.erapa 5ungsi string pada .a+asa cBB
(2 Tulisla+ program yang digunakan untuk mem.andingkan dua string
#2 Se.utkan 5ungsi untuk menangani string pada .a+asa cBB
@2 !uatla+ program untuk mengkonversi string
"-2 Apa yang dimaksud dengan 5ungsi topupper dan tolower
""2 Se.utkan .e.erapa operator string pada .a+asa cBB
==%
Direktorat Pembinaan SMK| 2008
(rray Bahasa Pemrorgraman
BAB 4
ARRAO
@2"2 Pengertian Array
@2%2 Deklarasi Array
@2=2 7nisialisasi Array
@2?2 Array multi dimensi
@2'2 *engurutkan element Array
@2>2 Aonto+ program array
@2(2 Soal :ati+an
4$"$ Pengertian Arra3
Tipe data array menjelaskan
jangkauan nilai yang dapat
ditampung pada se.ua+ varia.el dan
kumpulan operasi yang dapat
dilakukan ter+adap varia.el terse.ut2
Dengan pengecualian pada string
karakter$ semua tipe yang tela+
dipelajari sampai saat ini +anya dapat
menampung se.ua+ nilai2
Pada saat tertentu program yang
di.uat di.utu+kan untuk
menyelesaikan suatu permasala+an
yang dike+endaki suatu varia.el yang
dapat menampung .anyak nilai2
Se.agai conto+ varia.el skor
.arangkali mencatat skor ujian dari
"-- siswa2 Demikian juga varia.el
gaji mungkin menampung gaji yang
.erlainan dari masing6masing
pegawai suatu perusa+aan2
Array adala+ struktur data yang
dapat menyimpan sejumla+ nilai
.ertipe sama$ se.agai conto+ kita
dapat menciptakan se.ua+ array
yang dapat menampung "-- nilai
.ertipe int dan array kedua yang
dapat menampung %' nilai .ertipe
5loat2 Setiap nilai yang ditugaskan ke
array +arus .ertipe sama dengan
array terse.ut
Array adala+ varia.el yang
mampu menyimpan sejumla+ nilai
yang .ertipe sama2 ntuk
mendeklarasikan se.ua+ array$ +arus
dise.utkan tipe dari array yang di.uat
misalnya int$ 5loat atau dou.le dan
juga ukuran array2 ntuk menentukan
ukuran array$perlu ditempatkan
jumla+ nilai yang dapat disimpan
array dalam se.ua+ tanda kurung
kurawal siku yang terletak sesua+
nama array2
Deklarasi .erikut se.agai conto+
untuk menciptakan array .ernama
skor yang mampu menyimpan "--
skor nilai yang .ertipe int2
int
&korN100OA
Pada saat dideklarasikan se.ua+
array$ compiler A mengalokasikan
memori yang cukup untuk
2008 | Direktorat Pembinaan SMK
===
Bahasa Pemrograman (rray
menampung semua elemen sesuai
dengan yang dideklarasikan2
*asukan pertama .erada pada lokasi
-2 Se.agai conto+ .erdasarkan array
skor$ pernyataan .erikut menugaskan
nilai #- pada elemen pertama dari
array
&korN0O '
80A
Karena elemen pertama dari
array dimulai dengan o55set -$ maka
elemen terak+ir dari array adala+
satu lokasi se.elum ukuran array2
!erdasarkan array skor diatas$
pernyataan .erikut menugaskan nilai
ke elemen terak+ir dari array2
&korN77O '
+*A
ntuk inisialisasi array ada
.e.erapa macam yang sering
dilakukan se.agai conto+ per+atikan
potongan program .erikut ini :
)h". titeNO ' BDa&ar
Ge%rogra%anBA
)h". &e>tion N,#O '
BArray&BA
Pada kasus yang pertama$
compiler A akan mengalokasikan "(
.yte untuk menampung string2 Pada
kasus yang kedua$ compiler akan
mengalokasikan array >? .yte$
menginisialisasi enam karakter yang
yang pertama dengan +uru56+uru5
HArrays1 dan karakter ,::2
Ke.anyakan compiler juga akan
menginisialisasi lokasi .yte6.yte
tersisa dengan ,::2 Pada saat
dideklarasikan array dengan tipe lain$
kita juga dapat menginisialisasinya
dengan cara yang sama2 Se.agai
conto+ pernyataan .erikut
menginisialisasi array integer scores
dengan nilai #-$ (-$ @-$ #' dan #-2
int &>ore&N*O ' 680, +0, 70, 8*, 808 A
Pada saat kita menugaskan nilai
awal ke suatu array $ kita +arus
melingkupi nilai6nilai terse.ut dengan
tanda kurung kurawalWX2 Dalam +al
ini$ ukuran array sesuai dengan
jumla+ nilai yang ditugaskan ke array2
Akan tetapi pernyataan .erikut akan
menugaskan empat nilai titik
mengam.ang ke array yang dapat
menyimpan >? nilai2
^oat &aarie&N,#O
'6"*00000!0,
1"00000!0, ##00000!0, **00000!08A
Tergantung dari compiler yang
digunakan$ nilai6nilai yang ditugaskan
ke elemen6elemen yang tidak secara
eksplisit ditugaskan mungkin diisi
dengan -2 Se.agai pegangan kita
+arus tidak menganggap .a+wa
compiler akan menginisialisasi
elemen6elemen yang lain2 )ika kita
tidak menye.utkan ukuran array$
kompiler akan mengalokasikan
memori yang +anya cukup untuk
menampung nilai6nilai yang
dise.utkan2 Deklarasi array .erikut
menciptakan array yang cukup
menampung tiga .ua+ nilai yang
.ertipe long2
ong panet&NO ' 61"1#F, *,+8F,
1"1#+F8A
Array adala+ suatu varia.el yang
terdiri dari sekumpulan data dimana
data6data terse.ut mempunyai tipe
data yang sama2 Setiap data
disimpan dalam alamat memori yang
.er.eda6.eda dan dise.ut dengan
elemen array2 Setiap elemen
mempunyai nilai indek sesuai dengan
urutannya2 *elalui indek inila+ kita
dapat mengakses data6data terse.ut2
==?
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
7ndek dari elemen array ini$ .aik
dalam .a+asa ABB maupun )ava
dimulai dari -$ .ukan " seperti dalam
.a+asa Pascal2
Dalam .e.erapa literatur$ array
sering dise.ut 3diterjema+kan4
se.agai larik2 Array adala+ kumpulan
dari nilai6nilai data .ertipe sama
dalam urutan tertentu yang
menggunakan se.ua+ nama yang
sama2 ,ilai6nilai data di suatu array
dise.ut dengan elemen6elemen
array2 :etak urutan dari elemen6
elemen array ditunjukkan ole+ suatu
subscript atau indeks2 Suatu array
.erdimensi satu dideklarasikan dalam
.entuk umum .erupa:
tipeWdata
na%aW3arNukuranOA
dimana :
tipe]data : untuk menyatakan tipe
dari elemen array$ misalnya int,
char, float2
nama]var : nama varia.el array
ukuran : untuk menyatakan jumla+
maksimal elemen array2
Aonto+ pendeklarasian array :
^oat
niaiWte&N*OA
pada program diatas menyatakan
.a+wa array nilai:te' mengandung '
elemen .ertipe float2 Pada .a+asa A$
data array akan disimpan dalam
memori yang .erurutan2 Elemen
pertama mempunyai indeks .ernilai
-2 )ika varia.el nilai:te'
dideklarasikan se.agai array dengan
' elemen$ maka elemen pertama
memiliki indeks sama dengan -$ dan
elemen terak+ir memiliki indeks ?2
!entuk umum pengaksesan array
adala+:
na%aW3arNind
ek&O
se+ingga$ untuk array nilai:te'$
maka:
niaiWte&N0O ee%en
perta%a dari niaiWte&
niaiWte&N#O ee%en ke;
* dari niaiWte&`
per+atikan conto+ .erikut ini:
niaiWte&N0O '
+0A
&>anH(IRHJ,
SniaiWte&N"O)A
Aonto+ pertama merupakan
pem.erian nilai (- ke nilai:te'S5T2
Sedangkan conto+ % merupakan
perinta+ untuk mem.aca data
.ilangan dari key.oard dan di.erikan
ke nilai:te'S&T2 Pada conto+ % ini
SniaiWte&N
"O
.erarti Halamat dari nilai]tes[%\12 Perlu
diingat .a+wa scanf.* memerlukan
argument .erupa alamat dari varia.el
yang digunakan untuk menyimpan
nilai masukan2 Selengkapnya
per+atikan conto+ program di .awa+
ini2
Se.ua+ array dapat diinisialisasi
sekaligus pada saat dideklarasikan2
ntuk mendeklarasikan array$ nilai6
nilai yang diinisialisasikan dituliskan
di antara kurung kurawal 3WX4 yang
dipisa+kan dengan koma2
int -u%N1"O ' 611, "8, 11, 10,
11, 10, 11,
11, 10, 11, 10,
118A
Ada .e.erapa variasi cara
mendeklarasikan se.ua+ array
3dalam +al ini yang .erdimensi satu4$
di antaranya adala+ se.agai .erikut :
2008 | Direktorat Pembinaan SMK
=='
Bahasa Pemrograman (rray
int num.ers["-\N
int num.ers["-\ I W=?$ %($ ">XN
int num.ers[ \ I W%$ 6=$ ?'$ (@$ 6"?$
'$ @$ %#$ 6"$ -XN
c+ar te&t[ \ I a/elcome to ,ew
Realand2aN
5loat radi&["%\ I W"=?2=>%$
"@"=2%?#XN
dou.le radians["---\N
Array dideklarasikan dengan tanda [ \
3.racket4$ .aik dalam .a+asa ABB
dan )ava2 !entuk umum dari tipe
data array adala+ :
tipeWdata
na%aWarrayN-u%a(Wee%enO
)ika ingin mendeklarasikan
se.ua+ array dengan tipe data
integer dengan nama a dan jumla+
elemen array6nya "- maka kodenya
adala+ :
int
aN10OA
Dalam .a+asa )ava
pendeklarasian array le.i+ variari52
Selain dengan kode seperti di atas$
)ava juga dapat mendeklarasikan
array dalam .entuk :
intN O
aA
Kemudian setela+ melakukan
deklarasi array$ .aik dengan kode
yang pertama maupun yang kedua$
)ava +arus menciptakan 3mem.uat4
o.jek terle.i+ da+ulu se.elum array
dapat digunakan karena dalam )ava
array merupakan se.ua+ Alass2 Aara
menciptakan o.jek array dalam )ava
adala+ :
a ' neP
intN10OA
Dalam )ava pendeklarasian
array dan pem.uatan o.jek array
dapat dilakukan alam satu sintak$
yaitu :
intN O a ' neP
intN10OA
atau
int aN O ' neP
intN10OA
!aik ABB maupun )ava$ untuk
mengakses elemen array$ misalnya
elemen ke6"- dari array dan
kemudian menampung nilainya
dalam se.ua+ varia.el &$ maka
sintaknya adala+ :
Y'aN
7OA
ntuk memasukkan data ke dalam
array$ sintak yang digunakan adala+ :
aNno%orWee%enO '
dataA
aN0O '
*A aN1O
' ,A
aN"O '
+A
dan
&eteru&nya!
Agar le.i+ e5isien dan e5ekti5$
maka pemasukan data dalam array
dapat menggunakan perulangan
seperti .erikut ini :
Hor (i'0A i?-u%a(WdataA
i::) 6 >out ?? IaNI
?? i ?? IO ' IA >in
@@ aNiOA
8
!erikut conto+ program lengkap
dalam .a+asa ABB adala+ :
Program @2"
==>
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it aN10O,-u%a('10A
b,,- >ari(it >ariData,it n<e%en) 6
it
iA
7,.(i'0A i?n<e%enA
i::) 6 i7(aNiO
'' >ariData)
b.e"'A
8
i7(i '' n<e%en) .et*. 7"-+eA
e-+e .et*. t.*eA
8
5,i% input(it data,it i) 6
aNiO ' dataA
8
5,i% (apu&(it data,it n<e%en) 6
it iA
7,.(i'0A i?n<e%enA
i::) 6 i7(
data '' aNiO )
b.e"'A
8
i7(i''n<e%en) >out ?? BDataB?? data ?? Btidak ter(apu& (tidak
ada)B ?? endA
e-+e 6
7,.(it -'iA -?n<e%en;
1A -::) 6
aN-O '
aN-:1OA
8
>out ?? BData B ?? data ?? B di(apu&B ?? endA
8
8
5,i% ta%pi(it n<e%en) 6
7,.(it i'0A i?n<e%enA i::)
>out ?? aNiO ?? B BA
>out ?? endA
8
5,i% %ain() 6
it
dataA
7,.(it i'0A
i?-u%a(A i::)
6 >out ?? BaNB ?? i
?? BO ' BA >in @@
dataA
input(data
,i)A
8
2008 | Direktorat Pembinaan SMK
==(
Bahasa Pemrograman (rray
ta%pi(-u%a()A
it >ariData ' 1"A
i7 (>ari(>ariData,-u%a()''7"-+e)
>out ?? BData B ?? >ariData ?? B tidak dite%ukanB ??
endA
e-+e
>out ?? BData B ?? >ariData ?? B dite%ukanB ?? endA
(apu&(87,-u%
a()A -u%a(;;A
(apu&(0,-u%a
()A -u%a(;;A
ta%pi(-u%a()
A
8
Program di atas terdiri dari
empat 5unction yaitu 5unction cari34
yang digunakan untuk mencari data
dalam array$ 5unction input34
digunakan untuk memasukkan data
dalam array$ +apus34 untuk
meng+apus data dalam array$ dan
5unction tampil34 untuk menampilkan
data dalam array2
Keempat 5unction terse.ut
kemudian dipanggil satu per satu
ole+ program utama adala+ kode
untuk memasukkan data dalam array
dengan argumen pemanggilan
5unction input34 se.anyak sepulu+ kali
dengan menggunakan perulangan2
Setela+ memasukkan data
selesai$ maka data yang tela+
dimasukan dalam array kemudian
ditampilkan dengan menggunakan
argument2 <unction tampil34
mengakses data array satu persatu
dan kemudian menampilkannya2
Pencarian data dilakukan ole+
program utama2 <unction pencarian
data ini 3cari344 dilakukan dengan
mengunjungi atau mengakses data
array satu persatu dan kemudian
mem.andingkan data pada setiap
elemen indek dengan data yang
dicari2 )ika nilai datanya sama
dengan nilai data yang dicari$ maka
proses pencarian data di+entikan2
)ika tidak$ maka pencarian terus
dilakukan sampai semua data array
diakses2 )ika proses pencarian yang
dilakukan sama dengan jumla+
elemen array$ maka data yang dicari
tidak ditemukan2 Proses pencarian
seperti ini merupakan metode linier
atau sekuensial 3:inear C Se^uential
Searc+42
Program ini melakukan proses
peng+apusan data se.anyak dua kali
dimana setiap kali melakukan
peng+apusan data maka jumla+
elemen array dikurangi satu2
Keluaran dari program terse.ut adala+:
aN0O '
18 aN1O
' 1"
aN"O '
1# aN1O
' ##
aN#O '
87 aN*O
' 1#
==#
Direktorat Pembinaan SMK |
2008
(rray Bahasa Pemrorgraman
aN,O '
,1 aN+O
' "#
aN8O '
,+ aN7O
' 1
18 1" 1# ## 87 1# ,1
"# ,+ 1
Data 1"
dite%ukan
Data 87
di(apu&
Data 0 tidak ter(apu&
?tidak ada@
" 1# ## 1# ,1
"# ,+
4$&$ Deklara'i Arra3
Array adala+ varia.el yang
mampu menyimpan sejumla+ nilai
yang .ertipe sama2 ntuk
mendeklarasikan se.ua+ array$ +arus
dise.utkan tipe dari array yang di.uat
misalnya int$ 5loat atau dou.le dan
juga ukuran array2 ntuk menentukan
ukuran array$perlu ditempatkan
jumla+ nilai yang dapat disimpan
array dalam se.ua+ tanda kurung
kurawal siku yang terletak sesua+
nama array2 Deklarasi .erikut
se.agai conto+ untuk menciptakan
array .ernama skor yang mampu
menyimpan "-- skor nilai yang
.ertipe int2
int
&korN100OA
Pada saat dideklarasikan
se.ua+ array$ compiler A
mengalokasikan memori yang cukup
untuk menampung semua elemen
sesuai dengan yang dideklarasikan2
*asukan pertama .erada pada lokasi
-2 Se.agai conto+ .erdasarkan array
skor$ pernyataan .erikut menugaskan
nilai #- pada elemen pertama dari
array
&korN0O ' 80A
Karena elemen pertama dari
array dimulai dengan o55set -$ maka
elemen terak+ir dari array adala+
satu lokasi se.elum ukuran array2
!erdasarkan array skor diatas$
pernyataan .erikut menugaskan nilai
ke elemen terak+ir dari array2
&korN77O ' +*A
7nisialisasi array adala+
pem.erian nilai de5ault pada array2
Pem.erian nilai de5ault ini dilakukan
pada saat array dideklarasikan2
!entuk umum dari inisialisasi
array ini adala+ se.agai .erikut :
tipeWdata
na%aWarrayN-u%a(Wee%enO '
6niai1,niai",c,niaiK8
,ilai didalam kurung kurawal dise.ut
dengan 7nitialiQation :ist2
int aN10O ' 6 0, 1, ,, 7, 1", 1*, 18,
"1, "#,
"+ 8A
ntuk le.i+ jelasnya$ per+atikan
conto+ .erikut ini :
Program @2%2
2008 | Direktorat Pembinaan SMK
==@
Bahasa Pemrograman (rray
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it aN*O'6",#,,,8,108,-u%a('*A
5,i% input(it data,it i) 6
aNiO '
dataA
8
5,i% ta%pi(it n<e%en) 6
7,.(it i'0A
i?n<e%enA i:
:) >out ?? aNiO
?? B BA >out
?? endA
8
5,i% %ain() 6
it dataA
>out ?? BBeu% ada peruba(an data arrayB ?? endA
ta%pi(-u%a()A
7,.(it i'0A i?-u%a(A i::)6
>out ?? BaNB ?? i ?? BO ' BA
>in @@ dataA
input(data,i)A
8
>out ?? BSetea( ada peruba(an data arrayB ?? endA
ta%pi(-u%a()A
8
Keluaran dari program di atas adala+ :
Beu% ada peruba(an data array
" # , 8
10 aN0O
' 1"
aN1O '
#1 aN"O
' ,+
aN1O '
1# aN#O
' #8
&etea( a&a peruba(an data array
1" #1 ,+ 1# #8
Program di atas mempunyai tipe
data array yang .erisi lima elemen
dimana nilai de5ault dari kelima
elemen array terse.ut adala+ %$ ?$ >$
#$ "- se+ingga ketika data array
dipanggil atau ditampilkan maka
array suda+ mempunyai data$ tidak
kosong seperti +alnya pada kode
.erikut ini2
=?-
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
Program @2=2
=in>ude ?io&trea%@
*+i! "#e+(")e &td
it aN*O,-u%a('*A
5,i% input(it data,it i) 6
aNiO '
dataA
8
5,i% ta%pi(it n<e%en) 6
7,.(it i'0A
i?n<e%enA i:
:) >out ?? aNiO
?? B BA >out
?? endA
8
5,i% %ain() 6
it dataA
>out ?? BBeu% ada peruba(an data arrayB ?? endA
ta%pi(-u%a()A
7,.(it i'0A i?-u%a(A i::)6
>out ?? BaNB ?? i ?? BO ' BA
>in @@ dataA
input(data,i)A
8
>out ?? BSetea( ada peruba(an data arrayB ?? endA
ta%pi(-u%a()A
8
Keluaran program diatas adala+ se.agai .erikut:
Beu% ada peruba(an
data array
0 0 0 0
0 aN0O
' 1"
aN1O '
11 aN"O
' 1#
aN1O '
1* aN#O
' 1,
&etea( ada peruba(an
data array
1" 11 1# 1*
1,
Kedua program di atas sama2
!edanya program utama tipe data
array6nya diinisialisasi$ sedangkan
program yang kedua tidak
diinisialisasi se+ingga pada waktu
dipanggil pertama kali nilainya masi+
kosong2 !aik pada program pertama
maupun yang kedua$ merupakan
kode untuk memasukkan data .aru
pada array yang artinya data atau
nilai de5ault dari array ditimpa dengan
data yang .aru2
2008 | Direktorat Pembinaan SMK
=?"
Bahasa Pemrograman (rray
4$)$ !ni'iali'a'i Arra3
ntuk inisialisasi array ada
.e.erapa macam yang sering
dilakukan se.agai conto+ per+atikan
potongan program .erikut ini :
>(ar titeNO ' IDa&ar
Ge%rogra%anJA
>(ar &e>tion N,#O ' IArray&JA
Pada kasus yang pertama$
compiler A akan mengalokasikan "(
.yte untuk menampung string2 Pada
kasus yang kedua$ compiler akan
mengalokasikan array >? .yte$
menginisialisasi enam karakter yang
yang pertama dengan +uru56+uru5
HArrays1 dan karakter ,::2
Ke.anyakan compiler juga akan
menginisialisasi lokasi .yte6.yte
tersisa dengan ,::2
Pada saat dideklarasikan array
dengan tipe lain$ kita juga dapat
menginisialisasinya dengan cara
yang sama2 Se.agai conto+
pernyataan .erikut menginisialisasi
array integer scores dengan nilai #-$
(-$ @-$ #' dan #-2
int &>ore&N*O ' 680, +0, 70, 8*,
808 A
Pada saat kita menugaskan nilai
awal ke suatu array $ kita +arus
melingkupi nilai6nilai terse.ut dengan
tanda kurung kurawalWX2 Dalam +al
ini$ ukuran array sesuai dengan
jumla+ nilai yang ditugaskan ke array2
Akan tetapi pernyataan .erikut akan
menugaskan empat nilai titik
mengam.ang ke array yang dapat
menyimpan >? nilai2
^oat &aarie&N,#O '
6"*00000!0,
1"00000!0, ##00000!0,
**00000!08A
Tergantung dari compiler yang
digunakan$ nilai6nilai yang ditugaskan
ke elemen6elemen yang tidak secara
eksplisit ditugaskan mungkin diisi
dengan -2 Se.agai pegangan kita
+arus tidak menganggap .a+wa
compiler akan menginisialisasi
elemen6elemen yang lain2 )ika kita
tidak menye.utkan ukuran array$
kompiler akan mengalokasikan
memori yang +anya cukup untuk
menampung nilai6nilai yang
dise.utkan2 Deklarasi array .erikut
menciptakan array yang cukup
menampung tiga .ua+ nilai yang
.ertipe long2
ong panet&NO ' 61"1#F, *,+8F,
1"1#+F8A
4$*$ Arra3 Multi Dimen'i
Array multi dimensi adala+ suatu
array yang mempunyai le.i+ dari satu
su.skrip2 Array multi dimensi ini
aplikasinya antara lain untuk matrik2
Adapun deklarasi dari array multi
dimensi adala+ :
tipeWda
ta
na%aWarrayN-u%a(Wee%en
Wbari&O
N-u%a(Wee%enWkoo%OA
4$*$"$ Arra3 Satu Dimen'i
!anyak array yang +anya
memiliki satu dimensi$ seperti
sejumla+ orang dari setiap umur2
=?%
Direktorat Pembinaan SMK | 2008
(rray
Bahasa Pemrorgraman
Satu6satunya
persyaratan untuk seperti array menggunakan dua
menentukan elemen adala+ usia indeks2 ;am.ar .erikut menyatakan
yang .erpendapat .a+wa unsur
+itungan2 Karena itu$ seperti array
+anya menggunakan satu indeks
varia.el array dua dimensi
saja2 ;am.ar .erikut menyatakan
varia.el array satu6dimensi2
;am.ar @2"2 Array Satu Dimensi
;am.ar @2%2 Array Dua Dimensi
4$*$&$ Arra3 Dua Dimen'i
4$*$)$ Tiga Dimen'i
!e.erapa array memiliki tiga
Ada .e.erapa array dua dimensi$
dimensi$ seperti nilai dalam tiga
seperti jumla+ kantor6kantor di setiap
dimensi ruang2 Seperti array
lantai di setiap gedung kampus2
menggunakan tiga indeks$ yang
Spesi5ikasi yang memerlukan kedua
dalam +al ini mewakili &$ y$ Q dan
elemen .angunan dan jumla+ lantai$
koordinat dari ruang 5isik2 gam.ar
dan setiap elemen yang .erpendapat
.erikut menyatakan varia.el untuk
.a+wa untuk meng+itung kom.inasi
mengadakan array tiga dimensi2
.angunan dan lantai2 Karena itu$
;am.ar @2=2 Array = Dimensi
2008 | Direktorat Pembinaan SMK
=?=
- " % =
- " % = ?
" ' > ( #
% @ "- "" "%
Bahasa Pemrograman (rray
ntuk le.i+ jelasnya mengenai
array multi dimensi di.awa+ ini
di.erikan .e.erapa conto+ array2
Arrai di.awa+ ini merupakan matrik %
P % yang menggunakan array2
int %atrikN"ON"OA
!erikut adala+ conto+ program
lengkapnya:
Program @2?2
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain(5,i%) 6
it t, i,
%atrikN1ON#OA
7,.(t'0A t?1A
t::) 7,.(i'0A
i?#A i::)
%atrikNtONiO ' (tE#):i:1A
7,.(t'0A t?1A t::) 6
7,.(i'0A i?#A i::)
>out ?? %atrikNtONiO ?? B BA
>out ?? endA
8
.et*. 0A
8
Keluaran dari program di atas adala+ :
1 " 1 #
* , + 8
7 10 11 1"
t
t
!aris ke6' sampai ke6( adala+
pemasukan data pada matrik2
Sedangkan .aris ke6# sampai ke6"%
adala+ menampilkan data matrik2
Pada kedua proses terse.ut$
pemasukan data dan menampilkan
data terdapat dua .ua+ perulangan
dimana perulangan pertama adala+
untuk mengidenti5ikasi .aris dari
matrik dan perulangan kedua untuk
mengidenti5ikasi kolom dari matrik2
!erikut ini adala+ conto+ untuk
penjumla+an dua .ua+ matrik2
=??
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
Program @2'2
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain(5,i%) 6
it t, i, AN1ON#O,BN1ON#O,CN1ON#OA
7,.(t'0A t?1A t::)
7,.(i'0A i?#A i::)
ANtONiO '
(tE#):i:1A >out ??
B)A4/IK AB ?? endA
7,.(t'0A t?1A t::) 6
7,.(i'0A i?#A i::)
>out ??ANtONiO ?? B BA
>out ?? endA
8
7,.(t'0A t?1A t::)
7,.(i'0A i?#A i::)
BNtONiO ' (tE#):i:1A
>out ?? endA
>out ?? B)A4/IK BB ?? endA
7,.(t'0A t?1A t::) 6
7,.(i'0A i?#A i::)
>out ??BNtONiO ?? B BA
>out ?? endA
8
7,.(t'0A t?1A t::)
7,.(i'0A i?#A i::)
CNtONiO ' ANtONiO:BNtONiOA
>out ?? endA
>out ?? B)A4/IK C ' A : BB ?? endA
7,.(t'0A t?1A t::) 6
7,.(i'0A i?#A i::)
>out ??CNtONiO ?? B BA
>out ?? endA
8
.et*. 0A
8
Keluaran program :
)A4/IK A
2008 | Direktorat Pembinaan SMK
=?'
Bahasa Pemrograman (rray
1 " 1 #
* , + 8
7 10 11 1" 11
)A4/IK B
1 " 1 #
* , + 8
7 10 11 1"
)A4/IK C ' A :B
" # , 8
10 1" 1#1,
18 "0 "" "#
4$+$ Mengurutkan Elemen Arra3
Ada .anyak sekali metode untuk
mengurutkan data$ antara lain
E&c+ange Sort$ Selection Sort$
7nsertion Sort$ !u..le Sort$ `uick
.eru.a+ atau tidak2 )ika nilai
indek mengalami peru.a+an
maka data ke6" ditukar dengan
data indek!
Sort$ S+ell Sort$ !inary 7nsertion Sort$ %2 Pada proses %: varia.el indek
dan masi+ .anyak lagi2 di.eri nilai % 3data ke6%4 kemudian
Dari sekian .anyak metode$ data indek di.andingkan dengan
+anya metode E&c+ange Sort$ data ke6=2 )ika data indek le.i+
!u..le Sort$ dan 7nsertion Sort saja .esar maka nilai indeknya diganti
yang akan kita .a+as karena ketiga dengan = 3data ke6=42
metode ini merupakan metode yang Kemudian data indek
paling muda+ dan .anyak digunakan2
ntuk metode Selection Sort
langka+6langka+nya adala+ se.agai
.erikut :
"2 Proses ": varia.el indek di.eri
nilai " 3data ke6"4 kemudian data
indek di.andingkan dengan data
ke6%2 )ika data indek le.i+ .esar
maka nilai indeknya diganti
dengan % 3data ke6%4$ jika tidak
nilai indeknya tetap2
Kemudian data indek
di.andingkan lagi dengan data
ke6=$ le.i+ .esarG ,ilai indek
ditukarM Demikian seterusnya2
Setela+ selesai$ nilai indek
diperiksa apaka+ nilai indek
di.andingkan lagi dengan data
ke6?$ le.i+ .esarG ,ilai indek
ditukarM Demikian seterusnya2
Setela+ selesai$ nilai indek
diperiksa apaka+ nilai indek
.eru.a+ atau tidak2 )ika nilai
indek mengalami peru.a+an
maka data ke6% ditukar dengan
data indek!
=2 Demikian untuk proses
selanjutnya dimana .anyak
prosesnya adala+ jumla+ elemen
array dikurangi satu2
!erikut program lengkap metode
Selection Sort dalam .a+asa ABB
adala+:
=?>
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
Program @2>
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it aN10OA
5,i% input(it data,it i) 6
aNiO '
dataA
8
5,i% ta%pi() 6
7,.(it i'0A i?10A i::)
>out ?? aNiO ?? B BA
>out ?? endA
8
5,i% tukar(it data1, it data") 6
-,! te%p ' aNdata1OA aNdata1O ' aNdata"OA
aNdata"O ' te%pA
8
5,i% &ee>tionSort() 6
it i,-,indekA
7,.(i'0A i?*;1A i::) 6
indek'iA
7,.(-'i:1A -?*A -::)
i7(aNindekO @ aN-O )
indek'
-A
tukar(i,indek)A
8
8
5,i% %ain()
6 input(*+,0
)A
input(87,1)A
input(#7,")A
input(*1,1)A
input(1",#)A
input(70,*)A
input(1,,)A
input(0,+)A
input(,1,8)A
input("*,7)A
ta%pi()A
&ee>tionSor
t()A
2008 | Direktorat Pembinaan SMK
=?(
Bahasa Pemrograman (rray
ta%pi()A
8
Keluaran program diatas adala+ se.agai .erikut :
*+ 87 #7 *1 1" 70 1 0 ,1 "*
1" #7 *1 *+ 87 70 1 0 ,1 "*
*etode !u..le Sort mempunyai =2 Demikian seterusnya sampai data
langka+6langka+ se.agai .erikut : terak+ir$ se+ingga data
"2 *em.andingkan data ke6" kedudukannya akan .ergeser6
dengan data ke6%$ jika data ke6" geser2
le.i+ .esar$ maka kedua data ?2 ntuk proses %$ pem.andingan
ditukar2 3pergeseran data4 +anya sampai
%2 Kemudian mem.andingkan data pada data terak+ir dikurangi satu2
ke6% dengan data ke6=$ jika data Kode program lengkapnya dalam
ke6% le.i+ .esar$ kedua data
ditukar lagi2
.a+asa ABB adala+ se.agai .erikut :
Program @2(
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it aN10OA
5,i% input(it data,it i) 6
aNiO '
dataA
8
5,i% ta%pi() 6
7,.(it i'0A i?10A i::)
>out ?? aNiO ?? B BA
>out ?? endA
8
5,i% tukar(it data1, it
data") 6 -,! te%p
' aNdata1OA
aNdata1O '
aNdata"OA aNdata"O
' te%pA
8
5,i% bubSort() 6
it i, -A
7,.(i'10;1A i@1A i;;)
7,.(-'0A -?iA -::)
i7( aN-O @ aN-:1O ) tukar(-, -:1)A
8
=?#
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
5,i% %ain()
6 input(*
+,0)A
input(87,
1)A
input(#7,
")A
input(*1,
1)A
input(1",
#)A
input(70,
*)A
input(1,,)
A
input(0,+)
A
input(,1,
8)A
input("*,
7)A
ta%pi()A
bubSort()
A ta%pi()A
8
Keluaran program diatas adala+ se.agai .erikut:
*+ 87 #7 *1 1" 70 1 0 ,1 "*
0 1 1" "* #7 *1 *+ ,1 87 70
*etode 7nsertion Sort mirip
dengan cara orang mengurutkan
kartu selem.ar demi selem.ar$ kartu
diam.il dan disisipkan 3insert4 ke
tempat yang se+arusnya2 Adapun
langka+6langka+nya adala+ se.agai
.erikut :
Pengurutan dimulai dari data ke6%
sampai dengan data terak+ir2
)ika ditemukan data yang le.i+
kecil atau le.i+ .esar$ maka akan
ditempatkan 3diinsert4 diposisi
yang se+arusnya
Program selengkapnya dalam
.a+asa ABB adala+ :
Program @2#2
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it aN10OA
5,i% input(it data,it i) 6
aNiO ' dataA
8
5,i% ta%pi() 6
7,.(it i'0A i?10A i::)
>out ?? aNiO ?? B BA
>out ?? endA
8
5,i% in&ertionSort() 6
2008 | Direktorat Pembinaan SMK
=?@
Bahasa Pemrograman (rray
it i,-A
7,.(i'1A i?10A i::) 6
-,! te%p ' aNiOA
-'iA
Ghi-e(-@0 SS aN-;1O @' te%p) 6
aN-O ' aN-;1OA
;;-A
8
aN-O ' te%pA
8
8
5,i% %ain()
6 input(*+,0
)A
input(87,1)A
input(#7,")A
input(*1,1)A
input(1",#)A
input(70,*)A
input(1,,)A
input(0,+)A
input(,1,8)A
input("*,7)A
ta%pi()A
in&ertionSor
t()A ta%pi()A
8
Keluaran programnya adala+ se.agai .erikut:
*+ 87 #7 *1 1" 70 1 0 ,1 "*
0 1 1" "* #7 *1 *+ ,1 87 70
4$,$ .ontoh Program Arra3
Di.awa+ ini merupakan
.e.erapa conto+ program yang
.ekerja menggunakan array2 Array
merupakan varia.el yang mampu
menyimpan sejumla+ nilai yang
.ertipe sama2 Pada conto+ di.awa+
ini menggunakan array yang .ekerja
satu dimensi maupun multidimensi
3dimensi dua atau tiga42 ntuk le.i+
jelasnya per+atikan .e.erapa conto+
di.awa+ ini:
Program @2@2
Program di .awa+ ini untuk mem.aca data kemudian menampilkannya2
=in>ude?io&trea%!(@
=in>ude?>onio!(@
='-
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
*+i! "#e+(")e &tdA
5,i% %ain()
6
it dataN10OA // array dengan &/ elemen bertipe integer
it ee%enA
// entri &/ data
7,. (ee%en'0Aee%en ?' 7Aee%en::)
6
>out ?? BData ke ; B ?? ee%en ?? BM BA
>in @@ dataNee%enOA
8
// tampilkan data setelah entri
7,. (ee%en'0Aee%en ?' 7Aee%en::)
6
>out ?? BData ke ; B ?? ee%en ?? BM B ?? dataNee%enOA
8
8
Aatatan: Dalam ACABB elemen array dimulai dari -2
Program @2"-2
Program untuk menampilkan data array dari +asil inisialisasi:
in>ude?io&trea%!(@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
5,i% %ain()
6
it dataN*O ' 6#, 1, 0, ;7, 88A
it ee%enA
// tampilkan data
7,. (ee%en'0Aee%en ?' #Aee%en::)
6
>out ?? BData ke ; B ?? ee%en ?? BM B ?? dataNee%enOA
8
8
Program @2""2
2008 | Direktorat Pembinaan SMK
='"
Bahasa Pemrograman (rray
Program untuk mencari data dari array$ dan menampilkan nomor elemennya2
=in>ude?io&trea%!(@
=in>ude?>onio!(@
5,i% %ain()
6
it YA
it dataN10O ' 6#, 1, 0, ;7, 8, *, ;1, ", 1, ;+8A
it ee%en, kete%uA
>out ?? BData yang di>ari M BA
>in @@ YA
kete%u ' 0A
7,.(ee%en'0A ee%en?' 7A ee%en::)
6
i7 (dataNee%enO '' Y)
6 kete%u
'_
kete%
uA
b.e"'A
8
8
i7 (kete%u '' 0) >out ?? BData tidak dite%ukan BA
e-+e >out ?? BData ada di ee%en M B ?? ee%enA
8
Program @2"%2
Program untuk menampilkan data ter.esar 3maks4 dari suatu array2
=in>ude?io&trea%!(@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
5,i% %ain()
6
it dataN10O ' 6#, 1, 0, ;7, 8, *, ;1, ", 1, ;+8A
it ee%en, %aYA
%aY ' dataN0OA
7,.(ee%en'0A ee%en?' 7A ee%en::)
6
i7 (dataNee%enO@%aY) %aY ' dataNee%enOA
e-+e %aY ' %aYA
8
>out ?? BKiai %ak&i%u% adaa( M B ?? %aYA
8
='%
Direktorat Pembinaan SMK | 2008
(rray Bahasa Pemrorgraman
Array di atas adala+ array dimensi satu2 !agaimana dengan array dimensi
duaG !erikut ini conto+ penggunaan array dua dimensi:
Program @2"=2
=in>ude?io&trea%!(@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
5,i% %ain()
6
it -, kA
it dataN*ON1O '6 61, #, ;18, 6", 1, 08, 61, 1, "8, 6*, 7, ;#8, 6,, ,, "8 8A
7,. (- ' 0A -?'#A -::)
6
7,. (k ' 0A k?'"A k::)
>out ?? BdataNB ?? - ?? BONB?? k ?? BO ' B ?? dataN-ONkO ?? endA
8
8
4$-$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan array
%2 Apa kele.i+an dan kekurangan program menggunakan array
=2 !agaimana cara mendeklarasikan array
?2 !agaimana cara menginisialisasi array
'2 !uatla+ program penjumla+an matrik dengan menggunakan array %
dimensi
>2 !uatla+ sala+ satu program pengurutan dengan array
2008 | Direktorat Pembinaan SMK
='=
Bahasa Pemrograman (rray
='?
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
BAB$ "5
REKURS!
"-2"2 Pengertian Rekursi5
"-2%2 Pengertian Teknik 7terati5
"-2=2 Per.andingan Teknik Rekursi5 dan Teknik 7terati5
"-2?2 Algoritma Teknik Rekursi5
"-2'2 Algoritma Teknik 7terati5
"-2>2 Penerapan Algoritma Rekursi5
"-2(2 Penerapan Algoritma 7terati5
"-2#2 Soal :ati+an
"5$"$ Pengertian Rekur'iC
Rekursi adala+ konsep
pengulangan yang penting dalam
ilmu komputer2 Konsep ini dapat
digunakan untuk merumuskan solusi
seder+ana dalam se.ua+
permasala+an yang sulit untuk
diselesaikan secara iterati5 dengan
menggunakan loop 5or$ w+ile do2
Pada saat tertentu konsep ini
dapat digunakan untuk
mende5inisikan permasala+an
dengan konsisten dan seder+ana2
Pada saat yang lain$ rekursi dapat
mem.antu untuk mengekspresikan
algoritma dalam se.ua+ rumusan
yang menjadikan tampilan algoritma
terse.ut muda+ untuk dianalisa2
Rekursi5 adala+ sala+ satu
metode dalam dunia matematika
dimana de5inisi se.ua+ 5ungsi
mengandung 5ungsi itu sendiri2
Dalam dunia pemrograman$ rekursi
diimplementasikan dalam se.ua+
5ungsi yang memanggil dirinya
sendiri2 Atau Rekursi5 merupakan
satu teknik pemrograman dengan
cara memanggil se.ua+ 5ungsi dari
dirinya sendiri$ .aik itu secara
langsung maupun tidak langsung2
Pemanggilan 5ungsi rekursi5 secara
langsung .erarti dalam 5ungsi
terse.ut terdapat statement untuk
memanggil dirinya sendiri sedangkan
secara tidak langsung .erarti 5ungsi
rekursi5 terse.ut memanggil " atau
le.i+ 5ungsi lain se.elum memanggil
dirinya sendiri2
<ungsi rekursi5 langsung
merupakan rekursi5$ jika ekspresi
yang merealisasikan 5ungsi terse.ut
mengandung aplikasi ter+adap 5ungsi
terse.ut2
/eai&a
&i
. (?i&t;
para%@)
depend
on
?kondi&i;ba&i&@ M ?ek&pre&i;1@
2008 | Direktorat Pembinaan SMK
=''
Bahasa Pemrograman /e)ursif
?kondi&i;rekuren&i@ M .
?ek&pre&i
;"@
<ungsi rekursi5 tidak langsung
merupakan realisasi 5ungsi yang
dapat cross-recursif yaitu jika
realisasi 5ungsi 5 mengandung 5ungsi
g yang realisasinya adala+ aplikasi
ter+adap 52
/eai&a
&i
0 (?i&t;para%@)M .
(?ek&pre&i;1@) . (?i&t;
para%@)M
depend
on
?kondi&i;ba&i&@ M
?ek&pre&i;1@
?kondi&i;rekuren&i@ M 0
?ek&pre&i
;"@
<ungsi merupakan su. program
yang sangat .erman5aat dalam
pemrograman$ terutama untuk
program atau proyek yang .esar2
*an5aat penggunaan su.program
antara lain adala+ :
*eningkatkan readibility$ yaitu
mempermuda+ pem.acaan
program
*eningkatkan modularity$ yaitu
memeca+ sesuatu yang .esar
menjadi modul6modul atau .agian6
.agian yang le.i+ kecil sesuai
dengan 5ungsinya$ se+ingga
mempermuda+ pengecekan$
testing dan lokalisasi kesala+an2
*eningkatkan reusability$ yaitu
suatu su. program dapat dipakai
.erulang kali dengan +anya
memanggil su. program terse.ut
tanpa menuliskan perinta+6
perinta+ yang semestinya diulang6
ulang2
Su. Program Rekursi5 adala+
su.program yang memanggil dirinya
sendiri selama kondisi pemanggilan
dipenu+i2 Dengan meli+at si5at su.
program rekursi5 di atas maka su.
program rekursi5 +arus memiliki :
kondisi yang menye.a.kan
pemanggilan dirinya .er+enti
3dise.ut kondisi k+usus atau
special condition4
pemanggilan diri su. program
3yaitu .ila kondisi k+usus tidak
dipenu+i4
Secara umum .entuk dari su.
program rekursi5 memiliki statemen
kondisional :
i7 kondi&i k(u&u& tak
dipenu(i
the panggi diri;&endiri dengan
para%eter yang &e&uai
e-+e akukan in&truk&i yang akan
diek&eku&i bia kondi&i k(u&u&
dipenu(i
Su. program rekursi5 umumnya
dipakai untuk permasala+an yang
memiliki langka+ penyelesaian yang
terpola atau langka+6langka+ yang
teratur2 !ila kita memiliki suatu
permasala+an dan kita mengeta+ui
algoritma penyelesaiannya$ kadang6
kadang su. program rekursi5 menjadi
pili+an kita .ila memang
memungkinkan untuk dipergunakan2
Secara algoritmis 3dari segi
algoritma$ yaitu .ila kita
mempertim.angkan penggunaan
memori$ waktu eksekusi su.
program4 su. program rekursi5 sering
.ersi5at tidak e5isien 2
Dengan demikian su. program
rekursi5 umumnya memiliki e5isiensi
dalam penulisan perinta+$ tetapi
kadang tidak e5isien secara
algoritmis2 *eskipun demikian
.anyak pula permasala+an6
permasala+an yang le.i+ sesuai
diselesaikan dengan cara rekursi5
3misalnya dalam pencarianC
searching42
='>
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
ntuk dapat mema+ami proses
yang terjadi dalam se.ua+ 5ungsi
rekursi5 $ per+atikan conto+ 5ungsi
rekursi5 .erikut :
5,i% rekur&i (it a,
it b)
6
IH (b''0) .et*.A
a::A
b;;A
>out??B)a&uk ` nB??a
??bA
rekur&i(a,b)A
>out??BKeuar ` nB??a
??bA
8
*isalkan <ungsi terse.ut
dipanggil dengan nilai a I = dan . I =
maka pertama tama di cek apaka+ .
I - 3i5 3. II -4 return4$ jika sama
maka keluar2 Ternyata nilai . tidak
sama dengan - maka tam.a+kan a
dengan " dan kurangi . dengan "2
*aka keadaan sekarang menjadi a I
? dan . I % 2 !aris .erikutnya
menampilkan nilai a dan . ke layar
3print5 coutTTa*asuk S naTTa TT.N42
Kemudian panggil 5ungsi rekursi
dengan nilai a I ? dan . I % 2
:angka+ E langka+ terse.ut diulang
terus sampai pemanggilan 5ungsi
rekursi dengan nilai a I > dan . I -2
Pada saat ini kondisi i5 .ernilai .enar
se+ingga 5ungsi akan keluar 3return4
dan melanjutkan perinta+ setela+
pemanggilan 5ungsi rekursi dengan a
I > dan . I -2 Yaitu mencetak nilai a
dan . 3coutTTaKeluar SnaTTa TT .N42
Setela+ mencetak nilai a dan .
maka 5ungsi rekursi5 akan keluar lagi
$ dan melanjutkan perinta+ setela+
pemanggilan 5ungsi rekursi5
se.elumnya dimana nilai a I ' dan .
I " 2
Demikian seterusnya sampai nilai a I
? dan nilai . I %2 yang tidak lain
pemanggilan 5ungsi rekuri5 yang
pertama2 Proses pemanggilan 5ungsi
rekursi5 dapat diilustrasikan:
L"!'"h
'eO
/ekur&iH (1,1) 1 a'# A b'" ! Cetak M %a&uk a'# ff
b'"
1 , " a'* A b'1 ! Cetak M %a&uk a'* ff
b'1 /ekur&iH (#,") 1 a', A b'0 ! Cetak M %a&uk a', ff
b'0 " * # a', A b'0 ! Cetak M keuar a', ff
b'0 /ekur&iH (*,1) * a'* A b'1 ! Cetak M keuar a'* ff
b'1 1 # , a'# A b'" ! Cetak M keuar a'# ff
/ekur&iH (,,0)
;am.ar "-2"2 Proses Pemanggilan <ungsi Rekursi5
Penggunaan 5ungsi rekursi5
misalnya pada 5ungsi pangkat$
5aktorial$ dan .arisan 5i.onacci2 *ari
kita li+at satu demi satu2 Dalam
5ungsi pangkat &y $ kita ta+u .a+wa
semua .ilangan selain -$ jika
dipangkatkan dengan - nilainya
sama dengan "2 )ika & dipangkatkan
2008 | Direktorat Pembinaan SMK
='(
Bahasa Pemrograman /e)ursif
dengan y$ dengan y le.i+ dari -$
maka +asilnya sama dengan &
dikalikan dengan & dipangkatkan y E
"2 )ika dituliskan dalam notasi
matematika de5inisinya adala+
se.agai .erikut:
Kita li+at di atas pada de5inisi y U
-$ .entuk pemangkatan muncul
kem.ali di sisi kanan2 7tula+ yang
dise.ut rekursi52 De5inisi rekursi5
selalu dimulai dengan kasus
penyetop$ peng+enti$ atau kasus
dasar dari suatu permasala+an$
dalam +al ini terjadi ketika nilai y I
-2 De5inisi rekursi5 yang le.i+
kompleks mengandung inti dari
permasala+an yang akan
dipeca+kan$ namun le.i+ seder+ana2
Dalam +al ini yang tadinya &
dipangkatkan dengan y$ kini .entuk
pemangkatan menjadi le.i+
seder+ana$ yaitu y E "2 9al ini
dimaksudkan untuk Hmenggiring1
masala+ kompleks ke kasus dasar
atau penyetop rekursinya2 ntuk & I
"- dan y I -$ +asil dari &y adala+ "2
ntuk & I "- dan y I = +asilnya
dapat digam.arkan se.agai .erikut:
Konsep rekursi5itas .anyak
ditemui di dunia nyata2 7stila+ ini
muncul pertama kali di kajian .idang
matematika2 Dalam kasus tertentu$
konsep ini memuda+kan perumusan
5ormula2 Konsep ini pun di5asilitasi
dalam pemrograman2
Dalam pemrograman$ ada %
terminologi yang .isa dide5inisikan
dengan rekursi5$ yaitu prosedur dan
5ungsi2 Seperti +alnya dalam .idang
matematika$ penggunaan konsep ini
juga untuk memuda+kan
pende5inisian dua terminologi
terse.ut2 !a+kan terdapat suatu
masala+ yang +anya .isa
diselesaikan dengan rekursi5itas dan
sangat sulit untuk diselesaikan tanpa
rekursi5itas2
De5inisi rekursi5 +arus memuat
komponen ba'i' dan komponen
rekur'iC2 Dalam pemrograman$
komponen ini dapat dipisa+kan
dengan menggunakan perinta+
analisa kasus2 *isalkan e" adala+
ekspresi kondisi untuk .asis dan e&
adala+ ekspresi kondisi untuk .agian
rekursi5$ de5inisi rekursi5 dapat
dituliskan:
i7 (e1)
the
6bagian ba&i&8
e-+
e
6bagian rekur&iH8
Sala+ satu conto+ dari kasus
rekursi5 adala+ .arisan .ilangan
5i.onacci2 !arisan .ilangan 5i.onacci
adala+ "$ "$ %$ =$ '$ #$ "=$ %"$ 222 2
De5inisi .arisan .ilangan 5i.onacci
adala+ se.agai .erikut2 *isalkan
5i.onacci3i4 menyatakan .ilangan
5i.onacci yang ke6i$ maka:

fibonacci(i 1) + fibobacci(i
2)
fibonacci(i) =

,i > 2

1 ,i = 1,2
='#
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
Program "-2"2 Penerapan .ilangan <i.onaci dengan rekursi
=in>ude ?io&trea%@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
it .ibona>i(it)A
it %ain()
6
it n'+A
7,. (it i'1A i?'nA i::)
>out??B `ndata B?? .ibona>i(i)A
get>(()A
.et*. 0A
8
it .ibona>i(it n)
6
i7
(n?'")
.et*.
nA e-+e
.et*.(.ibona>i(n;
"):.ibona>i(n;1))A
8
Keluaran program diatas adala+:
data 1
data "
data 1
data *
data 8
data
11
data
"1
Rekursi5 adala+ suatu method
yang memanggil dirinya sendiri
secara langsung maupun tidak
lansung2 Rekursi5 merupakan teknik
pemrograman yang sangat .erguna2
Dalam .e.erapa kasus$
menggunakan cara rekursi
memuda+kan pengem.angan
program secara natural$ langsung$
dan simple dalam memeca+kan
pro.lem yang susa+ dipeca+kan2
ntuk le.i+ mema+ami rekursi5
per+atikan conto+ .erikut: Aonto+
yang umum untuk mema+ami teknik
rekursi5 adala+ masala+ 5actorial2
2008 | Direktorat Pembinaan SMK
='@
Bahasa Pemrograman /e)ursif
#_ ' # Y 1 Y " Y 1
1_ ' 1 Y " Y 1
"_ ' " Y 1
1_ ' 1
Dari conto+ di atas .isa diu.a+
cara pandangnya menjadi:
#_ ' # Y 1_
1_ ' 1 Y "_
"_ ' " Y 1_
1_ ' 1
Dengan catatan .a+wa -M I "
maka cara pandang yang kedua .isa
dlanjutkan menjadi:
#_ ' # Y 1_
1_ ' 1 Y "_
"_ ' " Y 1_
1_ ' 1
0_ ' 1
Aara pandang yang kedua inila+
yang dise.ut rekursi5$ karena dalam
proses per+itungan selalu memanggil
dirinya sendiri2 Yaitu 5actorial
memanggil 5actorial2 Akan tetapi perlu
dicatat .a+wa teknik rekursi5 ini +arus
ada terminasinya atau ada saat
.er+entinya2 Pada conto+ 5actorial ini
adala+ -M2 Yaitu sama dengan "
.ukan -2 Dalam istila+ matematika -M
ini dise.ut dengan base step2
Sedangkan .agian yang lain dise.ut
recursive step2 Secara umum rumus
5actorial dalam .entuk rekursi5
menjadi se.agai .erikut:
0_ ' 1A base
step
n_ ' n Y (n d 1)_A n @ 0
recursie step
)adi proses rekursi5 itu akan
selalu memanggil dirinya sendiri
dengan varia.le yang .er.eda$ dan
terus dilakukan sampai mencapai
base step se.agai terminasinya2
Setela+ terminasi maka akan
mendapatkan +asil dan selanjutnya
+asil terse.ut dikem.alikan ke
pemanggilnya untuk dilakukan
per+itungan2 9al itu dilanjutkan
sampai ke pemanggil yang pertama
se+ingga mendapatkan +asil
se.agaimana mestinya2 7lustrasi
.erikut mem.eri gam.aran tentang
proses rekursi52
=>-
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
#_ ' # Y
1_ ,
1_ ' 1 Y
"_ "
"_ ' " Y
1_
1
1_ ' 1 Y
0_
1
0_ ' 1
;am.ar "-2%2 7lustrasi Tentang Proses Rekursi52
"5$&$ Pengertian Teknik !teratiC
Teknik 7terati5 adala+ teknik
perulangan atau meng+itung secara
.erulang2 Teknik ini meman5aatkan
kele.i+an komputer se.agai mesin
+itung yang mampu melakukan
per+itungan secara .erulang dengan
perinta+ yang sangat seder+ana2
Aara ini muda+ dilakukan akan
tetapi memerlukan proses yang
panjang untuk mendapatkan +asil$
dan cara ini menggunakan memori
langsung2 Aonto+ 5actorial cara
pandang yang pertama
menggunakan teknik iterati5
#_ ' # Y 1 Y
" Y 1
1_ ' 1 Y "
Y 1
"_ ' "
Y 1
1_ '
1
ntuk meng+itung nM .erarti
mengkalikan .ilangan .ulat positi5
dari " sampai dengan n2 Pengertian
peng+itunganannya terli+at muda+$
namun jika n .ilangan yang .esar jika
di+itung tanpa komputer akan sangat
sulit dan lama2
Ke.anyakan pemrogram pemula
menggunakan cara ini karena le.i+
jelas algoritmanya2
"5$)$ Perban%ingan Teknik Rekur'iC %an Teknik !teratiC
Teknik 7terati5 le.i+ muda+
dimengerti karena jelas tinggal
mengurutkan angka6angkanya dari "
atau mungkin - sampai dengan n2
8perasi yang terjadi .isa tam.a+3B4$
kurang364$ .agi3C4$ kali3K4$ kadangkala
juga pangkat atau yang lainnya
namun dapat dikem.alikan ke empat
operasi dasar pertama2 Kerugian
yang pertama teknik ini
2008 | Direktorat Pembinaan SMK
=>"
Bahasa Pemrograman /e)ursif
mem.utu+kan memori yang .anyak
terutama untuk .ilangan yang .esar2
Yang kedua proses iterasi .isa
mem.utu+kan waktu yang lama
apa.ila .ilangannya .esar2
Sedang Teknik Rekursi5 +arus
ta+u 5ormulanya da+ulu$ dalam +al ini
mana base step-nya$ dan mana
re)ursif step6nya2 !iasa dipakai ole+
pemrogram yang suda+ agak lanjut
dan operasi matematikanya
merupakan operator .iasa2 ,amun
memori yang digunakan .ukan
memori langsung penampung
varia.le namun merupakan stac)2
)adi .anyak sedikitnya peng+itungan
tergantung dari .esarnya kapasitas
stac) yang dipunyai komputer2
Secara rata6rata proses
pang+itungan dengan rekursi5 akan
le.i+ cepat karena kompleksitasnya
le.i+ kecil di.anding dengan iterati52
Kadang seseorang .ertanya$ lo+
saya kan juga .isa mem.uat 5ungsi
pangkat di atas dengan
menggunakan teknik iterati52 *isalnya
menggunakan w+ile loop2 Kenapa
+arus repot;repot menggunakan
rekursi5G *emang .enar .a+wa
semua 5ungsi rekursi5 dapat di.uat
versi iterasinya2 ,amun demikian$
ada .e.erapa masala+ yang jau+
le.i+ muda+ jika dipeca+kan dengan
rekursi52 Kode program untuk
.e.erapa masala+ rekursi5 juga relati5
le.i+ muda+ dipa+ami di.andingkan
versi iterasinya2 !erikut adala+ versi
iterati5 dari 5ungsi pangkat2
Sekaranng per+atikan pada aplikasi
permainan menara 9anoi di .awa+
ini
*enara 9anoi iala+ sala+ satu
permainan yang dulunya dimainkan
ole+ seorang pendeta di 9anoi2
Tujuan permainan ini iala+
meminda+kan n .ua+ pringan dari
tonggak asal 3A4 melalui tonggak
.antu 3!4 menuju tonggak tujuan 3A42
Dengan aturanEaturan .a+wa
piringan yang le.i+ kecil tidak .ole+
.erada di .awa+ piringan yang le.i+
.esar2
*enara A ! A :
a . c
;am.ar "-2=2 *enara dengan Tiga Piringan
=>%
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
Seperti .iasa untuk memeca+kan
masala+ kita da5tarkan dulu langka+6
langka+ yang diam.il mulai n I "2
Dengan d5inisi piringan yang paling
atas iala+ piringan "2
ntuk n I " :
Pinda+kan piringan " dari A ke A
ntuk n I % :
Pinda+kan piringan " dari A ke !
Pinda+kan piringan % dari A ke A
Pinda+kan piringan = dari ! ke A
Dari conto+ diatas dapat diam.il
kesimpulan $ untuk meminda+kan ,
piringan dari tonggak asal 3A4 ke
tonggak tujuan 3A4 maka piringan ke
, +arus .erada di tonggak tujuan 3A4$
sedangkan piringan ke " sampai 3, 6
"4 +arus .erada di tonggak .antu 3!42
Setela+ piringan ke " sampai 3,6"4
.erada pada tonggak .antu 3!4$
kemudian pinda+kan piringan ke "
sampai 3n6"4 terse.ut dari tonggak
.antu 3!4 ke tonggak tujuan 3A42
,a+ .agaimana caranya
mem.awa piringan ke " sampai 3,6"4
dari tonggak asal ke tonggak .antu
3!4$ caranya sama saja yaitu dengan
meminda+kan piringan ke 3n6"4 dari
tonggak asal 3A4 ke tonggak tujuan
yang pada saat ini .erada pada
tonggak 3!4 sedangkan piringan dari
" sampai ke 3,6%4 dipinda+kan ke
tonggak .antu yang saat ini .erada di
tonggak 3A4 $ Setela+ piringan ke "
sampai 3,6%4 .erada pada tonggak
.antu 3A4$ kemudian pinda+kan
piringan ke " sampai 3,6%4 ke
tonggak tujuan 3!4 dan seterusnya2
*etode penyelesaian permainan
9anoi di atas sering dise.ut se.agai
metode .ack tracking$ jadi solusi
dicari dengan cara mundur ke
.elakang da+ulu$ .aru kemudian
solusi .isa ditemukan2 !erikut :isting
program *enara 9anoi dalam
.a+asa A
Program "-2%
in>ude ?&tdio!(@
5,i% 2anoi(it n,)h". a&a,)h". bantu, )h". tu-uan)
// pindahkan piringan ke n
6 // dari asal menuju
tujuan
// melalui bantu
i7 (n '' 0) .et*.A
2anoi(n;1,a&a,tu-uan,bantu)A // pindahkan piringan ke
n&
// dari asal ke bantu melalui
// tonggak tujuan
printH(BGinda( piring ke Rd ke dari R> ke
R>`nB,n,a&a,tu-uan)A 2anoi(n;1,bantu,a&a,tu-uan)
// pindahkan piringan ke n &
// dari bantu menuju tujuan
// melalu asal
8
2008 | Direktorat Pembinaan SMK
=>=
Bahasa Pemrograman /e)ursif
it %ain(5,i%)
6
it nA
printH(BCu%a( piringan
D B)A &>anH(BRdB,Sn)A
2anoi(n,aaa,aba,a>a)A
.et*. 0A
8
"5$*$ Algoritma Teknik Rekur'iC
Tela+ disinggung di depan untuk
Teknik Rekursi5 +arus dicari mana
base step6nya dan mana re)ursif
step6nya2 Dari pro.lem yang +endak
dipeca+kan dicari da+ulu keduanya2
Apa.ila suda+ ketemu .aru
melangka+ ke prose .erikutnya yaitu
menentukan pseudocode6nya$
sekaligus menentukan apaka+
memakai procedure atau function2
ntuk Teknik Rekursi5 ini le.i+
cocok memakai function$ karena
+arus .isa dipanggil di dalam
program terse.ut2 Se.agai conto+
mencari 5aktorial seperti di atas2
Algoritma rekursi5nya se.agai .erikut:
-M I "N base step
nM I n & 3n E "4MN n U - recursive step
Pseudocode6nya:
Int .aktoria(int n)
6
IH (n''0)
/eturn
1A
<&e
/eturn n E .aktoria(n;1)
8
)ika dijalankan gam.aran prosesnya
se.agai .erikut: *isal untuk
meng+itung ?M
=>?
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
.aktoria(#)
# Y .aktoria(1)
1 Y
.aktoria(")
" Y
.aktoria(1)
1 Y .aktoria(0)
1
;am.ar "-2?2 7lustrasi Rekursi5 ntuk *eng+itung ?M 35aktorial ?4
Dalam +al ini memang untuk rekursi5 +arus memakai function karena
procedure tidak dapat dipanggil di dalam procedure itu sendiri2
"5$+$ Algoritma Teknik !teratiC
Teknik 7terati5 algoritmanya
seperti apa adanya terli+at jadi tidak
.egitu rumit2 Pada tulisan di atas
tela+ dijelaskan .e.erapa conto+
meng+itung 5aktorial secara iterati52
ntuk le.i+ jelasnya li+at conto+
.erikut:
Pseudocode Teknik 7terati5:
int .aktoria(int n)
6
int Y ' 1A
Hor(int i ' 1A i ?' nA i::)
Y ' Y E
iA
return YA
#_ ' # Y 1 Y " Y 1
1_ ' 1 Y " Y 1
"_ ' " Y 1
1_ ' 1
Algoritmanya disini sangat jelas
untuk 5aktorial menggunakan Teknik
7terati5 tinggal mengulang operasi
perkalian dari " sampai dengan
.anyaknya n2
8
Dapat dili+at di atas .a+wa
iterasinya adala+ mengulang
perkalian & I & K i dari i I " sampai
dengan 7 I n dengan penam.a+an "
setiap peru.a+an i2 Perlu diketa+ui
juga untuk +arga awal & +arus sama
dengan "$ jika tidak di.eri +arga awal
maka +asilnya akan sala+2
2008 | Direktorat Pembinaan SMK
=>'
Bahasa Pemrograman /e)ursif
)adi jelas sekali per.edaan algoritma
Teknik Rekursi5 dengan algoritma
Teknik 7terati52
"5$,$ Penera(an Algoritma Rekur'iC
Di.awa+ ini merupakan
.e.erapa conto+ program rekursi5
dengan .er.agai kasus dilapangan
seperti 5aktorial$ program
pemangkatan dan lain se.againya2
ntuk le.i+ jelasnya per+atikan
program6program di.awa+ ini:
Program "-2=2 <aktorial:
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it Haktoria(it n)
6
i7 (n''0)
.et*. 1A
e-+e
.et*. n E Haktoria(n;1)A
8
it %ain(it arg>, )h". Earg3NO)
6
it nA
>out??BGrogra% .aktoria /ekur&iH`nBA
>out??B)a&ukkan Kiai n M BA
>in@@nA
>out??B.aktoria(B??n??B) ' B??Haktoria(n)??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program terse.ut adala+ se.agai .erikut:
Grogra% Ha>toria /ekur&iH
)a&ukan Kiai n M #
.aktoria (#) ' "#
Program "-2?2 Pangkat 3a
n
4:
=in>ude ?>&tdib@
=in>ude ?io&trea%@
=>>
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
*+i! "#e+(")e &tdA
8,"t Gangkat(8,"t a, it n)
6
i7 (n''0)
.et*. 1A
e-+e
.et*. a E Gangkat(a, n;1)A
8
it %ain(it arg>, )h". Earg3NO)
6
8,"t aA
it nA
>out??BGrogra% Gangkat /ekur&iH`nBA
>out??BI&ia( Kiai a ' BA
>in@@aA
>out??BI&ia( Kiai n ' BA
>in@@nA
>out??B2a&i dari B??a??B pangkat B??n??B adaa(
B??Gangkat(a,n)??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program di atas seperti .erikut:
Grogra% pangkat rekur&iH
I&tia( Kiai a ' "
I&tia( Kiai a ' "
2a&i dari " pangkat 1 adaa( 8
Program "-2'2 *eng+itung jumla+ .ilangan 7nteger positi5 dari " sampai
dengan n secara rekursi52
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it Cu%a(Int(it n)
6
i7 (n''1)
.et*. 1A
e-+e
.et*. n : Cu%a(Int(n;1)A
2008 | Direktorat Pembinaan SMK
=>(
Bahasa Pemrograman /e)ursif
8
it %ain(it arg>, )h". Earg3NO)
6
it nA
>out??BGrogra% Cu%a(
Integer`nBA
>out??B)a&ukkan Kiai n '
BA >in@@nA
>out??BCu%a( biangan Integer dari 1 &a%pai B??n??B '
B??Cu%a(Int(n)??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program terse.ut dapat dili+at dalam gam.ar .erikut ini:
Grogra% Cu%a( Integer
)a&ukan Kiai n ' #
Cu%a( biangan Integer dari 1 &a%pai # ' 10
"5$-$ Penera(an Algoritma !teratiC
Di.awa+ ini merupakan
.e.erapa conto+ program iterati5
dengan .er.agai kasus dilapangan
seperti 5aktorial$ program
pemangkatan dan lain se.againya2
Setela+ memper+atikan conto+
program di.awa+ ini +arapanya
menjadi ta+u mengenai per.edaan
antara keduanya2 ntuk le.i+
jelasnya per+atikan program6program
di.awa+ ini:
Program "-2>2 <aktorial:
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it .aktoria(it n)
6
it Y ' 1A
7,.(it i ' 1A i ?' nA i::)
Y ' Y E iA
.et*. YA
8
it %ain(it arg>, )h". Earg3NO)
6
=>#
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
it nA
>out??BGrogra% .aktoria IteratiH`nBA
>out??B)a&ukkan Kiai n M BA
>in@@nA
>out??B.aktoria(B??n??B) ' B??.aktoria(n)??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program se.agai .erikut:
Grogra% .aktoria IteratiH
)a&ukan Kiai n M 1
.aktoria (1) ' ,
Program "-2(2 Pangkat secara 7terati5:
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
8,"t Gangkat(8,"t a, it n)
6
8,"t (a&i ' 1A
i7 (n''0)
.et*.
1A
7,. (it i'1A i?'nA i::)
6
(a&i ' (a&i E aA
8
.et*. (a&iA
8
it %ain(it arg>, )h". Earg3NO)
6
8,"t aA
it nA
>out??BGrogra% Gangkat IteratiH`nBA
>out??BI&ia( Kiai a ' BA
>in@@aA
>out??BI&ia( Kiai n ' BA
>in@@nA
>out??B2a&i dari B??a??B pangkat B??n??B adaa(
B??Gangkat(a,n)??B`nBA
&y&te%(BGA$S<B)A
2008 | Direktorat Pembinaan SMK
=>@
Bahasa Pemrograman /e)ursif
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.gai .erikut:
Grogra% Gangkat IteratiH
I&tia( Kiai a ' "
I&tia( Kiai n ' *
2a&i dari " pangkat * adaa( 1"
Program "-2#2 *eng+itung )umla+ 7nteger Positi5 secara iterati5:
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it Cu%a(Int(it n)
6
it (a&i ' 0A
7,. (it i'1A i?'nA i::)
6
(a&i ' (a&i : iA
8
.et*. (a&iA
8
it %ain(it arg>, )h". Earg3NO)
6
it nA
>out??BGrogra% Cu%a( Integer IteratiH`nBA
>out??B)a&ukkan Kiai n ' BA
>in@@nA
>out??BCu%a( biangan Integer dari 1 &a%pai B??n??B '
B??Cu%a(Int(n)??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program adala+ se.agai .erikut:
Grogra% Cu%a( Integer IteratiH
)a&ukan Kiai n ' *
Cu%a( biangan Integer dari 1 &a%pai * ' 1*
Dari .er.agai conto+ aplikasi di
atas kiranya cukup jelas nampak ciri6
ciri algoritma program .aik secara
Teknik Rekursi5 maupun Teknik
=(-
Direktorat Pembinaan SMK | 2008
/e)ursif Bahasa Pemrorgraman
7terati52 Apaka+ semua pro.lem .isa
dipeca+kan secara Teknik Rekursi5 G
Ternyata tidak semuanya2 Apaka+
juga +arus diselesaikan secara
Teknik 7terati5 G Ternyata juga tidak2
Se.agai conto+ )umla+ !ilangan
7nteger Positi5 .isa juga diselesaikan
dengan rumus : n & 3n B "4 C % atau
3n
%
B n4 C % jadi tidak perlu 7terati52
Per+atikan .e.erapa kasus
.erikut ini pun dapat diselesaikan
dengan rekursi5:
"2 *enggam.ar karakter 0K0 se.anyak n
EEEEEEEEEEE
n'11
Ba&i> M
n'0
tidak %en>etak apa;apa
/ekur&iH M
n@0
ga%bar karakter VEV &ebanyak (n;1)
>etak VEV
%2 *enggam.ar persegi panjang dengan le.ar l dan tinggi t
t ' #
'
11
Ba&i> M
n'0
tidak %en>etak apa;apa
/ekur&iH M
n@0
=2 *enggam.ar segitigaCpiramid dengan tinggi n mulai kolom k
t '
# k'0
Ba&i> M n'0
2008 | Direktorat Pembinaan SMK
=("
Bahasa Pemrograman /e)ursif
tidak %en>etak apa;apa
/ekur&iH M
n@0
ga%bar pira%id dengan tinggi (n;1) %uai koo% (k:1)
>etak karakter V V &ebanyak k
>etak karakter VEV &ebanyak "n d 1
"5$2$ Eatihan Soal
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan rekursi5$ jelaskan
%2 Apakan per.edaan antara program menggunakan rekursi5 dan interati5
=2 Dari soal diatas jelaskan kekurangan dan kele.i+an kedua program
terse.ut
?2 !uatla+ program 5aktorial dengan rekursi5
'2 !uatla+ program pemangkatan dengan menggunakan rekursi5
=(%
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
BAB$ ""
GRA!K
""2"2 Pengertian ;ra5ik
""2%2 ;ra5ik :i.rary
""2=2 ;ra5ik Seder+ana
""2?2 Animasi ;ra5ik
""2'2 Dasar6dasar ;ame
""2>2 Soal :ati+an
""$"$ Pengertian GraCik
Dalam pemrogram ABB untuk
mem.uat gra5ik kita +arus mengenal
;7 3;rap+ics ser 7nter5ace42
/indows yang kita kenal merupakan
aplikasi yang .erjalan di atas ;7$
jadi tampilan yang keluar pasti
.er.asis gra5ik2 !er.eda dengan
D8S$ system operasi ini .er.asis
teks .ukan gra5ik2 ntuk inputCoutpu
.er.asis gra5ik windows mempunyai
kumpulan 5ungsi65ungsi di dalam
/indows AP7 3(pplication Program
&nterface4 yang sering juga dise.ut
;D7 30raphics Device &nterface42
Apa keistimewaan ;D7 G
Pemrogram yang .erkecimpung
dalam dunia gra5ik dengan D8S
merna+ merasakan sulitnya mem.uat
aplikasi gra5ik yang kompati.el
dengan card monitor$ karena resolusi
card yang .er.eda kadang +arus
menyesuaikan dengan mem.uat rutin
yang .er.eda2
Dengan menggunakan ;D7
seorang pemrogram dapat dengan
muda+ mem.uat aplikasi gra5ik tanpa
mempedulikan kompati.ilitas dengan
card monitor yang dipakai atau
perangkat keras yang lain2 9al ini
dikarenakan /indows suda+
mengatur semuanya$ jadi pemrogram
tinggal konsentrasi mem.uat aplikasi
gra5iknya atau pem.uatan aplikasi
citra2
Selain itu ;D7 .ersi5at device
independent$ artinya tidak tergantung
peralatan 5isik yang digunakan2
Pernyataan untuk mem.uat lingkaran
ke layar monitor$ maupun ke printer$
atau ke plotter sama2 Tentu saja +al
ini amat menguntungkan pemrogram
karena +anya mengingat satu
perinta+ saja untuk semua peralatan
atau .er.agai macam peralatan2
2008 | Direktorat Pembinaan SMK
1+1
Bahasa Pemrograman 0rafi)
""$&$ GraCik Eibrar3
Pada pemrograman ABB
mempunyai li.rary yang dise.ut
8pen;:2 :i.rary ini meman5aatkan
/indows AP7 dalam proses
pem.entukan gra5ik2 Dengan
menggunakan 8pen;: pem.uatan
gra5ik jadi sangat muda+2 ,amun
demikian perlu diketa+ui .a+wa
pemrograman menggunakan li.rary
+arus mengikuti prosedur yang tela+
ditetapkan ole+ pem.uatnya2
Pada prinsipnya kita tinggal
memodi5ikasi program yang tela+
ada$ pada .agian mana yang
dimodi5ikasi agar sesuai dengan
keperluannya itula+ yang +arus
dipelajari2 ntuk le.i+ jelasnya ikuti
langka+6langka+ program .erikut:
Pada saat mem.uat proyek .aru
+arus kita ara+kan ke li.rary
8pen;:
Setela+ proyek diciptakan maka
kita langsung mempunyai main34
program yang apa.ila dijalankan
3run4 langsung ada +asilnya
Selanjutnya tugas pemrogram
tinggal memodi5ikasi .agian6
.agian tertentu disesuaikan
dengan rancangan program yang
tela+ ditetapkan
;am.aran pem.uatan proyek .aru
seperti .erikut:
;am.ar ""2"2 pem.uatan proyek
Pada saat anda suda+ memili+
mem.uat proyek .aru maka pili+lan
8pen;: se.agai .asis proyek ini$
seperti terli+at dalam gam.ar di atas2
Setela+ 8K maka proyek langsung
siap dan di dalamnya suda+ ada
main34 program yang siap
ditampilkanN program inila+ yang siap
dimodi5ikasi2 Per+aikan gam.ar di
.awa+:
=(?
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
;am.ar ""2%2 proyek 8pen;:
Terli+at pada gam.ar .a+wa suda+
ada main34 program dan yang penting
dalam editor terli+at li.rary yang
+endak dipakai untuk mem.uat gra5ik
ini2 :i+at cara penulisan di.awa+ ini:
=in>ude
?PindoP&@
=in>ude
?g/g!(@
Dua .ua+ +eader terse.ut yang
di.utu+kan untuk meng+u.ungi
li.rary pada saat di.utu+kan ole+
program dalam mem.entuk gra5ik2
""$)$ GraCik Se%erhana
Pengenalan gra5ik .iasanya
dimulai dengan mem.uat garis2 ;aris
di dalam gra5ik merupakan kumpulan
titik6titik yang .erupa pi&el$ resolusi
pi&el akan mempengaru+i +asil
tampilanN makin rapat pi&el gra5ik
yang di+asilkan makin +alus
se+ingga kadang keli+atan jadi le.i+
inda+ dan menarik2 Perinta+ dalam
8pen;: untuk mem.uat garis:
Program ""2"
gCearCoor (1!0H, 1!0H, 1!0H, 0!0H)A
gCear (0FWCOFO/WB$..</WBI4)A
gBegin (0FWFIK<S)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (0!0H, 0!*H)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (0!0H, ;0!*H)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (0!*H, 0!0H)A
2008 | Direktorat Pembinaan SMK
1+*
Bahasa Pemrograman 0rafi)
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (;0!*H, 0!0H)A
g<nd ()A
SPapBufer& ((DC)A
Setela+ dieksekusi potongan
program diatas maka akan
menampilan +asil gra5ik seperti
gam.ar di.awa+ ini:
;am.ar ""2=2 ;aris
<ungsi utama se+ingga dapat
meng+asilkan gra5ik seperti gam.ar
di atas adala+:
gCoor1H (0!0H, 0!0H, 0!0H)A
gLerteY"H
(0!0H,
0!*H)A
gCoor1H (0!0H, 0!0H, 0!0H)A
gLerteY"H
(0!0H, ;
0!*H)A
.isa dipa+ami .a+wa glAolor=53-2-5$
-2-5$ -2-54 merupakan perinta+ untuk
mem.er warna titik6titik dari pi&el
yang di+asilkan ole+ glDerte&%53-2-5$
-2'542 Se.enarnya masingmasing
.aris pada potongan program di atas
merupakan dua perinta+ .ukan satu
perinta+2 ,amun karena keduanya
saling terkait satu sama lain maka
dijadikan satu .aris$ walaupun jika
+endak ditulis pada .aris yang
.er.eda juga tidak mengapa2
Penjelasan le.i+ lanjut$ 5ormat
glAolor=5 adala+ :
gCoor1H(red, green,
bue)A
Argumen red$ green$ .lue untuk
mengakti5kan masing6masing diisi
.ilangan peca+an " 3"2-4$ untuk
mematikan diisi .ilangan peca+an -
3-2-42 Dapat dili+at conto+ di atas
semuanya dimatikan .erarti titik6titik
pi&el akan .erwarna +itam 3seperti
dili+at di gam.ar +asil eksekusi42
Kom.inasi dari ketiga argument ini
akan meng+asilkan warna yang
inda+ dan sangat menarik2 Perlu
diketa+ui pula .a+wa gra5ik yang
terjadi merupakan gra5ik Aartesian
yaitu gra5ik yang titik nolnya di
tenga+$ ole+ karena itu untuk
mem.uat garis tegak di.utu+kan dua
glDerte&%5 yang masing6masing
argumen diisi dengan3 -2-$ -2'4 dan
3-2-$ 6-2'42 !egitu juga dengan garis
mendatar di.utu+kan dua glDerte&%5$
tentu saja dengan argumen yang
.er.eda dalam +al ini 36-2'$ -2-4 dan
3-2'$ -2-42 Dengan memodi5ikasi
program terse.ut .isa didapatkan
tampilan gra5ik yang menarik2
Selanjutnya +arus ada gl!egin34
dan glEnd34$ karena perinta+ itu
=(>
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
merupakan awal dan ak+ir program
gra5ik yang dijalankan2 Pada gl!egin
ada argumen ;:]:7,ES$ ini
dimaksudkan untuk mem.uat garis2
Sedangkan apa.ila +endak mem.uat
.entuk yang lain maka perlu
disesuaikan$ conto+ ada
;:]TR7A,;:ES untuk segitiga$
;:]`ADS untuk segi empat$ atau
;:]P8:Y;8, untuk segi .anyak2
Perinta+ glAlearAolor untuk
mengatur warna latar .elakang
window$ dengan 5ormat se.agai
.erikut :
gCearCoor(red, green, bue,
ap(a)A
seperti perinta+ se.elumnya
argumen yang ada .isa diisi dengan
angka peca+an dan dapat
dikom.inasikan se+ingga
mendapatkan warna yang menarik2
Pada conto+ program ini sengaja
di.uat puti+ dengan
mengkom.inasikan red$ green$ .lue
semuanya diisi " 3"2-42 ntuk
menciptakan atau mendapatkan
peru.a+an argumen 3jika diu.a+4
diperlukan perinta+:
gCear(0FWCOFO/WB$..<
/WBI4)A
yang .erarti peru.a+an warna pada
perinta+ se.elumnya disimpan di
.u55er yang nanti pada saat eksekusi
akan ditampilkan2
Program selengkapnya dapat
dili+at di .awa+ ini:
Program ""2%2
=in>ude ?PindoP&!(@
=in>ude ?g/g!(@
/**************************
* 1unction .eclarations
**************************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd,
$IK4 %e&&age, TGA/A) PGara%, FGA/A)
Gara%)A
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)A
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)A
/**************************
* Win<ain
**************************/
it TIKAGI Tin)ain (2IKS4AKC<
(In&tan>e, 2IKS4AKC<
(Gre3In&tan>e,
FGS4/ pC%dFine,
it iC%dS(oP)
6
TKDCFASS
P>A 2TKD
(TndA 2DC
(DCA
2008 | Direktorat Pembinaan SMK
1++
Bahasa Pemrograman 0rafi)
20F/C
(/CA )S0
%&gA
BOOF b[uit ' .AFS<A
8,"t t(eta ' 0!0HA
/* register ?indo?
class */ P>!&tye '
CSWOTKDCA
P>!pHnTndGro> '
TndGro>A
P>!>bC&<Ytra ' 0A
P>!>bTnd<Ytra ' 0A
P>!(In&tan>e '
(In&tan>eA
P>!(I>on ' FoadI>on (K$FF, IDIWAGGFICA4IOK)A
P>!(Cur&or ' FoadCur&or (K$FF, IDCWA//OT)A
P>!(brBa>kground ' (2B/$S2) 0etSto>kOb-e>t
(BFACKWB/$S2)A P>!p&Z)enuKa%e ' K$FFA
P>!p&ZCa&&Ka%e '
B0FSa%peBA /egi&terCa&&
(SP>)A
/* create main ?indo? */
(Tnd ' CreateTindoP (
B0FSa%peB, BOpen0F
Sa%peB,
TSWCAG4IOK f TSWGOG$GTIKDOT f TSWLISIBF<,
0, 0, "*,, "*,,
K$FF, K$FF, (In&tan>e, K$FF)A
/* enable Open87 for the ?indo? */
<nabeOpen0F ((Tnd, S(DC, S(/C)A
/* program main loop */
Ghi-e (_b[uit)
6
/* check for messages */
i7 (Geek)e&&age (S%&g, K$FF, 0, 0, G)W/<)OL<))
6
/* handle or dispatch messages */
i7 (%&g!%e&&age '' T)W[$I4)
6
b[uit ' 4/$<A
8
e-+e
6
4ran&ate)e&&age
(S%&g)A
Di&pat>()e&&age
(S%&g)A
=(#
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
8
8
e-+e
6
/* Open87 animation code goes here */
gCearCoor (1!0H, 1!0H, 1!0H, 0!0H)A
gCear (0FWCOFO/WB$..</WBI4)A
gBegin (0FWFIK<S)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (0!0H, 0!*H)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (0!0H, ;0!*H)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H
(0!*H, 0!0H)A gCoor1H (0!0H, 0!0H, 0!0H)A
gLerteY"H (;0!*H, 0!0H)A g<nd ()A
SPapBufer& ((DC)A
8
8
/* shutdo?n Open87 */
Di&abeOpen0F ((Tnd, (DC, (/C)A
/* destroy the ?indo? e"plicitly */
De&troyTindoP ((Tnd)A
.et*. %&g!PGara%A
8
/********************
* Windo? 'rocedure
********************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd,
$IK4 %e&&age, TGA/A) PGara%,
FGA/A) Gara%)
6
+Git)h (%e&&age)
6
)"+e T)WC/<A4<M
.et*. 0A
)"+e T)WCFOS<M
Go&t[uit)e&&age
(0)A
2008 | Direktorat Pembinaan SMK
1+7
Bahasa Pemrograman 0rafi)
.et*. 0A
)"+e T)WD<S4/O\M
.et*. 0A
)"+e
T)WK<\DOTKM
+Git)h (PGara%)
6
)"+e LKW<SCAG<M
Go&t[uit)e&&age(0)A
.et*. 0A
8
.et*. 0A
%e7"*-tM
.et*. DeHTindoPGro> ((Tnd, %e&&age, PGara%, Gara%)A
8
8
/*******************
* @nable Open87
*******************/
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)
6
GI9<F.O/)A4D<SC/IG4O/ pHdA
it i.or%atA
/* get the deice conte"t A.C% */
E(DC ' 0etDC ((Tnd)A
/* set the pi"el format for
the .C */ ]ero)e%ory
(SpHd, +i?e,7 (pHd))A
pHd!nSiZe ' +i?e,7 (pHd)A
pHd!nLer&ion ' 1A
pHd!dP.ag& ' G.DWD/ATW4OWTIKDOT
f G.DWS$GGO/4WOG<K0F f
G.DWDO$BF<B$..</A pHd!iGiYe4ype '
G.DW4\G<W/0BAA
pHd!>CoorBit& ' "#A
pHd!>Dept(Bit& ' 1,A
pHd!iFayer4ype ' G.DW)AIKWGFAK<A
i.or%at ' C(oo&eGiYe.or%at
(E(DC, SpHd)A SetGiYe.or%at
(E(DC, i.or%at, SpHd)A
=#-
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
/* create and enable the render conte"t ABC% */
E(/C ' PgCreateConteYt( E(DC )A
Pg)akeCurrent( E(DC, E(/C )A
8
/******************
* .isable Open87
******************/
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)
6
Pg)akeCurrent (K$FF,
K$FF)A PgDeeteConteYt
((/C)A /eea&eDC ((Tnd,
(DC)A
8
Dalam program ini terli+at sangat
panjang$ tetapi itula+ yang terjadi
apa.ila memprogram menggunakan
li.rary yang tersedia2 ,amun jika
+arus mem.uat sendiri dari awal
maka pemrograman kita akan le.i+
lama2 Dengan meman5aatkan li.rary
yang ada maka proses pemrograman
akan menjadi le.i+ cepat e5ekti52
Seperti tela+ diuraikan se.elumnya
pemrogram tinggal mencari dimana
yang +arus dimodi5ikasi sesuai
ke.utu+an2 Aonto+ untuk mengu.a+
ukuran window tinggal mengu.a+
argumen di dalam create main
window$ disana de5aultnya adala+ -$
-$ %'>$ %'>$ angka ini dapat diu.a+
untuk mendapatkan window yang
diinginkan2 !egitu pula untuk +eader
window dapat disesuaikan2
:e.i+ lanjut mengenai gra5ik
untuk mem.uat segitiga misalnya
diperlukan tiga .ua+ verte&$ se+ingga
perinta+6perinta+ yang di.utu+kan
sega.ai .erikut:
Program ""2=
gCear (0FWCOFO/WB$..</WBI4)A
gBegin (0FW4/IA0F<S)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H
(0!0H, 0!*H)A gCoor1H (0!0H, 0!0H, 0!0H)A
gLerteY"H (0!*H, ;0!*H)A gCoor1H (0!0H,
0!0H, 0!0H)A gLerteY"H (;0!*H, ;0!*H)A
g<nd ()A
2008 | Direktorat Pembinaan SMK
181
Bahasa Pemrograman 0rafi)
)angan lupa mengu.a+
;:]:7,ES pada gl!egin menjadi
;:]TR7A,;:ES$ kalau tidak diu.a+
maka yang muncul akan satu garis
saja2
!egitu juga untuk mem.uat segi
empat 3kotak4$ segi lima$ segi enam$
dan se.againya2 *akin .anyak segi
di.utu+kan makin .anyak verte&2
""$*$ Anima'i GraCik
Pem.uatan animasi .entuk6
.entuk dasar dalam 8pen;: tela+
disediakan2 ntuk dapat
meman5aatkannya kita +arus
mema+ami perinta+6perinta+ itu
.eserta arti argumen6argumen yang
dipakainya2 Se.agai conto+ akan
di.uat se.ua+ program yang
menganimasi kotak2 Aermati program
.erikut:
Program ""2?
=in>ude ?PindoP&!(@
=in>ude ?g/g!(@
/**************************
* 1unction .eclarations
**************************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd,
$IK4 %e&&age, TGA/A) PGara%, FGA/A)
Gara%)A
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)A
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)A
/**************************
* Win<ain
**************************/
it TIKAGI Tin)ain (2IKS4AKC<
(In&tan>e, 2IKS4AKC<
(Gre3In&tan>e,
FGS4/ pC%dFine,
it iC%dS(oP)
6
TKDCFASS
P>A 2TKD
(TndA 2DC
(DCA 20F/C
(/CA )S0
%&gA
BOOF b[uit ' .AFS<A
8,"t t(eta ' 0!0HA
/* register ?indo? class */
=#%
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
P>!&tye ' CSWOTKDCA
P>!pHnTndGro> '
TndGro>A
P>!>bC&<Ytra ' 0A
P>!>bTnd<Ytra ' 0A
P>!(In&tan>e '
(In&tan>eA
P>!(I>on ' FoadI>on (K$FF, IDIWAGGFICA4IOK)A
P>!(Cur&or ' FoadCur&or (K$FF, IDCWA//OT)A
P>!(brBa>kground ' (2B/$S2) 0etSto>kOb-e>t
(BFACKWB/$S2)A P>!p&Z)enuKa%e ' K$FFA
P>!p&ZCa&&Ka%e '
B0FSa%peBA /egi&terCa&&
(SP>)A
/* create main ?indo? */
(Tnd ' CreateTindoP (
B0FSa%peB, BOpen0F
Sa%peB,
TSWCAG4IOK f TSWGOG$GTIKDOT f TSWLISIBF<,
0, 0, "*,, "*,,
K$FF, K$FF, (In&tan>e, K$FF)A
/* enable Open87 for the ?indo? */
<nabeOpen0F ((Tnd, S(DC, S(/C)A
/* program main loop */
Ghi-e (_b[uit)
6
/* check for messages */
i7 (Geek)e&&age (S%&g, K$FF, 0, 0, G)W/<)OL<))
6
/* handle or dispatch messages */
i7 (%&g!%e&&age '' T)W[$I4)
6
b[uit ' 4/$<A
8
e-+e
6
4ran&ate)e&&age
(S%&g)A
Di&pat>()e&&age
(S%&g)A
8
8
e-+e
6
/* Open87 animation code goes here */
2008 | Direktorat Pembinaan SMK
181
Bahasa Pemrograman 0rafi)
gCearCoor (1!0H, 1!0H, 1!0H, 0!0H)A
gCear (0FWCOFO/WB$..</WBI4)A
gGu&()atriY ()A
g/otateH (t(eta, 0!0H, 0!0H, 1!0H)A
gBegin (0FW[$ADS)A
gCoor1H (1!0H, 0!0H, 0!0H)A gLerteY"H (;
0!*H, 0!*H)A gCoor1H (0!0H, 1!0H, 0!0H)A
gLerteY"H (0!*H, 0!*H)A gCoor1H (0!0H,
0!0H, 1!0H)A gLerteY"H (0!*H, ;0!*H)A
gCoor1H (0!0H, 0!0H, 0!0H)A gLerteY"H (;
0!*H, ;0!*H)A g<nd ()A
gGop)atriY ()A
SPapBufer& ((DC)A
t(eta :'
1!0HA Seep
(1)A
8
8
/* shutdo?n Open87 */
Di&abeOpen0F ((Tnd, (DC, (/C)A
/* destroy the ?indo? e"plicitly */
De&troyTindoP ((Tnd)A
.et*. %&g!PGara%A
8
/********************
* Windo? 'rocedure
********************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd,
$IK4 %e&&age, TGA/A) PGara%,
FGA/A) Gara%)
6
+Git)h (%e&&age)
6
)"+e T)WC/<A4<M
.et*. 0A
)"+e T)WCFOS<M
Go&t[uit)e&&age
(0)A
=#?
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
.et*. 0A
)"+e T)WD<S4/O\M
.et*. 0A
)"+e
T)WK<\DOTKM
+Git)h (PGara%)
6
)"+e LKW<SCAG<M
Go&t[uit)e&&age(0)A
.et*. 0A
8
.et*. 0A
%e7"*-tM
.et*. DeHTindoPGro> ((Tnd, %e&&age, PGara%, Gara%)A
8
8
/*******************
* @nable Open87
*******************/
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)
6
GI9<F.O/)A4D<SC/IG4O/ pHdA
it i.or%atA
/* get the deice conte"t A.C% */
E(DC ' 0etDC ((Tnd)A
/* set the pi"el format for
the .C */ ]ero)e%ory
(SpHd, +i?e,7 (pHd))A
pHd!nSiZe ' +i?e,7 (pHd)A
pHd!nLer&ion ' 1A
pHd!dP.ag& ' G.DWD/ATW4OWTIKDOT
f G.DWS$GGO/4WOG<K0F f
G.DWDO$BF<B$..</A pHd!iGiYe4ype '
G.DW4\G<W/0BAA
pHd!>CoorBit& ' "#A
pHd!>Dept(Bit& ' 1,A
pHd!iFayer4ype ' G.DW)AIKWGFAK<A
i.or%at ' C(oo&eGiYe.or%at
(E(DC, SpHd)A SetGiYe.or%at
(E(DC, i.or%at, SpHd)A
2008 | Direktorat Pembinaan SMK
18*
Bahasa Pemrograman 0rafi)
/* create and enable the render conte"t ABC% */
E(/C ' PgCreateConteYt( E(DC )A
Pg)akeCurrent( E(DC, E(/C )A
8
/******************
* .isable Open87
******************/
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)
6
Pg)akeCurrent (K$FF,
K$FF)A PgDeeteConteYt
((/C)A /eea&eDC ((Tnd,
(DC)A
8
Keluaran program di atas akan
menganimasikan kotak dengan
warna6warni yang menarik dan
.erputar .erlawanan ara+ jarum jam2
;am.ar kotak yang terjadi seperti
.erikut:
;am.ar ""2?2 ;ra5ik .erwarna warni
)ika diper+atikan atau dipelajari
pasti akan *enarik .ukanG /arna6
warna terse.ut dimunculkan dengan
mengkom.inasikan argumen6
argumen pada perinta+ glAolor=5$
cermati dalam listing program2 Dalam
program yang sesunggu+nya kotak
terse.ut selain .erwarna6warni juga
.erputar .erlawanan ara+ putaran
jarum jam 3counter cloc)wise42
Perinta+ apa yang mem.uat kotak ini
.erputar G Kita li+at program di atas:
g/otateH (t(eta, 0!0H,
0!0H, 1!0H)A
sesuai namanya perinta+ di atasla+
yang menye.a.kan kotak ini
.erputar2 <ormat perinta+ ini secara
lengkapnya se.agai .erikut :
Argumen pertama t+eta untuk
mengatur kecepatan putar makin
.esar angkanya makin cepat
putaran yang terjadi
Argumen kedua jika diisi " 3"2-4
maka kotak akan .erputar dengan
sum.u garis +oriQontal 3mendatar4
ke ara+ tertentu2 ntuk memutar
ke ara+ yang .erlawanan dari
=#>
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
conto+$ argumen diisi angka 6" 36
"2-4
Argumen ketiga juga mirip dengan
argumen kedua namun
.erputarnya ter+adap sum.u
vertical 3tegak lurus4
Argumen keempat untuk memutar
kotak 5lat dengan sum.u titik nol
diagram cartesius2 )ika diisi angka
" 3"2-4 maka akan .erputar
.erlawanan ara+ putaran jarum
jam 3counter cloc)wise4$
sedangkan untuk .erputar seara+
dengan ara+ putaran jarum jam
3cloc)wise4 diisi angka 6" 36"2-42
9al yang menarik jika argumen ini
diisi angka - 3-2-4 maka kotak
akan 1oom in dan 1oom out
.ergantian2
Kom.inasi dari argumen6argumen
yang ada akan mem.uat variasi
pergerakan yang sangat menarik
ntuk mengatur laju perputaran
animasi yang terjadi .isa dengan
memodi5ikasi t+eta$ atau dengan
perinta+ sleep3argumen42 :aju
kecepatan putar tergantung pada
nilai argumen pada sleep$ makin
.esar angkanya makin lam.at .ukan
makin cepat2 :e.i+ lanjut dengan
gra5ik$ jika akan mem.uat segi enam
maka peru.a+an yang terjadi seperti
.erikut:
Program ""2'
/* Open87 animation code goes here */
gCearCoor (0!0H, 0!0H, 0!0H, 1!0H)A
gCear (0FWCOFO/WB$..</WBI4)A
gGu&()atriY ()A
g/otateH (t(eta, 0!0H, 0!0H, ;1!0H)A
gBegin (0FWGOF\0OK)A
gCoor1H (1!0H, 0!0H, 0!0H)A gLerteY"H (;
0!1H, 0!*#H)A gCoor1H (0!0H, 1!0H, 0!0H)A
gLerteY"H (0!1H, 0!*#H)A gCoor1H (0!0H,
0!0H, 1!0H)A gLerteY"H (0!,1H, 0!0H)A
gCoor1H (0!0H, 1!0H, 1!0H)A gLerteY"H
(0!1H, ;0!*#H)A gCoor1H (1!0H, 1!0H, 0!0H)A
gLerteY"H (;0!1H, ;0!*#H)A gCoor1H (1!0H,
1!0H, 1!0H)A gLerteY"H (;0!,1H, 0!0H)A
g<nd ()A
gGop)atriY ()A
SPapBufer& ((DC)A
t(eta :'
"!0HA Seep
(1)A
2008 | Direktorat Pembinaan SMK
18+
Bahasa Pemrograman 0rafi)
Tentu saja verte& .eru.a+
.ertam.a+ .anyak$ .anyaknya verte&
sesuai dengan jumla+ sudut yang
di.entuk2 )angan lupa argumen pada
gl!egin diisi dengan ;:]P8:Y;8,
se+ingga .isa menciptakan segi
.anyak seperti yang dike+endaki2
Selain glRotate534 pengaturan
animasi dapat juga dengan
glTranslate5342 Dengan perinta+ ini
kita dapat menggerakkan o.yek
kekiri$ kekanan$ ke atas$ maupun ke
.awa+2 Aonto+ program se.agai
.erikut:
Program ""2>
=in>ude ?PindoP&!(@
=in>ude ?g/g!(@
/**************************
* 1unction .eclarations
**************************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd,
$IK4 %e&&age, TGA/A) PGara%, FGA/A)
Gara%)A
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)A
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)A
/**************************
* Win<ain
**************************/
it TIKAGI Tin)ain (2IKS4AKC<
(In&tan>e, 2IKS4AKC<
(Gre3In&tan>e,
FGS4/ pC%dFine,
it iC%dS(oP)
6
TKDCFASS
P>A 2TKD
(TndA 2DC
(DCA 20F/C
(/CA )S0
%&gA
BOOF b[uit '
.AFS<A 8,"t
t(eta ' ;1!0HA
8,"t ap(a ' ;
1!0HA
/* register ?indo?
class */ P>!&tye '
CSWOTKDCA
P>!pHnTndGro> '
TndGro>A
P>!>bC&<Ytra ' 0A
=##
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
P>!>bTnd<Ytra ' 0A
P>!(In&tan>e ' (In&tan>eA
P>!(I>on ' FoadI>on (K$FF, IDIWAGGFICA4IOK)A
P>!(Cur&or ' FoadCur&or (K$FF, IDCWA//OT)A
P>!(brBa>kground ' (2B/$S2) 0etSto>kOb-e>t
(BFACKWB/$S2)A P>!p&Z)enuKa%e ' K$FFA
P>!p&ZCa&&Ka%e '
B0rap(0FBA /egi&terCa&&
(SP>)A
/* create main ?indo? */
(Tnd ' CreateTindoP (
B0rap(0FB, BOpen0F 0rap(i>&
Ani%ationB, TSWCAG4IOK f
TSWGOG$GTIKDOT f TSWLISIBF<,
0, 0, *1", *1",
K$FF, K$FF, (In&tan>e, K$FF)A
/* enable Open87 for the ?indo? */
<nabeOpen0F ((Tnd, S(DC, S(/C)A
/* program main loop */
Ghi-e (_b[uit)
6
/* check for messages */
i7 (Geek)e&&age (S%&g, K$FF, 0, 0, G)W/<)OL<))
6
/* handle or dispatch messages */
i7 (%&g!%e&&age '' T)W[$I4)
6
b[uit ' 4/$<A
8
e-+e
6
4ran&ate)e&&age
(S%&g)A
Di&pat>()e&&age
(S%&g)A
8
8
e-+e
6
/* Open87 animation code goes here */
gCearCoor (1!0H, 1!0H, 1!0H, 1!0H)A
gCear (0FWCOFO/WB$..</WBI4)A
2008 | Direktorat Pembinaan SMK
187
Bahasa Pemrograman 0rafi)
gGu&()atriY ()A
g4ran&ateH (t(eta, ap(a,
0!0H)A gCoor1H (1!0H,
0!0H, 1!0H)A g/e>tH(;0!",
0!", 0!", ;0!")A
gGop)atriY ()A
SPapBufer& ((DC)A
i7 (t(eta @' 1!0)
6
t(eta ' ;1!0HA
ap(a ' ;1!0HA
8
e-+e i7 (t(eta ?' 1!0)
6
t(eta :' 0!01HA
ap(a :' 0!01HA
8
Seep (10)A
8
8
/* shutdo?n Open87 */
Di&abeOpen0F ((Tnd, (DC, (/C)A
/* destroy the ?indo? e"plicitly */
De&troyTindoP ((Tnd)A
.et*. %&g!PGara%A
8
/********************
* Windo? 'rocedure
********************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd, $IK4 %e&&age,
TGA/A) PGara%, FGA/A) Gara%)
6
+Git)h (%e&&age)
6
=@-
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
)"+e T)WC/<A4<M
.et*. 0A
)"+e T)WCFOS<M
Go&t[uit)e&&age
(0)A .et*. 0A
)"+e T)WD<S4/O\M
.et*. 0A
)"+e
T)WK<\DOTKM
+Git)h (PGara%)
6
)"+e LKW<SCAG<M
Go&t[uit)e&&age
(0)A .et*. 0A
8
.et*. 0A
%e7"*-tM
.et*. DeHTindoPGro> ((Tnd, %e&&age, PGara%, Gara%)A
8
8
/*******************
* @nable Open87
*******************/
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)
6
GI9<F.O/)A4D<SC/IG4O/ pHdA
it i.or%atA
/* get the deice conte"t A.C% */
E(DC ' 0etDC ((Tnd)A
/* set the pi"el format for
the .C */ ]ero)e%ory
(SpHd, +i?e,7 (pHd))A
pHd!nSiZe ' +i?e,7 (pHd)A
pHd!nLer&ion ' 1A
pHd!dP.ag& ' G.DWD/ATW4OWTIKDOT
f G.DWS$GGO/4WOG<K0F f
G.DWDO$BF<B$..</A pHd!iGiYe4ype '
G.DW4\G<W/0BAA
pHd!>CoorBit& ' "#A
pHd!>Dept(Bit& ' 1,A
2008 | Direktorat Pembinaan SMK
171
Bahasa Pemrograman 0rafi)
pHd!iFayer4ype ' G.DW)AIKWGFAK<A
i.or%at ' C(oo&eGiYe.or%at
(E(DC, SpHd)A SetGiYe.or%at
(E(DC, i.or%at, SpHd)A
/* create and enable the render conte"t ABC% */
E(/C ' PgCreateConteYt( E(DC )A
Pg)akeCurrent( E(DC, E(/C )A
8
/******************
* .isable Open87
******************/
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)
6
Pg)akeCurrent (K$FF,
K$FF)A PgDeeteConteYt
((/C)A /eea&eDC ((Tnd,
(DC)A
8
9asil eksekusi program di atas
akan menggerakkan se.ua+ kotak
.erjalan secara diagonal dari pojok
kiri .awa+ ke kanan atas secara
terus menerus2 Akan tetapi jika ada
penekanan mouse di task.ar maka
kotak .er+enti$ jika penekanan
dilepas kotak jalan lagi2 ntuk selesai
.isa menggunakan tom.ol ESAape2
""$+$ Da'ar#%a'ar Game
ntuk mema+ami pem.uatan
game conto+ program di atas .isa
dimodi5ikasi .agian glTranslate5342
Argumen dalam glTranslate5 34 di.uat
varia.el t+eta untuk argumen
pertama$ alp+a untuk argumen
kedua2 T+eta untuk mengatur gerak
+orisontal dan alp+a untuk mengatur
gerak vertikal2 Dengan mengu.a+6
u.a+ nilai varia.el terse.ut kita .isa
menggerakkan o.yek terse.ut secara
.e.as sesuai dengan ke+endak2
Pada saat o.yek .ergerak .isa juga
diatur peru.a+an warna atau
dikom.inasi se+ingga menjadi warna6
warni2 ntuk le.i+ jelasnya ikuti
program .erikut:
Program ""2(
=in>ude ?PindoP&!(@
=in>ude ?g/g!(@
/**************************
* 1unction .eclarations
**************************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd, $IK4 %e&&age,
=@%
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
TGA/A) PGara%, FGA/A) Gara%)A
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)A
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)A
/**************************
* Win<ain
**************************/
it TIKAGI Tin)ain (2IKS4AKC<
(In&tan>e, 2IKS4AKC<
(Gre3In&tan>e,
FGS4/ pC%dFine,
it iC%dS(oP)
6
TKDCFASS
P>A 2TKD
(TndA 2DC
(DCA 20F/C
(/CA )S0
%&gA
BOOF b[uit '
.AFS<A 8,"t
t(eta ' ;0!8HA
8,"t ap(a ' ;
0!8HA it >ount '
0A
8,"t r, g, bA
/* register ?indo?
class */ P>!&tye '
CSWOTKDCA
P>!pHnTndGro> '
TndGro>A
P>!>bC&<Ytra ' 0A
P>!>bTnd<Ytra ' 0A
P>!(In&tan>e '
(In&tan>eA
P>!(I>on ' FoadI>on (K$FF, IDIWAGGFICA4IOK)A
P>!(Cur&or ' FoadCur&or (K$FF, IDCWA//OT)A
P>!(brBa>kground ' (2B/$S2) 0etSto>kOb-e>t
(BFACKWB/$S2)A P>!p&Z)enuKa%e ' K$FFA
P>!p&ZCa&&Ka%e '
B0rap(0FBA /egi&terCa&&
(SP>)A
/* create main ?indo? */
(Tnd ' CreateTindoP (
B0rap(0FB, BOpen0F
0rap(i>&B,
TSWCAG4IOK f TSWGOG$GTIKDOT f TSWLISIBF<,
0, 0, *1", *1",
K$FF, K$FF, (In&tan>e, K$FF)A
2008 | Direktorat Pembinaan SMK
171
Bahasa Pemrograman 0rafi)
/* enable Open87 for the ?indo? */
<nabeOpen0F ((Tnd, S(DC, S(/C)A
/* program main loop */
Ghi-e (_b[uit)
6
/* check for messages */
i7 (Geek)e&&age (S%&g, K$FF, 0, 0, G)W/<)OL<))
6
/* handle or dispatch messages */
i7 (%&g!%e&&age '' T)W[$I4)
6
b[uit ' 4/$<A
8
e-+e
6
4ran&ate)e&&age
(S%&g)A
Di&pat>()e&&age
(S%&g)A
8
8
e-+e
6
/* Open87 animation code goes here */
gCearCoor (1!0H, 1!0H, 1!0H, 1!0H)A
gCear (0FWCOFO/WB$..</WBI4)A
gGu&()atriY ()A
g4ran&ateH (t(eta, ap(a, 0!0H)A
gCoor1H (r, g, b)A
g/e>tH(;0!", 0!", 0!", ;0!")A
gGop)atriY ()A
SPapBufer& ((DC)A
i7 (>ount @ 1,0)
6
t(eta ;' 0!01HA
ap(a ;' 0!01HA
i7 (>ount '' 1"0)
6
=@?
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
>ount ' 0A
t(eta ' ;
0!8HA ap(a
' ;0!8HA
8
e-+e
>ount :' 1A
r '
0!0HA g
' 1!0HA
b '
0!0HA
8
e-+e i7 (>ount ?' 1,0)
6
t(eta :'
0!01HA ap(a
:' 0!01HA
>ount :' 1A
r '
1!0HA g
' 0!0HA
b '
1!0HA
8
Seep (10)A
8
8
/* shutdo?n Open87 */
Di&abeOpen0F ((Tnd, (DC, (/C)A
/* destroy the ?indo? e"plicitly */
De&troyTindoP ((Tnd)A
.et*. %&g!PGara%A
8
/********************
* Windo? 'rocedure
********************/
F/<S$F4 CAFFBACK TndGro> (2TKD (Tnd, $IK4 %e&&age,
TGA/A) PGara%, FGA/A) Gara%)
6
+Git)h (%e&&age)
6
2008 | Direktorat Pembinaan SMK
17*
Bahasa Pemrograman 0rafi)
)"+e T)WC/<A4<M
.et*. 0A
)"+e T)WCFOS<M
Go&t[uit)e&&age
(0)A .et*. 0A
)"+e T)WD<S4/O\M
.et*. 0A
)"+e
T)WK<\DOTKM
+Git)h (PGara%)
6
)"+e LKW<SCAG<M
Go&t[uit)e&&age
(0)A .et*. 0A
8
.et*. 0A
%e7"*-tM
.et*. DeHTindoPGro> ((Tnd, %e&&age, PGara%, Gara%)A
8
8
/*******************
* @nable Open87
*******************/
5,i% <nabeOpen0F (2TKD (Tnd, 2DC E(DC, 20F/C E(/C)
6
GI9<F.O/)A4D<SC/IG4O/ pHdA
it i.or%atA
/* get the deice conte"t A.C% */
E(DC ' 0etDC ((Tnd)A
/* set the pi"el format for
the .C */ ]ero)e%ory
(SpHd, +i?e,7 (pHd))A
pHd!nSiZe ' +i?e,7 (pHd)A
pHd!nLer&ion ' 1A
pHd!dP.ag& ' G.DWD/ATW4OWTIKDOT
f G.DWS$GGO/4WOG<K0F f
G.DWDO$BF<B$..</A pHd!iGiYe4ype '
G.DW4\G<W/0BAA
pHd!>CoorBit& ' "#A
pHd!>Dept(Bit& ' 1,A
=@>
Direktorat Pembinaan SMK | 2008
0rafi) Bahasa Pemrorgraman
pHd!iFayer4ype ' G.DW)AIKWGFAK<A
i.or%at ' C(oo&eGiYe.or%at
(E(DC, SpHd)A SetGiYe.or%at
(E(DC, i.or%at, SpHd)A
/* create and enable the render conte"t ABC% */
E(/C ' PgCreateConteYt( E(DC )A
Pg)akeCurrent( E(DC, E(/C )A
8
/******************
* .isable Open87
******************/
5,i% Di&abeOpen0F (2TKD (Tnd, 2DC (DC, 20F/C (/C)
6
Pg)akeCurrent (K$FF,
K$FF)A PgDeeteConteYt
((/C)A /eea&eDC ((Tnd,
(DC)A
8
)ika program dijalankan maka
kotak akan .ergerak secara diagonal
dari pojok kiri .awa+ ke ara+ pojok
kanan atas dengan warna ungu$
setela+ sampai di pojok kanan atas
maka akan .er.alik ara+ menuju
pojok kiri .awa+ lagi dengan warna
+ijau$ .egitu seterusnya .olak6.alik2
Akan tetapi jika kursor menunjuk
task.ar dan tom.ol mouse ditekan
maka gerak o.yek akan .er+enti dan
jika tom.ol dilepas lagi maka o.yek
terse.ut gergerak lagi2
Selain argumen6argumen
glTranslate534 yang dimodi5ikasi$
argumen glAolor=534 juga di.uat
varia.el se+ingga .isa dimainkan
warnanya menjadi dinamis tidak
monoton2 Penam.a+an varia.el pada
perinta+ glAolor=534 argumen pertama
r$ kedua g$ ketiga .$ se+ingga
5ormatnya menjadi glAolor=53r$ g$ .42
*odi5ikasi yang lain yaitu menam.a+
varia.el count untuk meng+itung
.anyaknya gerak2 9al ini perlu
ditam.a+kan karena pengaturan
gerak melalui varia.el count ini2
Aonto+ ini merupakan dasar
pem.uatan game yang +arus
dipelajari untuk .isa dikem.angkan
dikemudian +ari2 !agian yang penting
dicermati adala+ trik pengaturan
geraknya$ .agian ini merupakan +al
tersulit karena +arus menemukan
algoritma yang tepat dan e5isien2
2008 | Direktorat Pembinaan SMK
17+
Bahasa Pemrograman 0rafi)
""$,$ Eatihan Soal
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan gra5ik
%2 Dalam .a+asa cBB terdapat li.rary opengl$ apa yang dimaksud dengan
istila+ terse.ut
=2 Apa keuntungan dan kekurangan menggunakan li.rary opengl
?2 !uatla+ program gra5ik seder+ana untuk menampilkan garis
'2 !uatla+ program gra5ik seder+ana untuk menampilkan poligon
>2 !uatla+ program animasi seder+ana dengan meman5aatkan li.rary opengl
=@#
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
BAB "&
OPERAS! !EE
"%2"2 Pengertian <ile
"%2%2 Alass stream
"%2=2 9irarki class stream
"%2?2 <ile 7nputC8utput ABB
"%2'2 Aara Pem.acaan String
"%2>2 Routin6routin konversi <ile
"%2(2 <ile !inary dan ASA77
"%2#2 !inary 7C8
"%2@2 !u55er
"%2"-2 Rutin6rutin pada ABB
"%2""2 <ile sekuensial
"%2"%2 Program 8perasi <i7e
"%2"=2 Soal :ati+an
"&$"$ Pengertian ile
<ile atau !erkas komputer atau
.erkas adala+ entitas dari data yang
disimpan di dalam sistem .erkas
yang dapat diakses dan diatur ole+
pengguna2 <ile juga dapat
dide5inisikan se.agai kumpulan
in5ormasi yang .iasanya disimpan
dalam se.ua+ disk komputer$ dimana
in5ormasi disimpan dalam .entuk 5ile6
5ile yang dikemudian +ari dapat
diam.il kem.ali2
Se.ua+ .erkas memiliki nama
yang unik dalam direktori dimana ia
.erada2 Alamat direktori dimana
suatu .erkas ditempatkan diistila+kan
dengan path. <ile atau .erkas
diorganisasikan dari sejumla+ record2
*asing6masing record .isa terdiri dari
satu atau .e.erapa 5ield2 Setiap 5ield
terdiri dari satu atau .e.erapa .yte2
2008 | Direktorat Pembinaan SMK
=@@
Bahasa pemrograman perasi File
;am.ar "%2"2 !erkasC5ile
Sistem .erkas akan mem.erikan
se.ua+ nama ter+adap se.ua+
.erkas agar dapat dikelola dengan
muda+2 *eski ole+ sistem .erkas
penamaan dilakukan dengan
menggunakan angka6angka .iner$
sistem operasi dapat menerjema+kan
angka6angka .iner terse.ut menjadi
karakter yang muda+ dipa+ami2
Se.ua+ .erkas .erisi aliran data
3data stream4 yang .erisi sekumpulan
data yang saling .erkaitan serta
atri.ut .erkas 3yang .ersi5at waji.
atau opsional4$ yang kadang6kadang
dise.ut properties yang .erisi
in5ormasi yang .erkaitan dengan
.erkas yang .ersangkutan2 7n5ormasi
mengenai kapan se.ua+ .erkas
di.uat adala+ conto+ dari atri.ut
.erkas2
kuran se.ua+ .erkas umumnya
direpresentasikan dalam satuan byte2
)ika .ilangan terlalu .esar untuk
direpresentasikan dalam satuan .yte$
maka dapat menggunakan satuan K!
3Kilobyte$ yang .erarti "$-%? .yte4$
*! 32egabyte$ yang .erarti
"$-?#$'(> .yte4$ ;! 30igabyte$ yang
.erarti "$-(=$(?"$#%? .yte4$ dan T!
3!erabyte$ yang .erarti
"$-@@$'""$>%($((> .yte42 Dalam
mekanisme penyimpanan .erkas$
komputer akan menyimpan .erkas
dalam dua jenis ukuran: ukuran 5isik
dan ukuran logis2 kuran 5isik .erkas
merujuk kepada ukuran aktual dari
.erkas$ yakni .erapa .anyak .yte
yang terdapat di dalam .erkas2
Sementara ukuran logis merujuk
kepada jumla+ ruangan yang
dialokasikan ole+ sistem .erkas
untuk menempatkan .erkas yang
.ersangkutan di dalam media
penyimpanan2
kuran .erkas 5isik umumnya
le.i+ .esar di.andingkan dengan
ukuran .erkas logisnya2 Se.agai
conto+$ untuk mengalokasikan
.erkas .erukuran logis '"%' .yte$
dalam se.ua+ media penyimpanan
yang di5ormat dengan sistem .erkas
yang menggunakan ukuran unit
?--
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
alokasi ?-@> .yte$ komputer akan
mengalokasikan dua .ua+ unit
alokasi$ yang .erukuran ?-@> dan
?-@>$ se+ingga meng+a.iskan #"@%
.yte2 *eski ukuran logis .erkas
terse.ut '"%' byte$ komputer
mengalokasikan #"@% .yte$ mem.uat
=->( .yte tidak digunakan 3dise.ut
se.agai wasted space atau slac)
space42
Ke.anyakan se.ua+ program
meli.atkan media disk se.agai
tempat untuk mem.aca atau
menyimpan data2 Data sendiri
disimpan dalam disk dalam suatu
kesatuan yang dise.ut 5ile2 Suatu 5ile
merupakan organisasi dari sejumla+
record2 *asing6masing record dapat
terdri dari satu atau .e.erapa 5ield
dan setiap 5ield terdiri dari satu atau
.e.erapa .yte data2 Satu .yte data
terdiri dari susuan # .it data2 Struktur
data dari 5le ditunjukkan pada gam.ar
.erikut di.awa+ ini:
ile
Re/or% $$$$$$$$$$$$$$ Re/or%
iel% iel% iel%
B3te 02 bit1 $$$$$$$$$$$$$$ B3te 02 bit1
;am.ar "%2%2 Struktur Data Dari <ile
Dalam ABB 5ile adala+ se.ua+
stream yang disimpan dalam media
penyimpanan luar2 Karena
merupakan se.ua+ stream$ operasi
yang .erlaku pada stream .erlaku
juga untuk 5ile2 Stream adala+ suatu
logika device yang meng+asilkan
dan menerima in5ormasi atau wada+
yang digunakan untuk menampung
keluaran dan menampung aliran
data2
"&$&$ .la'' 'tream
Stream 3aliran4 merupakan nama
yang secara umum di.erikan untuk
se.ua+ aliran data2 Dalam ABB
stream ditunjukan ole+ se.ua+ o.jek
dari class k+usus$ dimana tela+ kita
keta+ui cin dan cout merupakan
a.jek stream2 Per.edaan stream
yang digunakan untuk menunjukan
per.edaan .e.erapa macam dari
aliran data2 Se.agai conto+ se.ua+
class i5stream merepresentasikan
aliran data dari masukan 5ile65ile disk2
2008 | Direktorat Pembinaan SMK
?-"
Bahasa pemrograman perasi File
Programer A mungkin akan
+eran dengan meli+at kele.i+an6
kele.i+an menggunakan class
stream untuk operasi 7C8$ se.agai
ganti dari 5ungsi65ungsi A se.elumnya
seperi print534 dan scan534 dan operasi
5ile seperti 5print534$ 5scan534 dan lain
se.againya2 Satu alasannya adala+
keseder+anaan2 )ika kita perna+
menggunakan 5ormat karakter Zd
anda .aru akan menyadarinya2
Disana ternyata tidak ditemui 5ormat
dalam stream semenjak se.ua+
o.jek siap ditunjukan pada tampilan
komputer2
Alasam lain adala+ .a+wa kamu
dapat mem.eri .e.an pada se.ua+
operator dan 5ungsi seperti operator
insertion 3TT4 dan e&traction 3UU4$
dimana untuk dapat .ekerja dengan
class terse.ut anda +arus
mem.uatnya2 9al ini akan mem.uat
class anda .ekerja pada jalan yang
sama se.agai satu6kesatuan tipe2 9al
ini jelas mem.uat programer le.i+
muda+ dan le.i+ ter.e.as dari
kesala+an2
Anda mungkin +eran jika stream
7C8 ternyata penting jika anda
merancang progra dalam se.ua+
lingkungan dengan ;rap+ic user
7nter5ace 3;74 seperti +alnya
windows2 Dengan menggunakan ;7
ini secara langsung teks keluaran
ditampilkan pada screen 2 Anda juga
masi+ dan selalu mem.utu+kan
mengenai stream pada .a+asa ABB2
9al ini akan terjadi karena mereka
ta+u jalan ter.aik untuk menulis data
menjadi 5ile dan juga mem5ormat data
yang aka digunakan kemudian dalam
teks 7C8 atau elemen ;7 lainnya2
"&$)$ Hirarki /la'' 'tream
Se.ua+ class stream diatur
dalam +irarki yang agak komplek2
Dengan menggunakan class ini$ kita
dapat mem.uat tam.a+an class
dengan menggunakan .e.erapa
class istream2 8perator turunan UU
merupakan .agian dari class stream$
dan operator insertion TT adala+
.agian dari class ostream2 Keduanya
merupakan class6class yang
diturunkan dari class ios2 Se.ua+
o.jek cout merepresentasikan
keluaran stream keluaran$ yang
.iasanya diara+kan pada tampilan
monitor2 8.yek terse.ut suda+
dikenal se.agai class penentu
ostream2 Sama +alnya dengan cin
se.agai o.yek penentu istream yang
diturunkan dari class istream2
;am.ar di.awa+ ini menunjukan
pengaturan class6class yang paling
penting2
?-%
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
;am.ar "%2=2 9irarki Alass Stream
Alass6class terse.ut diatas
digunakan se.agai masukan dan
keluaran dan menampilkan pada
layar monitor dan ke.oard
dideklarasikan ole+ 5ile +eader
78STREA*2 Alass6class yang
digunakan secara k+usus untuk input
atau ouput 5ile pada disk
dideklarasikan ole+ 5ile +eader
<STREA*2 ;am.ar diatas
menunjukan class6class yang mana
didalamnya dapat ditemukan dua 5ile
+eader terse.ut2 Selain itu juga
ditunjukan .e.erapa manipulator
yang dideklarasikan dalam 78*A,7P
dan dalam memori$ class
dideklarasikan dalam STRSTREA*2
Seperti yang dapat dili+at pada
gam.ar diatas$ class ios yang
merupakan class dasar pada se.ua+
+irarky2 Alass terse.ut .erisi
.e.erapa konstanta atau
keanggotaan 5ungsi umum se.agai
operasi masukan dan keluaran2
Alass ios juga .erisi senua+ pointer
yang digunakan se.agai class
stream.u52 Dimana +al terse.ut .erisi
.u55er memori aktual pada saat data
di.aca atau ditulis2 !iasanya
programmer tidak memikirkan class
stream.u5$ karena +al terse.ut akan
ditangani secara otomatis ole+ class
lain2
Alass istream dan ostream
diturunkan dari ios dan akan
digunakan se.agai masukan dan
keluaran secara terus6menerus2
Alass istream .erisi seperti 5ungsi
get34$ getline34$ read34 dan operator
ekstrasi overloded 3UU4$ sedangkan
ostream .erisi put34 dan write34 serta
operator insersi overloaded 3TT42
Alass iostream adala+
diturunkan dari dua class istream dan
ostream melalui multiple in+eritance2
Alass yang diturunkan terse.ut akan
digunakan ole+ .e.erapa piranti
seperti 5ile pada disk$ yang mungkin
2008 | Direktorat Pembinaan SMK
?-=
Bahasa pemrograman perasi File
akan di.uka se.agai masukan dan
keluaran pada saat yang sama2 Tiga
class istream]wit+assign$
ostream]wit+assign dan
iostream]wit+assign diwariskan dari
istream$ ostream dan iostream
secara .erturut6turut2
Alass ios adala+ kakek dari
semua class6class stream dan .erisi
secara umum dari +al6+al yang
penting yang di.utu+kan untuk
mengoperasikan stream pada ABB2
Ada tiga +al penting yaitu pengaturan
5lag$ 5lag status kesala+an dan 5ile
mode operasi2 Pengaturan 5lag
merupakan sekumpulan enum yang
dide5inisikan dalam ios2 9al terse.ut
merupakan kondisi seperti saklar on
atau o55 yang memili+
"&$*$ ile !n(ut6Out(ut .DD
7nputCoutput 5ile pada .a+asa
ABB ditentukan ole+ tiga class yaitu
class istream untuk menangani
masukan 5ile$ class ostream untuk
menangani keluaran 5ile serta class
iostream untuk menangani 5ile
masukan atau keluaran2 Dalam ABB
operasi ini .erkenaan .a+wa 5ile
se.agai stream dan saat itu pula 5ile
dianggap se.agai aliran .yte data2
Empat class varia.el akan secara
otomatis di.uat ketika program
dimulai2 Per+atikan ta.el di.awa+ ini:
Ta.el "%2"2 Daria.el class 7C8 pada ABB yang dikenal
6A2IABEL DI9UNAKAN
>in Con&oe input (&tandar input)
>out Con&oe output (&tandar
output) >err Con&oe error (&tandar error)
>o
g
Con&oe og
Daria.el6varia.el terse.ut di
de5inisikan dalam 5ile standar include
TiostreamU2 Pada umumnya cin
digunakan ole+ key.oard dan cout$
ceer dan clog digunakan untuk
menampilkan ke screen monitor2
Ke.anyakan sistem operasi
memper.ole+kan programer
mengu.a+ ara+ melalui 7C82 se.agai
conto+ perinta+ di.awa+ ini:
%yWprog
?5e!in
ketika dijalankan program dengan
nama my]prog dan tugas yang
di.erikan cin adala+ 5ile2in2 ketika
sedang mengerjakan operasi 5ile
pada disk$ di+aruskan menggunakan
versi 5ile pada class stream2 Dalam
+al ini i5stream$ o5stream dan
5stream akan dide5inisikan dalam 5ile
include T5streamU2
Seandainya programmer ingin
mem.aca "-- angka yang .erurutan
dari se.ua+ 5ile dengan nama
num.er2dat misalnya$ maka
programmer +arus mendeklarasikan
varia.el masukan 5ile se.agai .erikut:
iH&trea%
dataW5eA
?-?
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
kemudian yang di.utu+kan adala+ AB
B mengam.il 5ile pada +ardisk
yang digunakan2 9al ini dikerjakan
melalui dengan mem.uka 5ungsi
keanggotaan se.agai .erikut:
dataW5e!open(Bangka!
datB)A
sekarang programmer dpat mem.aca
5ile mengunakan statement yang
sama untuk mem.aca yaitu dengan
cin2 Per+atikan program di.awa+ ini:
Hor (i ' 0A i ? 100A
::i) 6
a&&ert(i @' 0)A
a&&ert(i? &iZeoH(dataWarray)
/
&iZeoH(dataWarrayN
0O))A
dataWHie @@ dataWarrayNiOA
8
Terak+ir yang di.utu+kan untuk
mengeta+ui .a+wa sistem 7C8 tela+
mengerjakannya dan kemudian
menuliskan se.agai .erikut:
dataW5e!>o&e
( )A
instruksi terse.ut menutup program
yang kemudian dapat menggunakan
program lagi2 ABB memper.ole+kan
mem.uka panggilan yang .ervariasi
denga construktor$ se.agai conto+
mengganti pada penulisan
iH&trea% dataW5eA // 1ile
dibaca dari
dataW5e!open(Bangka!
datB)A
dapat ditulis dengan
iH&trea%
dataW5e(Bangka!datB)A
apalagi se.ua+ destruktor dengan
otomatis memanggil close2 Pada
kasus tertentu jika se.ua+ 5ile
num.er2dat +ilang$ .agaimana dan
dimana programer akan
mem.erita+ukan permasala+an
terse.utG2 *aka keanggotaan 5ungsi
akan kem.ali dengan pesan
kesala+an jika pada 5ungsi terse.ut
terdapat masala+$ atau kesala+an
yang mungkin terjadi2 Se+igga untuk
menguji apaka+ terdapat kesala+an
atau tidak programer perlu
menuliskan potongan program
di.awa+ ini:
iH (dataW5e!bad(
)) 6
>err ?? B$nabe to
open nu%ber&!dat`nBA
eYit (8)A
8
Program terse.ut di.awa+ ini
merupakan program pem.acaan
angka
Program "%2"
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?H&trea%@
=in>ude ?>&tdib@
*+i! "#e+(")e &tdA
it %ain( )
2008 | Direktorat Pembinaan SMK
?-'
Bahasa pemrograman perasi File
6
),+t it DA4AWSI]< ' 100A // Cumlah item dalam data
it dataWarrayNDA4AWSI]<OA // ukuran data
iH&trea% dataW5e(Bangkan!datB)A // >le masukan
it iA //penghitung 7oop
i7 (dataW5e!bad( )) 6
>err ?? B<rrorM tidak dapat %e%buka 5e angka!dat`nBA
eYit (8)A
8
7,. (i ' 0A i ? DA4AWSI]<A ::i) 6
a&&ert(i @' 0)A
a&&ert(i ? +i?e,7(dataWarray)/+i?e,7(dataWarrayN0O))A
dataW5e @@ dataWarrayNiOA
8
it totaA // 0otal angka
tota ' 0A
7,. (i ' 0A i ? DA4AWSI]<A ::i) 6
a&&ert(i @' 0)A
a&&ert(i ? +i?e,7(dataWarray)/+i?e,7(dataWarrayN0O))A
tota :' dataWarrayNiOA
8
>out ?? B4ota dari &e%ua angka adaa(M B ?? tota ?? a`naA
get>(()A
.et*. (0)A
8
)ika programmer ingin mem.aca
.aris dari data$ maka +arus
menggunakan 5ungsi getline2 Dimana
dei%
)
&tringS t(eW&tring, >(ar
+al terse.ut dide5inisikan pada
potongan program di.awa+ ini:
i&trea%S getine( i&trea%S
inputW5e, &tringS
t(eW&tring)A
i&trea%S getine( i&trea%S
inputW5e,
5ungsi terse.ut mem.aca .aris yag
disimpannya dalam string2 Se.ua+
5ungsi re5erensi kem.ali menuju input
stream2 !entuk kedua dari 5ungsi ini
memper.ole+kan programmer
menuju .aris k+usus atau .atas
?->
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
ak+ir2 )ika tidak dike+endaki maka
programer .isa menggunakan
pengaturan de5ault untuk menuju
.aris .aru 3OSn04
"&$+$ Pemba/aan String
ntuk mem.aca gaya .a+asa
string pada A$ dapat menggunakan
5ungsi getline2 <ungsi ini dapat
dide5inisikan se.agai .erikut:
i&trea%S getine(>(ar Ebufer, int
en, >(ar dei% ' a`na)
dimana parameter6parameter pada
5ungsi ini antara lain:
"2 !u55er$ gaya .a+asa string$
dimana string disimpan setela+
dilakukan pem.acaan
%2 :en$ panjang .u55er yang
digunakan dalam .yte2 <ungsi ini
akan mem.aca sampai len6"
.yte data menuju .u55er2
Parameter ini .iasanya dise.ut
dengan siQeo53.u55er4
=2 Delim$ yaitu karakter yang
digunakan2
<ungsi ini akan mengem.alikan
re5erensi menjadi 5ile masukan2
Kemudian 5ungsi ini akan mem.aca
terus6menerus sampai ditemukan
tanda karakter ak+ir .aris 3OSn042
karakter tanda ak+ir .aris ini tidak
disimpan dalam .u55er$ yang
disimpan se.agai ak+ir string adala+
jika ditemukan tanda .a+wa string
tela+ .erak+ir 3OS-042 Per+atikan
conto+ di.awa+ ini:
>(ar
buferN10OA
>in!getine(bufer,
&iZeoH(bufer))A
<ungsi untuk 5ile keluaran adala+
sama dengan 5ile masukan$ se.agai
conto+ pada deklarasi di.awa+ ini:
oH&trea%
outW5e(Bout!datB)A
deklarasi diatas merupakan
mem.uatCmenulis 5ile dengan nama
out2dat dan dalam penulisan nama
juga diper.ole+kan mnulis dengan
nama seperti out]5ile2 Pada
kenyataanya$ construktor dapat
mengam.il dua argumen tam.a+an2
De5inisi penu+ dari 5ile keluaran
construktor adala+:
oH&trea%MMoH&trea%(>on&t >(ar
Ena%e, int %ode' io&MMout,
int prot ' 5ebuHMMopenprot)A
dimana parameter6parameter pada
5ungsi ini adala+:
,ame$ nama dari nama 5ile yang
ditulis
*ode$ merupakan sekumpulan
5lagCtanda 8 mera+ .ersama6
sama .a+wa +al terse.ut
merupakan mode open2 <lag
ios::out di.utu+kan se.agai 5ile
keluaran2 <lag65lag lain yang
di.utu+kan seperti dalam ta.el
di.awa+ ini:
2008 | Direktorat Pembinaan SMK
?-(
Bahasa pemrograman perasi File
Ta.el "%2%28pen <lag
FLA
9
A2T
I io&MMapp %ena%ba(kan data ke ak(ir output 5e!
io&MMate Gergi ke ak(ir 5e ketika dibuka!
io&MMin )e%buka untuk %a&ukan ((aru& diberikan kepada
Hung&i buka
iH&trea% 3ariabe)! io&MMout Buka 5e untuk output ((aru& diberikan kepada
Hung&i anggota
buka oH&trea% 3ariabe)! io&MMbinary .ie binary (-ika tidak ada, %aka 5e dibuka &ebagai
5e ASCII)! io&MMtrun> )e%buang i&i yang ada &aat %e%buka 5e untuk
%enui&! io&MMno>reat
e
)engaa%i gaga -ika 5e ter&ebut tidak ada!
(Output 5e &a-a!
)e%buka &ebua( 5e input &eau gaga -ika tidak io&MMnorepa
>e
Cangan %eni%pa 5e yang ada! Cika Hie ada,
%enyebabkan
ru&ak ketika buka!
Prot$ 5ile protection dimana +al ini
tergantung pada sistem operasi
yang digunakan untuk
menentukan mode proteksi 5ile
terse.ut2 *isalnya pada ,7P
proteksi de5ault sampai ->??
untuk .acaCtulis sendiri$ .aca pada
group maupun penulisan lainnya$
sedangkan *S6D8SCwindows
de5aultnya adala+ - dalam kondisi
5ile normal2
Per+atikan conto+ pernyataan
di.awa+ ini:
oH&trea%
outW5e(Bdata!nePB, io&MMoutf
io&MMbinaryf io&MMno>reatef
io&MMapp
)A
potongan pogram diatas dapat
diartikan digunakan menam.a+kan
3ios::app4 data .iner menggunakan
3ios::.inary4$ kalau 5ile suda+ ada
atau tela+ ditemukan 5ilenya
3ios::nocreate4 sedangkan data2new
merupakan nama 5ile yang akan
ditulis2
Pada conto+ di.awa+ terdiri dari
5ungsi pendek terse.ut digunakan
untuk menulis pesan pada se.ua+
5ile catatan2 Sesuatu yang pertama
yang dilakukan adala+ mem.uka
5ungsi untuk operasi output 3ios::out4$
menam.a+kan catatan 3ios::app4$
dengan menulis dari permulaan
sampai ak+ir penulisan 3ios::ate42
Setela+ 5ungsi terse.ut menulis
pesan serta tera+ir menutup 5ile2
<ungsi ini tela+ dirancang
dengan seder+ana$ dimana +al
terse.ut juga tidak memperdulikan
mengenai e5isiensi dan se.agai +asil
dari 5ungsi adala+ sangat tidak
e5isien2 *asala+ terse.ut di.uka dan
ditutup setiap saat memanggil
log]message2 *em.uka 5ile
merupakan se.ua+ operasi yang
cukup ma+al$ dan sesuatu juga +arus
mempunyai kecepatan le.i+ tinggi$
jika akan mem.uka 5ile +anya sekali
dan mengingatkan terse.ut2
?-#
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
Grogra% 1"!"!
=in>ude ?io&trea%@
=in>ude ?H&trea%@
*+i! "#e+(")e &tdA
5,i% ogW%e&&age(),+t &tring S %&g)
6
oH&trea% outW5e(Bdata!ogB,
i7 (outW5e!bad( ))
outW5e ?? %&g ?? endA
.et*.A
8
"&$,$ Routin#routin KonBer'i ile
ntuk menulis angka pada
printer atau se.ua+ terminal$
programer +arus mengkonversi
angka ke karakter2 Se.ua+ printer
+anya .isa mengerti karakter .ukan
angka2 Se.agai conto+ '>( +arus
dikonversi menjadi tig karake yaitu:
H'1$ 1>1$ dan H(1 dan kemudian
dicetak2
8perator TT digunakan untuk
mengkonversi data menuju karakter
dan meletakanya dalam se.ua+ 5ile2
<ungsi ini adala+ sangat 5le&i.el2 9al
terse.ut mengu.a+ integer
seder+ana menjadi varia.el tetap
atau yang sesuai dengan stering
dalam .entuk .ilangan +e&adesimal$
oktal atau desimal dengan penulisan
rata pada margin kiri atau kanan2 )ika
selama menulis program tidak
melakukan pengaturan apapun maka
+asil konversi dalam kondisi de5ault2
Keanggotan 5ungsi set5 dan
unset5 digunakan untuk mengatur
kondisi 5lag menjadi .erlogika set H"a
atau clear H-1 dimana +al ini
digunakan kendali proses konversi2
Secara umum .entu penulisan 5ungsi
adala+ se.agai .erikut:
5eW3ar!&etH(^ag&)A // Set
Dags
5eW3ar!un&etH(^ag&)A //
Clear Dags
Ta.el di.awa+ ini merupakan da5tar
5lag dan penjelasnya2
Ta.el "%2=2 7C8 konversi 5lag
FLA
9
A2T
I io&MM&kipP& on>ati karakter yang %enda(uui &pa&i &ebagai
%a&ukan! io&MMeHt Output &ebea( kiri dibenarkan!
io&MMrig(t Output &eba( kanan dibenarkan!
io&MMinterna Ku%erik keuaran adaa( %e%a&ukkan padded oe(
karakter
yang %engi&i antara tanda atau da&ar karakter
dan -u%a( itu &endiri!
2008 | Direktorat Pembinaan SMK
?-@
Bahasa pemrograman perasi File
io&MMbooap(a 0unakan 3er&i karakter yang benar dan &aa(
untuk input dan
output! io&MMde> Output daa% da&ar angka 10, Hor%at de&i%a!
io&MMo>t Keuaran angka dengan Hor%at 8 angka okta!
io&MM(eY Output daa% Hor%at angka 1,, (ek&ade&i%a!
io&MM&(oPba&e )en>etak indikator inti pada &etiap aPa
no%or! )i&anya, angka (ek&ade&i%a yang diaPai
dengan B0YB!
io&MM&(oPpoint )enun-ukkan titik de&i%a untuk &e%ua angka
Hoating;point apaka( ia dibutu(kan!
io&MMupper>a&e Ketika kon3er&i (ek&ade&i%a angka, %enun-ukkan
angka A.
&ebagai (uruH be&ar! io&MM&(oPpo& )ene%patkan tanda po&itiH &ebeu% &e%ua no%or!
io&MM&>ientiHi> )engkon3er&i &e%ua angka ^oating;point untuk
nota&i i%ia( pada output!
io&MM5Yed )engkon3er&i &e%ua ^oating;point no%or ke titik
tetap pada
output! io&MMunitbuH Bufer output!
)ika pada saat mnulis program
menginginkan keluaran .erupa
5ormat .ilangan +e&adesimal$ maka
yang +arus dikerjakan adala+
menam.a+ dengan menulis
potongan program di.awa+ ini:
nu%ber ' 0Y1..A
>out ?? BDe>M B ?? nu%ber ??
a`naA
>out!&etH( io&MM(eY)A
>out ?? B2eYM B ?? nu%ber ??
a`naA
int >leEar!Pidt((int
&iZe)A
suatu saat output +arus ditentukan
sesuai dengan jumla+ karakter yang
digunakan2 Se.agai conto+ misalnya
sejumla+ = angka$ secara umum
dikonversi menjadi karakter string H=12
)ika diatur sampai empat$ maka
+asilnya menjadi dimana
menunjukan satu ruang karakter2
Per+atikan 5ungsi di.awa+ ini:
>out!&etH( io&MMd
e>)A
ketika di1run1$ maka pprogram akan
meng+asilkan keluaran se.agai
.erikut:
De>M
10"1
2eYM
1f
Ketika konversi angka ke karakter
dilakukan$ maka 5ungsi
keanggotaannya ditulis:
int >leEar!pre>i&ion(int
digit&)A
pernyataan program diatas
digunakan untuk mengatur .erapa
.anyak angkat yang akan
dimunculkan setela+ tanda koma 3$42
Dan kemudian menuliskan 5ungsi
seperti di.awa+ ini:
>(ar >leEar!5(>(ar
pad)A
?"-
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
program diatas digunakan untuk
menentukan karakter$ dimana
karakter digunakan se.agai
penam.a+ angka ketika angka terlalu
kecil2 <ungsi65ungsi terse.ut dapat
dise.ut dengan pengara+$ atau
programer dapat menggunakan 7C8
manipulator2
Se.ua+ 7C8 manipulator adala+
se.ua+ 5ungsi k+usus yang
digunakan dalam pernyataan 7C8
untuk mengu.a+ 5ormat2 )ika
dipikirkan se.ua+ manipulator dapat
dianalogikan seperti +alnya peluru
ajai.$ dimana ketika ditem.akan
melaluiCmasuk atau setela+ keluar
dari se.ua+ 5ile$ akan mengu.a+
kondisi se.ua+ 5ile terse.ut2
*anipulator tidak menye.a.kan
.e.erapa keluaran tetapi +anya
mengu.a+ kondisinya saja2
Se.agai conto+ pada
manipulator +e& +anya melakukan
konversi keluaran menjadi
+e&adesimal2
=in>ude
?io&trea%@
nu%ber '
0Y1..A
>out ?? BKu%ber i& B ?? (eY
?? nu%ber
?? de> ??
a`naA
se.ua+ 5ile +eader TiostreamU
mende5inisikan kumpulan dasar dari
se.ua+ menipulator yang dapat
dili+at pada ta.el di.awa+ ini:
Ta.el "%2?2 7C8 manipulator
)AKIG$FA4O/ D<SK/IG
SI
de> Keuaran angka daa% Hor%at de&i%a!
(eY Keuaranangka daa% Hor%at
(eYade&i%a! o>t Keuaran angka daa% Hor%at okta!
P& Fon>ati &pa>e pada %a&ukan!
end Keuaran pada end;oH;ine
end
&
Keuaran pada end;oH;&tring (i`0a)!
^u&
(
Fakukan pe%buferan keuaran out!
Selain te.al diatas ada juga
manipulator yang dide5inisikan ole 5ile
+eader TiomanipU dapat dili+at pada
ta.el di.awa+ ini:
Ta.el "%2'2 <ungsi 7C8 manipulator pada A
)AKIG$FA4O/ D<SK/IG
SI &etio&^ag&(ong ^ag&) Atur pe%ii( Hag kon3er&i!
re&etio&^ag&(ong
^ag&)
/e&et ^ag terpii(!
&etba&e(int ba&e) Atur koner&i da&ar %enu-u 8, 10, atau 1,!
$rutkan
&e>ara u%u% de>, (eY, o>t! &etP(int Pidt() Atur ebar keuaran!
&etpre>i&ion(int
pre>i&ion)
Atur pre&i&i dari keuaran Hoating;point!
&et5(>(ar >() Atur karakter yang di bok/ditandai!
2008 | Direktorat Pembinaan SMK
?""
Bahasa pemrograman perasi File
ntuk le.i+ jelasnya per+atikan penggunaan 7C8 manipulator pada program
di.awa+ ini2
program "%2=
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?io%anip@
*+i! "#e+(")e &tdA
it %ain( )
6
it nu%ber ' 1"A // angka
untuk keluarkan
8,"t rea ' 1"!1#A // angka
yang nyata
>out ?? B1"1#*,+8701"1#*,+8701"1#*,+870`nBA // ruler keluaran
>out ?? nu%ber ?? B?;`nBA
>out ?? &etP(*) ?? nu%ber ?? B?;`nBA
>out ?? &etP(*) ?? &etHi(aEa) ?? nu%ber ?? B?;`nBA
>out ?? &etio&^ag&( io&MM&(oPpo&f io&MMeHt) ?? &etP(*) ?? nu%ber ??
B?;`nBA
>out ?? rea ?? B?;`nBA
>out ?? &etpre>i&ion(1) ??&etio&^ag&( io&MM5Yed) ?? rea ?? B?;`nBA
>out ?? &etio&^ag&( io&MM&>ientiHi>) ?? rea ?? B?;`nBA
get>(()A
.et*. (0)A
8
Keluaran dari program diatas setela+ di compile adala+:
1"1#*,+8701"1#*,+8701"1#*,+870
1"?;
1"?
;
EEE1"?;
:1"EE?;
1"!1#?;
1"!1?;
1e:01?;
"&$-$ ile Binar3 %an AS.!!
(merican "tandard %ode for
&nformation &nterchange 3ASA774
merupakan kode yang terdiri dari @'
kode karakter dan == kode kendali
3lihat lampiran 342 Dengan kode
ASA77 memungkinkan manusia
?"%
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
pengguna komputer dapat mengerti
karena AAS77 merupakan
pengkodean yang mengacu pada
.a+asa manusia2
*isalnya ketika programer
menulis 5ile dengan nama prog2cc
secara otomatis 5ile terse.ut .erupa
kode ASA772 Se.ua+ terminal seperti
key.oard$ printer .er+u.ungan
dengan data karakter2 Ketika
sesorang menulis angka seperti "%=?
yang kemudian muncul pada layar
monitor$ angka terse.ut +arus
dikonversi menjadi empat karakter
3H"1$ H%1$ H=1$ dan H?14 2
9al yang sama juga ketika
seseorang mem.aca angka dari
key.oard$ se.ua+ data +arus
dikonversi dari data karakter menjadi
data integer2 9al ini dikerjakan ole+
operator UU2 Karater ASA77 H-1
mempunyai nilai ?#$ H"1 mempunyai
nilai ?@ dan seterusnya seperti
terli+at pada lampiran kode ASA772
Ketika sesorang akan mengu.a+ digit
tunggal dari kode ASA77 menjadi
integer akan sama +alnya anda
mengu.a+ menjadi data ?#2
Per+atikan program di.awa+ ini:
int
integerA
>(ar
>(A
>( '
a*aA
integer ' >( ;
#8A
>out ?? BInteger B ??
integer ?? a`naA
Daripada mengingat karakter H-1
yang le.i+ sulit dingat dengan ?#$
le.i+ .aik mengkonversi menjadi
karakter O-02 Per+atikan program
di.awa+ ini:
integer ' >(
; a0aA
komputer .ekerja dengan data
.iner2 Ketika komputer mem.aca dari
5ile ASA77$ program pada komputer
memproses data karakter melalui
routine konversi seperti routine
konversi integer yang tela+
dide5inisikan2 8perasi ini akan
menjadi le.i+ ma+al dikarenakan
mem.utu+kan ruang memori dan
waktu2 Se.ua+ 5ile .iner tidak
mem.utu+kan konversi2 <ile65ile
terse.ut umumnya memakai ruang
yang kecil di.andingkan 5ile kode
ASA772 Kelema+an pada 5ile .iner
adala+ tidak .isa dicetak secara
langsung pada terminal atau printer2
)ika 5ile .iner dicetak pada printer
secara langsung tanpa adanya
konversi yang terjadi adala+ data
cetak tidak sesuai seperti terli+at
HYcLZceAaeAAee)9AZePa2
Tentunya apa yang akan terjadi jika
dico.a mencetak 5ile .iner2
<ile ASA77 marupakan 5ile port.el
karena .anyak dipakai2 <ile ini dapat
dipinda+ dari satu mesin ke mesin
yang lain dengan sedikit kesala+an2
<ile .iner .isa dikatakan pasti tidak
porta.el2 <ile mana yang +arus
digunakanG Dalam .e.erapa kasus
ASA77 sangat .aik2
Alasan ini dikemukakan jika
mempunyai data dengan jumla+ kecil
atau medium waktu konversi tidak
.egitu mempengaru+i unjuk kerja
program yang tela+ di.uat2 Selain itu
5ile ASA77 juga mem.uat dalam
melakukan veri5ikasi data2 9anya
ketika menggunakan sejumla+ data
yang .esar saja akan memakan
ruang dan mempengaru+i unjuk kerja
se+ingga diperlukan data dalam
5ormat .iner2
2008 | Direktorat Pembinaan SMK
?"=
Bahasa pemrograman perasi File
"&$2$ Binar3 !6O
7nput atau output 5ile .iner dapat
diselesaikan melalui dua 5ungsi
keanggotaan yaitu: read and write2
Penulisan atau sintak untuk
mem.aca adala+:
inW5e!read(dataWptr, &iZe)A
dimana data]ptr merupakan pointer
se.agai tempat untuk meletakan data
dan siQe merupakan angka dalam
ukuran .yte yang akan di.aca2
<ungsi keanggotaan ^count akan
mengem.alikan sejumla+ .yte data
yang tela+ di.aca pada ak+ir2 9al ini
dimungkinkan akan .erkurang
diandingkan dengan jumla+ .yte
yang diminta2 Se.agai conto+
pem.acaan yang mungkin ditemui
pada ak+ir 5ile atau ditemukan
adanya kesala+an2
+t.*)t 6
it Pidt(A
it (eig(tA
8 re>tangeA
inW5e!read(+t"ti)P)"+t?)h". E@(Sre>tange), +i?e,7(re>tange))A
i7 (inW5e!bad( )) 6
>err ?? B4idak di%ungkinkan %e%ba>a re>tange`nBA
eYit (8)A
8
i7 (inW5e!g>ount( ) _' +i?e,7(re>tange)) 6
>err ?? B<rrorM tidak bi&a untuk %e%ba>a `nBA
>err ?? BI/O %engaa%i error, <O. tidak bi&a di(itung`nBA
8
Dalam conto+ program diatas
ketika sedang mem.aca se.ua+
struktur persegi panjang2 Se.ua+
operator V akan mem.uat persegi
panjang terse.ut manuju se.ua+
pointer2 Kemudian se.ua+ sintak
static]castTc+ar KU di.utu+kan
setela+ read menginginkan se.ua+
deretan array2 Se.ua+ operator
siQeo5 digunakan untuk menentukan
.erapa .anyak .yte yang di.aca
se.aik pengecekan terse.ut sampai
operasi terse.ut menjadi .er+asil2
Se.ua+ keanggotaan 5ungsi write
tela+ memanggil secara sekuensial
sama dengan operasi read adala+
dengan sintak:
outW5e!Prite(dataEptr, siFe)A
12KJK B*Qe.
Bufer atau &ering kita
artikan &ebagai pena(an atau
penyangga &uatu %e%ori &ebua(
data! Genyangga &ebua( I/O
tidak bi&a ditui& &e>ara ang&ung
pada &ebua( 5e! Sebua( data
akan di-aga keberadaanya daa%
&ebua( bufer &a%pai di&ana
>ukup untuk %enui&
?"?
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
daa% kapa&ita& data be&ar atau
&a%pai &ebua( bufer di&egarkan
ke%bai! Sebua( progra% yang
%engikuti diran>ang untuk
di>etak pe&an >epat &a%pai
&etiap bagian ter&ee&aikan!
Ger(atikan potongan progra%
dibaPa( iniM
>out ??
B%uaiBA
doW&tepW1(
)A
>out ?? Bangka( 1
>o%peteBA
doW&tepW"(
)A
>out ?? Bangka( "
>o%peteBA
doW&tepW1(
)A
>out ?? Bangka( 1
>o%pete`nBA
se.agai ganti dari menulis se.ua+
pesan sampai pada tiap langka+
selesai$ cout pesan terse.ut
diletakan dalam se.ua+ .u55er2
9anya setela+ program selesai maka
selanjutnya .u55er memperle+
penyegaran atau pengosongan dan
semua pesan yang datang
ditumpa+kan keluar dengan seketika2
Se.ua+ manipulator 7C8 5lus+ akan
menyegarkan .u55er6.u55er terse.ut2
Si5at yang ditulis diatas di.erikan
conto+ seperti pada program
di.awa+ ini:
>out ?? B%uaiB ??
Hu&(A
doW&tepW1(
)A
>out ?? BFangka( 1 >o%peteB
?? ^u&(A
doW&tepW"(
)A
>out ?? Bangka( " >o%peteB
?? ^u&(A
doW&tepW1(
)A
>out ?? Bangka( 1
>o%pete`nB ??
^u&
(A
karena tiap pernyataan keluaran
.erak+ir dengan 5lus+$ se.ua+
keluaran akan ditampilkan secara
langsung2 7ni artinya .a+wa
penyelesaian pesan akan datang
sesuai dengan waktunya2
Dalam 7C8 .u55er$ data dita+an
dan kemudian dikirim dalam .entuk
5ile$ sedangkan dalam 7C8 tidak
ter.u55er data secara langsung dikirim
dalam .entuk 5ile2 Analogi ini
disampaikan dalam .entuk kejadian
di lingkunang kita pada sejumla+
penjepit kertas yang jatu+ kelantai
seseorang dapat mengam.ilnya
dalam mode .u55er atau tanpa .u55er2
Dengan mode .u55er jika anda
menggunakan tangan kanan untuk
mengam.il penjepit kertas dan
kemudian meminda+kan penjepit ke
tangan kiri2 Proses terse.ut diulang6
ulang sampai pada tangan kiri penu+
kemudian penjepit terse.ut
dipinda+kan ke dalam kotak yang
ada diatas meja2 Dengan .u55er 7C8
akan ada media sementara yang
digunakan untuk menampung
se.elum dipinda+kan ke media yang
utama dan le.i+ .esar2 Dalam mode
tanpa .u55er$ dapat dianalogikan
seperti anda mengam.il sejumla+
penjepit kertas yang jatu+ dilantai
dan langsung memasukan kedalam
kotak yang .erada diatas meja2
Pekerjaan ini dilakukan dengan
tangan kanan tanpa menggunakan
tangan kiri se.agai penampung
sementara2
Dalam ke.anyakan kasus$ 7C8
dengan .u55er sering digunakan
daripada tanpa .u55er2 Dalam 7C8
tanpa .u55er tiap pem.acaan dan
penulisan mem.utu+kan
pemanggilan system2 !e.erapa
pemanggilan pada sisem operasi
sangat ma+al dan mem.utu+kan
waktu yang .anyak$ se+ingga
dengan 7C8 yang menggunakan
2008 | Direktorat Pembinaan SMK
?"'
Bahasa pemrograman perasi File
.u55er dapat meminimalkan
panggilan6panggilan yang dilakukan2
7C8 tanpa .u55er .iasanya
digunakan ketika +anya mem.aca
atau menulis data .iner dalam
jumla+ .esar ketika kendali langsung
dari piranti atau se.ua+ 5ile
di.utu+kan2
Kem.ali pada penjepit kertas
seperti diconto+kan diatas$ jika
seseorang menggam.il .enda kecil
seperti penjepit terse.ut$ tentunya
oran terse.ut tidak akan menemui
kesulitan menggunakan tangan kiri
se.agai pena+anCpenampung
sementara2 Tetapi jika seseorang
menam.il .ola meriam yam mana
.endanya le.i+ .esar ddi.andingkan
penampungnya maka kasus seperti
ini tidak menggunakan .u55er2
Se.ua+ open system$
pemanggilan digunakan untuk
mem.uka 5ile tanpa .u55er2 Se.ua+
de5inisi makro digunakan dengan
cara memanggil dari system yang
.er.eda2 Se.agai conto+ .ekerja
pada dua system yang .er.eda
seperti pada system operasi ,7P
dan *S6D8SCwindows2 Dalam kasus
terse.ut maka se.ua+ kondisi
compilasi 3Yi5de5CYendi54 digunakan
untuk memper.aiki 5ile terse.ut
seperti conto+ program di.awa+ ini:
#in>ude ?&y&/type&!(@
=in>ude ?&y&/&tat!(@
=in>ude ?H>nt!(@
=iHdeH W W)SDOSW W // jika bekerja pada <S.OS
=in>ude ?io!(@ // memanggil include >le i/o pada <S.OS
=e&e /* E E<S.OSE E */
=in>ude ?uni&td!(@ // memanggil include >le i/o pada +)#G
=endiH /* E E<S.OSE E */
Se.ua+ perinta+ atau sintak untuk mem.uka akan memanggil:
int 5eWde&>riptor ' open(name, Dags)A // >le yang sudah
ada
5eWde&>riptor ' open(name, Dags, mode)A // >le baru
dimana$ 5ile]descriptor merupakan
integer yang digunakan untuk
mengidenti5ikasikan 5ile untuk di.aca$
ditulis atau ditutup pemanggilannya2
)ika 5ile]descriptor kurang dari -
.erarti kesala+an tela+ terjadi2 ,ame
merupakan nama 5ile2 <lag
merupakan de5inisi dalam 5ile +eader
5cntl2+$ dimana 5lag terse.ut
dijelaskan dalam ta.le di.awa+2
Sedangkan mode adala+ mode
proteksi 5ile dimana mode ini
.iasanya ->??2
?">
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
Ta.el "%2>2 8pen 5lag
FLA9 A2T
I OW/DOKF\ Open Hor reading ony!
OWT/OKF
\
Open Hor Priting ony!
OW/DT/ Open Hor reading and Priting!
OWAGG<KD Append neP data at t(e end oH t(e 5e!
OWC/<A4 Create 5e (t(e 5e %ode para%eter reXuired P(en
t(i& ^ag i&
pre&ent)! OW4/$KC IH t(e 5e eYi&t&, trun>ate it to 0 engt(!
OW<9CF .ai iH 5e eYi&t&!
OWBIKA/\ Open in binary %ode (oder $niY &y&te%& %ay not (a3e
t(i& ^ag)!
Se.agai conto+ pada saat
operasi mem.uka 5ile dengan nama
5ile data2t&t dalam mode pem.acaan
te&t$ maka potongan program yang
dituliskan adala+ se.agai .erikut:
dataWHd ' open(Bdata!tYtB,
OW/DOKF\)A
selain conto+ diatas$ .agaimana
untuk mem.uat se.ua+ 5ile output2dat
dapat ditulis$ maka potongan
program adala+ se.agai .erikut:
outWHd '
open(Boutput!datB,
OWC/<A4fOWT/OKF\,
0,,,)A
Pada sintak terse.ut diatas
menggunakan operator 8R 3 b 4 yang
artinya merupakan penga.ungan 5lag
yang mele.i+i dari satu$ untuk
mempermuda+ dan mempercepat
penulisan ketika .e.erapa program
tela+ .erjalan pada awal$ dan tiga 5ile
suda+ ter.uka$ dimana +al terse.ut
dapat dideskrisikan pada ta.le
di.awa+ ini:
Ta.el "%2(2 Standar 5ile tidak ter.u55er
NO1O2
FILE
PEN&ELASAN
0 Standard in
1 Standard out
" Standard error
<ormat dari pemanggilan read
adala+:
readW&iZe ' read(5eWde&>riptor,
buHHer, &iZe)A
dimana: read]siQe$ merupakan
jumla+ actual dari .yte yang di.aca$
- mengindikasikan ak+ir 5ile dan
.ilangan negative mengindikasikan
adanya kesala+an dalam 5ile2
<ile]descriptor$ merupakan
se.ua+ 5ile yang mendeskripsikan
dari 5ile yang di.uka$ .u55er
merupakan se.ua+ pointer untuk
menempatkan dan meletakan data
yang di.aca dari 5ile2 SiQe merupakan
ukuran data yang di.aca2 9al ini
merupakan ukuran dari 5ile yang
diminta2 Pada jumla+ se.enarnya
dari .yte yang di.aca mungkin le.i+
2008 | Direktorat Pembinaan SMK
?"(
Bahasa pemrograman perasi File
kecil di.andingkan dengannya2
<ormat pemanggilan penulisan
adala+ se.agai .erikut:
PriteW&iZe ' Prite(5eWde&>riptor,
buHHer, &iZe)A
pada sintaks diatas$ write]siQe
merupakan jumla+ .yte data actual
yang ditulis$ .ilangan negative
menunjukan adanya kesala+an2 <ile
descriptor adala+ 5ile yang
meneskripsikan saat se.ua+ 5ile
di.uka2
!u55er adala+ se.ua+ pointer
dimanadata ditulis2 SiQe adala+
ukuran data yang ditulis2 Se.ua+
system akan dico.a untuk ditulisnya
dalam jumla+ .esar$ tetapi jika piranti
tela+ penu+ ata disana ada .e.erapa
masala+$ sejumla+ .ilangan dari .yte
mungkin akan ditulis2 Terak+ir adala+
melakukan penutupan 5ile dimana
sintaknya adala+ se.agai .erikut:
^ag '
>o&e(5eWde&>riptor)
pada sintaks terse.ut diatas terdapat
5lag yang digunakan untuk menandai
.a+wa ketika data - untuk menandai
.a+wa penutupan .er+asil
sedangkan$ .ilangan negative ketika
mengalami kegagalan atau error2 <ile
descriptor untuk mendeskripsikan
saat 5ile di.uka2
Program di.awa+ ini merupakan
pencopyan 5ile2 8perasi ini
mengunakan 7C8 tanpa .u55er karena
program terse.ut mem.utu+kan
.u55er yang .esar2 Program di.uat
tidak menggunakan 7C8 .u55er untuk
mem.aca " K! data dan kemudian
dipinda+kan menuju .u55er dengan
menggunakan i5stream dikirim
menuju .u55er ">K!2
Program "%2?2
=in>ude?>onio!(@
=in>ude ?io&trea%@
=in>ude ?>&tdib@
=in>ude ?&y&/type&!(@
=in>ude ?&y&/&tat!(@
=in>ude ?H>nt!(@
*+i! "#e+(")e &tdA
=iHdeH W WTIK1"W W // jika kita menggunakan Windo?s4(
=in>ude ?io!(@ // include >le i/o bekerja pada Windo?s4(
=e&e /* E EW#)4(E E */
=in>ude ?uni&td!(@ // include >le i/o bekerja pada uni"
=endiH /* E EW#)4(E E */
?"#
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
),+t it B$..</WSI]< ' (1, E 10"#)A // menggunakan buffer &3k
it %ain(it arg>, )h". Earg3NO)
6
)h". buferNB$..</WSI]<OA // buHer
data it inW5eA // input
>le descriptor it outW5eA
// output >le descriptor
it readW&iZeA // number of bytes on last read
i7 (arg> _'
1) 6
>err ?? B<rrorM Angka &ebagai arug%en &aa( `nBA
>err ?? Bpenggunaanya adaa( M >opy ?Hro%@ ?to@`nBA
eYit(8)A
8
inWHie ' open(arg3N1O, OW/DOKF\)A
i7 (inW5e ? 0) 6
>err ?? B<rrorMtidak bi&a dibuka B ?? arg3N1O ?? a`naA
eYit(8)A
8
outWHie ' open(arg3N"O, OWT/OKF\ f OW4/$KC f OWC/<A4, 0,,,)A
i7 (outW5e ? 0) 6
>err ?? B<rrorM4idak bi&a dibuka B ?? arg3N"O ?? a`naA
eYit(8)A
8
Ghi-e (t.*e) 6
readW&iZe ' read(inWHie, bufer, +i?e,7(bufer))A
i7 (readW&iZe '' 0)
b.e"'A // akhir >le
i7 (readW&iZe ? 0) 6
>err ?? B<rrorMke&aa(an ba>a`nBA
eYit(8)A
8
Prite(outW5e, bufer, (*+i!e% it) readW&iZe)A
8
>o&e(inW5e
)A
>o&e(outW5
e)A get>(()A
.et*. (0)A
8
2008 | Direktorat Pembinaan SMK
?"@
Bahasa pemrograman perasi File
:angka+ pertama +arus
mem.uat semua ukuran .u55er
dide5inisikan se.agai nilai konstan$
se+ingga +al terse.ut sangat muda+
dimodi5ikasi$ .iasanya cukup muda+
diingat yaitu misalnya jika ulkurannya
">K maka programmer dapat
menggunakan dengan menuliskan
"> K "-%?2 Atau .entuk konstannya
dapat ditulis seperti se.elumnya yaitu
">K2
)ika pengguna menggunakan
program yang tidak sesuai$ akan
muncul pesan .a+sa +asil atau
program mengalami kesala+an2
ntuk menolongnya atau
mem.etulkannya maka se.ua+
pesan akan muncul .agaimana
menggunakan program yang .etul2
Suatu ketika programmer
dimungkinkan tidak mengeta+ui
.a+wa .u55er tela+ penu+$ se+ingga
perlu ditam.a+kan read]siQe yang
digunakan untuk menentukan jumla+
.yte yang akan ditulis
"&$"5$ Rutin#Rutin (a%a .DD
C:: mengiQinkan anda untuk
menggunakan li.rary 7C8 pada A
didalam program ABB2 9al ini terjadi
.anyak kali terjadi karena seseorang
mem.utu+kan suatu program A$
menterjema+kannya kepada ABB$
dan tidak ingin mengganggu
pemanggilan 7C82 Dalam .e.erapa
+al$ li.rary .a+asa A yang lama .isa
le.i+ .aik dan le.i+ muda+
digunakan di.andingkan dengan
yang .aru dalam +al ini ABB2
Se.agai conto+$ rutin6rutin string
pada A seperti sscanf dan
sprintf menggunakan suatu jau+
le.i+ kompak dalam sistim
pengaturannya di.anding ABB2
Deklarasi6deklarasi pada struktur dan
5ungsi yang digunakan ole+ 5ungsi A
7C8 disimpan di dalam standar 5ile
in>ude <cstdio>!
.IF< *>leEariableA /E
Comment E/
se.agai conto+:
#in>ude
?>&tdio@
.IF< EinW5eA /E .ie
beri&i data %a&ukan data E/
Se.elum suatu 5ile dapat
digunakan$ yang +arus di.uka
dengan 5ungsi adala+ 5open2 5open
kem.ali pada se.ua+ pointer ke 5ile
struktur2 <ormat untuk 5open adala+:
>leEariable ' Hopen(name,
mode)A
dimana 5ile]varia.lenya adala+:
name adala+ se.ua+ nama yang
digunakan ole+ se.ua+ 5ile seperti
3adata2t&ta$ atemp2data$ dan lain6lain42
*ode merupakan se.agai indikasi
apaka+ 5ile akan di.aca atau ditulis2
*ode adala+ dengan tanda Hw1
adala+ untuk menulis atau Hr1 untuk
mem.aca2 <ungsi 5close untuk
menutup 5ile$ dimana 5ormat 5close
adala+:
status '
H>o&e(>leEariable)A
varia.el status akan menjadi no
jika 5close tela+ sukses atau .ukan
nol 3nonQero4 jika mengalami
kesala+an2
A menyediakan tiga t+ree
langka+ se.elum mem.uka se.ua+
?%-
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
5ile2 9al ini dapat dili+at pada da5tar di.awa+ ini:
4abe 1"!8! .ie
Standard
FILE DESC2IPTI
ON &tdin Standar %a&ukan (%e%buka untuk diba>a)!
Gada ba(a&a C:: eki3aen dengan )i!
&tdout Standard keuaran (%e%buka untuk ditui&)!
Gada ba(a&a C:: eki3aen dengan ),*t!
&tderr Standard &aa( (%e%buka untuk ditui&)!
Gada ba(a&a C:: eki3aaen dengan )e..!
(daa% ba(a&a C tidak ada &edangkan daa%
ba(a&a C::
eki3aen dengan )-,!!
<ungsi 5getc akan mem.aca
se.ua+ karakter dari suatu 5ile2 )ika
tidak ada le.i+ .anyak data di dalam
5ile$ 5ungsi kem.ali secara konstan ke
E8< 3E8< dideskkripsikan pada
cstdio42 Yang perlu dicatat .a+wa
5getc kem.alikan satu .ilangan .ulat$
.ukan suatu karakter2 7ni diperlukan
karena E8< 5lag +arus mempunyai
nilai .ukan karakter2
Grogra% 1"!*!
=in>ude ?>&tdio@
=in>ude ?>&tdib@ /* 1ile standar =)S# C */
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
),+t )h". .IF<WKA)<NO ' Binput!tYtBA // nama >le masukan
it %ain( )
6
it >ount ' 0A // jumlah karakter
.IF< EinW5eA // masukan >le
it >(A // karakter atau @O1 Dag dari
masukan
inWHie ' Hopen(.IF<WKA)<, BrbB)A
i7 (inW5e '' K$FF) 6
>err ?? Btidak bi&a %e%buka .ie B ?? .IF<WKA)< ?? a`naA
eYit(8
)A
8
2008 | Direktorat Pembinaan SMK
?%"
Bahasa pemrograman perasi File
>( ' Hget>(inW5e)A
i7 (>( '' <O.)
b.e"
'A
::>ountA
8
>out ?? B-u%a( karakterB ?? .IF<WKA)< ?? B adaa( B ?? >ount ??
a`naA
H>o&e(inWHie)A
.et*. (0)A
8
"&$""$ ile 'ekuen'ial
Se^uential 5ile 3Arsip sekuensial4
adala+ sekumpulan rekaman yang
disimpan dalam media penyimpanan
sekunder komputer$ yang dapat
diakses secara sekuensial mulai dari
rekaman pertama sampai dengan
rekaman yang terak+ir$ rekaman per
rekaman secara seara+2 <ile
sekuensial .erisi rekord6rekord data
yang tidak mengenal posisi .aris atau
nomor rekord pada saat aksesnya$
dan setiap record dapat mempunyai
le.ar yang .er.eda6.eda2
Akses ter+adapnya selalu
dimulai dari awal 5ile dan .erjalan
satu persatu menuju ak+ir dari 5ile2
Dengan demikian$ penam.a+an 5ile
+anya dapat dilakukan ter+adap ak+ir
5ile$ dan akses ter+adap .aris tertentu
+arus dimulai dari awal 5ile2
<ungsi .aku yang terkait dengan
5ile sekuensial ini antara lain adala+
5print5$ 5scan5$ dan rewind 2 Program
.erikut menyajikan penanganan 5ile
sekuensial tentang data nasa.a+
yang .erisi tiga 5ield$ yaitu nomor
identitas 3account4$ nama 3name4$
dan posisi ta.ungannya 3balance4
untuk 3"4 menyajikan yang
ta.ungannya .ernilai nol$ 3%4
.erstatus kredit$ dan 3=4 .erstatus
de.et2 *isalny se.ua+ 5ile data
tersimpan dengan nama klien2dat2
Rekaman terak+ir adala+
rekaman 5ikti5$ yang menandai ak+ir
dari arsip2 Pada .e.erapa
implementasi$ rekaman 5ikti5 ini
dise.ut se.agai E8< 3End 85 <ile42
Arsip sekuensial .erasal dari +asil
perekaman 3penulisan4 yang juga
dilakukan rekaman per rekaman2
Setiap rekaman .ole+ .erisi type
dasar ataupun type terstruktur yang
tela+ dide5inisikan$ setiap rekaman
strukturnya sama2
Elemen dari rekaman dise.ut
se.agai a5ielda$ ada 5ield 3atau juga
sekumpulan 5ield4 rekaman yang
dise.ut se.agai akeya karena
kek+ususannya dalam proses2 )ika
key dari setiap rekaman tidak ada
yang sama 3unik4$ maka key menjadi
identitas rekaman$ dan dise.ut
aprimary keya2 Setiap rekaman dapat
diakses dan dikonsultasi 3di.aca4
menurut urutannya dengan
pemanggilan primiti5 akses yang
tersedia2 Perekaman dapat dilakukan
melalui primiti5 penulisan2
Per+atikan .a+wa suatu arsip
sekuensial +anya dapat disiapkan
+anya pada sala+ satu modus
operasi: diaksesCdi.aca$ atau ditulis2
?%%
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
Dalam de5inisi arsip sekuensial$ tidak
perna+ se.ua+ arsip diproses untuk
kedua modus: di.aca dan sekaligus
ditulis2 Primiti56primiti5 ts.$ akan
dide5inisikan kemudian2
;am.ar "%2=2 8perasi <ile skuensial
Program "%2>
=in>ude ?&tdio!(@
*+i! "#e+(")e &tdA
5,i% %ain() 6
it reXue&t, a>>ountA
8,"t baan>eA
)h".
na%eN"*OA
.IF< E>HGtrA
i7 ( (>HGtr ' Hopen(Bkien!datB, Br:B) ) '' K$FF )
printH(B.ie >oud not be opened`nB)A
e-+e 6
printH ( B<nter reXue&t`nB
B1 ; Fi&t a>>ount& Pit( Zero
baan>e&`nB B" ; Fi&t a>>ount&
Pit( >redit baan>e&`nB B1 ; Fi&t
a>>ount& Pit( debit baan>e&`nB
B# ; <nd oH run`nD B ) A
2008 | Direktorat Pembinaan SMK
?%=
Bahasa pemrograman perasi File
Ghi-e (reXue&t _' #) 6
H&>anH (>HGtr, BRdR&RHB, Sa>>ount, na%e, Sbaan>e)A
+Git)h (reXue&t) 6
)"+e 1M
printH (B`nA>>ount& Pit( Zero baan>e&M`nB)A
Ghi-e ( _HeoH(>HGtr) ) 6
i7 (baan>e '' 0)
printH (BR;10dR;11&+!"H`nB, a>>ount, na%e, baan>e)A
H&>anH (>HGtr, BRdR&RHB, Sa>>ount, na%e, Sbaan>e)A
8
b.e"
'A
)"+e "M
printH (B`nA>>ount& Pit( >redit baan>e&M`nB)A
Ghi-e ( _HeoH(>HGtr) ) 6
i7 (baan>e ? 0)
printH (BR;10dR;11&+!"H`nB, a>>ount, na%e, baan>e)A
H&>anH (>HGtr, BRdR&RHB, Sa>>ount, na%e, Sbaan>e)A
8
b.e"
'A
)"+e 1M
printH (B`nA>>ount& Pit( debit baan>e&M`nB)A
Ghi-e ( _HeoH(>HGtr) ) 6
i7 (baan>e @ 0)
printH (BR;10dR;11&+!"H`nB, a>>ount, na%e, baan>e)A
H&>anH (>HGtr, BRdR&RHB, Sa>>ount, na%e, Sbaan>e)A
8
b.e"'A
8
rePind(>HGtr)A
printH( B`nD B)A
&>anH (BRdB, SreXue&t)A
8
printH (B<nd oH run!`nB)A
H>o&e(>HGtr)A
8
8
?%?
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
"&$"&$ Program O(era'i i!e
Dari uraian operasi 5ile diatas$
di.awa+ ini merupakan .e.erapa
operasi 5ile yang sering dilakukan
se+ari6+ari2 Setiap kita .ekerja
dengan menggunakan komputer kita
.iasanya melakukan operasi
mem.uka 5ile$ menulis 5ile$
menam.a+ data 5ile$ meng+apus 5ile$
menutip 5ile dan lain se.againya2
8perasi terse.ut dilakukan dengan
menggunakan mouse atau key.oard
secara langsung
!agaimana jika +al terse.ut
dilakukan le+ programG2 Tentunya +al
terse.ut +arus ada instruksi atau
perinta+6perinta+ yang digunakan
ole+ tiap operasi terse.ut2 Di.awa+
ini merupakan .e.erapa operasi 5ile
yang dilakukan dengan .a+asa ABB2
"&$"&$ "$ Membuka Cile
Perinta+ mem.uka 5ile dan
meng+u.ungkannya dengan stream
dengan 5open 3li.rary stdio2+4 dan
menutupnya dengan 5close
.IF< EHopen(>(ar Ena%aW5e, >(ar
E%ode)
.IF< EH>o&e(.IF< EpointerW5e)
Dalam mem.uka 5ile diperlukan
mode$ dimana +al terse.ut
merupakan cara pengaksesan 5ile2
!erikut da5tar mode yang dapat
digunakan:
Ta.el "%2@2 *ode operasi 5ile pada A
1ODE A2T
I r )e%buka &ebua( 5e tek& untuk pe%ba>aan
P )e%buat &ebua( 5e tek& untuk penui&an
a )ena%ba(kan data ke &ebua( 5e tek&
rb )e%buka &ebua( 5e binary untuk pe%ba>aan
Pb )e%buat &ebua( 5e binary untuk penui&an
ab )ena%ba(kan data ke &ebua( 5e binary
r: )e%buka &ebua( 5e tek& untuk
pe%ba>aan/penui&an P
:
)e%buat &ebua( 5e tek& untuk
pe%ba>aan/penui&an a
:
)ena%ba(kan data/%e%buat 5e
tek& untuk pe%ba>aan/penui&an
r:b atau
rb:
)e%buka &ebua( 5e binary untuk
pe%ba>aan/penui&an P:b atau
Pb:
)e%buat &ebua( 5e binary untuk
pe%ba>aan/penui&an a:b atau
ab:
)ena%ba(kan data ke 5e
binary untuk
pe%ba>aan/penui&an
Dalam operasi 5ile dilakukan ada
.e.erapa +al yang perlu diper+atikan
antara lain: jika operasi open
.er+asil$ Co(en01 mengem.alikan
se.ua+ Cile (ointer yang valid$
sedangkan jika operasi gagal$ maka
Co(en01 mengem.alikan se.ua+ null
(ointer$ se+ingga +arus selalu dicek
2008 | Direktorat Pembinaan SMK
?%'
Bahasa pemrograman perasi File
pada saat pem.ukaan 5ile2
Per+atikan program di.awa+ ini:
.IF< EHpA
i7((Hp'Hopen(B5eku!tYtB,BrB)''
K$FF) 6
>out ?? B<rror daa%
pe%bukaan
5e`nBA
eYit(1)A
8
H>o&e(Hp)A //menutup
stream >le
Di.awa+ ini merupakan 5ungsi untuk operasi 5ile teks antara lain
"K 7!et)RS %" 7(*t)RST di%ana Sintaknya dapat ditui&M
int Hget>(.IF< EHp)A
int Hput>(int >(, .IF< EHp)A
Program "%2(
in>ude ?&tdio!(@
=in>ude ?&tdib!(@
*+i! "#e+(")e &tdA
it %ain()
6
.IF< EHpA
it iA
it
>(A
Hp ' Hopen(BHoo!ab>B, BPB)A //buka >le foo5abc untuk ditulisi
7,. (i'0Ai?10Ai::) 6 //loop untuk
meletakkan karakter( Hput>(aAa,Hp)A
//menuliskan karakter = Hput>(a`na,Hp)A
//menuliskan pergantian baris
8
H>o&e(Hp)A
i7((Hp ' Hopen(BHoo!ab>B,
BrB))''K$FF)
6 >out??B<rror reading
5e!!!`nBA eYit(1)A
8
Ghi-e (>(_'<O.) 6 //baca >le sampai tanda @O1 A@nd of
1ile%
>('Hget>(Hp)A //ambil satu karakter
put>(ar(>()A //menampilkan karakter ke layar
8
H>o&e(Hp)A
?%>
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
8
bK 7!et+RS %" 7(*t+RST Sintaknya dapat ditui& &ebagai berikutM
int Hput&(>(ar E&tr, .IF< EHp)A
>(ar EHget&(>(ar E&tr, int nu%, .IF< EHp)A
Program "%2#2
=in>ude ?&tdio!(@
=in>ude ?&tdib!(@
5,i% %ain()
6
.IF< EHpA
)h". >(N1#OA
Hp ' Hopen(BHoo!ab>B, BPB)A //buka >le foo5abc untuk ditulisi
Hput&(BString Conto(B,Hp)A //menuliskan string
H>o&e(Hp)A
i7((Hp ' Hopen(BHoo!ab>B,
BrB))''K$FF)
6 printH(B<rror reading
5e!!!`nB)A eYit(1)A
8
put&(Hget&(>(,+i?e,7(>(),Hp))A //cetak string di foo ke layar
H>o&e(Hp)A
8
)K C'/anC01 %an C(rintC01
dimana operasi ini mempunyai
ciri6ciri se.agai .erikut:
*irip dengan sintaks scan534 dan
print534
Dapat digunakan untuk
sem.arang 5ile 3tidak +anya
monitorClayar4
Dapat menggunakan 5ormat data
Sintaks adala+ se.agai .erikut:
int HprintH(.IF< EHp, >on&t >(ar
EHor%at,
c)A
int H&>anH(.IF< EHp, >on&t >(ar
EHor%at,
c)A
Program "%2@
=in>ude ?&tdio!(@
=in>ude ?&tdib!(@
5,i% %ain()
6
2008 | Direktorat Pembinaan SMK
?%(
Bahasa pemrograman perasi File
.IF< EHpA
it iA
)h".
YN100OA
Hp ' Hopen(BHoo!ab>B, BPB)A //buka >le foo5abc untuk ditulisi
HprintH(Hp, B`nSa%pe Code`n`nB)A //menuliskan sesuatu
7,. (i ' 1A i ?' 10 A i::) 6
HprintH(Hp, Bi ' Rd`nB, i)A
8
H>o&e(Hp)A
i7((Hp'Hopen(BHoo!ab>B,BrB))''K
$FF) 6 printH(B<rror
%e%buka 5e`nB)A
eYit(1)A
8
Ghi-e(_HeoH(Hp))
6 H&>anH(Hp,BR&
B,SY)A put&(Y)A
8
H>o&e(Hp)A
8
%$ Crea%01 %an CGrite01
5ungsi operasi ini antara lain:
ntuk mem.aca dan menulis
.lok data 3misalnya: Karakter$
integer$ structure$dan lain6lain4
ntuk dapat menggunakan
5write34$ 5ile +arus di.uka dengan
tam.a+an opsi H.1 3.inary4
Sintaks:
5write3void K.u55er$ int .].yte$ int c$
5ile K5p4N
5read3void K.u55er$ int .].yte$ int c$
5ile K5p4N
Keterangan:
.u55er: pointer ke area di memori
yang menampung data yg akan
di.aca ke 5ile
.].yte: .anyaknya .yte data yang
akan di.acaCtulis 3dapat
menggunakan siQeo53.u55er44
c: .anyaknya .lok data yang akan
di.acaCditulis
5p: pointer ke 5ile
"&$"&$&$ Menuli' ile
Sala+ satu jenis pemrosesan
pada 5ile adala+ menulis atau
merekam data ke 5ile2 ntuk menulis
se.ua+ karakter$ .entuk yang
digunakan adala+ dengan
menggunakan Sintak se.agai .erikut:
put>(int >(, 5e
EHp)
dimana
5p adala+ pointer 5ile yang
di+asilkan ole+ 5open34
c+ adala+ karakter yang akan
ditulis2
?%#
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
Program "%2"-
=in>ude B&tdio!(B
=in>ude B>onio!(B
=de5ne C4/FW] ",
5,i% %ain()6
5e EpHA /* pointer ke >le */
)h". karA
i7((pH ' Hopen(BCOBA!494B, BPB)) '' K$FF) /* ciptakan >le */
6 >put&(B.ie tak dapat di>iptakan _`r`nB)A
eYit(1)A /* selesai */
8
Ghi-e((kar'get>(e()) _' C4/FW])
put>(kar, pH)A /* tulis ke >le */
H>o&e(pH)A /* tutup >le */
8
"&$"&$)$ Menutu( ile
Setela+ pemrosesan 5ile selesai$ 5ile dapat ditutup menggunakan perinta+
na%aWobyek!>o&e()A
Program "%2""2 Program untuk menulis teks ke dalam 5ile
=in>ude?io&trea%!(@
=in>ude?H&trea%!(@
5,i% %ain()6
oH&trea% 5etek&A
5etek&!open(BCM/Catat!tYtB)A
5etek& ?? B$ntuk %en>apai tu-uan yg be&ar, %aka tu-uan ituB??
endA
5etek& ?? B(aru& dibagi;bagi %en-adi tu-uan ke>iB?? endA
5etek& ?? B&a%pai tu-uan itu %erupakan tu-uan yg dapat B??
Bdi>apaiB ?? endA 5etek& ?? Bberda&arkan kondi&i dan poten&i
yg di%iiki &aat B?? Bitu B ?? endA 5etek&!>o&e()A
8
perinta+ 5ileteks28pen3HA:Ccatat2t&t14N
akan mem.uka 5ile catatan2t&t yang
ada di A:S 2 Apa.ila 5ile terse.ut
.elum ada maka akan di.uat secara
otomatis$ dan apa.ila suda+ ada isi
5ile catatan2t&t akan ter+apus2
"&$"&$*$ Menambah Data ile
Suatu 5ile yang suda+ ada
se.elumnya dapat ditam.a+ data
yang .aru 3tidak meng+apus data
2008 | Direktorat Pembinaan SMK
?%@
Bahasa pemrograman perasi File
lama42 Aaranya adala+ dengan
menam.a+kan perinta+ io'99a((
pada open342
na%aWobyek!open(Ina%a 5eJ,
io&MMapp)
Program "%2"%
=in>ude?io&trea%!(@
=in>ude?H&trea%!(@
5,i% %ain()6
oH&trea% 5etek&A
5etek&!open(BCM/>atatan!tYtB,
io&MMapp)A 5etek& ?? endA
5etek& ?? BOe(M A K(oPariZ%i ?? endA
5etek&!>o&e()A
8
"&$"&$+$ Memerik'a ile
Dalam penulisan tidak
selamanya jalan yang mulus ditemui2
Ada kemungkinan terjadi saat 5ile
di.uka$ ternyata 5ile tidak ada2 Dalam
ABB tersedia 5ungsi untuk memeriksa
kondisi6kondisi pada operasi 5ile$
se+ingga kesala+an saat eksekusi
dapat dikendalikan2 <ungsi yang
dimaksud adala+ Cail012
Program "%2"=2
=in>ude?io&trea%!(@
=in>ude?H&trea%!(@
5,i% %ain()6
iH&trea% 5etek&A
6
iH&trea% digunakan u/ %e%ba>a 5e
8
5etek&!open(BCM/>atatan!tYtB)A
i7 (5etek&!Hai()) >out ?? B)aaH 5e takdapat dibuka/B?? Btidak
dite%ukanBA
5etek&!>o&e()A
8
8perasi 5ile dapat dilakukan
dalam .entuk karakter2 *isalnya
proses penyimpanan data ke 5ile
dilakukan setiap karakter$ atau
mem.aca data 5ile karakter per
karakter2 8perasi ini didukung ole+
5unction (ut01 dan get012
Program "%2"?2 *enyimpan data karakter per karakter ke dalam 5ile2
?=-
Direktorat Pembinaan SMK | 2008
perasi File Bahasa Pemrograman
=in>ude?io&trea%!(@
=in>ude?H&trea%!(@
5,i% %ain()
6
oH&trea% 5etek&A
5etek&!open(BCM/>onto(!
tYtB)A 5etek&!put(aAa)A
5etek&!put(aBa)A
5etek&!put(aCa)A
5etek&!>o&e()A
8
Program "%2"'2 Program untuk mem.aca 5ile karakter per karakter
=in>ude?io&trea%!(@
=in>ude?H&trea%!(@
5,i% %ain()
6
)h". karakterA iH&trea%
5etek&A 68
5etek&!open(BCM/>onto(!
tYtB)A Ghi-e(_
5etek&!eoH())
6
5etek&!get(karakter)A
>out ?? karakterA
8
5etek&!>o&e()A
8
"&$"-$Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan 5ile
%2 Apa yang dimaksud dengan kode ascii
=2 Apaka+ 5ungsi .u55er pada operasi string
?2 !uatla+ program untuk menulis 5ile dengan nama lati+2t&t
'2 !uatla+ program untuk menam.a+ data pada 5ile lati+2t&t
>2 !uatla+ program untuk meng+apus 5ile lati+2t&t
(2 Apa yang dimaksud dengan 5ile skuensial
2008 | Direktorat Pembinaan SMK
?="
Bahasa pemrograman perasi File
?=%
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
BAB ")
PO!NTER
"=2" Pemrograman pointer
"=2% Deklarasi varia.el .ertipe pointer
"=2= 7nisialisasi Pointer
"=2? Pointer untuk 5ungsi
"=2' *engakses dan *engu.a+ isi Pointer
"=2> Array dan Pointer
"=2( Pointer dalam <ungsi
"=2# <ungsi Pointer ke Static Alass *em.er <unction
"=2@ <ungsi Pointer pada Alass anggota <ungsi ,on6static
"=2"- Soal :ati+an
")$"$ Pemrograman (ointer
Pada programmer pemula +al
yang sulit dipa+ami adala+ pointer2
Pointer adala+ pada dasarnya sama
dengan veria.el lain2 Dengan pointer
setiap varia.le diletakan pada alamat
memori yang .esarnya cukup untuk
menampung nilai dari se.ua+
varia.le tipe data2 Pada se.ua+
komputer PA misalnya satu .yte data
secara umum dialokasikan untuk tipe
data c+ar$ % .yte untuk tipe data
s+ort$ ? .yte untuk tipa data int$ long
dan 5loat serta # .yte untuk tipe data
dou.le2 Tiap6tiap .yte data memori
mempunyai alamat yang unik2
Se.ua+ varia.le alamat merupakan
alamat dimana se.ua+ .yte data
pertama dapat dialokasikan2 Se.agai
conto+ misalnya dapat dide5inisikan
dalam program se.agai .erikutN
>(ar (uruHA
&(ort
angkaA
^oat
a%ountA
se+ingga pengaturan memorinya
dapat diilustrasikan se.agai .erikut
2008 | Direktorat Pembinaan SMK
?==
Bahasa Pemrograman Pointer
+uru5 angka amount
"%-- "%-" "%-=
;am.ar "=2"2 7lustrasi Pengaturan Data Pada Se.ua+ *emori
Pada gam.ar diatas varia.le letter
diletakan pada alamat "%--$ num.er
pada alamat "%-" dan amount pada
alamat "%-=2
Ketika programmer
mendeklarasikan se.ua+ varia.le$
sama +alnya dengan
mengin5ormasikan compiler dua
sesuatu yaitu : nama varia.le dan
tipe varia.le2 *isalnya kita akan
mendeklarasikan tipe varia.le integer
dengan nama varia.le k se+ingga
dapat ditulis:
Int
k
Pada tipe varia.le integer merupakan
tipe data yang digunakan compiler
dimana memori yang terpakai adala+
dua .yte2
Setiap kali komputer menyimpan
data$ maka sistem operasi akan
mengorganisasikan lokasi pada
memori pada alamat yang unik2 *isal
untuk alamat memori "((>$ +anya
se.ua+ lokasi yang memiliki alamat
terse.ut2 Dan alamat "((> pasti
terletak antara "((' dan "(((2
Dalam pointer$ terdapat % jenis
operator yang .iasa digunakan2
Kegunaan pointer yang utama
adala+ untuk menyimpan alamat
memori dari se.ua+ varia.el 3data
type atau ob'ect dari class42 Selain
menyimpan alamat dari varia.el$
pointer juga dapat digunakan untuk
menyimpan alamat dari se.ua+
5ungsi 3function pointer42
<unction pointer tela+ digunakan
sejak dikenalkannya .a+asa A$ dan
.anyak digunakan untuk se.ua+
5ungsi call.ack atau untuk
meningkatkan reada.ility dari se.ua+
code
Anda dapat memperlakukan
5unction pointer seperti pointer .iasa
3pointer ke datatypeCo.ject4$ anda
dapat menyimpan$mengirimkan$
meru.a+ address$ atau meng6
evaluasi address dari pointer ke
5ungsi ini dengan si5at tam.a+an
anda dapat memanggil 5ungsi yang
ditunjuk ole+ 5unction pointer2
Setiap varia.el yang
dideklarasikan$ disimpan dalam
se.ua+ lokasi memori dan pengguna
.iasanya tidak mengeta+ui di alamat
mana data terse.ut disimpan2 Dalam
ABB$ untuk mengeta+ui alamat
tempat penyimpanan data$ dapat
?=?
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
digunakan tanda ampersand 3V4 yang
dapat diartikan Halamat12
Se.enarnya jika programer akan
mendeklarasian se.ua+ varia.le$
seorang programer tidak di+aruskan
menentukan lokasi sesunggu+nya
pada memory$ karena +al ini akan
dilakukan secara otomatis ole+
kompiler dan operating sysem pada
saat run6time2
)ika ingin mengeta+ui dimana
suatu varia.le akan disimpan$ dapat
dilakukan dengan mem.erikan tanda
ampersand 3V4 didepan varia.le $
yang .erarti "address of"2
Per+atikan conto+ di.awa+ ini:
ted ' SandyA
Akan mem.erikan varia.le te%
alamat dari varia.le an%3$ karena
varia.le an%3 di.eri awalan karakter
ampersand 3V4$ maka yang menjadi
pokok disini adala+ alamat dalam
memory$ .ukan isi varia.le2 *isalkan
an%3 diletakkan pada alamat "--,
kemudian dituliskan instruksi se.agai
.erikut :
andy '
"*A Hred '
andyA ted
' SandyA
*aka +asilnya adala+ se.agai
.erikut:
andy
%'
"((' "((> "(((
<red Ted
%' "((>
;am.ar "=2%2 8perator Alamat 3V4
Dengan menggunakan pointer$
kita dapat mengakses nilai yang
tersimpan secara langsung dengan
mem.erikan awalan operator asteris)
3K4 pada identi5ier pointer$ yang
.erarti 4value pointed by42 Aonto+ :
bet( '
EtedA
3dapat dikatakan:a.et+ sama dengan
nilai yang ditunjuk ole+ teda4 .et+ I
%'$ karena ted dialamat "((>$ dan
nilai yang .erada pada alamat "((>
adala+ %'2
2008 | Direktorat Pembinaan SMK
?='
Bahasa Pemrograman Pointer
Ted
"((>
"((' "((> "(((
%' memori
%'
;am.ar "=2=2 8perator Re5erence
.et+
Ekspresi di.awa+ ini semuanya
.enar$ per+atikan pernyataan
program di.awa+:
andy ''
"*
Sandy ''
1++, ted
'' 1++,
Eted ''
"*
Ekspresi pertama merupakan
assignation .a+wa an%3K&+82 Kedua$
menggunakan operator alamat
3addressCdere5ence operator 3V44$
se+ingga akan mengem.alikan
alamat dari varia.el an%32 Ketiga
.ernilai .enar karena assignation
untuk te% adala+ te% K Aan%382
Keempat menggunakan re5erence
operator 3K4 yang .erarti nilai yang
ada pada alamat yang ditunjuk ole+
te%$ yaitu &+2 *aka ekspresi di.awa+
ini pun akan .ernilai .enar :
Kted ''
andy
")$&$ Deklara'i Bariabel berti(e (ointer
Daria.el pointer sering dikatakan
se.agai varia.el yang menunjuk ke
o.yek lain2 Pada kenyataan yang
se.enarnya$ varia.el pointer .erisi
alamat dari suatu o.yek lain 3yaitu
o.yek yang dikatakan ditunjuk ole+
pointer42 Se.agai conto+$ (U adala+
varia.le pointer dan U adala+ varia.el
yang ditunjuk ole+ (U2 Kalau U
.erada pada alamat memori 3alamat
awal4 "---$ maka (U akan .erisi
"---2 Se.agaimana diilustrasikan
pada gam.ar di .awa+ ini:
?=>
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
JJJJ
p&
"555
Alamat
"555 G
P
;am.ar "=2?2 Daria.el pointer p& menunjuk ke varia.el &
Suatu varia.el pointer dideklarasikan dengan .entuk se.agai .erikut :
tipe]data Knama]var]pointer
c+ar$ 5loat$ int$ dou.le$ long$
operator .intangC asterisk 3K4
;am.ar "=2(2 deklarasi varia.el pointer
Dimana type merupakan tipe dari data yang ditunjuk$ .ukan tipe dari pointer6
nya2 Dengan ti(e dapat .erupa
sem.arang tipe yang suda+ di.a+as
pada .a.6.a. se.elumnya$ maupun
.a.6.a. .erikutnya2 Adapun
nama]var]pointer adala+ nama dari
varia.el pointer2 Per+atikan conto+
.erikut ini:
int
EpYA
>(ar Ep>(1,
Ep>("A
^oat E
greatnu%berA
Aonto+ pertama menyatakan .a+wa
(U adala+ varia.el pointer yang
menunjuk ke suatu data .ertipe int$
sedangkan conto+ kedua masing
(/h" dan (/h& adala+ varia.el
pointer yang menunjuk ke data
.ertipe char2
2008 | Direktorat Pembinaan SMK
?=(
n
n
t
e
u
n
e
n
n
n
?
g
'
e
'
a
Bahasa Pemrograman
;am.ar "=2>2 7lustrasi pendeklarasian varia.el pointer
Pointer
Program "=2"
=in>ude ?io&trea%@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
it %ain ()
6
it niai1 ' *, niai"
' 1*A it E
%ypointerA
%ypointer '
Sniai1A %ypointer
' 10A %ypointer '
Sniai"A
E%ypointer ' "0A
>out ? Bniai1''B ?? niai1 ?? B/ niai"''B ?? niai"A
.et*. 0A
8
Keluaran pro
ram diatas adala+ se. gai .erikut:
Output M niai1''10 / niai"''"0
Per+atikan .agaimana nilai dari
Kemudian mem.erikan nilai "- ke
nilai" dan nilai% diu.a+ secara tidak nilai yang ditunjuk ole+ mypointer$
langsung2 Pertama mypointer yaitu alamat dari nilai"$ maka secara
di.erikan alamat nilai" dengan tidak langsung nilai" tela+
menggunakan tanda ampersand 3V42 dimodi5ikasi2 !egitu pula untuk nilai%2
Program "=2%
=in>ude ?io&trea%!(@
*+i!
"#e+(")e &tdA
?=#
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
it %ain ()
6
it niai1 ' *, niai" ' 1*A
it Ep1, Ep"A
p1 ' Sniai1A // p& I address of nilai&
p" ' Sniai"A // p( I address of nilai(
Ep1 ' 10A // nilai pointed by p& I &/
Ep" ' Ep1A // nilai pointed by p( I nilai
pointed by p&
p1 ' p"A // p& I p( Anilai of pointer
copied%
Ep1 ' "0A // nilai pointed by p& I (/
>out ?? Bniai1''B ?? niai1 ?? B/ niai"''B ?? niai"A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
niai1''10 / niai"''"0
")$)$ !ni'iali'a'i Pointer
Dalam melakukan pemrogaman
dengan menggunakan pointer yang
pertama perlu dilakukan dalam
mem.uat program adala+ dengan
melakukan inisialisasi pointer
terse.ut2 ntuk le.i+ jelasnya
per+atikan conto+ di.awa+ ini:
int nu%berA int Eto%%y '
Snu%berA
pernyataan diatas akan sama atau
ekivalen dengan pernyataan di.awa+
ini:
int nu%berA int Eto%%yA
to%%y '
Snu%be
rA
Seperti pada array$ inisialisasi isi dari
pointer dapat dilakukan dengan
deklarasi seperti conto+ .erikut :
>(ar E terry '
B(eoBA
*isalkan kata a+elloa disimpan pada
alamat "(-% dan seterusnya$ maka
deklarasi tadi dapat digam.arkan
se.agai .erikut:
2008 | Direktorat Pembinaan SMK
?=@
Bahasa Pemrograman Pointer
VhW VeW VlW VlW VoW VR5W
"(-% "(-= "(-? "(-' "(-> "(-(
terry "(-%
;am.ar "=2(2 deklarasi +ello pada mulai alamat "(-%
terr3 .erisi nilai "-5& dan .ukan XhX
atau =hello=$ walaupun "-5&
menunjuk pada karakter terse.ut2
Se+ingga jika akan dilakukan
peru.a+an pada karakter XoX diganti
dengan tanda X<X maka ekspresi yang
digunakan ada % macam :
terry[?\ I _M_N K3terryB?4 I _M_N
Penulisan terr3S*T dan ?0terr3D*1$
mempunyai arti yang sama2 )ika
digam.arkan:
VhW VeW VlW VlW V<W VR5W
"(-% "(-= "(-? "(-' "(-> "(-(
terry "(-% terry[?\
K3terryB?4
;am.ar "=2# Deklarasi H9ello1 pada Alamat Terry[?\ Diisi M
Per+atikan conto+ program
di.awa+$ dimana char memerlukan "
.yte$ short memerlukan % .ytes dan
long memerlukan ?2 Terdapat = .ua+
pointer :
>(ar
E%y>(arA
&(ort
E%y&(ortA
ong
E%yongA
ekspresi diatas akan menunjuk pada
lokasi dimemory masing6masing
"555$ &555 and )555$ se+ingga jika
dituliskan :
%y>(ar::A %y&(ort::A %yong::A
myc+ar$ akan .ernilai "--"$ mys+ort
.ernilai %--%$ dan mylong .ernilai
=--?2 Alasannya adala+ ketika terjadi
pertam.a+an maka akan
??-
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
ditam.a+kan dengan tipe yang sama
seperti yang dide5inisikan .erupa
ukuran dalam .ytes2
;am.ar "=2@2 :okasi *emori kuran !yte
Per+atikan ekspresi di.awa+ ini :
Ep::A Ep:: '
EX::A
Ekspresi pertama e^uivalen dengan
K3pBB4 dan yang dilakukan adala+
menam.a+kan ( 3yaitu alamat yang
ditunjuk$ .ukan nilai yang
dikandungnya42 Ekspresi kedua$
yang dilakukan pertama adala+
mem.erikan nilai K^ ke Kp dan
kemudian keduanya ditam.a+kan "
atau dengan kata lain :
Ep ' EXA p::A X::A
Tipe pointer void merupakan tipe
k+usus2 void pointers dapat
menunjuk pada tipe data apapun$
nilai integer value atau 5loat$ maupun
string atau karakter2 Keter.atasannya
adala+ tidak dapat menggunakan
operator asterisk 3K4$ karena panjang
pointer tidak diketa+ui$ se+ingga
diperlukan operator type casting atau
assignations untuk mengem.alikan
nilai void pointer ketipe data
se.enarnya2
Program "=2=
in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
5,i% in>rea&e (5,i%E data, it type)
2008 | Direktorat Pembinaan SMK
??"
Bahasa Pemrograman Pointer
6
+Git)h (type)
6
)"+e +i?e,7()h".) M (E(()h".E)data))
::A b.e"'A )"+e +i?e,7(+h,.t)M
(E((+h,.tE)data))::A b.e"'A )"+e
+i?e,7(-,!) M (E((-,!E)data))::A
b.e"'A
8
8
it %ain ()
6
)h". a '
*A +h,.t
b ' 7A
-,! > '
1"A
in>rea&e
(Sa,+i?e,7(a))A
in>rea&e
(Sb,+i?e,7(b))A
in>rea&e
(S>,+i?e,7(>))A
>out ?? (it) a ?? B, B ?? b
?? B, B ?? >A
.et*.
0A
8
Keluaran program diatas adala+ se.agai .erikut:
,, 10, 11
")$*$ Pointer untuk Cung'i
ABB memper.ole+kan operasi
dengan pointer pada 5unction2
Kegunaan yang utama adala+ untuk
mem.erikan satu 5unction se.agai
parameter untuk 5unction lainnya2
Deklarasi pointer untuk 5unction sama
seperti prototype 5unction kecuali
nama 5unction dituliskan diantara
tanda kurung 34 dan operator asterisk
3K4 di.erikan se.elum nama2
Program "=2?2 pointer to 5unctions
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
it addition (it a, it b)
6 .et*. (a:b)A 8
it &ubtra>tion (it a, it b)
6 .et*. (a;b)A 8
it (E%inu&)(it,it) ' &ubtra>tionA
??%
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
it operation (it Y, it y, it (EHun>to>a)(it,it))
6
it gA
g ' (EHun>to>a)(Y,y)A
.et*. (g)A
8
it %ain ()
6
it %,nA
% ' operation (+, *,
addition)A n ' operation
("0, %, %inu&)A >out
??nA
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
8
Dari conto+ diatas$ minu'
merupakan pointer glo.al untuk
5unction yang mempunyai %
parameters .ertipe int$ kemudian
di.erikan untuk menunjuk 5unction
'ubtra/tion$ ditulis dalam satu .aris
instruksi :
int (E %inu&)(int,int) '
&ubtra>tionA
Agar suatu pointer menunjuk ke
varia.el lain$ mula6mula pointer +arus
diisi dengan alamat dari varia.el
yang akan ditunjuk2 ntuk
menyatakan alamat dari suatu
varia.el$ operator A 3operator alamat$
.ersi5at unary4 .isa dipergunakan$
dengan menempatkannya di depan
nama varia.el2 Se.agai conto+$ .ila U
dideklarasikan se.agai varia.el
.ertipe int$ maka
S
Y
.erarti Halamat dari varia.el U12
Adapun conto+ pem.erian alamat U
ke suatu varia.le pointer p& 3yang
dideklarasikan se.agai pointer yang
menunjuk ke data .ertipe int4 yaitu:
pY '
SYA
Pernyataan di atas .erarti .a+wa (U
di.eri nilai .erupa alamat dari
varia.el U2 Setela+ pernyataan
terse.ut dieksekusi .arula+ dapat
dikatakan .a+wa (U menunjuk ke
varia.le U2
)ika suatu varia.el suda+
ditunjuk ole+ pointer$ varia.el yang
ditunjuk ole+ pointer terse.ut dapat
diakses melalui varia.el itu sendiri
3pengaksesan langsung4 ataupun
melalui pointer 3pengaksesan tak
langsung42 Pengaksesan tak
langsung dilakukan dengan
menggunakan operator indirection
3tak langsung4 .erupa sim.ol ?
3.ersi5at unary42 Aonto+ penerapan
operator K yaitu:
Ep
Y
2008 | Direktorat Pembinaan SMK
??=
'
'
'
n
n e
Bahasa Pemrograman
Pointer
yang menyatakan Hisi
atau nilai pY ' SYA
varia.elCdata yang ditunjuk ole+
pointer (U1 2 Se.agai conto+ jika 3 namun terdapat pernyataan
.ertipe int$ maka sesuda+ dua
pernyataan .erikut
pY ' SYA
y ' EpYA
maka 3 tidakla+ .erisi nilai U$ se.a.
y '
EpYA
(U .elum diatur agar menunjuk ke
varia.el U$ 9al seperti ini +arap
3 akan .erisi nilai yang sama dengan diper+atikan2 Kalau program
nilai U2 Kedua pernyataan di atas meli.atkan pointer$ dan pointer .elum
diinisialisasi$ ada kemungkinan akan
pY '
SYA
terjadi masala+ yang dinamakan
y '
EpYA
H.ug1 yang .ias mengaki.atkan
se.enarnya dapat digantikan dengan
komputer tidak dapat dikendalikan
.hang*2 Selain itu tipe varia.el pointer
se.ua+ pernyataan .erupa
dan tipe data yang ditunjuk +arus
sejenis2 !ila tidak sejenis maka akan
y '
YA
terjadi +asil yang tidak diinginkan2
Seandainya pada program di atas
ntuk
.erikut2
le.i+ jelasnya li+at gam.ar
tidak terdapat pernyataan
;am.ar "=2"-2 7lustrasi Kesala+an Yang Terjadi Karena Tipe Tidak Sejenis
Program "=2'2 *engakses isi suatu varia.el melalui pointer2
=in>ude ?&tdio!(@
=in>ude ?io&trea%!(@
*+i!
"#e+(")e &tdA
???
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
%ain()
6 it y, Y ' 8+A
it EpYA
pY ' SYA
y ' EpYA
>out ??BAa%at Y '
`nB?? SYA >out ??BI&i
pY ' `nB?? pYA >out
??BI&i Y ' `nB?? YA
>out ??BKiai yang ditun-uk oe( pY ' `nB?? EpYA
>out ??BKiai y ' `nB?? yA
8
*engakses isi suatu varia.el melalui pointer2 Tipe varia.el pointer dan tipe
data yang ditunjuk +arus sejenis
Program "=2>
=in>ude ?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
%ain
()
6
8
it EpuA
it nuA
it u ' 1"1#A
pu ' SuA
nu ' EpuA
>out ??BAa%at dari u ' `nB?? SuA
>out ??BI&i pu ' `nB?? puA
>out ??BI&i u ' `nB?? uA
>out ??BKiai yang ditun-uk oe( pu ' `nB?? EpuA
>out ??BKiai nu ' `nB?? nuA
get>(()A
.et*. 0A
Program "=2(
=in>ude ?>onio!(@
=in>ude ?io&trea%!(@
2008 | Direktorat Pembinaan SMK
??'
Bahasa Pemrograman Pointer
*+i! "#e+(")e &tdA
%ain
()
6
8
it Z ' "0, &
' 10A
it EpZ,
Ep&A
pZ '
SZA
p& '
S&A
EpZ :'
Ep&A
>out ??BZ '
`nB?? ZA >out
??B& ' `nB??
&A get>(()A
.et*.
0A
Program "=2#
=in>ude ?>onio!(@
=in>ude ?io&trea%!(@
*+i! "#e+(")e &tdA
%ain
()
6
8
)h". > ' a[aA
)h". E>(arWpointer ' S>A
>out ??B`nB?? > ?? E>(arWpointerA
> ' a/aA
>out ??B`nB?? > ?? E>(arWpointerA
E>(arWpointer ' a(aA
>out ??B`nB?? > ?? E>(arWpointerA
get>(()A
.et*. 0A
Program "=2@
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it %ain()
6
??>
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
it Y ' 1, y
' "A
it
EipA ip
' SYA
y '
EipA Y
' ipA
Eip '
1A
>out ??BY '
B?? YA >out
??By ' B??
yA get>(()A
.et*.
0A
8
")$+$ Mengak'e' %an Mengubah i'i Pointer
Program .erikut mem.erikan
gam.aran tentang pengu.a+an isi
suatu varia.le secara tak langsung
3yaitu melalui pointer42 *ula6mula (%
dideklarasikan se.agai pointer yang
menunjuk ke suatu data .ertipe float
dan % se.agai varia.el .ertipe float2
Selanjutnya
d '
*#!*A
digunakan untuk mengisikan nilai
'?$' secara langsung ke varia.el %2
Adapun
pd '
SdA
digunakan untuk mem.erikan alamat
dari % ke (%$ Dengan demikian (%
menunjuk ke varia.el %$ Sedangkan
pernyataan .erikutnya
Epd ' Epd : 10A (atauM Epd
:' 10A )
merupakan instruksi untuk mengu.a+
nilai varia.el % secara tak langsung2
Perinta+ di atas .erarti Hjumla+kan
yang ditunjuk pd dengan "-
kemudian .erikan ke yang ditunjuk
ole+ (%1$ atau identik dengan
pernyataan
d ' d :
10A
Akan tetapi$ seandainya tidak ada
instruksi
pd '
SdA
maka pernyataan
Epd ' Epd :
10A
tidakla+ sama dengan
d ' d :
10A
Program "=2"-
=in>ude ?>onio!(@
=in>ude ?io&trea%@
2008 | Direktorat Pembinaan SMK
??(
Bahasa Pemrograman Pointer
*+i! "#e+(")e &tdA
%ain
()
6
8
8,"t d ' *#!*H, EpdA
>out ??BI&i d %ua;%ua ' `nB?? dA
pd ' SdA
Epd :' 10A
>out ??BI&i d &ekarang ' `nB?? dA
get>(()A
.et*. 0A
Program "=2""
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
it i1, i", Ep1, Ep"A
i1 ' 7A
p1 ' Si1A
i" ' Ep1 / " ; " E 1A
p" ' p1A
>out
??Bi1'B??i1A
>out
??Bi"'B??i"A
>out
??BEp1'B??Ep1
A >out
??BEp"'B??Ep"
A get>(()A
.et*. 0A
Program "=2"%
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
??#
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
it >ount ' 10, Ete%p, &u% ' +A
te%p ' S>ountA
Ete%p ' 1"A
te%p ' S&u%A
Ete%p ' >ountA
&u% ' Ete%p E #A
>out ??B>ount ' Rd, Ete%p ' Rd, &u% ' Rd`nB??
>ount??Ete%p?? &u%A
get>(()A
.et*. 0A
8
Program "=2"=
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
it >ount ' 11, &u% ' 7, EY, EyA
Y ' S>ountA
EY ' "+A
y ' YA
Y ' S&u%A
EY ' >ountA
&u% ' EY / " E 1A
>out ??B>ount ' Rd, &u% ' Rd, EY ' Rd, Ey ' Rd`nB??
>ount??&u%??EY??EyA
get>(()A
.et*. 0A
Program "=2"?
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
it r, X ' +A
it goW>raZy(it E, it E)A
%ain()
6
it Eptr1 ' SXA
it Eptr" ' SXA
2008 | Direktorat Pembinaan SMK
??@
Bahasa Pemrograman Pointer
r ' goW>raZy(ptr1, ptr")A
>out ??BX ' Rd, r ' Rd, Eptr1 ' Rd, Eptr" ' Rd`nB??X??
r??Eptr1??Eptr"A
ptr" ' SrA
goW>raZy(ptr", ptr1)A
>out ??BX ' Rd, r ' Rd, Eptr1 ' Rd, Eptr" ' Rd`nB?? X?? r??
Eptr1?? Eptr"A
8
it goW>raZy(it Ep1, it Ep")
6
it Y ' *A
r ' 1"A
Ep" ' Ep1 E "A
p1 ' SYA
.et*. Ep1 E 1A
8
")$,$ Arra3 %an Pointer
Pada .a+asan ini programer
perlu mengerti per.edaan antara
pointer dengan array2 Keduanya
menggunakan memori yang
lokasinya ditentukan$ dimana
7denti5ier suatu array e^uivalen
dengan alamat dari elemen pertama$
sedangkan pointer e^uivalen dengan
alamat elemen pertama yang
ditunjuk2 Per+atikan deklarasi
veria.el se.agai .erikut :
int nu%ber&
N"0OA
int E
pA
maka deklarasi di.awa+ ini juga
.enar :
p '
nu%ber&A
dan number' e^uivalen$ dan
memiliki si5at 3properties4 yang sama2
Per.edaannya$ user dapat
menentukan nilai lain untuk pointer (
dimana number' akan selalu
menunjuk nilai yang sama seperti
yang tela+ dide5inisikan2 ($
merupakan variable pointer$
number' adala+ constant pointer2
Karena itu walaupun instruksi diatas
.enar$ tetapi tidak untuk instruksi
di.awa+ ini :
nu%ber&
' pA
karena number' adala+ array
3constant pointer4$ dan tidak ada nilai
yang dapat di.erikan untuk identi5ier
konstant 3constant identifiers42
Per+atikan program di.awa+ ini:
Program "=2"'
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
?'-
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
it %ain ()
6
it
nu%ber&N*OA
it E
pA
p '
nu%ber&A
Ep '
10A
p:
:A
Ep '
"0A
p ' Snu%ber&N"OA Ep
' 10A
p ' nu%ber& : 1A Ep
' #0A p ' nu%ber&A
E(p:#) ' *0A 7,.
(it n'0A n?*A n::)
>out ?? nu%ber&NnO
?? B, BA
get>((
)A
.et*.
0A
8
Program terse.ut setela+ dieksekusi maka akan mendapatkan keluaran
se.agai .erikut:
Output M 10, "0, 10, #0, *0,
")$,$"$ Pointer %an Arra3 0(ointer to arra31
9u.ungan antara pointer dan
array pada A sangatla+ erat2 Se.a.
sesunggu+nya array secara internal
akan diterjema+kan dalam .entuk
pointer2 Pem.a+asan .erikut akan
mem.erikan gam.aran +u.ungan
antara pointer dan array2 *isalnya
dideklarasikan di dalam suatu 5ungsi
&tati> int tgWa(irN1O ' 6 01, 07,
,# 8A
dan
int EptgA
Kemudian di.erikan instruksi
ptg ' StgWa(irN0OA
//pointer to array of integer
maka (tgl akan .erisi alamat dari
elemen array tgl:lahir yang
.erindeks nol2 7nstruksi di atas .isa
juga ditulis menjadi
ptg '
tgWa(irA
se.a. nama array tanpa tanda
kurung menyatakan alamat awal dari
array2 Sesuda+ penugasan seperti di
atas$
Eptg

dengan sendirinya menyatakan


elemen pertama 3.erindeks sama
dengan nol4 dari array
tgl:lahir$
2008 | Direktorat Pembinaan SMK
?'"
Bahasa Pemrograman Pointer
")$,$&$ Pointer %an String
!e.erapa conto+ +u.ungan pointer
dan string ditunjukkan pada program
.erikut2
Program "=2">
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain
()
6
8
/* pnegara menunjuk konstanta string :#).O)@S#=: */
)h". Epnegara ' BIKDOK<SIABA
>out??BString yang ditun-uk oe(
pnegara ' BA put&(pnegara)A //
printfA:JsKn:!pnegara%L get>(()A
.et*. 0A
9asil keluaran program diatas adala+ se.agai .erikut
String yang ditun-uk oe( pnegara ' IKDOK<SIA
Pada program di atas$
>(ar Epnegara ' IIKDOK<SIAJA
akan menye.a.kan kompiler
mengalokasikan varia.el (negara
se.agai varia.el pointer yang
menunjuk ke o.yek .ertipe char dan
menempatkan konstanta
Y!NDONES!AZ dalam suatu memori$
kemudian pointer (negara akan
menunjuk ke lokasi string
Y!NDONES!AZ$
:okasi awal string
pnegara
7 , D 8 , E S 7 A S-
;am.ar "=2""2 Pointer menunjuk data
?'%
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
Pernyataan di atas akan menyerupai
akan .erisi se.ua+ address
pernyataan seperti di.awa+ ini: memory yang tersimpan pada
varia.el a 3setela+ ada se.ua+
>(ar negaraNO ' IIKDOK<SIAJA address memory yang di6assign
ke varia.el a terse.ut4
tetapi se.enarnya kedua pernyataan =2 *enuliskan nama se.ua+ varia.el
inisialisasi di depan tidakla+ tepat array tanpa inde&nya
sama2 Se.a. (negara adala+ pointer *isalnya dideklarasikan
3menyatakan alamat4 yang dengan o 5loat nilai['\$ maka penulisan
muda+ dapat diatur agar menunjuk nilai artinya sama dengan
ke string lain 3.ukan string Vnilai[-\
H7,D8,ES7A14$ sedangkan negara
adala+ array 3array menyatakan
o int .[=\[?\$ maka .[=\ adala+
sama dengan V.[=\[-\ dan
alamat yang konstan$ tak dapat
diu.a+42 )adi$ ada .e.erapa cara
penulisan ekspresi varia.el yang
meng+asilkan se.ua+ address
memory$ di antaranya adala+ :
"2 *enuliskan ampersand di depan
.[-\ adala+ sama dengan
V.[-\[-\2
!isa disimpulkan .a+wa se.ua+
varia.el array yang dituliskan
tanpa kurung siku inde&nya adala+
sama dengan address memory
se.ua+ varia.el _normal_ dari elemen pertama array
*isalnya a dideklarasikan se.agai
se.ua+ varia.el normal$ maka Va
terse.ut2
"2 9u.ungan antara pointer dan
akan meng+asilkan adress
memory dari varia.el a terse.ut
%2 *enuliskan nama dari se.ua+
varia.el pointer
*isalnya a dideklarasikan se.ua+
array2 Suatu nama array yang
ditulis tanpa dengan indeksnya
menunjukkan alamat elemen
pertama dari array 3versi "42
varia.el se.agai int Ka$ maka a
Program "=2"(
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
+t"ti) it tgWa(irNO ' 61,, #, 17+#8A
it EptgA
>out ??B`nKiai yang ditun-uk oe( ptg
' B?? EptgA >out ??B`nKiai dari
tgWa(irN0O ' B?? tgWa(irN0OA get>(()A
.et*. 0A
2008 | Direktorat Pembinaan SMK
?'=
Bahasa Pemrograman Pointer
8
%2 9u.ungan antara pointer dan array2 Suatu nama array yang ditulis
tanpa dengan indeksnya menunjukkan alamat elemen pertama dari
array 3versi %42
Program "=2"#
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
+t"ti) it tgWa(irNO ' 61,, #, 17+#8A
it Eptg, iA
ptg ' tgWa(irA
printH(BKiai yang ditun-uk oe( ptg ' Rd`nB, Eptg)A
7,. (i'0A i?1A i::)
printH(BKiai dari tgWa(irNiO ' Rd`nB, E(ptg:i))A
get>(()A
.et*. 0A
8
=2 9u.ungan antara pointer dan array2 Suatu nama array yang ditulis
tanpa dengan indeksnya menunjukkan alamat elemen pertama dari
array 3versi =42
Program "=2"@
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
%ain()
6
+t"ti) it tgWa(irNO ' 61,, #, 17+#8A
it iA
it EptgA
ptg ' tgWa(irA
printH(BKiai yang ditun-uk oe( ptg ' Rd`nB, Eptg)A
7,. (i'0A i?1A i::)
printH(BKiai dari tgWa(irNiO ' Rd`nB, Eptg::)A
?'?
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
get>(()A
.et*. 0A
8
Analisis dan jelaskan per.edaan antara aplikasi pada nomor "$ % dan =
?2 *enukarkan isi % string tanpa pemakaian pointer2
Program "=2%-
=in>ude ?&tdio!(@
=in>ude ?&tring!(@
=de5ne GAKCAK0 "0
>(ar na%a1NGAKCAK0O ' BA2)ADBA
>(ar na%a"NGAKCAK0O ' B/I.DABA
%ain()
6
>(ar na%aYNGAKCAK0OA
put&(BS<)$FA M B)A
printH(Bna%a1 ;;@ R&`nB,
na%a1)A printH(Bna%a" ;;@
R&`nB, na%a")A
&tr>py(na%aY, na%a1)A
&tr>py(na%a1, na%a")A
&tr>py(na%a", na%aY)A
put&(BKIKI M B)A
printH(Bna%a1 ;;@ R&`nB, na%a1)A
printH(Bna%a" ;;@ R&`nB, na%a")A
8
'2 *enukarkan isi % string dengan 5asilitas pointer2
Program "=2%"2 *enukarkan isi % string dengan 5asilitas pointer
=in>ude ?&tdio!(@
=in>ude ?&tring!(@
>(ar Ena%a1 ' BA2)ADBA
>(ar Ena%a" ' B/I.DABA
%ain()
6
>(ar Ena%aYA
put&(BS<)$FA M B)A
printH(Bna%a1 ;;@ R&`nB, na%a1)A
2008 | Direktorat Pembinaan SMK
?''
Bahasa Pemrograman Pointer
printH(Bna%a" ;;@ R&`nB,
na%a")A
na%aY '
na%a1A
na%a1 '
na%a"A
na%a" '
na%aYA
put&(BKIKI M
B)A
printH(Bna%a1 ;;@ R&`nB,
na%a1)A
printH(Bna%a" ;;@ R&`nB,
na%a")A
8
Analisis dan jelaskan per.edaan
antara aplikasi pada nomor ?
dengan nomor '
>2 *engamati persamaan
penggunaan variable inde$
pada array dan variable inde$
pada pointer$ untuk menunjuk
suatu nilai data di dalam suatu
variable array2
Program"=2%%2
%ain()
6
int niaiN10O'68,,+*,78,,,,*,,+,,80,7*,+0,,08A
int indeY, EipA
printH(B)en>etak %enggunakan
array`nB)A printH(BDaHtar niai
&i&Pa`n`nB)A Hor(indeY'0A
indeY?10A indeY::)
printH(BR1dB,niaiNindeYO)A
put&(B`nB)A
printH(B)en>etak %enggunakan pointer dan indeY`nB)A
printH(BDaHtar niai &i&Pa`n`nB)A
Hor(indeY'0A indeY?10A
indeY::)
printH(BR1dB,E(niai:inde
Y))A put&(B`nB)A
printH(B)en>etak %enggunakan pointer`nB)A
printH(BDaHtar niai &i&Pa`n`nB)A
ip'SniaiA
Hor(indeY'0A indeY?10A indeY::)
printH(BR1dB,Eip::)A
8
")$,$)$ Arra3 %ari Pointer 0Arra3 oC Pointer1
Suatu array .isa digunakan
untuk menyimpan sejumla+ pointer2
Se.agai conto+:
>(ar Ena%a(ariN10OA
?'>
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
merupakan pernyataan untuk
mendeklarasikan array pointer2 Array
namahari terdiri dari "- elemen
.erupa pointer yang menunjuk ke
data .ertipe char2
;am.ar "=2"%2 Array pointer
Array pointer .isa diinisialisasi
sewaktu pendeklarasian2 Se.agai
conto+:
6ISeninJ
,
ISea&aJ,
I/abuJ,
IKa%i&J,
ICu%atJ,
ISabtuJ,
I)inggu
J8A
Per+atikan conto+ di.awa+ ini$
na%a(ariN0O beri&i
aa%at yang %enun-uk
ke &tring ISeninJ!
na%a(ariN1O beri&i
aa%at yang %enun-uk
ke &tring ISea&aJ!
na%a(ariN"O beri&i
aa%at yang %enun-uk
ke &tring I/abuJ!
dan &ebagainya!
Suatu pointer .isa saja menunjuk ke
pointer lain2 ;am.ar .erikut
mem.erikan conto+ mengenai
pointer menunjuk pointer2
+t"ti) )h". :"#"h".i/0 =
;am.ar "=2"=2 Pointer yang menunjuk pointer
ntuk mem.entuk rantai pointer
seperti pada gam.ar di atas$
pendeklarasian yang diperlukan
.erupa
int
3arWYA
int
Eptr1A
int
EEptr"A
Per+atikan pada deklarasi di depan:
Bar:U adala+ varia.el .ertipe int2
(tr" adala+ varia.el pointer yang
2008 | Direktorat Pembinaan SMK
?'(
Bahasa Pemrograman Pointer
menunjuk ke data .ertipe int+ (tr&
adala+ varia.el pointer yang
menunjuk ke pointer int+ 3itula+
se.a.nya deklarasinya .erupa int
55ptr67 42 Agar (tr" menunjuk ke
varia.el Bar:U$ perinta+ yang
diperlukan .erupa ptr1 '
S3arWYA Sedangkan supaya (tr&
menunjuk ke (tr"$ instruksi yang
diperlukan adala+
ptr" '
Sptr1A
program "=2%=
=in>ude ?&tdio!(@
%ain()
6
&tati> >(ar Eday&NO ' 6BSundayB, B)ondayB,
B4ue&dayB, BTedne&dayB,B4(ur&dayB,
B.ridayB, BSaturdayB8A
int iA
Hor( i ' 0A i ? ,A ::i )
printH( BR&`nB, day&NiO)A
8
Program "=2%?2 Pointer yang menunjuk ke pointer yang lain2
=in>ude ?&tdio!(@
%ain()
6
int a, Eb,
EE>A
a '
1**A
b '
SaA
> '
SbA
printH(BKiai a ' Rd atau Rd atau Rd`nB,
a, Eb, EE>)A
printH(Bb ' Rp ' aa%at a di
%e%ori`nB, b)A printH(B> ' Rp '
aa%at b di %e%ori`nB, >)A
printH(Baa%at > di %e%ori '
Rp`nB, S>)A
8
Program "=2%'2 Pointer yang menunjuk ke pointer yang lain2
=in>ude ?&tdio!(@
%ain()
6
int 3arWY ' "+1A
int Eptr1A
int EEptr"A
ptr1 ' S3arWYA
ptr" ' Sptr1A
printH(BKiai 3arWY ' Eptr1 ' Rd`nB, Eptr1)A
?'#
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
printH(BKiai 3arWY ' EEptr" ' Rd`n`nB,
EEptr")A printH(Bptr1 ' S3arWY '
Rp`nB, ptr1)A printH(Bptr" ' Sptr1 '
Rp`nB, ptr")A
printH(B Sptr" ' Rp`nB, Sptr")A
8
Program "=2%>2
=in>ude ?&tdio!(@
%ain()
6
int a, Eb,
EE>A
a '
17+*A
b '
SaA
> '
SbA
printH(BKiai a ' Rd atau Rd atau Rd`nB,
a, Eb, EE>)A
printH(Bb ' Rp ' aa%at a di
%e%ori`nB, b)A printH(B> ' Rp '
aa%at b di %e%ori`nB, >)A
printH(Baa%at > di %e%ori '
Rp`nB, S>)A
8
")$-$ Pointer %alam ung'i
Pointer dan kaitannya dengan
5ungsi yang akan di.a+as .erikut
meliputi: Pointer se.agai parameter
5ungsi dan pointer se.agai keluaran
5ungsi
")$-$"$ Pointer Sebagai
Parameter ung'i
Penerapan pointer se.agai
parameter yaitu jika diinginkan agar
nilai suatu varia.el internal dapat
diu.a+ ole+ 5ungsi yang dipanggil2
Per+atikan conto+ 5ungsi .erikut
di.awa+ ini2
3oid naikkanWniai (int EY,
int Ey)
6
EY ' EY
: "A
Ey ' Ey
: "A
8
<ungsi di atas dimaksudkan agar
kalau dipanggil$ varia.el yang
.erkenaan dengan parameter aktual
dapat diu.a+ nilainya$ masing6
masing dinaikkan se.esar %2 Aonto+
pemanggilan :
naikkanWniai(Sa,
Sb)A
Per+atikan$ dalam +al ini varia.el a
dan b +arus ditulis diawali operator
alamat 3A4 yang .erarti menyatakan
alamat varia.el$ se.a. parameter
5ungsi dalam pende5inisian .erupa
pointer2
")$-$&$ Pointer Sebagai ung'i
Keluaran
Suatu 5ungsi dapat di.uat agar
keluarannya .erupa pointer2
*isalnya$ suatu 5ungsi meng+asilkan
2008 | Direktorat Pembinaan SMK
?'@
Bahasa Pemrograman Pointer
keluaran .erupa pointer yang
menunjuk ke string nama].ulan$
seperti pada conto+ .erikut2
)h". Ena%aWbuan(it n)
6
+t"ti) )h". EbuanNO'
6BKode buan &aa(B, BCanuariB,
B.ebruariB, )aretB,
BApriB, B)eiB, BCuniB, BCuiB,
BAgu&tu&B, BSepte%berB,
BOktoberB,
BKope%berB,BDe&e%berB
8A
.et*. ( (n?1 f f n@1") D
buanN0O M
buanNnO )A
8
Pada de5inisi 5ungsi di atas$
>(ar Ena%aWbuan()
menyatakan .a+wa keluaran 5ungsi
nama:bulan01 .erupa pointer yang
menunjuk ke o.yek c+ar 3atau string42
Dalam 5ungsi nama:bulan01$ mula6
mula array .ernama bulan
dideklarasikan dan sekaligus
diinisialisasi agar menunjuk sejumla+
string yang menyatakan nama .ulan2
Di .agian ak+ir 5ungsi$ pernyataan
return ( (n?1 ff n@1") D
buanN0O M
buanNnO
)A
menyatakan .a+wa +asil 5ungsi
.erupa pointer yang menunjuk ke
string HKode .ulan sala+1
3.ulan[-\4 jika masukan 5ungsi nT"
atau nU"%
.ulan[n\ untuk n yang terletak
antara " sampai dengan "%2
Program "=2%(2 <ungsi dengan argumen .erupa pointer2
=in>ude ?&tdio!(@
3oid naikkanWniai(int EY, int Ey)A
%ain()
6
int a ' 1A
int b ' +A
printH(BS<)$FA M a ' Rd b ' Rd`nB, a, b)A
naikkanWniai(Sa, Sb)A
printH(BKIKI M a ' Rd b ' Rd`nB, a, b)A
8
3oid naikkanWniai(int EY, int Ey)
6
EY ' EY : "A
Ey ' Ey : "A
8
Program "=2%#2 <ungsi dengan keluaran .erupa pointer yang menunjuk string2
=in>ude ?&tdio!(@
>(ar Ena%aWbuan(int n)A
%ain()
?>-
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
6
int bA
printH(BBuan 1!!1" M B)A
&>anH(BRdB, Sb)A
printH(BBuan ke;Rd adaa( R&`nB, b, na%aWbuan(b))A
8
>(ar Ena%aWbuan(int n)
6
&tati> >(ar EbuanNO '
6
BKode buan
&aa(B,
BCanuariB,
B.ebruariB,
B)aretB,
BApriB,
B)eiB,
BCuniB,
BCuiB,
BAgu&tu
&B,
BSepte%be
rB,
BOktoberB,
BKo3e%ber
B,
BDe&e%ber
B
8A
return ((n?1ffn@1") D buanN0O M buanNnO)A
8
Program "=2%@2 *engakses isi suatu varia.el melalui pointer2
=in>ude ?&tdio!(@
%ain()
6
int y, Y ' 8+A /E Y S y bertipe int E/
int EpYA
/E 3ar pointer yg %enun-uk ke data yang bertipe int E/
pY ' SYA /E pY dii&i dgn aa%at dari 3ariabe Y E/
y ' EpYA /E y dii&i dgn niai yang ditun-uk oe( pY E/
printH(BAa%at Y '
Rp`nB, SY)A printH(BI&i pY
' Rp`nB, pY)A printH(BI&i
Y ' Rd`nB, Y)A
printH(BKiai yang ditun-uk oe( pY ' Rd`nB, EpY)A
printH(BKiai y ' Rd`nB, y)A
2008 | Direktorat Pembinaan SMK
?>"
Bahasa Pemrograman Pointer
8
Program "=2=-2 *engakses isi suatu
varia.el melalui pointer2 Tipe varia.el
pointer dan tipe data yang ditunjuk
+arus sejenis2
=in>ude ?&tdio!(@
%ain()
6
int EpuA
int nuA
int u ' 1"1#A
pu ' SuA
nu ' EpuA
printH(BAa%at dari u '
Rp`nB, Su)A printH(BI&i pu '
Rp`nB, pu)A printH(BI&i u '
Rd`nB, u)A
printH(BKiai yang ditun-uk oe( pu ' Rd`nB, Epu)A
printH(BKiai nu ' Rd`nB, nu)A
8
Program "=2="2 *engu.a+ isi suatu varia.el melalui pointer2
=in>ude ?&tdio!(@
%ain()
6
^oat d ' *#!*H, EpdA
printH(BI&i d %ua;%ua ' Rg`nB, d)A
pd ' SdA
Epd :' 10A
printH(BI&i d &ekarang ' Rg`nB, d)A
8
Program "=2=%2 9u.ungan antara
pointer dan array2 Suatu nama array
yang ditulis tanpa dengan indeksnya
menunjukkan alamat elemen pertama
dari array 3versi "42
=in>ude ?&tdio!(@
%ain()
6
&tati> int tgWa(irNO ' 61,, #, 17+#8A
int EptgA
printH(BKiai yang ditun-uk oe( ptg ' Rd`nB, Eptg)A
?>%
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
printH(BKiai dari tgWa(irN0O ' Rd`nB, tgWa(irN0O)A
8
Program "=2==2 9u.ungan antara
pointer dan array2 Suatu nama array
yang ditulis tanpa dengan indeksnya
menunjukkan alamat elemen pertama
dari array 3versi %42
=in>ude ?&tdio!(@
%ain()
6
&tati> int tgWa(irNO ' 61,, #, 17+#8A
int Eptg, iA
ptg ' tgWa(irA
printH(BKiai yang ditun-uk oe( ptg ' Rd`nB, Eptg)A
Hor (i'0A i?1A i::)
printH(BKiai dari tgWa(irNiO ' Rd`nB, E(ptg:i))A
8
Program "=2=?2 9u.ungan antara
pointer dan array2 Suatu nama array
yang ditulis tanpa dengan indeksnya
menunjukkan alamat elemen pertama
dari array 3versi =42
=in>ude ?&tdio!(@
%ain()
6
&tati> int tgWa(irNO ' 61,, #, 17+#8A
int iA
int EptgA
ptg ' tgWa(irA
printH(BKiai yang ditun-uk oe( ptg ' Rd`nB, Eptg)A
Hor (i'0A i?1A i::)
printH(BKiai dari tgWa(irNiO ' Rd`nB, Eptg::)A
8
Program "=2='2 *enukarkan isi % string tanpa pemakaian pointer2
=in>ude ?&tdio!(@
=in>ude ?&tring!(@
=de5ne GAKCAK0 "0
>(ar na%a1NGAKCAK0O ' B0A4$4KACABA
>(ar na%a"NGAKCAK0O ' B2AKO)AKBA
%ain()
2008 | Direktorat Pembinaan SMK
?>=
Bahasa Pemrograman Pointer
6
>(ar na%aYNGAKCAK0OA
put&(BS<)$FA M B)A
printH(Bna%a1 ;;@ R&`nB, na%a1)A
printH(Bna%a" ;;@ R&`nB,
na%a")A &tr>py(na%aY,
na%a1)A &tr>py(na%a1,
na%a")A &tr>py(na%a",
na%aY)A
put&(BKIKI M B)A
printH(Bna%a1 ;;@ R&`nB, na%a1)A
printH(Bna%a" ;;@ R&`nB, na%a")A
8
Program "=2=>2 *enukarkan isi % string dengan 5asilitas pointer2
=in>ude ?&tdio!(@
=in>ude ?&tring!(@
>(ar Ena%a1 '
B0A4$4KACABA >(ar
Ena%a" ' B2AKO)AKBA
%ain()
6
>(ar
Ena%aYA
put&(BS<)$FA
M B)A
printH(Bna%a1 ;;@ R&`nB,
na%a1)A
/E na%a1 ad pointer yg %enun-uk ke &tring
0A4$4KACAE/
printH(Bna%a" ;;@ R&`nB,
na%a")A
/E na%a" ad pointer yg %enun-uk ke &tring
2AKO)AKE/
na%aY '
na%a1A
na%a1 '
na%a"A
na%a" '
na%aYA
put&(BKIKI M
B)A
printH(Bna%a1 ;;@ R&`nB,
na%a1)A
printH(Bna%a" ;;@ R&`nB,
na%a")A
8
Program "=2=(2 Pointer yang menunjuk ke pointer yang lain2
=in>ude ?&tdio!(@
%ain()
6
int a, Eb, EE>A
a ' 1**A
b ' SaA
> ' SbA
?>?
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
printH(BKiai a ' Rd atau Rd atau Rd`nB,
a, Eb, EE>)A
printH(Bb ' Rp ' aa%at a di
%e%ori`nB, b)A printH(B> ' Rp '
aa%at b di %e%ori`nB, >)A
printH(Baa%at > di %e%ori '
Rp`nB, S>)A
8
Program "=2=#2 Pointer yang menunjuk ke pointer yang lain2
=in>ude ?&tdio!(@
%ain()
6
int 3arWY ' "+1A
int Eptr1A
int EEptr"A
ptr1 ' S3arWYA
ptr" ' Sptr1A
printH(BKiai 3arWY ' Eptr1 ' Rd`nB,
Eptr1)A printH(BKiai 3arWY ' EEptr" '
Rd`n`nB, EEptr")A printH(Bptr1 '
S3arWY ' Rp`nB, ptr1)A printH(Bptr" '
Sptr1 ' Rp`nB, ptr")A
printH(B Sptr" ' Rp`nB, Sptr")A
8
Program "=2=@2 <ungsi dengan argumen .erupa pointer2
=in>ude ?&tdio!(@
3oid naikkanWniai(int EY, int Ey)A
%ain()
6
int a ' 1A
int b ' +A
printH(BS<)$FA M a ' Rd b ' Rd`nB, a, b)A
naikkanWniai(Sa, Sb)A
printH(BKIKI M a ' Rd b ' Rd`nB, a, b)A
8
3oid naikkanWniai(int EY, int Ey)
6
EY ' EY : "A
Ey ' Ey : "A
8
Program "=2?-2 <ungsi dengan keluaran .erupa pointer yang menunjuk string2
=in>ude ?&tdio!(@
>(ar Ena%aWbuan(int n)A
2008 | Direktorat Pembinaan SMK
?>'
Bahasa Pemrograman Pointer
%ain()
6
int bA
printH(BBuan 1!!1" M B)A
&>anH(BRdB, Sb)A
printH(BBuan ke;Rd adaa( R&`nB, b, na%aWbuan(b))A
8
>(ar Ena%aWbuan(int n)
6
&tati> >(ar EbuanNO '
6
BKode buan
&aa(B,
BCanuariB,
B.ebruariB,
B)aretB,
BApriB,
B)eiB,
BCuniB,
BCuiB,
BAgu&tu
&B,
BSepte%berB,
BOktoberB,
BKo3e%be
rB,
BDe&e%be
rB
8A
return ((n?1ffn@1") D buanN0O M buanNnO)A
8
")$2$ ung'i Pointer ke Stati/ .la'' Member un/tion
penggunaan 5unction pointer
pada ABB di.atasi$ yaitu 5unction
pointer tidak .ole+ menunjuk pada
5unction yang .erada dalam se.ua+
class 3class mem.er 5unction4 kecuali
5unction terse.ut .erjenis static2
>a&& A
6
pri3ate M
pubi> M &tati> 3oid TriteString(>(arE String)A
8A
?>>
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
3oid AMMTriteString(>(arE String)
6
printH(BAMMTriteString() M R&B,String)A
8
>a&& B
6
pri3ate M
pubi> M 3oid .un>(3oid (ETriter)(>(arE &tr))A
8A
3oid BMM.un>(3oid (ETriter)(>(arE &tr))
6
Triter(B>a&& B Priting `B(eo!!!_`BB)A
8
int %ain(3oid)
6
AE a ' neP
AA BE b '
neP BA
b;@.un>(a;@TriteString)A
deete aA
deete bA
8
,amun terkadang yang menjadi
masala+ adala+$ se.ua+ mem.er
5unction yang .erjenis static$ tidak
memiliki akses ke mem.er dari class$
se.agai conto+ .ila kita ru.a+ class
A menjadi :
>a&& A
6
pri3ate M int pri3atenu%berA
pubi> M &tati> 3oid TriteString(>(arE String)A
8A
3oid AMMTriteString(>(arE String)
6
printH(BAMMpri3atenu%ber ' RdB,pri3atenu%ber)A
printH(BAMMTriteString() M R&B,String)A
8
2008 | Direktorat Pembinaan SMK
?>(
Bahasa Pemrograman Pointer
maka compiler menyatakan error$
.a+wa 5ungsi static tidak dapat
mengakses mem.er dari class A2
,amun .ila kita ru.a+ 5ungsi
/riteString menjadi non6static
3dengan meng+apus keyword
astatica4 maka 5ungsi /riteString tidak
dapat di pass melalui argument ke
!::5unc 3karena 5unction pointer tidak
.ole+ menunjuk 5ungsi yang
merupakan mem.er class4
")$"5$ung'i Pointer (a%a .la'' anggota ung'i Non#'tati/
Sala+ satu cara agar kita dapat
mem.uat 5unction pointer yang
menunjuk ke non6static class
mem.er 5unction .ekerja adala+
dengan cara mem.erikan o.ject dari
class yang mem.ernya ingin diakses2
Pada masala+ se.elumnya
A::/riteString memerlukan akses ke
private mem.er dari A yaitu
mengakses int A::Privatenum.er$
maka solusinya kita pass o.ject dari
class A ke argumen dari
A::/riteString kode yang se.elumnya
diru.a+ menjadi :
>a&& A
6
pri3ate M int pri3atenu%berA
pubi> M &tati> 3oid TriteString(>(arE String,AE SeH)A
8A
3oid AMMTriteString(>(arE String,AE SeH)
6
printH(BAMMpri3atenu%ber ' Rd`nB,SeH;@pri3atenu%ber)A
printH(BAMMTriteString() M R&B,String)A
8
>a&& B
6
pri3ate M
pubi> M 3oid .un>(3oid (ETriter)(>(arE &tr,AE SeH),AE Keed4oGa&&)A
8A
3oid BMM.un>(3oid (ETriter)(>(arE &tr,AE SeH),AE Keed4oGa&&)
6
Triter(B>a&& B Priting `B(eo!!!_`BB,Keed4oGa&&)A
8
int %ain(3oid)
6
?>#
Direktorat Pembinaan SMK | 2008
Pointer Bahasa Pemrorgraman
AE a ' neP
AA BE b '
neP BA
b;@.un>(a;@TriteString,a)A
deete aA
deete bA
8
Terdapat cara lain menggunakan
mem.er 5unction pointer selain
dengan cara di atas2 !e.erapa +al
yang +arus diper+atikan adala+:
Deklarasi *em.er 5unction +arus
dengan menggunakan
operator ::K
*em.er 5unction pointer
memerlukan o.jek atau pointer
ke o.jek supaya dapat
digunakan2
*emanggil mem.er 5unction
pointer menggunakan operator 2K
atau 6UK $ tergantung apaka+
digunakan dengan o.jek 3atau
re5erence4 atau dengan pointer2
Yang menjadi masala+ di sini
adala+ kedua operator terse.ut
memiliki prioritas yang le.i+
renda+ daripada operator
aplikasi 5ungsi$ se+ingga anda
akan selalu memerlukan tanda
kurung untuk menggunakan
mem.er 5unction pointer2
Assignment ke mem.er 5unction
pointer +arus selalu
menggunakan operator V2 9al ini
.er.eda dengan 5unction pinter
.iasa dimana operator V adala+
optional2 !e.erapa kompiler
akan menerima konstruk
assignment tanpa operator V$
tapi itu tidak standard2 Kompiler
yang sesuai dengan standard AB
B@# akan mereject
assignment mem.er 5unction
pointer tanpa operator V2 untuk
le.i+ jelasnya anda dapat
meli+at conto+ program di
.awa+:
=in>ude ?io&trea%@
u&ing &tdMM>outA
u&ing &tdMMendA
>a&& So%e)u%boCu%boCa&&6
int iA
pubi>M
3oid aW%et(od()A
So%e)u%boCu%boCa&&(int
p)Mi(p)68
8A
3oid So%e)u%boCu%boCa&&MMaW%et(od()6
2008 | Direktorat Pembinaan SMK
?>@
Bahasa Pemrograman Pointer
>out ?? Bt(e %u%bo -u%bo >a&& (a& a %e%ber 3ariabe Pit( 3aue
' B?? i??
endA
8
typedeH 3oid (So%e)u%boCu%boCa&&MME )e%ber.un>tionptr)
() A // ini >ara %endekrara&ikan typedeH dari non;&tati>
%e%ber Hun>tion
int %ain()6
So%e)u%boCu%boCa&& >(")A // dekara&ikan &ebua( ob-ek
3oid (So%e)u%boCu%boCa&&MME t(eW%e%WHunWptr)()A
t(eW%e%WHunWptr '
SSo%e)u%boCu%boCa&&MMaW%et(odA >!aW%et(od()A
// pe%anggian tanpa Hun>tion pointer
(>!Et(eW%e%WHunWptr)()A // pe%anggian dengan
Hun>tion pointer
So%e)u%boCu%boCa&&E d ' neP
So%e)u%boCu%boCa&&(1)A // ini adaa( pointer ke ob-ek
d;@aW%et(od()A // pe%anggian nor%a
(d;@E t(eW%e%WHunWptr)()A // pe%anggian dengan pointer Hung&i
)e%ber.un>tionptr t(eW%e%WHunWptr" '
SSo%e)u%boCu%boCa&&MMaW%et(odA // dekara&i dan deHini&i
%e%ber Hun>tion pointer
(>!E t(eW%e%WHunWptr")()A // bi&a digunakan &eperti ini
(d;@E t(eW%e%WHunWptr") ()A // atau &eperti ini
deete dA
8
")$""$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan pointer pada .a+asa ABB
%2 ;am.arkan pengaturan memori pemrograman menggunakan pointer
=2 !agaimana cara mendeklarasikan pointer
?2 !agaimana menginisialisasi pointer
'2 !uatla+ pemrograman string menggunakan pointer
>2 !uatla+ program yang menggunakan 5ungsi pada pointer
(2 !agaimana cara mengu.a+ dan mengisi isi pointer
#2 Apaka+ per.edaan array dan pointer
?(-
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
BAB "*
.EASS
"?2"2 8.yek dan Alass
"?2%2 Tipe Alass
"?2=2 Deklarasi Alass
"?2?2 Struktur dan kelas
"?2'2 Aonstructor dan destructor
"?2>2 8verloading Aonstructor
"?2(2 *enulis Alass
"?2#2 Re5erence this
"?2@2 8verloading *et+od
"?2"-2 Access *odi5ier
"?2""2 Aonto+ Program Alass
"?2"%2 Soal :ati+an
"*$"$ Ob3ek %an .la''
Dalam A atau .a+asa
pemrograman prosedural lainnya$
pemrogramannya .erorientasi
kepada aksi$ sedangkan
pemrograman ABB cenderung
.erorientasi pada o.yek2 Disamping
itu$ unit program dalam A adala+
5ungsi$ tetapi di dalam ABB$ unit
program adala+ kelas 3class4 dimana
suatu o.yek 3ob'ect4 secara
mendekati kenyataan dapat
diciptakan2
Kelas di dalam ABB merupakan
pengem.angan dari notasi struct di
dalam A .iasa$ yaitu struktur untuk
mende5inisikan elemen6elemen data2
*isalnya dide5inisikan data tentang
waktu yang terdiri dari jam$ menit$
dan detik se.agai .erikut:
+t.*)t 4i%e 6
it (ourA
// nilai jam / (4
it %inuteA
// nilai menit / 2M
it &e>ondA
// nilai detik / 2M
8A
De5inisi Time ini terdiri dari tiga
.ua+ anggota data 3data members4
yang semuanya .ertipe int$ yaitu
+our$ minute$ dan second2 Anggota
struktur dapat terdiri dari .er.agai
macam tipe$ kecuali tipe Time itu
sendiri2 !erikut adala+ conto+6conto+
deklarasi varia.el dan akses anggota
data dari struktur
4i%e ti%eObyek, ti%eArrayN10O,
2008 | Direktorat Pembinaan SMK
?("
Bahasa Pemrograman %lass
Eti%eGt
rA
>out ??
ti%eObyek!(ourA
// mengakses data hour dari
obyek
>out ?? ti%eGtr ;@
(ourA
// mengakses data hour dari
obyek
// yang ditunjuk oleh pointer
time'tr
ntuk melakukan proses
pengola+an ter+adap o.yek data ini
diperlukan 5ungsi65ungsi yang ditulis
secara terpisa+ dari de5inisi
strukturnya2 Se.agai conto+$ 5ungsi
.erikut disusun untuk menuliskan
o.yek Time dengan .entuk
hh9mm9''2
5,i% print4i%e (),+t
4i%e St)
6
>out ?? (t!(our ? 10 D B0B M
BB) ??
t!(our ??
BMB
?? (t!%inute ? 10 D B0B M BB)
??
t!%inute
?? BMB
?? (t!&e>ond ? 10 D B0B M BB)
??
t!&e>ond ??
BMB A
8
Pada conto+ ini terli+at adanya
pemisa+an antara data dan
prosedurC5ungsi$ yang .er.eda
dengan konsep pemrograman
.eorientasi o.yek dimana antara
keduanya di.ungkus ke dalam satu
kesatuan dengan menggunakan tipe
class2 Pem.ungkusan
3encapsulation4 inila+ yang
merupakan sala+ satu ciri utama dari
pemrograman .erorientasi o.jek2
"*$&$ Ti(e .la''
Kata kunci class dalam ABB
digunakan untuk memodelkan suatu
o.yek terdiri dari dua anggota$ yaitu
atri.ut yang direpresentasikan
se.agai anggota data 3data
members4 dan si5at atau operasi6
operasi atau prosedur6prosedur yang
direpresentasikan se.agai 5ungsi
anggota 3member functions42 <ungsi
anggota sering dise.ut dengan
metode pada .a+asa pemrograman
.erorientasi o.jek lainnya dan
digunakan untuk mem.eri pesan
pada o.yek yang .ersangkutan2
Setiap anggota dari o.yek ini
dikelompokkan .erdasarkan si5at
akses ter+adap anggotaanggotanya$
.aik dari dalam o.yek itu sendiri
maupun dari o.yek lainnya2 Ada tiga
si5at yang dapat di.erikan$ yaitu
public$ private$ dan protected2
Per+atikan conto+ .erikut:
)-"++
4i%e 6
(*b-i)
M
4i%e()A
// default constructor
5,i% &et4i%e(it, it, it)A
// member function
3oit print()A
e4i%e()A
// destructor
(.i5"teM
it (ourA
// data member
it %inuteA
it &e>ondA
8
A
Anggota kelompok private +anya
dapat diakses ole+ 5ungsi anggota
dari kelas itu sendiri dan kelas lain
yang mempunyai +u.ungan 5riend
3akan dijelaskan pada .a.
.erikutnya42 9al ini .er.eda dengan
kelompok pu.lic yang dapat diakses
dari .agian6.agian lainnya dari
program$ sedangkan kelompok
?(%
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
protected +anya dapat diakses ole+ 6
5ungsi anggota dari kelas yang
.ersangkutan dan kelas6kelas lain
8
(our ' %inute ' &e>ond ' 0A
yang menjadi turunannya2
Pem.atasan akses itu
merupakan in5ormation +iding yang
.erguna antara lain jika representasi
data dari kelas .eru.a+$ +anya 5ungsi
anggota 3.ukan program dari
pengguna4 yang perlu diam.il$ dan
jika ada kesala+an dalam manipulasi
anggota data dari kelas$ +anya 5ungsi
anggota yang perlu di6de.ug$ .ukan
seluru+ program2
<ungsi anggota yang namanya
sama dengan nama kelas dise.ut
de5ault constructor$ dan 5ungsi
anggota yang namanya terdiri tkita
tilde 3HdH4 diikuti dengan nama kelas
dise.ut destructors2 Aonstructor akan
secara otomatis dipanggil ole+
kompilator untuk inisialisasi o.yek$
sedangkan destructor akan secara
otomatis dipanggil ole+ kompilator
untuk dealokasi memori2 ,ama kelas
akan .erlaku se.agai kata kunci
penentu untuk suatu tipe data .aru$
misalnya dengan kelas Time terse.ut
dapat di.uat deklarasi varia.el
se.agai .erikut:
4i%e
ti%eObyek1,
ti%eObyek"A
Pada saat deklarasi inila+
diproses 5ungsi anggota Time01 yang
merupakan de5ault constructor dari
kelas ini2 ,amun demikian$ kelas
terse.ut .elum dapat digunakan
karena implementasi setiap 5ungsi
anggota .elum di.uat2 Per+atikan
conto+ implementasi .erikut di.awa+
ini:
4i%e MM
4i%e()
5,i% 4i%e MM &et4i%e( it ( ' 0, it
% ' 0,
it & ' 0 )
6
(our ' (A
%inute '
%A
&e>ond '
&A
8
3oit 4i%e MM print()
6
>out ?? ((our ? 10 D B0B M BB)
?? (our ?? BMB
?? (%inute ? 10 D B0B M BB)
?? %inute ?? BMB
?? (&e>ond ? 10 D B0B M BB)
?? &e>ond ?? BMB A
8
8perator H::H adala+ scope6
operator$ yang menunjukkan .a+wa
5ungsi yang dituliskan di .elakangnya
merupakan anggota dari kelas yang
ditulis di depannya2 Dengan
demikian$ misalnya void Time ::
setTime 3 + I -$ m I -$ s I - 4
menunjukkan .a+wa 5ungsi setTime
merupakan anggota dari kelas Time2
Suatu 5ungsi dalam ABB dapat
dipanggil dengan nol atau le.i+
argumen$ seperti conto+ Time34 yang
tidak mempunyai argumen$ dan
setTime 3 + I -$ m I -$ s I - 4
mempunyai tiga argumen dengan
masing6masing mempunyai nilai
default2 Artinya$ 5ungsi itu dapat
dipanggil dengan .e.erapa cara
seperti conto+ .erikut:
&et4i%e( 10, 10, "* )A
// argumen hI&/! mI4/! sI(2
&et4i%e( 10, 10)A
2008 | Direktorat Pembinaan SMK
?(=
Bahasa Pemrograman %lass
// argumen hI&/! mI4/! sI/
&et4i%e()A
// argumen hI/! mI/! sI/
Dengan de5inisi dan deklarasi kelas
Time yang tela+ di.uat$ maka dapat
digunakan se.agai tipe .aru seperti
pada program .erikut 3misalnya
de5inisi dan deklarasi kelas Time
tela+ disimpan pada 5ile time$h4:
=in>ude ?io&trea%@
=in>ude Bti%e!(B
%ain() 6 4i%e t1A
t1!&et4i%e(10,10
,"*)A
// obyek t& memiliki
hourI&/! minuteI4/!
secondI(2
t1!
*ekanisme kelas 3class4
memungkinkan pengguna
mende5inisikan tipe data a.strak
3ADT42 Suatu kelas mempunyai
empat atri.ut$ yaitu:
Anggota6anggota data 3data
members4 yang merupakan
representasi dari kelas2 Suatu
kelas dapat mempunyai nol atau
le.i+ data mem.er dengan tipe
apa saja2
<ungsi65ungsi anggota 3members
function4 yaitu operasi6operasi
yang dapat diterapkan pada
o.yek6o.yek dari kelas itu2
Se.ua+ kelas dapat mempunyai
nol atau le.i+ 5ungsi anggota2
Tingkat akses2
Setiap anggota suatu kelas dapat
ditentukan tingkat aksesnya
se.agai (riBate$ (rote/te% atau
(ubli/2 Tingkat6tingkat ini
mengontrol akses ke anggota
kelas2 !iasanya representasi kelas
.ersi5at private$ sedang operasi6
operasinya .ersi5at pu.lic2
Spesi5ikasi privateCpu.lic ini
mem.entuk information hidding2
,ama kelas yang .erlaku se.agai
type6speci5ier2
"*$)$ Deklara'i .la''
Alass adala+ metode logical
untuk organisasi data dan 5ungsi
dalam struktur yang sama2 Alass
dideklarasikan menggunakan
keyword /la''$ yang secara
5ungsional sama dengan keyword
'tru/t$ tetapi dengan kemungkinan
penyertaan 5ungsi se.agai anggota$
5ormatnya se.agai .erikut :
)-"++
classEname U
permissionElabe
lE&M member&V
permissionElabe
lE(M member(V
KK
K
W
objectEnam
eV
Dimana /la'':name adala+
nama class3user de5ined type4 dan
5ield optional obje/t:name adala+
satu atau .e.erapa identi5ier o.jek
yang valid2 !ody dari deklarasi
.erisikan member'$ yang dapat
.erupa data ataupun deklarasi 5ungsi$
dan (ermi''ion label' 3optional4$
dapat .erupa satu dari tiga keyword
.erikut : (riBate9$ (ubli/9 atau
(rote/te%92 Digunakan untuk
menentukan .atasan akses ter+adap
mem.ers yang ada :
?(?
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
"$ (riBate $ anggota class dapat
diakses dari danggota lain pada
kelas yang sama atau dari class
a5rienda2
&$ (rote/te% 7 anggota dapat
diakses dari anggota class yang
sama atau class 5riend $ dan juga
dari anggota class
turunannya3derived42
)$ (ubli/ $ anggota dapat diakses
dari class manapun2
De5ault permission la.el : (riBate
Aonto+ :
)-"++ C/e>tange 6
it Y, yA
(*b-i)M
5,i% &etW3aue& (it,it)A
it area (5,i%)A
8 re>tA
Deklarasi class .Re/tangle dan
o.ject .ernama re/t2 Alass ini .erisi
empat anggota: dua varia.le .ertipe
int 3U and 34 pada .agian (riBate
3karena private adala+ de5ault
permission4 dan dua 5ungsi pada
.agian (ubli/ : 'et:Balue'01 dan
area01$ dimana +anya dideklarasikan
propotype]nya2
Per+atikan per.edaan antara
nama classdan nama o.ject2 Pada
conto+ se.elumnya .Re/tangle
adala+ nama class3conto+$ user6
de5ined type4$ dan re/t adala+ o.ject
dari tipe .Re/tangle2 Sama +alnya
dengan deklarasi .erikut :
int aA
int adala+ nama class 3type4
dan a adala+ nama
o.ject3varia.le42
Program "?2"
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++
C/e>tang
e 6 it Y,
yA (*b-i)M
5,i% &etW3aue& (it,it)A
it area (5,i%) 6.et*. (YEy)A8
8A
5,i% C/e>tangeMM&etW3aue& (it a, it b) 6
Y ' aA
y ' bA
8
it %ain ()
6 C/e>tange
re>tA
re>t!&etW3aue&
(1,#)A
>out ?? BareaM B ?? re>t!area()A
get>(()A
2008 | Direktorat Pembinaan SMK
?('
Bahasa Pemrograman %lass
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
areaM 1"
9al .aru dari conto+ diatas
adala+ operator 99 dari lingkup yang
disertakan dalam pende5inisian
'et:Balue'012 Digunakan untuk
mendeklarasikan anggota dari class
diluar class terse.ut2 Scope operator
3::4 menspesi5ikasikan class dimana
anggota yang dideklarasikan .erada$
mem.erikan scope properties yang
sama seperti jika dideklarasikan
secara langsung dalam class2
Program "?2%
=in>ude ?>onio!(@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++
C/e>tang
e 6 it Y,
yA (*b-i)M
5,i% &etW3aue& (it,it)A
it area (5,i%) 6.et*. (YEy)A8
8A
5,i% C/e>tangeMM&etW3aue& (it a, it b) 6
Y ' aA
y ' bA
8
it %ain () 6
C/e>tange re>t,
re>tbA
re>t!&etW3aue&
(1,#)A
re>tb!&etW3aue&
(*,,)A
>out ?? Bre>t areaM B ?? re>t!area()
?? endA >out ?? Bre>tb areaM B ??
re>tb!area() ?? endA get>(()A
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
re>t areaM 1" re>tb ".e"O X0
?(>
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
Per+atikan pemanggilan
re/t$area01 tidak mem.erikan +asil
yang sama dengan pemanggilan
re/tb$area012 7ni dise.a.kan karena
o.jek dari class .Re/tangle
mempunyai varia.le sendiri$ U dan 3$
dan 5ungsi 'et:Balue01 dan area012
Alass terdiri dari dua .agian$
yaitu: %lass head yaitu kata kunci
class diikuti ole+ nama kelas dan
Alass .ody yaitu class yang diapit
kurung kurawal W X$ diikuti tkita titik
koma atau da5tar deklarasi2 *isalnya:
>a&& &>reen (/Eccc!E/) A
>a&& &>reen (/Eccc!E/) &1 , &" A
Dalam class .ody ditentukan
data mem.ers$ mem.er 5unction dan
tingkat6tingkat dari in5ormation
+idding2 Deklarasi untuk data
mem.ers sama dengan deklarasi
untuk varia.el$ kecuali .a+wa
inisialisasi eksplisit tidak
diper.ole+kan2
Per+atikan conto+ di.awa+ ini:
)-"++ &>reen 6
// height dan ?idth menyatakan
jumlah kolom
//crusor menunjukkan posisi
screen
sekarang
// scr menunjuk ke array
height*?idth
+h,.t (eig(t, Pidt( A
// menyatakan jumlah kolom
)h". E>ru&or A
// posisi screen saat ini
)h". &>r A
// menunjuk ke array
height?idth
8
A
Alass dapat mende5inisikan data
mem.er .erupa re5erence ke tipe
dirinya$ per+atikan conto+ di.awa+
ini:
)-"++
inkS>reen
6 &>reen
PindoP A
inkS>reen
EneYt A
inkS>reen
Epre3 A
8
A
*em.er 5unctions dari suatu kelas
tidak dideklarasikan di dalam class
.ody2 per+atikan conto+ di.awa+ ini:
)-"++
S>reen
6 Gubi> M
5,i% (o%e ( ) 6 >ur&or ' &>r A 8
5,i% %o3e ( it, it ) A
)h". get ( ) 6 .et*. E>u&or A8
)h". get (it , it ) A
5,i% >(e>k/ange ( it , it ) A
ccc
8
A
*em.er 5unction yang dide5inisikan di
dalam class6.ody secara otomatis
dianggap inline$ dan mem.er 5unction
yang le.i+ dari satu atau dua .aris
se.aiknya dide5inisikan di luar class6
.ody2 per+atikan conto+ di.awa+ ini
2008 | Direktorat Pembinaan SMK
?((
Bahasa Pemrograman %lass
Program "?2=
=in>ude B&>reen!(B
=in>ude ?io&trea%!(@
=in>ude ?&tdib!(@
*+i! "#e+(")e &tdA
5,i% &>reen MM >(e>k/ange (it roP , it >o ) // alidasi koordinat
6
i7 (roP ? 1 ff roP @ (eig(t ff >o ? 1 ff >o @ Pidt( )
6
1)A
8
8
>err ?? BKoordinat &>reen ( B ?? roP ?? B, B?? >o ?? B ) keuar
bata& `n B A eYit (;
*em.er 5unction yang dide5inisikan di
luar class .ody$ jika ingin di.uat inline
+arus secara eksplisit2 per+atikan
conto+ di.awa+ ini:
i-ie 5,i% &>reen MM %o3e (
it r , it > )
// memindahkan cursor ke
posisi Ar!c%
6
>o>k/ange (r,>) A
// koordinat
sah N
it roP ' (r;1) EPidt( A
>ur&or ' &er : roP : >;1 A
8
i-ie 5,i% &>reen MM %o3e (
it r , it > )
// memindahkan cursor ke
posisi Ar!c%
6
>o>k/ange (r,>) A
// koordinat
sah N
it roP ' (r;1) EPidt( A
>ur&or ' &er : roP : >;1 A
8
*em.er 5unction di.edakan dari
5ungsi65ungsi .iasa dalam +al6+al:
*em.er 5unction punya +ak akses
penu+ ke anggota6anggota kelas
yang .ersi5at pu.lic maupun
private2 Pada umumnya$ 5ungsi6
5ungsi .iasa dapat di akses +anya
ole+ anggota6anggota kelas yang
pu.lic2 Tentu saja pada umumnya
mem.er 5unctions suatu kelas
tidak mempunyai +ak akses ke
anggota6anggota non pu.lic dari
kelas6kelas lainnya2
*em.er 5unction dide5inisikan
dalam scope dari kelasnya$ 5ungsi6
5ungsi .iasa dide5inisikan dalam
scope 5ile2
?(#
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
"*$*$ Struktur %an kela'
Dalam ABB$ tipe data struktur
yang dideklarasikan dengan kata
kunci struct$ dapat mempunyai
komponen dengan sem.arang tipe
data$ .aik tipe data dasar maupun
tipe data turunan$ termasuk 5ungsi2
Dengan kemampuan ini$ tipe data
struktur menjadi sangat .erdaya
guna2
*isalnya$ pada masala+ ketika
kita ingin mem.entuk tipe data
struktur yang namanya kotak2 *aka
dapat dideklarasikan se.agai .erikut:
&tru>t
tkotak
6
doube pan-angA
doube ebarA
8
A
struktur kotak menjadi le.i+ jelas
.entuknya2
&tru>t
tkotak
6
doube pan-angA
doube ebarA
3oid Set$kuran(doube p-,
doube b)
6
pan-ang ' p-A
ebar ' bA
8A
8
A
tkotak
kotakA
dengan tipe struktur kotak seperti itu$
untuk mem.eri nilai panjang dan
le.ar +anya dengan memanggil
5ungsi Setkuran34
tkotak
kotakA
ntuk mem.eri nilai ukuran kotak
terse.ut$ kita dapat menggunakan
perinta+6perinta+ ini:
kotak!pan-ang
' 10A
kotak!ebar
' +A
ntuk mem.eri nilai panjang dan
le.ar kotak$ sala+ satu caranya
adala+ seperti diatas2 Aara lain untuk
mem.eri nilai panjang dan le.ar
adala+ dengan mem.entuk suatu
5ungsi2 Karena 5ungsi ini +anya
digunakan untuk mem.eri nilai data
panjang dan le.ar suatu kotak$
tentunya 5ungsi ini k+usus milik o.jek
kotak$ se+ingga +arus dianggap
se.agai truktur kotak2 ABB se.agai
.a+asa pemrograman dapat
mende5inisikan anggota tipe struktur
yang .erupa 5ungsi2 Dengan
menam.a+ 5ungsi terse.ut$ maka
kotak!Set$kuran(10,+)A
Selain punya ukuran panjang
dan le.ar$ kotak juga mempunyai
keliling dan luas2 Dengan demikian$
kita dapat memasukkan 5ungsi untuk
meng+itung keliling dan luas ke
dalam struktur kotak2 Se.agai
catatan$ .a+wa de5inisi 5ungsi yang
menjadi anggota struktur dapat
ditempatkan di luar tu.u+ struktur2
Dengan cara ini maka deklarasi
struktur kotak menjadi seperti .erikut:
&tru>t tkotak
6
doube pan-angA
doube ebarA
3oid Set$kuran(doube p-, doube
b)A
doube Keiing()A
doube Fua&()A
8A
tkotak kotakA
2008 | Direktorat Pembinaan SMK
?(@
Bahasa Pemrograman %lass
Alass merupakan struktur data
dari o.yek2 ntuk menjelaskan
tentang class$ li+at per.andingannya
dengan struktur2 ntuk le.i+ jelasnya
mengenai keduanya per+atikan
conto+ program di .awa+ ini:
Program "?2?
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=in>ude ?&tring!(@
*+i! "#e+(")e &tdA
+t.*)t &i&PaS)K
6
)h".
ni&N1"OA
)h".
na%aN"*OA
it u%urA
8A
5,i% %ain()
6
&i&PaS)K &i&Pak&1A
&tr>py(&i&Pak&1!ni&,
B7**1#0,0B)A
&tr>py(&i&Pak&1!na%a,
BSupraptoB)A &i&Pak&1!u%ur
' "0A
>out ?? &i&Pak&1!ni& ?? endA
>out ?? &i&Pak&1!na%a
?? endA >out ??
&i&Pak&1!u%ur ?? endA
get>(()A
.et*. 0A
8
Setela+ program di atas dicompile$
error tidak ada2 !erikutnya struktur di
atas kita ganti dengan class$
se+ingga program menjadi seperti
.erikut di.awa+ ini:
Program "?2'
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=in>ude ?&tring!(@
*+i! "#e+(")e &tdA
)-"++ &i&PaS)K
?#-
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
6
)h". ni&N1"OA )h". na%aN"*OA
it u%urA
8A
5,i% %ain()
6
&i&PaS)K &i&Pak&1A
&tr>py(&i&Pak&1!ni&,
B7**1#0,0B)A
&tr>py(&i&Pak&1!na%a,
BSupraptoB)A &i&Pak&1!u%ur
' "0A
>out ?? &i&Pak&1!ni& ??
endA >out ??
&i&Pak&1!na%a ?? endA
>out ?? &i&Pak&1!u%ur
?? endA get>(()A
.et*. 0A
8
Setela+ program di atas di
compile$ ternyata error muncul2 Error
terse.ut muncul karena class tidak
dikenal dalam main342 Kesala+an ini
sekaligus menunjukkan per.edaan
dengan struktur2 Agar program di
atas dapat dicompile$ ditam.a+kan
perinta+ pu.lic diikuti dengan tkita
titik dua 3:4$ se+ingga programnya
menjadi:
Program "?2>
=in>ude ?>onio!(@
=in>ude ?io&trea%@
=in>ude ?&tring!(@
*+i! "#e+(")e &tdA
)-"++ &i&PaS)K
6
)h". ni&N1"OA )h". na%aN"*OA
it u%urA
8A
5,i% %ain()
6
&i&PaS)K &i&Pak&1A
&tr>py(&i&Pak&1!ni&,
B7**1#0,0B)A
&tr>py(&i&Pak&1!na%a, B
&upraptoB)A &i&Pak&1!u%ur '
"0A
2008 | Direktorat Pembinaan SMK
?#"
Bahasa Pemrograman %lass
>out ?? &i&Pak&1!ni& ??
endA >out ??
&i&Pak&1!na%a ?? endA
>out ?? &i&Pak&1!u%ur
?? endA get>(()A
.et*. 0A
8
Perinta+ P!:7A menyatakan
.a+wa perinta+6perinta+ yang ada di
.awa+nya dapat diakses diluar class2
Perinta+ P!:7A merupakan
termasuk access specifier 3penentu
akses42 Selain P!:7A$ terdapat
perinta+ lain yang termasuk access
speci5ier$ yaitu PR7DATE2
Program "?2(
in>ude ?io&trea%@
=in>ude ?>onio!(@
=in>ude ?&tring!(@
*+i! "#e+(")e &tdA
)-"++ &i&PaS)K
6 (.i5"teM
)h".
ni&N1"OA
)h".
na%aN"*OA
it u%urA
8A
it %ain()
6
&i&PaS)K &i&Pak&1A
&tr>py(&i&Pak&1!ni&,
B7**1#0,0B)A
&tr>py(&i&Pak&1!na%a,
B&upraptoB)A &i&Pak&1!u%ur
' "0A
>out ?? &i&Pak&1!ni& ??
endA >out ??
&i&Pak&1!na%a ?? endA
>out ?? &i&Pak&1!u%ur
?? endA get>(()A
.et*. 0A
8
Setela+ dicompile$ error yang
sama dengan se.elumnya muncul
yaitu class tidak dapat diakses di
main342 Perinta+ PR7DATE mem.eri
pengertian .a+wa perinta+ yang ada
di.awa+nya +anya dapat diakses
dalam class terse.ut$ yang dalam +al
ini adala+ class siswaS*K2 varia.el
?#%
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
nis$ nama$ dan umur dalam class
siswaS*K dise.ut data anggota2
Selain data anggota$ kita juga dapat
menam.a+kan 5ungsi anggota2
Program "?2(
=in>ude ?io&trea%@
=in>ude ?>onio!(@
=in>ude ?&tring!(@
*+i! "#e+(")e &tdA
)-"++ &i&PaS)K
6
(.i5"te M
)h". ni&N1"OA
)h". na%aN"*OA
it u%urA
(*b-i) M
5,i% ini&iai&a&i()h". EKISSIS, )h". EKA)ASIS, it $)$/SIS)
6
&tr>py(ni&, KISSIS)A
&tr>py(na%a,
KA)ASIS)A u%ur '
$)$/SISA
8
5,i% ta%pikan()
6
>out ?? ni& ??
endA >out ??
na%a ?? endA
>out ?? u%ur ??
endA
8
8A
5,i% %ain()
6
&i&PaS)K &i&Pak&1A
&i&Pak&1!ini&iai&a&i(B7**1#0,0B,BSupr
aptoB,"0)A &i&Pak&1!ta%pikan()A
8
Pada program di atas$ 5ungsi
inisialisasi34 dan tampilkan34
merupakan 5ungsi anggota dari class
siswaS*K2 Keduanya di.uat pu.lic
karena akan diakses dari luar class$
sedangkan data anggotanya 3nis$
2008 | Direktorat Pembinaan SMK
?#=
Bahasa Pemrograman %lass
nama$ umur4 di.uat private2 *ungkin
Kita .erpikir mengapa program
terak+ir terlalu panjang$ pada+al
akan diperole+ +asil yang sama
dengan program se.elumnya2
Program "?2#
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
=in>ude ?&tring!(@
>a&&
&i&
6
pri3ate M
>(ar ni&N1"OA
>(ar
na%aN"*OA
int u%urA
pubi> M
3oid ini&iai&a&i(>(ar EKISSIS,>(ar EKA)ASIS,int $)$/SIS)A
3oid ta%pikan()A
8A
3oid %ain()
6
&i& &i&Pak&1A
&i&Pak&1!ini&iai&a&i(B7**1#0,0B,BSupr
aptoB,"0)A &i&Pak&1!ta%pikan()A
8
3oid &i&MMini&iai&a&i(>(ar EKISSIS, >(ar EKA)ASIS, int $)$/SIS)
6
&tr>py(ni&, KISSIS)A
&tr>py(na%a,
KA)ASIS)A u%ur '
$)$/SISA
8
3oid &i&MMta%pikan()
6
>out ?? ni& ??
endA >out ??
na%a ?? endA
>out ?? u%ur ??
endA
8
?#?
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
Aara kedua inila+ yang sering dipili+
ole+ para programmer ABB2 !erikut
ini conto+6conto+ program yang
meman5aatkan class
Program "?2@2 *enyimpan data n siswaS*K kemudian menampilkannya2
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
=in>ude ?&tdib!(@
>a&& &i&PaS)K
6
pubi>M
>(ar ni&N"0OA
>(ar
na%aN*0OA
int u%urA
3oid ta%pikan(>(ar EKISSIS, >(ar EKA)ASIS, int $)$/SIS)
6
>out ?? BKIS SIS M B ?? KISSIS ?? endA
>out ?? BKA)A SIS M B ?? KA)ASIS ?? endA
>out ?? B$)$/ M B ?? $)$/SIS ?? endA
8
8A
3oid %ain()
6
&i&PaS)K &i&Pak&1N*0OA //
tipe data array >(ar te%pN10OA int n, iA
>r&>r()A
>out ?? B?? <K4/I DA4A SISTAS)K D1 B ?? endA
>out ?? endA
>out ?? BCu%a(
&i&PaS)K M BA
>in!getine(te%p,
&iZeoH(te%p))A n '
atoi(te%p)A
Hor (i'0Ai?'n;1Ai::)
6
>out ?? BDA4A ; B ?? i:1 ?? endA >out
?? BKIS SISTAS)K M B A
>in!getine(&i&Pak&1NiO!ni&,
&iZeoH(&i&Pak&1NiO!ni&))A >out ?? BKA)A
SISTAS)K M B A
>in!getine(&i&Pak&1NiO!na%a, &iZeoH(&i&Pak&1NiO!na%a))A
>out ?? B$)$/ M BA
>in!getine(te%p, &iZeoH(te%p))A
2008 | Direktorat Pembinaan SMK
?#'
Bahasa Pemrograman %lass
&i&Pak&1NiO!u%ur ' atoi(te%p)A
>out ?? endA
8
// tampilkan semua data
>out ?? B;;;;;;;;;;;;;;;;;;;;;;;;;B
?? endA >out ?? BDA4A \AK0
)AS$KB ?? endA >out ??
B;;;;;;;;;;;;;;;;;;;;;;;;;B ?? endA
Hor (i'0Ai?'n;1Ai::)
6
>out ?? BDA4A SISTAS)K B ?? i:1 ?? endA
&i&Pak&1NiO!ta%pikan(&i&Pak&1NiO!ni&,
&i&Pak&1NiO!na%a, &i&Pak&1NiO!u%ur)A
>out ?? endA
8
get>(()A
8
"*$+$ .on'tru/tor %an %e'tru/tor
8.jek .iasanya memerlukan
inisialisasi varia.el atau menentukan
memori dinamik selama proses untuk
mencapai +asil ak+ie yang
di+arapkan dan meng+indari
pengem.alian nilai yang tidak
di+arapkan2 ntuk mengatasinya
dapat digunakan 5ungsi spesial:
constructor$ yang dapat
dideklarasikan dengan pem.erian
nama 5ungsi dengan nama yang
sama untuk class2 <ungsi dari
constructor ini akan dipanggil secara
otomatis ketika instance .aru dari
se.ua+ class di.uat2 Pe+atikan
conto+ program di.awa+ ini:
Program "?2"-
=in>ude ?io&trea%@
>a&&
C/e>tange
6 int Pidt(,
(eig(tA pubi>M
C/e>tange
(int,int)A
int area (3oid) 6return
(Pidt(E(eig(t)A8
8
A
C/e>tangeMMC/e>tange (int a,
int b) 6
Pidt( ' aA
(eig(t ' bA
8
?#>
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
int %ain () 6
C/e>tange re>t
(1,#)A C/e>tange
re>tb (*,,)A
>out ?? Bre>t areaM B ?? re>t!area() ?? endA
>out ?? Bre>tb areaM B ?? re>tb!area() ?? endA
8
Keluaran program diatas adala+ se.agai .erikut:
re>t areaM 1" re>tb areaM 10
9asil dari conto+ diatas sama
seperti conto+ se.elumnya2 Dalam
+al ini$ +anya menggantikan 5ungsi
'et:Balue'$ yang suda+ tidak ada
dengan class constructor2 Per+atikan
cara parameter di.erikan ke
constructor pada saat instance class
di.uat:
C/e>tange re>t (1,#)A
C/e>tange re>tb
(*,,)A
Destructor .er5ungsi ke.alikan
dari construktor2 Secara otomatis
akan dipanggil jika o.jek di keluarkan
dari memory$ ataupun karena
ke.eradaannya tela+ selesai
3misalnya: jika dide5inisikan se.ua+
o.jek local dalam 5unction dan
5unction terse.ut selesai4 atau karena
merupakan o.jek yang secara
dinamis ditetapkan dan dikeluarkan
dengan menggunakan operator
%elete2 Destuctor +arus mempunyai
nama yang sama dengan class$
di.eri awalan tile 3d4 dan tidak
mengem.alikan nilai2 ntuk le.i+
jelasnya per+atikan conto+ di.awa+
ini:
Program "?2""
=in>ude ?io&trea%!(@
>a&&
C/e>tange
6 int EPidt(,
E(eig(tA pubi>M
C/e>tange (int,int)A
eC/e>tange ()A
int area (3oid) 6return (EPidt( E E(eig(t)A8
8A
C/e>tangeMMC/e>tange (int a, int b) 6
Pidt( ' neP intA
(eig(t ' neP intA
EPidt( ' aA
E(eig(t ' bA
8
C/e>tangeMMeC/e>tange () 6
deete Pidt(A
2008 | Direktorat Pembinaan SMK
?#(
Bahasa Pemrograman %lass
deete (eig(tA
8
int %ain () 6
C/e>tange re>t (1,#), re>tb (*,,)A
>out ?? Bre>t areaM B ?? re>t!area() ?? endA
>out ?? Bre>tb areaM B ?? re>tb!area() ?? endA
return 0A
8
Keluaran program adala+ se.agai .erikut :
re>t areaM
1" re>tb
areaM 10
"*$,$ OBerloa%ing .on'tru/tor
Sama +alnya seperti 5ungsi$
constructor juga dapat mempunyai
nama yang sama tetapi mempunyai
jumla+ dan tipe yang .er.eda pada
parameternya2 Pada saat
pemanggilan kompiler akan meng6
eksekusi yang sesuai pada saat
o.jek class di deklarasikan2
Pada kenyataannya$ ketika
dideklarasikan se.ua+ class dan
tidak dise.utkan constructornya$
maka kompiler secara otomatis akan
mengasumsikan dua constructor
overloaded 3ade5ault constructora dan
acopy constructora42
Per+atikan conto+ di.awa+ ini:
>a&& C<Ya%pe 6
pubi>M
int a,b,>A
3oid %utipy (int n, int %) 6 a'nA
b'%A
>'aEbA 8A
8A
)ika tanpa constructor$ Kompiler
secara otomatis mengasumsikan
anggota6anggota 5ungsi constructor
.erikut :
f Empty constructor *erupakan
constructor tanpa parameters
dide5inisikan se.agai nop 3.lok
instruksi kosong42 Tidak
melakukan apapun2
C<Ya%peMMC<Ya%pe () 6 8A
f Aopy constructor *erupakan
constructor dengan satu
parameter dengan tipe yang sama
yang ditetapkan untuk setiap
anggota varia.le class nonstatik
o.jek yang disalin dari o.jek
se.elumnya2
C<Ya%peMMC<Ya%pe (>on&t
C<Ya%peS
r3) 6
a'r3!aA b'r3!bA >'r3!>A
8
9al yang penting untuk diketa+ui
adala+$ .a+wa kedua constructor
de5ault: empty construction dan copy
constructor ada jika tidak ada
constructor lain yang dideklarasikan2
)ika terdapat constructor dengan
sejumla+ parameter dideklarasikan$
maka tidak satupun dari constructors
de5ault ini ada2
?##
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
Program "?2"%
=in>ude ?io&trea%!(@
>a&& C/e>tange 6
int Pidt(,
(eig(tA
pubi>M
C/e>tange ()A
C/e>tange (int,int)A
int area (3oid) 6return (Pidt(E(eig(t)A8
8A
C/e>tangeMMC/e>tange () 6
Pidt( ' *A
(eig(t ' *A
8
C/e>tangeMMC/e>tange (int a, int b) 6
Pidt( ' aA
(eig(t ' bA
8
int %ain ()
6 C/e>tange
re>t (1,#)A
C/e>tange
re>tbA
>out ?? Bre>t areaM B ?? re>t!area() ?? endA
>out ?? Bre>tb areaM B ?? re>tb!area() ?? endA
8
Keluaran program diatas adala+ se.agai .erikut:
re>t areaM 1" re>tb areaM "*
pada conto+ program diatas
re/tb dideklarasikan tanpa
parameter$ se+ingga diinisialisasikan
dengan constructor tanpa
parameters$ yang mendeklarasikan
Gi%th dan height dengan nilai +2
Per+atikan jika dideklarasikan o.jek
.aru dan tidak di.erikan parameter
maka tidak diperlukan tkita kurung 01:
C/e>tange re>tbA // right
C/e>tange re>tb()A // ?rong-
"*$-$ Menuli' .la''
Se.elum menulis class$ langka+
pertama pertim.angkan dimana letak
atau programer akan menggunakan
class dan .agaimana class terse.ut
akan digunakan2 Pertim.angkan pula
nama yang tepat dan tuliskan seluru+
in5ormasi atau properti yang ingin kita
isi pada class2 )angan sampai terlupa
untuk menuliskan secara urut method
2008 | Direktorat Pembinaan SMK
?#@
Bahasa Pemrograman %lass
yang akan Kita gunakan dalam class2
Dalam pende5inisian class$ dituliskan:
?%odi5er@ >a&&
?na%e@ 6
?attributeDe>arati
on@E
?>on&tru>torDe>arat
ion@E
?%et(odDe>arati
on@E
8
dimana: Tmodi5ierU adala+ se.ua+
access modifier$ yang dapat
dikom.inasikan dengan tipe modifier
lain2
Pada .agian ini$ kita akan
mem.uat se.ua+ class yang .erisi
record dari siswa2 )ika kita tela+
mengidenti5ikasikan tujuan dari
pem.uatan class$ maka dapat
dilakukan em.erian nama yang
sesuai2 ,ama yang tepat pada class
ini adala+ StudentRecord2 ntuk
mende5inisikan class$ kita tuliskan :
pubi> >a&&
St*%et2e),.%
6
//area penui&an
kode &ean-utnya
8
Dimana$
Gubi> Class ini dapat diak&e& dari uar package
Ca&& $ey?ord yang digunakan untuk pe%buatan
class ACa3a) Student/e>or
d
Identi5er yang %en-ea&kan class
Dalam pendeklarasian atribut,
kita tuliskan :
?%odi5er@ ?type@
?na%e@ N'
?deHautW3au
e@OA
:angka+ selanjutnya adala+
mengurutkan atri.ut yang akan
diisikan pada class+ ntuk setiap
in5ormasi$ urutkan juga tipe data yang
yang tepat untuk digunakan2
Aonto+nya$ Kita tidak mungkin
menginginkan untuk menggunakan
tipe data integer untuk nama siswa$
atau tipe data string pada nilai siswa2
!erikut ini adala+ conto+ in5ormasi
yang akan diisikan pada class
StudentRecord :
na%e
; String addre&&
; String age
; Int
%at( grade ;
doube engi&( grade
; doube &>ien>e grade
; doube a3erage grade
; doube
Kita dapat menam.a+kan
in5ormasi lain jika diperlukan2 )ika kita
tela+ menuliskan seluru+ atri.ut yang
akan diisikan pada class$ selanjutnya
kita akan menuliskannya pada kode2
)ika kita menginginkan .a+wa atri.ut
E atri.ut terse.ut adala+ unik untuk
setiap ob'ect 3dalam +al ini untuk
setiap siswa4$ maka kita +arus
mendeklarasikannya se.agai
instance variable+ Per+atikan conto+
di.awa+ ini:
pubi> >a&&
St*%et2e),.%
6
(.i5"te String
na%eA
(.i5"te String
addre&&A
?@-
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
(.i5"te int ageA
6
(.i5"te doube
%at(0radeA (.i5"te
doube engi&(0radeA
(.i5"te doube
&>ien>e0radeA (.i5"te
doube a3erageA
(riBate disini menjelaskan
.a+wa varia.el terse.ut +anya dapat
diakses ole+ class itu sendiri2 8.ject
lain tidak dapat menggunakan
pri3ate String
na%eA pri3ate
String addre&&A
pri3ate int ageA
pri3ate doube %at(0radeA
pri3ate doube
engi&(0radeA pri3ate
doube &>ien>e0radeA
pri3ate doube a3erageA
pri3ate &tati> int &tudentCountA
//area penui&an kode
varia.el terse.ut secara langsung2
Kita akan mem.a+as tentang
kemampuan akses pada
pem.a+asan selanjutnya2 Disamping
instance varia.le$ kita juga dapat
mendeklarasikan class varia.le atau
varia.el yang dimiliki class
sepenu+nya2 ,ilai pada varia.el ini
sama pada semua o.ject di class
yang sama2
Anggapla+ kita menginginkan
jumla+ dari siswa yang dimiliki dari
seluru+ class$ kita dapat
mendeklarasikan satu static varia.le
yang akan menampung nilai terse.ut2
Kita .eri nama varia.el terse.ut
dengan nama studentAount2 !erikut
penulisan static varia.le:
pubi> >a&& St*%et2e),.%
6
//area dekara&i instance
ariables
(.i5"te +t"ti) it
+t*%etC,*tV
//area penui&an kode
&ean-utnya
8
Kita gunakan )eyword 8 9static9 untuk
mendeklarasikan .a+wa varia.el
terse.ut adala+ static2 *aka
keseluru+an kode yang di.uat terli+at
se.agai .erikut :
pubi> >a&& St*%et2e),.%
&ean-utnya
8
Se.elum kita mem.a+as method
apa yang akan dipakai pada class$
mari kita er+atikan penulisan method
secara umum2 Dalam pendeklarasian
method$ kita tuliskan :
?%odi5er@ ?return4ype@
?na%e@(?para%eter@E) 6
?&tate%ent@E
8
dimana$
?%odi5er@ dapat
%enggunakan beberapa
modi>er yang berbeda
?return4ype@ dapat berupa
&euru( tipe data, ter%a&uk oid
?na%e@ identi>er ata& class
?para%eter@ MM'
?tipeWpara%eter@
?na%aWpara%eter@N,O
ntuk mengimplementasikan
enkapsulasi$ kita tidak menginginkan
sem.arang o.ject dapat mengakses
data kapan saja2 ntuk itu$ kita
deklarasikan atri.ut dari class
se.agai private2 ,amun$ ada kalanya
dimana kita menginginkan o.ject lain
untuk dapat mengakses data private2
Dalam +al ini kita gunakan accessor
met+ods2
2008 | Direktorat Pembinaan SMK
?@"
Bahasa Pemrograman %lass
A//e''or Metho%' digunakan
untuk mem.aca nilai varia.el pada
class$ .aik .erupa instance maupun
static2 Se.ua+ accessor met+od
umumnya dimulai dengan penulisan
getNnama!n'tan/eHariable[2
*et+od ini juga mempunyai se.ua+
return value2 Se.agai conto+$ kita
ingin menggunakan accessor met+od
untuk dapat mem.aca nama$ alamat$
nilai .a+asa 7nggris$ *atematika$ dan
ilmu pasti dari siswa2 Per+atikan
sala+ satu conto+ implementasi
accessor met+od2
pubi> >a&&
Student/e>ord
6
pri3ate String na%eA
M
M
pubi> String getKa%e()6
return na%eA
8
8
dimana$
pubi> ; )en-ea&kan ba(Pa
method ter&ebut dapat diak&e&
dari object uar >a&&
String ; 4ipe data return
alue dari method ter&ebut
bertipe String getKa%e ;
Ka%a dari method
() ; )en-ea&kan ba(Pa
method tidak %e%iiki
para%eter apapun
Pernyataan .erikut$
return
na%eA
dalam program kita menkitakan
akan ada pengem.alian nilai dari
nama instance varia.le ke
pemanggilan met+od2 Per+atikan
.a+wa return type dari met+od +arus
sama dengan tipe data seperti data
pada pernyataan return2 Kita akan
mendapatkan pesan kesala+an
se.agai .erikut .ila tipe data yang
digunakan tidak sama :
Student/e>ord!-a3aM1#M
i),#("tib-e tF(e+
Hound M
int
reXuiredM
-a3a!ang!Stri
ng return
ageA
Q
1 error
Aonto+ lain dari penggunaan
accessor met+od adala+ getAverage$
pubi> >a&&
Student/e>ord
6
pri3ate String na%eA
M
M
pubi> doube getA3erage()6
doube re&ut ' 0A
re&ut '
(
%at(0rade:engi&(0rade:&>ie
n>e0rade
)/1
A
return re&utA
8
8
*et+od getABerage01
meng+itung rata E rata dari = nilai
siswa dan meng+asilkan nilai return
value dengan nama result2
!agaimana jika kita meng+endaki
o.ject lain untuk mengu.a+ dataG
Yang dapat kita lakukan adala+
mem.uat met+od yang dapat
mem.eri atau mengu.a+ nilai
varia.le dalam class$ .aik itu .erupa
instance maupun static2
?@%
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
*et+od semacam ini dise.ut
dengan mutator met+ods2 Se.ua+
mutator met+od umumnya tertulis
'etNnama!n'tan/eHariabel[2 *ari
kita per+atikan sala+ satu dari
implementasi mutator met+od :
pubi> >a&& Student/e>ord
6
pri3ate String na%eA
M
M
pubi> 3oid &etKa%e(
String te%p )6
na%e ' te%pA
8
8
dimana$
pubi> ; )en-ea&kan ba(Pa
method ini dapat dipanggi
object uar >a&&
3oid ; <ethod ini tidak
%eng(a&ikan
return alue
&etKa%e ; Ka%a dari method
(String te%p) ; Gara%eter
yang akan digunakan pada
method
Pernyataan .erikut :
na%e ' te%pA
mengidenti5ikasi nilai dari temp
sama dengan name dan mengu.a+
data pada instance varia.le name2
Perlu diingat .a+wa mutator met+ods
tidak meng+asilkan return value2
,amun .erisi .e.erapa argumen dari
program yang akan digunakan ole+
met+od2 Kita dapat mempunyai
.anyak return values pada se.ua+
met+od selama mereka tidak pada
.lok program yang sama2 Kita juga
dapat menggunakan konstanta
disamping varia.el se.agai return
value2 Se.agai conto+$ per+atikan
met+od .erikut ini:
pubi> String
getKu%berInTord&( int nu% )
6
String deHautKu% ' BZeroBA
iH( nu% '' 1 )6
.et*.
Y,eYV
8
e&e iH( nu% '' ")6
.et*.
YtG,YV
8
return deHautKu%A
8
Kita menggunakan static met+od
untuk mengakses static varia.le
studentAount2
pubi> >a&& Student/e>ord
6
pri3ate &tati> int &tudentCountA
pubi> &tati>
int
getStudentCount()
6
return &tudentCountA
8
8
dimana$
pubi> ; )en-ea&kan ba(Pa
method ini dapat diak&e& dari
object uar >a&& &tati> ; <ethod
ini adaa( static dan
pe%anggiannya %enggunakan
Nna%a>a&&O!Nna%a)et(odO!
%i&anyaM&tudent/e>ord!getStudentC
oun
t
Int ; 4ipe return dari method5
)engindika&ikan method
ter&ebut (aru& %e%punyai
return alue berupa integer
pubi> ; )en-ea&kan ba(Pa
method ini dapat diak&e& dari
object uar >a&&
getStudentCount ; Ka%a dari
method
() ; <ethod ini tidak %e%iiki
para%eter apapun
2008 | Direktorat Pembinaan SMK
?@=
Bahasa Pemrograman %lass
Pada deklarasi di atas$ met+od
getStudentAount34 akan selalu
meng+asilkan return value - jika kita
tidak mengu.a+ apapun pada kode
program untuk mengatur nilainya2
Kita akan mem.a+as pengu.a+an
nilai dari studentAount pada
pem.a+asan constructor2 !erikut ini
adala+ kode untuk class
StudentRecord :
Program "?2"=
pubi> >a&& Student/e>ord
6
pri3ate String
na%eA pri3ate
String addre&&A
pri3ate int ageA
pri3ate doube
%at(0radeA pri3ate
doube engi&(0radeA
pri3ate doube
&>ien>e0radeA pri3ate
doube a3erageA
pri3ate &tati> int &tudentCountA
/EE
E )eng(a&ikan na%a dari Si&Pa
E/
pubi> String getKa%e()6
return
na%eA
8
/EE
E )enguba( na%a &i&Pa
E/
pubi> 3oid &etKa%e( String te%p )6
na%e ' te%pA
8
// area penui&an kode ain
/EE
E )eng(itung ratadrata niai )ate%atik, E E I%u Ga&ti
E/
pubi> doube getA3erage()6
doube re&ut ' 0A
re&ut ' ( %at(0rade:engi&(0rade:&>ien>e0rade )/1A
return re&utA
8
/EE
E )eng(a&ikan -u%a( instance Student/e>ord
E/
?@?
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
pubi> &tati> int
getStudentCount()6
return
&tudentCountA
8
8
"*$2$ ReCeren/e this
Re5erence this digunakan untuk
mengakses instance varia.le yang
di.iaskan ole+ parameter2 ntuk
pema+aman le.i+ lanjut$ mari kita
per+atikan conto+ pada method
setAge2 Dimisalkan kita mempunyai
kode deklarasi .erikut pada method
setAge2
kita tela+ menentukan nilai dari
parameter age kepada parameter itu
sendiri2 9al ini sangat tidak kita
ke+endaki pada kode program kita2
ntuk meng+indari kesala+an
semacam ini$ kita gunakan metode
re5erensi this2 ntuk menggunakan
tipe re5erensi ini$ kita tuliskan :
pubi> 3oid &etAge( int
age )6
age ' ageA //SAFA2___
8
,ama parameter pada deklarasi ini
adala+ age$ yang memiliki penamaan
yang sama dengan instance variable
age2 Parameter age adala+ deklarasi
terdekat dari method$ se+ingga nilai
dari parameter terse.ut akan
digunakan2 *aka pada pernyataan :
age '
ageA
t(i&!?na%aIn&tan>eLar
iabe@
Se.agai conto+$ kita dapat menulis
ulang kode +ingga tampak se.agai
.erikut:
pubi> 3oid &etAge( int
age )6
thi+K"!e =
"!eV
8
*et+od ini akan mere5erensikan
nilai dari parameter age kepada
instance varia.le dari o.ject
StudentRecord2
"*$4$ OBerloa%ing Metho%
Dalam class yang kita .uat$
kadangkala kita menginginkan untuk
mem.uat met+od dengan nama yang
sama namun mempunyai 5ungsi yang
.er.eda menurut parameter yang
digunakan2 Kemampuan ini
dimungkinkan dalam pemrograman
)ava$ dan dikenal se.agai
overloading met+od2 8verloading
met+od mengijinkan se.ua+ met+od
dengan nama yang sama namun
memiliki parameter yang .er.eda
se+ingga mempunyai implementasi
dan return value yang .er.eda pula2
Daripada mem.erikan nama
yang .er.eda pada setiap
pem.uatan met+od$ overloading
met+od dapat digunakan pada
operasi yang sama namun .er.eda
dalam implementasinya2 Se.agai
2008 | Direktorat Pembinaan SMK
?@'
Bahasa Pemrograman %lass
conto+$ pada class StudentRecord
kita menginginkan se.ua+ met+od
yang akan menampilkan in5ormasi
tentang siswa2 ,amun kita juga
menginginkan operasi penampilan
data terse.ut meng+asilkan output
yang .er.eda menurut parameter
yang digunakan2 )ika
pada saat kita mem.erikan
se.ua+ parameter .erupa string$
+asil yang ditampilkan adala+ nama$
alamat dan umur dari siswa$ sedang
pada saat kita mem.erikan = nilai
dengan tipe dou.le$ kita
menginginkan met+od terse.ut untuk
menampilkan nama dan nilai dari
siswa2 ntuk mendapatkan +asil
yang sesuai$ kita gunakan
overloading met+od di dalam
deklarasi class StudentRecord2
Program "?2"?
pubi> 3oid (.itR St.i! te#( S6
Sy&te%!out!printn(BKa%eMB :
na%e)A
Sy&te%!out!printn(BAddre&&MB :
addre&&)A
Sy&te%!out!printn(BAgeMB : age)A
8
pubi> 3oid (.itR%,*b-e e9."%eT %,*b-e #9."%eT %,*b-e
+9."%eS
Sy&te%!out!printn(BKa%eMB : na%e)A
Sy&te%!out!printn(B)at( 0radeMB :
%0rade)A Sy&te%!out!printn(B<ngi&(
0radeMB : e0rade)A
Sy&te%!out!printn(BS>ien>e 0radeMB :
&0rade)A
8
)ika kita panggil pada method utama .main* :
Program "?2"'
pubi> &tati> 3oid %ain( StringNO arg& )
6
Student/e>ord anna/e>ord ' neP
Student/e>ord()A
anna/e>ord!&etKa%e(BAnnaB)A
anna/e>ord!&etAddre&&(BG(iippine&B)A
anna/e>ord!&etAge(1*)A
anna/e>ord!&et)at(0rade(80)A
anna/e>ord!&et<ngi&(0rade(7*!*)A
anna/e>ord!&etS>ien>e0rade(100)A
//o3eroaded %et(od&
anna/e>ord!print( anna/e>ord!getKa%e
() )A anna/e>ord!print(
anna/e>ord!get<ngi&(0rade(),
anna/e>ord!get)at(0rade(),
anna/e>ord!getS>ien>e0rade())A
8
Kita akan mendapatkan output pada panggilan pertama se.agai .erikut :
?@>
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
Ka%eMAnna
Addre&&MG(iippi
ne& AgeM1*
Kemudian akan di+asilkan output se.agai .erikut pada panggilan kedua :
Ka%eMAnna
)at( 0radeM80!0
<ngi&( 0radeM7*!*
S>ien>e 0radeM100!0
)angan lupakan .a+wa overloaded
method memiliki property se.agai
.erikut :
"2 ,ama yang sama
%2 Parameter yang .er.eda
=2 ,ilai kem.alian 3return4 .isa sama
ataupun .er.eda
Tela+ tersirat pada pem.a+asan
se.elumnya$ Aonstructor sangatla+
penting pada pem.entukan se.ua+
ob'ect2 Aonstructor adala+ method
dimana seluru+ inisialisasi ob'ect
ditempatkan2 !erikut ini adala+
property dari Aonstructor :
"2 Aonstructor memiliki nama yang
sama dengan class
%2 Se.ua+ Aonstructor mirip dengan
method pada umumnya$ namun
+anya in5ormasi 6 in5ormasi .erikut
yang dapat ditempatkan pada
header se.ua+ constructor$ scope
atau identi5ikasi pengaksesan
3misal: pu.lic4$ nama dari
konstuktor dan parameter2
=2 Aonstructor tidak memiliki return
value
?2 Aonstructor tidak dapat dipanggil
secara langsung$ namun +arus
dipanggil dengan menggunakan
operator ne pada pem.entukan
se.ua+ class2
ntuk mendeklarasikan constructor$
kita tulis$
?%odi5er@ ?>a&&Ka%e@
(?para%eter@E)
6
?&tate%ent@E
8
Setiap class memiliki de5ault
constructor2 Se.ua+ de5ault
constructor adala+ constructor yang
tidak memiliki parameter apapun2
)ika se.ua+ class tidak memiliki
constructor apapun$ maka se.ua+
de5ault constructor akan di.entuk
secara implisit: Se.agai conto+$ pada
class StudentRecord$ .entuk de5ault
constructor akan terli+at seperti
di.awa+ ini :
pubi> Student/e>ord()
6
//area penui&an kode
8
Seperti tela+ kita .a+as
se.elumnya$ se.ua+ constructor juga
dapat di.entuk menjadi o!erloaded2
Dapat dili+at pada conto+ se.agai
.erikut :
Program "?2">
pubi> Student/e>ord()6
2008 | Direktorat Pembinaan SMK
?@(
Bahasa Pemrograman %lass
//area ini&iai&a&i kodeA
8
pubi> Student/e>ord(String te%p)6
t(i&!na%e ' te%pA
8
pubi> Student/e>ord(String na%e, String addre&&)6
t(i&!na%e ' na%eA
t(i&!addre&& ' addre&&A
8
pubi> Student/e>ord(doube %0rade, doube e0rade, doube &0rade)6
%at(0rade '
%0radeA
engi&(0rade '
e0radeA
&>ien>e0rade '
&0radeA
8
ntuk menggunakan constructor$ kita gunakan kode E kode se.agai .erikut :
pubi> &tati> 3oid %ain( StringNO arg& )
6
//%e%buat 1 ob-ek
Student/e>ord anna/e>ord'neP Student/e>ord(BAnnaB)A
Student/e>ord bea(/e>ord'neP
Student/e>ord(BBea(B,BG(iippine&B)A Student/e>ord
>ri&/e>ord'neP Student/e>ord(80,70,100)A
//area penui&an kode &ean-tunya
8
Se.elum kita lanjutkan$ mari kita
per+atikan kem.ali deklarasi varia.el
static studentAount yang tela+ di.uat
se.elumnya2 Tujuan deklarasi
studentAount adala+ untuk
meng+itung jumla+ ob'ect yang
di.entuk pada class StudentRecord2
)adi$ apa yang akan kita lakukan
selanjutnya adala+ menam.a+kan
nilai dari studentAount setiap kali
setiap pem.entukan ob'ect pada
class StudentRecord2 :okasi yang
tepat untuk memodi5ikasi dan
menam.a+kan nilai studentAount
terletak pada constructor6nya$ karena
selalu dipanggil setiap kali o.jek
ter.entuk2 Per+atikan conto+ se.agai
.erikut:
Program "?2"(
pubi> Student/e>ord()6
//etak kode ini&iai&a&i
+t*%etC,*t33V ;;#e"#b"h +t*%et
8
pubi> Student/e>ord(String te%p)6
t(i&!na%e ' te%pA
+t*%etC,*t33V ;;#e"#b"h +t*%et
?@#
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
8
pubi> Student/e>ord(String na%e, String addre&&)6
t(i&!na%e ' na%eA
t(i&!addre&& ' addre&&A
+t*%etC,*t33V ;;#e"#b"h +t*%et
8
pubi> Student/e>ord(doube %0rade, doube e0rade, doube &0rade)6
%at(0rade '
%0radeA
engi&(0rade '
e0radeA
&>ien>e0rade '
&0radeA
+t*%etC,*t33V ;;#e"#b"h +t*%et
8
Pemanggilan constructor dapat
dilakukan secara .erangkai$ dalam
arti Kita dapat memanggil constructor
di dalam constructor lain2
Pemanggilan dapat dilakukan dengan
re5erensi this"#2 Per+atikan conto+
kode se.agai .erikut :
Program "?2"#
pubi> Student/e>ord()6
t(i&(B&o%e &tringB)A
8
pubi> Student/e>ord(String te%p)6
t(i&!na%e ' te%pA
8
pubi> &tati> 3oid %ain( StringNO arg& )
6
Student/e>ord anna/e>ord ' neP Student/e>ord()A
8
Dari conto+ kode diatas$ pada
saat .aris ke "= dipanggil akan
memanggil constructor dasar pada
.aris pertama2 Pada saat .aris kedua
dijalankan$ .aris terse.ut akan
menjalankan constructor yang
memiliki parameter String pada .aris
ke6>2 !e.erapa +al yang patut
diper+atikan pada penggunaan this.*:
"2 9arus dituliskan pada .aris
pertama pada se.ua+ constructor
%2 9anya dapat digunakan pada satu
de5inisi constructor2 Kemudian
metode ini dapat diikuti dengan
kode E kode .erikutnya yang
relevan
2008 | Direktorat Pembinaan SMK
?@@
Bahasa Pemrograman %lass
"*$"5$ A//e'' Mo%iCier
Pada saat mem.uat$ mengatur
properties dan class methods$ kita
ingin untuk mengimplementasikan
.e.erapa macam larangan untuk
mengakses data2 Se.agai conto+$
jika Kita ingin .e.erapa atri.ut +anya
dapat diu.a+ +anya dengan method
tertentu$ tentu Kita ingin
menyem.unyikannya dari ob'ect lain
pada class2 Di )ADA$ implementasi
terse.ut dise.ut dengan access
modifiers. Terdapat ? macam
access modifiers$ yaitu: public,
private, protected dan default2 = tipe
akses pertama tertulis secara ekplisit
pada kode untuk mengindikasikan
tipe akses$ sedangkan yang keempat
yang merupakan tipe default$ tidak
diperlukan penulisan )eyword atas
tipe+
"*$"5$"$ Ak'e' DeCault 0Pa/kage
A//e''ibilit31
Tipe ini mensyaratkan .a+wa
+anya class dalam pac)age yang
sama yang memiliki +ak akses
ter+adap varia.el dan methods
dalam class2 Tidak terdapat )eyword
pada tipe ini2Se.agai conto+ :
pubi> >a&&
Student/e>ord
6
terse.ut .erada pada pac)age yang
sama dengan letak dari 5ile
StudentRecord2
"*$"5$&$ Ak'e' Publi/
Tipe ini mengijinkan seluru+
class member untuk diakses .aik dari
dalam dan luar class2 b'ect apapun
yang memiliki interaksi pada class
memiliki akses penu+ ter+adap
member dari tipe ini2 Se.agai conto+:
pubi> >a&&
Student/e>ord
6
//ak&e& da&ar ter(adap 3ariabe
pubi> int na%eA
//ak&e& da&ar ter(adap
%etode pubi> String
getKa%e()6
return
na%eA
8
8
Dalam conto+ ini$ varia.el name dan
method get,ame34 dapat diakses dari
ob'ect lain2
"*$"5$)$ Ak'e' Prote/te%
Tipe ini +anya mengijinkan class
member untuk diakses ole+ method
dalam class terse.ut dan elemen E
elemen subclass2 Se.agai conto+ :
//ak&e& da&ar ter(adap
3ariabe int na%eA
//ak&e& da&ar ter(adap
%etode
String getKa%e()6
return
na%eA
8
8
pubi> >a&& Student/e>ord
6
//ak&e& pada 3ariabe
prote>ted int na%eA
//ak&e& pada %etode
prote>ted String
getKa%e()6
return
na%eA
8
Pada conto+ diatas$ varia.el nama
8
dan method get,ame34 dapat diakses
dari ob'ect lain selama ob'ect
'--
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
Pada conto+ diatas$ varia.el name
6 dan method get,ame34 +anya dapat
diakses ole+ method internal class
dan subclass dari class
StudentRecord2 De5inisi subclass
akan di.a+as pada .a. selanjutnya2
"*$"5$*$ Ak'e' PriBate
8
Tipe ini mengijinkan
//ak&e& da&ar ter(adap
3ariabe pri3ate int na%eA
//ak&e& da&ar ter(adap
%etode pri3ate String
getKa%e()6
return na%eA
8
pengaksesan class +anya dapat
diakses ole+ class dimana tipe ini
di.uat2 Se.agai conto+ :
pubi> >a&&
Student/e>ord
Pada conto+ diatas$ varia.el name
dan method get,ame34 +anya dapat
diakses ole+
method internal class terse.ut2
"*$""$ .ontoh Program .la''
Kelas merupakan struktur dari
o.yek2 Deklarasi class se.agai
.erikut:
>a&&
na%aW>a&&
6 pri3ateA
;;;;;;;;;;;;
;;;;;;;;;;;;
prote>te
dM
;;;;;;;;;;;
;
;;;;;;;;;;;;
pubi>M
3oid na%aWHung&i()A
;;;;;;;;;;;;
%en>iptakan 3ariabe
obyek 3oid %ain()
6 na%aW>a&& 3ariabeWobyekA
8
3oid na%aW>a&&MMna%aWHung&i()
6 de5ni&i Hung&i 8
private N dataC5ungsi yang tidak
dapat diakses diluar kelas2 protected:
dataC5ungsi yang dapat diakses pada
kelas terse.ut dan 5riend class2
pu.lic: dataC5ungsi yang dapat
diakses diluar kelas2
8A
Program "?2"@
#in>ude?io&trea%@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
)-"++ GegaPai
6 (*b-i)M
)h". nipN1*OA
)h". na%aN"*OA
2008 | Direktorat Pembinaan SMK
'-"
Bahasa Pemrograman %lass
it u%urA
8A
5,i% %ain()
6
GegaPai
produk&i,akuntan&iA
&tr>py(produk&i!nip,
B"001""B)A
tr>py(produk&i!na%a,
BTi-ayaB)A
produk&i!u%ur' 1*A
>out??B
''''''''''''''''''''''''''''
''''''B??endA >out??BKIG ' B,
>out??produk&i!nip??endA >out??BKA)A '
B, >out??produk&i!na%a??endA
>out??B$)$/ ' B,
>out??produk&i!u%ur??endA
>out??B'''''''''''''''''''''''
'''''''''''B??endA
akuntan&i'produk&iA
>out??B KIG ' B,
>out??akuntan&i!nip??endA >out??B KA)A
' B, >out??akuntan&i!na%a??endA
>out??B$)$/ ' B,
>out??akuntan&i!u%ur??endA
>out??B'''''''''''''''''''''''
'''''''''''B??endA
8
Program "?2%-
=in>ude?io&trea%@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
)-"++
GegaPai
6 (*b-i)M
)h". nipN,OA
)h".
na%aN"*OA
it u%urA
5,i% i&idata()h".Enip, )h". Ena%a, it u%ur)
6 &tr>py(nip,
nip)A
&tr>py(na%a,na
%a)A u%ur'
u%urA 8
5,i% ta%piWbiodata()A
6
>out??endA
>out??B'''''''''''''''''''''''''''''B?
?endA
'-%
Direktorat Pembinaan SMK | 2008
%lass Bahasa Pemrorgraman
>out?? BKIG M
B??nip??endA >out?? BKA)A
M B??na%a??endA >out??
B$)$/ M
B??u%ur??endA
>out??B'''''''''''''''''''''''''''''B??
endA 8
8A
5,i%
%ain()
6
8
GegaPai Akuntan&i
>out??BIKG$4KAK DA4A
KA/\ATAKB??endA >out??BKIG(,)
' B, >in@@Akuntan&i!nipA
>out??BKA)A("0)' B,
>in@@Akuntan&i!na%aA
>out??B$)$/(") ' B,
>in@@Akuntan&i!u%urA
Akuntan&i!i&idata(Akuntan&i!nip,Akuntan&i!na%a,Akuntan&i!u
%ur)A
Akuntan&i!ta%piWbiodata()A
Program "?2%"
=in>ude?io&trea%@
=in>ude?>onio!(@
*+i! "#e+(")e &tdA
)-"++
>onto(
6 (*b-i)M
it YA
it yA
it ta%ba(()
6
>out?? ( Y : y)??endAA
.et*. 0A 8
it kai()
6
>out?? ( Y E y)??endA
8
8A
5,i% %ain()
6
>onto(
(itungA
>out??B )a&ukan Y D B,
>in@@(itung!YA >out??B
)a&ukan y D B, >in@@(itung!yA
>out??B 2a&i Y : y ' B,
2008 | Direktorat Pembinaan SMK
'-=
Bahasa Pemrograman %lass
ta%ba(()A
>out??B 2a&i Y E
y ' B,
(itung!kai()A
get>(()
8
"*$"&$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apaka+ 5ungsi tipe kelas dalam .a+asa A
%2 Se.utkan tujuan dari mendeklarasikan class
=2 Se.utkan yang digunakan untuk menentukan .atasan akses ter+adap
mem.er
?2 Apa yang dimaksud dengan konstruktor dan destruktor
'2 )elaskan apa yang dimaksud dengan overloading konstruktor
>2 )elaskan .agaimana cara menulis class
(2 Apa yang dimaksud dengan overloading met+od
#2 Apa yang dimakksud dengan akses pu.lic$ private dan protected
'-?
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
BAB "+
PEMROGRAMAN BEROR!ENTAS! OBIEK
"'2"2 Pemrograman 8.ject68riented dan Prosedural
"'2%2 Per.edaan 8.ject68riented dan Prosedural
"'2=2 Pemrograman .erorientasi o.jek
"'2?2 7mmuta.le o.yek
"'2'2 *odularitas dan A.straksi Data
"'2>2 *odularitas dan Penye.unyian 7n5ormasi
"'2(2 7nter5ace
"'2#2 7nter5ace dan Alass
"'2@2 9u.ungan dari 7nter5ace ke Alass
"'2"-2 Pewarisan Antar 7nter5ace
"'2""2 Soal :ati+an
"+$"$ Pemrograman Obje/t#Oriente% %an Pro'e%ural
Dalam .e.erapa 5orum diskusi
yang mem.a+as programming$ sala+
satu t+read yang selalu +angat dan
menarik di .icarakan adala+ t+read
mengenai 8.ject oriented
Programming 388P42 88P itu sendiri
se.etulnya adala+ konsep lama$ tapi
topik ini seperti Design pattern$
88AD dan lain se.againya
sepertinya .aru +angat di.icarakan di
5orum diskusi .e.erapa ta+un
.elakangan ini2 Enta+ mengapa$
mungkin karena .ersamaan dengan
.ermunculan 5ramework yang .anyak
diantaranya menganut konsep 88P$
ABB yangg sekarang suda+ 5ull6
.lown 88P$ 5ramework *S 2,ET
yang juga suda+ 5ull6.lown 88P$ dan
.anyak lagi2 Ak+irnya .anyak orang6
orang di sini yang mulai .ertanya6
tanya Hapa si+ 88P tu+G1$ Hapa
.edanya dengan proseduralG1$ Hapa
untungnya kalau memakai 88PG2
Sekarang kita tidak perlu
mem.icarakan HApa itu 88P1 dan
.agaimana mem.uat C .elajar 88P2
kita +anya akan mem.eri conto+
konkrit per.edaan dari 88P dan
Procedural Aode$ dan kemudian
mengam.il kesimpulan tentang
keuntungan apa yang .isa kita dapat
dari 88P2 Dalam .uku ini .anyak
dijelaskan apa itu 88P$ penggunaan
Design Patternnya dan .agaimana
mengimplementasikannya dalam
kode ABB2
2008 | Direktorat Pembinaan SMK
'-'
6ahasa 'emrograman
'emrograman 6erorientasi Objek
"+$&$ Perbe%aan Obje/t#Oriente% %an Pro'e%ural
!agaimana desain o.ject
oriented .er.eda dengan kode
prosedural yang le.i+ tradisionalG
Akan sangat muda+ untuk
mengatakan .a+wa per.edaan
utamanya adala+ kode .erorientasi
o.yek memiliki o.ject di dalamnya2
7ni tidak .etul2 Dalam P9P kita akan
sering menemukan kode prosedural
menggunakan o.yek2 Kita juga
mungkin sering meli+at class6class
yang mengandung kode prosedural
di dalamnya2 Ke.eradaan class tidak
menjamin adanya desain .erorientasi
o.yek$ walau dalam .a+asa
pemrogramman )ava sekalipun$ yang
nota.ene Hmemaksa1 kita untuk
melakukan apa pun di dalam class2
Satu per.edaan utama antara
kode .erorientasi o.yek dengan kode
prosedural dapat dili+at dari
.agaimana tanggung jawa.
3responsi.ility4 didistri.usikan2 Kode
prosedural akan .erupa urut6urutan
perinta+ dan met+od calls2 Kode
pemanggil 3controlling code4
cenderung .ertanggung jawa. untuk
meng+andle pengecekan kondisi 3i5$
t+en$ else dst42 Kontrol top6down ini E
dalam pengem.angan aplikasiE
dapat meng+asilkan duplikasi kode
dan saling ketergantungan lintas
3antar4 proyek2 Kode .erorientasi
o.yek menco.a untuk
meminimalisasi ketergantungan ini
dengan cara meminda+akan
responsi.ility untuk meng6+andle
tugas6tugas dari client code ke dalam
o.yek6o.yek di dalam system2
"+$)$ Pemrograman berorienta'i objek
8.jek adala+ kumpulan varia.el
dan met+od 35ungsi4 yang saling
.erkaitan2 *ungkin kita perna+
menggunakan struct dalam A atau
record dalam PascalCDelp+iG Dalam
struct dan record$ kita .isa
mengumpulkan tipe6tipe varia.el
yang .erlainan2 ,a+$ o.jek adala+
perkem.angan dari struct2 Dalam
o.jek$ kita .isa mengumpulkan
varia.el6% dengan tipe yang .ole+
.er.eda6% dan 5ungsi6% yang dise.ut
met+od2
8.jek se.enarnya meniru
konsep alam2 7lustrasinya seperti ini2
Se.utla+ suatu o.jek$ misalnya
anjing2 Anjing memiliki kondisi:
warna$ tinggi$ lapar$ sakit$ dll2 Selain
itu anjing juga memiliki +al6+al yang
.iasa dilakukan$ seperti:
menggonggong$ menggigit$ goyang
ekor$ dan lain6lain2 )adi kondisi pada
alam 3misal anjing4 ditiru dengan
Daria.el sedangkan +al6+al yang
.iasa dilakukan ditiru dengan
*et+od2 pengga.ungan antara
Daria.el dan *et+od itula+ yang
dise.ut Enkapsulasi2
9al penting .erikutnya dalam
88P adala+ *essage2 Antara o.jek
satu dengan o.jek yang lain
.erkomunikasi melalui *essage2
Ketika o.jek A ingin o.jek !
melakukan sesuatu$ maka o.jek A
mengirim *essage ke o.jek !2
Conto(M )i&anya ob-ek A adaa(
IC4! Ob-ek B adaa( Sepeda!
)ika 7AT ingin meminda+kan gigi
sepedanya ke gigi '$ maka 7AT akan
mengirim *essage ke Sepeda
'->
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
diketa+ui sepeda memiliki
kemampuanC*et+od pinda+;igi4
.er.unyi pinda+;igi3'42 :engkapnya
dapat ditulis: Sepeda2pinda+;igi3'42
*essage itu akan dilaksanakan ole+
Sepeda2 Kemampuan pinda+;igi
memerlukan in5ormasi gigi yang
diinginkan$ dalam +al ini '2 *aka
sekarang Daria.el 3nantinya kita
se.ut atri.ut4 gigi .ernilai '2 !icara
tentang Alass$ kita .ayangkan dalam
conto+ se.elumnya .a+wa Sepeda
milik 7AT adala+ sepeda gunung 3kita
se.ut Sepeda;unung42 Tentunya
selain Sepeda;unung terdapat
sepeda lain seperti Sepeda8nta$
SepedaTandem$ dll2 Tapi yang jelas$
jenis6jenis tadi termasuk Sepeda2
)adi Sepeda ;unung adala+
7nstance dari Sepeda2
Sepeda;unung memiliki atri.ut6
atri.ut3seperti gigi$ roda$ panjang$
pedal$ dan lain6lain4 juga
kemampuan3seperti pinda+;igi34$
.elok34$ dll4 Sepeda2 Ada per.edaan
antara 8.ject dan Alass2
Alass adala+ .lue print atau
rancangan dari 8.ject2 )adi dengan
satu Alass$ kita dapat mem.uat
.erapapun 8.ject2 7n+eritance adala+
pewarisan si5at2 Se.ua+ Su.class
akan mewarisi si5at dari Superclass6
nya2 Dalam conto+ di atas$ Sepeda
;unung akan memiliki atri.ut gigi$
roda dan panjang dan juga
kemampuannya yaitu pinda+ ;igi
dan .elok2 Tetapi Su.class tidak
+arus +anya memiliki si5at dan
kemampuan yang sama persis
dengan Superclassnya$ tetapi
.iasanya ditam.a+kan si5at dan
kemampuan lain yang
mem.edakannya dengan Su.class
lain dengan Superclass yang sama2
7tula+ yang mem.uat Sepeda;unung
dan Sepeda8nta .er.eda2
Su.class juga dapat melakukan
8verride ter+adap si5at dan
kemampuan warisan Superclassnya2
*isalnya yang dilakukan ole+
SepedaTandem2 SepedaTandem
memiliki le.i+ dari dua roda dan juga
pedal se+ingga perlu memiliki
kemampuan untuk mengaturnya2
Se+ingga suatu kemampuan warisan
dari class Sepeda dapat diganti atau
ditam.a+kan2
7nter5ace mem.uat satu class
dapat .erinteraksi dengan class lain
yang .enar6.enar .er.eda2 *isalnya
dalam S+ow Room yang menjual
*o.il$ *otor juga Sepeda2 Tentu saja
*anajerS+owRoom +arus .isa
mengatur sepeda6sepeda .ersama
dengan *o.il6% dan *otor6%2
*asala+nya adala+ per.edaan class
yang sangat mencolok2 7nter5ace
mengatasinya dengan cara:
*encari persamaan antara class6%
yang .er.eda tanpa memaksa
class terse.ut saling
.er+u.ungan2
*em.uat met+od yang ingin
diterapkan pada class6class2
7stila+6istila+ yang digunakan dalam
pemrograman .erorientasi o.jek
Alass adala+ .lueprint atau
prototype dari o.ject6o.jec tertentu
yang memiliki kesamaan varia.le
dan met+od2
8.ject atau insance o5 class
merupakan so5tware yang
mengemas varia.le6varia.le dan
met+odmet+od menjadi satu
kesatuan2
Attri.ute adala+ suatu .entuk
karakteristik atau status dari suatu
o.ject2
*et+od atau .e+avior dari o.ject
adala+ action yang .isa di
kerjakan ole+ suatu o.ject
2008 | Direktorat Pembinaan SMK
'-(
6ahasa 'emrograman
'emrograman 6erorientasi Objek
Aonstructor merupakan met+od
k+usus yang .er5ungsi untuk
inisialisi atau menciptakan suatu
o.ject dari class
Pemrograman !erorientasi
8.jek se.enarnya .ukanla+ .a+asa
pemrograman .aru$ tetapi jalan .aru
untuk .erpikir dan merancang
aplikasi yang dapat mem.antu
memeca+kan suatu persoalan
mengenai pengem.angan perangkat
lunak2 Pemrograman .erorientasi
o.jek disusun dan dipa+ami ole+
ilmuwan yang memkitang dunia
se.agai populasi o.jek yang
.erinteraksi antara satu yang satu
dengan o.jek yang lain2
Prosedur yang digunakan dalam
o.jek dipkitang se.agai kepentingan
kedua karena tergantung pada o.jek
itu sendiri2 Tentunya +al terse.ut
.er.eda dengan pemrograman
terstruktur2 Pemrograman terstruktur
mempunyai si5at pemisa+an data
dengan kode yang mengola+nya2
Pemrograman !erorientasi 8.jek
3P!84 adala+ metode pemrograman
yang meniru cara kita
memperlakukan sesuatu 3.enda42
Dalam pemrograman
.erorientasi o.yek$ class merupakan
se.ua+ design$ template$ atau .lue6
print2 Dari suatu class dapat di.uat
.anyak o.jekCinstance2 Analoginya
adala+ seperti ini$ .ayangkan jika kita
seorang arsitek$ se.elum
mem.angun ruma+ tentunya akan
merancang dulu di kertas$ jumla+ dan
letak pintu$ jendela$ dan semuanya$
itula+ class2 Kemudian dari gam.ar
ruma+ terse.ut kita dapat
mem.angun .anyak ruma+ sesuai
rancangan yang suda+ di.uat2
*asing6masing ruma+ jadi
terse.ut adala+ yang dise.ut dengan
o.jekCinstance2
The Cir't in'tan/e
.la''
De'ain Tem(late
Blue (rint
The 'e/on% in'tan/e
n $$$$$$ in'tan/e
;am.ar "'2"2 Alass Dalam Pemrograman !erorientasi 8.yek
Ada empat ciri6ciri atau karakteristik
.a+asa Pemrograman !erorientasi
8.jek$ antara lain:
"+$)$"$ Ab'trak'i
ntuk memproses sesuatu dari
dunia nyata dengan menggunakan
komputer kita +arus menentukan ciri6
ciri C si5at6si5at yang penting yang
perlu direpresentasikan ke dalam
sistem komputer2 Airi6ciri yang dipili+
.ergantung dari apa yang akan kita
lakukan di dalam sistem terse.ut dan
tergantung dari sudut pkitang yang
meli+atnya2 *isalnya pada se.ua+
'-#
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
kasus untuk menentukan attri.ute suatu class mo.il pada :
Ta.el "'2"2 Attri.ute suatu class mo.il
Kantor Poli'i Bengkel Mobil
,o mesin ,o registrasi Pemilik
Pemilik /aktu ;anti 8li
!esar Pajak Deskripsi servis
"+$)$&$ Enka('ula'i
Pengga.ungan data dan met+od
ke dalam suatu class atau dengan
kata lain mengkom.inasikan se.ua+
struktur dengan 5ungsi yang
memanipulasinya untuk mem.entuk
tipe data .aru yaitu kelas 3class42
Enkapsulasi merupakan suatu
mekanisme untuk menyem.unyikan
atau memproteksi suatu proses dari
kemungkinan inter5erensi atau
penyala+gunaan dari luar sistem dan
sekaligus menyeder+anakan
penggunaan sistem itu sendiri2 Akses
ke internal sistem diatur sedemikian
rupa melalui seperangkat inter5ace2
Aonto+ se.ua+ kasus yang ada
dilapangan misalnya pada se.ua+
sepeda motor$ dimana pada sistem
peminda+an gigi transmisi$ maka
pengendara tidak perlu ta+u detail
dari .agaimana proses peminda+an
gigi itu dilakukan ole+ mesin$ cukup
ta+u .agaimana cara menekan gigi
transmisi itu2 Pedal gigi transmisi
yang diinjak pengendara itu
merupakan inter5ace 3antar muka4
pengendara dengan sistem transmisi
sepeda motor2
"+$)$)$ PeGari'an
warisan si5at dari class induk
kepada class anaknya atau
mende5inisikan suatu kelas dan
kemudian menggunakannya untuk
mem.angun +irarki kelas turunan$
yang mana masing6masing turunan
mewarisi semua akses kode maupun
data kelas dasarnya2
Se.agai manusia kita
se.enarnya ter.iasa untuk meli+at
o.jek yang .erada disekitar kita
tersusun secara +ierarki .erdasarkan
classnya masing6masing2 Dari sini
kemudian tim.ul suatu konsep
tentang pewarisan yang merupakan
suatu proses dimana suatu class
diturunkan dari class lainnya
se+ingga ia mendapatkkan ciri atau
si5at dari class terse.ut2 Per+atikan
conto+ +irarki .erikut ini:
2008 | Direktorat Pembinaan SMK
'-@
6ahasa 'emrograman
'emrograman 6erorientasi Objek
Binatang
Mamalia Re(tile
Anjing
Ku/ing Mon3et
;am.ar "'2%2 9irarki Pewarisan
Dari +irarki diatas dapat dili+at
.a+wa$ semakin ke.awa+$ class
akan semakin .ersi5at spesi5ik2 Alass
mamalia memiliki seluru+ si5at yang
dimiliki ole+ .inatang$ demikian
+alnya juga Anjing$ kucing dan
*onyet memiliki seluru+ si5at yang
diturunkan dari class mamalia2
Dengan konsep ini$ karakteristik yang
dimiliki ole+ class .inatang cukup
dide5inisikan dide5inisikan dalam
class .inatang saja2
Alass mamalia tidak perlu
mende5inisikan ulang apa yang tela+
dimiliki ole+ class .inatang$ karena
se.agai class turunannya$ ia akan
mendapatkan karakteristik dari class
.inatang secara otomatis2 Demikian
juga dengan class anjing$ kucing dan
monyet$ +anya perlu mende5inisikan
karakteristik yang spesi5ik dimiliki
ole+ classnya masing6masing2
Dengan meman5aatkan konsep
pewarisan ini dalam pemrograman$
maka +anya perlu mende5inisikan
karakteristik yang le.i+ umum akan
didapatkan dari class darimana ia
diturunkan2
"+$*$ !mmutable ob3ek
Dalam pemrograman
.erorientasi o.jek$ immuta.le o.yek
adala+ o.yek dengan kondisi yang
tidak dapat dimodi5ikasi setela+
di.uat2 9al ini .er.eda dengan
muta.le o.jek$ dimana o.yek
terse.ut dapat dimodi5ikasi setela+
di.uat2 8.yek dapat immuta.le
secara keseluru+an atau +anya
.e.erapa atri.ut o.jek yang
ditentukan saja$ misalnya
menggunakan atri.ut anggota const
data pada .a+asa pemrograman
ABB2
Dalam .e.erapa kasus$ o.yek
dianggap immuta.le walaupun ada
.e.erapa +al peru.a+an internal
yang digunakan ole+ atri.ut tetapi
kondisi o.jek nampaknya tidak .isa
diu.a+ secara ekternal dari .e.erapa
sudut pkitang2 Se.agai conto+$
se.ua+ o.yek yang menggunakan
memoiQation pada cac+e +asil
komputasi yang .aik ini tetap dapat
tetap dianggap se.agai o.jek2 Awal
dari se.ua+ kondisi tetap o.jek
.iasanya diatur pada posisi .erdiri$
tetapi dapat juga ditetapkan se.elum
menggunakan o.yek terse.ut2
'"-
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
7mmuta.le o.jek sering .erguna
karena .e.erapa .iaya operasional
seperti menyalin dan
mem.andingkan dapat dia.aikan$
menyeder+anakan kode program dan
mempercepat eksekusi2 ,amun$
mem.uat o.yek immuta.le .iasanya
tidak tepat jika o.jek .erisi sejumla+
.esar data yang .eru.a+6u.a+2
Karena itu$ .anyak .a+asa yang
mempunyai 5asilita kedua o.jek
terse.ut .aik muta.le dan immuta.le
o.yek2
Dalam ke.anyakan .a+asa
.erorientasi o.jek$ o.jek dapat
dise.ut dengan re5erensi2 !e.erapa
conto+ seperti .a+asa )ava$ ABB$
AY$ D!2,ET dan .anyak .a+asa
scrip seperti Ru.y dan Pyt+on2
Dalam +al ini$ +al6+al apaka+ kondisi
o.yek dapat .er.eda .ila .enda
di.agi melalui re5erensi2
)ika o.yek yang diketa+ui adala+
immuta.le$ maka dapat disalin cukup
dengan mem.uat salinan re5erensi$
.ukan untuk menyalin seluru+ o.jek2
Karena re5erensi 3.iasanya +anya
ukuran se.ua+ pointer4 .iasanya jau+
le.i+ kecil daripada o.yek itu sendiri$
se+ingga le.i+ muda+ dalam
penyimpanan di memori dan
meningkatkan kecepatan dalam
eksekusi2
Teknik penyalinan Re5erensi jau+
le.i+ sulit digunakan pada o.jek
muta.le$ karena jika ada pengguna
re5erensi ke se.ua+ o.yek muta.le
yang meru.a+nya$ semua pengguna
lain akan meli+at peru.a+annya2 )ika
ini .ukan e5ek dimaksudkan$ maka
akan le.i+ sulit untuk
mem.erita+ukan ke pengguna yang
lain untuk meminta mereka merespon
dengan .enar2
Dalam situasi ini$ de5ensi5
menyalin dari seluru+ o.yek daripada
re5erensi .iasanya le.i+ muda+
namun solusi ma+al2 Para pengamat
menyatakan .a+wa teknik alternati5
untuk menangani peru.a+an o.jek
muta.el2 7mmuta.le o.jects dapat
.erguna dalam aplikasi multi6
t+readed2 *ultiple t+reads dapat
.ertindak .erdasarkan data yang
diwakili ole+ immuta.le o.jek tanpa
memper+atikan data yang diu.a+
ole+ t+read lainnya2 immuta.le o.yek
mempunyai pertim.angan atau
dianggap le.i+ aman daripada
muta.le o.ject atau o.yek yang
.eru.a+2
Dalam Praktiknya selalu
menggunakan re5erensi pada saat
melakukan copy atau sering dikenal
se.agai o.jek interning2 )ika interning
digunakan$ dua .enda dianggap
sama jika dan +anya jika mereka
re5erensi$ .iasanya digam.arkan
se.agai integers yang keuanya
sama2 !e.erapa .a+asa secara
otomatis: misalnya$ secara otomatis
Pyt+on interns string dan lain6lain2
)ika algoritma yang menerapkan
interning dijamin$ maka untuk
melakukan setiap kasus yang
mungkin mem.andingkan dengan
o.yek untuk mengurangi pointer$ dan
yang penting dalam mendapatkan
kecepatan maksimal dalam aplikasi2
3!a+kan jika algoritma tidak dijamin
secara lengkap$ masi+ ada
kemungkinan jalan yang cepat untuk
meningkatan kasus ketika o.yek
yang sama dan menggunakan
re5erensi yang sama24 7nterning
umumnya +anya .erguna untuk
immuta.le .enda2
Kadang6kadang kalau .icara
tertentu mengenai satu .idang o.yek
yang immuta.le2 7ni .erarti .a+wa
tidak ada cara untuk mengu.a+
kondisi .agian o.jek$ walaupun
2008 | Direktorat Pembinaan SMK
'""
6ahasa 'emrograman
'emrograman 6erorientasi Objek
.agian lain dari o.jek mungkin
.eru.a+6u.a+2 9al ini dapat$
misalnya$ untuk mem.antu
menegakkan tertentu secara eksplisit
invariants tentang .e.erapa data
dalam o.yek yang sama tinggal
melalui masa o.jek2 Dalam .e.erapa
.a+asa$ +al ini dilakukan dengan kata
kunci 3misalnya aconsta di ABB$ a5inala
di )ava4 yang mana dirancang pada
5ield dari o.yek yang immuta.le2
Keimmuta.lean tidak
menyiratkan .a+wa se.agai o.jek
yang disimpan dalam memori
komputer unwriteable2 Se.aliknya$
keimmuta.lean adala+ kompilasi
waktu mem.angun dan menunjukkan
apa yang +arus dilakukan ole+
programmer2
Dalam .a+asa ABB implementasi
pada se.ua+ cart akan
memungkinkan pengguna
menyatakan se.ua+ kasus kelas
.aru se.agai sala+ satu const
3immuta.le4 atau muta.le$ seperti
yang dike+endaki$ dengan
menyediakan dua versi yang .er.eda
dari get7tems 34 met+od2 3Per+atikan
.a+wa dalam A B B itu tidak
diperlukan dan .a+kan musta+il 6
untuk menyediakan constructor
k+usus untuk kasus const24 Template
Ttypename TU2 per+atikan potongan
program di.awa+ ini:
Program "'2"
)-"++ Cart 6
(.i5"teM
&tdMM3e>tor?4@ ite%&A
(*b-i)M
Cart(),+t &tdMM3e>tor?4@S 3)M ite%&(3) 6 8
&tdMM3e>tor?4@S getIte%&() 6 .et*. ite%&A 8
),+t &tdMM3e>tor?4@S getIte%&()
),+t 6 .et*. ite%&A 8
it tota()
),+t 6 /* return sum of the prices */ 8
8A
"+$+$ Mo%ularita' %an Ab'trak'i Data
*odularitas dan a.straksi data
dapat dide5inisikan
Mo%ul atau se.ua+ unit dari
organisasi sistem perangkat lunak
yang mem.undel sekumpulan
entitas 3data dan metoda operasi4
dan dengan secara teliti
mengontrol apa auser eksternala
.isa li+at atau gunakan2
Pen3embun3ian inCorma'i yang
dilakukan modul untuk melindungi
in5ormasi dari auser e&ternala
dalam penggunaannya 3misalnya
so5tware error$ security4 dan
merupakan .asis dari abstract
data type 3ragam data a.straks42
$bstract data type 0ADT1 atau
Kumpulan o.yek dan metoda
operasi yang mempresentasikan
'"%
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
si5at6si5at a.straks .agi ausera
dengan menyem.unyikan
.agaimana semua itu
direpresentasikan dalam
representasi data level yang le.i+
renda+2
%nterface %ari mo%ul atau
Spesi5ikasi .agaimana modul
terse.ut dili+at atau digunakan
ole+ ausera sementara .agian
yang private tetap tersem.unyi$
per+atikan conto+ di.awa+ ini:
o Se.ua+ microwave oven
se.agai suatu modul2 Pemakai
dapat menggunakannya
dengan tersedianya inter5ace
panel tom.ol2 Pemakai +anya
perlu ta+u untuk apa tom.ol6
tom.ol terse.ut dan .agaimana
mengoperasikannya2 Pemakai
tidak perlu ta+u mekanisme
kerja oven terse.ut secara
intenal seperti kerja ta.ung
magnetron$ mikrokontroller
mekanik penggerak dan lain
se.againya242
o /indow menyediakan sejumla+
.utton untuk dapat menutup$
memper.esar$ memperkecil$
dan se.againya2
"+$+$"$ Pemrograman Mo%ular
!a+asa6.a+asa pemrograman
modern menyediakan cara6cara
untuk dapat mem.uat sistem
perangkat lunak secara modular
demikian$ antara lain:
Aara untuk mengelompokkan
.ersama data dan metoda operasi
Aara untuk mende5inisikan
inter5ace yang acleana
Aara untuk menyem.unyikan
rincian internal dari data dan
metoda6metoda operasi
Aara untuk kompilasi secara
terpisa+ misalnya:
o Tur.o Pascal menyediakan
5asilitas pem.uatan TP
dengan de5inisi inter5ace2
o !a+asa A memungkinkan
pem.uatan o.ject module
3K2o.j4 dan li.rary 3K2a4 yang
dapat dilink ke modul program
utama melalui inter5ace +eader
5ile 3K2+42
Dalam .a+asa )ava
memungkinkan konsep
pemrograman modular$ enkapsulasi$
dan a.straksi data dengan
disediakannya skema6skema class$
inter5ace$ dan packages2 Enkapsulasi
dimungkinkan dengan pende5inisian
(riBate .agi dataCmetoda yang
diseme.unyikan dan (ubli/ .agi
dataCmetoda yang .erperan se.agai
inter5ace2
Dalam )ava terdapat keyword
interCa/e dengan pengertian yang
lain2 Keword ini digunakan se.agai
suatu de5inisi teknis yang
menyatakan sekumpulan metoda
a.straks yang .isa
diimplementasikan dalam
pende5inisian kelas6kelas o.yek2
*an5aat de5inisi inter5ace ini agar
o.yek6o.yek dari sejumla+ kelas
yang mengimplementasikan inter5ace
ini dapat saling dire5er ole+ varia.el
.eragam inter5ace ini2 Per+atikan
conto+ di.awa+ ini:
2008 | Direktorat Pembinaan SMK
'"=
6ahasa 'emrograman
'emrograman 6erorientasi Objek
Program "'2%
ite.7")e 9>a&& 6
(*b-i) 5,i% P(ata)et(od()A
8
(*b-i) )-"++ A>a&& i%pe%ent& 9>a&& 6
(*b-i) 5,i% P(ata)et(od() 6
!!!// diimplementasikan disini
8
8
(*b-i) )-"++ B>a&& i%pe%ent& 9>a&& 6
(*b-i) 5,i% P(ata)et(od() 6
!!!// diimplementasikan disini
8
8
)-"++
)ain>a&& 6
9>a&& a,bA
+t"ti) (*b-i) 5,i% %ain(String NO a) 6
a ' eG
A>a&&()A b '
eG B>a&&()A
a!P(ata)et(o
d()A
b!P(ata)et(o
d()A
8
8
Aonto+ lain adala+ pada
masala+ pencarian data 3searching42
Key data .isa muncul dalam .er.agai
tipe data: int$ Cloat$ String$ ds.2
<asiltas inter5ace ini dapat
memungkinkan pede5inisan algoritma
umum compareTo34 dalam inter5ace
AomparisonKey untuk setiap tipe
data2 Selanjutnya kelas6kelas yang
mengimplementasikan inter5ace
terse.ut dapat dide5inisikan sesuai
denga tipe data yang dike+endaki2
Dengan 5asilitas65asilitas ini kita
.isa mengem.angkan sistem
perangkat lunak .esar dengan
komponen6komponennya yang
.ersi5at umum demikian dan
selanjutnya dapat di6plug6and6play
implementasi dalam .er.agai tipe
data2 <asilitas )ava lain dalam
pende5inisian modularitas dan ADT
adala+ keyword (a/kage2 Keyword
ini mem.undle sekumpulan kelas
yang satu dengan yang lainnya saling
memiliki relasi k+usus2 Pende5inisian
package ini memungkinkan kompilasi
secara terpisa+ dan diimport se.agai
li.rary2 Se.agai conto+ kasus untuk
pem.a+asan modularitas dan ADT
adala+ suatu kelas Priority `ueue2
"+$+$&$ Priorit3 \ueue
Priority ^ueue 3P`4 adala+ suatu
struktur data a.straks yang
.erperilaku se.agai .erikut2 P`
adala+ kumpulan item data yang
masing6masing memiliki tingkat
prioritas yang .isa .er.eda2 Apa.ila
item data diam.il dari kumpulan
terse.ut maka item data yang
'"?
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
.erprioritas paling tinggi la+ yang
diperole+2
Dalam pengem.angannya
pertama kali adala+
mem5ormulasikan konsep
a.straksnya tanpa +arus memikirkan
tipe datanya$ apalagi implementasi
rincinya2 7mplementasinya sendiri
dapat dilakukan dalam dua
representasi level .awa+ yang
.er.eda: array atau linked6list yang
dapat .elakangan kita .uat2
!anyak ditemukan dalam
masala+6masala+ penjadwalan$
misalnya untuk sistem antrian untuk
pelayanan pasien dalam ruang
praktek dokter$ penjadwalan
pem.ayaran tagi+an$ ds.2 Prioritas
.isa dide5inisikan dalam .e.erapa
aspek2 P` dapat digunakan juga
untuk pengurutan data kengan key
data se.agai +arga prioritas:
sejumla+ data tak terurut dimasukkan
ke dalam P` lalu setela+ semua
masuk satu demi satu data diam.il
dari P`2 Pada pengurutan menaik
maka data yang diam.il ditaru+ dari
kanan ke kiri elemen6elemen array2
Pada pengurutan menurun +arga key
.isa ke.alikan dari +arga prioritas$
alternti5nya data yang di am.il satu
demi satu di taru+ dari kiri ke kanan
elemen6elemen array2
Terdapat sejumla+ metoda
operasi yang menjadi _inter5ace_: .agi
pemakai kelas o.yek ini2
mengkonstruksikan P` yang
diinisialisasi kosong
G[ ' neP Griority[ueue()A
mendapatkan ukuran 3jumla+ item
data4 dalam P`$
n ' G[!&iZe()A
menyisipkan item .aru dalam P`$
G[!in&ert(9)A
.ila P` tidak kosong$ meng+apus
item dengan prioritas tertinggi
dalam P`
9 ' G[!re%o3e()A
Secara sepintas .isa diketa+ui
.a+wa terdapat suatu proses internal
3yang tidak perlu diketa+ui ole+ user4
di dalam skema ini yaitu pengurutan
item data2 7mplementasi .agaimana
pun user atidak perdulia2 Aonto+
penggunaan dalam metoda
pengurutan data .erdasarkan Priority
`ueue:
Program "'2=
5,i% priority[ueueSort(Co%pari&onKeyNO A) 6
it n ' A!engt(A
Griority[ueue G[ ' eG Griority[ueue()A // create * inisialisasi 'O
7,. (it i ' 0A i ? nA i::) G[!in&ert(ANiO)A // mengisi 'O
7,. (it i ' n;1A i @' 0A i;;) ANiO ' G[!re%o3e()A // mengambil satu/satu
8
Selanjutnya conto+ penggunaan
P` dengan tipe key integer ini dapat
dili+at dalam program le.i+
lengkapnya2 Pada saat ini de5inisi
kelas Priority`ueue .elum
diimplementasikan2 Se.elum
mengimplementasikannya maka key
data item yang sedang kerjakan ini
di.ungkus dalam tipe data yang
generik yaitu: AomparisonKey
se.agai suatu inter5ace2
2008 | Direktorat Pembinaan SMK
'"'
6ahasa 'emrograman
'emrograman 6erorientasi Objek
ite.7")e Co%pari&onKey 6
it >o%pare4o(Co%pari&onKey
3aue)A String toString()A
8
Selanjutnya AomparisonKey ini
diimplementasikan sesuai dengan
tipe data yang sedang digunakan$
dalam +al ini misalnya kita
menggunakan integer 3nanti kita li+at
.ila key .ertipe String42
Program "'2?
(*b-i) )-"++ G[Ite% i%pe%ent& Co%pari&onKey 6
(.i5"te it keyA
G[Ite%(it 3aue) 6
key '
3aueA
8
(*b-i) String toString() 6
.et*. Integer!toString(key)A
8
(*b-i) it >o%pare4o(Co%pari&onKey 3aue) 6
it a ' thi+!keyA
it b ' ((G[Ite%) 3aue)!keyA
.et*. ((a''b)D 0M( (a @ b)D1M;1))A
8
8
Pada level yang le.i+ renda+
kelas priority ^ueue ini dapat
diimplementasikan .aik dengan array
atau dengan linked list$ dimana +al
terse.ut dijelaskan se.agai .erikut:
Dersi 7mplementasi nsorted
Array 3.erukuran dinamis4
P` menyimpan item data dalam
suatu array yang apa.ila penu+
panjangnya dapat diper.esar
secara otomatis2 7tem data masuk
.egitu saja di .agian .elakang2
Saat di6remove maka item data
dengan key ter.esar dicari
3dilakukan se:uential search42 Key
yang diremove tempatnya
digantikan ole+ key yang paling
.elakang 3tidak melakukan
pergeseranM4
Dersi 7mplementasi Sorted :inked6
list
Saat item data masuk dalam P`
maka langsung ditempatkan pada
posisi yang sesuai dalam urutan
menurun 3dilakukan pencarian
posisi terle.i+ dulu lalu dilakukan
insert4$ dan saat di6remove maka
cukup dilakukan delete-first 3node
pertama yang diam.il2
Kedua implementasi terse.ut
.er5ungsi sama tapi dengan
implementasi yang .er.eda namun
sekali lagi user meli+atnya sesuai
dengan a.straksi spesi5ikasi P` yang
ditentukan2 Dalam prakteknya maka
kedua versi itu .isa dipili+ tanpa
mengu.a+ modul6modul pemakainya
selama spesi5ikasinya ditaati2
Selain implementasinya yang
.isa .er.eda tanpa mengu.a+
rancangan modul tingkat di atasnya$
representasi key data pun dapat
diimplementasikan secara .er.eda
'">
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
karena AomparisonKey yang
dide5inisikan a.straks terse.ut2
Dengan a.straksi AomparisonKey di
atas maka key .ertipe lain dapat
menggantikan tipe key integer dalam
conto+ di atas2AomparisonKey ini
memiliki konsep Representation
7ndependent *odule2 !erikut ini
representasi String untuk key2
Program "'2'
)-"++ G[Ite% i%pe%ent& Co%pari&onKey 6
(.i5"te String
keyA
G[Ite%(String
3aue) 6
key ' 3aueA
8
(*b-i) String toString() 6
.et*. keyA
8
(*b-i) it
>o%pare4o(Co%pari&onKey 3aue) 6
String a ' thi+!keyA
String b ' ((G[Ite%)3aue)!keyA
.et*. a!>o%pare4o(b)A // metoda compare0o dalam kelas String
8
8
Dalam program aplikasinya
peru.a+an terjadi pada .agian data$
sementara sejumla+ metoda tetap
sama2
"+$,$ Mo%ularita' %an Pen3ebun3ian !nCorma'i
Saat program menjadi semakin
.esar terjadi situasi .er.a+aya: rumit$
sulit melakukan de.ug$ dan +ampir
tidak mungkin di modi5ikasi kecuali
dikem.angkan dengan taat dan
secara terstruktur2 Penulisan program
komputer dilakukan melalui medium
yang memungkinkan .ervariasinya
cara penulisan ekspresi6ekspresi
yang potensial dapat menye.a.kan
masala+ yang .esar2 Dekomposisi ke
dalam komponen6komponennya pun
dapat .ervariasi$ .isa saling kait6
mengkait secara kompleks atau
teratur dalam layer6layer2
A.straksi prosedural:
menyatakan 5ungsi aapaa 3what4 yang
dilakukan suatu prosedur2 Kita perlu
mende5inisikan aapaa dari suatu
prosedur terpisa+ dari a.agaimanaa
3how4 cara yang dilakukan prosedur
untuk mencapai 5ungsi terse.ut2
Setela+ terde5inisi dengan .aik
a.straksi prosedur ini kemudian kita
.ole+ menuliskan rincian
a.agaimanaa terse.ut$ .a+kan suatu
saat misalnya untuk peningkatan
e5isiensi maka
metodologiCalgoritmanya dapat
disu.stitusikan tanpa mengu.a+
a.straksi proseduralnya2
)adi pemisa+an terse.ut
mem.eri man5aat:
2008 | Direktorat Pembinaan SMK
'"(
6ahasa 'emrograman
'emrograman 6erorientasi Objek
*emuda+kan penggunaan 66
+anya perlu ta+u apa yang
dilakukan ole+ prosedur P
*emuda+kan modi5ikasi 66 rincian
penulisan P dapat diu.a+ ta.pa
mengganggu program secara
keseluru+an 3di mana saja pada
pemanggilan6pemanggian P42
Secara umum pende5inisian
a.straksi dengan .aik pada
perancangan program dapat
mengendalikan kompleksitas
program serta meningkatkan
modi5ia.ilitas2 Penyem.unyian
in5ormasi 3enkapsulasi4 .aik varia.el
ataupun metoda dalam modul6modul
.erman5aat dalam:
*eng+indari inter5erensi entitas
lokal dalam modul ter+adap
entitas .ernama sama di luar
modul
*eng+indari inter5erensi entitas
diluar modul ter+adap entitas lokal
dalam modul ter+adap entitas
.ernama sama
!a+asa .erorientasi o.yek
semacam ABB atau )ava
mengakomodasikan enkapsulasi ini
dengan .aik dengan deklarasi
private2 Dalam )ava terdapat
tingkatan le.i+ lanjut sepain private$
yaitu: package$ protected$ .aru
kemudian pu.lic2 7stila+ package
dalam )ava memiliki konsep yang
sama dengan istila+ unit atau module
dalam .a+asa pemrograman lain2
"+$-$ !nterCa/e
7nter5ace adala+ jenis k+usus
dari .lok yang +anya .erisi met+od
signature3atau constant 42 7nter5ace
mende5inisikan se.ua+3signature4
dari se.ua+ kumpulan met+od tanpa
tu.u+2 7nter5ace mende5inisikan
se.ua+ cara stkitar dan umum dalam
menetapkan si5at6si5at dari class6
class2 *ereka menyediakan class6
class$ tanpa memper+atikan
lokasinya dalam +irarki class$ untuk
mengimplementasikan si5at6si5at yang
umum2 Dengan catatan .a+wa
inter5ace6inter5ace juga menunjukkan
polimor5isme$ dikarenakan program
dapat memanggil met+od inter5ace
dan versi yang tepat dari met+od
yang akan dieksekusi tergantung dari
tipe o.ject yang melewati pemanggil
met+od inter5ace2
Kita akan menggunakan
inter5ace jika kita ingin class yang
tidak .er+u.ungan
mengimplementasikan met+od yang
sama2 *elalui inter5ace6inter5ace$ kita
dapat menangkap kemiripan diantara
class yang tidak .er+u.ungan tanpa
mem.uatnya seola+6ola+ class yang
.er+u.ungan2*ari kita am.il conto+
class :ine dimana .erisi met+od yang
meng+itung panjang dari garis dan
mem.andingkan o.ject :ine ke
o.ject dari class yang sama2
Sekarang$ misalkan kita punya class
yang lain yaitu *y7nteger dimana
.erisi met+od yang mem.andingkan
o.ject *y7nteger ke o.ject dari class
yang sama2
Seperti yang kita li+at disini$
kedua class6class mempunyai
met+od yang mirip dimana
mem.andingkan mereka dari o.ject
lain dalam tipe yang sama$ tetapi
mereka tidak .er+u.ungan sama
sekali2 Supaya dapat menjalankan
cara untuk memastikan .a+wa dua
'"#
Direktorat Pembinaan SMK | 2008
se.ua+ inter5ace yang digunakan
untuk mende5inisikan +u.ungan
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
class6class ini mengimplementasikan
.e.erapa met+od dengan tkita yang
sama$ kita dapat menggunakan
se.ua+ inter5ace untuk +al ini2 Kita
dapat mem.uat se.ua+ class
inter5ace$ katakanla+ inter5ace
Relation dimana mempunyai
deklarasi met+od pem.anding2 Relasi
inter5ace dapat dideklarasikan
se.agai$
pubi> interHa>e /eation
6
pubi> booean i&0reater( Ob-e>t a,
Ob-e>t b)A pubi> booean i&Fe&&(
Ob-e>t a, Ob-e>t b)A pubi> booean
i&<Xua( Ob-e>t a, Ob-e>t b)A
8
Alasan lain dalam menggunakan
inter5ace pemrograman o.ject adala+
untuk menyatakan se.ua+ inter5ace
pemrograman o.ject tanpa
menyatakan classnya2 Seperti yang
dapat kita li+at nanti dalam .agian
7nter5ace vs class$ kita dapat .enar6
.enar menggunakan inter5ace
se.agai tipe data2 Pada ak+irnya$ kita
perlu menggunakan inter5ace untuk
pewarisan model jamak dimana
menyediakan class untuk mempunyai
le.i+ dari satu superclass2 Pewarisan
jamak tidak ditunjukkan di )ava$
tetapi ditunjukkan di .a+asa
.erorientasi o.ject lain seperti ABB2
Per.edaan utama antara se.ua+
inter5ace dan se.ua+ class a.stract:
met+od inter5ace tidak punya tu.u+$
se.ua+ inter5ace +anya dapat
mende5inisikan konstanta dan
inter5ace tidak langsung mewariskan
+u.ungan dengan class istimewa
lainnya$ mereka dide5inisikan secara
independent2
"+$2$ !nterCa/e %an .la''
Satu ciri umum dari se.ua+
inter5ace dan class adala+ pada tipe
mereka .erdua2 7ni artinya .a+wa
se.ua+ inter5ace dapat digunakan
dalam tempat6tempat dimana se.ua+
class dapat digunakan2 Se.agai
conto+$ di.erikan class Person dan
inter5ace Person7nter5ace$ .erikut
deklarasi yang .enar:
Ger&onInterHa>e pi ' neP
Ger&on()A Ger&on p> ' neP
Ger&on()A
!agaimanapun$ Kita tidak dapat
mem.uat instance dari se.ua+
inter5ace2 Per+atikan conto+
potongan program se.agai .erikut:
Ger&onInterHa>e pi ' neP
Ger&onInterHa>e()A
//CO<'#7@
/@BBOB---
Airi umum lain .aik inter5ace
maupun class dapat mende5inisikan
met+od2 !agaimanapun$ se.ua+
inter5ace tidak punya se.ua+ kode
implementasi sedangkan pada class
memiliki sala+ satunya2
ntuk mem.uat inter5ace$ kita
tulis se.agai .erikut:
pubi> interHa>e NInterHa>eKa%eO
6
//beberapa method tanpa isi
8
Se.agai conto+$ mari kita mem.uat
2008 | Direktorat Pembinaan SMK
'"@
6ahasa 'emrograman
'emrograman 6erorientasi Objek
antara dua o.ject menurut urutan asli
dari o.ject2
pubi> interHa>e /eation
6
pubi> booean i&0reater(
Ob-e>t a, Ob-e>t b)A
pubi> booean i&Fe&&(
Ob-e>t a, Ob-e>t b)A
pubi> booean i&<Xua(
Ob-e>t a, Ob-e>t b)A
8
Sekarang$ penggunaan inter5ace$
kita gunakan kata kunci im(lement'2
Per+atikan conto+ program di.awa+
ini:
Program "'2>
// Class ini mende>nisikan segmen garis
(*b-i) )-"++ Fine i%pe%ent& /eation
6
(.i5"te
%,*b-e Y1A
(.i5"te
%,*b-e Y"A
(.i5"te
%,*b-e y1A
(.i5"te
%,*b-e y"A
(*b-i) Fine(%,*b-e Y1, %,*b-e Y", %,*b-e
y1, %,*b-e y")6
thi+!Y1 '
Y1A
thi+!Y" '
Y"A
thi+!y1 '
y1A
thi+!y" '
y"A
8
(*b-i) %,*b-e getFengt(()6
%,*b-e engt( ' )at(!&Xrt((Y";
Y1)E(Y";Y1) : (y";y1)E (y";y1))A
.et*. engt(A
8
(*b-i) booean i&0reater( Ob-e>t a,
Ob-e>t b)6 %,*b-e aFen '
((Fine)a)!getFengt(()A %,*b-e
bFen ' ((Fine)b)!getFengt(()A
.et*. (aFen @ bFen)A
8
(*b-i) booean i&Fe&&( Ob-e>t a,
Ob-e>t b)6 %,*b-e aFen '
((Fine)a)!getFengt(()A %,*b-e
bFen ' ((Fine)b)!getFengt(()A
.et*. (aFen ? bFen)A
8
'%-
Direktorat Pembinaan SMK | 2008
'emrograman 6erorientasi Objek
6ahasa 'emrorgraman
(*b-i) booean i&<Xua( Ob-e>t a,
Ob-e>t b)6 %,*b-e aFen '
((Fine)a)!getFengt(()A %,*b-e
bFen ' ((Fine)b)!getFengt(()A
.et*. (aFen '' bFen)A
8
8
Ketika class kita menco.a
mengimplementasikan se.ua+
inter5ace$ selalu pastikan .a+wa Kita
mengimplementasikan semua
met+od dari inter5ace$ jika tidak$ Kita
akan menemukan kesala+an ini$
Fine!-a3aM#M Fine i& not ab&tra>t and doe& not
o3erride ab&tra>t %et(od
i&0reater(-a3a!ang!Ob-e>t,-a3a!ang!Ob-e>t) in
/eation
pubi> >a&& Fine i%pe%ent& /eation
Q
1 error
"+$4$ Hubungan %ari !nterCa/e ke .la''
Se.ua+ class dapat
mengimplementasikan se.ua+
inter5ace selama kode implementasi
untuk semua met+od yang
dide5inisikan dalam inter5ace tersedia2
9al lain yang perlu dicatat tentang
+u.ungan antara inter5ace ke class6
class yaitu$ class +anya dapat
menge&tend satu superclass$ tetapi
dapat mengimplementasikan .anyak
inter5ace2
Se.ua+ conto+ dari se.ua+ class
yang mengimplementasikan inter5ace
adala+ se.agai .erikut:
pubi> >a&& Ger&on i%pe%ent&
Ger&onInterHa>e,
Fi3ing4(ing,
T(ate3erInterHa
>e 6
//beberapa kode di &ini
8
Aonto+ lain dari class yang meng6
e&tend satu superclass dan
mengimplementasikan se.ua+
inter5ace adala+$
pubi> >a&&
Co%puterS>ien>eStudent
eYtend& Student
i%pe%ent&
Ger&onInterHa>e,
Fi3ing4(ing 6
//beberapa kode di
sini
8
Aatatan .a+wa se.ua+ inter5ace
.ukan .agian dari +irarki pewarisan
class2 Alass yang tidak .er+u.ungan
dapat mengimplementasikan
inter5ace yang sama2
2008 | Direktorat Pembinaan SMK
'%"
6ahasa 'emrograman
'emrograman 6erorientasi Objek
"+$"5$ PeGari'an Antar !nterCa/e
7nter5ace .ukan .agian dari
+irarki class2 sedangkan inter5ace
dapat mempunyai +u.ungan
pewarisan antara mereka sendiri2
misalnya$ ketika kita punya dua
inter5ace Stu%ent!nterCa/e dan
inter5ace Per'on!nterCa/e2 )ika
Student7nter5ace meng6 e&tend
Person7nter5ace$ maka ia akan
mewariskan semua deklarasi met+od
dalam Person7nter5ace2
pubi> interHa>e Ger&onInterHa>e 6
! ! !
8
pubi> interHa>e
StudentInterHa>e eYtend&
Ger&onInterHa>e 6
! ! !
8
"+$")$Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan pemrograman 8.ject oriented dan prosedural
%2 Se.utkan per.edaan antara kedua program terse.ut
=2 !erila+ gam.aran yang jelas mengenai pemroraman 88P
?2 Apa yang dimaksud dengan a.straksi
'2 Apa yang dimaksud dengan enkapsulasi
>2 Apa yang dimaksud dengan pewarisan
(2 Apa yang dimaksud dengan imuta.le dan muta.le o.jek
#2 Apa yang dimaksud dengan .a+asa pemrograman modular dan .uatla+
program seder+ana
@2 Apa yang dimaksud dengan Priority ^ueue 3P`4
'%%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
BAB ",
!NHER!TAN.E7 R!ENDS7 POEOMORPH!SM DAN
OHEREOAD!NG
">2"2 *enggunakan 8.yek dan Alass
">2%2 Realisasi Prosedur dan <ungsi dalam Alass
">2=2 Alass Private $ Alass Pu.lic$ dan Alass Protected
">2?2 <riend
">2'2 <riend class
">2>2 7n+eritance
">2(2 Alass .asis virtual
">2#2 7n+eritance .etween class
">2@2 *ultiple in+eritance
">2"-2 Polymorp+ism
">2""2 8verloading
">2"%2 Soal :ati+an
",$"$ Menggunakan Ob3ek %an .la''
ntuk mema+ami tentang Alass
ada .aiknya kita .a+as mengenai
Struct yang merupakan suatu
perinta+ dalam .a+asa ABB se.agai
pem.entuk tipe data .aru2 Se.ua+
conto+ misal tentang kartu pelajar2 Di
dalam kartu pelajar terdapat
keterangan tentang 7dentitas
Sekola+$ ,ama Siswa$ ,omor 7nduk
Siswa$ Alamat Siswa$ )urusanCKelas2
Pengertian data6data terse.ut +arus
menjadi satu tidak terpisa+6pisa+
37dentitas Sekola+ sendiri$ ,ama
Siswa sendiri$ dan se.againya42
)adi seakan6akan persis seperti
kalau kita meli+at kartu pelajar di
atas$ dalam satu kartu terdapat
.e.erapa in5ormasi sekaligus2 ntuk
mewujudkan +al terse.ut .a+asa
ABB menyediakan )eyword yang
dise.ut Struct2 Aonto+ penggunaan
se.agai .erikut:
Program ">2"
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
+t.*)t KartuGea-ar
2008 | Direktorat Pembinaan SMK
'%=
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
6
)h".
Sekoa(N"0OA
)h".
Ka%aN"*OA
)h". KISN1"OA
)h". Aa%atN"*OA
)h". Kea&N10OA
8A
it %ain(it arg>, )h". Earg3NO)
6
KartuGea-ar dataA
>out??BGengi&ian Data Kartu
Gea-arB??endA >out??BA&a Sekoa(
M BA >in!getine(data!Sekoa(,
+i?e,7(data!Sekoa())A >out??BKa%a
Si&Pa M BA
>in!getine(data!Ka%a, +i?e,7(data!Ka%a))A
>out??BK I S M BA
>in!getine(data!KIS, +i?e,7(data!KIS))A
>out??BAa%at M BA
>in!getine(data!Aa%at,
+i?e,7(data!Aa%at))A
>out??BCuru&an/Kea& M BA
>in!getine(data!Kea&,
+i?e,7(data!Kea&))A
>out??end??endA
>out??B2a&i Gengi&ian Data
B??endA >out??BA&a Sekoa( M
B??data!Sekoa(??endA
>out??BKa%a Si&Pa M
B??data!Ka%a??endA >out??BK I S
M B??data!KIS??endA
>out??BAa%at M
B??data!Aa%at??endA
>out??BCuru&an/Kea& M
B??data!Kea&??endA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran dari program diatas adala+ se.agai .erikut:
Gengi&ian Data Kartu Gea-ar
A&a Sekoa( M S)A K 1
\ogyakarta Ka%a Si&Pa M
Badu )a(ir Banget K I S M
1"1#
Aa%at M C! Anta( Beranta( "007
Curu&an / Kea& M 9 IGA 1
'%?
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
9asil Pengisian Data
Gengi&ian Data Kartu Gea-ar
A&a Sekoa( M S)A K 1
\ogyakarta Ka%a Si&Pa M
Badu )a(ir Banget K I S M
1"1#
Aa%at M C! Anta( Beranta( "007
Curu&an / Kea& M 9 IGA 1
:e.i+ lanjut$ struct dalam
program di atas merupakan tipe data
.aru yang .ernama KartuPelajar$ ini
sama dengan c+ar$ int$ 5loat dan
se.againya2 9al itu le.i+ diyakinkan
pada main34 ada perinta+
KartuPelajar dataN dapat dijelaskan
.a+wa data merupakan varia.le
dengan tipe KartuPelajar2 Keyword
struct dalam .a+asa ABB dapat
digantikan dengan class seperti
conto+ di .awa+ ini:
>a&& KartuGea-ar
6
pubi>M
>(ar
Sekoa(N"0OA
>(ar
Ka%aN"*OA
>(ar KISN1"OA
>(ar Aa%atN"*OA
>(ar Kea&N10OA
8A
Potongan program di atas
merupakan pem.uatan tipe data .aru
juga namun menggunakan class$
.ukan struct2 Program selengkapnya
seperti .erikut:
Program ">2%
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ KartuGea-ar
6
(*b-i)M
)h".
Sekoa(N"0OA
)h".
Ka%aN"*OA
)h". KISN1"OA
)h". Aa%atN"*OA
)h". Kea&N10OA
8A
it %ain(it arg>, )h". Earg3NO)
6
KartuGea-ar dataA
2008 | Direktorat Pembinaan SMK
'%'
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
>out??BGengi&ian Data Kartu
Gea-arB??endA >out??BA&a Sekoa(
M BA >in!getine(data!Sekoa(,
+i?e,7(data!Sekoa())A >out??BKa%a
Si&Pa M BA
>in!getine(data!Ka%a, +i?e,7(data!Ka%a))A
>out??BK I S M BA
>in!getine(data!KIS, +i?e,7(data!KIS))A
>out??BAa%at M BA
>in!getine(data!Aa%at,
+i?e,7(data!Aa%at))A
>out??BCuru&an/Kea& M BA
>in!getine(data!Kea&,
+i?e,7(data!Kea&))A
>out??end??endA
>out??B2a&i Gengi&ian
DataB??endA >out??BA&a Sekoa( M
B??data!Sekoa(??endA
>out??BKa%a Si&Pa M
B??data!Ka%a??endA >out??BK I S
M B??data!KIS??endA
>out??BAa%at M
B??data!Aa%at??endA
>out??BCuru&an/Kea& M
B??data!Kea&??endA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program di atas:
Gengi&ian Data Kartu Gea-ar
A&a Sekoa( M S)A K 1 \ogyakarta
Ka%a Si&Pa M Badu Gakar Banget
K I S M 1*00
Aa%at M C! Ke%ana;%ana 00+
Curu&an / Kea& M 9 IGA 1
9asil Pengisian Data
Gengi&ian Data Kartu Gea-ar
A&a Sekoa( M S)A K 1 \ogyakarta
Ka%a Si&Pa M Badu Gakar Banget
K I S M 1*00
Aa%at M C! Ke%ana;%ana 00+
Curu&an / Kea& M 9 IGA 1
:alu apa .edanya selain
)eyword struct diganti dengan class
dan ditam.a+ pu.lic: dalam class
terse.ut G Di sinila+ konsep ob'ect
oriented programming 3pemrograman
.erorientasi o.yek4 se+arusnya
'%>
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
.er.eda2 Dalam pemrograman
.erorientasi o.yek antara data atau
varia.le dan 5ungsinya menjadi satu
kesatuan tidak terpisa+ seperti struct
di atas2 Se+ingga 5ungsi pengisian
data dan pencetakan data menjadi
satu dalam class$ conto+ lengkap
se.agai .erikut:
Program ">2=
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ KartuGea-ar
6
(.i5"teM
)h". Sekoa(N"0OA
)h".
Ka%aN"*OA
)h". KISN1"OA
)h".
Aa%atN"*OA
)h".
Kea&N10OA
(*b-i)M
5,i% pengi&ian()
6
>out??BGengi&ian Data Kartu Gea-arB??endA
>out??BA&a Sekoa( M BA
>in!getine(Sekoa(,
+i?e,7(Sekoa())A
>out??BKa%a Si&Pa M BA
>in!getine(Ka%a,
+i?e,7(Ka%a))A >out??BK I S
M BA
>in!getine(KIS, +i?e,7(KIS))A
>out??BAa%at M BA
>in!getine(Aa%at,
+i?e,7(Aa%at))A
>out??BCuru&an/Kea& M BA
>in!getine(Kea&,
+i?e,7(Kea&))A
>out??end??endA
8A
5,i% >etak()
6
>out??B2a&i Gengi&ian
DataB??endA >out??BA&a
Sekoa( M B??Sekoa(??endA
>out??BKa%a Si&Pa M
B??Ka%a??endA >out??BK I S
M B??KIS??endA
>out??BAa%at M
B??Aa%at??endA
2008 | Direktorat Pembinaan SMK
'%(
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
>out??BCuru&an/Kea& M B??Kea&??endA
8A
8A
it %ain(it arg>, )h". Earg3NO)
6
KartuGea-ar dataA
data!pengi&ian()A
data!>etak()A
&y&te%(BGA$S<B)A
.et*.
<9I4WS$CC<SSA
8
Dalam program di atas dapat
dili+at .a+wa antara varia.le dan
method menjadi satu dalam class2
Selain itu ada peru.a+an dari conto+
se.elumnya .a+wa varia.le .eru.a+
si5at dari pu.lic menjadi private2 9al
ini dimaksudkan untuk
penyem.unyian data 3information
hiding4 dari pengguna$ se+ingga
pengguna tidak dapa mengu.a+6
u.a+ data secara langsung tetapi
+arus melalui pemanggilan class atau
penurunan 3inheritance4 class2
Sedangkan method pada class
.ersi5at pu.lic$ tentunya dimaksudkan
agar dapat dipakai secara umum dari
class yang lain atau class
turunannya2
Pada conto+ program di atas
konten dari method ditulis langsung
dalam class$ itu merupakan cara
pertama2 Ada cara kedua penulisan
konten method di luar class supaya
le.i+ leluasa apa.ila kontennya
panjang2 Program lengkapnya seperti
.erikut:
Program ">2?
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ KartuGea-ar
6
(.i5"teM
)h".
Sekoa(N"0OA
)h".
Ka%aN"*OA
)h". KISN1"OA
)h". Aa%atN"*OA
)h". Kea&N10OA
(*b-i)M
'%#
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
5,i% pengi&ian()A
5,i% >etak()A
8A
5,i% KartuGea-arMMpengi&ian()
6
>out??BGengi&ian Data Kartu Gea-arB??endA
>out??BA&a Sekoa( M BA
>in!getine(Sekoa(,
+i?e,7(Sekoa())A
>out??BKa%a Si&Pa M BA
>in!getine(Ka%a,
+i?e,7(Ka%a))A >out??BK I S
M BA
>in!getine(KIS, +i?e,7(KIS))A
>out??BAa%at M BA
>in!getine(Aa%at,
+i?e,7(Aa%at))A
>out??BCuru&an/Kea& M BA
>in!getine(Kea&,
+i?e,7(Kea&))A
>out??end??endA
8A
5,i% KartuGea-arMM>etak()
6
>out??B2a&i Gengi&ian
DataB??endA >out??BA&a
Sekoa( M B??Sekoa(??endA
>out??BKa%a Si&Pa M
B??Ka%a??endA >out??BK I S
M B??KIS??endA
>out??BAa%at M
B??Aa%at??endA
>out??BCuru&an/Kea& M
B??Kea&??endA
8A
it %ain(it arg>, )h". Earg3NO)
6
KartuGea-ar dataA
data!pengi&ian()A
data!>etak()A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
2008 | Direktorat Pembinaan SMK
'%@
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
Penulisan dalam pemrograman
.erorientasi o.yek le.i+ laQim conto+
terak+ir$ walaupun cara pertama tidak
sala+2 Dalam conto+ cara kedua le.i+
menunjukkan ciri6ciri pemrograman
.eririentasi o.yeknya di.anding cara
pertama2
",$&$ Reali'a'i Pro'e%ur %an ung'i %alam .la''
Se.ua+ class tela+ disinggung di
uraian se.elumnya .a+wa prosedur
maupun 5ungsi 3method4 merupakan
satu kesatuan dengan datanya$
sering dise.ut dengan encapsulated2
Prosedur dan 5ungsi ini
merupakan dasar untuk komunikasi
se.ua+ class dengan class lainnya$
dan merupakan nyawanya class
terse.ut karena pengaturan proses
dari suatu class melalui komponen
ini2 ntuk le.i+ jelasnya li+at conto+
di .awa+ ini:
Program ">2'
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ 4itik
6
it Ab&i&A
it OrdinatA
(*b-i)M
5,i% SetAb&i&(it
Y)A 5,i%
SetOrdinat(it y)A
it A%biAb&i&()A
it A%biOrdinat()A
8A
5,i% 4itikMMSetAb&i&(it Y)
6
Ab&i& ' YA
8
5,i% 4itikMMSetOrdinat(it y)
6
Ordinat ' yA
8
'=-
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
it 4itikMMA%biAb&i&()
6
.et*. Ab&i&A
8
it 4itikMMA%biOrdinat()
6
.et*. OrdinatA
8
it %ain(it arg>, )h". Earg3NO)
6
4itik AA
A!SetAb&i&(#)
A
A!SetOrdinat(
,)A
>out??BAb&i& titik A '
B??A!A%biAb&i&()??B`nBA
>out??BOrdinat titik A '
B??A!A%biOrdinat()??B`nBA 4itikE B '
SAA
>out??BAb&i& titik B ' B??B;@A%biAb&i&()??B`nBA
>out??BOrdinat titik B ' B??B;
@A%biOrdinat()??B`nBA A!SetAb&i&(")A
A!SetOrdinat(
1)A 4itikS C '
AA
>out??BAb&i& titik C ' B??C!A%biAb&i&()??B`nBA
>out??BOrdinat titik C ' B??C!A%biOrdinat()??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Program di atas merupakan
program untuk mengola+ tentang titik
dalam suatu .idang % dimensi2
Se+ingga mempunyai varia.le & dan
y2 ntuk dapat mengola+ data6data
a.sis serta ordinat dalam .idang %
dimensi terse.ut diperlukan prosedur
untuk set a.sis dan prosedur untuk
set ordinat2 9al itu dapat dili+at dalam
prosedur SetA.sis3int &4 dan
prosedur Set8rdinat3int y4N
Sedangkan untuk mengam.il data
.aik a.sis maupun ordinatnya
menggunakan 5ungsi Am.ilA.sis34
dan 5ungsi Am.il8rdinat34 guna
pengola+an le.i+ lanjut$ misal untuk
mencari jarak antara dua titik dalam
suatu .idang % dimensi2 Dalam
program di atas juga dimunculkan
cara pemanggilan o.yek dengan
.er.agai cara :
Titik AN pemanggilan o.yek
secara .iasa
TitikK ! I VAN pemanggilan o.yek
secara pointer
TitikV A I AN pemanggilan o.yek
secara re5erence
2008 | Direktorat Pembinaan SMK
'="
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
Pemanggilan anggota dari o.yek
juga ditunjukkan conto+ pada
pemanggilan .iasa dan re5erence
.er.eda dengan apa.ila
pemanggilan o.yek secara pointer2
:e.i+ jelasnya seperti .erikut:
Titik K ! I VAN untuk
pemanggilan 5ungsi atau prosedur
anggota o.yek terse.ut tidak dapat
menggunakan 324 titik tetapi +arus
menggunakan 36U4 pana+2 Seperti
program di atas untuk memanggil
5ungsi Am.ilA.sis34$ maka
perinta+nya !6UAm.ilA.sis342 !egitu
pula untuk prosedur SetA.sis3&4$
maka perinta+nya !6USetA.sis3&42
Aonto+ lain program untuk
menentukan kelulusan siswa2
Program ">2>
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ Si&Pa
6
)h".
Ka%aN"*OA
)h".
KISN1"OA
%,*b-e
KiaiA
(*b-i)M
5,i%
InpKa%a()A
5,i%
InpKIS()A
5,i%
InpKiai()A
5,i%
output()A
)h".E >ek(%,*b-e n)A
8A
5,i% Si&PaMMInpKa%a()
6
>out??BKa%a Si&Pa ' BA
>in!getine(Ka%a, +i?e,7(Ka%a))A
8
5,i% Si&PaMMInpKIS()
6
>out??BKIS Si&Pa ' BA
>in!getine(KIS, +i?e,7(KIS))A
8
5,i% Si&PaMMInpKiai()
'=%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
6
>out??BKiai Si&Pa ' BA
>in@@KiaiA
8
5,i% Si&PaMMoutput()
6
>out??end??B2a&i $-ian
Si&PaB??endA >out??BKa%a
Si&Pa ' B??Ka%a??endA
>out??BKIS Si&Pa '
B??KIS??endA
>out??BKeterangan '
B??>ek(Kiai)??endA
8
)h".E Si&PaMM>ek(%,*b-e n)
6
i7 (n@'+*)
.et*. BFuu&BA
e-+e
.et*. B4ak Fuu&BA
8
it %ain(it arg>, )h". Earg3NO)
6
Si&Pa DataA
>out??B)a&ukkan Data
Si&PaB??endA
Data!InpKa%a()A
Data!InpKIS()A
Data!InpKiai()A
Data!output()A
&y&te%(BGA$S<B)A
.et*.
<9I4WS$CC<SSA
8
Dalam program di atas ada satu
5ungsi yang mengem.alikan nilai
string yaitu 5ungsi cek2 <ungsi ini
akan mengem.alikan keterangan
se.agai status siswa H:ulus1 ataupun
HTak :ulus1$ se+ingga +arus
mengem.alikan nilai string2 Keluaran
program terse.ut dapat dili+at seperti
di .awa+ ini:
*asukkan Data Siswa
Ka%a Si&Pa ' aku
KIS Si&Pa ' 1"1#
Kiai Si&Pa ' +*
9asil jian Siswa
Ka%a Si&Pa '
aku KIS Si&Pa
' 1"1#
Keterangan ' Fuu&
2008 | Direktorat Pembinaan SMK
'==
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
",$)$ .la'' PriBate 7 .la'' Publi/7 %an .la'' Prote/te%
Penggunaan private maupun
pu.lic .iasanya digunakan .ersama6
sama atau dikom.inasikan2 Pada
dasarnya suatu class apa.ila tidak
dituliskan secara default adala+
private jadi pada prinsipnya class
tidak dapat diakses ole+ class lain
dan +anya dapat diakses ole+ class
itu sendiri2 ntuk le.i+ mema+ami
kita kem.ali ke conto+ aplikasi class
yang pertama kali2
>a&& 4itik
6
int Ab&i&A
int OrdinatA
8A
Daria.el A.sis dan 8rdinat
merupakan varia.el private walaupun
tidak ditulis secara eksplisit2 Apa.ila
ditulispun +asilnya sama saja$ karena
secara default komponen dalam
suatu class adala+ private2 Dalam +al
ini varia.el A.sis dan 8rdinat tidak
.isa diakses secara langsung2
Se.agai gam.aran dili+at conto+
di .awa+ ini:
Program ">2(
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ 4itik
6
it 9A
it \A
8A
it %ain(it arg>, )h". Earg3NO)
6
4itik
AA A!9
' #A
A!\ '
,A
>out??BAb&i& titik A ' B??A!
9??B`nBA >out??BOrdinat titik
A ' B??A!\??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Program di atas apa.ila di
compile akan terjadi kesala+an
dianggap kelas Titik tidak mempunyai
mem.er .ernama P dan Y2 )adi P
dan Y tidak dianggap se.agai
mem.er +al ini karena private2 :ain
+alnya jika diganti menjadi pu.lic
seperti .erikut:
'=?
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
Program ">2#
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ 4itik
6
(*b-i
)M
it
9A
it
\A
8A
it %ain(it arg>, )h". Earg3NO)
6
4itik
AA A!9
' #A
A!\ '
,A
>out??BAb&i& titik A ' B??A!
9??B`nBA
>out??BOrdinat titik A '
B??A!\??B`nBA
&y&te%(BGA$S
<B)A
.et*.
<9I4WS$CC<SSA
8
Program di atas jikalau
dijalankan tidak akan terjadi
kesala+an$ karena varia.el P dan Y
pu.lic jadi tidak ada penyem.unyian
in5ormasi 3information hiding42
Keluaran dari program terse.ut
seperti .erikut:
Ab&i& titik A ' #
Ordinat titik A ' ,
Tapi kalau .isa diu.a+ dari luar
maka data itu terlalu .erisiko i.arat
se.ua+ ruma+ .isa dimasuki orang
seke+endak +ati$ +al ini tidak .ole+
terjadi2 8le+ karena itu varia.el
terse.ut +arus tetap private tetapi
di.eri jalan masuk apa.ila diperlukan
untuk diganti atau diu.a+ nilainya2
Program secara lengkapnya menjadi
Yinclude Tcstdli.U
Program ">2@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ 4itik
6
2008 | Direktorat Pembinaan SMK
'='
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
(.i5"t
eM
it
9A
it
\A
(*b-i)M
5,i% SetAb&i&(it Y)A
5,i% SetOrdinat(it y)A
it A%biAb&i&()A
it A%biOrdinat()A
8A
5,i% 4itikMMSetAb&i&(it Y)
6
9 ' YA
8
5,i% 4itikMMSetOrdinat(it y)
6
\ ' yA
8
it 4itikMMA%biAb&i&()
6
.et*. 9A
8
it 4itikMMA%biOrdinat()
6
.et*. \A
8
it %ain(it arg>, )h". Earg3NO)
6
4itik AA
A!SetAb&i&(#)
A
A!SetOrdinat(
,)A
>out??BAb&i& titik A '
B??A!A%biAb&i&()??B`nBA
>out??BOrdinat titik A '
B??A!A%biOrdinat()??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
'=>
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
)adi ada dua pasang method
yang ditam.a+kan$ satu untuk
memasukkan data .aik P maupun Y
yaitu lewat SetA.sis maupun
Set8rdinat2 Yang kedua untuk
menampilkan atau meli+at varia.el P
ataupun Y melalui perinta+
Am.ilA.sis dan Am.il8rdinat2 Disini
terli+at .a+wa pintu masuk dan
keluar melalui jalur tertentu tidak .isa
langsung seperti apa.ila varia.el di
set pu.lic2 7.arat super market disitu
ada pintu masuk dan pintu keluar$
untuk mengam.il .arang6.arang
yang ada +arus melalui prosedur
tidak .isa .egitu saja2 Dapat
disimpulkan untuk mengakses data
dalam suatu class yang .ersi5at
private .isa dengan mem.uat
method yang .ersi5at pu.lic se+ingga
.isa memanipulasi dataCvaria.el yang
ada didalamnya2 Aonto+ lain se.agai
.erikut:
Program ">2"-
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ A
6
(.i5"teM
it
pri3atA
(*b-i)M
it
u%u%A
it
A%biGri3at()
6 .et*.
pri3atA 8A
5,i% SetGri3at(it
data)
6 pri3at '
dataA 8A
5,i%
4e&A()A
8A
5,i% AMM4e&A()
6
>out??BKeuaran dari
4e&AB??endA
>out??B$%u% '
B??u%u%??endA
2008 | Direktorat Pembinaan SMK
'=(
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
8A
5,i% BMM4e&B()
6
>out??BKeuaran dari
4e&BB??endA >out??B$%u% '
B??u%u%??endA
>out??BGri3ate '
B??A%biGri3at()??endA
8
it %ain(it arg>, )h". Earg3NO)
6
A Conto(AA
Conto(A!SetGri3a
t(#)A
Conto(A!u%u% '
"0A
Conto(A!4e&A()A
>out??end??BKeuaran dari )ain()B??endA
>out??B$%u% ' B??Conto(A!u%u%??endA
>out??BGri3ate '
B??Conto(A!A%biGri3at()??end??endA
B Conto(BA
Conto(B!SetGri3at
(#0)A
Conto(B!u%u% '
"00A
Conto(B!4e&B()A
>out??end??BKeuaran dari )ain()B??endA
>out??B$%u% ' B??Conto(B!u%u%??endA
>out??BGri3ate '
B??Conto(B!A%biGri3at()??end??endA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Dari conto+ di atas dapat dili+at
per.edaan pemakaian pu.lic dan
private dalam memanipulasi data di
dalam class$ .aik dari class itu sendiri
maupun dari class turunannya2 Dari
class sendiri yaitu class A semua
varia.el maupun met+od .isa
diakses lansung$ conto+ method
TesA342
Tetapi pemanggilan dari class
turunannya yaitu class ! +arus
melalui met+od pu.lic6nya$
conto+nya pada method Tes!34 untuk
menampilkan data +arus pakai
Am.ilPrivat tidak langsung varia.el
privat seperti TesA342 Tetapi untuk
varia.el umum .isa dipanggil
langsung karena si5atnya pu.lic$ jadi
'=#
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
tidak ada .eda cara pemanggilan
.aik TesA34 maupun Tes!342
Sedangkan untuk pemanggilan
di main34 .aik Aonto+A yang
merupakan class .aru dari class A$
dan Aonto+ ! yang merupakan class
.aru dari class ! tidak ada
per.edaan cara pemanggilan2 !isa
dimengerti karena class ! merupaka
turunan pu.lic dari class A2
Se.enarnya masi+ ada satu lagi yaitu
si5at protected2 Suatu class yang
memproteksi data6datanya dengan
si5at protected +anya .isa diakses
dari dirinya sendiri atau dari class
turunannya2 :i+at conto+ .erikut dan
.andingkan dengan si5at private yang
tela+ di.a+as se.elumnya2
Program ">2""
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ A
6
(.,te)te%M
it protek&iA
(*b-i)M
it u%u%A
it A%biGrotek&i()
6 .et*. protek&iA 8A
5,i% SetGrotek&i(it data)
6 protek&i ' dataA 8A
5,i% 4e&A()A
8A
5,i% AMM4e&A()
6
>out??BKeuaran dari
4e&AB??endA >out??B$%u%
' B??u%u%??endA
>out??BGri3ate '
B??protek&i??endA
8
)-"++ BM (*b-i) A
6
(*b-i)M
5,i% 4e&B()A
8A
2008 | Direktorat Pembinaan SMK
'=@
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
5,i% BMM4e&B()
6
>out??BKeuaran dari
4e&BB??endA >out??B$%u% '
B??u%u%??endA
>out??BGrote>ted '
B??protek&i??endA
8
it %ain(it arg>, )h". Earg3NO)
6
A Conto(AA
Conto(A!SetGrotek&
i(#)A
Conto(A!u%u% '
"0A Conto(A!4e&A()A
>out??end??BKeuaran dari )ain()B??endA
>out??B$%u% ' B??Conto(A!u%u%??endA
>out??BGri3ate ' B??Conto(A!A%biGrotek&i()??end??endA
B Conto(BA
Conto(B!SetGrotek&i
(#0)A
Conto(B!u%u% '
"00A
Conto(B!4e&B()A
>out??end??BKeuaran dari )ain()B??endA
>out??B$%u% ' B??Conto(B!u%u%??endA
>out??BGri3ate ' B??Conto(B!A%biGrotek&i()??end??endA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Ao.a li+at method TesA34 dan
Tes!34 cara mengakses data class
sama persis 3varia.el maupun
method4 conto+ varia.el umum dan
varia.el proteksi2 )adi class yang
.ersi5at protected .isa diakses
langsung persis seperti class terse.ut
melalui turunannya2 !andingkan
dengan conto+ se.elumnya yaitu
class yang .ersi5at private tidak dapat
diakses langsung dari turunannya2
Tetapi +arus melalui method yang
.ersi5at pu.lic2 ,amun perlu
dicermati cara macam ini mempunyai
kelema+an karena data terse.ut
seola+6ola+ menjadi .ersi5at pu.lic
meskipun dideklarasikan secara
private atau protectedN ntuk
mengatasi masala+ semacam itu$
ABB menyediakan satu )eyword$
'?-
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
yaitu 5riend2 Se.ua+ 5ungsi atau class
yang dideklarasikan dengan si5at
5riend dapat mengakses semua
anggota class lain$ .aik .ersi5at
private$ protected$ maupun pu.lic2
",$*$ rien%
Se.elumnya suda+ di .a+as
.a+wa ada tiga macam proteksi .agi
mem.er class$ yakni: pu.lic$
protected dan private2 *em.er
protected dan private tidak .isa
diakses dari luar class dimana dia
dideklarasikan2 /alaupun demikian
aturan ini dilanggar dengan adanya
5riend di dalam class$ se+ingga kita
dapat mem.uat 5ungsi eksternal
untuk mengakses mem.er private
dan protected2
ntuk itu kita mendeklarasikan
prototype 5ungsi eksternal yang
dimaksud yang akan menam.a+
akses se.elumnya dengan instruksi
5riend di dalam deklarasi class yang
dapat dis+are ole+ semua mem.er2
Per+atikan conto+ .erikut dimana kita
mendeklarasikan 5riend 5unction
duplicate:
Program ">2"%2 <riend 5unctions
=in>ude ?io&trea%!(@
)-"++
C/e>tange 6
it Pidt(,
(eig(tA (*b-i)M
5,i% &etW3aue& (it, it)A
it area (5,i%) 6.et*. (Pidt( E (eig(t)A8
7.ie% C/e>tange dupi>ate (C/e>tange)A
8A
5,i% C/e>tangeMM&etW3aue& (it a, it b) 6
Pidt( ' aA
(eig(t ' bA
8
C/e>tange dupi>ate (C/e>tange re>tpara%)
6
C/e>tange re>tre&A
re>tre&!Pidt( '
re>tpara%!Pidt(E"A
re>tre&!(eig(t '
re>tpara%!(eig(tE"A .et*.
(re>tre&)A
8
it %ain () 6
2008 | Direktorat Pembinaan SMK
'?"
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
C/e>tange re>t,
re>tbA
re>t!&etW3aue&
(",1)A re>tb '
dupi>ate (re>t)A
>out ?? B2a&i nya ' B??re>tb!area()A
8
Dari 5ungsi duplicate yang
merupakan 5riend dari ARectangle$
kita dapat mengakses mem.er widt+
dan +eig+t dari o.jek yang .er.eda
dalam tipe ARectangle2 Per+atikan
.a+wa 5ungsi duplicate34 .ukan
merupakan anggota dari class
ARectangle
Dengan 5riend 5unction 5ungsi
yang .ukan merupakan anggota
class 3diliar class4 dapat mengakses
mem.er class yang si5atnya
privateprotected2 Secara umum
penggunaan 5ungsi 5riend
keli+atannya keluar dari metodologi
88P$ se+ingga selama masi+
memungkinkan le.i+ .aik
menggunakan mem.er yang
classnya sama untuk masala+ ini2
Seperti pada conto+ se.elumnya$
akan le.i+ seder+ana jika duplicate34
diletakkan dalam class ARectangle2
Program ">2"=
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
)-"++ >onto( 6
it YA
5,i% H>onto(()A
(*b-i)M
5,i% H>onto(1 ()A
5,i% H>onto(" ()A
7.ie% 5,i% H>onto(1 ()A
8A
5,i% >onto(MMH>onto(()
6 >out??B`n.ung&i H>onto( anggota >a&& >onto(, ber&iHat pri3ateBA
8
5,i% >onto(MMH>onto(1()
6 Y'1A
>out??B.ung&i >onto( 1 anggota >a&& >onto(BA
H>onto(()A
>out??B`nKiai Y ' B??YA8
5,i% >onto(MMH>onto("()
6 >out??B`n`n.ung&i >onto( " anggota >a&& >onto(BA
>out??B`nKiai Y ' B??YA8
'?%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
5,i% H>onto(1()
6 >onto( bA
b!Y'10A
>out??B`n`n.ung&i >onto( 1 bukan anggota >a&& >onto(BA
>out??B`ntetapi %erupakan Hung&i Hriend dari
>a&& >onto(BA >out??B`n&e(ingga dapat
%engak&e& Y yang &iHatnya pri3ateBA
>out??B`ndan %engak&e& H>onto( yang -uga
ber&iHat pri3ateBA b!H>onto(()A
>out??B`nKiai Y ' B??b!YA8
%ain ()
6 >onto(
aA
a!H>onto(1
()A
a!H>onto("
()A
H>onto(1()
A get>(()A
8
Tela+ diketa+ui .a+wa tujuan
utama dari pemrograman .erorientasi
o.yek adala+ enkapsulasi data dan
5ungsi yang mengakses data di
dalam class2 Pengkapsulan
mem.erikan keuntungan terutama
memuda+kan dalam pemeli+araan
program dan juga dalam de.ugging2
,amun pengkapsulan untuk o.yek
yang kompleks terkadang sulit
dilakukan$ se+ingga adakalanya
aturan terpaksa +arus dilanggar demi
tujuan yang +arus dicapai2 Seperti
jika punya ruma+ ada kamar yang
si5atnya pri.adi$ se+ingga tidak
dimasuki ole+ orang lain2 Tetapi
kadang justru seorang teman yang
dianggap sa+a.at .ole+ memasuki
kamar terse.ut$ itula+ analogi dari
5riend2
<riend pada ABB memang
kontradiksi2 Disatu pi+ak dapat
menyeder+anakan kompleksitas
suatu o.yek$ tetapi juga dapat
meruntu+kan konsep enkapsulasi$
tentu saja jika terlalu .anyak
digunakan2 9al ini dise.a.kan karena
5riend memungkinkan pi+ak di luar
class dapat mengakses anggota
class termasuk yang .ersi5at private2
7tula+ se.a.nya 5riend +arus
digunakan seperlunya dan juga
digunakan secara tepat2 Apa.ila
ternyata kita terlalu .anyak
menggunakan 5riend maka se.aiknya
merom.ak rancangan program class
yang tela+ di.uat2 Se.aiknya class6
class yang menggunakan 5riend
dipeca+ menjadi .e.erapa class lain2
Secara umum$ 5riend .erguna kalau
ada suatu operasi yang +endak
mengakses data dari dua class yang
tidak ada kaitannya2 <riend juga
memungkinkan untuk menampilkan
isi o.yek lain2
Sala+ satu 5ungsi 5riend adala+
5ungsi .ukan anggota class yang
dapat mengakses anggota class2
2008 | Direktorat Pembinaan SMK
'?=
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
<ungsi ini dapat dipakai untuk
mengakses anggota class yang
.ersi5at private maupun protected2
;am.aran 5ungsi 5riend dapat dili+at
pada program .erikut:
Program ">2"?
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ Si&Pa
6
(.i5"teM
)h".
EKa%aA
)h".
EKea&A it
KISA
(*b-i)M
Si&Pa(
)A
5,i% ini&iai&a&i(it Ko%or, )h". EKa%a,
)h". EKea&)A
7.ie% 5,i%
ta%piWdata(Si&Pa &Pa)A
8A
Si&PaMMSi&Pa()
6
KIS ' 0A
Ka%a '
BBA Kea&
' BBA
8
5,i% Si&PaMMini&iai&a&i(it Ko%or,)h". EKa%a, )h". EKea&)
6
Si&PaMMKIS '
Ko%orA
Si&PaMMKa%a '
Ka%aA
Si&PaMMKea& '
Kea&A
8
5,i% ta%piWdata(Si&Pa &Pa)
6
'??
Direktorat Pembinaan SMK | 2008
anggota class2 Tidak dida+ului
seperti layaknya memanggil 5ungsi
dengan:
se.ua+ class2 )adi 5ungsi
dianggap se.agai argument
5riend
.iasa
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
>out??BKo%or Si&Pa '
B??&Pa!KIS??endA >out??BKa%a
Si&Pa ' B??&Pa!Ka%a??endA
>out??BKea& Si&Pa '
B??&Pa!Kea&??endA
8
it %ain(it arg>, )h". Earg3NO)
6
Si&Pa &i&A
&i&!ini&iai&a&i(1"1#,BBaduB,B
9 IGSB)A ta%piWdata(&i&)A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran dari program di atas adala+ se.agai .erikut:
Ko%or Si&Pa ' 1"1#
Ka%a Si&Pa ' Badu
Kea& Si&Pa ' 9 IGS
Pada conto+ di atas$ 5ungsi
tampil]data34 pada class Siswa
dideklarasikan se.agai 5ungsi 5riend2
Dengan demikian$ 5ungsi ini dapat
mengakses data seperti ,7S2
Per+atikan saat 5ungsi ini
dide5inisikan$ terli+at .a+wa 5ungsi ini
seperti 5ungsi .iasa .ukan 5ungsi dari
ta%piWdata(&
i&)A
tidak diper.ole+kan menye.ut nama
class di depan 5ungsi terse.ut seperti
conto+ .erikut:
&i&!ta%piWdat
a()A
Si&Pa
MM
di depan nama 5ungsi2
8le+ karena 5ungsi tampil]data34
.erkedudukan se.agai 5ungsi .iasa
maka cara pemanggilannya juga
mengikuti kaida+ 5ungsi .iasa$
seperti:
.ukan anggota suatu class2 Se.ua+
conto+ lain mengenai 5ungsi 5riend
ditunjukkan pada program .erikut2
Aonto+ ini menggam.arkan 5ungsi
5riend yang dapat mengakses tiga
.ua+ o.yek sekaligus2
Program ">2"'
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
2008 | Direktorat Pembinaan SMK
'?'
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
)-"++ 2a&i$-ian
6
(.i5"teM it
KISA
%,*b-e
KiaiA
(*b-i)M
2a&i$-ian(it Ko%or, %,*b-e Ki)A
7.ie% %,*b-e niaiW%aY(2a&i$-ian a, 2a&i$-ian b, 2a&i$-ian >)A
8A
2a&i$-ianMM2a&i$-ian(it Ko%or, %,*b-e Ki) M KIS(Ko%or), Kiai(Ki)
6
8
%,*b-e niaiW%aY(2a&i$-ian a, 2a&i$-ian b, 2a&i$-ian >)
6
%,*b-e %ak& ' a!KiaiA
%ak& ' (b!Kiai) @ %ak& D b!Kiai M %ak&A
%ak& ' (>!Kiai) @ %ak& D >!Kiai M %ak&A
.et*. %ak&A
8
it %ain(it arg>, )h". Earg3NO)
6
2a&i$-ian a%ir(1"1#,
+8!,)A 2a&i$-ian
enda((1"1+, 88!*)A
2a&i$-ian &iti(1""#,
*8!,)A
>out??BKiai u-ian terbe&ar M B??niaiW%aY(a%ir,enda(,&iti)??endA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program di atas adala+ se.agai .erikut:
Kiai u-ian terbe&ar M 88!*
Pada program di atas$
Hriend doube
niaiW%aY(2a&i$-ian a,
2a&i$-ian b,2a&i$-ian >)
.er5ungsi mencari nilai ter.esar
dengan 5ungsi nilai]ma&34 dari tiga
o.yek a$ .$ dan c yang merupakan
class 9asiljian2 !agaimana untuk
pemakaian 5riend yang le.i+ dari satu
'?>
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
class G2 Program .erikut suatu
conto+ pemakaian 5ungsi 5riend untuk
mengakses dua .ua+ class2 Ada
class Pemain/anita dan PemainPria$
kemudian ada 5ungsi 5riend
in5o]pemain]campuran342 Program
selengkapnya se.agai .erikut:
Program ">2">
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ Ge%ainGriaA
)-"++ Ge%ainTanita
6
(.i5"teM
)h".
Ena%aA
)h". Ea&aA
(*b-i)M
Ge%ainTanita()h". Ena%, )h". Ea&)A
7.ie% 5,i% inHoWpe%ainW>a%puran(Ge%ainTanita Y, Ge%ainGria y)A
8A
Ge%ainTanitaMMGe%ainTanita()h". Ena%, )h". Ea&)
6
na%a ' na%A
a&a ' a&A
8
)-"++ Ge%ainGria
6
(.i5"teM
)h".
Ena%aA
)h". Ea&aA
(*b-i)M
Ge%ainGria()h". Ena%, )h". Ea&)A
7.ie% 5,i% inHoWpe%ainW>a%puran(Ge%ainTanita Y, Ge%ainGria y)A
8A
Ge%ainGriaMMGe%ainGria()h". Ena%, )h". Ea&)
6
na%a ' na%A
a&a ' a&A
2008 | Direktorat Pembinaan SMK
'?(
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
8
5,i% inHoWpe%ainW>a%puran(Ge%ainTanita Y, Ge%ainGria y)
6
>out??BGe%ain ganda
>a%puranB??endA
>out??Y!na%a??B ?
B??Y!a&a??B @ B??endA
>out??y!na%a??B ?
B??y!a&a??B @ B??endA
8
it %ain(it arg>, )h". Earg3NO)
6
Ge%ainTanita pWPanita(BAnna Kourniko3aB,
B/u&iaB)A Ge%ainGria pWpria(B/aHae KadaB,
BSpanyoB)A
inHoWpe%ainW>a%puran(pWPanita, pWpria)A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program seperti .erikut:
Ge%ain ganda
>a%puran Anna
Kourniko3a ? /u&ia @
/aHae Kada ?
Spanyo @
Pada program di atas ada .aris yang
.erisi:
>a&& Ge%ainGriaA
Pernyataan ini dikenal dengan istila+
re5ernsi di depan2 9al seperti ini
diperlukan mengingat pengenal class
PemainPria akan digunakan pada
pendeklarasian class Pemain/anita$
yaitu pada .aris yang .erisi:
Hriend 3oid
inHoWpe%ainW>a%puran(Ge%ain
Tanita Y, Ge%ainGria y)A
Deklarasi lengkap PemainPria ini
dapat diletakkan di .elakang2 9al
yang perlu diper+atikan dalam
mem.uat 5ungsi 5riend yang
meli.atkan dua .ua+ class yang
.er.eda atau le.i+ adala+
mendeklarasikan 5ungsi terse.ut
pada class6class yang +endak
diakses2 !entuk Pendeklarasiannya
persis sama$ seperti conto+ .aris di
atas terdapat di kedua class .aik
Pemain/anita maupun PemainPria2
Para pemrogram ABB .iasa
melewatkan o.yek pada 5ungsi 5riend
dengan re5erensi2 9al seperti ini
sangat .erman5aat untuk o.yek
.erukuran .esar2 Dengan
melewatkan secara re5erensi$
prosesnya menjadi le.i+ cepat2
Deklarasi 5ungsi 5riend di atas .isa
diua+ menjadi seperti .erikut ini :
'?#
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
Hriend 3oid
inHoWpe%ainW>a%puran(>on&t
Ge%ainTanita SY, >on&t
Ge%ainGria
Sy)A
Keyword const di atas menunjukkan
.a+wa anggota o.yek tidak
dimaksudkan untuk diu.a+2
Sedangkan sym.ol V di depan nama
argument & dan y menyatakan o.yek
terse.ut dilewatkan .erdasarkan
re5erensi2 Selain itu perlu juga
disesuaikan pada .agian de5inisi
5ungsi$ peru.a+annya se.agai
.erikut:
3oid
inHoWpe%ainW>a%puran(>on&
t
Ge%ainTanita SY, >on&t
Ge%ainGria Sy)
6
c!!
8
Secara lengkap se.agai .erikut:
Program ">2"(
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ Ge%ainGriaA
)-"++ Ge%ainTanita
6
(.i5"teM
)h". Ena%aA
)h". Ea&aA
(*b-i)M
Ge%ainTanita()h". Ena%, )h". Ea&)A
7.ie% 5,i% inHoWpe%ainW>a%puran(),+t Ge%ainTanita SY, ),+t
Ge%ainGria
Sy)A
8A
Ge%ainTanitaMMGe%ainTanita()h". Ena%, )h". Ea&)
6
na%a ' na%A
a&a ' a&A
8
)-"++ Ge%ainGria
6
(.i5"teM
)h". Ena%aA
)h". Ea&aA
2008 | Direktorat Pembinaan SMK
'?@
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
(*b-i)M
Ge%ainGria()h". Ena%, )h". Ea&)A
7.ie% 5,i% inHoWpe%ainW>a%puran(),+t Ge%ainTanita SY, ),+t
Ge%ainGria
Sy)A
8A
Ge%ainGriaMMGe%ainGria()h". Ena%, )h". Ea&)
6
na%a ' na%A
a&a ' a&A
8
5,i% inHoWpe%ainW>a%puran(),+t Ge%ainTanita SY, ),+t Ge%ainGria
Sy)
6
>out??BGe%ain ganda
>a%puranB??endA
>out??Y!na%a??B ?
B??Y!a&a??B @ B??endA
>out??y!na%a??B ?
B??y!a&a??B @ B??endA
8
it %ain(it arg>, )h". Earg3NO)
6
Ge%ainTanita pWPanita(BAnna Kourniko3aB,
B/u&iaB)A Ge%ainGria pWpria(B/aHae KadaB,
BSpanyoB)A
inHoWpe%ainW>a%puran(pWPanita, pWpria)A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program tetap sama
dengan program se.elumnya2 Suatu
5ungsi anggota kelas dapat
.erkedudukan se.agai 5ungsi 5riend2
<ungsi seperti ini 3.iasa dise.ut
5ungsi anggota 5riend4 dapat
mengakses anggota class yang
mendeklarasikannya2 Se.agai conto+
program di atas dapat dimodi5ikasi
agar 5ungsi in5o]pemain]campuran34
menjadi 5ungsi anggota class
Pemain/anita dan dideklarasikan
se.agai 5rien pada class PemainPria2
*ula6mula class Pemain/anita perlu
dideklarasikan se.agai .erikut:
Program ">2"#
)-"++ Ge%ainTanita
6
(.i5"teM
)h". Ena%aA
''-
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
)h". Ea&aA
(*b-i)M
Ge%ainTanita()h". Ena%, )h". Ea&)A
5,i% inHoWpe%ainW>a%puran(),+t Ge%ainGria SY)A
8A
,ampak sekarang .a+wa 5ungsi
in5o]pemain]campuran34
.erkedudukan se.agai 5ungsi
anggota dari class Pemain/anita2
Argumen dari 5ungsi ini .erupa
re5erensi dari o.yek .er6clas
PemainPria2 Penye.utan class
PemainPria meng+aruskan adanya
pem.erita+uan kepada compiler
.a+wa PemainPria adala+ class2
8le+ karena itu$ se.elum
dideklarasikan PemainPria perlu
di.erikan re5erensi dimuka seperti
conto+ program se.elumnya2
Kemudian .agaimana
pendeklarasian pada class
PemainPria G Pada class ini 5ungsi
in5o]pemain]campuran34
dideklarasikan se.agai 5ungsi 5riend:
Program ">2"@
)-"++ Ge%ainGria
6
(.i5"teM
)h". Ena%aA
)h". Ea&aA
7.ie% 5,i% Ge%ainTanitaMMinHoWpe%ainW>a%puran(),+t Ge%ainGria
SY)A
(*b-i)M
Ge%ainGria()h". Ena%, )h". Ea&)A
8A
Per+atikan ada peru.a+a pada
5ungsi in5o]pemain]campuran34$
pada class PemainPria menjadi
.ersi5at private dan memakai
)eyword 5riend2 Selain itu juga
ditam.a+kan nama class yang
menjadi 5riend yaitu Pemain/anita2
Program selengkapnya se.agai
.erikut:
Program ">2%-
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ Ge%ainGriaA
)-"++ Ge%ainTanita
6
2008 | Direktorat Pembinaan SMK
''"
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
(.i5"teM
)h".
Ena%aA
)h". Ea&aA
(*b-i)M
Ge%ainTanita()h". Ena%, )h". Ea&)A
5,i% inHoWpe%ainW>a%puran(),+t Ge%ainGria SY)A
8A
Ge%ainTanitaMMGe%ainTanita()h". Ena%, )h". Ea&)
6
na%a ' na%A
a&a ' a&A
8
)-"++ Ge%ainGria
6
(.i5"teM
)h". Ena%aA
)h". Ea&aA
7.ie% 5,i% Ge%ainTanitaMMinHoWpe%ainW>a%puran(),+t Ge%ainGria
SY)A
(*b-i)M
Ge%ainGria()h". Ena%, )h". Ea&)A
8A
Ge%ainGriaMMGe%ainGria()h". Ena%, )h". Ea&)
6
na%a ' na%A
a&a ' a&A
8
5,i% Ge%ainTanitaMMinHoWpe%ainW>a%puran(),+t Ge%ainGria SY)
6
>out??BGe%ain ganda
>a%puranB??endA
>out??na%a??B ? B??a&a??B
@ B??endA >out??Y!na%a??B ?
B??Y!a&a??B @ B??endA
8
it %ain(it arg>, )h". Earg3NO)
6
Ge%ainTanita pWPanita(BAnna Kourniko3aB,
B/u&iaB)A Ge%ainGria pWpria(B/aHae KadaB,
BSpanyoB)A
pWPanita!inHoWpe%ainW>a%puran(pWpria)A
''%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Apa yang dimaksud dengan
class 5riend G Sesunggu+nya suatu
class dapat dijadikan se.agai 5riend
dari class yang lain2 9al seperti ini
diperlukan apa.ila ada dua class dan
di.utu+kan mengakses .agian
private maupun protected dari class6
class terse.ut2 Kita li+at conto+
.erikut2 *isal ada dua kelas yaitu D=
dan S"$ keduanya mempunyai data
tentang .anyaknya ruang atau
ke.utu+an ruang kelas2 Serta
ruangan D= dapat dipakai ole+ S"$
maka pendeklarasian masing6masing
class se.agai .erikut:
Program ">2%"
)-"++ D1
6
(.i5"teM
it ruangD1A
(*b-i
)M
D1()
6 ruangD1 ' 10A 8
7.ie% )-"++ S1A
8A
)-"++ S1
6
(.i5"t
eM
it ruangS1A
(*b-i
)M
S1()
6 ruangS1 ' ,A 8
5,i% inHoWruang(D1 Y)A
8A
Pada conto+ ini$ & adala+ o.yek
dengan class D= yang menjadi
argument 5ungsi in5o]ruang34 pada
class S"2 <ungsi dimaksud untuk
mengakses data ruang]D= milik
o.yek &3yang .er6class D=42
*asala+nya adala+ .a+wa data
ruangD= .ersi5at private$ se+ingga
class S" tidak .isa mengaksesnya2
Persoalan yang sama tetap muncul
sekiranya )eyword private pada class
D= diganti dengan protected2 Se.a.
seperti diketa+ui$ anggota yang
.ersi5at protected +anya .isa diakses
kalau class ini diwariskan ke class
turunan2 Solusinya dengan class
5riend seperti yang terli+at pada .aris
di.awa+ konstructor D=342 Dan
dengan pernyataan ini dapat
diletakkan dimana saja pada class
2008 | Direktorat Pembinaan SMK
''=
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
D=$ private$ protected$ maupun
pu.lic2 Keluaran program di atas
se.agai .erikut:
Ruang D= I "-
Ruang S" I >
Total Ruang S" I ">
",$+$ rien% /la''
Se.agaimana kita dapat
mende5inisikan 5riend 5unction$ kita
juga dapat mende5inisikan class
se.agai 5riend dari class lain$ yang
mengijinkan satu class mengakses
mem.er private dan protected dari
class lainnya2
Program ">2%%
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ CSXuareA
)-"++
C/e>tange 6
it Pidt(,
(eig(tA (*b-i)M
it area (5,i%)
6.et*. (Pidt( E (eig(t)A8
5,i% >on3ert (CSXuare a)A
8A
)-"++ CSXuare 6
(.i5"t
eM it
&ideA
(*b-i)M
5,i% &etW&ide (it a)
6&ide'aA8
7.ie% )-"++ C/e>tangeA
8A
5,i% C/e>tangeMM>on3ert (CSXuare a) 6
Pidt( ' a!&ideA
(eig(t ' a!&ideA
8
it %ain ()
6 CSXuare
&XrA
C/e>tange
re>tA
''?
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
&Xr!&etW&ide(#)A
re>t!>on3ert(&Xr)A
>out ?? B2a&inya ' B??re>t!area()??B`nBA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.agai .erikut:
2a&inya ' 1,
Dalam conto+ ini kita
mendeklarasikan ARectangle
se.agai 5riend dari AS^uare$
se+ingga ARectangle dapat
mengakses mem.er private dan
protected yang dimiliki class
AS^uare$ yakni AS^uare::side$ yang
mende5inisikan le.ar dari segiempat2
Kita juga meli+at adanya instruksi
.aru di awal program$ yakni
>a&&
CSXuareA
yang merupakan prototype dari class
AS^uare2 9al ini diperlukan karena
dalam deklarasi ARectangle kita
mengacu kepada AS^uare 3se.agai
parameter dalam 5ungsi convert34 42
De5inisi AS^uare disertakan di .agian
ak+ir$ se+ingga jika kita tidak
mengikutkan prototype AS^uare
diawal class instruksi terse.ut akan
dianggap sala+ 3tidak dikenali42
Per+atikan .a+wa penggunaan
5riend tidak akan .er5ungsi jika kita
tidak menuliskannya secara eksplisit2
Dalam conto+ AS^uare$ ARectangle
tidak dianggap se.agai suatu 5riend
class$ se+ingga ARectangle dapat
mengakses mem.er private dan
protected milik AS^uare tetapi tidak
se.aliknya2 Agar dua .ua+ class
dapat saling mengakses mem.er
private dan protected nya maka
keduanya +arus dideklarasikan
se.agai 5riend class dari yang lain
seperti pada conto+ .erikut:
Program ">2%=
=in>ude ?io&trea%!(@
=in>ude ?>onio!(@
)-"++ >onto( 6
it
YA
(*b-i)M
5,i%
H>onto(1 ()A
5,i%
H>onto(" ()A
7.ie% )-"++
>t(A
8A
)-"++ >t( 6
it
yA
2008 | Direktorat Pembinaan SMK
'''
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
5,i% H>t(()A
(*b-i)M
5,i% H>t(1 ()A
7.ie% )-"++ >onto(A
8A
5,i% >t(MMH>t(()
6 >onto( dA
d!Y'*A
>out??B`n.ung&i >t( anggota >a&& >t( (pri3ate)BA
>out??B`nKiai Y ' B??d!YA
8
5,i% >onto(MMH>onto(1()
6 Y'1A
>out??B.ung&i >onto( 1 anggota >a&& >onto(BA
>out??B`nKiai Y ' B??YA8
5,i% >onto(MMH>onto("()
6 >t( %A
%!y'*A
>out??B`n`n.ung&i >onto( " anggota >a&& >onto(BA
>out??B`nKiai Y '
B??YA >out??B`nKiai
y ' B??%!yA
%!H>t(()A8
5,i% >t(MMH>t(1()
6
y'1A
>out??B`n`n.ung&i >t( 1 anggota >a&& >t(BA
>out??B`nKiai y ' B??yA
H>t(()A
8
%ain ()
6 >onto
( aA >t(
bA
a!H>onto(1
()A
a!H>onto("
()A
b!H>t(1()A
get>(()A
8
''>
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
Keluaran program diatas adala+ se.agai .erikut:
.ung&i >onto( 1 anggota >a&& >onto(
Kiai Y ' 1
.ung&i >onto( " anggota >a&& >onto(
Kiai Y ' 1
Kiai y ' *
.ung&i >t( anggota >a&& >t(
(pri3ate) Kiai Y ' *
.ung&i >t( 1 anggota >a&& >t(
Kiai y ' 1
.ung&i >t( anggota >a&& >t(
(pri3ate) Kiai Y ' *
",$,$ !nheritan/e
Sala+ satu +al penting dalam
class adala+ in+eritance2 7n+eritance
mengijinkan kita untuk mem.uat
o.jek yang diturunkan dari o.jek lain$
se+ingga dimungkinkan didalamnya
terdapat mem.er lain selain
mem.ernya sendiri2
Se.agai conto+$ misalnya kita
ingin mendeklarasikan sederetan
class yang mendeskripsikan polygon
seperti ARectangle atau ATriangle2
Keduanya dapat dideskripsikan
dengan dua atri.ut yakni : alas dan
tinggi2 9al ini dapat direpresentasikan
dengan class APolygon dan dari
class terse.ut diturunkan dua class
yakni ARectangle dan ATriangle2
Alass APolygon .erisi mem.er
yang umum pada semua polygon$
dalam conto+ ini adala+ panjang dan
le.ar 3widt+ dan +eig+t42 ARectangle
dan ATriangle diturunkan dari class
terse.ut2 Alass yang diturunkan dari
class lain mewarisi semua mem.er
yang ada dalam class dasarnya2 9al
ini .erarti .a+wa jika class dasarnya
memiliki mem.er A dan kita
menurunkannya ke class lain yang
memiliki mem.er !$ maka class
turunan akan terdiri dari A dan !2
ntuk menurunkan class dari yang
lain$ kita menggunakan operator :
3colon4 dalam deklarasi class turunan
dengan cara se.agai .erikut:
>a&& deri3edW>a&&Wna%eM pubi>
ba&eW>a&&Wna%eA
dimana derived]class]name adala+
nama class turunan dan
.ase]class]name adala+ nama class
yang menjadi dasar2 Pu.lic dapat
diganti dengan akses lain misalnya
protected atau private$ dan
menjelaskan akses untuk mem.er
yang diturunkan$ seperti kita dapat
li+at pada conto+ .erikut:
Program ">2%?
2008 | Direktorat Pembinaan SMK
''(
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
=in>ude ?>&tdib@
=in>ude ?io&trea%!(@
)-"++ CGoygon 6
(.,te)te%M
it Pidt(, (eig(tA
(*b-i)M
5,i% &etW3aue& (it a, it b)
6 Pidt('aA (eig(t'bA8
8A
)-"++ C/e>tangeM (*b-i) CGoygon 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t)A 8
8A
)-"++ C4riangeM (*b-i) CGoygon 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t / ")A 8
8A
it %ain ()
6 C/e>tange
re>tA C4riange
trgA
re>t!&etW3aue&
(#,*)A
trg!&etW3aue&
(#,*)A
>out??B`n2a&i pe%anggian Hung&i area oe( re>t' B??re>t!area()A
>out ??B`n2a&i pe%anggian Hung&i area oe( trg ' B??trg!area()A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.agai .erikut:
2a&i pe%anggian Hung&i area oe( re>t' "0
2a&i pe%anggian Hung&i area oe( trg ' 10
Se.agaimana kita li+at o.jek
class ARectangle dan ATriangle
masing6masing .erisi mem.er dari
class APolygon yakni : widt+$ +eig+t
dan set]values342 Protected mirip
dengan private$ per.edaan +anya
terjadi pada class turunan2 Ketika kita
menurunkan class$ mem.er
protected dari class dasar dapat
digunakan ole+ mem.er lain dalam
''#
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
class turunan$ namun mem.er
private tidak demikian2
Karena kita ingin widt+ dan
+eig+t dapat diakses ole+ mem.er
dalam class turunan ARectangle dan
ATriangle dan tidak +anya ole+
mem.er APolygon$ kita pili+ akses
protected daripada private2 Kita dapat
me.uat ringkasan per.edaan tipe
akses .erdasarkan siapa yang dapat
mengakses$ se.agai .erikut:
A))e
++
(*b-i) (.,te)te
%
(.i5"te
Anggota dari kea& yang
&a%a
ye& ye& ye&
Anggota dari turunan
kea&
ye& ye& no
Bukan anggota ye& no no
Dimana a.ukan anggotaa
merepresentasikan re5erensi dari luar
class$ seperti dari main34$ dari class
lain atau dari 5ungsi lain .aik glo.al
ataupun local2 Pada conto+ diatas$
anggota yang diturunkan kepada
ARectangle dan ATriangle diikuti
dengan +ak akses yang sama
dengan class asalnya$ APolygon:
CGoygonMMPidt(
//protected access
C/e>tangeMMPidt(
//protected access
CGoygonMM&etW3aue&() // public
access
C/e>tangeMM&etW3aue&() //
public access
7ni dikarenakan kita menurunkan
class dari class lain se.agai pu.lic$
yang perlu diper+atikan adala+:
>a&& C/e>tangeM pubi>
CGoygonA
pu.lic menunjukkan level
minimum proteksi yang .erarti
mem.er warisan class dasar
3APolygon4 +arus diikutkan dalam
class .aru 3ARectangle42 :evel akses
minimum untuk mem.er yang
diturunkan dapat diu.a+ menjadi
protected atau private selain pu.lic2
Se.agai conto+$ daug+ter adala+
class yang diturunkan dari mot+er
yang dide5inisikan se.agai .erikut:
>a&& daug(terM prote>ted %ot(erA
yang menggunakan protected
se.agai minimum level akses untuk
mem.er daug+ter yang diwarisi dari
mot+er2 Karena itu$ semua mem.er
yang si5atnya pu.lic pada mot+er
akan menjadi protected pada
daug+ter$ yang merupakan level
minimum dimana ia dapat diwariskan2
Tentunya$ ini tidak akan menjadi
+alangan .agi daug+ter untuk
mempunyai mem.er pu.lic2 *inimum
level +anya akan digunakan untuk
mem.er yang diwariskan mot+er2
Penggunaan umum level
in+eritance selain pu.lic adala+
private$ yang menyediakan
encapsulasi sempurna dalam class
dasar$ kecuali jika tidak ada yang
.eranggapan classnya akan dapat
diakses mem.er class dasar dari
turunannya2 Se+ingga dalam .anyak
kasus class diturunkan dalam .entuk
pu.lic2 )ika tidak ada level akses
yang ditulis maka dalam class akan
dianggap private$ dan dalam tipe
struct dianggap pu.lic2
2008 | Direktorat Pembinaan SMK
''@
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
Ada empat konversi .aku dari
suatu class turunan ke class .asis
pu.liknya$ yaitu:
"2 8.yek class turunan akan
dikonversi secara implisit ke o.yek
class .asis pu.liknya2
%2 Re5erence class turunan akan
dikonversi secara implisit ke
re5erence class .asis pu.liknya2
=2 Pointer class turunan akan
dikonversi secara implisit ke
pointer class .asis pu.liknya2
Pointer ke suatu mem.er dari
suatu class .asis akan dikonversi
secara implisit menjadi pointer ke
suatu mem.er dari suatu pu.licly6
derived6class2 Konversi6konversi
dengan ara+ se.aliknya memerlukan
cast secara eksplisit$ walaupun perlu
diingat .a+wa +al ini tidak aman
dalam pemrograman
ABB memungkinkan suatu class
mewarisi data ataupun 5ungsi
anggota class lain2 Si5at ini dise.ut
in+eritance2 Alass yang mewarisi si5at
class lain dise.ut class turunan
3derived class4$ sedangkan class
yang mewariskan si5at ke class lain
dise.ut class dasar3base class42
Konsep in+eritance pada ABB ini
se.enarnya diil+ami ole+ si5at
pewarisan dalam ke+idupan nyata2
*isal$ mata si pik mirip dengan
mata aya+nya dan +idungnya
mancung mewarisi i.unya2
Keuntungan utama dengan adanya
in+eritance yaitu memungkinkan
suatu kode yang tela+ ditulis muda+
sekali untuk digunakan kem.ali2
Aonto+ jika anda mempunyai class
yang tela+ dipakai dan teruji2 Suatu
saat anda menemukan
permasala+an yang sama dengan
class terse.ut maka class tese.ut
dapat dipergunakan dengan cara
menurunkannya se+ingga si5at6si5at
yang sama .isa diman5aatkan2
Dengan cara seperti ini
pengem.angan program menjadi
le.i+ e5isien dan e5ekti52 )uga apa.ila
diperlukan turunannya dapat
menam.a+kan si5at6si5at .aru sesuai
dengan ke.utu+an permasala+an
permograman yang sedang di+adapi$
.a+kan kalau perlu .isa mengganti
dengan si5at yang .er.eda dengan
class dasarnya2
ntuk mema+ami tentang
konsep in+eritance$ marila+ kita co.a
conto+ .erikut :
Program ">2%'
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ ba&i&
6
(.i5"t
eM
it
AA
it
BA
'>-
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
6 >out??BInHoWba&i&() di-aankan!!!B??endA 8
8A
)-"++ turunan M (*b-i) ba&i&
6
(*b-i)M
5,i% inHoWturunan()
6 >out??BInHoWturunan() di-aankan!!!B??endA 8
8A
it %ain(it arg>, )h". Earg3NO)
6
turunan anakA
anak!inHoWba&i&()A
anak!inHoWturunan
()A
&y&te%(BGA$S<B)A
.et*.
<9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.agai .erikut:
InHoWba&i&()
di-aankan!!!
InHoWturunan()
di-aankan!!!
Dari +asil keluaran terli+at .a+wa
class turunan dapat menjalanka
5ungsi in5o].asis34 yang ada pada
class dasar2 9al ini .isa terjadi
karena pernyataan tam.a+an pada
deklarasi class turunan$ le.i+
jelasnya li+at pernyataan .erikut:
>a&& turunan M pubi> ba&i&
6
c!!
8
Terli+at ada tam.a+an :pu.lic
.asis$ itula+ yang menye.a.kan
.a+wa class turunan adala+ turunan
dari class .asis2 Dengan demikian
maka tentu saja dapat mengakses
semua anggota class .asis yang
.ersi5at pu.lic2 Akan tetapi anggota
yang .ersi5at private tetap tidak dapat
diakses2 )adi yang diwariskan +anya
yang .ersi5at pu.lic2 ,amun demikian
apa.ila +endak mengakses .agian
private dari class .asis di.uatkan
5ungsi pada class turunan untuk
mengaksesnya$ 5ungsi inila+ nanti
yang dipanggil untuk menjalankan
atau memanipulasi anggota private
class dasar2 )adi +arus dengan
perantara tidak dapat langsung2
Pada prinsipnya apa.ila class
turunan .ersi5at private maka
se.enarnya si5at6si5at class dasar
diturunkan di .agian private$
se+ingga tidak dapat diakses
langsung2 Dan apa.ila class turunan
.ersi5at pu.lic maka si5at6si5at class
dasar diturunkan di .agian pu.lic$
jadi dapat diakses langsung2
2008 | Direktorat Pembinaan SMK
'>"
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
>a&& da&ar
6
pri3at
eM
AA
prote>te
dM BA
CA
pubi>
M
3oid inHoWda&ar()A
8A
>a&& turunanMpri3ate da&ar
6
pri3at
eM
o>a
A BA
CA
3oid inHoWda&ar()A
prote>tedM
DA
pubi>
M
3oid inHoWturunan()A
8A
!andingkan dengan program .erikut ini:
>a&& da&ar
6
pri3at
eM
AA
prote>te
dM BA
CA
pubi>
M
3oid inHoWda&ar()A
8A
>a&& turunanMpubi> da&ar
6
pri3ate
M
o>aA
prote>te
dM BA
CA
'>%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
DA
pubi>
M
3oid inHoWda&ar()A
3oid inHoWturunan()A
8A
Dari gam.aran di atas jelas
kiranya .agaimana dan dimana si5at6
si5at class dasar diturunkan di class
turunan2 Sekali lagi .a+wa anggota
class dasar yang .ersi5at private
tetap tidak diwariskan ke class
turunan2 Akan tetapi apa.ila
meng+endaki .e.erapa data anggota
class dasar dapat diturunkan maka
.uatla+ .ersi5at protected2 Karena
anggota yang .ersi5at protected ikut
diwariskan pada class turunan 3li+at
gam.aran di atas42 Keyword
protected ini juga dapat diterapkan
untuk class turunan se.agaimana
private dan pu.lic2 Apa.ila class
turunan .ersi5at protected maka
semua anggota protected dan pu.lic
class dasar akan menjadi anggota
protected pada class turunan2
ntuk le.i+ meyakinkan
.agaimana dan dimana si5at6si5at dari
class dasar diwariskan$ analisa
program .erikut yang menggunakan
konstruktor dan destruktor2
Program ">2%>
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ kendaraan
6
(.i5"teM
)h". Ena%aA
(*b-i)M
kendaraan()h". En% ' B999B)
6
na%a ' n%A
>out??B2idupkan %e&in anda !!!!!B??endA
8
ekendaraan()
6
>out??B)atikan %e&in anda !!!!!B??endA
8
5,i% inHoWkendaraan()
6
>out??na%a??B &edang ber-aan !!!!!B??endA
8
8A
2008 | Direktorat Pembinaan SMK
'>=
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
)-"++ truk M (*b-i) kendaraan
6
(*b-i)M
truk()h". En%4r) M kendaraan(n%4r)
6
>out??B2idupkan %e&in truk anda !!!!!B??endA
8
etruk()
6
>out??B)atikan %e&in truk anda !!!!!B??endA
8
8A
it %ain(it arg>, )h". Earg3NO)
6
truk Hu&o(B4/$K
.$SOB)A
Hu&o!inHoWkendaraan
()A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.agai .erikut:
2idupkan %e&in anda !!!!!
2idupkan %e&in truk
anda !!!!! 4/$K .$SO
&edang ber-aan !!!!!
Gre&& any key to >ontinue ! ! !
N<nterO )atikan %e&in truk
anda c!! )atikan %e&in
anda c!!
9asil eksekusi program
menunjukkan konstruktor kedua class
dijalankan semua$ ini .isa dipa+ami
karena konstruktor terletak pada
.agian pu.lic2 !egitu pula dengan
destructor semua class dijalankan
.aik class dasar maupun class
turunan2 ,amun nama kendaraan
diisi dari masukkan nama truk .ukan
kendaraan2 Kenapa .isa pada+al
nama kendaraan .ersi5at private2
Karena pemasukan data nama
melalui inisialisasi konstruktor .ukan
langsung pada main342
'>?
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
",$-$ .la'' Ba'i' Hirtual
Penggunaan class .asis virtual
adala+ untuk mengatasi mekanisme
pewarisan de5ault se+ingga
perancangCpem.uat class dapat
menentukan suatu s+ared6.ase6
class2 Tak peduli .erapa kali suatu
class .asis virtual muncul dalam
+irark+i derivasi$ +anya suatu
instance di.uat dan suatu class .asis
virtual dispesi5ikasikan dengan
menggunakan kata kunci virtual
dalam deklarasinya2 Per+atikan
conto+ di.awa+ ini:
>a&& D M pubi> 3irtua
B 6!!!!!8
pada potongan program diatas
menunjukkan .a+wa ! adala+ suatu
class .asis virtual untuk class D2 )ika
suatu class .asis virtual
mende5inisikan konstruktor$ class
.asis virtual itu +arus mende5inisikan
suatu konstrutkor yang tak
memerlukan argumen2 !iasanya
suatu class turunan dapat menginit
secara eksplisit +anya class6class
.asis yang langsung di atasnya2
Alass6class .asis virtual merupakan
perkecualian2
Alass .asis virtual di6init ole+
class turunan ter.awa+Cterak+ir2
per+atikan conto+ .erikut ini:
Tanaman Tanaman Tanaman
!ua+ Sayur !ua+ Sayur
Tomat Tomat
,8, D7RTA: D7RTA:
;am.ar ">2"2 Alass !asis Dirtual
Program ">2%(
=in>ude?io&trea%@
*+i! "#e+(")e &tdA
)-"++ tana%an 6
(*b-i) M
2008 | Direktorat Pembinaan SMK
'>'
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
tana%an() M i(0), H(0) 6>out ?? Btana%an()!`nBA 8
tana%an (it initWi,7-,"t init;H)Mi(init;i),H(init;H)
6>out ?? Btana%an(int,^oat)!`nBA 8
etana%an() 6>out ?? Betana%an()!`nBA 8
5,i% print()A
(.i5"t
e M it
iA 8,"t
HA
8A
5,i% tana%an MM print() 6
>out ?? Bi' B ?? i ?? endA
>out ?? BH' B ?? H ?? endA
8
)-"++ bua( M 5i.t*"- (*b-i) tana%an 6
(*b-i) M
bua( (it initW-, 8,"t initWg) M -(initW-), g(initWg)
6>out ?? Bbua( (int,^oat)!`nBA 8
ebua(() 6 >out ?? Bebua(()!`nBA 8
5,i% print()A
(.i5"t
e M it
-A 8,"t
gA
8A
5,i% bua( MM print() 6
tana%an MM print()A
>out ?? B-' B?? -?? endA
>out ?? Bg'B?? g?? endA
8
)-"++ &ayur M (*b-i) 5i.t*"- tana%an 6
(*b-i) M
&ayur (it initWk,8,"t initW() M k(initWk), ((init;()
6>out ?? B&ayur(int,^oat)!`nBA 8
e&ayur() 6>out ?? Be&ayur()!`nBA 8
5,i% print()A
(.i5"te M
it kA
'>>
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
8,"t (A
8A
5,i% &ayur MM print() 6
tana%an MM print() A
>out ?? Bk' B ?? k ?? endA
>out ?? B('B ?? ( ?? endA
8
)-"++ to%at M (*b-i) bua(, (*b-i) &ayur 6
(*b-i) M
to%at (it initW, 7-,"t initW%) M bua((initW, initW%), &ayur(it
initW,
initW%
), (initW:"), %(initW% :"!1)
6>out ?? Bto%at (int,^oat)!`nBA 8
eto%at() 6 >out ?? Beto%at()!`nBA 8
5,i% print()A
(.i5"t
eM it
A
8,"t
%A
8A
5,i% to%at MM print()
6 tana%an MM
print()A bua( MM
print()A &ayur MM
print()A
>out ?? B' B ?? ?? endA
>out ??B%' B?? % ?? endA
8
%ain()
6
tana%an Ept ' eG tana%an (", 1!1)A
>out ?? Bpt D print()M `nBA
ptD print()A
%e-ete ptA
>out ??
endA
bua( Epb ' eG bua(
(", 1!1)A >out ?? BpbD
print() M`nBA pbDprint()A
%e-ete pbA
>out ?? B`nBA
&ayur Ep& ' eG &ayur (", 1!1)A
2008 | Direktorat Pembinaan SMK
'>(
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
>out ?? Bp& Dprint() M`nBA
p& D
print()A
%e-ete p&A
>out ??
endA
to%at Epto ' eG to%at (", 1!1)A
>out ?? Bpto Dprint()M `nBA
pto D
print()A
%e-ete
ptoA
.et*. 0A
8
Keluaran program diatas adala+ se.agai .erikut:
tana%an
(int,^oat)!
ptjprint()M
i'"
H'1!
1
etana%a
n()!
tana%an(
)!
bua((int,^o
at)!
pbjprint()M
i'0
H'0
-'"
g'1
!1
ebua(()!
etana%an()!
tana%an()!
&ayur(int,^o
at)!
p&jprint()M
i'0
H'0
k'"
('1!
1
e&ayur()!
etana%an()!
tana%an()!
bua((int,^oa
t)!
&ayur(int,^oa
t)!
to%at(int,^o
at)!
ptojprint()M
i'0
'>#
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
H'0
i'0
H'0
-'"
g'1!
1
i'0
H'0
k'"
('1!
1
'#
%'*!"
eto%at()!
e&ayur()!
ebua(()!
etana%an()!
Konstruktor class .asis virtual
selalu dijalankan se.elum konstruktor
class .asis nonvirtual$ tak peduli
posisinya dalam derivation6list2
Sedangkan urutan destruktor
se.aliknya$ dan jika suatu class
turunan meli.atkan sekaligus
instance pu.lic dan instance private
dari suatu class .asis virtual$maka
yang menang adala+ instance pu.lic2
Program">2%#
)-"++
tana%an 6
(*b-i) M
5,i% (abitat()A
(.,te)te%M
+h,.t tinggiA
8A
)-"++ bua( M (*b-i) 5i.t*"- tana%an 6!!!8A
>a&& &ayur M (.i5"te 5i.t*"- tana%an 6!!!8A
)-"++ nangka M (*b-i) bua(, (*b-i) &ayur 6!!!8A
",$2$ !nheritan/e betGeen /la''
7n+eritance memungkinkan kita
untuk mem.uat o.jek dari o.jek
se.elumnya$ se+ingga memungkin6
an untuk menyertakan .e.erapa
anggota o.jek se.elumnya ditam.a+
dengan anggota o.jeknya sendiri2
Aonto+$ mem.uat class untuk
mengeta+ui apaka+ segi empat
3ARectangle4$ atau 3ATriangle42
*asing6masing mempunyai +al yang
sama yaitu$ dasar dan tinggi2 Dapat
direpresentasikan dengan class
APolygon kemudian diturunkan
menjadi ARectangle dan ATriangle2
Alass APolygon dapat .erisi
anggota yang dipakai untuk setiap
polygon$ dalam +al ini widt+ dan
+eig+t$ dan ARectangle dan
2008 | Direktorat Pembinaan SMK
'>@
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
ATriangle adala+ class turunannya2
Alass turunan akan menurunkan
seluru+ anggota yang dimiliki ole+
class dasar3parent4nya2 )adi jika
class paret mempunyai anggota A
dan diturunkan pada class lain
dengan anggota !$maka clas turunan
ini akan memiliki A dan !2
ntuk menurunkan class$
menggunakan operator : 3colon4 pada
saat deklarasi$ synta& :
)-"++ deriedEclassEnameO
(*b-i)
baseEclassEnameV
Dimana derived]class]name
adala+ nama dari derived class dan
.ase]class]name adala+ nama dari
class asal2 (ubli/ dapat digantikan
dengan tipe akses lainnya :
(rote/te% atau (riBate$ Per+atikan
conto+ program di.awa+ ini :
Program ">2%@
=in>ude ?io&trea%!(@
)-"++ CGoygon 6
(.,te)te%M
it Pidt(, (eig(tA
(*b-i)M
5,i% &etW3aue& (it a, it b)
6 Pidt('aA (eig(t'bA8
8A
)-"++ C/e>tangeM (*b-i) CGoygon 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t)A 8
8A
)-"++ C4riangeM (*b-i) CGoygon 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t / ")A 8
8A
it %ain () 6
C/e>tange re>tA
C4riange trgA
re>t!&etW3aue&
(#,*)A
trg!&etW3aue&
(#,*)A
>out ?? re>t!area() ?? endA
>out ?? trg!area() ?? endA
&y&te%(BGA$S<B)A
'(-
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ :
"0 10
Alass ARectangle dan ATriangle masing6masing mengandung anggota dari
APolygon$ yaitu : widt+$ +eig+t dan set]values342
",$4$ Multi(le inheritan/e
Dalam ABB memungkinkan
untuk menurunkan 5ield atau met+od
dari satu atau le.i+ class dengan
menggunakan operator koma dalam
deklarasi class turunan2 Aonto+$ akan
di.uat class untuk menampilkan
dilayar 3A8utput4 dan akan
diturunkan ke class ARectangle and
ATriangle maka dapat dituliskan :
>a&& C/e>tangeM pubi>
CGoygon, pubi> COutput 6 >a&&
C4riangeM pubi> CGoygon,
pubi> COutput 6
per+atikan conto+ program multiple
in+eritance di.awa+ ini:
Program ">2=-
=in>ude ?io&trea%!(@
)-"++ CGoygon 6
(.,te)te%M
it Pidt(, (eig(tA
(*b-i)M
5,i% &etW3aue& (it a, it b)
6 Pidt('aA (eig(t'bA8
8A
)-"++ COutput 6
(*b-i)M
5,i% output (it i)A 8A
5,i% COutputMMoutput (it i) 6
>out ?? i ?? endA 8
)-"++ C/e>tangeM (*b-i) CGoygon, (*b-i) COutput 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t)A 8
2008 | Direktorat Pembinaan SMK
'("
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
8A
)-"++ C4riangeM (*b-i) CGoygon, (*b-i) COutput 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t / ")A 8
8A
it %ain () 6
C/e>tange re>tA
C4riange trgA
re>t!&etW3aue&
(#,*)A
trg!&etW3aue&
(#,*)A re>t!output
(re>t!area())A
trg!output
(trg!area())A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ :
"0 10
",$"5$Pol3mor(hi'm
ntuk mempelajari materi
polimor5isme kita +arus pa+am dulu
ter+adap penggunaan pointer dan
in+eritance2 Ao.a anda pa+ami
instruksi .erikut$ jika anda masi+
.elum pa+am pelajari kem.ali materi
terkait:
int aMMb(>) 68A //
<ateri Class a;@b
// <ateri pointer >a&& aM pubi> bA
// <ateri Belationships
bet?een classes
",$"5$"$ Pointer' to Ba'e .la''
Sala+ satu keuntungan ter.esar
dalam menurunkan class adala+
.a+wa pointer ke class turunan
merupakan tipe yang kompati.el
dengan pointer ke class dasar2
!agian ini akan mem.a+as kele.i+an
ABB dalam +al terse.ut2 Se.agai
conto+ kita akan menuliskan kem.ali
program tentang persegi panjang dan
segitiga dalam conto+ se.elumnya
dengan deklarasi pointer2 Per+atikan
conto+ di.awa+ ini:
Program ">2="
=in>ude ?io&trea%!(@
)-"++ CGoygon 6
'(%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
(.,te)te%M
it Pidt(, (eig(tA
(*b-i)M
5,i% &etW3aue& (it a, it b)
6 Pidt('aA (eig(t'bA 8
8A
)-"++ C/e>tangeM (*b-i) CGoygon 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t)A 8
8A
)-"++ C4riangeM (*b-i) CGoygon 6
(*b-i)M
it area (5,i%)
6 .et*. (Pidt( E (eig(t / ")A 8
8A
it %ain ()
6 C/e>tange
re>tA
C4riange
trgA
CGoygon E ppoy1 '
Sre>tA CGoygon E
ppoy" ' StrgA
ppoy1;@&etW3aue&
(#,*)A ppoy";
@&etW3aue& (#,*)A
>out ?? B/e>tange area '
B??re>t!area() ?? endA >out ??
B4riange area ' B??trg!area() ??
endA &y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.agai .erikut:
/e>tange area ' "0
4riange area ' 10
<ungsi main mem.uat dua
pointer yang menunjuk ke o.jek dari
class APolygon$ yakni Kppoly" dan
Kppoly%2 Kedua pointer terse.ut
diinisialisasi dengan alamat o.jek
rect dan trgl$ dan karena pointer
terse.ut merupakan o.jek class
turunan dari Apolygon$ maka
inisialisasi ini .enar2 Pointer Kppoly"
dan Kppoly% dideklarasikan dari .ase
class2 7nisialisasi dengan rect dan trgl
valid$ namun pointer Kppoly" dan
Kppoly% tetap tidak dapat mengakses
mem.er ARectangle dan ATriangle2
2008 | Direktorat Pembinaan SMK
'(=
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
ntuk alasan ini$ ketika area34
dipanggil kita tidak mungkin
menggunakan pointer Kppoly" dan
Kppoly%2 ntuk mem.uat agar
Kppoly" dan Kppoly% dapat
memanggil area34$ maka +arus
dideklarasikan pada .ase classnya
dan tidak +anya di class turunannya2
Aara mendeklarasikannya dapat kita
li+at di pem.a+asan materi Dirtual
mem.ers2
",$"5$&$ Hirtual member
ntuk mendeklarasikan elemen
se.ua+ kelas yang akan kita
rede5inisika di kelas turunan kita
+arus mendauluinya dengan keyword
Birtual maka pointer ke o.yek yang
menunjuk klas terse.ut dapat
digunakan dengan .aik2
Program ">2=%
=in>ude ?io&trea%!(@
)-"++ CSegibanyak 6
(.,te)te%M
it ebar, tinggiA
(*b-i)M
5,i% &etWniai (it a, it b)
6 ebar'aA tinggi'bA 8
5i.t*"- it ua& (5,i%)
6 .et*. (0)A 8
8A
)-"++ CSegie%patM (*b-i) CSegibanyak 6
(*b-i)M
it ua& (5,i%)
6 .et*. (ebar E tinggi)A 8
8A
)-"++ CSegitigaM (*b-i) CSegibanyak 6
(*b-i)M
it ua& (5,i%)
6 .et*. (ebar E tinggi / ")A 8
8A
it %ain ()
6 CSegie%pat
re>tA CSegitiga
trgA
CSegibanyak
poyA
CSegibanyak E ppoy1 '
Sre>tA CSegibanyak E
ppoy" ' StrgA
'(?
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
CSegibanyak E ppoy1 '
SpoyA ppoy1;@&etWniai
(#,*)A ppoy";@&etWniai
(#,*)A ppoy1;@&etWniai
(#,*)A
>out ?? ppoy1;@ua&() ?? endA
>out ?? ppoy";@ua&()
?? endA >out ??
ppoy1;@ua&() ?? endA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+ se.agai .erikut:
"0
10
0
Sekarang kita punya = kelas
3ASegi.anyak$ ASegiempat dan
ASegitiga4 yang memiliki anggota
yang sama: le.ar$ tinggi$ set]nilai34
dan luas342 :uas34 tela+ dide5inisikan
se.agai virtual karena itu akan
dide5inisikan kem.ali pada kelas
turunan2 Anda dapat melakukan
veri5ikasi jika anda ingin
melakukannya dengan
meng+ilangkan keyword virtual dari
kode program diatas dan kemudian
anda eksekusi program terse.ut$
+asil akan men+adi - untuk ketiga
segi.anyak .ukannya %-$"-$-2 ini
dise.a.kan karena pemanggilan
ter+adap o.yek 3ASegiempat::luas34$
ASegitiga::luas34 dan
ASegi.anyak::luas34$ akan mengacu
ke ASegi.anyak::luas34 dan akan
memanggil 5ungsi yang sama
terse.ut 3ASegi.anyak::luas34 4 untuk
semua pemanggilan melalui o.yek
kelas turunan karena pemanggilan6
nya menggunakan pointer dengan
tipe ASegi.anyak2 7ni menunjukan
kepada anda tentang kegunaan dari
keyword virtual$ yang mengijinkan
mem.erCanggota dari kelas turunan
dengan nama yang sama dengan
mem.er dari kelas dasar 3.ase class4
untuk dipanggil dari pointer dengan
tipe kelas dasar 3.as e class4 tetapi
melaksanakan 5ungsi terse.ut yang
dide5inisikan pada kelas turunan2
ntuk mema+ami polymorp+ism
terle.i+ lanjut +arus mengenal 5ungsi
virtual karena 5ungsi ini merupakan
dasarnya2 <ungsi anggota dari suatu
class dapat dijadikan 5ungsi virtual2
)ika 5ungsi ini dideklarasikan kem.ali
pada turunan dan suatu pointer yang
menunjuk class dasar diciptakan$
pointer dapat memili+ o.yek yang
tepat sekiranya 5ungsi anggota
terse.ut dipanggil via pointer2 ntuk
le.i+ mema+ami li+at conto+ .erikut:
Program ">2==
=in>ude ?>&tdib@
=in>ude ?io&trea%@
2008 | Direktorat Pembinaan SMK
'('
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
*+i! "#e+(")e &tdA
)-"++ %ak(uk
6
(*b-i)M
5,i% inHor%a&i()
6
>out??BInHor%a&i pada %ak(uk !!!!!B??endA
8
5i.t*"- 5,i% keterangan()
6
>out??BKeterangan pada %ak(uk !!!!!B??endA
8
8A
)-"++ %a%aia M (*b-i) %ak(uk
6
(*b-i)M
5,i% inHor%a&i()
6
>out??BInHor%a&i pada %a%aia !!!!!B??endA
8
5i.t*"- 5,i% keterangan()
6
>out??BKeterangan pada %a%aia !!!!!B??endA
8
8A
)-"++ &api M (*b-i) %a%aia
6
(*b-i)M
5,i% inHor%a&i()
6
>out??BInHor%a&i pada &api !!!!!B??endA
8
5i.t*"- 5,i% keterangan()
6
>out??BKeterangan pada &api !!!!!B??endA
8
8A
it %ain(it arg>, )h". Earg3NO)
'(>
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
6
%a%aia %a%aA
&api e%buA
%ak(uk EbinatangA
binatang ' S%a%aA
binatang;@inHor%a&i()A
binatang;@keterangan()A
>out??B;;;;;;;;;;;;;;;;;;;;;;;;;;;;B
??endA binatang ' Se%buA
binatang;@inHor%a&i()A
binatang;@keterangan()A
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program +asil eksekusi:
InHor%a&i pada %ak(uk c!!
Keterangan pada %a%aia
cc
;;;;;;;;;;;;;;;;;;;;;;;;;;
InHor%a&i pada
%ak(uk cc
Keterangan pada &api
c!! Gre&& any key to
>ontinue !!!
Per+atikan +asil dari program di
atas dan 5ungsi65ungsi anggota class
yang di.uat yaitu mak+luk$ mamalia$
sapi2 Alass mamalia mewarisi class
mak+luk dan class sapi mewaris
class mamalia2 Kemudian pada
deklarasi class mak+luk$ per.edaan
terletak pada 5ungsi anggota
in5ormasi34 dan keterangan34$ 5ungsi
anggota in5ormasi34 tidak ada
)eyword virtual didepannya$
sedangkan 5ungsi anggota
keterangan34 ada tam.a+an virtual2
Per.edaan class mamalia dan class
sapi +amper tidak ada per.edaan
kecuali narasinya2
Sekarang kita li+at pada .agian
main342 *ula6mula penciptaan o.yek
.aru yaitu mamal .er6class mamalia$
lem.u .er6class sapi$ dan .inatang
merupakan pointer ke class mak+luk2
Kemudian pointer 3.inatang4 ini
menunjuk ke o.yek mamal yang .er6
class mamalia2 Saat 5ungsi anggota
in5ormasi34 dipanggil dari pointer$
ternyata yang ditampilkan adala+
5ungsi anggota dari class mak+luk
.ukan 5ungsi anggota class mamalia2
Tetapi tidakdemikian saat pointer
memanggil 5ungsi anggota
keterangan34$ yang ditampilkan
adala+ 5ungsi anggota mamalia
.ukan dari 5ungsi anggota mak+luk2
*engapa demikian G Disinila+
peranan )eyword virtual$ karena
5ungsi anggota keterangan34 pada
class mak+luk diperlakukan se.agai
5ungsi virtual2 )adi jika perinta+ :
binatang;
@keterangan()A
2008 | Direktorat Pembinaan SMK
'((
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
dijalankan akan menye.a.kan 5ungsi
anggota keterangan34 milik mamalia
yang diakses karena pointer
se.elumnya suda+ diara+kan ke
o.yek mamal yang .er6class
mamalia2 9al serupa juga terjadi
pada o.yek lem.u yang .er6class
sapi2
<ungsi anggota yang di.uat
virtual perlu dideklarasikan ulang
pada setiap class turunan2 !entuk
deklarasinya +arus sama .aik nilai
.alik maupun argument6argumen
yang dipakai2 ,amun )eyword virtual
cukup dinyatakan pada class dasar$
dengan sendirinya otomatis 5ungsi
anggota terse.ut pada class turunan
juga .ersi5at virtual2 !ila 5ungsi pada
class turunan ternyata .er.eda maka
5ungsi terse.ut tidak lagi se.agai
5ungsi virtual$ dan pada saat
dijalankan kompiler akan mem.er
peringatan duplikasi nama 5ungsi2
Polymorp+ism sesuai dengan
asal6usul kata pem.entuknya .erarti
Hmempunyai .anyak .entuk12 Dalam
wujudnya$ polymorp+ism dapat
.eroperasi pada dua aras$ yaitu saat
kompilasi dan saat eksekusi2
verloading ter+adap 5ungsi dan
operator merupakan .entuk
polymorp+ism saat kompilasi2 ,amun
orang le.i+ .anyak mengenal
polymorp+ism saat eksekusi atau
sering dise.ut late binding atau
dynamic binding2 9al ini
menunjukkan kemampuan untuk
menangani dua atau le.i+ .entuk
o.yek yang .erlainan pada saat
eksekusi .erlangsung$ dengan
menyesuaikan lingkungan o.yek
.ersangkutan2 Aonto+ pada program
se.elumnya pada 5ungsi in5ormasi34
dan keterangan342
Kalau diper+atikan program di
atas tidak ada penciptaan o.yek
class mak+luk$ yang ada penciptaan
pointer ke o.yek .er6class mak+luk2
Pada keadaan seperti ini .erarti
5ungsi anggota keterangan34 class
mak+luk tidak perna+ digunakan2
Kalau memang tidak +endak
digunakan le.i+ .aik disingkirkan dan
se.agai penggantinya ditam.a+kan
angka - atau di.uat I-N li+at
keterangan .erikut:
Lirtua 3oid keterangan
() ' 0A
<ungsi inila+ yang dise.ut
dengan istila+ 5ungsi virtual murni2
<ungsi virtual murni ini sering dipakai
se.agai class a.strak$ yaitu class
yang dideklarasikan tidak untuk
menciptakan o.yek2 Alass ini
mempunyai cirri paling tidak
mempunyai se.ua+ 5ungsi virtual
murni2 )ika class mak+luk +endak
di.uat class a.strak maka
peru.a+annya se.agai .erikut:
>a&&
%ak(uk
6
pubi>M
3oid inHor%a&i()
6
>out??BInHor%a&i pada %ak(uk
!!B
??endA
8
3irtua 3oid keterangan() ' 0A
8
'(#
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
",$""$OBerloa%ing
Keistimewaan program ABB
lainnya adala+ adanya 5asilitas
operator overloading$ yaitu
penamaan 5ungsi tidak seperti pada
umumnya$ melainkan nama 5ungsi
.erupa kata kunci operator diikuti
dengan lam.ang operator yang
digunakan2 *isalnya nama 5ungsi
operatorI yang dapat dipanggil
dengan +anya menuliskan operator I
seperti pada operasi penugasan
.iasa$ se+ingga dapat di.uat 5ungsi
penugasan versi sendiri untuk tipe6
tipe data tertentu$ seperti kita dapat
menyatakan Time t% I t"$ dan
se.againya2 )ika kita mempunyai
ekspresi di.awa+ ini :
int a, b,
>A
a ' b
: >A
adala+ .enar$ selama varia.le6
varia.el terse.ut merupakan tipe
data dasar2 ,amun tidak demikian
+alnya dengan conto+ .erikut:
&tru>t
6
>(ar produ>t N*0OA
^oat pri>eA 8 a, b, >A
a ' b : >A
Tetapi ABB memungkinkan +al
seperti diatas dengan menggunakan
overload operator2 Di.awa+ ini
adala+ operator6operator yang dapat
dioverload:
: ; E / ' ? @ :' ;'
E' /' ?? @@
? ?' @ @' '' _' ?' @' :: ;;
R S Q _ f
e S' Q' f' SS ff R' NO ()
neP deete
ntuk mengoverload operator kita
cukup menuliskan satu 5ungsi
anggota class dengan nama
o(erator diikuti dengan operator apa
yang akan dioverload2 Synta&nya
se.agai .erikut:
type operator &ign
(para%eter&)A
*isalnya ketika akan menjumla+kan
vector % dimensi a3=$"4 and .3"$%42
9asilnya adala+ s..: 3=B"$"B%4 I
3?$=42 ntuk keperluan ini maka kita
dapat mengoverload operator B
seperti dalam conto+ .erikut :
Program ">2=?
=in>ude ?io&trea%!(@
)-"++ CLe>tor 6
(*b-i)M it
Y,yA
CLe>tor ()
68A
CLe>tor (it,it)A
CLe>tor ,(e."t,. : (CLe>tor)A
8A
CLe>torMMCLe>tor (it a, it b) 6
Y ' aA
y ' bA
2008 | Direktorat Pembinaan SMK
'(@
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
8
CLe>tor CLe>torMM,(e."t,.:
(CLe>tor para%) 6 CLe>tor te%pA
te%p!Y ' Y : para%!YA
te%p!y ' y : para%!yA
.et*. (te%p)A
8
it %ain ()
6 CLe>tor a
(1,1)A
CLe>tor b
(1,")A
CLe>tor >A
> ' a : bA
>out ?? >!Y ?? B,B ?? >!yA
&y&te%(BGA$S<B)A
.et*. <9I4WS$CC<SSA
8
Keluaran program diatas adala+:
# , 1
)ika kita tidak jelas dengan
.anyaknya pernyataan ADector yg
dipakai$ per+atikan .a+wa .e.erapa
mengacu pada class ADector dan
.e.erapa merupakan 5ungsi2
CLe>tor (int, int)A
// fungsi C9ector Aconstructor%
CLe>tor operator: (CLe>tor)A
// fungsi operatorP yang
return alue
nya bertipe C9ector
<ungsi operatorB dalam class
ADector yang .ertipe ADector
terse.ut digunakan untuk
mengoverload operator B $ se+ingga
pada program untuk menjumla+kan
vector a $. dan +asilnya disimpan di
vector c kita dapat menggunakan
sala+ satu instruksi .erikut:
> ' a : bA
> '
a!operator:
(b)A
Per+atikan .a+wa kita juga +arus
mengikutkan empty constructor
3tanpa parameter4 yang kita
de5inisikan dengan .lok tanpa
instruksi2
CLe>tor ()
6 8A
7ni penting$ karena kita mempunyai
deklarasi
CLe>tor
te%pA
CLe>tor >M
Se+ingga jika empty constructor
terse.ut di+ilangkan maka dua
deklarasi terse.ut menjadi tidak valid2
Empty constructor dapat juga
dideklarasikan seperti di.awa+ ini :
'#-
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
CLe>tor () 6 Y'0A y'0A 8A dan untuk
menyeder+anakan penulisan
maka tidak disertakan2
Program ">2='
=in>ude ?>&tdib@
=in>ude ?io&trea%@
*+i! "#e+(")e &tdA
)-"++ 4i%e 6
7.ie% o&trea%S ,(e."t,. ?? (o&trea%S, 4i%eS)A
// untuk fungsi cout QQ obyek
(*b-i
)M 4i%e(it ('0, it %'0, it &'0)A //
default constructor 4i%eS ,(e."t,.::()A
// prefi" increment 4i%eS ,(e."t,.:'(),+t
4i%eS)A // operator PI
4i%eS ,(e."t,.:'(),+t it)A
4i%eS ,(e."t,.:(),+t 4i%eS)A // operator P
4i%eS ,(e."t,.:(),+t it)A
e4i%e() 6>out ?? BGrogra% &ee&aiB ?? endA8 // destructor
(.i5"teM
5,i% Hor%at()A // memformat nilai
obyek
it (ourA // agar
sesuai! misalnya; it %inuteA
// &(;32;R/ N &4;/3;&/ it &e>ondA
8A
4i%eMM4i%e(it ('0, it %'0, it &'0) 6
(our ' (A
%inute '
%A
&e>ond '
&A
8
5,i% 4i%eMMHor%at() 6
it t% ' %inute, t& ' &e>ondA
i7 (&e>ond @@' ,0) 6
&e>ond R' ,0A
%inute :' (it) (t&/,0)A
t% ' %inuteA
8
i7 (%inute @@' ,0) 6
%inute R' ,0A
2008 | Direktorat Pembinaan SMK
'#"
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
(our :' (it) (t%/,0)A
8
i7 ((our @@' "#) (our R' "#A
8
4i%eS 4i%eMM,(e."t,.:' (),+t
4i%eS t) 6
&e>ond ' &e>ond :
t!&e>ondA %inute '
%inute : t!%inuteA
(our ' (our : t!(ourA
Hor%a
tA
.et*.
Ethi+A
8
4i%eS 4i%eMM,(e."t,.:'
(),+t it t) 6
&e>ond '
&e>ond : tA
Hor%a
tA
.et*.
Ethi+A
8
4i%eS
4i%eMM,(e."t,.:: () 6
&e>ond::A
Hor%atA
.et*. Ethi+A
8
4i%eS 4i%eMM,(e."t,.: (),+t
4i%eS t) 6 &e>ond '
&e>ond : t!&e>ondA %inute
' %inute : t!%inuteA
(our ' (our : t!(ourA
Hor%at((our, %inute,
&e>ond)A .et*. Ethi+A
8
4i%eS 4i%eMM,(e."t,.:
(),+t it t) 6 &e>ond '
&e>ond : tA Hor%at((our,
%inute, &e>ond)A .et*.
Ethi+A
8
o&trea%S ,(e."t,. ?? (o&trea%S o&tr, 4i%eS t) 6
.et*. o&tr ?? (t!(our ? 10 D B0B M BB) ?? t!(our ?? BMB
?? (t!%inute ? 10 D B0B M BB) ?? t!%inute ?? BMB
?? (t!&e>ond ? 10 D B0B M BB) ?? t!&e>ondA
8
'#%
Direktorat Pembinaan SMK | 2008
&nheritance, Polymorphism,verloading dan Friends Bahasa Pemrorgraman
ntuk le.i+ mem.erikan gam.aran
lagi tentang penanganan suatu
o.yek$ .erikut dide5enisikan suatu
tipe kelas intArray untuk pengelolaan
array .ilangan .ulat yang le.i+
5leksi.el dari yang .iasanya2
Program ">2=>
=in>ude ?io&trea%!(@
),+t it arraySiZe ' "0A //ukuran default
)-"++ intArray 6
(*b-i
) M
intArray (it &Z '
ArraySiZe )A intArray (
),+t it E , it )A
intArray ( ),+t
IntArray S )A
eintArray ( ) 6 %e-ete N O ia A 8
intArray S ,(e."t,. ' ( ),+t IntArray S )A
it S ,(e."t,. N O ( it )A
it getSiZe ( ) 6 .et*. &iZe A 8
(.,te)te% M
init ( ),+t it E, it )A
it &iZeA
it EiaA
8
",$"&$ Soal Eatihan
)awa.la+ soal lati+an di.awa+ ini dengan .aik dan .enar2
"2 Apa yang dimaksud dengan o.yek dalam pemrograman
%2 Apa yang dimaksud dengan kelas
=2 Apa yang dimaksud dengan enkasulasi
?2 Apa per.edaan antara class private dan pu.lic
'2 Apa yang dimaksud dengan in+eritance
>2 !uatla+ program seder+ana dengan in+eritance
(2 Apa yang dimaksud dengan 5riend
#2 Apa yang dimaksud dengan operator overloading
@2 Apa 5ungsi dari class .asis virtual
2008 | Direktorat Pembinaan SMK
'#=
Bahasa Pemrograman &nheritance, Polymorphism,verloading dan Friends
'#?
Direktorat Pembinaan SMK | 2008
Eam(iran "$ DaCtar Ko%e AS.!!
De)i#
"-
O)t"
-
Hex Bi".F 6"-*
e
C,##e
t 00
0
000 000 0000000
0
K$F Ku >(ar
00
1
001 001 0000000
1
SO2 Start oH 2eader
00
2
00" 00" 0000001
0
S49 Start oH 4eYt
00
X
001 001 0000001
1
<49 <nd oH 4eYt
00
4
00# 00# 0000010
0
<O4 <nd oH 4ran&%i&&ion
00
M
00* 00* 0000010
1
<K[ <nXuiry
00
N
00, 00, 0000011
0
ACK A>knoPedg%ent
00
7
00+ 00+ 0000011
1
B<F Be
00
8
010 008 0000100
0
BS Ba>k&pa>e
00
J
011 007 0000100
1
24 2oriZonta 4ab
01
0
01" 00A 0000101
0
F. Fine .eed
01
1
011 00B 0000101
1
L4 Lerti>a 4ab
01
2
01# 00C 0000110
0
.. .or% .eed
01
X
01* 00D 0000110
1
C/ Carriage /eturn
01
4
01, 00< 0000111
0
SO S(iHt Out
01
M
01+ 00. 0000111
1
SI S(iHt In
01
N
0"0 010 0001000
0
DF< Data Fink <&>ape
01
7
0"1 011 0001000
1
DC1 9OK De3i>e Contro 1
01
8
0"" 01" 0001001
0
DC" De3i>e Contro "
01
J
0"1 011 0001001
1
DC1 9O.. De3i>e Contro 1
02
0
0"# 01# 0001010
0
DC# De3i>e Contro #
02
1
0"* 01* 0001010
1
KAK Kegati3e
A>knoPedge%ent 02
2
0", 01, 0001011
0
S\K Syn>(ronou& Ide
02
X
0"+ 01+ 0001011
1
<4B <nd oH 4ran&! Bo>k
02
4
010 018 0001100
0
CAK Can>e
02
M
011 017 0001100
1
<) <nd oH )ediu%
02
N
01" 01A 0001101
0
S$B Sub&titute
02
7
011 01B 0001101
1
<SC <&>ape
02
8
01# 01C 0001110
0
.S .ie Separator
02
J
01* 01D 0001110
1
0S 0roup Separator
0X
0
01, 01< 0001111
0
/S /eXue&t to Send /e>ord
0X
1
01+ 01. 0001111
1
$S $nit Separator
0X
2
0#0 0"0 0010000
0
SG Spa>e
0X
X
0#1 0"1 0010000
1
_
0X
4
0#" 0"" 0010001
0
B
0X
M
0#1 0"1 0010001
1
=
0X
N
0## 0"# 0010010
0
b
0X
7
0#* 0"* 0010010
1
R
0X
8
0#, 0", 0010011
0
S
0X
J
0#+ 0"+ 0010011
1
a
04
0
0*0 0"8 0010100
0
(
04
1
0*1 0"7 0010100
1
)
*8*
04
2
0*" 0"A 0010101
0
E
04
X
0*1 0"B 0010101
1
:
04
4
0*# 0"C 0010110
0
,
04
M
0** 0"D 0010110
1
;
04
N
0*, 0"< 0010111
0
!
04
7
0*+ 0". 0010111
1
/
04
8
0,0 010 0011000
0
0
04
J
0,1 011 0011000
1
1
0M
0
0," 01" 0011001
0
"
0M
1
0,1 011 0011001
1
1
0M
2
0,# 01# 0011010
0
#
0M
X
0,* 01* 0011010
1
*
0M
4
0,, 01, 0011011
0
,
0M
M
0,+ 01+ 0011011
1
+
0M
N
0+0 018 0011100
0
8
0M
7
0+1 017 0011100
1
7
0M
8
0+" 01A 0011101
0
M
0M
J
0+1 01B 0011101
1
A
0N
0
0+# 01C 0011110
0
?
0N
1
0+* 01D 0011110
1
'
0N
2
0+, 01< 0011111
0
@
0N
X
0++ 01. 0011111
1
D
0N
4
100 0#0 0100000
0
k
0N
M
101 0#1 0100000
1
A
0N
N
10" 0#" 0100001
0
B
0N
7
101 0#1 0100001
1
C
0N
8
10# 0## 0100010
0
D
0N
J
10* 0#* 0100010
1
<
07
0
10, 0#, 0100011
0
.
07
1
10+ 0#+ 0100011
1
0
07
2
110 0#8 0100100
0
2
07
X
111 0#7 0100100
1
I
07
4
11" 0#A 0100101
0
C
07
M
111 0#B 0100101
1
K
07
N
11# 0#C 0100110
0
F
07
7
11* 0#D 0100110
1
)
07
8
11, 0#< 0100111
0
K
07
J
11+ 0#. 0100111
1
O
08
0
1"0 0*0 0101000
0
G
08
1
1"1 0*1 0101000
1
[
08
2
1"" 0*" 0101001
0
/
08
X
1"1 0*1 0101001
1
S
08
4
1"# 0*# 0101010
0
4
08
M
1"* 0** 0101010
1
$
*8,
08
N
1", 0*, 0101011
0
L
08
7
1"+ 0*+ 0101011
1
T
08
8
110 0*8 0101100
0
9
08
J
111 0*7 0101100
1
\
0J
0
11" 0*A 0101101
0
]
0J
1
111 0*B 0101101
1
N
0J
2
11# 0*C 0101110
0
`
0J
X
11* 0*D 0101110
1
O
0J
4
11, 0*< 0101111
0
Q
0J
M
11+ 0*. 0101111
1
W
0J
N
1#0 0,0 0110000
0
i
0J
7
1#1 0,1 0110000
1
a
0J
8
1#" 0," 0110001
0
b
0J
J
1#1 0,1 0110001
1
>
10
0
1## 0,# 0110010
0
d
10
1
1#* 0,* 0110010
1
e
10
2
1#, 0,, 0110011
0
H
10
X
1#+ 0,+ 0110011
1
g
10
4
1*0 0,8 0110100
0
(
10
M
1*1 0,7 0110100
1
i
10
N
1*" 0,A 0110101
0
-
10
7
1*1 0,B 0110101
1
k
10
8
1*# 0,C 0110110
0

10
J
1** 0,D 0110110
1
%
11
0
1*, 0,< 0110111
0
n
11
1
1*+ 0,. 0110111
1
o
11
2
1,0 0+0 0111000
0
p
11
X
1,1 0+1 0111000
1
X
11
4
1," 0+" 0111001
0
r
11
M
1,1 0+1 0111001
1
&
11
N
1,# 0+# 0111010
0
t
11
7
1,* 0+* 0111010
1
u
11
8
1,, 0+, 0111011
0
3
11
J
1,+ 0++ 0111011
1
P
12
0
1+0 0+8 0111100
0
Y
12
1
1+1 0+7 0111100
1
y
12
2
1+" 0+A 0111101
0
Z
12
X
1+1 0+B 0111101
1
6
12
4
1+# 0+C 0111110
0
f
12
M
1+* 0+D 0111110
1
8
12
N
1+, 0+< 0111111
0
e
12
7
1++ 0+. 0111111
1
D<F
*8+
Eam(iran &$ Ke3Gor% .DD
1 a&% in&ert an a&&e%by in&tru>tion
2 auto de>are a o>a 3ariabe
X boo de>are a booean 3ariabe
4 break break out oH a oop
M >a&e a bo>k oH >ode in a &Pit>( &tate%ent
N >at>( (ande& eY>eption& Hro% t(roP
7 >(ar de>are a >(ara>ter 3ariabe
8 >a&& de>are a >a&&
J >on&t de>are i%%utabe data or Hun>tion& t(at do not
>(ange data
10 >on&tW>a&t >a&t Hro% >on&t 3ariabe&
11 >ontinue bypa&& iteration& oH a oop
12 deHaut deHaut (ander in a >a&e &tate%ent
1X deete %ake %e%ory a3aiabe
14 do ooping >on&tru>t
1M doube de>are a doube pre>i&ion Hoating;point 3ariabe
1N dyna%i>W>a&t perHor% runti%e >a&t&
17 e&e aternate >a&e Hor an iH &tate%ent
18 enu% >reate enu%eration type&
1J eYpi>it ony u&e >on&tru>tor& P(en t(ey eYa>ty %at>(
20 eYport aoP& te%pate de5nition& to be &eparated Hro% t(eir
de>ara
21 eYtern te t(e >o%pier about 3ariabe& de5ned e&eP(ere
22 Ha&e t(e booean 3aue oH Ha&e
2X ^oat de>are a ^oating;point 3ariabe
24 Hor ooping >on&tru>t
2M Hriend grant non;%e%ber Hun>tion a>>e&& to pri3ate data
2N goto -u%p to a diHHerent part oH t(e progra%
27 iH eYe>ute >ode ba&ed of oH t(e re&ut oH a te&t
28 inine opti%iZe >a& to &(ort Hun>tion&
2J int de>are a integer 3ariabe
X0 ong de>are a ong integer 3ariabe
X1 %utabe o3erride a >on&t 3ariabe
X2 na%e&pa>e partition t(e goba na%e&pa>e by de5ning a &>ope
XX neP ao>ate dyna%i> %e%ory Hor a neP 3ariabe
X4 operator >reate o3eroaded operator Hun>tion&
XM pri3ate de>are pri3ate %e%ber& oH a >a&&
XN prote>ted de>are prote>ted %e%ber& oH a >a&&
X7 pubi> de>are pubi> %e%ber& oH a >a&&
*88
X8 regi&ter reXue&t t(at a 3ariabe be opti%iZed Hor &peed
XJ reinterpretW>a
&t
>(ange t(e type oH a 3ariabe
40 return return Hro% a Hun>tion
41 &(ort de>are a &(ort integer 3ariabe
42 &igned %odiHy 3ariabe type de>aration&
4X &iZeoH return t(e &iZe oH a 3ariabe or type
44 &tati> >reate per%anent &torage Hor a 3ariabe
4M &tati>W>a&t perHor% a nonpoy%orp(i> >a&t
4N &tru>t de5ne a neP &tru>ture
47 &Pit>( eYe>ute >ode ba&ed of oH diHHerent po&&ibe 3aue& Hor
a 3ariabe
48 te%pate >reate generi> Hun>tion&
4J t(i& a pointer to t(e >urrent ob-e>t
M0 t(roP t(roP& an eY>eption
M1 true t(e booean 3aue oH true
M2 try eYe>ute >ode t(at >an t(roP an eY>eption
MX typedeH >reate a neP type na%e Hro% an eYi&ting type
M4 typeid de&>ribe& an ob-e>t
MM typena%e de>are a >a&& or unde5ned type
MN union
a &tru>ture t(at a&&ign& %utipe 3ariabe& to t(e &a%e
%e%ory
o>ation
M7 un&igned de>are an un&igned integer 3ariabe
M8 u&ing i%port >o%pete or partia na%e&pa>e& into t(e
>urrent &>ope
MJ 3irtua >reate a Hun>tion t(at >an be o3erridden by a deri3ed
>a&&
N0 3oid de>are Hun>tion& or data Pit( no a&&o>iated data type
N1 3oatie
Parn t(e >o%pier about 3ariabe& t(at >an be
%odi5ed
uneYpe>tedy
N2 P>(arWt de>are a Pide;>(ara>ter 3ariabe
NX P(ie ooping >on&tru>t
*87

Anda mungkin juga menyukai