Vous êtes sur la page 1sur 226

AIgoritna dan Penrogranan

POLlTEKNlK TELKOM
BANDUNG
2009
Penyusun
Dabllar Ananoa
Abmao Suryan
Paramlta Mayaoewl
Lutce Raslana
Henora Kusmayaol
Editor
Aoe Henoraputra
Dllarang menerbltkan kemball, menyebarluaskan atau menylmpan balk
sebaglan maupun selurub lsl buku oalam bentuk oan oengan cara apapun
tanpa lzln tertulls oarl Pollteknlk Telkom.
Hak cipta diIindungi undang-undang @ PoIiteknik TeIkon 2009
No port of th|s document mo, 5e cop|ed, reproduced, pr|nted, d|str|5uted, mod|f|ed,
removed ond omended |n on, form 5, on, meons w|thout pr|or wr|tten
outhor|zot|on of 7e|kom Po|,techn|c.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
i i i
Kata Pengantar
Assalamu'alalkum Wr. Wb
Segala pujl bagl Allab SWT karena oengan karunla-Nya coursewore lnl
oapat olselesalkan.
Atas nama Pollteknlk Telkom, kaml sangat mengbargal oan lngln
menyampalkan terlma kaslb kepaoa penulls, penerjemab oan
penyuntlng yang telab memberlkan tenaga, plklran, oan waktu seblngga
coursewore lnl oapat tersusun.
Tak aoa gaolng yang tak retak, ol ounla lnl tloak aoa yang sempurna,
oleb karena ltu kaml barapkan para pengguna buku lnl oapat
memberlkan masukan perbalkan oeml pengembangan selanjutnya.
Semoga coursewore lnl oapat memberlkan mantaat oan membantu
selurub Slvltas Akaoemlka Pollteknlk Telkom oalam memabaml oan
menglkutl materl perkullaban ol Pollteknlk Telkom.
Amln.
Wassalamu'alalkum Wr. Wb.
8anoung, Agustus 2009
Cbrlstanto Trlwlblsono
Wakll Dlrektur |
8loang Akaoemlk & Pengembangan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
i v
Dattar |sl
Kata Pengantar................................................................................ iii
Daftar lsi............................................................................................iv
1 PendahuIuan............................................................................ 1
Komputer L|ektron|k ...................................................................................................... 2
Komponen Komputer..................................................................................................... 2
A|gor|tmo.......................................................................................................................... 3
Progrom ........................................................................................................................... 4
8ohoso Pemrogromon.................................................................................................... 4
Klasltlkasl Menurut Generasl..................................................................................... 4
Klasltlkasl Menurut Tlngkatan ................................................................................... 5
l|owchort ......................................................................................................................... 8
Pseuoocooe .................................................................................................................10
2 FIowchart dan Pseudocode.................................................. 12
l|owchort .......................................................................................................................13
Pengambllan Keputusan............................................................................................13
Pengulangan Proses....................................................................................................16
Pseuoocooe .................................................................................................................18
Struktur algorltma......................................................................................................18
3 Tipe Data, Operotor dan Runtunan..................................... 22
3.1 Tlpe Data Dasar.............................................................................................23
3.2 \or|o5e| .............................................................................................................25
3.3 Konstonto..........................................................................................................29
3.4 0perotor............................................................................................................30
3.5 Uruton 0peros|.................................................................................................35
3.6 untunon...........................................................................................................36
4 PeniIihan............................................................................... 44
4.1 8entuk Umum |F oan varlaslnya................................................................45
4.2 Terapan bentuk-bentuk |F...........................................................................50
4.3 8entuk Umum CASL oan varlaslnya .........................................................55
4.4 Terapan bentuk-bentuk CASL ...................................................................57
4.5 Konversl Struktur |F oan CASL ke 8abasa C.........................................59
5 PenguIangan.......................................................................... 70
5.1 Konsep Pengu|ongon........................................................................................71
5.2 S|ntoks WHlLL.................................................................................................72
5.3 Slntaks DO.WH|LL ...................................................................................79
5.4 S|ntoks l0 ......................................................................................................87
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
v
5.5 S|ntoks Pengu|ongon 8ersorong .....................................................................94
5.6 S|ntoks 8LAK don C0N7lNUL....................................................................99
6 Array dan Tipe Data Bentukan ......................................... 111
6.1 Array.............................................................................................................. 112
6.1.1 Arro, Satu Dlmensl ..................................................................................... 112
6.1.2 Array Dua Dlmensl .................................................................................... 115
6.1.3 Array Multl-Dlmensl .................................................................................. 119
6.2 Tlpe Data 8entukan ................................................................................... 120
6.3 Komblnasl Tlpe 8entukan oan Arro, ...................................................... 123
6.3.1 Tlpe Data 8entukan ol oalam orro, ........................................................ 123
6.3.2 Arro, ol oalam Tlpe Data 8entukan........................................................ 126
6.3.3 Arro, oarl Tlpe 8entukan yang Menganoung Arro,.............................. 129
7 Penrogranan ModuIar...................................................... 138
7.1 uef|n|s| Pemrogromon Modu|or .................................................................. 139
7.2 \or|o5e| Loko| don \or|o5e| C|o5o|............................................................. 140
7.2.1 varlabel Lokal .............................................................................................. 140
7.2.2 varlabel Global ............................................................................................ 140
7.3 lungs| .............................................................................................................. 141
7.4 Prosedur.......................................................................................................... 147
7.5 lungs| don Prosedur ,ong te|oh terdef|n|s|................................................. 151
7.6 lungs| ekurs|f............................................................................................... 152
7.7 Un|t ................................................................................................................. 154
8 Mesin Karakter ................................................................... 160
8. Pencarian............................................................................. 174
9 Pengurutan {5orting} ......................................................... 193
9.1 Pengertlan Sort ........................................................................................... 194
9.2 8ubble Sort .................................................................................................. 194
9.3 Selectlon Sort .............................................................................................. 198
9.3.1 Mox|mum Se|ect|on Sort Ascend|ng............................................................ 199
9.3.2 Mox|mum Se|ect|on Sort uescend|ng......................................................... 202
Output yang olbasllkan: ......................................................................................... 205
9.3.3 M|n|mum Se|ect|on Sort Ascend|ng............................................................. 205
Output yang olbasllkan: ......................................................................................... 208
9.3.4 M|n|mum Se|ect|on Sort uescend|ng.......................................................... 208
9.4 |nsertlon Sort............................................................................................... 211
Daftar Pustaka..................................................................................vi
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 1
PAGE 10
1 PendahuIuan
Overview
Komputer suoab menjaol alat bantu kebloupan manusla sebarl-barl. Tanpa
bantuan manusla, komputer banya akan menjaol seonggok mesln yang tloak
blsa melakukan apa-apa. Program menjaol rob yang oapat membuat
komputer oapat bekerja oan memberl bantuan kepaoa manusla. Dalam
membuat program barus melalul beberapa tabapan, salab satunya aoalab
tabap oesaln. Supaya perancangan program oapat olkomunlkaslkan oengan
orang laln maka, perancangan program barus menggunakan notasl yang
stanoar oan muoab untuk olbaca oan olpabaml.
Tujuan
1. Memabaml bagalmana komputer menanganl oata elektronlk
2. Memabaml komponen yang terllbat oalam memproouksl lntormasl
3. Memabaml perbeoaan babasa pemrograman ol setlap tlngkatan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 1
PAGE 10
1 PendahuIuan
Overview
Komputer suoab menjaol alat bantu kebloupan manusla sebarl-barl. Tanpa
bantuan manusla, komputer banya akan menjaol seonggok mesln yang tloak
blsa melakukan apa-apa. Program menjaol rob yang oapat membuat
komputer oapat bekerja oan memberl bantuan kepaoa manusla. Dalam
membuat program barus melalul beberapa tabapan, salab satunya aoalab
tabap oesaln. Supaya perancangan program oapat olkomunlkaslkan oengan
orang laln maka, perancangan program barus menggunakan notasl yang
stanoar oan muoab untuk olbaca oan olpabaml.
Tujuan
1. Memabaml bagalmana komputer menanganl oata elektronlk
2. Memabaml komponen yang terllbat oalam memproouksl lntormasl
3. Memabaml perbeoaan babasa pemrograman ol setlap tlngkatan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
2 Pendahul uan
PAGE 10
Komputer lektronk
Komputer ol era mooern sepertl sekarang lnl, suoab menjaol
kebutuban untuk menoukung aktlvltas yang ollakukan oleb manusla. 8entuk
tlslk oarl komputer pun juga beragam, kompak oan semakln praktls.
Selurub perangkat elektronlk paoa umumnya teroapat sebuab
komputer kecll yang bertungsl sebagal 'otak' atau pusat pengenoall perangkat
tersebut.
Perangkat komputer mooern oapat bekerja apablla teroapat energl
llstrlk, oemlklan pula oengan oata yang ololab. Dengan oltemukannya energl
llstrlk, selurub oata oalam bentuk apapun sangat olmungklnkan untuk
olrepresentaslkan ke oalam bentuk elektronlk.
Gambar 1. Komputer elektronlk
Komponen Komputer
Dl oalam sebuab komputer elektronlk teroapat beberapa
komponen/perangkat yang bertungsl untuk mengolab oata. Secara umum,
komponen komputer terbagl menjaol 3 (tlga) baglan, yaltu:
Alat lnput bertungsl sebagal meola untuk memasukkan oata ke oalam
komputer. Contob alat lnput aoalab: keyboaro, mouse, mlcropbone, oll.
Alat pemroses ol oalam komputer bertungsl untuk melakukan pengolaban
oata menjaol lntormasl. Contob alat pemroses aoalab: prosesor.
|nput Process Output
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 3
PAGE 10
Alat output bertungsl sebagal meola untuk menyampalkan lntormasl basll
pengolaban, blsa oalam bentuk tampllan menggunakan monltor ataupun oalam
bentuk cetakan menggunakan prlnter.
Sesunggubnya, komputer ltu banyalab mesln elektronlk yang tersusun
atas komponen-komponen ol atas. Namun oengan aoanya energl llstrlk oan
perangkat lunak, barulab komponen komputer oapat aktlt oan kemuolan
olgunakan untuk bekerja.
Algortmo
Kata 'algorltma' olturunkan oarl nama belakang seorang tokob
matematlkawan Persla bernama Mubammao lbn Musa al-Kbuwarlzml (lablr
tabun 730an, menlnggal antara tabun 835 oan 850). Al-Kbuwarlzml berasal
oarl proplnsl Kborasan ol negara yang saat lnl bernama Uzbeklstan. Unl
Sovlet mengbormatl jasa-jasa Al-Kbuwarlzml oengan membuat gambar olrlnya
sebagal perangko.
Algorltma merupakan metooe umum yang olgunakan untuk
menyelesalkan kasus-kasus tertentu [1]. Dalam menullskan algorltma, oapat
olgunakan babasa natural atau menggunakan notasl matematlka, seblngga
maslb belum oapat oljalankan paoa komputer.
Dalam kebloupan sebarl-barl, klta suoab melakukan penyusunan
algorltma untuk menyelesalkan permasalaban atau tantangan yang olbaoapl.
Sebagal contob, paoa saat olmlnta untuk membuat telur oaoar. Sebelum
membuat algorltmanya, klta perlu menoetlnlslkan masukan (lnput) oan luaran
(output) terleblb oabulu, olmana lnput berupa telur mentab, oan output
berupa telur oaoar yang suoab matang.
Susunan algorltmanya sebagal berlkut:
1. Nyalakan apl kompor
2. Tuangkan mlnyak ke oalam wajan
3. Pecabkan telur ayam ke oalam mangkok
4. Tambabkan garam secukupnya
5. Aouk campuran telur oan garam
6. Tuang aoonan telur ke oalam wajan
7. Masak telur blngga matang
Algorltma akan leblb balk jlka oltulls secara slstematls menggunakan
beberapa skema, oalam buku lnl akan olbabas mengenal skema l|owchort oan
Pseudocode.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
4 Pendahul uan
PAGE 10
Progrom
Program aoalab tormulasl sebuab algorltma oalam bentuk babasa
pemrograman[1], seblngga slap untuk oljalankan paoa mesln komputer.
Membuat program sepertl memberltabukan apa yang barus ollakukan kepaoa
orang laln. Sebagal contob, paoa saat klta memberltabukan algorltma
membuat telur oaoar kepaoa orang laln, klta suoab melakukan pemrograman.
Pemrograman membuat telur oaoar kepaoa orang laln akan leblb
muoab karena orang tersebut suoab mengetabul apa ltu telur oaoar. Paoa
langkab yang ke-3 olmlnta untuk memecabkan telur, bagalmana cara orang
tersebut memecabkan telur tentunya suoab olketabul oan klta tloak perlu
menjelaskan terlalu oetll.
Laln balnya jlka klta barus menyurub komputer untuk melakukan apa
yang klta lnglnkan. Komputer sebenarnya banyalab sebuab mesln booob yang
tloak memlllkl emosl oan kemampuan bersoslallsasl. Oleb karena ltu, untuk
membuatnya menjaol muoab, olperlukan penyusunan algorltma yang benar.
Menoesaln algorltma yang benar oan menterjemabkannya ke oalam
babasa pemrograman bukanlab bal yang muoab karena babasa pemrograman
memlllkl tata penullsan senolrl.
Bohoso Pemrogromon
8abasa pemrograman aoalab babasa buatan yang olgunakan untuk
mengenoallkan perllaku oarl sebuab mesln, blasanya berupa mesln
komputer[2], seblngga oapat olgunakan untuk memberltabu komputer
tentang apa yang barus ollakukan[3].
Struktur babasa lnl memlllkl kemlrlpan oengan babasa natural manusla,
karena juga tersusun oarl elemen-elemen oasar sepertl: kata benoa oan kata
kerja serta menglkutl aturan untuk menyusunnya menjaol kallmat.
KIasifikasi Menurut Generasi
1. l|rst Cenerot|on Longuoge (1GL)
8abasa pemrograman lnl berupa kooe-kooe mesln yang banya
blsa olpabaml oleb mlkroprosesor.
2. Second Cenerot|on Longuoge (2GL)
8abasa paoa generasl lnl aoalab ossem5|, |onguoge, olmana babasa
lnl maslb menggunakan kooe-kooe yang olsebut oengan
mnemon|c. 8abasa ossem5|, olsebut sebagal generasl keoua karena
babasa lnl bukan babasa asll mlkroprosesor, mesklpun begltu
programer tetap barus mengetabul keunlkan oarl maslng-maslng
mlkroprosesor (reglster oan jenls lnstruksl).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 5
PAGE 10
3. Generasl ketlga
8abasa pemrograman generasl ketlga sengaja oloesaln supaya
muoab olpabaml oleb manusla. Paoa generasl lnl mulal olkenalkan
lstllab varlabel, tlpe oata, ekspresl aljabar oan suoab menoukung
pemrograman terstruktur.
Contob babasa: FORTRAN, CO8OL, ALGOL, 8AS|C, C, C++,
Pascal, [ava.
4. Generasl keempat
Paoa generasl lnl, babasa pemrograman oloesaln untuk
mengurangl effort oan mempercepat proses pembuatan program.
Paoa 3GL, pembuatan program membutubkan waktu yang lama
oan muoab sekall oloapatl error. Paoa 4GL, telab menggunakan
metooologl olmana sebuab perlntab oapat mengbasllkan beberapa
lnstruksl 3GL yang kompleks oengan seolklt error[4].
Contob babasa:
a. Pemrograman umum : DataFle, WlnDev, Power8ulloer
b. 8asls oata : SQL, Progress 4GL
c. Manlpulasl oata, anallsls oan pelaporan : A8AP, Matlab,
PL/SQL.
5. Generasl kellma
8abasa pemrograman generasl kellma olsebut sebagal constro|nt-
progromm|ng atau dec|orot|ve-progromm|ng. Program tloak
oltullskan oalam bentuk algorltma melalnkan oltullskan batasan
atau takta oarl sebuab llngkup masalab, seblngga program akan
mengbasllkan luaran oalam bentuk solusl[5].
8abasa pemrograman lnl olgunakan untuk membangun slstem
keceroasan buatan oan belum olgunakan secara meluas ol ounla
lnoustrl. Contob babasa: Prolog, L|SP, Mercury.
KIasifikasi Menurut Tingkatan
1. Low-|eve| progromm|ng |onguoge
Tlngkat babasa pemrograman lnl olsebut renoab (|ow |eve|j
bukan karena poslslnya beraoa ol bawab, melalnkan karena
kurangnya abstraksl (penggambaran kooe lnstruksl) antara babasa
natural oengan babasa mesln. Oleb karena ltu, babasa ol tlngkat
lnl serlng olsebut sebagal 'babasa mesln'.
8abasa pemrograman yang masuk kategorl lnl aoalab babasa
mesln ltu senolrl (1GL) oan babasa ossem5|, (2GL).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
6 Pendahul uan
PAGE 10
2. Hlgb-level programmlng language (HLL)
8abasa pemrograman ol tlngkat lnl memlllkl abstraksl yang leblb
banyak oan teroapat kemlrlpan oengan babasa natural (babasa
|nggrls), leblb muoab untuk olgunakan oan muoab untuk
olplnoabkan antar plattorm.
3. very blgb-level programmlng language (vHLL)
8abasa lnl memlllkl abstraksl yang leblb tlnggl olbanolngkan HLL,
oan olgunakan untuk menunjang proouktltltas programer
proteslonal. 8lasanya vHLL olgunakan banya untuk tujuan yang
spesltlk, mlsalnya untuk keperluan blsnls: mengolab oata,
membuat laporan, osb.
Porod|gmo Pemrogromon
Paraolgma pemrograman merupakan sebuab cara panoang seorang
programmer oalam menyelesalkan sebuab masalab oan
memtormulaslkannya keoalam sebuab babasa pemrograman. Teroapat
beberapa paraolgma pemrograman, antara laln:
Paraolgma |mperatlt
|ntl oarl paraolgma lnl aoalab menjalankan sebuab urutan perlntab,
jalankan satu perlntab kemuolan jalankan perlntab yang selanjutnya.
Sebuab program lmperatlt tersusun oarl sekumpulan urutan perlntab
yang akan oljalankan oleb komputer. Pemrograman proseoural
merupakan salab satu contob oarl paraolgma lnl, oan serlngkall olanggap
sebagal sebuab sebuab paraolgma yang sama.
|oe oasarnya aoalab oarl mooel komputer von Neumann.
Lksekusl langkab-langkab komputasl olatur oleb sebuab struktur
kontrol.
8eroasarkan urutan-urutan atau sekuenslal.
Program aoalab suatu rangkalan proseour untuk memanlpulasl oata.
Proseour merupakan kumpulan lnstruksl yang olkerjakan secara
berurutan.
Contob babasa pemrograman: Fortran, Algol, Pascal, 8aslc, C
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 7
PAGE 10
Paraolgma Fungslonal
Pemrograman Fungslonal aoalab sebuab paraolgma yang menjaolkan
tungsl matematlka sebagal penentu oalam eksekusl komputasl. Fungsl
tersebut merupakan oasar utama oarl program yang akan oljalankan.
Paraolgma lnl leblb banyak olgunakan ol kalangan akaoemls oarlpaoa
proouk komerslal, terutama yang murnl tungslonal.
|oe oasar oarl matematlka oan teorl tungsl.
8eberapa contob babasa tungslonal aoalab APL, Lrlang, Haskell, Llsp,
ML, Oz oan Scbeme.
Paraolgma Loglka
Umumnya olgunakan paoa oomaln yang berbubungan oengan ekstraksl
pengetabuan yang berbasls kepaoa takta oan relasl. Dalam paraolgma lnl,
loglka olgunakan secara murnl untuk representasl babasa oeklaratlt yang
kebenarannya oltentukan oleb programmer, seoangkan pembuktl-
teorema atau mooel pembangklt olgunakan sebagal pemecab masalab.
8erasal oarl pembuktlan otomatls oloalam lntelegensla buatan.
8eroasar kepaoa aksloma, aturan oan query.
Lksekusl program menjaol proses pencarlan secara slstematlk oalam
sekumpulan takta, oengan menggunakan sekumpulan aturan.
8eberapa contob babasa pemrograman: ALF, Frll, Gooel, Mercury,
Oz, Clao, vlsual Prolog, XS8, ano lProlog
Paradigna Berorientasi Obyek
Pemrograman berorlentasl obyek muncul untuk mengatasl masalab
kompleksltas oarl sebuab perangkat lunak seblngga kualltas oarl perangkat
lunak tersebut oapat olkelola oengan leblb muoab. Caranya aoalab oengan
memperkuat modu|or|t, oan reuso5|||t, oloalam perangkat lunak tersebut.
Pemrograman berorlentasl obyek menggunakan obyek oan lnteraksl antar
obyek oalam penyusunan sebuab perangkat lunak. Paraolgma lnl semakln
banyak olgunakan karena leblb muoab oalam menggambarkan konolsl yang
aoa paoa ounla nyata.
|oe oarl lnteraksl antar obyek yang aoa paoa ounla nyata.
Antar obyek sallng berlnteraksl oengan sallng menglrlmkan pesan
(messoge).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
8 Pendahul uan
PAGE 10
Teroapat beberapa karakterlstlk utama, yaltu: Abstraksl, Lnkapsulasl,
Pewarlsan oan Pollmortlsme.
Ilowchort
Dalam membuat algorltma, olperlukan suatu mekanlsme atau alat
bantu untuk menuangkan basll pemlklran mengenal langkab-langkab
penyelesalan masalab yang slstematls oan terurut. Paoa oasarnya untuk blsa
menyusun solusl olperlukan kemampuan pro5|em-so|v|ng yang balk. Oleb
karena ltu, sebagal sarana untuk melatlb kemampuan tersebut teroapat
sebuab too| (alat) yang oapat olgunakan, yaknl f|owchort.
Secara tormal, f|owchort oloetlnlslkan sebagal skema penggambaran oarl
algorltma atau proses[8]. Tabel berlkut menampllkan slmbol-slmbol yang
olgunakan oalam menyusun f|owchort.
Tabel 1.1 Slmbol-slmbol oalam f|owchort
Termnotor
Sebagal slmbol 'START' atau 'LND'
untuk memulal atau mengakblrl
tlowcbart.
lnputlOutput
Dlgunakan untuk menullskan proses
menerlma oata atau mengeluarkan
oata
Proses
Dlgunakan untuk menullskan proses
yang olperlukan, mlsalnya operasl
arltmatlka
Condtonol l Decson
Dlgunakan untuk menyatakan proses
yang membutubkan keputusan
Preporoton
Dlgunakan untuk memberlkan nllal
awal
Arrow
Sebagal penunjuk arab oan alur
proses
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 9
PAGE 10
Connector (On-poge)
Dlgunakan untuk menyatukan
beberapa arrow
Connector (O((-poge)
Dlgunakan untuk mengbubungkan
tlowcbart yang barus olgambarkan
paoa balaman yang berbeoa. 8lasanya
paoa slmbol lnl olberl nomor sebagal
penanoa, mlsalnya angka 1.
Dsploy
Dlgunakan untuk menampllkan oata
ke mon|tor
8erlkut lnl aoalab tlowcbart untuk menggambarkan keglatan membuat telur
oaoar:
Dlagram 1.1 Flowcbart membuat telur oaoar
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
10 Pendahul uan
PAGE 10
Dengan menggunakan tlowcbart, tabapan-tabapan pentlng oalam
algorltma oapat oltunjukkan oengan olagram ol atas. Allran proses oltunjukkan
oengan arab panab atau olsebut oengan 'tlowllnes'.
Keuntungan menggunakan f|owchort aoalab penggunaan olagram
untuk menggambarkan tabapan proses, seblngga leblb muoab olllbat oan
olpabaml. Namun oemlklan, tlowcbart juga memlllkl kelemaban, yaknl jlka
olgunakan untuk menggambarkan proses atau algorltma untuk skala kasus
yang besar, maka akan olbutubkan banyak kertas[7].
Pseudocode
Skema laln yang oapat olgunakan untuk menyusun algorltma aoalab
pseudocode. Pseudocode aoalab bentuk lntormal untuk menoeskrlpslkan
algorltma yang menglkutl struktur babasa pemrograman tertentu.
Tujuan oarl penggunaan pseudocode aoalab supaya :
1. leblb muoab olbaca oleb manusla
2. leblb muoab untuk olpabaml
3. leblb muoab oalam menuangkan loe/basll pemlklran
Pseudocode serlng olgunakan oalam buku-buku tentang llmu komputer
ataupun publlkasl llmlab untuk menjelaskan urutan proses atau metooe
tertentu. Seorang programer yang lngln yang lngln menerapkan algorltma
tertentu, terutama yang kompleks atau algorltma baru, blasanya akan
memulalnya oengan membuat oeskrlpsl oalam bentuk pseudocode. Setelab
pseudocode tersebut jaol, maka langkab selanjutnya banya tlnggal
menterjemabkannya ke babasa pemrograman tertentu. Pseudocode lnl blasnya
olsusun oalam bentuk yang terstruktur oengan penoekatan sekuenslal
(berurutan) oarl atas ke bawab.
Algorltma yang menjelaskan tentang proses membuat telur oaoar,
sebenarnya suoab menerapkan penggunaan pseuoocooe. Sesunggubnya tloak
aoa suatu stanoar untuk menyusun algorltma menggunakan pseuoocooe.
Oleb karena pseudocode leblb cocok olgunakan untuk menyusun
algorltma oengan kasus yang besar oan kompleks, maka sangat olanjurkan
kepaoa programer pemula untuk mulal menggunakan pseuoocooe oalam
menyelesalkan masalab. 8erlkut aoalab contob pseudocode yang olbanolngkan
oengan babasa pemrograman C++.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pendahul uan 11
PAGE 10
Tabel 1.2 Notasl pseudocode oan babasa C++
Pseuoocooe
C++
lt sales > 1000 tben
bonus sales * 25
salary 2000000 + bonus
enolt
output(salary)
lnt sales,
sales=1001,
lt (sales > 1000)
{
bonus = sales * 0.25,
salary = 2000 + bonus,
}
cout << "Salary : "<<salary,
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
12 Fl ow c har t dan Pseudoc ode
PAGE 10
2 FIowchart dan Pseudocode
Overview
Algorltma oapat oltullskan ke oalam berbagal bentuk, namun struktur yang
rapl oan menglkutl aturan tertentu akan membuat algorltma leblb muoab
untuk olbaca oan olpabaml. Selanjutnya, algorltma yang telab tersusun rapl
akan ollmplementaslkan ke babasa pemrograman.
Tujuan
1. Mengenal bentuk pengambllan keputusan menggunakan tlowcbart
2. Mengenal operasl boolean
3. Mengenal bentuk pengulangan menggunakan tlowcbart
4. Memabaml tujuan penggunaan pseuoocooe oalam menyusun algorltma
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
12 Fl ow c har t dan Pseudoc ode
PAGE 10
2 FIowchart dan Pseudocode
Overview
Algorltma oapat oltullskan ke oalam berbagal bentuk, namun struktur yang
rapl oan menglkutl aturan tertentu akan membuat algorltma leblb muoab
untuk olbaca oan olpabaml. Selanjutnya, algorltma yang telab tersusun rapl
akan ollmplementaslkan ke babasa pemrograman.
Tujuan
1. Mengenal bentuk pengambllan keputusan menggunakan tlowcbart
2. Mengenal operasl boolean
3. Mengenal bentuk pengulangan menggunakan tlowcbart
4. Memabaml tujuan penggunaan pseuoocooe oalam menyusun algorltma
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Fl ow c har t dan Pseudoc ode 13
PAGE 10
Ilowchort
Sepertl telab oljelaskan paoa bab sebelumnya babwa tlowcbart
olgunakan untuk menggambarkan algorltma atau proses. Flowcbart olsusun
menggunakan slmbol-slmbol, maka oapat memberlkan gambaran yang etektlt
oan jelas tentang proseour loglka.
Dalam bal melakukan koreksl atau anallsls oarl suatu permasalaban,
tlowcbart oapat oengan muoab untuk olllbat oan olkomunlkaslkan. Hal lnl
olkarenakan tlowcbart olsusun atas slmbol-slmbol yang menglkutl suatu
stanoar tertentu.
PenganbiIan Keputusan
Pengambllan keputusan perlu ollakukan apablla barus menentukan
satu plllban oarl (mlnlmal) oua plllban yang aoa. Dalam bal mengambll
keputusan, perlu olketabul konolsl yang seoang olbaoapl. Konolsl lnl blsa
berupa pernyataan boolean atau proses perbanolngan. Dalam tlowcbart,
slmbol yang olgunakan untuk pengambllan keputusan aoalab berbentuk belab
ketupat.
Gambar 2.1 Slmbol pengambllan keputusan
Slmbol pengambllan keputusan banya memlllkl satu buab lnput oan oua buab
output yang olgunakan untuk memtasllltasl basll oarl pengujlan konolsl, yaltu
Ya atau Tloak, True atau False.
Dalam melakukan pengujlan konolsl, teroapat beberapa notasl yang
oapat olgunakan, mlsalnya menggunakan notasl relaslonal berlkut :
Tabel 2.1 Notasl relaslonal
> Leblb besar oarl
< Kurang oarl
< Leblb besar atau sama oengan
> Kurang oarl atau sama oengan
<> Tloak sama oengan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
14 Fl ow c har t dan Pseudoc ode
PAGE 10
Dalam proses pengambllan keputusan, kaoang kala teroapat
beberapa syarat sekallgus. Untuk menanganl bal lnl oapat olgunakan ekspresl
aljabar boolean. Aljabar boolean merupakan kalkulus loglka yang olgunakan
untuk menentukan nllal kebenaran oarl suatu ekspresl loglka [10]. Teknlk
aljabar lnl olkembangkan oleb George 8oole paoa tabun 1930an, sebagal
pengbargaan atas penemuannya maka aljabar lnl olberl nama sesual oengan
nama belakang bellau.
Dalam aljabar boolean teroapat tlga buab operasl oasar, yaltu : AND,
OR, NOT ketlga-tlganya oapat olgunakan secara lnoepenoen atau oapat
olgunakan sekallgus. Keluaran (output) oarl aljabar lnl aoalab nllal benar
(TRUL) atau salab (FALSL).
8erlkut lnl aoalab tabel yang menunjukkan ketlga basll operasl aljabar
boolean :
Tabel X AND Y
X Y X AND Y
T T T
T F F
F T F
F F F
Tabel X OR Y
X Y X OR Y
T T T
T F T
F T T
F F F
Tabel NOT X
X NOT X
T F
F T
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Fl ow c har t dan Pseudoc ode 15
PAGE 10
Contoh 2.!
Pemlmpln sebuab perusabaan otomotlt perlu menentukan besarnya bonus
yang akan olberlkan kepaoa para pegawalnya yang bekerja sebagal account
eecutlve. [lka teroapat pegawal yang oalam bulan lnl telab menjual mobll
leblb oarl oua unlt, maka akan menoapatkan bonus sebesar Rp 1.000.000,-
kemuolan pegawal yang blsa menjual mobll tepat oua buab maka, akan
menoapatkan bonus Rp 500.000,- namun jlka pegawal yang oalam bulan lnl
penjualannya kurang oarl oua unlt maka, pegawal tersebut tloak menoapatkan
bonus.
[lka klta gambarkan persoalan ol atas menggunakan tlowcbart maka,
akan menjaol sepertl berlkut :
Gambar 2.2 Flowcbart pengbltungan bonus
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
16 Fl ow c har t dan Pseudoc ode
PAGE 10
PenguIangan Proses
Dalam beberapa kasus, serlngkall teroapat proses yang barus ollakukan
secara berulang-ulang, sebagal contob yang pallng seoerbana aoalab proses
berjalan kakl. Untuk blsa mencapal tujuan, klta barus melangkabkan kakl
secara berulang-ulang supaya oapat menempub jarak tertentu oan akblrnya
sampal tujuan.
Paoa kasus yang berbubungan oengan pengolaban lntormasl
menggunakan komputer, teroapat proses-proses yang barus ollakukan secara
berulang, mulal oarl lnput oata, proses oan output. Program yang balk aoalab
program yang blsa mengoptlmalkan klnerja komputer, oengan cara
menggunakan kemball program atau sekumpulan program oengan proses
tertentu. Atau oengan kata laln teroapat baglan program yang oapat
olpanggll/olgunakan secara berulang-ulang. Hal lnl akan mempermuoab
pekerjaan programmer oalam mengbasllkan solusl.
Contoh 2.2
Seorang statt |T olmlnta untuk menampllkan oata oarl sebuab tabel olmana ol
oalamnya teroapat seratus barls oata. [lka statt tersebut barus menampllkan
satu per satu, tentunya akan membutubkan banyak kooe program oan
program akan menjaol tloak etektlt. 8agalmana cara menyelesalkan persoalan
statt |T tersebut?
Solusl:
Dalam kasus lnl yang olmlnta aoalab bagalmana menampllkan oata sebanyak
100 barls tanpa barus menggunakan proses output sebanyak 100 kall. Metooe
yang olgunakan aoalab pengulangan.
Dalam proses pengulangan teroapat 3 (tlga) bal pentlng, yaltu:
1. |nlslallsasl (penentuan konolsl/nllal awal)
2. Proses
3. Konolsl berbentl
Untuk kasus menampllkan oata, oapat oltentukan babwa jumlab barls yang
akan olbaca aoalab 100. 8arls akan olbaca mulal oarl barls pertama (barls = 1).
Proses yang ollakukan aoalab membaca oan menampllkan lslnya ke layar
(output). Pembacaan akan berbentl jlka barls yang olbaca suoab mencapal
barls ke-100.
[lka olgambarkan menggunakan tlowcbart maka, akan tampak sebagal berlkut:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Fl ow c har t dan Pseudoc ode 17
PAGE 10
Gambar 2.3 Flowcbart untuk menampllkan 100 barls oata
Darl gambar oapat olllbat babwa proses output oata banya muncul satu kall,
namun karena proses output ollakukan secara berulang-ulang maka,
pembacaan tebaoap 10 barls oata oapat ollakukan.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
18 Fl ow c har t dan Pseudoc ode
PAGE 10
Pseudocode
Paoa bab 1 telab oljelaskan sebelumnya mengenal keuntungan oalam
menuangkan loglka oan algorltma menggunakan pseudocode. Dalam
menyelesalkan kasus yang besar oan kompleks, mlsalnya membuat apllkasl
untuk menanganl proses blsnls sebuab perusabaan maka, yang pallng cocok
olgunakan oalam menullskan algorltma aoalab pseudocode.
Sesunggubnya tloak aoa aturan baku oalam penullsan pseudocode,
namun karena banyaknya babasa pemrograman yang bereoar saat lnl maka,
aturan penullsan pseuoocooe olarabkan untuk menyerupal aturan penullsan
babasa pemroraman tertentu. Dalam buku lnl akan olgunakan aturan
penullsan pseuoocooe yang menoekatl babasa pemrograman Pascal.
5truktur aIgoritna
Struktur algorltma yang olgunakan mengacu paoa struktur
pemrograman babasa Pascal yang terolrl oarl 3 (tlga) baglan, yaltu :
Gambar 2.4 Struktur program
Paoa baglan juduI, olgunakan sebagal tempat untuk mencantumkan
nama atau juoul program. Teroapat aturan penullsan juoul, yaknl:
1. Tloak olawall oengan angka atau karakter selaln alpbabet
2. Tloak teroapat karakter spasl atau karakter selaln alpbabet
kecuall karakter unoerscore '_' (sebagal penggantl karakter
spasl).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Fl ow c har t dan Pseudoc ode 19
PAGE 10
Contob:
Algorltma berbltung, 8enar
Algorltma konversl bllangan, Salab
Algorltma perbltungan_pajak, 8enar
Algorltma 2bllangan, Salab
Algorltma *kecll, Salab
Paoa baglan dekIarasi, olgunakan sebagal tempat untuk
mencantumkan varlabel, konstanta, oan record. Menglngat cara eksekusl kooe
program ollakukan berurut oarl atas ke bawab maka, oeklarasl olletakkan ol
awal program setelab baglan juoul. Hal-bal yang oloeklaraslkan paoa baglan lnl
olgunakan sebagal 'reservasl' alokasl memor, untuk penylmpanan oata oan
akan olgunakan selama program bekerja.
Paoa babasa pemrograman Pascal, baglan oeklarasl juga bertungsl
untuk menoeklaraslkan nama tunctlon oan proceoure.
Contob:
Algoritma Coba;
Kamus data
x : integer;
s : string;
...
Paoa baglan badan progran, olgunakan untuk meletakkan semua
algorltma atau kooe-kooe program. 8aglan lnl olawall oengan '8LG|N' oan
olakblrl oengan 'LND'. Semua algorltma atau kooe program wajlb oltullskan
olantara keoua penanoa tersebut.
Contob:
Algoritma Hello
Kamus data
s : string
BEGIN
s Halo!
output(s)
END.
Tanoa awal algorltma
Tanoa akblr algorltma
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
20 Fl ow c har t dan Pseudoc ode
PAGE 10
lnput dan Output
Dalam mengawall suatu proses tertentu, mlnlmal membutubkan suatu
masukan berupa oata (|nputj, karena oata lnllab yang nantlnya akan olproses
oan akan menjaol keluaran (outputj.
Contob :
Menerlma masukan oata oarl user (pengguna)
Algoritma Masukkan_data
Kamus data
BEGIN
input(x) /*x adalah variabel penampung nilai*/
END.
Memasukkan nllal tertentu paoa varlabel
Algoritma Masukkan_nilai
Kamus data
BEGIN
x 5 /*panah ke kiri arah masuknya nilai*/
END.
Menampllkan lsl varlabel ke layar monltor
Algoritma Tampilan
Kamus data
BEGIN
output(x) /*x adalah variabel yang berisi nilai*/
END.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Fl ow c har t dan Pseudoc ode 21
PAGE 10
Rangkunan
1. Flowcbart olgunakan untuk menggambarkan algorltma atau proses
2. Dalam melakukan pengujlan konolsl olgunakan notasl relaslonal
3. Slmbol oalam tlowcbart yang olgunakan untuk pengambllan keputusan
aoalab belab ketupat
4. Aljabar boolean merupakan kalkulus loglka yang olgunakan untuk
menentukan nllal kebenaran oarl suatu ekspresl loglka
5. Program yang balk aoalab program yang blsa mengoptlmalkan klnerja
komputer, oengan cara menggunakan kemball program atau sekumpulan
program oengan proses tertentu
6. Pseuoocooe cocok olgunakan untuk menullskan algorltma oengan kasus
yang kompleks oan berskala besar
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
22 Ti pe dat a, operat or dan Runt ut an
PAGE 10
3 Tipe Data, Operotor dan Runtunan
Overview
Tlpe oata, operator, oan runtunan merupakan suatu kesatuan konsep yang
pallng menoasar oloalam pemprograman komputer, karena tlpe-tlpe oata
oasar oan operator oapat membentuk berbagal macam ekspresl yang akan
olgunakan oalam program.
Seoangkan runtunan merupakan konsep oasar yang oapat memberlkan
gambaran tentang cara kerja sebuab program oalam komputer atau oengan
kata laln aoalab urutan peng-eksekuslan parlntab paoa satu argumen.
Tujuan
1. Mengenal oan membeoakan tlpe-tlpe oata oasar
2. Memabaml penggunaan tlpe-tlpe oata oasar oalam program
3. Memabaml operator oan penggunaannya oalam program
4. Memabaml konsep runtunan oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
22 Ti pe dat a, operat or dan Runt ut an
PAGE 10
3 Tipe Data, Operotor dan Runtunan
Overview
Tlpe oata, operator, oan runtunan merupakan suatu kesatuan konsep yang
pallng menoasar oloalam pemprograman komputer, karena tlpe-tlpe oata
oasar oan operator oapat membentuk berbagal macam ekspresl yang akan
olgunakan oalam program.
Seoangkan runtunan merupakan konsep oasar yang oapat memberlkan
gambaran tentang cara kerja sebuab program oalam komputer atau oengan
kata laln aoalab urutan peng-eksekuslan parlntab paoa satu argumen.
Tujuan
1. Mengenal oan membeoakan tlpe-tlpe oata oasar
2. Memabaml penggunaan tlpe-tlpe oata oasar oalam program
3. Memabaml operator oan penggunaannya oalam program
4. Memabaml konsep runtunan oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 23
PAGE 10
3.1 Tipe Data Dasar
Tlpe oata aoalab blmpunan nllal yang oapat olmlllkl oleb sebuab oata.
Tlpe oata menentukan apakab sebuab nllal oapat olmlllkl sebuab oata atau
tloak, serta operasl apa yang oapat ollakukan paoa oata tersebut. Contob tlpe
oata oalam ounla nyata aoalab bllangan bulat. [lka sebuab oata, mlsalnya umur,
barus berupa bllangan bulat maka oapat olpastlkan babwa 25, 13, 7 oapat
menjaol nllal umur, seoangkan 7.5, 19.655 bukan merupakan contob oarl nllal
umur.
Contob bllangan bulat lnl oapat klta llbat oalam kasus sebarl barl
kbususnya oalam bal pencacaban (|ngat kemball bllangan cacab : 1,2,3,4,.....
yang merupakan blmpunan baglan oarl blmpunan bllangan bulat). Mlsalnya
jumlab slswa oalam kelas aoa 20. 20 aoalab bllangan bulat. Tloak akan
oltemukan pernyataan : jumlab slswa oalam kelas aoa 20,5. Contob yang laln
aoalab jumlab mobll yang olparklr ol tempat parklr. Klta akan menggunakan
bllangan bulat oalam kasus lnl. Tloak pernab akan klta gunakan angka angka
50,33 atau 3 atau 40/7 sebagal jumlab oarl mobll yang seoang parklr.
Selaln ltu, mlsalnya oata nama seseorang yaltu '8ambang Pamungkas'
yang merupakan sebuab oeretan burup oan laln sebagalnya.Dalam sebuab
program, setlap varlabel oan konstanta memlllkl tlpe oata yang barus
oloeklaraslkan ol awal program. Penoeklarasl tlpe oata tersebut bertujuan
untuk menentukan besarnya tempat oalam memorl yang akan olgunakan
untuk menylmpan oata paoa tersebut saat program oljalankan.
Tlpe oata oasar aoalab tlpe oata yang oapat langsung olgunakan. Secara
umum teroapat 2 tlpe oata oasar, yaltu nunerik oan kategorik. Tlpe oata
numerlk terolrl atas angka/ kumpulan angka serta oapat mengalaml operasl
perbltungan, seoangkan tlpe oata kategorlk oapat berupa angka maupun burut
namun tloak oapat mengalaml operasl perbltungan.
8erlkut merupakan contob beberapa tlpe oata oasar :
lnteger/ biIangan buIat
|nteger aoalab tlpe oata oasar berupa bllangan yang tloak menganoung
pecaban oeslmal. Tlpe oata lnl juga memlllkl urutan, seblngga oapat
olbanolngkan satu oengan lalnnya.
Contob lnteger: 2 5 -10 135 2008
Secara teorltls, tlpe oata lnteger tloak memlllkl batasan, yaltu oarl
mlnus tak blngga blngga plus tak blngga. Namun oalam pemrograman
yang menggunakan babasa pemprograman C++, secara umum olkenal
beberap macam tlpe oata lnteger, yaltu:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
24 Ti pe dat a, operat or dan Runt ut an
PAGE 10
7o5e| 1. 7|pe doto |nteger
Tipe Ukuran NiIai
Short 8 bit -128 .. 127
Int 16 bit -32768 .. 32767
Long 32 bit -2147483648 .. 2147483647
ReaI/ biIangan riiI
Real aoalab tlpe oata oasar berupa bllangan yang memlllkl pecaban
oeslmal. Dalam pemrograman, nllal oengan tlpe oata lnl barus oltulls
oengan sebuab tltlk sebagal pemlsab bllangan utub oan bllangan
pecabannya. Tlpe oata lnl olgunakan untuk perbltungan yang mellbatkan
bllangan pecaban, sepertl perbltungan koslnus, akar persamaan, oan
sebagalnya. Tlpe oata lnl juga memlllkl urutan, seblngga oapat
olbanolngkan satu oengan lalnnya.
Contob real: .5 0.17 -3.465 92.0 4.3000+L9
Secara teorltls, tlpe oata real juga tloak memlllkl batasan, yaltu oarl
mlnus tak blngga blngga plus tak blngga. Namun oalam pemrograman,
secara umum olkenal beberapa macam tlpe oata real, yaltu:
7o5e| 2. 7|pe doto reo|
Tipe Ukuran NiIai
float 32 bit 2.9x10
-39
.. 1.7x10
38
Double 48 bit 5.0x10
-324
.. 1.7x10
308
Nllal paoa tabel olatas berbeoa oengan nllal yang aoa paoa tabel tlpe
oata lnteger, paoa tabel olatas nllal untuk tlpe oata merupakan tlngkat
ketelltlan untuk maslng-maslng tlpe oata, bukan beroasarkan rentang
nllal.
Char/ Karakter
Cbar aoalab tlpe oata oasar yang terolrl atas satu buab angka, burut,
tanoa baca atau karakter kbusus. Untuk menylmpan sebuab karakter,
olperlukan 1 byte atau 8 blt tempat oloalam memorl. Dalam sebuab
program, penullsan tlpe oata cbar olawall oan olakblrl oengan tanoa
kutlp ganoa. Selaln ltu, teroapat sebuab karakter kosong yang olsebut
oengan nu|| atau n|| oan oltullskan sebagal .
Contob cbar: 5 A ? + $
Perbatlkan babwa 5 aoalab lnteger seoangkan 5 aoalab cbar.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 25
PAGE 10
5tring
Strlng aoalab tlpe oata oasar yang berupa kumpulan karakter oengan
panjang tertentu. Mesklpun berupa kumpulan karakter, karena tlpe
oata strlng serlng olgunakan oalam pemrograman, strlng olanggap
sebagal tlpe oata oasar. Untuk penylmpanan strlng oloalam memorl,
olbutubkan 1 byte untuk tlap karakternya. Serupa oengan penullsan
karakter, penullsan sebuab strlng juga barus olawall oan olakblrl oengan
tanoa petlk ganoa. Strlng juga mengenal null yang oltullskan oengan .
Contob strlng:
- BANDUNG
- Politeknik Telkom Bandung
- ABC3456
- Lucu
- 30202001
- z
Perbatlkan babwa sebuab karakter tunggal (z) juga merupakan
strlng.
BooIean/ biIangan Iogika
Sebuab oata boolean memlllkl tepat oua buab kemungklnan nllal,
olrepresentaslkan sebagal 8enar oan Salab, atau True oan False, atau
oapat juga ollambangkan oengan 1 oan 0. Tlpe oata lnl oapat olgunakan
untuk pemlllban oengan konolsl-konolsl tertentu, olmana program
barus memlllb aksl apa yang akan oljalankan oengan parameter
tertentu.
Tlpe oata lnl pallng serlng olgunakan untuk range yang memlll oua buab
nllal: lulus - tloak lulus, member bukan member,
3.2 Yorobel
varlabel atau peubab aoalab obyek yang nllalnya oapat berubab-ubab
oalam sebuab program. Paoa saat sebuab varlabel oloeklaraslkan, program
'memesan' tempat oengan ukuran tertentu (sesual tlpe oatanya) paoa memorl
untuk menylmpan nllal oarl varlabel tersebut. Pemrogram oapat memberlkan
nama paoa sebuab varlabel untuk mempermuoab pemanggllan varlabel
tersebut ol oalam program. Paoa saat menoeklaraslkan sebuab varlabel,
pemrogram barus menyebutkan nama varlabel oan tlpe oata oarl varlabel
tersebut.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
26 Ti pe dat a, operat or dan Runt ut an
PAGE 10
Dalam bentuk tlowcbart, oeklarasl varlabel olgambarkan sebagal sebuab
proses. Mlsalnya sebagal berlkut:
Com5or 1. Contoh dek|oros| vor|o5e| do|om f|owchort
Contob oeklarasl varlabel oalam pseoeucooe :
1. KAMUS DATA {awal deklarasi variabel}
2. x : integer
3. nama: string
4. TB : real
5. jenisKelamin : char
6. status : boolean
Sebelum klta menullskan beberapa program oalam babasa C++, aoa balknya
klta mengenal terleblb oabulu struktur oan tormat penullsan program oalam
babasa C++.
1. // Contoh Program C++
2. #include <stdio.h>
3. /* Program Utama */
4. main() {
5. printf("Selamat Datang");
6. return 0;
7. }
Paoa contob program olatas, paoa barls pertama oltullskan olawalannya
tanoa dou5|es|osh (//). Maksuonya aoalab sebagal komentar, artlnya barls
tersebut tloak akan oleksekusl oleb program. Klta oapat menullskan apapun
setelab tanoa tersebut oan berlaku banya satu barls. Seoangkan untuk
penullsan komentar leblb oarl satu barls olgunakan tanoa /* .. */ olmana
komentar oltullskan olantara tanoa /* oan */ sepertl tampak paoa barls ke
3 oan 4. 8lasanya tanoa tersebut olgunakan oleb programmer untuk memberl
penanoa atau keterangan paoa tlap barls program sepertl paoa barls 5.
Paoa barls keoua teroapat cooe #include <stdio.h>, yang
olawall oengan tanoa crasb (#). |nl oapat klta sebut oengan preprocessor
d|rect|ve. preprocessor d|rect|ve merupakan perlntab-perlntab untuk
memberltabukan kepaoa compller untuk melakukan berbagalmacam oetlnlsl
x : integer
nama : string
TB : real
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 27
PAGE 10
sepertl menggunakan (|nc|ude) tlle llbrarl mlsalnya stdio.h, karena oloalam
tlle tersebut menganoung beberapa tungsl yang akan olgunakan oloalam
program.
Seoangkan paoa barls ke 5 8 merupakan lsl oarl program. Paoa barls
ke 5 teroapat lnstruksl main() olmana paoa barls tersebut merupakan tungsl
utama atau program utama. Maksuonya aoalaba paoa barls tersebut
merupakan penanoa awal oarl eksekusl sebuab program. Untuk awal lnstruksl
oltanoal oengan kurung kurawal. Sepertl paoa program olatas, paoa barls ke-5
(tanoa {) merupakan awal oarl program utama oan berakblr paoa barls ke-8.
Paoa barls oke-6 (printf("Selamat Datang")) merupakan
lnstruksl untuk mencetak tullsan Selamat Datang kelayar. Seoangkan
paoa barls ke-7 (return 0) merupakan nllal kemball oarl tungsl utama yaltu
nllalnya aoalab 0. Perlu olperbatlkan babwa setlap lnstruksl paoa perogram
barus olakblrl oengan tanoa sem|co|on (;).
Untuk menullskan varlabel, klta oapat menullskannya paoa baglan lsl
program. Contob penullsan varlabelnya aoalab :
1. #include <stdio.h>
2.
3. main () {
4. int x;
5. string nama;
6. float BB;
7. char jKelamin;
8. bool status;
9. ...
10. }
Secara teorl, pemrogram oapat memberlkan nama apapun paoa sebuab
varlabel karena penamaan varlabel bertujuan untuk memuoabkan pemanggllan
kemball. Namun, aoa beberapa panouan yang blasa olacu pemrogram oalam
penamaan varlabel, antara laln:
Hurut pertama paoa nama varlabel menunjukkan tlpe oata oarl varlabel.
Contob: olawall oengan 'c' untuk varlabel cbar, 'l' untuk lnteger, 's'
untuk strlng, oan seterusnya. Panouan penamaan lnl olsebut oengan
Chor|es S|m,on| Hungor|on Notot|on.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
28 Ti pe dat a, operat or dan Runt ut an
PAGE 10
Nama varlabel barus cukup jelas menunjukkan tujuan penggunaan
varlabel tersebut.
Contob: sNama aoalab varlabel strlng untuk menylmpan nama,
c[enlsKelamln aoalab varlabel cbar untuk menylmpan jenls kelamln,
bStatus aoalab varlabel boolean untuk menylmpan status.
Nama varlabel tloak boleb menganoung spasl kosong atau karakter
kbusus ! @ # $ ^ & * ( ) { } [ ] ' , : < > , . / ? | oan \. 8eberapa
pemrogram menggunakan '_' untuk memlsabkan kata ol nama varlabel.
Contob: c[enls_kelamln, sNama_orang_tua, lNllal_akblr
Cara laln untuk memlsabkan kata oalam nama varlabel aoalab oengan
memberlkan burut besar ol awal tlap kata.
Contob: c[enlsKelamln, sNamaOrangTua, lNllalAkblr
Setelab sebuab varlabel oloeklaraslkan, varlabel oapat menylmpan nllal.
Penglslan nllal ke oalam sebuab varlabel oalam sebuab program oapat
ollakukan oengan 2 cara, yaltu:
5ecara Iangsung
Contob:
- cJenisKelamin = P
- sNamaOrangTua = Jeremy Thomas
- iNilaiAkhir = 99
Dengan inputan
Contob:
- Input (cJenisKelamin)
- Input (sNamaOrangTua)
- Input (iNilaiAkhir)
Penggunaan keoua cara penglslan nllal varlabel lnl akan olperjelas paoa
bab-bab selanjutnya. Dalam tlowcbart, penglslan nllal ke oalam varlabel
oltunjukkan paoa gambar 2.
(oj secoro |ongsung (5j dengon |nputon
Com5or 2. Peng|s|on vor|o5e| do|om f|owchort
cJKelamin p
Input (cJKelamain)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 29
PAGE 10
Contob program untuk memberlkan nllal paoa sebuab varlabel :
1. #include <stdio.h>
2. main() {
3. int lA,lB;
4. String NamaA, NamaB;
5. // Pengisian secara Langsung
6. lA = 20;
7. NamaA = Joko Handono;
8. // Pengisian dengan Inputan
9. scanf(%i,&lB);
10. scanf(%s,&NamaB);
11. // Menampilkan Kelayar
12. printf(Nilai lA : %i,lA);
13. printf(Nilai lB : %i,lB);
14. printf(Nilai NamaA : %s,NamaA);
15. printf(Nilai NamaB : %s,NamaB);
16. }
Paoa contob program olatas, klta mellbat aoa tanoa %i oan %s.
Funssl tanoa tersebut aoalab untuk menkontersl nllal lnputan menjaol tlpe
yang sesual oengan yang olterlma atau mengubab nllal oarl tlpe oata oasar
menjaol tlpe karakter untuk oltampllkan ollayar. Karena paoa oasarnya, oalam
pemprograman babasa C++ nllal lnput atau nllal yang oapat oltampllkan
berupa karakter. Seoangkan oloalam program, nllal tersebut barus sesual
oengan tlpe oata yang oloeklaraslkan. Sebagal contob paoa barls ke-10,
varlabel lB tlpe oatanya aoalab lnteger. Untuk mengubab tlpe masukan
menjaol lnteger, maka olgunakan %i. 8lasanya, strlng tersebut olawall
oengan burut pertama tlpe oatanya, mlsalnya float -> %f, String ->
%s oan seterusnya. Kbusus untuk lnputan, nama varlabelnya barus olawall
oengan strlng & sepertl tampak paoa barls ke 10 oan 11.
3.3 Konstonto
Paoa varlabel, nllal yang olslmpan oapat berubab-ubab selama program
oljalankan. Seoangkan paoa paoa konstanta, nllal yang olslmpan tetap oan tloak
oapat olubab sejak oloeklaraslkan blngga program berakblr..
Setelab sebuab konstanta oloeklaraslkan, konstanta oapat olgunakan
oalam program oan nllalnya selalu tetap. Deklarasl konstanta oalam tlowcbart
olgambarkan sebagal sebuab proses. Mlsalnya:
iMaks = 100
fPi = 3.14
sSapa = Hello
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
30 Ti pe dat a, operat or dan Runt ut an
PAGE 10
Com5or 3. uek|oros| konstonto do|om f|owchort
Cara penullsan konstanta oloalam program, ol tulls oengan olawall
oengan tanoa crasb (#) kemuolan ollkutl oengan define, selanjutnya nama
konstantanya oan selanjutnya nllalnya oan oltulls olluar program utama setelab
penoeklaraslan llbrarl namespace. Contob penullsannya aoalab sebagal berlkut
:
1. #include <stdio.h>
2. #define iMaxs 100
3. #define fPi 3.14159
4. #define sSapa Hello
5. #define newLine \n
6. main() {
7. ...
8. }
3.4 Operotor
Operator aoalab pengenoall operasl yang akan ollakukan paoa
beberapa operan seblngga membentuk sebuab ekspresl. Secara umum, oalam
sebuab ekspresl teroapat sebuab operator yang olaplt oua operan. Contobnya
paoa ekspresl:
x + y
oan y aoalab operan, seoangkan
'+' aoalab operatornya
Teroapat tlga macam operator yang blasa olgunakan oalam
pemrograman, yaltu:
Operator aritnatik
Operator lnl membentuk perbltungan arltmatlk. Keoua operan oarl
operasl arltmatlk lnl oapat berupa nllal lnteger atau real.
Operator yang termasuk tlpe lnl aoalab:
7o5e| 3. 0perotor or|tmot|k
Lanbang Deskripsi Contoh
+ Penjumlaban = y + z
- Pengurangan = y z
* Perkallan = y * z
/ Pembaglan = y / z
Mooulo (slsa bagl) = y z
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 31
PAGE 10
Output oarl operasl arltmatlk akan memlllkl tlpe oata yang sama
oengan tlpe oata keoua operannya. Mlsalnya, jlka sebuab bllangan
lnteger oljumlabkan oengan bllangan lnteger lalnnya maka outputnya
aoalab bllangan lnteger juga. Selaln ltu perlu olperbatlkan pula babwa
sebuab operator arltmatlk tloak oapat olterapkan paoa oua bllangan
oengan tlpe oata yang berbeoa.
Contob program oengan operasl arltmatlk:
1 //Program Aritmatik
2 /* IS:Tersedia dua buah bilangan integer
FS:Hasil Modulo duabuah bilangan */
3 #include <stdio.h>
4
5 main () {
6 // Deklarasi Variabel
7 int iTambah;
8 int iAngka1, iAngka2;
9 printf(Masukan Bilangan Pertama : );
10 scanf(%i, iAngka1);
11 printf(Masukan Bilangan Kedua : );
12 scanf(%i, iAngka2);
13 // Penjumlahan
14 iTambah = iAngka1 + iAngka2;
15 printf(Hasil Penjumlahan %i + %i = %i,
iAngka1, iAngka2, iTambah);
16 return 0;
17 }
Program ol atas akan mengemballkan nllal basll penjumlaban sesual
oengan lnputan. Mlsalnya paoa lnputan pertama klta masukan 10 oan
yang keola klta masukan 23 maka basllnya aoalab 33. outputnya aoalab:
Masukan Bilangan Pertama : 10
Masukan Bilangan Kedua : 23
Hasil Penjumlahan 10 + 23 = 33
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
32 Ti pe dat a, operat or dan Runt ut an
PAGE 10
Operator Assgnment
Dalam pemprograman babasa C++, Operator lnl olgunakan
memasukan nllal keoalam sebuab varlabel, tanpa mengbllangkan atau
mengosongkan nllal varlabel sebelumnya. Contob penggunaan operator
lnl aoalab sebagal berlkut :
7o5e| +. 0perotor re|os|ono|
Lanbang Deskripsi Contoh
+= Menambabkan += 1
-= Mengurangkan -= 1
*= Mengallkan *= 2
/= Membagl /= 2
= Mem-moo = 2
lncrease and decrease
Penullsan lnl ollambangkan oengan ++ (|ncreaoe) oan -- (oecrease).
Operator lnl bertungsl untuk menalkan atau menurunkan satu satuan
nllal paoa sebuab varlabel. Contob penggunaannya aoalab paoa contob
olbawab lnl :
1 ...
2 a++;
3 a += 1;
4 a = a + 1;
5 ...
Aoa oua macam penullsan operator lnl, yaltu slmbol oapat oltulls
sebelum nama varlabel oan setelab varlabel. Aoapun perbeoaab antara
keouanya aoalab :
1 B = 3;
2 A = ++B;
3 // A = 4, B = 4
1 B = 3;
2 A = B++;
3 // A = 3, B = 4
Operator reIasionaI
Operator lnl membanolngkan oua operan oan basllnya berupa nllal
boolean (8LNAR atau SALAH). Operasl relaslonal oapat ollakukan
paoa oua nllal oengan tlpe oata yang sama: tlpe oata lnteger, rlll, cbar,
strlng, maupun boolean. 8erlkut lnl aoalab operator relaslonal:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 33
PAGE 10
7o5e| +. 0perotor re|os|ono|
Lanbang Deskripsi Contoh
== Sama oengan == y
!= Tloak sama oengan != y
> Leblb oarl > y
< Kurang oarl < y
>= Leblb oarl atau sama oengan >= y
<= Kurang oarl atau sama oengan <= y
Contob penggunaan operator relaslonal oalam algorltma:
1 // Program Operator Relasional
2 KAMUS DATA {awal deklarasi variabel}
3 iAngka1, iAngka2 : integer
4 BEGIN {awal algoritma}
5 iAngka1 = 6 {pengisian variabel langsung}
6 Input(iAngka2) {pengisian dgn inputan}
7 IF (iAngka1 <> iAngka2) THEN
8 Output (Tebakan Anda salah)
9 ELSE
10 Output (Horee! Tebakan Anda benar)
11 ENDIF
12 END
Output oarl operasl relaslonal bertlpe boolean (truel fo|se). Paoa
contob ol atas,
iAngka1 != iAngka2 bernllal benar/ true jlka lAngka1 tloak sama
oengan lAngka2
iAngka1 != iAngka2 bernllal salab/ fo|se jlka lAngka1 sama
oengan lAngka2
Program ol atas akan mengeluarkan pesan sesual lnputan pengguna. [lka
pengguna menglnputkan angka selaln 6 ('lAngka1 != lAngka2' bernllal
benar), program akan mengeluarkan pesan 'Tebakan Anoa salab'. [lka
pengguna menglnputkan angka 6 ('lAngka1 != lAngka2' bernllal salab),
program akan mengeluarkan pesan 'Horee! Tebakan Anoa benar'.
Operator Iogika
Operator loglka aoalab operator yang olgunakan untuk
mengkomblnaslkan basll ekspresl yang menganoung operator
relaslonal.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
34 Ti pe dat a, operat or dan Runt ut an
PAGE 10
Tlga macam operator loglka aoalab:
7o5e| S. 0perotor |og|ko
Lanbang Deskripsi Contoh
&& Ano / Dan > 7 && = y
|| Or / Atau != y || > 3
! Not / Tloak ! ( > y)
Pola penggunaan operator loglka aoalab:
ekspres|1 OPERATOR ekspres|2
Output oarl penggunaan operator AND oan OR aoalab sebagal
berlkut:
7o5e| . 0utput operotor |og|ko
ekpresi1 ekspresi2
konbinasi dengan
AND OR
True True True True
True False False True
False True False True
False False False False
Pola yang muoab untuk menglngat output keoua operator loglka
tersebut aoalab: True AND True = True, False OR False = False.
8eberapa contob penggunaan operator loglka:
(x > 7) && (x = y)
[lka ternyata nllal aoalab 8 oan y aoalab 5, maka
(8 > 7) && (8 = 5)
True AND False
False (output operasl)
(x != y) || (x > 3)
[lka ternyata nllal aoalab 4 oan y aoalab 4, maka
(4 != 4) || (4 > 3)
False OR True
True (output operasl)
NOT (x > y)
[lka ternyata nllal aoalab 3 oan y aoalab 3, maka
NOT (3 > 3)
NOT (False)
True (output operasl)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 35
PAGE 10
3.5 Uruton Operos
Sebuab ekspresl mungkln terolrl atas beberapa operasl sekallgus.
Mlsalnya:
iHasil = x * 2 % 2 > y && (x != 3)
Untuk menentukan operasl mana yang ollakukan terleblb oabulu
oarlpaoa operasl lalnnya, setlap operator memlllkl level urutan. Level
urutan lnl terolrl atas llma kelompok, level 1 blngga 5.
Operator yang memlllkl level leblb tlnggl (oltunjukkan oengan
angka yang semakln kecll) akan oloperaslkan terleblb oabulu
olbanolngkan operator laln yang levelnya leblb renoab. Seoangkan paoa
operator-operator yang beraoa paoa level yang sama, operasl
ollakukan secara berurutan oarl klrl ke kanan. Hal lnl olsebut oengan
asoslatlvltas.
Paoa beberapa ekspresl olperlukan pengubaban urutan eksekusl
operasl-operasl. Untuk memungklnkan pemrogram melakukan bal
tersebut, terseola sebuab operator tambaban yang memlllkl level
eksekusl pallng tlnggl, yaltu (). Operasl apapun yang aoa oalam tanoa
kurung () akan oleksekusl pertama kall oleb program.
Level urutan operator-operator tersebut aoalab sebagal berlkut:
7o5e| 7. Uruton operos|
Operator Deskripsi Asosiativitas LeveI Urutan
{} Tanoa kurung 1
! Loglka NOT 2
* Perkallan
Klrl ke kanan 3 / Pembaglan
Mooulo
+ Penjumlaban
Klrl ke kanan 4
- Pengurangan
< Kurang oarl
Klrl ke kanan 5
<= Kurang oarl/ sama
oengan
>= Leblb oarl/ sama
oengan
> Leblb oarl
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
36 Ti pe dat a, operat or dan Runt ut an
PAGE 10
= Sama oengan
Klrl ke kanan 6
!= Tloak sama oengan
&& Loglka AND Klrl ke kanan 7
|| Loglka OR Klrl ke kanan 8
Mlsalnya paoa ekspresl berlkut lnl:
iHasil = x * 2 % 2 > y && (x <> 3)
[lka lnputannya aoalab = 5 oan y = 3 maka urutan
pengerjaannya aoalab:
z Pengerjaan
1
iHasil x * 2 % 2 > y && (5 != 3)
iHasil x * 2 % 2 > y && True
3
iHasil 5 * 2 % 2 > y && True
iHasil 0 > y && True
5
iHasil 0 > 3 && True
iHasil False && True
7
iHasil False
3.6 Runtunon
Secara umum, program akan olbaca oan oleksekusl secara berurutan
barls oeml barls. Mlsalnya paoa algorltma berlkut lnl:
1. Algoritma Runtunan;
2. {IS:Tersedia empat bilangan yang akan
dioperasikan
FS:Mengoutputkan dua bilangan setelah
dioperasikan }
3. Kamus data
4. a,b,c,d : integer
5. BEGIN
6. a 3
7. b 2
8. c a * b
9. a 5
10. d a + b
11. Output (c, d)
12. END.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 37
PAGE 10
Maka, output oarl algorltma ol atas aoalab:
6, 7
Perbatlkan babwa paoa saat membaca barls ke-3, program akan
mengallkan 3 oan 2 (a oan b). Kemuolan, saat membaca barls ke-5, program
akan menjumlabkan 5 oan 2 (a oan b). Nllal a berubab karena ol barls ke-4
varlabel a ollsl oengan 5. |nl merupakan aklbat oarl sltat program yang
membaca oan mengeksekusl per barls. Setelab barls ke-4 oleksekusl, nllal a
yang ollslkan paoa barls pertama suoab tloak berlaku lagl (tertumpuk oengan
nllal baru yang ollslkan).
Dl bab-bab selanjutnya akan oltunjukkan babwa sltat program membaca
oan mengeksekusl berurut terus per barls lnl oapat olubab, oengan
memberlkannya perlntab untuk tloak membaca sesual urutan. Hal lnl oapat
ollakukan oengan struktur pemlllban, struktur pengulangan, oan laln-laln.
[lka algorltma runtunan ol atas oltullskan oalam babasa Pascal, maka akan
tampak sebagal berlkut:
1. // Program Runtunan;
2. /*IS:Tersedia empat bilangan yang akan
dioperasikan
FS:Menampilkan dua bilangan setelah
dioperasikan */
3. #include <stdio.h>
4.
5. main () {
6. int a,b,c,d;
7. a = 3;
8. b = 2;
9. c = a * b;
10. a = 5;
11. d = a + b;
12. printf(Nilai C : %i,c);
13. printf(Nilai D : %i,d);
14. }
[lka Program oljalankan, maka basll keluaran program aoalab sepertl
berlkut :
Nilai C : 6
Nilai D : 7
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
38 Ti pe dat a, operat or dan Runt ut an
PAGE 10
Rangkunan
1. Tlpe oata oasar aoalab tlpe oata yang oapat langsung olgunakan, oan
memlllkl ukuran tertentu sesual oengan tlpe oata maslng-maslng.
8eberapa tlpe oata oasar: lnteger, real, cbar, strlng, oan boolean.
2. varlabel aoalab obyek yang nllalnya oapat berubab-ubab oalam sebuab
program, seoangkan konstanta memlllkl nllal yang tetap sejak
oloeklaraslkan blngga program berakblr.
3. Paoa saat menoeklaraslkan sebuab varlabel, pemrogram barus
menyebutkan nama varlabel oan tlpe oata oarl varlabel tersebut.
4. Operator aoalab pengenoall operasl yang akan ollakukan paoa beberapa
operan seblngga membentuk sebuab ekspresl. Tlga macam operator
oalam pemrograman: operator arltmatlk, operator relaslonal, oan
operator loglka.
5. Penggunaan beberapa operator sekallgus oalam sebuab ekspresl
mengaklbatkan perlunya menentukan urutan operasl yang olatur oalam
level urutan operator.
6. Operator oengan level yang leblb tlnggl akan oleksekusl leblb oabulu
oarlpaoa operan oengan level yang leblb renoab. Operator-operator yang
memlllkl level yang sama akan oleksekusl menurut urutan penullsan (oarl
klrl ke kanan).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 39
PAGE 10
Kuis Benar 5aIah
1. Deklarasl tlpe oata mempengarubl besarnya tempat oalam memorl yang
olseolakan untuk menylmpan oata tersebut.
2. Tlpe oata real memlllkl cakupan nllal antara 2.9x10
-39
blngga
1.1x10
4932
.
3. Penentuan nama varlabel oan cara mengaksesnya ollakukan oleb program
secara otomatls.
4. Output oarl operasl arltmatlk akan memlllkl tlpe oata yang sama oengan
keoua operannya.
5. Operator relaslonal oapat membanolngkan oua nllal boolean.
(Untuk nomor 6-10) Perbatlkan potongan algorltma berlkut lnl:
...
Kamus data
a, b, d, e : integer
c, f : real
g : char
h : boolean
Konstanta
d = 100;
BEGIN
a 5
b 3
c 7.0
a a + c
e d / a
ReadLn (g)
h (g = k) OR (d MOD b > 3)
f g + c
Output (a, b, c, d, e, f, g, h)
END
6. Nllal akblr varlabel a aoalab 12.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
40 Ti pe dat a, operat or dan Runt ut an
PAGE 10
7. Operasl e d / a tloak oapat ollakukan seblngga nllal e tloak oapat
olketabul.
8. [lka pengguna memberlkan lnput 'k' untuk varlabel g, maka nllal akblr b
aoalab TRUL.
9. varlabel b tloak oapat olketabul nllalnya.
10. Output program tersebut akan mengeluarkan empat nllal varlabel oan
empat error.
11. Tlpe oata woro memlllkl cakupan nllal yang leblb luas oarlpaoa tlpe oata
lnteger.
12. Salab satu oarl empat tlpe oata real oapat menylmpan nllal negatlt.
13. Strlng aoalab kumpulan karakter oengan panjang tertentu.
14. Nllal oarl sebuab konstanta tloak oapat olubab oalam baoan program.
15. Penglslan nllal ke oalam sebuab varlabel oapat ollakukan oengan oua cara,
yaltu secara langsung atau oengan lnputan.
(Untuk nomor 16-20) Perbatlkan ekspresl berlkut lnl:
Hasll = (50 - 37) + 50 * 2 35 > 21 / 3 && ! (200 7 != 25 * 7 + 18)
16. Operasl yang pertama kall oleksekusl aoalab (50 - 37).
17. Operator yang terakblr oleksekusl aoalab '>'.
18. Hasll bertlpe lnteger.
19. Hasll = 116.
20. Hasll = True.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 41
PAGE 10
PiIihan Ganda
1.
8erlkut lnl aoalab pernyataan-pernyataan yang benar tentang tlpe oata,
kecuall . .
A. Tlpe oata aoalab blmpunan nllal yang oapat olmlllkl oleb sebuab
oata.
8. Tlpe oata menentukan operasl apa yang oapat ollakukan paoa oata
tersebut.
C. Pemlllban tlpe oata untuk sebuab varlabel atau konstanta barus
mempertlmbangkan kapasltas memorl yang terseola.
D. Tlpe oata oarl setlap varlabel oan konstanta barus oloeklaraslkan
ol awal program.
L. Tlpe oata oasar oapat langsung olgunakan oalam sebuab program.
2.
8erlkut lnl aoalab karakter yang sebalknya tloak olgunakan oalam
penamaan varlabel/ konstanta, kecuall . .
A. '#'
8. '/'
C. ','
D. '_'
L. '<'
3.
Perbatlkan ekspresl berlkut lnl:
5 + 2 * 3 >= 100 MOD 45 OR 75 30 / 2 < 10
Apakab output oarl ekspresl tersebut?
A. 25
8. True
C. 11
D. False
L. 60
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
42 Ti pe dat a, operat or dan Runt ut an
PAGE 10
4.
Perbatlkan keoua kallmat tentang urutan eksekusl operator berlkut lnl:
Kallmat A: Operasl oalam tanoa kurung oleksekusl pertama kall.
Kallmat 8: Operasl relaslonal oleksekusl terleblb oabulu
olbanolngkan operasl arltmatlk.
Manakab pernyataan yang tepat tentang keoua kallmat ol atas?
A. Kallmat A oan kallmat 8 benar.
8. Kallmat A oan kallmat 8 salab.
C. Kallmat A benar oan kallmat 8 salab.
D. Kallmat A salab oan kallmat 8 benar.
L. Salab satu oarl kallmat A atau kallmat 8 tloak oapat oltentukan
benar/ salab.
5.
Perbatlkan potongan program berlkut lnl:
#include <stdio.h>
main () {
int bilangan1, bilangan2;
int bilangan3, bilangan4;
bilangan1 := 10;
bilangan1 := bilangan1 * 2;
bilangan2 := bilangan1 + 10;
bilangan3 := bilangan2 * bilangan1;
printf(%i,bilangan3);
}
Manakab yang merupakan output oarl program ol atas?
A. 200
8. 300
C. 400
D. 600
L. 800
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ti pe dat a, oper at or dan Runt ut an 43
PAGE 10
Latihan
1. [elaskan perbeoaan varlabel oan konstanta!
2. Perbatlkan ekspresl berlkut lnl:
4 + 7 * 10 5 moo 13
Apakab output oarl ekspresl ol atas?
3. [elaskan tentang konsep runtunan oalam eksekusl sebuab program!
4. Perbatlkan ekspresl berlkut lnl:
* 3 + (7 moo 5) * y
oengan 5 oan
y 3
Apakab output oarl ekspresl ol atas?
5. Perbatlkan potongan program berlkut lnl:
# include <stdio.h>
main () {
int iPertama, iKedua;
iPertama = 50;
iPertama %= 9;
iKedua = iPertama 2;
printf(%i,iKedua);
}
Apakab output oarl program ol atas?}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
44 Pemi l i han
PAGE 10
4 PeniIihan
Overview
Program oapat merepresentaslkan sltuasl pemlllban yang serlng olbaoapl
oalam ounla nyata. 8eroasarkan satu atau beberapa konolsl, oapat oltentukan
satu atau sejumlab aksl yang akan ollakukan. Dengan aoanya struktur
pemlllban, program oapat berjalan oengan jalur yang berbeoa, beroasarkan
basll pengecekan konolsl yang olpenubl.
Tujuan
1. Memabaml struktur pemlllban oalam program
2. Mengenal struktur |F oan CASL yang oapat olgunakan oalam pemlllban
3. Memabaml konsep konolsl oan aksl oalam struktur pemlllban
4. Menerapkan pemlllban oalam menyelesalkan berbagal kasus
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
44 Pemi l i han
PAGE 10
4 PeniIihan
Overview
Program oapat merepresentaslkan sltuasl pemlllban yang serlng olbaoapl
oalam ounla nyata. 8eroasarkan satu atau beberapa konolsl, oapat oltentukan
satu atau sejumlab aksl yang akan ollakukan. Dengan aoanya struktur
pemlllban, program oapat berjalan oengan jalur yang berbeoa, beroasarkan
basll pengecekan konolsl yang olpenubl.
Tujuan
1. Memabaml struktur pemlllban oalam program
2. Mengenal struktur |F oan CASL yang oapat olgunakan oalam pemlllban
3. Memabaml konsep konolsl oan aksl oalam struktur pemlllban
4. Menerapkan pemlllban oalam menyelesalkan berbagal kasus
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 45
PAGE 10
Dalam kebloupan nyata, serlngkall olbaoapkan paoa beberapa plllban.
Paoa saat mengbaoapl plllban, satu atau beberapa konolsl menjaol baban
pertlmbangan oalam memutuskan untuk melakukan aksl tertentu. Contob:
[lka cuaca menoung, maka saya membawa payung.
Paoa contob tersebut, 'cuaca menoung' merupakan konolsl yang
menjaol baban pertlmbangan untuk melakukan aksl 'saya membawa payung'.
[lka konolsl 'cuaca menoung' terpenubl (bernllal benar), maka aksl 'saya
membawa payung' ollakukan
Sebuab program komputer juga oapat mengenall sltuasl pemlllban.
Pernyataan oalam contob ol atas oapat oltullskan oalam struktur pemlllban
sebagal berlkut:
IF cuaca mendung THEN
saya membawa payung
END IF
Untuk selengkapnya penggunaan bentuk pemlllban akan oljelaskan berlkut lnl.
4.1 Bentuk Unun lF dan Variasinya
8entuk |F yang juga olkenal oengan lstllab |F Statement, memlllkl bentuk
umum sebagal berlkut :
|t konolsl tben
Aksl-1
[else
Aksl-2]
Lno lt
Konolsl aoalab ekspresl boolean yang bernllal benar atau salab, blsa berupa:
Sebuab nllal boolean: true atau talse
Sebuab varlabel boolean
Sebuab pembanolngan oata
Dua pembanolngan oata atau leblb yang olgabung
Aksl berupa satu statement beberapa statement, olmana tlap statement
oapat berupa:
Statement penglslan nllal sepertl a 5
Statement lnput oata
Statement output oata
Statement pemlllban (|t Statement atau Case Statement)
Statement pengulangan (For, Repeat atau Wblle Statement)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
46 Pemi l i han
PAGE 10
[else Aksl-2], tanoa [ ] menyatakan opslonal (boleb aoa/tloak aoa),
olmana kalau tloak aoa, berartl setelab Aksl-1 langsung selesal.
Darl bentuk umum yang telab oljelaskan, maka varlasl bentuk |F lnl banyak
oan tloak berblngga. Dl antaranya yang pentlng oapat olsebutkan berlkut:
- lt tanpa else (satu plllban, mengerjakan atau tloak)
- lt oengan else (oua plllban)
- lt bersarang olmana oalam lt aoa lt lagl, karena Statement oapat berupa
satu perlntab pemlllban. Salab satu bentuk lt bersarang aoalab lt untuk
memlllb salab satu oarl banyak plllban.
Contob-contob varlasl:
1. Satu plllban (tanpa LLSL)
||t konolsl tben
|Statement
|Lno lt
Paoa varlasl lnl, apablla konolsl bernllal benar maka Statement olkerjakan
oan apablla konolsl bernllal salab maka Statement tloak olkerjakan.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 47
PAGE 10
2. Dua plllban (oengan LLSL)
||t konolsl tben
| Statement-1
|else
| Statement-2
|Lno lt
Paoa varlasl lnl, apablla konolsl bernllal benar maka Statement-1 yang
olkerjakan oan apablla konolsl bernllal salab maka Statement-2 yang
olkerjakan (tloak pernab 2 statement lnl olkerjakan semua).
3. Tlga plllban atau leblb, mlsal Statement-1oan Statement-2 paoa contob-2
olkembangkan menjaol bentuk lt lagl seblngga jaol 4 plllban:
||t konolsl-1 tben
| ||t konolsl-2 tben
| | Statement-a
| |Llse
| | Statement-b
| |Lno lt
|else
| |lt konolsl-3 tben
| | Statement-c
| |Llse
| | Statement-o
| |Lno lt
|Lno lt
Paoa varlasl lnl, apablla konolsl-1 bernllal benar maka ollanjutkan
memerlksa konolsl-2. Apablla konolsl-2 bernllal benar maka Statement-a
yang olkerjakan oan apablla konolsl-2 bernllal salab maka Statement-b
yang olkerjakan. Seoangkan apablla konolsl-1 salab maka ollanjutkan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
48 Pemi l i han
PAGE 10
memerlksa konolsl-3. Apablla konolsl-3 bernllal benar maka Statement-c
yang olkerjakan oan apablla konolsl-3 bernllal salab maka Statement-o
yang olkerjakan. (oarl 4 statement yang aoa banya salab satu yang
olkerjakan.
4. Tlga plllban atau leblb, oengan mengembangkan Statement setelab LLSL
||t konolsl-1 tben
| Statement-1
|else
| |lt konolsl-2 tben
| | Statement-2
| |Llse
| | ||t konolsl-3 tben
| | | Statement-3
| | |Llse
| | | Statement-4
| | |Lno lt
| |Lno lt
|Lno lt
5. Penyeoerbanaan penullsan contob-4
(poslsl statement tloak semakln ke kanan, LND |F banya satu kall)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 49
PAGE 10
||t konolsl-1 tben
| Statement-1
|Llse lt konolsl-2 tben
| Statement-2
|Llse lt konolsl-3 tben
| Statement-3
|Llse
| Statement-4
|Lno lt
Paoa varlasl 4 oan 5 lnl, apablla konolsl-1 bernllal benar maka Statement-
| yang olkerjakan oan selesal, tetapl apablla konolsl-1 bernllal salab maka
ollanjutkan memerlksa konolsl-2. Apablla konolsl-2 bernllal benar maka
Statement-2 yang olkerjakan oan selesal, tetapl apablla konolsl-2 bernllal
salab maka ollanjutkan memerlksa konolsl-3. Apablla konolsl-3 bernllal
benar maka Statement-3 yang olkerjakan, tetapl apablla konolsl-3 bernllal
salab maka Statement-4 yang olkerjakan. (oarl 4 statement yang aoa
banya salab satu yang olkerjakan. Penggunaan varlasl 5 leblb balk, karena
tullsan tidak nakin ke kanan walaupun piIihan senakin banyak.
6. 8entuk bebas (jumlabnya tak terblngga), salab satunya
||t konolsl-1 tben
| |Statement-a
| ||t konolsl-2 tben
| | ||t konolsl-3 tben
| | | Statement-b
| | |Llse
| | | ||t konolsl-4 tben
| | | | Statement-c
| | | |Llse
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
50 Pemi l i han
PAGE 10
| | | | Statement-o
| | | |Lno lt
| | |Lno lt
| |Llse
| | Statement-e
| |Lno lt
| |Statement-t
|Llse
| |Statement-g
| |lt konolsl-5 tben
| | Statement-b
| |Lno lt
| |lt konolsl-6 tben
| | Statement-l
| |Lno lt
| |Statement-j
|Lno lt
4.2 Terapan bentuk-bentuk lF
Sebuab masalab terkaoang oapat olselesalkan oengan berbagal cara, sepertl
penggunaan lt tanpa else oan lt oengan else. Sebagal contob oapat olllbat
paoa kasus berlkut:
Kasus 4.1 : Menentukan apakab bllangan yang ollnput posltlp atau negatlp
Solusl : aoa beberapa cara berlkut
Solusl-1
||nput(bll)
||t (bll>=0) tben
| Output('posltlp')
|Llse
| Output('negatlp')
|Lno lt
Solusl-2
||nput(bll)
||t (bll<0) tben
| Output('negatlp')
|Llse
| Output('posltlp')
|Lno lt
Solusl-3
||nput(bll)
|Ket 'posltlp'
||t (bll<0) tben
| Ket 'negatlp'
|Lno lt
|Output(Ket)
Solusl-4
||nput(bll)
|Ket 'negatlp'
||t (bll>=0) tben
| Ket 'posltlp
|Lno lt
|Output(Ket)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 51
PAGE 10
Solusl-5
||nput(bll)
||t (bll>=0) tben
| Output('posltlp')
|Lno lt
||t (bll<0) tben
| Output('negatlp')
|Lno lt
Solusl-6
||nput(bll)
||t (bll<0) tben
| Output('negatlp')
|Lno lt
||t (bll>=0) tben
| Output('posltlp')
|Lno lt
Solusl-7
||nput(bll)
|posltlp bll>=0
||t (posltlp=true) tben
| Output('posltlp')
|else
| Output('negatlp')
|Lno lt
Solusl-8
||nput(bll)
|posltlp bll>=0
||t (posltlp) tben
| Output('posltlp')
|else
| Output('negatlp')
|Lno lt
Ulasan oarl beberapa solusl:
Solusl-1 oan Solusl-2 aoalab solusl yang sama, olgunakan konolsl berkeballkan
seblngga poslsl perlntab tampllan oltukar.
Solusl-3 oan Solusl-4 juga sama, keouanya menggunakan lt tanpa else,
oengan cara varlabel Ket ollnlslallsasl (olberl nllal awal) oengan salab satu
kemungklnan basllnya, kemuolan olubab blla memenubl konolsl.
Solusl-5 oan Solusl-6 juga sama, paoa solusl lnl olbuat 2 buab lt tanpa else
secara terplsab. Dengan cara lnl, berartl akan ollakukan pemerlksaan konolsl
2 kall (paoabal sebenarnya cukup satu kall).
Solusl-7 oan Solusl-8 keouanya menggunakan varlabel bertlpe boolean
bernama posltlp untuk mencatat basll pembanolngan bll>=0. Penullsan
lt (posltlp=true) sama saja oengan menullskan lt (posltlp) cara yang
terakblr leblb cepat waktu eksekuslnya.
8erlkut beberapa kasus yang laln:
Kasus 4.2 : Terbesar oarl 3 bllangan
Solusl-1
||nput(A,8,C)
||t (A>8) tben
| ||t (A>C) tben
| | Output('terbesar =',A)
| |Llse
Solusl-2
||nput(A,8,C)
||t (A<8) tben
| ||t (8<C) tben
| | Output('terbesar =',C)
| |Llse
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
52 Pemi l i han
PAGE 10
| | Output('terbesar =',C)
| |Lno lt
|else
| |lt (8>C) tben
| | Output('terbesar =',8)
| |Llse
| | Output('terbesar =',C)
| |Lno lt
|Lno lt
| | Output('terbesar =',8)
| |Lno lt
|else
| |lt (A<C) tben
| | Output('terbesar =',C)
| |Llse
| | Output('terbesar =',A)
| |Lno lt
|Lno lt
Solusl-3
||nput(A,8,C)
||t (A>8 ano A>C) tben
| |Output('terbesar =',A)
|Llse
| |lt (8>A ano 8>C) tben
| | Output('terbesar =',8)
| |Llse
| | lt (C>A ano C>8) tben
| | Output('terbesar =',C)
| | |Lno lt
| |Lno lt
|Lno lt
Solusl-4
||nput(A,8,C)
||t (A>8 ano A>C) tben
| |Output('terbesar =',A)
|Llse lt (8>A ano 8>C) tben
| |Output('terbesar =',8)
|Llse lt (C>A ano C>8) tben
| |Output('terbesar =',C)
|Lno lt
Solusl-5
||nput(A,8,C)
|Ma A
||t (8>Ma) tben
| |Ma 8
|Lno lt
||t (C>Ma) tben
| |Ma C
|Lno lt
|Output('terbesar = ',Ma)
Solusl-6
||nput(A,8,C)
||t (A>8) tben
| |Ma A
|else
| |Ma 8
|Lno lt
||t (C>Ma) tben
| |Ma C
|Lno lt
|Output('terbesar = ',Ma)
Ulasan oarl beberapa solusl:
Solusl-1,Solusl-2 oan Solusl-3 mengguanakan 3 buab konolsl oan setlap basll
yang oloapat akan melalul pemerlksaan 2 buab koolsl.
Solusl-4 menggunakan konolsl yang terolrl oarl 2 pembanolngan, oengan rata-
rata melakukan pemerlksaan 2 konolsl (4 pembanolngan)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 53
PAGE 10
Solusl-5 oan Solusl-6 olgunakan 2 buab lt yang terplsab, olmana basll
sementara nllal terbesar olcatat ol tempat baru (Ma), cara lnl leblb praktls
terutama kalau olkembangkan untuk mencarl terbesar oarl banyak bllangan.
Kasus 4.3 : Pembayaran alr mlnum PDAM
PDAM menerapkan pembayaran alr mlnum perumaban oengan cara
perbltungan sebagal berlkut :
- Tarlt per m3 untuk 10 m3 pertama (1-10) aoalab 2.000
- Tarlt per m3 untuk 10 m3 keoua (11-20) aoalab 3.000
- Tarlt per m3 untuk 10 m3 ketlga (21-30) aoalab 4.000
- Tarlt per m3 untuk 10 m3 selanjutnya (31 ke atas) aoalab 5.000
- Pemakalan alr olbltung mlnlmal 10 m3 (kurang oarl 10 m3 olanggap 10 m3)
- 8laya aomlnlstrasl bulanan sebesar 10.000
8agalmana membuat algorltma untuk mengbltung blaya tersebut?
Contob kasus
Penggunaan alr 5 m3 oengan blaya 10 2.000 + 10.000 = 30.000
Penggunaan alr 15 m3 oengan blaya 10 2.000 + 5 3.000 + 10.000 = 45.000
Penggunaan alr 75 m3 oengan blaya 10 2.000 + 10 3.000 +
10 4.000 + 45 5.000 +10.000 = 325.000
Solusl :
Pemakalan alr olbagl menjaol 4 area pemakalan (mlsal area a,b,c,o), baru
olbltung total blaya
Solusl-1
||nput(pakal)
||t (pakal>30) tben
| |a10
| |b10
| |c10
| |opakal - 30
|Llse |t (pakal>20) tben
| |a10
| |b10
| |cpakal - 20
| |o0
|Llse |t (pakal>10) tben
| |a10
| |bpakal - 10
| |c0
Solusl-2
||nput(pakal)
|a10
|b0
|c0
|o0
||t (pakal>30) tben
| |b10
| |c10
| |opakal - 30
|Llse |t (pakal>20) tben
| |b10
| |cpakal - 20
|Llse |t (pakal>10) tben
| |bpakal - 10
|Lno lt
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
54 Pemi l i han
PAGE 10
| |o0
|Llse
| |a10
| |b0
| |c0
| |o0
|Lno lt
|blayaa * 2000 + b * 3000 +
| c * 4000 + o * 5000 +
| 10000
|Output('blaya =',blaya)
|blayaa * 2000 + b * 3000 +
| c * 4000 + o * 5000 +
| 10000
|Output('blaya =',blaya)
Ulasan solusl :
Paoa solusl-1, tlap aksl oarl lt , terolrl oarl 4 statement menglsl a,b,c oan o.
8entuk solusl lnl olseoerbanakan paoa solusl-2 oengan cara memberlkan nllal
awal sebelum masuk lt.
Kasus-4 : |noeks Nllal Kullab
|noeks nllal sebuab matakullab oloapat oengan cara mengbltung nllal akblr
beroasarkan prosentase komponen-komponennya kemuolan oltentukan
lnoeks nllalnya. Mlsal olgunakan ketentuan sebagal berlkut:
- Nllal Akblr olbltung oarl 30 UTS, 40UAS, 20 Tugas oan 10 kebaolran
- |noeks Nllal oltentukan beroasarkan Nllal Akblr (NA),
8lla NA >= 85 maka |noeksnya A
8lla 85 > NA >= 70 maka |noeksnya 8
8lla 70 > NA >= 55 maka |noeksnya C
8lla 55 > NA >= 40 maka |noeksnya D
8lla NA < 40 maka |noeksnya L
8agalmana membuat algorltma untuk menentukan |noeks Nllal tersebut?
Solusl-1
||nput(UTS,UAS,Tugas,Abs)
|NAS 0.3*UTS + 0.4*UAS +
| 0.2*Tugas + 0.1*A8S
||t (NAS>=85) tben
| ||noeks 'A'
|Llse |t (NAS>=70 ano NAS<85)
| |tben
| ||noeks '8'
Solusl-2
||nput(UTS,UAS,Tugas,Abs)
|NAS 0.3*UTS + 0.4*UAS +
| 0.2*Tugas + 0.1*A8S
||t (NAS>=85) tben
| ||noeks 'A'
|Llse |t (NAS>=70) tben
| ||noeks '8'
|Llse |t (NAS>=55) tben
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 55
PAGE 10
|Llse |t (NAS>=55 ano NAS<70)
| |tben
| ||noeks 'C'
|Llse |t (NAS>=40 ano NAS<55)
| |tben
| ||noeks 'D'
|Llse
| ||noeks 'L'
|Lno lt
|Output('|noeks Nllal =',|noeks)
| ||noeks 'C'
|Llse |t (NAS>=40) tben
| ||noeks 'D'
|Llse
| ||noeks 'L'
|Lno lt
|Output('|noeks Nllal =',|noeks)
Ulasan solusl :
Paoa solusl-2 leblb balk oarl solusl-1 karena pemerlksaan konolsl yang serupa
tloak ollakukan oua kall. Paoa solusl-1, pembanolngan NAS oengan 85
ollakukan oua kall, yang pertama NAS>=85 oan yang keoua NAS<85 aoalab
pembanolngan yang serupa.
4.3 Bentuk Unun CA5E dan variasinya
Sebenarnya semua bentuk pemlllban oapat oltulls oengan |F, namun
penullsan oengan |F untuk banyak plllban terasa kurang praktls. 8entuk CASL
aoalab cara laln penullsan bentuk pemlllban yang leblb seoerbana, namun
bentuk lnl banya oapat menggantlkan |F apablla memenubl syarat:
- konolsl berupa pembanolngan kesamaan (oengan tanoa = )
- nllal yang olbanolngkan bertlpe orolnal (lnteger,cbar oan boolean)
8entuk CASL yang juga olkenal oengan lstllab CASL Statement, memlllkl
bentuk umum sebagal berlkut :
Case ekspresl
Nllal-1: Aksl-1
Nllal-2: Aksl-2
...
Nllal-N: Aksl-N
[Otberwlse : Aksl-X]
Lno Case
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
56 Pemi l i han
PAGE 10
Lkspresl bertlpe orolnal, berupa:
Sebuab nllal orolnal: boolean, lnteger, cbar (bukan strlng atau real)
Sebuab varlabel bertlpe orolnal
Operasl oata (nllal atau varlabel) yang mengbasllkan sebuab nllal orolnal
Nllal barus berupa nllal orolnal (tloak boleb varlabel)
Aksl berupa satu statement beberapa statement, olmana tlap statement
oapat berupa:
Statement penglslan nllal sepertl a 5
Statement lnput oata
Statement output oata
Statement pemlllban (|t Statement atau Case Statement)
Statement pengulangan (For, Repeat atau Wblle Statement)
[otberwlse: Aksl-X], tanoa [ ] menyatakan opslonal (boleb aoa/tloak aoa),
olmana kalau tloak aoa, berartl setelab Aksl-1 langsung selesal. Fungsl
Otberwlse sama oengan LLSL paoa |F Statement
Darl bentuk umum yang telab oljelaskan, maka varlasl bentuk CASL lnl
banyak oan tloak berblngga. Dl antaranya yang pentlng oapat olsebutkan
berlkut:
- Case tanpa otberwlse
- Case oengan otberwlse
- Case oengan Aksl yang sama untuk beberapa Nllal
- Case bersarang olmana oalam case aoa case lagl, atau Statement laln
Contob-contob varlasl:
1. Case tanpa otberwlse
Case ekspresl
Nllal-1: Statement-1
Nllal-2: Statement -2
...
Nllal-N: Statement -N
Lno Case
2. Case oengan otberwlse
Case ekspresl
Nllal-1: Statement -1
Nllal-2: Statement -2
...
Nllal-N: Statement -N
[Otberwlse : Aksl-X]
Lno Case
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 57
PAGE 10
3. Case oengan Aksl yang sama untuk beberapa Nllal
Case ekspresl
Nllal-1,Nllal-2,Nllal-3: Statement -1
Nllal-4,Nllal-5,Nllal-6: Statement -2
Nllal-7..Nllal-10: Statement -3
...
Nllal-N: Statement -N
[Otberwlse : Statement -X]
Lno Case
4. Case bersarang, contobnya :
Case ekspresl-1
Nllal-1: Case ekspresl-2
Nllal-a: Statement -1
Nllal-b: Statement -2
Lno Case
Nllal-2: lt konolsl tben
Statement-3
Llse
Statement-4
Lno lt
Nllal-3:
...
Nllal-N: Statement -N
Lno Case
4.4 Terapan bentuk-bentuk CA5E
Kasus 4.4 : Menentukan nama barl oarl nomor barl yang ollnput
Dlnput nomor barl, oltampllkan nama barlnya, bagalmana algorltmanya?
Solusl oengan |F oan CASL
Solusl-|t
||nput(NoHarl)
||t (NoHarl=1) tben
| |NmHarl 'Senln'
|Llse |t (NoHarl=2) tben
| |NmHarl 'Selasa'
|Llse |t (NoHarl=3) tben
Solusl-Case
||nput(NoHarl)
|Case NoHarl
| |1: NmHarl 'Senln'
| |2: NmHarl 'Selasa'
| |3: NmHarl 'Rabu'
| |4: NmHarl 'Kamls'
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
58 Pemi l i han
PAGE 10
| |NmHarl 'Rabu'
|Llse |t (NoHarl=4) tben
| |NmHarl 'Kamls'
|Llse |t (NoHarl=5) tben
| |NmHarl '[umat'
|Llse |t (NoHarl=6) tben
| |NmHarl 'Sabtu'
|Llse |t (NoHarl=7) tben
| |NmHarl 'Mlnggu'
|Lno lt
|Output(NmHarl)
| |5: NmHarl '[umat'
| |6: NmHarl 'Sabtu'
| |7: NmHarl 'Mlnggu'
|Lno Case
|Output(NmHarl)
Paoa solusl-2 terllbat leblb seoerbana oan muoab olbaca olbanolng oengan
solusl-1.
Kasus 4.5 : Merubab angka menjaol kallmat
Dlnput bllangan/angka (angka olbatasl 1-99), oltampllkan kata-kata/kallmat oarl
bllangan tersebut, bagalmana algorltmanya?
Solusl
Solusl-Case
||nput(bll)
|pul bll olv 10
|sat bll moo 10
|Kallmat ''
|Case sat
| |1: Kallmat 'Satu'
| |2: Kallmat 'Dua'
| |3: Kallmat 'Tlga'
| |4: Kallmat 'Lmpat'
| |5: Kallmat 'Llma'
| |6: Kallmat 'Lnam'
| |7: Kallmat 'Tujub'
| |8: Kallmat 'Delapan'
| |9: Kallmat 'Sembllan'
|Lno Case
|Case pul
| |1: |Case sat
| | | 0: Kallmat 'Sepulub'
| | | 1: Kallmat 'Sebelas'
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 59
PAGE 10
| | | Otberwlse: Kallmat Kallmat + ' belas'
| | |Lno Case
| |2: |Kallmat 'Dua Pulub' + Kallmat
| |3: Kallmat 'Tlga Pulub' + Kallmat
| |4: Kallmat 'Lmpat Pulub' + Kallmat
| |5: Kallmat 'Llma Pulub' + Kallmat
| |6: Kallmat 'Lnam Pulub' + Kallmat
| |7: Kallmat 'Tujub Pulub' + Kallmat
| |8: Kallmat 'Delapan Pulub' + Kallmat
| |9: Kallmat 'Sembllan Pulub' + Kallmat
|Lno Case
|Output(Kallmat)
Paoa solusl ol atas, satuan olproses oengan case pertama, selanjutnya puluban
olproses CASL keoua. Paoa puluban=1 (angka belasan) olbagl lagl manjaol 3
kemungklnan, karena bunyl kallmatnya aoa 3 macam,
4.5 Konversi 5truktur lF dan CA5E ke Bahasa C
8erlkut lnl olberlkan peooman konversl oarl algorltma ke oalam babasa C
untuk struktur |F oan CASL:
Algorltma 8abasa C
|t konolsl tben
Aksl
Lno lt
lt (konolsl) {
Aksl,
}
|t konolsl tben
Aksl1
Llse
Aksl2
Lno lt
|t (konolsl) {
Aksl1,
}
else {
Aksl2,
}
|t konolsl1 tben
Aksl1
Llse lt konolsl2
Aksl2
Llse
Aksl3
Lno lt
lt (konolsl1) {
Aksl1,
}
else lt (konolsl2){
Aksl2,
}
else {
Aksl3,
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
60 Pemi l i han
PAGE 10
Case ekspresl
Nllal1: Aksl1
Nllal2: Aksl2
Nllal3: Aksl3
Lno case
swltcb (ekspresl) {
case Nllal1: Aksl1,
8reak,
case Nllal2: Aksl2,
8reak,
case Nllal3: Aksl3,
}
Case ekspresl
Nllal1: Aksl1
Nllal2: Aksl2
Nllal3: Aksl3
Otberwlse: Aksl4
Lno case
swltcb (ekspresl) {
case Nllal1: Aksl1,
8reak,
case Nllal2: Aksl2,
8reak,
case Nllal3: Aksl3,
8reak,
oetault: Aksl4,
}
Case ekspresl
Nllal-1,Nllal-2,Nllal-3: Aksl1
Nllal-4,Nllal-5: Aksl2
Nllal-6..Nllal-8: Aksl3
Otberwlse: Aksl4
Lno Case
swltcb (ekspresl) {
case Nllal1:
case Nllal2:
case Nllal3: Aksl1,
8reak,
case Nllal4:
case Nllal5: Aksl2,
8reak,
case Nllal6:
case Nllal7:
case Nllal8: Aksl3,
8reak,
oetault: Aksl4,
}
Catatan:
- penullsan konolsl paoa |F oan ekspresl paoa CASL oalam babasa C barus
olgunakan tanoa kurung ( ).
- aksl berupa satu perlntab atau leblb, maslng-maslng olakblrl tltlk koma.
- apablla aksl banya berupa satu perlntab, penggunaan { } oapat olbllangkan.
- kata lt, else, swltcb, case oan oetault oalam babasa C, barus
oltulls oengan burut kecll semua.
- oalam babasa C tloak aoa kata tben, eno lt oan eno case tetapl
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 61
PAGE 10
olgantlkan pasangan kurung kurawal { oan }
- batl-batl oengan penggunaan kesamaan, yaltu oengan == bukan =.
- strlng olgunakan kutlp oua ( sepertl test ) bukan kutlp satu ('test').
Contob penullsan algorltma selengkapnya oan basll konverslnya ke babasa C.
Dlambll oarl contob paoa Kasus 4.3
Algorltma 8abasa C
Algorltma PDAM
/* mengbltung blaya pemakalan alr*/
Kamus Data
pakal,a,b,c,o : lnteger
blaya : lnteger
8egln
||nput(pakal)
|a10
|b0
|c0
|o0
||t (pakal>30) tben
| |b10
| |c10
| |opakal - 30
|Llse |t (pakal>20) tben
| |b10
| |cpakal - 20
|Llse |t (pakal>10) tben
| |bpakal - 10
|Lno lt
|blayaa * 2000 + b * 3000 +
| c * 4000 + o * 5000 +
| 5000
|Output('blaya =',blaya)
Lno
#incIude <stdio.h>
#incIude <conio.h>
/* mengbltung blaya pemakalan alr*/
int nain{} {
//Kamus Data
lnt pakal,a,b,c,o,
lnt blaya,
//8egln
prlntt(Masukkan pemakalan alr: ),
scant(o,&pakal),
a=10,
b=0,
c=0,
o=0,
lt (pakal>30) {
b=10,
c=10,
o=pakal 30,
}
else lt (pakal>20) {
b=10,
c=pakal 20,
}
else lt (pakal>10) {
b=pakal 10,
}
blaya = a * 2000 + b * 3000 +
c * 4000 + o * 5000 +
10000,
prlntt(blaya = o,blaya),
getche{},
return 0,
//Lno
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
62 Pemi l i han
PAGE 10
Rangkunan
1. Struktur pemlllban oapat olgunakan untuk membuat program melakukan
aksl tertentu sesual nllal oarl konolsl yang olpertlmbangkan.
2. Struktur pemlllban oapat berupa struktur |F ... THLN ..., struktur |F ...
THLN ... LLSL ..., struktur CASL, maupun pemlllban bersarang |F atau
CASL.
3. Struktur |F ... THLN ... (tanpa LLSL) olgunakan paoa sltuasl oengan plllban
mengerjakan aksl atau tloak.
4. Struktur |F ... THLN ... LLSL ... olgunakan untuk memlllb salab satu aksl
oarl beroasarkan nllal konolsl.
5. Struktur CASL merupakan bentuk penyeoerbanaan oarl struktur |F
oengan persyaratan tertentu, yaltu konolsl berupa pembanolngan
kesamaan oan nllal yang olbanolngkan barus orolnal (lnteger,cbar atau
boolean).
6. Klausa OTHLRW|SL paoa struktur CASL bersltat opslonal, sepertl
balnya LLSL paoa struktur CASL.
7. Struktur pemlllban bersarang oan struktur CASL oapat
menyeoerbanakan program yang menyelesalkan kasus oengan nllal
konolsl berjumlab leblb oarl oua.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 63
PAGE 10
Kuis Benar 5aIah
1. Klausa LLSL oalam struktur pemlllban |F... THLN... LLSL... berartl 'jlka
tloak'.
2. Klausa THLN oalam struktur pemlllban |F... THLN... LLSL... berartl
'maka'.
3. Struktur pemlllban oapat membantu pengambllan keputusan oalam
program.
4. Struktur pemlllban oapat membuat program berjalan oengan alur yang
berbeoa sesual konolsl yang seoang berlaku.
5. Struktur CASL banya oapat olgunakan paoa pemlllban oengan satu
ekspresl.
6. Paoa struktur pemlllban |F... THLN... LLSL..., jlka konolsl yang olsebutkan
setelab klausa |F bernllal benar maka program akan menjalankan aksl
setelab klausa LLSL.
(Untuk soal no 7 9) Perbatlkan potongan algorltma berlkut lnl:
Input (nilai)
IF nilai > 85 AND nilai <= 100 THEN
Output (Nilai mutu = A)
ELSE
IF nilai > 60 AND nilai <= 85 THEN
Output (Nilai mutu = B)
ELSE
IF nilai > 45 AND nilai <= 60 THEN
Output (Nilai mutu = C)
ELSE
IF nilai > 30 AND nilai <= 45 THEN
Output (Nilai mutu = D)
ELSE
Output (Nilai mutu = E)
ENDIF
ENDIF
ENDIF
ENDIF
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
64 Pemi l i han
PAGE 10
7. [lka lnputan nllal = 60, maka outputnya aoalab 'Nllal mutu = 8'.
8. [lka lnputan nllal = 101, maka outputnya aoalab 'Nllal mutu = L'
9. [lka lnputan nllal = -5, maka outputnya aoalab 'Nllal tloak oapat
oltentukan'.
(Untuk soal no 10 13) Perbatlkan potongan algorltma berlkut lnl:
CASE nilai OF
A : Output (Sangat memuaskan)
B : Output (Memuaskan)
C : Output (Cukup)
D : Output (Kurang)
E : Output (Sangat kurang)
OTHERWISE : Output (Inputkan A,B,C,D atau E)
ENDCASE
10. [lka lnputan nllal = '8', maka outputnya aoalab 'Sangat memuaskan'
11. [lka lnputan nllal = 'L', maka outputnya aoalab 'Sangat kurang'
12. [lka lnputan nllal = '65', maka outputnya aoalab 'Cukup'
13. Potongan algorltma berlkut lnl tepat sama oengan potongan program
paoa soal:
Input (nilai)
IF nilai = A THEN
Output (Sangat memuaskan)
ELSE
IF nilai = B THEN
Output (Memuaskan)
ELSE
IF nilai = C THEN
Output (Cukup)
ELSE
IF nilai = D THEN
Output (Kurang)
ELSE
IF nilai = E THEN
Output (Sangat kurang)
ELSE
Output (Inputkan A,B,C,D atau E)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 65
PAGE 10
14. Paoa struktur pemlllban |F... THLN..., pemrogram tloak perlu
menentukan parameter konolsl yang olgunakan.
15. Paoa struktur pemlllban CASL, pemrogram tloak perlu menentukan
parameter konolsl yang olgunakan.
16. Struktur pemlllban CASL oapat menyeoerbanakan pemlllban yang oltulls
oengan struktur |F... THLN... LLSL... .
17. Dalam tlowcbart, pengecekan konolsl paoa struktur pemlllban
olgambarkan oengan bentuk belab ketupat.
18. Dua garls keluar oarl struktur pemlllban oalam tlowcbart menunjukkan
kemungklnan nllal oarl konolsl.
19. Konolsl oan aksl paoa struktur pemlllban barus berupa ekspresl boolean.
20. Perbatlkan potongan algorltma berlkut lnl:
Input (x)
IF x mod 2 = 0 THEN
Output (sisa bagi adalah nol)
ELSE
Output (sisa bagi bukan nol)
ENDIF
Algorltma ol atas oapat olgunakan untuk membeoakan bllangan genap oan
ganjll.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
66 Pemi l i han
PAGE 10
PiIihan Ganda
1. Struktur pemlllban terolrl atas komponen-komponen berlkut lnl,
kecuall . .
A. konolsl pemlllban
8. alternatlt aksl or nllal konolsl
C. aksl
D. reaksl
L. parameter konolsl
2. Perbatlkan potongan algorltma berlkut lnl:
IF badan belum bersih THEN
teruskan mandi
ELSE
mandi selesai
ENDIF
Menurut potongan algorltma tersebut, manol selesal jlka . .
A. tangan capek
8. suoab terlalu lama
C. baoan suoab berslb
D. manol tloak olteruskan
L. plllban A,8,C,oan D salab
3. Pernyataan manakab yang SALAH tentang struktur pemlllban CASL.
LND CASL?
A. Terseola aksl oetault oalam struktur pemlllban lnl
8. Dalam struktur lnl, konolsl pemlllban tloak perlu oltentukan
C. Struktur lnl oapat olgunakan untuk menggantlkan struktur
pemlllban bersarang.
D. Struktur lnl memlllkl komponen parameter konolsl, alternatlt nllal,
oan aksl
L. Pernyataan A,8,C maupun D benar semua.
4. Potongan algorltma manakab yang tepat untuk membeoakan bllangan
genap oan ganjll?
a. Input (x)
IF x mod 2 >= 0 THEN
Output (x adalah bilangan genap)
ELSE
IF x mod 2 < 0 THEN
Output (x adalah bilangan ganjil)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 67
PAGE 10
ENDIF
ENDIF
b. Input (x)
IF x div 2 >= 0 THEN
Output (x adalah bilangan genap)
ELSE
IF x div 2 < 0 THEN
Output (x adalah bilangan ganjil)
ENDIF
ENDIF
c. Input (x)
IF x mod 2 = 0 THEN
Output (x adalah bilangan genap)
ELSE
Output (x adalah bilangan ganjil)
ENDIF
d. Input (x)
IF x div 2 = 0 THEN
Output (x adalah bilangan genap)
ELSE
Output (x adalah bilangan ganjil)
ENDIF
e. Plllban A,8,C,D salab
5. 8erlkut lnl aoalab contob konolsl yang tloak oapat olgunakan oalam
pemlllban, yaltu . .
A. angka1 > angka2
8. gajl = 1000000
C. baju = baru
D. a * b <= 0
L. Plllban A,8,C,D salab
6. Apakab tungsl klausa OTHLRW|SL paoa struktur pemlllban CASL.
LND CASL?
A. Menentukan aksl yang barus ollakukan jlka konolsl bernllal benar
8. Menentukan aksl yang barus ollakukan jlka konolsl bernllal salab
C. Menentukan aksl tambaban yang ollakukan apapun nllal konolsl
D. Menentukan aksl yang barus ollakukan jlka tloak aoa nllal yang
sesual oengan ekspresl
L. Mengakblrl struktur pemlllban
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
68 Pemi l i han
PAGE 10
7. Perbatlkan potongan algorltma berlkut lnl:
Input (harga)
IF harga = 12500 then
Beli
ENDIF
Pernyataan manakab yang benar tentang program ol atas?
A. [lka barga <12500 maka lakukan aksl bell
8. [lka barga >12500 maka lakukan aksl bell
C. [lka barga = 12500 maka program tloak melakukan apapun
D. [lka barga <> 12500 maka program tloak melakukan apapun
L. [lka barga <> 12500 maka program error
8. Dalam struktur |F. THLN. LLSL., klausa |F oapat olartlkan . .
A. [lka
8. Maka
C. [lka tloak
D. Sebalknya
L. Apapun yang terjaol
9. Perbatlkan potongan algorltma berlkut lnl:
Input (n)
p = n*2
IF p mod 2 = 0 THEN
Output (p/2)
ELSE
Output (p*2)
ENDIF
Pernyataan manakab yang benar tentang algorltma ol atas?
A. 8erapapun nllal yang ollnputkan, outputnya sama oengan nllal
lnputan
8. [lka lnputannya aoalab bllangan ganjll, outputnya aoalab nllal
lnputan olkall oua
C. [lka lnputannya aoalab bllangan genap, outputnya aoalab nllal
lnputan olbagl oua
D. 8erapapun nllal yang ollnputkan, outputnya aoalab nllal lnputan
olkall oua
L. Plllban A,8,C maupun D salab
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemi l i han 69
PAGE 10
10. Perbatlkan potongan algorltma berlkut lnl:
lnput (ke|osj
SW|TCH ke|os
8LG|N
CASL '1` :
0utput ('Pengoor = Ano`j
break
CASL '2` :
0utput ('Pengoor = An|`j
break
CASL '3` :
0utput ('Pengoor = lno`j
break
LND
Apakab output oarl algorltma ol atas jlka lnputnya kelas = '4'?
A. 'Pengajar = Ana'
8. 'Pengajar = Anl'
C. 'Pengajar = |na'
D. Program error
L. Plllban A,8,C oan D salab
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
70 Pengul angan
5 PenguIangan
Overview
Pengulangan (Loop) merupakan sebuab konsep yang pentlng oalam
pemrograman. Dengan struktur pengulangan, program oapat berjalan
beberapa kall sesual lnlslallsasl, jumlab lterasl oan konolsl berbentl yang
oltentukan. Hal lnl oapat menyeoerbanakan program yang kompleks menjaol
leblb seoerbana. Dalam C olseolakan berbagal perlntab Loop, olmana setlap
perlntab |oop memelllkl keunlkan tersenolrl. Dl oalam bab lnl akan oljelaskan
tentang struktur pengulangan oalam algorltma serta lmplementasl struktur
perulangan oengan perlntab |oop yang aoa ol oalam C.
Tujuan
1. Memabaml konsep oasar oan struktur pengulangan
2. Memabaml perlntab pengulangan oalam C
3. Menerapkan slntaks-slntaks pengulangan oalam menyelesalkan persoalan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
70 Pengul angan
5 PenguIangan
Overview
Pengulangan (Loop) merupakan sebuab konsep yang pentlng oalam
pemrograman. Dengan struktur pengulangan, program oapat berjalan
beberapa kall sesual lnlslallsasl, jumlab lterasl oan konolsl berbentl yang
oltentukan. Hal lnl oapat menyeoerbanakan program yang kompleks menjaol
leblb seoerbana. Dalam C olseolakan berbagal perlntab Loop, olmana setlap
perlntab |oop memelllkl keunlkan tersenolrl. Dl oalam bab lnl akan oljelaskan
tentang struktur pengulangan oalam algorltma serta lmplementasl struktur
perulangan oengan perlntab |oop yang aoa ol oalam C.
Tujuan
1. Memabaml konsep oasar oan struktur pengulangan
2. Memabaml perlntab pengulangan oalam C
3. Menerapkan slntaks-slntaks pengulangan oalam menyelesalkan persoalan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 71
PAGE 10
5.1 Konsep Pengulongon
Program yang etlslen aoalab program yang memungklnkan pengguna
bekerja seseolklt mungkln oan komputer bekerja sebanyak mungkln. Salab
satu cara melakukan bal tersebut aoalab oengan menggunakan kemball
sekumpulan barls program yang teroapat paoa baglan laln oarl program
tersebut atau barls program yg teroapat ol oalam program laln.
Pengulangan merupakan sebuab konsep pemrograman yang pentlng
karena konsep lnl memungklnkan pengguna menggunakan sekumpulan barls
program berulang kall oengan tlga komponen yang mengenoallkannya, yaltu:
lnisiaIisasi, menentukan konolsl awal ollakukannya pengulangan.
junIah iterasi, menunjukkan berapa kall pengulangan akan ollakukan.
Kondisi berhenti, menentukan konolsl yang oapat mengakblrl
pengulangan.
Contob kasus ounla nyata yang oapat olgunakan untuk menggambarkan
ketlga komponen lnl aoalab cerlta lbu mengupas sepulub (10) butlr kentang.
|bu akan mengumpulkan oulu 10 butlr kentang yang akan olkupas, kemuolan
|bu akan mengambll sebuab kentang kemuolan mengupasnya, setelab selesal
mengupas |bu akan mengambll kentang berlkutnya oan melakukan aksl
mengupas lagl. |bu akan melakukan pengupasan kentang satu persatu blngga
mencapal kentang ke-10, oan selurub kentang tersebut telab terkupas. |bu
akan melakukan seoeretan aksl yang tepat sama terbaoap kesepulub butlr
kentang tersebut. Maka,
lnisiaIisasi: 10 butlr kentang yang maslb utub oengan kulltnya
junIah iterasi: 10 (sesual jumlab kentang)
Kondisi berhenti: 10 butlr kentang suoab terkupas.
Ketlka menglmplementaslkan oalam program, ketlga komponen lnl
tloak selalu oapat oloetlnlslkan oalam struktur pengulangan. Mungkln saja salab
satu komponen tersebut tloak oloetlnlslkan. Pengulangan tetap oapat berjalan,
asal komponen yang tloak oloetlnlslkan tersebut oapat olketabul secara
terslrat beroasarkan komponen laln yang oloetlnlslkan. Hal laln yang perlu
olperbatlkan aoalab babwa penguIangan harus berhenti. [lka pengulangan
tloak pernab berbentl, maka loglka program salab. Pengulangan akan berbentl
jlka jumlab lterasl yang olmlnta suoab tercapal atau konolsl berbentl bernllal
benar. Maka, oalam setlap pengulangan, pemrogram perlu menentukan jumlab
lterasl atau konolsl berbentl oan langkab pencapalan menuju konolsl berbentl
tersebut.
Paoa bab lnl akan oljelaskan 3 struktur perulangan oan lmplementaslnya
ol oalam C, yaltu struktur perulangan Wblle , For, oan Do Wblle
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
72 Pengul angan
5.2 Sntoks WHlL
Pengulangan oengan menggunakan WH|LL merupakan sebuab
pengulangan yang olkenoallkan oleb suatu konolsl tertentu, olmana konolsl
tersebut yang akan menentukan apakab perulangan ltu akan terus
ollaksanakan atau olbentlkan. Konolsl tersebut akan olcek olsetlap awal
lterasl, apakab sebuab konolsl terpenubl atau tloak. [lka konolsl terpenubl
(bernllal benar), maka lterasl akan ollanjutkan. [lka konolsl tloak terpenubl,
maka lterasl olbentlkan.
Perulangan oengan WH|LL oapat olgunakan paoa struktur perulangan
yang olketabul jumlab lteraslnya oan juga paoa struktur perulangan yang tloak
olketabul jumlab lteraslnya, tetapl barus selalu teroapat konolsl berbentl.
Struktur pengulangan WH|LL aoalab:
1 {inisialisasi}
2 WHILE (kondisi)
3 aksi
4 ubah pencacah (pencapaian kondisi berhenti)
5 ENDWHILE
Pencacab aoalab varlabel pengenoall lterasl yang barus ollnlslallsasl,
olcek oalam konolsl, oan terus berubab nllalnya setlap lterasl ollakukan.
Pencacab lnllab yang akan membuat sebuab konolsl berbentl tercapal. Paoa
struktur pengulangan oengan slntaks WH|LL, nllal pencacab akan olubab ol
akblr aksl pengulangan.
Contob: |bu mengupas 10 butlr kentang oapat olrepresentaslkan
oengan pengulangan WH|LL sebagal berlkut :
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang belum dikupas
FS : 10 kentang telah terkupas
KAMUS DATA
kentang : integer
1 BEGIN
{inisialisasi jumlah kentang yang sudah dikupas}
2 kentang 0
3 WHILE (kentang < 10 ){kondisi iterasi dilakukan}
4 Ambil sebuah kentang
5 Kupas kulit kentang
6 kentangkentang+1 {pencapaian kondisi berhenti}
7 ENDWHILE
8 END
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 73
PAGE 10
Telab olketabul babwa |bu akan melakukan pengupasan sebanyak 10
kentang, maka sebelum masuk struktur pengulangan, varlabel kentang
berlsl 0 {menunjukkan babwa ol awal lterasl belum aoa kentang yang olkupas
atau jumlab kentang yg telab olkupas = 0}.
Paoa lterasl pertama, terjaol pengecekan konolsl (kentang < 10)
olmana artlnya apakab jumlab kentang yang olkupas belum mencapal 10,
karena nllal kentang = 0 maka konolsl bernllal benar, lbu akan mengambll
sebuab kentang kemuolan mengupas kulltnya. Dl akblr lterasl pertama, jumlab
kentang yang suoab olkupas menjaol (0+1) = 1. Paoa tltlk lnl, varlabel kentang
berlsl 1 (artlnya, 1 kentang suoab olkupas).
Paoa lterasl keoua, terjaol pengecekan konolsl (kentang < 10),
seoangkan kentang = 1, maka konolsl bernllal benar, lbu akan mengambll
sebuab kentang kemuolan mengupas kulltnya. Dl akblr lterasl keoua, jumlab
kentang yang suoab olkupas menjaol (1+1)=2.
|terasl lnl terus berulang sampal lterasl ke 10, varlabel kentang berlsl 9.
Saat terjaol pengecekan konolsl (kentang < 10) bernllal benar, maka lbu
mengambll sebuab kentang kemuolan mengupas kulltnya. Dl akblr lterasl ke
sepulub, jumlab kentang yang suoab olkupas menjaol (9+1) = 10.
Kemuolan, paoa lterasl ke 11, terjaol pengecekan konolsl (kentang < 10) ,
karena kentang = 10 maka konolsl bernllal salab, seblngga lterasl olakblrl.
Hasll akblrnya, varlabel kentang berlsl 10 (artlnya, 10 kentang suoab olkupas).
[alannya lterasl lnl oapat oltulls oalam bentuk tabel berlkut:
lterasi ke- Kentang kentang < 10 anbiI & kupas kentang
1 0 Ya Ya 1
2 1 Ya Ya 2
3 2 Ya Ya 3
4 3 Ya Ya 4
5 4 Ya Ya 5
6 5 Ya Ya 6
7 6 Ya Ya 7
8 7 Ya Ya 8
9 8 Ya Ya 9
10 9 Ya Ya 10
11 10 Tloak Tloak -
Darl contob ol atas, varlabel kentang merupakan pengenoall lterasl.
|terasl oapat terus ollakukan atau tloak, bergantung paoa nllal varlabel kentang
lnl. Selanjutnya, varlabel penentu lterasl lnl olsebut oengan pencacab.
Pencacab barus berupa nllal yang memlllkl urutan, yaltu oapat bertlpe lnteger
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
74 Pengul angan
atau karakter. Dl setlap struktur pengulangan, pencacab selalu aoa oan jangan
lupa untuk menglnlslallsasl pencacab. Nllal pencacab akan berubab paoa setlap
lterasl.
Hal laln yang perlu olperbatlkan aoalab babwa ol akblr lterasl, varlabel
kentang bernllal 10. Nllal lnl tloak berubab lagl karena lterasl tloak ollakukan
lagl, oan olsebut sebagal |oop |nvor|ont.
Contob laln struktur pengulangan lnl:
1) Algorltma untuk menampllkan karakter ' * ' sebanyak 5 kall.
ALGORITMA Tampil_Bintang
IS : -
FS : Jumlah bintang yg tampil = 5
KAMUS DATA
i : integer
1 BEGIN
2 i 0 {inisialisasi pencacah i}
3 WHILE (i < 5) {jumlah iterasi}
4 Output (*) {aksi}
5 i i + 1 {pencapaian kondisi berhenti}
6 ENDWHILE
7 END
Output oarl algorltma lnl:
*
*
*
*
*
2) Algorltma untuk menampllkan lterasl ke 1 sampal 5 oengan
pengulangan.
ALGORITMA Iterasi_Angka
IS : -
FS : Tampil angka 1 hingga 5
KAMUS DATA
i : integer
1 BEGIN
2 i 1 {inisialisasi pencacah i}
3 WHILE (i <= 5)
4 Output (Ini adalah iterasi ke-,i)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 75
PAGE 10
5 i i + 1
6 ENDWHILE
7 END
Output oarl algorltma lnl:
Ini adalah iterasi ke-1
Ini adalah iterasi ke-2
Ini adalah iterasi ke-3
Ini adalah iterasi ke-4
Ini adalah iterasi ke-5
3) Algorltma untuk memasukkan nllal tlga (3) orang mabaslswa
ALGORITMA Input_Nilai
IS : -
FS : Menerima inputan nilai dari user
KAMUS DATA
i : integer
nilai : integer
1 BEGIN
2 i 1
3 WHILE (i <= 3)
4 Output (Nilai mahasiswa ke-,i,adalah:)
5 Input (nilai)
6 i i + 1
7 ENDWHILE
8 END
Output oarl algorltma lnl:
Nilai mahasiswa ke-1 adalah: _
Nilai mahasiswa ke-2 adalah: _
Nilai mahasiswa ke-3 adalah: _
4) Algorltma untuk mengbltung nllal rata-rata oarl tlga bllangan yang
ollnputkan.
ALGORITMA Nilai_Rata_Rata
IS : -
FS : Tampil rata-rata dari nilai yang
diinputkan
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
76 Pengul angan
KAMUS DATA
jumlah : float
bilangan : integer
x : float
rerata : float
1 BEGIN
2 jumlah 0 {variabel jumlah bilangan}
3 bilangan 3 {inisialisasi variabel pencacah}
4 WHILE (bilangan > 0)
5 Output(Masukkan angka : )
6 Input (x) {masukkan sebuah bilangan}
7 jumlah jumlah + x {tambahkan bilangan}
8 bilangan bilangan 1 {pencacah mundur}
9 ENDWHILE
10 rerata jumlah/ 3 {menghitung rerata}
11 Output (Rerata : ,rerata)
12 END
Paoa contob algorltma yang ke-4, oltunjukkan babwa lterasl oapat
ollakukan oengan pencacab munour. Selama konolsl bilangan > 0
terpenubl, maka pengguna olmlnta memasukkan sebuab bllangan yang
kemuolan oljumlabkan oengan bllangan-bllangan sebelumnya (paoa lterasl
pertama, bllangan oljumlabkan oengan nol). Karena menggunakan lterasl
munour, maka pencacab akan olkurangkan. Algorltma akan memberlkan
output berupa basll perbltungan rerata oarl ketlga bllangan yang ollnputkan.
[lka paoa contob algorltma yang ke-4 olatas ollnputkan angka 60, 70,
oan 90, maka jalannya lterasl lnl oapat oltulls oalam bentuk tabel berlkut:
|terasl ke- bllangan jumlab rerata bllangan
1 3 60 60 - 2
2 2 70 130 - 1
3 1 90 220 - 0
4 0 - 220 73.33 -
Penggunaan slntaks WH|LL oalam babasa pemrograman C :
Algorltma C
WHILE (kondisi)
aksi
ubah pencacah
ENDWHILE
while (kondisi)
{
//aksi
//ubah pencacah
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 77
PAGE 10
...
i 0
WHILE (i < 5)
Output(*)
i i + 1
ENDWHILE
...
...
i = 0;
while (i < 5)
{
printf(*);
i = i + 1;
}
...
|mplementasl algorltma contob ke-4 ke oalam C aoalab :
1 //Nilai_Rata_Rata.c
2 //Menerima 3 angka dan menampilkan rata-ratanya
3 #include <stdio.h>
4 main ()
5 {
6 //deklarasi variabel yg digunakan
7 float jumlah;
8 int bilangan;
9 float x;
10 float rerata;
11 //inisialisasi variabel jumlah
12 jumlah = 0;
13 //inisialisasi variabel pencacah bilangan
14 bilangan = 3;
15 while (bilangan > 0 )
16 {
17 //meminta inputan dari user
18 printf("Masukkan angka : ");
19 scanf("%f",&x);
20 //menjumlahkan angka yg diinputkan
21 jumlah = jumlah + x;
22 //mengurangkan pencacah untuk mencapai
23 //kondisi berhenti
24 bilangan = bilangan - 1;
25 }
26 //menghitung rata-rata dari 3 inputan angka
27 rerata = jumlah / 3;
28 //menampilkan hasil rata-rata
29 printf("Rerata : %.2f",rerata);
30 }
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
78 Pengul angan
Telab olkatakan ol awal babwa perulangan oengan WH|LL oapat
olgunakan untuk struktur pengulangan yang belum olketabul jumlab lteraslnya,
tetapl tetap mempunyal konolsl berbentl.
Contob struktur pengulangan lnl aoalab sebagal berlkut :
ALGORITMA Tebak_Huruf
IS : -
FS : Menampilkan pesan Maaf Anda salah jika
tebakan salah, dan menampilkan Anda Benar jika
tebakan benar
KAMUS DATA
huruf : character
1 BEGIN
2 {inisialisasi huruf tebakan pertama }
3 Output(Masukkan tebakan : )
4 Input(huruf)
5 WHILE (huruf != q) {pengecekan kondisi}
6 Output(Maaf Anda salah )
7 Output(Masukkan tebakan : )
8 Input(huruf) {input huruf berikutnya}
9 ENDWHILE
10 Output (Anda Benar)
11 END
Paoa algorltma olatas tloak terllbat aoanya oeklarasl varlabel pencacab
oan lnlslallsaslnya, juga tloak terllbat aoanya perubaban terbaoap varlabel
pencacab untuk mencapal konolsl berbentl. Pengulangan olatas tetap oapat
berjalan, karena komponen yang tloak oloetlnlslkan tersebut oapat olketabul
secara terslrat beroasarkan komponen laln yang oloetlnlslkan. Dan yang pallng
pentlng aoalab perulangan lnl mempunyal konolsl berbentl.
Paoa barls ke-4 user akan memasukkan sebuab karakter. Karakter
lnllab yang akan menjaol pemlcu ollaksanakan pengulangan atau tloak, jlka
karakter yang olmasukkan aoalab 'q', maka pengulangan tloak ollanjutkan,
tetapl jlka karakter yang olmasukkan bukan 'q', maka pengulangan ollanjutkan.
Dapat olllbat paoa barls ke-5 babwa konolsl berbentl pengulangan aoalab
ketlka user memasukkan (lnput) burut 'q'.
[umlab lterasl tloak oltentukan oleb varlabel pencacab, melalnkan
oltentukan senolrl oleb user yang menglnputkan burut. 8erlkut aoalab
lmplementasl oarl algorltma Tebak_Hurut oalam babasa pemrograman C.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 79
PAGE 10
1 //Tebak_Huruf.c
2 //User memasukkan sebuah karakter untuk menebak
3 #include <stdio.h>
4 main()
5 {
6 //deklarasi variabel untuk menerima input
7 char huruf;
8 //menginisialisasi huruf awal untuk dicek
9 printf("Tebakan : " );
10 scanf("%s",&huruf);
11 //pengecekan kondisi terhadap huruf inputan
12 while (huruf!='q')
13 {
14 //jika huruf bukan 'q' maka input huruf lain
15 printf("Maaf anda salah");
16 printf("\nTebakan : " );
17 scanf("%s",&huruf);
18 }
19 //jika huruf = 'q' maka tidak masuk ke while
20 printf("Anda Benar");
21 }
5.3 5intaks DO.WHlLE
Slntaks DO... WH|LL... melakukan pengulangan serupa oengan slntaks
WH|LL. Penggunaan slntaks lnl juga tloak barus menyebutkan jumlab
pengulangan yang barus ollakukan, karena oapat olgunakan untuk perulangan
oengan jumlab lteraslnya yang belum olketabul, tetapl barus mempunyal
konolsl berbentl.
8eoanya, jlka paoa slntaks WH|LL konolsl olevaluasl/ olujl sebelum aksl
pengulangan ollakukan, seoangkan paoa slntaks DO...WH|LL pengujlan konolsl
ollakukan setelab aksl pengulangan ollakukan.
Struktur pengulangan DO...WH|LL yaltu:
1 {inisialisasi}
2 DO
3 aksi
4 ubah pencacah
5 WHILE (kondisi)
Paoa struktur pengulangan oengan slntaks DO... WH|LL..., aksl akan
terus ollakukan blngga konolsl yang olcek ol akblr pengulangan, bernllal benar.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
80 Pengul angan
Dengan slntaks lnl, pengulangan pastl ollakukan mlnlmal satu kall, yaknl paoa
lterasl pertama sebelum pengecekan konolsl. WH|LL oengan DO WH|LL
serlngkall memberlkan basll yang sama, tetapl aoa kalanya basllnya akan
berbeoa, seblngga barus berbatl-batl oalam penggunaan konolsl antara WH|LL
oengan DO WH|LL.
8eberapa contob penerapan struktur pengulangan DO... WH|LL... :
5) Algorltma lbu mengupas kentang
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang belum dikupas
FS : 10 kentang telah terkupas
KAMUS DATA
kentang : integer
1 BEGIN
2 {inisialisasi jml kentang yang sudah dikupas}
3 kentang 0
4 DO
5 Ambil sebuah kentang
6 Kupas kulit kentang
7 {pencapaian kondisi berhenti}
8 kentangkentang+1
9 WHILE (kentang < 10) {kondisi berhenti}
10 END
Paoa potongan algorltma lnl, aksl pastl ollakukan mlnlmal satu kall, tanpa
memperbatlkan nllal pencacab. Dl akblr lterasl pertama, baru ollakukan
pengecekan jumlab kentang yang suoab terkupas (pencacab).
[alannya lterasl lnl oapat oltulls oalam bentuk tabel berlkut:
lterasi
ke-
{aksi} kentang Kentang < 10
1 Ya 1 Ya
2 Ya 2 Ya
3 Ya 3 Ya
4 Ya 4 Ya
5 Ya 5 Ya
6 Ya 6 Ya
7 Ya 7 Ya
8 Ya 8 Ya
9 Ya 9 Ya
10 Ya 10 Tloak
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 81
PAGE 10
Pengulangan olbentlkan paoa lterasl ke- 10 karena konolsl kentang <
10 bernllal salab.
6) Algorltma untuk menampllkan karakter * sebanyak 5 kall.
ALGORITMA Tampil_Bintang
IS : Jumlah bintang yg tampil = 0
FS : Jumlah bintang yg tampil = 5
KAMUS DATA
i : integer
1 BEGIN
2 i 0 {inisialisasi pencacah i}
3 DO
4 Output (*) {aksi}
5 i i + 1 {pencapaian kondisi berhenti}
6 WHILE (i < 5) {jumlah iterasi}
7 END
Output oarl algorltma lnl:
*
*
*
*
*
Pengulangan olbentlkan paoa lterasl ke- 5 karena konolsl i<5 salab.
7) Algorltma untuk menampllkan lterasl ke 1 sampal 5 oengan pengulangan.
ALGORITMA Iterasi_Angka
IS : -
FS : Tampil angka 1 hingga 5
KAMUS DATA
i : integer
1 BEGIN
2 i 1 {inisialisasi pencacah i}
3 DO
4 Output (Ini adalah iterasi ke-,i){aksi}
5 i i + 1
6 WHILE (i <= 5) {kondisi berhenti}
7 END
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
82 Pengul angan
Output oarl algorltma lnl:
Ini adalah iterasi ke-1
Ini adalah iterasi ke-2
Ini adalah iterasi ke-3
Ini adalah iterasi ke-4
Ini adalah iterasi ke-5
Pengulangan olbentlkan paoa lterasl ke- 5 olmana nllal l = 6 seblngga
konolsl i<=5 salab.
8) Algorltma untuk memasukkan nllal tlga (3) orang mabaslswa
ALGORITMA Input_Nilai
IS : -
FS : Menerima inputan nilai dari user
KAMUS DATA
i : integer
nilai : integer
1 BEGIN
2 i 1 {inisialiasi}
3 DO
4 Output (Nilai mahasiswa ke-,i,adalah:)
5 Input (nilai)
6 i i + 1
7 WHILE(i <= 3) {kondisi berhenti}
8 END
Output oarl algorltma lnl:
Nilai mahasiswa ke-1 adalah: _
Nilai mahasiswa ke-2 adalah: _
Nilai mahasiswa ke-3 adalah: _
Pengulangan olbentlkan paoa lterasl ke- 3, ketlka nllal l = 4 seblngga
konolsl i<= 3 salab.
9) Algorltma untuk mengbltung nllal rata-rata oarl tlga bllangan yang
ollnputkan.
ALGORITMA Nilai_Rata_Rata
IS : -
FS : Tampil rata-rata dari nilai yang
diinputkan
KAMUS DATA
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 83
PAGE 10
jumlah : float
bilangan : integer
x : float
rerata : float
1 BEGIN
2 jumlah 0 {variabel jumlah bilangan}
3 bilangan 3 {inisialisasi variabel pencacah}
4 DO
5 Output(Masukkan angka : )
6 Input (x) {masukkan sebuah bilangan}
7 jumlah jumlah + x {tambahkan bilangan}
8 bilangan bilangan 1 {pencacah mundur}
9 WHILE (bilangan > 0)
10 rerata jumlah/ 3 {menghitung rerata}
11 Output (Rerata : ,rerata)
12 END
Paoa algorltma lnl juga oltunjukkan babwa lterasl paoa pengulangan
oengan slntaks DO... WH|LL... oapat ollakukan oengan pencacab munour.
Pengguna terus olmlnta memasukkan sebuab bllangan yang kemuolan
oljumlabkan oengan bllangan-bllangan sebelumnya (paoa lterasl pertama,
bllangan oljumlabkan oengan nol) blngga pencacab bernllal 0. Program akan
memberlkan output berupa basll perbltungan rerata oarl ketlga bllangan yang
ollnputkan.
Penggunaan DO...WH|LL oalam pemrograman C :
Algorltma C
DO
aksi
ubah pencacah
WHILE (kondisi)
do
{
//aksi
//ubah pencacah
}
while (kondisi);
|mplementasl algorltma contob ke-8 ke oalam C aoalab :
1 //InputNilai.c
2 //User diminta untuk input nilai sebanyak 3 kali
3 #include <stdio.h>
4 main()
5 {
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
84 Pengul angan
6 int i; //deklarasi pencacah
7 int nilai;
8 i=1; //inisialisasi pencacah
9 do
10 {
11 printf("Nilai mahasiswa ke-%d adalah : ",i);
12 scanf("%d",&nilai); //input nilai dari user
13 i=i+1; //penambahan nilai pencacah
14 }
15 while (i<=3); //kondisi berhenti
16 }
Tloak semua lmplementasl konolsl paoa DO...WH|LL sama oengan
lmplementasl paoa WH|LL, contobnya aoalab algorltma berlkut :
WHILE
ALGORITMA Tebak_Huruf
IS : -
FS : Menampilkan pesan Maaf Anda salah jika
tebakan salah, dan menampilkan Anda Benar jika
tebakan benar
KAMUS DATA
huruf : character
1 BEGIN
2 Output(Masukkan tebakan : )
3 Input(huruf)
4 WHILE (huruf != q)
5 Output(Maaf Anda salah )
6 Output(Masukkan tebakan : )
7 Input(huruf)
8 ENDWHILE
9 Output (Anda Benar)
10 END
DO...WHILE
ALGORITMA Tebak_Huruf
IS : -
FS : Menampilkan pesan Maaf Anda salah jika
tebakan salah, dan menampilkan Anda Benar jika
tebakan benar
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 85
PAGE 10
KAMUS DATA
huruf : character
1 BEGIN
2 Output(Masukkan tebakan : )
3 Input(huruf)
4 DO
5 Output(Maaf Anda salah )
6 Output(Masukkan tebakan : )
7 Input(huruf)
8 WHILE (huruf != q)
9 Output (Anda Benar)
10 END
Perbanolngan output oarl algorltma olatas aoalab sebagal berlkut
WHILE
Masukkan tebakan : q
Anda Benar
DO...WHILE
Masukkan tebakan : q
Maaf Anda Salah
Masukkan tebakan :
8lla user memasukkan lnputan 'q' paoa pertanyaan yang keoua lnl, maka
pengulangan akan olbentlkan, tetapl jlka user memasukkan burut yang laln
maka pengulangan akan ollanjutkan.
Darl contob olatas oapat olllbat babwa penggunaan slntaks WH|LL oan
DO...WH|LL kaoang akan memberlkan output yang berbeoa.
Sama sepertl paoa penggunaan slntaks WH|LL, slntaks DO...WH|LL
oapat olgunakan untuk struktur pengulangan yang belum olketabul jumlab
lteraslnya, tetapl tetap mempunyal konolsl berbentl.
Contob struktur pengulangan tersebut aoalab sebagal berlkut :
ALGORITMA Menu
IS : -
FS : Menampilkan menu yang dipilih user
KAMUS DATA
pilihan : integer
1 BEGIN
2 DO
3 Output(MENU : )
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
86 Pengul angan
4 Output(1. Ulang)
5 Output(2. Keluar)
6 Output(Pilihan : )
7 Input(pilihan)
8 WHILE (pilihan != 2) {pengecekan kondisi}
9 Output (Anda Pilih Keluar)
10 END
Karena paoa struktur DO...WH|LL tloak teroapat pengecekan konolsl
ol awal, maka lsl oarl DO...WH|LL akan langsung oljalankan, pengecekan akan
ollakukan setelab user memasukkan plllban. Yang pallng pentlng aoalab
perulangan lnl mempunyal konolsl berbentl, yaltu ketlka user lnput angka 2.
[umlab lterasl tloak oltentukan oleb varlabel pencacab, melalnkan oltentukan
senolrl oleb user yang menglnputkan angka. 8erlkut aoalab lmplementasl oarl
algorltma Menu oalam babasa pemrograman C.
1 //Menu.c
2 //User memasukkan pilihan menu 1 atau 2
3 #include <stdio.h>
4 main()
5 {
6 int pilihan;
7 do
8 {
9 printf("MENU");
10 printf("\n1. Ulang");
11 printf("\n2. Keluar");
12 printf("\nPilihan : ");
13 scanf("%d",&pilihan);
14 }
15 while (pilihan != 2);
16 printf("\nAnda pilih keluar");
17 }
Output oarl slntaks olatas aoalab
MENU
1. Ulang
2. Keluar
Pilihan : 1
MENU
1. Ulang
2. Keluar
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 87
PAGE 10
Pilihan : 1
MENU
1. Ulang
2. Keluar
Pilihan : 2
Anda pilih keluar
5.4 Sntoks IOR
Slntaks pengulangan FOR merupakan slntaks yang relatlt pallng muoab
olgunakan. Slntaks lnl serupa oengan slntaks WH|LL... DO... oalam bal
pengecekan konolsl ollakukan ol awal. Dalam menggunakan struktur
pengulangan oengan slntaks FOR, pemrogram barus menoetlnlslkan nllal awal
oan nllal akblr pencacab yang menunjukkan jumlab lterasl. Setlap kall lterasl
berlangsung, nllal pencacab akan olubab. [lka pencacab suoab mencapal nllal
akblr yang oltentukan, maka pengulangan akan berbentl.
8lla contob '|bu mengupas kentang' lngln olubab ke oalam struktur
pengulangan oengan slntaks FOR, pemrogram barus menentukan nllal awal
oan akblr pencacab, yaltu varlabel kentang. Karena lbu akan mengupas
kentang pertama blngga kentang ke sepulub, maka:
Nllal awal pencacab: kentang = 1
Nllal akblr pencacab: kentang = 10
Selama konolsl kentang>=1 oan kentang<=10 terpenubl, aksl
pengulangan akan ollakukan.
Struktur umum pengulangan oengan slntaks FOR aoalab:
FOR(inisialisasi;KondisiPengulangan;PerubahNilaiPenc
acah)
{pernyataan/perintah pengulangan}
ENDFOR
Dlmana :
|nlslallsasl : untuk memberlkan nllal awal untuk varlabel pencacab.
Konolsl Pengulangan : konolsl pengulangan akan berbentl atau tloak.
Perubab Nllal Pencacab : pengubaban nllal varlabel pencacab untuk
mencapal konolsl berbentl, oapat berupa kenalkan ataupun penurunan.
Pengubab varlabel pencacab tloak barus selalu nalk atau turun satu,
tetapl oapat ollakukan pengubaban varlabel pencacab leblb oarl satu.
Pernyataan perlntab : aksl yang akan olulang
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
88 Pengul angan
Maka, paoa contob-contob sebelumnya oapat olubab oalam struktur FOR
menjaol :
10) Algorltma lbu mengupas kentang
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang belum dikupas
FS : 10 kentang telah terkupas
KAMUS DATA
kentang : integer
1 BEGIN
2 //inisialisasi,kondisi, dan pengubah pencacah
3 //dideklarasikan dalam sintaks for
4 FOR(kentang 0; kentang < 10; kentang++)
5 {aksi pengulangan}
6 Ambil sebuah kentang
7 Kupas kulit kentang
8 ENDFOR
9 END
Perbatlkan babwa potongan algorltma ol atas tloak mencantumkan aksl
pengubab pencacab kentang kentang + 1. |nlslallsasl,
pengecekan konolsl, oan pengubab varlabel pencacab suoab teroapat
oalam argumen FOR. Paoa poslsl pengubab varlabel, pernyataan
kentang++ sama oengan kentangkentang + 1,penambaban
akan ollakukan setelab aksl pengulangan ollaksanakan.
[alannya lterasl lnl oapat oltulls oalam bentuk tabel berlkut:
lterasi
ke-
kentang kentang< 10! {aksi}
1 0 Ya Ya
2 1 Ya Ya
3 2 Ya Ya
4 3 Ya Ya
5 4 Ya Ya
6 5 Ya Ya
7 6 Ya Ya
8 7 Ya Ya
9 8 Ya Ya
10 9 Ya Ya
11 10 Tloak -
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 89
PAGE 10
Pengulangan olbentlkan paoa lterasl ke- 11 karena konolsl
kentang<10 bernllal salab.
11) Algorltma untuk menampllkan karakter ' * ' sebanyak 5 kall.
ALGORITMA Tampil_Bintang
IS : Jumlah bintang yg tampil = 0
FS : Jumlah bintang yg tampil = 5
KAMUS DATA
i : integer
1 BEGIN
2 FOR(i 0; i < 5; i++)
3 Output (*) {aksi}
4 ENDFOR
5 END
Output oarl algorltma lnl:
*
*
*
*
*
Pengulangan olbentlkan paoa lterasl ke- 6 karena konolsl i<5 bernllal
salab. Perbatlkan babwa pencacab oapat olmulal oarl angka berapapun
blngga berapapun sesual kebutuban program.
12) Algorltma untuk menampllkan lterasl ke 1 sampal 5 oengan pengulangan.
ALGORITMA Iterasi_Angka
IS : -
FS : Jumlah bintang yg tampil = 5
KAMUS DATA
i : integer
1 BEGIN
2 FOR(i 1; i <= 5;i++)
3 Output (Ini adalah iterasi ke-,i){aksi}
4 ENDFOR
5 END
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
90 Pengul angan
Output oarl algorltma lnl:
Ini adalah iterasi ke-1
Ini adalah iterasi ke-2
Ini adalah iterasi ke-3
Ini adalah iterasi ke-4
Ini adalah iterasi ke-5
Pengulangan olbentlkan paoa lterasl ke- 6 karena konolsl i<=5 bernllal
salab.
13) Algorltma untuk memasukkan nllal tlga (3) orang mabaslswa
ALGORITMA Input_Nilai
IS : -
FS : Menerima inputan nilai dari user
KAMUS DATA
i : integer
nilai : integer
1 BEGIN
2 FOR(i 1; i <= 3;i++)
3 Output (Nilai mahasiswa ke-,i,adalah:)
4 Input (nilai)
5 ENDFOR
6 END
Output oarl algorltma lnl:
Nilai mahasiswa ke-1 adalah: _
Nilai mahasiswa ke-2 adalah: _
Nilai mahasiswa ke-3 adalah: _
Pengulangan olbentlkan paoa lterasl ke- 4 karena konolsl i<=3 bernllal
salab.
Serupa oengan struktur pengulangan oengan slntaks laln, struktur
pengulangan oengan slntaks FOR juga oapat ollakukan oengan pencacab
munour. 8erlkut lnl aoalab beberapa contob penggunaan struktur
pengulangan FOR oengan pencacab munour :
14) Program untuk mengbltung rerata oarl tlga bllangan yang ollnputkan.
ALGORITMA Nilai_Rata_Rata
IS : -
FS : Tampil rata-rata dari nilai yang
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 91
PAGE 10
diinputkan
KAMUS DATA
jumlah : float
bilangan : integer
x : float
rerata : float
1 BEGIN
2 jumlah 0 {variabel jumlah bilangan}
3 {inisialisasi variabel pencacah}
4 FOR(bilangan 3; bilangan > 0;bilangan--)
5 Output(Masukkan angka : )
6 Input (x)
7 jumlah jumlah + x
8 ENDFOR
9 rerata jumlah/ 3 {menghitung rerata}
10 Output (Rerata : ,rerata)
11 END
Paoa algorltma, pengguna terus olmlnta memasukkan sebuab bllangan
yang kemuolan oljumlabkan oengan bllangan-bllangan sebelumnya (paoa
lterasl pertama, bllangan oljumlabkan oengan nol) blngga pencacab
bernllal 0. Pengulangan olbentlkan paoa lterasl ke-4 karena konolsl
bilangan>0 bernllal salab. Program akan memberlkan output berupa
basll perbltungan rerata oarl ketlga bllangan yang ollnputkan.
15) Algorltma petasan: program akan mengbltung munour oengan
menampllkan sejumlab bllangan tertentu, kemuolan mengeluarkan pesan
'DOR!!!' ol akblr perbltungan munour.
ALGORITMA Hitung_Mundur
IS :
FS : Menampilkan angka dari 5 hingga 1
KAMUS DATA
hitung : integer
1 BEGIN
2 FOR(hitung 5; hitung > 0;bilangan--)
3 Output(hitung)
4 ENDFOR
5 Output (DOR!!!)
6 END
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
92 Pengul angan
Output oarl algorltma lnl:
5
4
3
2
1
DOR!!!
16) Algorltma lbu mengupas kentang oengan perbltungan munour
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang belum dikupas
FS : 10 kentang telah terkupas
KAMUS DATA
kentang : integer
1 BEGIN
2 //inisialisasi,kondisi, dan pengubah pencacah
3 //dideklarasikan dalam sintaks for
4 FOR(kentang 10; kentang > 0; kentang--)
5 Ambil sebuah kentang
6 Kupas kulit kentang
7 ENDFOR
8 END
Paoa algorltma ol atas, lterasl ollakukan 10 kall oan akan olbentlkan paoa
lterasl ke 11 karena konolsl kentang>0 bernllal salab.
Penullsan slntaks FOR oalam babasa pemrograman C:
lor dengan saLu aksl
int i;
for(i=0;i<5;i++)
printf(%d,i);
lor dengan banyak aksl
int i;
for(i=0;i<5;i++)
{
printf(Masukkan angka ke-%d,i);
scanf(%d,&nilai);
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 93
PAGE 10
|mplementasl algorltma contob ke-11 ke oalam babasa pemrograman C :
1 //bintang.c
2 #include <stdio.h>
3 main()
4 {
5 int i;
6 for(i=0;i<5;i++)
7 printf("\n*");
8 }
Sepertl paoa penggunaan slntaks WH|LL oan DO...WH|LL, olmana klta
oapat menglmplementaslkan struktur pengulangan yang belum olketabul
jumlab lteraslnya, tetapl tetap mempunyal konolsl berbentl. Paoa slntaks FOR,
klta oapat menggunakannya untuk pengulangan oengan jumlab lterasl tak
berblngga.
Contob struktur pengulangan tersebut aoalab sebagal berlkut :
ALGORITMA Menu
IS : -
FS : Menampilkan menu yang dipilih user
KAMUS DATA
pilihan : integer
1 BEGIN
2 FOR(;pilihan!=2;)
3 Output(MENU : )
4 Output(1. Ulang)
5 Output(2. Keluar)
6 Output(Pilihan : )
7 Input(pilihan)
8 ENDFOR
9 Output (Anda Pilih Keluar)
10 END
Argumen yang olgunakan ol oalam FOR tloak barus selalu lengkap,
kaoang baglan lnlslallsasl tloak olgunakan
FOR(;KondisiPengulangan;PerubahNilaiPencacah)
{pernyataan/perintah pengulangan}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
94 Pengul angan
ENDFOR
Atau baglan Konolsl Pengulangan tloak klta perlukan
FOR(Inisialisai;;PerubahNilaiPencacah)
{pernyataan/perintah pengulangan}
ENDFOR
Ataupun baglan Perubab Nllal Pencacab olbllangkan sepertl
FOR(Inisialisai;KondisiPengulangan;)
{pernyataan/perintah pengulangan}
ENDFOR
[uga blsa olgunakan komblnasl sepertl contob algorltma ol atas, olmana baglan
lnlslallsasl oan perubab nllal pencacab olbllangkan, tetapl mesklpun
olbllangkan, pengulangan barus tetap mempunyal konolsl berbentl
5.5 Sntoks Pengulongon Bersorong
Sama balnya oengan struktur pemlllban, struktur pengulangan juga
oapat olsusun bersarang. Sebuab struktur pengulangan blsa beraoa oalam
struktur pengulangan lalnnya. Atau, sebuab struktur pengulangan blsa
menganoung struktur pengulangan laln ol oalamnya.
Darl contob lbu mengupas kentang, mlsalnya oengan struktur
pengulangan WH|LL berlkut lnl:
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang belum dikupas
FS : 10 kentang telah terkupas
KAMUS DATA
kentang : integer
1 BEGIN
{inisialisasi jumlah kentang yang sudah dikupas}
2 kentang 0
3 WHILE (kentang < 10 ){kondisi iterasi dilakukan}
4 Ambil sebuah kentang
5 Kupas kulit kentang
6 kentangkentang+1 {pencapaian kondisi berhenti}
7 ENDWHILE
8 END
Setlap kall lbu mengambll sebuab kentang, lbu akan mengupas kullt kentang
kemuolan langsung memotongnya menjaol empat baglan. 8eroasarkan konolsl
lnl, potongan algorltma ol atas oapat ollengkapl menjaol:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 95
PAGE 10
ALGORITMA Kupas_Kentang_Potong_4
IS : Terdapat 10 kentang belum dikupas
FS : 10 kentang telah terkupas dan teriris menjadi
4 bagian
KAMUS DATA
kentang : integer
potongan: integer
1 BEGIN
{inisialisasi jumlah kentang yang sudah dikupas}
2 kentang 0
3 WHILE (kentang < 10 ){kondisi iterasi dilakukan}
4 Ambil sebuah kentang
5 Kupas kulit kentang
6 potongan 1 {inisialisai jml potongan kentang}
7 DO
8 Potong kentang
9 potongan = potongan + 1
10 WHILE (potongan<=4)
11 kentangkentang+1 {pencapaian kondisi berhenti}
12 ENDWHILE
13 END
Paoa contob ol atas, pengulangan luar (WH|LL) merupakan pengulangan
untuk aksl mengupas kentang, seoangkan pengulangan oalam (DO...WH|LL)
merupakan pengulangan untuk memotong kentang ke oalam 4 baglan.
Pengulangan oalam akan berbentl ketlka jumlab potongan = 4.
Contob laln penggunaan slntaks pengulangan bersarang lnl aoalab sebagal
berlkut:
17) Algorltma untuk menampllkan karakter * sebanyak 5 kall, maslng-maslng
sebanyak tlga kall.
ALGORITMA Tampil_Bintang
IS : -
FS : Menampilkan bintang sebanyak 3 kolom dan 5
baris
KAMUS DATA
i : integer
j : integer
1 BEGIN
2 FOR(i 0; i < 5; i++)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
96 Pengul angan
3 FOR(j 0; j < 3; j++)
4 Output (*) {aksi}
5 ENDFOR
6 ENDFOR
7 END
Output oarl algorltma lnl:
***
***
***
***
***
18) Algorltma untuk memasukkan nllal tlga (3) orang mabaslswa, yang
maslng-maslng memlllkl oua nllal
ALGORITMA Input_Nilai
IS :
FS : Nilai mahasiswa telah diinputkan
KAMUS DATA
i : integer
j : integer
nilai : integer
1 BEGIN
2 FOR(i 1; i <= 3;i++)
3 Output (Nilai mahasiswa ke-,i,adalah:)
4 FOR(j1; j<=2; j++)
5 Output(Nilai ke-,j,:)
6 Input (nilai)
7 ENDFOR
8 ENDFOR
9 END
Output oarl algorltma lnl:
Nllal mabaslswa ke-1 aoalab
Nllal ke-1: _
Nllal ke-2: _
Nllal mabaslswa ke-2 aoalab
Nllal ke-1: _
Nllal ke-2: _
Nllal mabaslswa ke-3 aoalab
Nllal ke-1: _
Nllal ke-2: _
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 97
PAGE 10
Pengulangan bersarang oapat juga ollakukan oengan beberapa struktur
pengulangan yang berbeoa, babkan oapat juga olgabungkan oengan struktur
pemlllban. Contob:
19) Algorltma untuk menampllkan karakter * untuk membentuk garls
pembatas kotak sebesar llma kolom oan llma barls.
ALGORITMA Tampil_Bintang_Kotak
IS : -
FS : Menampilkan tanda bintang berbentuk kotak
KAMUS DATA
i : integer
j : integer
1 BEGIN
2 FOR(i 1; i <= 5; i++){pengulangan baris}
3 IF (i=1 OR i=5) {baris ke-1 dan ke-5}
4 j1 {pencacah kolom}
5 DO
6 Output (*)
7 jj+1
8 WHILE (j<=5)
9 ELSE {baris ke-2,3 dan 4}
10 j1
11 DO
12 IF (j=1 OR j=5)
13 Output(*)
14 ELSE
15 Output( )
16 ENDIF
17 jj+1
18 WHILE(j<=5)
19 ENDIF
20 ENDFOR
21 END
|mplementasl algorltma olatas ke oalam C
1 //Bintang_Kotak.c
2 //menggambar * membentuk kotak
3 #include <stdio.h>
4 main()
5 {
6 int i,j;
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
98 Pengul angan
7 for(i=1;i<=5;i++) //perulangan baris
8 {
9 //jika kursor di posisi baris 1,5
10 if ((i==1) || (i==5))
11 {
12 j=1;
13 do //perulangan kolom utk baris 1,5
14 {
15 printf("*");
16 j=j+1;
17 }
18 while(j<=5);
19 }
20 //jika kursor di posisi baris 2,3,4
21 else
22 {
23 j=1;
24 do //perulangan kolom utk baris 2,3,4
25 {
26 //jika cursor berada di kolom 1,5
27 if ((j==1) || (j==5))
28 printf("*");
29 //jika cursor berada di kolom 2,3,4
30 else
31 printf(" ");
32 j=j+1;
33 }
34 while(j<=5);
35 }
36 //ke baris berikutnya
37 printf("\n");
38 }
39 }
Output oarl algorltma lnl:
*****
* *
* *
* *
*****
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 99
PAGE 10
5.6 Sntoks BRAK don CONTlNU
Slntaks 8LAK oan C0N7lNUL merupakan slntaks yang olgunakan
untuk mengbentlkan pengulangan oan melanjutkan ke perlntab atau aksl
berlkutnya. Slntaks 8RLAK oan CONT|NUL oapat olgunakan balk ol oalam
struktur pengulangan WH|LL, DO...WH|LL, oan FOR.
Slntaks 8LAK olgunakan untuk mengbentlkan pengulangan kemuolan
keluar oarl struktur pengulangan tanpa melanjutkan perlntab ol oalam
struktur pengulangan.
8erlkut aoalab pengulangan oengan FOR tanpa menggunakan 8RLAK atau
CONT|NUL :
ALGORITMA Iterasi_Angka
IS : -
FS : Menampilkan angka 1 hingga 6
KAMUS DATA
i : integer
1 BEGIN
2 FOR(i 1; i <= 6;i++)
3 Output (Ini adalah iterasi ke-,i){aksi}
4 ENDFOR
5 OUTPUT(Akhir pengulangan)
6 END
[lka algorltma olatas oljalankan, maka akan mengbasllkan output sebagal
berlkut :
Ini adalah iterasi ke-1
Ini adalah iterasi ke-2
Ini adalah iterasi ke-3
Ini adalah iterasi ke-4
Ini adalah iterasi ke-5
Ini adalah iterasi ke-6
Akhir pengulangan
Contob penggunaan slntaks 8RLAK ol oalam pengulangan oengan
menggunakan FOR
ALGORITMA Iterasi_Angka_Break
IS : -
FS : Menampilkan angka 1 hingga 6 tetapi berhenti
di angka 3
KAMUS DATA
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
100 Pengul angan
i : integer
1 BEGIN
2 FOR(i 1; i <= 6;i++)
3 IF (i=4)
4 BREAK
5 ENDIF
6 Output (Ini adalah iterasi ke-,i){aksi}
7 ENDFOR
8 OUTPUT(Akhir pengulangan)
9 END
[lka algorltma olatas oljalankan, maka akan mengbasllkan output sebagal
berlkut :
Ini adalah iterasi ke-1
Ini adalah iterasi ke-2
Ini adalah iterasi ke-3
Akhir pengulangan
Ketlka varlabel l mencapal angka 4 maka akan memenubl syarat untuk masuk
ke struktur |F, kemuolan perlntab 8RLAK oljalankan yaltu keluar oarl struktur
pengulangan FOR, oan menampllkan perlntab paoa barls ke-8.
Slntaks C0N7lNUL olgunakan untuk kemball ke awal pengulangan
tanpa menjalankan perlntab berlkutnya.
Contob penggunaan slntaks CONT|NUL ol oalam pengulangan oengan
menggunakan FOR
ALGORITMA Iterasi_Angka_Continue
IS : -
FS : Menampilkan angka 1 hingga 6
KAMUS DATA
i : integer
1 BEGIN
2 FOR(i 1; i <= 6;i++)
3 IF (i=4)
4 CONTINUE
5 ENDIF
6 Output (Ini adalah iterasi ke-,i){aksi}
7 ENDFOR
8 OUTPUT(Akhir pengulangan)
9 END
[lka algorltma olatas oljalankan, maka akan mengbasllkan output sebagal
berlkut :
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 101
PAGE 10
Ini adalah iterasi ke-1
Ini adalah iterasi ke-2
Ini adalah iterasi ke-3
Ini adalah iterasi ke-5
Ini adalah iterasi ke-6
Akhir pengulangan
Ketlka varlabel l mencapal angka 4 maka akan memenubl syarat untuk masuk
ke struktur |F, kemuolan perlntab CONT|NUL oljalankan yaltu kemball ke
awal pengulangan olmana akan ollakukan penambaban nllal varlabel pencacab
oan pengecekan konolsl. Ketlka perlntab CONT|NUL oljalankan, maka
perlntab berlkutnya yaltu perlntab paoa barls ke-6 tloak oljalankan, seblngga
tampllan Ini adalah iterasi ke-4 tloak keluar. Setelab kemball ke
awal pengulangan, varlabel l akan oltambab menjaol 5 kemuolan masuk lagl ke
struktur pengulangan.
8erlkut aoalab lmplementasl algorltma ol atas ke oalam babasa pemrograman
C :
1 //TampilAngkaBreak.c
2 #include <stdio.h>
3 main()
4 {
5 int i;
6 for(i=1; i<=6; i++)
7 {
8 if (i==4)
9 {
10 break;
11 }
12 printf("\nIni adalah iterasi ke-%d",i);
13 }
14 printf("\nAkhir pengulangan");
15 }
1 //TampilAngkaContinue.c
2 #include <stdio.h>
3 main()
4 {
5 int i;
6 for(i=1; i<=6; i++)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
102 Pengul angan
7 {
8 if (i==4)
9 {
10 continue;
11 }
12 printf("\nIni adalah iterasi ke-%d",i);
13 }
14 printf("\nAkhir pengulangan");
15 }
[lka tloak teroapat konolsl berbentl yang tepat untuk suatu
pengulangan, maka klta oapat menggunakan slntaks 8RLAK untuk keluar oarl
suatu pengulangan. 8erlkut contob pengulangan FOR olmana semua argumen
ol oalam FOR olbllangkan, bal lnl akan memberlkan pengulangan tak
berblngga.
//Menu.c
//User memasukkan pilihan menu 1 atau 2
#include <stdio.h>
main()
{
int pilihan;
for (;;)
{
printf("MENU");
printf("\n1. Ulang");
printf("\n2. Keluar");
printf("\nPilihan : ");
scanf("%d",&pilihan);
if (pilihan == 2)
break;
}
printf("\nAnda pilih keluar");
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 103
PAGE 10
Rangkunan
1. Struktur pengulangan memungklnkan program melakukan satu atau leblb
aksl beberapa kall.
2. Tlga komponen pengenoall aksl aoalab lnlslallsasl, jumlab lterasl, oan
konolsl berbentl.
3. Tlga struktur pengulangan yang oapat olgunakan aoalab struktur
pengulangan oengan slntaks WH|LL, DO...WH|LL, oan FOR.
4. Struktur pengulangan oapat olbuat bersarang oengan slntaks pengulangan
yang sama atau berbeoa, babkan oapat olgabungkan oengan struktur
pemlllban.
5. Untuk keluar oarl struktur pengulangan sebelum konolsl berbentl, klta
oapat menggunakan slntaks 8RLAK
6. Untuk melanjutkan struktur pengulangan ke awal pengulangan maka
oapat olgunakan slntaks CONT|NUL
7. Hal yang terpentlng oarl struktur pengulangan aoalab konolsl berbentl
yang akan memberlkan konolsl apakab pengulangan ollakukan atau tloak.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
104 Pengul angan
Kuis Benar 5aIah
1. Struktur pengulangan oengan slntaks WH|LL tloak mencantumkan
lnlslallsasl.
2. Struktur pengulangan oengan slntaks DO...WH|LL tloak mencantumkan
konolsl berbentl.
3. Struktur pengulangan oengan slntaks FOR tloak mencantumkan jumlab
lterasl.
4. Aksl yang oltullskan oloalam slntaks WH|LL akan oljalankan jlka konolsl
paoa WH|LL... bernllal benar.
5. Aksl yang oltullskan setelab DO... paoa slntaks pengulangan DO...
WH|LL... oljalankan jlka konolsl yang oltullskan setelab WH|LL bernllal
salab.
6. Aksl yang oltullskan oloalam slntaks pengulangan FOR oljalankan jlka
konolsl yang oltullskan oloalam argumen FOR... bernllal benar.
7. Pengulangan oengan slntaks WH|LL oapat olubab oengan slntaks
DO...WH|LL.
8. Pengulangan oengan slntaks DO... WH|LL... oapat olubab oengan slntaks
FOR.
9. Pengulangan oengan slntaks FOR oapat olubab oengan slntaks WH|LL.
10. Struktur pengulangan bersarang mensyaratkan babwa varlabel pencacab
oarl selurub pengulangan sama.
(Untuk soal nomor 11 15) Perbatlkan potongan algorltma ol bawab lnl:
ALGORITMA
IS :
FS :
KAMUS DATA
a : integer
nilai : integer
1 a 0
2 WHILE (a < 15)
3 Output (Nilai mahasiswa ke-,a,adalah:)
4 Input (nilai)
5 IF ((nilai >= 0) AND (nilai <= 100))
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 105
PAGE 10
6 a a + 1
7 ELSE
8 Output (Nilai harus antara 0-100)
9 ENDIF
10 ENDWHILE
11. varlabel a paoa contob ol atas merupakan pencacab.
12. Pengulangan ol atas akan mengalaml sebanyak 16 kall lterasl.
13. [lka nllal yang ollnputkan tloak beraoa oalam range 0-100, maka program
akan olakblrl.
14. Nllal pencacab akan bertambab 1 jlka nllal yang ollnputkan suoab beraoa
oalam range 0-100.
15. |nlslallsasl varlabel a membuat program tloak oapat berjalan oengan
semestlnya.
(Untuk soal nomor 6-10) Perbatlkan potongan algorltma berlkut lnl:
ALGORITMA
IS :
FS :
KAMUS DATA
a : integer
b : integer
1 a 1
2 DO
3 b a mod 2
4 IF (b = 0)
5 Output (o)
6 ELSE
7 Output (x)
8 ENDIF
9 a a + 1
10 WHILE (a <= 5)
16. Struktur pengulangan ol atas tloak tepat karena tloak mencantumkan
jumlab lterasl yang akan ollakukan.
17. |terasl akan ollakukan tepat llma kall.
18. Output oarl algorltma ol atas aoalab 'oo'.
19. Struktur pengulangan ol atas menggunakan pencacab munour.
20. Paoa algorltma ol atas, teroapat pembeoaan aksl untuk nllal a berupa
bllangan ganjll oan a berupa bllangan genap.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
106 Pengul angan
PiIihan Ganda
1. Perbatlkan potongan algorltma berlkut lnl:
ALGORITMA
IS :
FS :
KAMUS DATA
a : integer
1 WHILE (a < 7)
2 Output (Ini contoh program)
3 a a + 1
4 ENDWHILE
[lka output yang ollnglnkan aoalab menampllkan '|nl contob program'
sebanyak tujub kall, maka lnlslallsasl yang tepat untuk pengulangan ol
atas yaltu . .
A. a 0
8. a 1
C. a > 0
D. a > 1
L. plllban A,8,C,D salab
2. Apakab yang olmaksuo oengan konolsl berbentl oalam struktur
pengulangan?
A. Konolsl yang menyebabkan lnlslallsasl berbentl
8. Konolsl yang menyebabkan lterasl berbentl
C. Konolsl yang menyebabkan program berbentl
D. Konolsl yang akan berbentl saat lterasl berbentl
L. Konolsl yang akan berbentl saat program berbentl
3. Perbatlkan potongan algorltma berlkut lnl:
ALGORITMA
IS :
FS :
KAMUS DATA
e : integer
huruf : character
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 107
PAGE 10
1 e 1
2 DO
3 Input (huruf)
4 e e + 1
5 WHILE ((huruf != a) OR (e != 10))
Apakab yang ollakukan oleb algorltma ol atas?
A. Memlnta lnputan sebuab burut blngga 10 kall
8. Memlnta lnputan sebuab burut blngga burut yang ollnputkan 'a'
C. Memlnta lnputan sebuab burut blngga burut yang ollnputkan 'e'
D. Memlnta lnputan sebuab burut blngga burut yang ollnputkan 'a'
atau lterasl suoab 10 kall
L. Memlnta lnputan sebuab burut blngga burut yang ollnputkan 'e'
atau lterasl suoab 10 kall.
4. Pernyataan manakab yang salab tentang varlabel pencacab?
A. varlabel pencacab mengenoallkan jumlab lterasl oalam struktur
pengulangan.
8. Nllal varlabel pencacab terus berubab setlap kall lterasl.
C. Nllal varlabel pencacab akan berbentl berubab ol akblr
pengulangan.
D. varlabel pencacab oapat bertlpe lnteger maupun cbar.
L. Nllal varlabel pencacab tloak perlu ollnlslallsasl ol awal lterasl.
5. Paoa sebuab konser, panltla memberlkan bonus 1 tlket untuk setlap
pembellan 3 tlket. Harga 1 tlket aoalab Rp. 100.000,-. Panltla membuat
algorltma untuk mengbltung barga yang barus olbayar setlap orang
yang membell tlket. Perbatlkan potongan algorltma berlkut lnl:
ALGORITMA
IS :
FS :
KAMUS DATA
jmlTiket : integer
jmlBayar : integer
harga : integer
i : integer
1 Input (jmlTiket)
2 jmlBayar 0
3 IF (jmlTiket < 1)
4 Output (Jumlah tiket minimal 1)
5 ELSE
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
108 Pengul angan
6 BEGIN
7 FOR (i 1; i<= jmlTiket; i++)
8 IF (jmlTiket > 3)
9 BEGIN
10 jmlTiket jmlTiket 3
11 jmlBayar jmlBayar + 3
12 END
13 ELSE
14 jmlBayar jmlBayar + jmlTiket
15 ENDIF
16 ENDFOR
17 harga jmlBayar * 100000
18 Output (harga)
19 END
20 ENDIF
Pernyataan manakab yang benar tentang potongan algorltma ol atas?
A. Algorltma ol atas tloak oapat mengbltung barga untuk 1 tlket
8. Algorltma ol atas memberlkan output salab jlka lnput jmlTlket > 3
C. Pengulangan tloak pernab ollakukan jlka lnput jmlTlket = 0
D. Pengulangan tloak pernab ollakukan jlka lnput jmlTlket > 3
L. Tloak aoa masalab oalam algorltma ol atas
6. Apakab output oarl algorltma nomor 5 jlka lnput jmlTlket = 10?
A. 600000
8. 800000
C. 100000
D. 120000
L. Algorltma error
7. varlabel jml8ayar paoa algorltma nomor 5 olgunakan untuk
menylmpan nllal . .
A. Harga 1 tlket
8. Harga total tlket
C. [umlab pengulangan
D. [umlab tlket yang barus olbayar
L. [umlab tlket gratls
8. Slntaks pengulangan manakab yang melakukan pengecekan konolsl ol
akblr pengulangan?
A. DO. WH|LL.
8. WH|LL. .
C. FOR.
D. |F. THLN. LLSL.
9. Tlpe oata apakab yang oapat olgunakan untuk varlabel pencacab?
A. |nteger
8. Tet
C. Float
D. Real
L. Array
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengul angan 109
PAGE 10
10. Perbatlkan potongan algorltma berlkut lnl:
ALGORITMA
IS :
FS :
KAMUS DATA
i : integer
j : character
1 FOR (i 1 ; i<= 2 ; i++)
2 IF (i mod 2 = 0 )
3 FOR (j 1 ; j<= 4 ; j++)
4 IF (j mod 2 = 1)
5 Output (x)
6 ELSE
7 Output (o)
8 ENDFOR
9 ELSE
10 Output (i)
11 ENDIF
12 ENDFOR
Apakab output oarl algorltma ol atas?
A. |
oo
8. oo
1
C. 1
Oo
D. oo
1
L. 1
1
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
110 Pengul angan
Latihan
1. 8uatlab program oengan struktur pengulangan untuk menampllkan tullsan
Saya suka mata kullab lnl sebanyak 5 kall!
2. 8anolngkan tlga slntaks pengulangan: WH|LL, DO.WH|LL, oan FOR
kemuolan sebutkan kekurangan oan keleblban maslng-maslng slntaks!
3. 8uatlab program pengulangan untuk mengbltung jumlab seoeret bllangan
berurut yang olmulal oarl 1 blngga bllangan lnputan. Contob:
|NPUT : 7
PROSLS : 1+2+3+4+5+6+7
OUTPUT : 28
4. 8uatlab program pengulangan bersarang oengan slntaks FOR untuk
menampllkan output sebagal berlkut:
*
**
***
****
5. 8uatlab program pengulangan bersarang oengan slntaks FOR untuk
menampllkan output sebagal berlkut:
*****
****
***
**
*
6. 8uatlab program pengulangan bersarang oengan slntaks FOR untuk
menampllkan output sebagal berlkut:
1
22
333
4444
55555
Dengan jumlab barls sesual lnputan. (Paoa contob ol atas, lnput = 5)
7. Ubablab program nomor 7 oengan slntaks WH|LL !
8. Ubablab program nomor 7 oengan slntaks DO.WH|LL !
9. Apakab tungsl lnlslallsasl oalam sebuab struktur pengulangan?
10. Apakab tungsl pencacab oalam sebuab struktur pengulangan?
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 111
PAGE 10
6 Array dan Tipe Data Bentukan
Overview
Dalam ounla nyata, struktur oata yang olbaoapl sangat beragam oan
penggunaan varlabel oengan tlpe oata oasar memlllkl keterbatasan paoa
banyaknya nllal yang oapat olslmpan. Dengan menggunakan orro, oan tlpe oata
bentukan, oapat ollakukan pemooelan struktur oata oengan leblb balk babkan
untuk struktur oata yang relatlt kompleks.
Tujuan
1. Memabaml tlpe oata orro, oan keuntungan yang oapat olberlkan
2. Memabaml orro, yang memlllkl olmensl leblb oarl satu
3. Dapat meng-lmplementaslkan tlpe oata array oalam program
4. Memabaml cara menentukan tlpe oata bentukan oan menggunakannya
oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 111
PAGE 10
6 Array dan Tipe Data Bentukan
Overview
Dalam ounla nyata, struktur oata yang olbaoapl sangat beragam oan
penggunaan varlabel oengan tlpe oata oasar memlllkl keterbatasan paoa
banyaknya nllal yang oapat olslmpan. Dengan menggunakan orro, oan tlpe oata
bentukan, oapat ollakukan pemooelan struktur oata oengan leblb balk babkan
untuk struktur oata yang relatlt kompleks.
Tujuan
1. Memabaml tlpe oata orro, oan keuntungan yang oapat olberlkan
2. Memabaml orro, yang memlllkl olmensl leblb oarl satu
3. Dapat meng-lmplementaslkan tlpe oata array oalam program
4. Memabaml cara menentukan tlpe oata bentukan oan menggunakannya
oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
112 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
6.1 Array
Tlpe oata orro, aoalab tlpe oata terstruktur yang merujuk kepaoa sebuab atau
sekumpulan elemen yang mempunyal tlpe oata yang sama melalul lnoeks.
Arro, blasanya olsebut juga sebagal tabeI, vektor atau Iarik.
Llemen oarl orro, oapat olakses langsung jika dan hanya jika lnoeks
teroetlnlsl (telab oltentukan nllalnya sesual oengan oomaln yang oloetlnlslkan
untuk lnoeks tersebut). Struktur oata array olslmpan oengan urutan yang
sesual oengan oetlnlsl lnoeks secara kontigu {berurutan} daIan
nenori komputer. Karena ltu lnoeks baruslab merupakan suatu tlpe oata
yang memlllkl keterurutan (aoa suksesor oan preoesesor), mlsal tlpe lnteger
oan karakter.
Dlllbat oarl olmenslnya, orro, oapat olbagl menjaol Arro, Satu Dlmensl, Arro,
Dua Dlmensl oan Arro, Multl-Dlmensl
6.1.1 Arroy 5atu Dinensi
Representasl orro, satu olmensl
My_array = 2 4 6 . . . 98 100
0 1 2 . . . 49 50
Untuk menoeklaraslkan varlabel oengan tlpe oata orro, satu olmensl
paoa notasl algorltma, olgunakan pola sebagal berlkut:
Keterangan:
Nllal merupakan nllal awal lnoeks paoa orro,, oan nllal y merupakan nllal
akblr paoa lnoeks orro,.
Contob :
Algorltma
...
...
KAMUS DATA
Nama_variabel : array [x..y] of tipe_data
...
lndeks
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 113
PAGE 10
Kamus data
arrHari : array [1..7] of string
arrJmlBulan : array [1..12] of integer
arrFrekuensi : array [a..z] of integer
...
Mengakses data orroy satu dinensi:
Arro, satu olmensl olakses melalul lnoeksnya. Mlsal akan olslapkan orro, satu
olmensl A bertlpe lnteger oengan 5 elemen yang olberl nomor lnoeks oarl 0
sampal 4, yang oapat olllustraslkan oengan gambar berlkut:
0 1 2 3 4
Karena orro, tersebut mempunyal nama yang sama, yaltu A, maka setlap
elemen olberl sebutan nama yang berbeoa oengan memberlkan nomor
lnoeks, seblngga maslng-maslng menjaol: A[0], A[1], sampal oengan A[4], yang
oapat olbaca oengan:
A oengan lnoeks 0 atau A nol
A oengan lnoeks 1 atau A satu
oan seterusnya.
Untuk menylmpan nllal oalam orro, satu olmensl, oapat ollakukan oengan cara
sebagal berlkut:
A[0] 4 ,`.invn nivi ! vvvn vv, / vvv invc[. 0 `,
A[1] 8 ,`.invn nivi vvvn vv, / vvv invc[. 1`,
A[2] 6 ,`.invn nivi vvvn vv, / vvv invc[. 2`,
A[3] A[0] +A[1] ,`vnvn[vn nivi vvvn vv, / invc[. 0
vcnvn nivi vv, / invc[. 1 vvn .invn
nv.in,v vvv vv, / invc[. `,
A[4] A[2] ,`i.i[vn vv, / invc[. ! vcnvn nivi vvv vv, /
invc[. 2`,
A[0] A[1]
A[4]
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
114 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Seblngga gambaran orro, A menjaol sepertl berlkut lnl:
0 1 2 3 4
4 8 6 12 6
Pseuoocooe lengkapnya aoalab sebagal berlkut:
1.ALGORITMA
2.,` ^cn,iv[vn vvn ncnv.v[[vn nivi vvvn vv, .vv vincn.i
3. 1. : vv, vvvn [cvvvvn [o.on
4. I. : ncnvni[vn nivi ,vn vi.invn vvvn vv, vcnvn ncnvnv[vn .v[v
5. cnvvnvn `,
6.KAMUS DATA
7. A : array[0..4] of integer
8. i : integer
9.BEGIN
10. A[0] 4 ,`.invn ! vvvn vv, / invc[. 0`,
11. A[1] 8 ,`.invn vvvn vv, / invc[. 1`,
12. A[2] 6
13. A[3] A[0] + A[1]
14. A[4] A[2]
15. ,`ncnvni[vn [cnvi nivi vvvn vv,`,
16. For (i=0; i<=4; i++)
17. output(A[,i,] = ,A[i])
18. EndFor
19.END.
Dalam 8abasa C
1.,`^cn,iv[vn vvn ncnv.v[[vn nivi vvvn vv, .vv vincn.i
2. 1. : vv, vvvn [cvvvvn [o.on
3. I. : ncnvni[vn nivi ,vn vi.invn vvvn vv, vcnvn ncnvnv[vn .v[v
4. cnvvnvn `,
5.
6.#include <stdio.h>
7.#include <conio.h>
8.
9.void main()
10.{
A[0]
A[1] A[2]
A[3]
A[4]
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 115
PAGE 10
11. int A[5]; ,`vc[vv.i vv, / vcnvn ccncn`,
12. int i;
13. A[0] = 4; ,`.invn ! vvvn vv, / invc[. 0`,
14. A[1] = 8;
15. A[2] = 6;
16. A[3] = A[0] + A[1];
17. A[4] = A[2];
18. ,`ncnvni[vn [cnvi nivi vvvn vv,`,
19. for(i=0;i<=4;i++)
20. {
21. printf("A[%i] = %i\n",i,A[i]);
22. }
23. printf("Tekan Enter...");
24. getch(); ,` ncnvnvn vnivn vvv v,v `,
25.}
Output yang olbasllkan:
6.1.2 Array Dua Dinensi
Arro, oua olmensl merupakan orro, yang terolrl oarl m buab barls (row)
oan n buab kolom (co|umn). 8entuk orro, semacam lnl menggunakan 2 (oua)
buab kelompok lnoeks yang maslng-maslng olrepresentaslkan sebagal lnoeks
barls oan kolom. [lka lngln memasukkan atau membaca sebuab nllal paoa
matrlks maka, barus olketabul terleblb oabulu lnoeks barls oan kolomnya.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
116 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Untuk menoeklaraslkan varlabel oengan tlpe oata orro, oua olmensl
paoa notasl algorltma, olgunakan pola sebagal berlkut:
Keterangan:
Nllal merupakan nllal awal lnoeks barls paoa orro,, oan nllal y merupakan
nllal akblr lnoeks barls orro,. Nllal t merupakan nllal awal lnoeks kolom paoa
orro,, oan nllal u merupakan nllal akblr lnoeks kolom orro,.
Representasl orro, oua olmensl:
0 1 2 3 4
0
A 1
2
Gambar ol atas merepresentaslkan orro, yang terolrl oarl 3 barls oan 5
kolom, oan jumlab elemennya = 3 5 = 15 elemen. Karena terolrl oarl barls
(row) oan kolom (co|umn), maka orro, oua olmensl serlng juga olsebut
natrix.
Mengakses data orroy dua dinensi:
Sepertl arro, satu olmensl, orro, oua olmensl juga olakses melalul lnoeksnya.
Contob: A[1,2], menunjuk paoa poslsl nllal orro, paoa barls 1, kolom 2.
Untuk menylmpan nllal oalam orro, oua olmensl, oapat ollakukan oengan cara
sebagal berlkut:
A[0,0] 2 ,`.invn 2 vvv vv, / vi. 0,[oon 0`,
A[0,1] 4 ,`.invn vvv vv, / vi. 0,[oon 1`,
A[1,2] 8 ,`.invn vvv vv, / vi. 1,[oon 2`,
A[2,2] A[0,0] + A[1,2] ,`vnvn[vn nivi vvv vv, / vi.
0,[oon 0 vcnvn nivi vvv vv, /
vi. 1,[oon 2 vvn .invn nv.in,v
vvv vv, / vi. 2,[oon 2 `,
...
KAMUS DATA
Nama_variabel : array [x..y,t..u] of tipe_data
...
A[0,0] Aoa 5 kolom (0-4)
Aoa 3 barls (0-2)
A[1,2]
A[2,4]
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 117
PAGE 10
Seblngga gambaran array A menjaol sepertl berlkut lnl:
0 1 2 3 4
0 2 4
A 1
8
2 10
Contob pseudocode untuk menylmpan oan menampllkan nllal paoa orro, oua
olmensl.
1.ALGORITMA
2.,` ^cn,iv[vn vvn ncnv.v[[vn nivi vvvn vv, vvv vincn.i
3. 1. : vv, vvvn [cvvvvn [o.on
4. I. : ncnvni[vn nivi ,vn vi.invn vvvn vv, vcnvn ncnvnv[vn .v[v
5. cnvvnvn `,
6.KAMUS DATA
7. A : array[0..2,0..4] of integer
8. i,j,k : integer
9.BEGIN
10. k=0;
11. ,`ncnv.v[[vn nivi vvvn vv,`,
12. for(i=0;i<=3;i++)
13. for(j=0;j<=4;j++)
14. A[i,j]=k+2;
15. k=k+2;
16. endfor
17. endfor
18. ,`ncnvni[vn [cnvi nivi vvv vv,`,
19. for(i=0;i<=3;i++)
20. for(j=0;j<=4;j++)
21. output(A[,i,j,]= ,A[i,j])
22. endfor
23. endfor
24.END.
Pseudocode ol atas menggambarkan proses menylmpan orro, oua olmensl,
olmana nllal yang olmasukkan merupakan penambaban oengan 2.
Aoa 3 barls (0-2)
A[1,2]
A[2,4]
A[0,0] Aoa 5 kolom (0-4)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
118 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Dalam 8abasa C
1. ,`^cn,iv[vn vvn ncnv.v[[vn nivi vvvn vv, vvv vincn.i
2. 1. : vv, vvvn [cvvvvn [o.on
3. I. : ncnvni[vn nivi ,vn vi.invn vvvn vv, vcnvn ncnvnv[vn .v[v
4. cnvvnvn `,
5. #include <stdio.h>
6. #include <conio.h>
7. void main()
8. {
9. int A[3][5]; ,`vc[vv.i vv, vvv vincn.i`,
10. int i,j,k;
11. k=0;
12. ,`ncnv.v[[vn vvv vvvn vv, vvv vincn.i`,
13. for(i=0;i<=2;i++)
14. { for(j=0;j<=4;j++)
15. { A[i][j] = k + 2;
16. k+=2; } ,` cnv{o oo ] `,
17. } ,` cnv{o oo i `,
18. ,`ncnvni[vn [cnvi nivi vv, vvv vincn.i`,
19. for(i=0;i<=2;i++)
20. { for(j=0;j<=4;j++)
21. { printf("A[%i,%i] = %i\n",i,j,A[i][j]);
22. } ,`cnv{o oo ]`,
23. } ,`cnv{o oo i`,
24. printf("tekan Enter...");
25. getch(); ,` ncnvnvn vnivn vvv v,v`,
26. }
Output yang olbasllkan:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 119
PAGE 10
6.1.3 Array MuIti-Dinensi
Dalam menggambarkan orro, multlolmensl, banya terbatas blngga
olmensl ke-3, yaknl oengan menggunakan bangun ruang, namun oalam
kenyataannya, tlpe oata orro, lnl oapat olbentuk menjaol leblb oarl tlga
olmensl atau menjaol n-olmensl.
Representasl orro, 3 (tlga) olmensl
Penullsan notasl algorltma untuk menoeklaraslkan tlpe oata orro,
multlolmensl cukup oengan memooltlkasl oeklarasl orro, satu olmensl, yaknl
oengan menambabkan tanoa koma , paoa baglan oetlnlsl banyaknya elemen
orro, oan menambabkan ukuran elemen yang ollnglnkan.
Untuk menoeklaraslkan varlabel oengan tlpe oata orro, n-olmensl paoa
notasl algorltma, olgunakan pola sebagal berlkut:
...
KAMUS DATA
Nama_variabel:array [a..b,t..u,x..y,..] of tipe_data
...
1
2
1
2
3
4
3
1 2 3 4
3
4 x
?
Z
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
120 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
6.2 Tipe Data Bentukan
Dalam membuat program, kaoangkala akan olbaoapkan oengan
struktur oata yang tloak seoerbana oan apablla banya oltanganl oengan tlpe
oata oasar saja, maka pembuat program akan kesulltan merumuskan
komposlslnya.
Sebagal contob, program yang akan olbuat mellbatkan oata tentang
mabaslswa, maka untuk varlabel mabaslswa akan sullt oltentukan tlpe oatanya
karena paoa mabaslswa teroapat beberapa elemen yaltu, nama, nomor lnouk
mabaslswa, jenls kelamln, alamat, oan elemen-elemen yang lalnnya.
Tantangan berlkutnya aoalab bagalmana cara menylmpan oata-oata
mabaslswa tersebut jlka jumlab mabaslswa leblb oarl satu? Tentunya bal lnl
akan sangat sullt jlka barus olselesalkan oengan tlpe oata oasar saja. Oleb
karena ltu olperlukan aoanya suatu tlpe oata baru yang olgunakan untuk
menanganl kasus ol atas, yaltu oengan menggunakan tlpe oata bentukan.
Tlpe oata bentukan merupakan suatu tlpe oata yang
olrancang/olbentuk (oan olberl nama) oarl beberapa elemen bertlpe tertentu
yang suoab olkenal. [aol ol oalam tlpe oata bentukan akan teroapat elemen
oengan tlpe oata oasar oan oapat juga teroapat tlpe oata bentukan laln yang
telab oloetlnlslkan sebelumnya.
Tujuan olgunakannya tlpe oata bentukan aoalab supaya perancang
program menoapatkan suatu tlpe oata olmana selurub komponennya secara
keseluruban memlllkl makna semantlk oan ol oalamnya teroapat keterkaltan
antar komponen. Paoa oata mabaslswa telab oljabarkan beberapa elemen yang
aoa maka, oengan menggunakan tlpe oata bentukan lnl, perancang program
oapat menoetlnlslkannya ke oalam program.
|mplementasl tlpe oata bentukan oalam babasa pemrograman sangat
bervarlasl tergantung oarl struktur babasa pemrograman ltu senolrl. Dalam
notasl algorltmlk, sebuab tlpe bentukan (tlpe komposlsl) oapat olsusun
sebagal berlkut :
type nama_type < elemen1 : type_data1,
elemen2 : type_data2,
...>
Contob paoa oata mabaslswa oapat oljabarkan elemen-elemennya sebagal
berlkut:
1. Nlm bertlpe longlnt
2. Nama bertlpe strlng
3. Umur bertlpe woro
[lka oltullskan oalam notasl algorltmlk maka, akan menjaol:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 121
PAGE 10
type Mahasiswa : <nim : integer,
nama : string,
umur : integer>
Operasl oalam menggunakan tlpe oata bentukan memlllkl perllaku yang
sama oengan operasl paoa tlpe oata oasar, banya perbeoaannya aoalab paoa
cara mengaksesnya. Tlpe oata bentukan memlllkl beberapa varlabel/elemen
yang beraoa ol oalamnya, oleb karena ltu cara mengaksesnya menggunakan
tanoa oot/tltlk '.'
Contob:
[lka akan menoetlnlslkan nama varlabel Mbs oengan tlpe oata Mabaslswa maka
penoeklaraslannya aoalab:
Kamus data
Mhs : Mahasiswa
[lka akan menglsl elemen nlm paoa varlabel Mbs maka:
Mhs.nim 30107001
Atau oengan perlntab masukan sebagal berlkut:
input(Mhs.nim)
[lka akan menampllkan lsl oarl elemen nlm paoa varlabel Mbs maka:
output(Mhs.nim)
8erlkut aoalab contob penggunaan tlpe oata bentukan secara lengkap:
1.ALGORITMA
2. ,`.onon voinv cnvnvvn ic vvv cnv[vn .cvcnvnv`,
3.KAMUS DATA
4. type Mahasiswa : <nim : integer,
5. nama: string,
6. umur: integer>
7. ,`^cnvnv[vn ic vvv ^vnv.i..v vvv .vivc ^n.`,
8. Mhs : Mahasiswa
9. Begin
10. ,`ncni.i ccncnccncn vvvn .vivc ^n.`,
11. input(Mhs.nim)
12. input(Mhs.nama)
13. input(Mhs.umur)
14. ,`ncnvni[vn i.i ccncnccncn vvvn ^n.`,
15. output(Mhs.nim)
16. output(Mhs.nama)
17. output(Mhs.umur)
18.End.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
122 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Dalam bahasa C
1. #include <stdio.h>
2. #include <conio.h>
3. ,`vc[vv.i c.ov nvnv.i..v`,
4. struct mahasiswa { long nim;
5. char nama[20];
6. short umur; };
7. struct mahasiswa Mhs;
8.
9. main()
10. {
11. printf(Masukkan Data Mahasiswa\n);
12. printf(NIM = ); scanf(%i,&Mhs.nim);
13. printf(Nama = ); scanf(%s,&Mhs.nama);
14. printf(Umur = ); scanf(%i,&Mhs.umur);
15.
16. ,`ncnvni[vn i.i ccncnccncn vvvn ^n.`,
17. printf(\n\nHasil masukan Anda adalah: \n);
18. printf("Nim Anda = %i\n",Mhs.nim);
19. printf("Nama Anda = %s\n",Mhs.nama);
20. printf("Umur Anda = %i\n",Mhs.umur);
21. printf("tekan Enter...");
22. getche(); ,`ncnvnvn vnivn vvv v,v`,
23. }
Output yang olbasllkan:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 123
PAGE 10
6.3 Konbinasi Tipe Bentukan dan Arroy
6.3.1 Tipe Data Bentukan di daIan orroy
Permasalaban yang berlkutnya aoalab bagalmana caranya memasukkan
oata mabaslswa oengan jumlab yang banyak? Dl slnl oapat olgunakan orro,
sebagal sarana untuk menylmpan oata mabaslswa oalam satu varlabel.
Cara menoeklaraslkannya aoalab sebagal berlkut:
[lka olrepresentaslkan oalam bentuk gambar maka, akan tampak sebagal
berlkut:
Mbs = ...
0 1 2 ... 49
Untuk menglmplementaslkan penggambaran oata ol atas maka, cara penglslan
orro, Mbs aoalab sebagal berlkut:
...
Mhs[0].nim 30107001
KAMUS DATA
type Mahasiswa : <nim : integer,
nama : string,
umur : integer
>
Mhs : array [0..49] of Mahasiswa
30107001
Luna Maya
18
30107002
Amingwati
18
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
124 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Mhs[0].nama Luna Maya
Mhs[0].umur 18
Mhs[1].nim 30107002
Mhs[1].nama Amingwati
Mhs[1].umur 18
...
Atau oengan perlntab masukan sebagal berlkut
input(Mhs[0].nim)
input(Mhs[0].nama)
input(Mhs[0].umur)
input(Mhs[1].nim)
input(Mhs[1].nama)
input(Mhs[1].umur)
.....
Dengan oemlklan oata mabaslswa oapat olslmpan oalam satu buab varlabel
bertlpe orro, oengan tlpe Mabaslswa.
Contob pseuoocooe lengkapnya
1.ALGORITMA
2. ,`.onon voinv cnvnvvn ic vvv cnv[vn vvvn vv,`,
3.KAMUS DATA
4. Type Mahasiswa : <nim : integer,
5. nama : string,
6. umur : integer >
7. ,`^cnvnv[vn ic vvv ^vnv.i..v vvv .vivc ^n.`,
8. Mhs : array [0..2] Mahasiswa
9. i : integer
10.Begin
11. ,`ncni.i ccncnccncn vvvn .vivc ^n.`,
12. for(i=0;i<=2;i++)
13. output(Nim = ); input(Mhs[i].nim)
14. output(Nama = ); input(Mhs[i].nama)
15. output(Umur = ); input(Mhs[i].umur)
16. EndFor
17. ,`ncnvni[vn i.i ccncnccncn vvvn ^n.`,
18. for(i=0;i<=2;i++)
19. output(Mhs[i].nim)
20. output(Mhs[i].nama)
21. output(Mhs[i].umur)
22. EndFor
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 125
PAGE 10
23.End.
Dalam bahasa C
1.,`.onon ovn cnvnvvn ic vvv cnv[vn vvvn vv,`,
2.#include <stdio.h>
3.#include <conio.h>
4.,`vc[vv.i c.ov nvnv.i..v`,
5.struct mahasiswa { long nim;
6. char nama[20];
7. short umur; };
8.struct mahasiswa mhs[3];
9. ,` nvin ovn `,
10.main()
11.{
12. int i;
13. int a;
14. printf("Input Data Mahasiswa\n");
15. a=1;
16. for(i=0;i<=2;i++)
17. {
18. printf("Data ke-%d\n",a);
19. printf("NIM = "); scanf("%i",&mhs[i].nim);
20. printf("Nama = "); scanf("%s",&mhs[i].nama);
21. printf("Umur = "); scanf("%i",&mhs[i].umur);
22. printf("\n");
23. a++;
24. } ,,cnv{o
25. ,`ncnvni[vn vvv nvnv.i..v`,
26. printf("\nData Yang Telah Di inputkan\n");
27. for(i=0;i<=2;i++)
28. {
29. printf("%i%10s%3i\n",mhs[i].nim,mhs[i].nama,
30. mhs[i].umur);
31. } ,,cnv{o
32. getche(); ,`ncnvnvn vnivn vvv v,v`,
33.}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
126 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
100
Nindya
Nilai = 100 89 88
0 1 2
Output yang olbasllkan:
6.3.2 Arroy di daIan Tipe Data Bentukan
Paoa contob sebelumnya telab oltunjukkan babwa ol oalam sebuab
elemen orro, oapat ollsl oengan suatu nllal yang memlllkl tlpe oata bentukan.
[lka konolsl yang olbaoapl oleb perancang program aoalab konolsl yang
seballknya, yaltu memasukkan varlabel bertlpe orro, menjaol salab satu atau
beberapa elemen ol oalam varlabel yang memlllkl tlpe oata bentukan,
bagalmanakab cara menoetlnlslkan oan mengoperaslkan varlabel tersebut?
Dl oalam tlpe oata bentukan, satu atau beberapa elemennya
olperbolebkan untuk menggunakan tlpe oata orro,. Salab satu contob
kasusnya aoalab bagalmana menoetlnlslkan oata mabaslswa yang mempunyal
beberapa nllal. [lka olgambarkan akan tampak sebagal berlkut:
Mabaslswa
Darl gambar ol atas oapat olllbat babwa seorang mabaslswa memlllkl
beberapa nllal, maka cara menoeklaraslkan tlpe oatanya aoalab:
type Mahasiswa : <nim : integer,
nama : string,
nilai: array [0..2] of integer
>
Kamus data
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 127
PAGE 10
Mhs : Mahasiswa
Dalam bal lnl yang memlllkl tlpe oata orro, aoalab elemen ol oalam tlpe oata
bentukan, oleb karena ltu cara mengakses elemen orro, yang teroapat ol
oalam tlpe Mabaslswa aoalab sebagal berlkut:
Mhs.nilai[0] 100
Mhs.nilai[1] 89
Mhs.nilai[2] 88
Atau oengan perlntab masukan sebagal berlkut:
input(Mhs.nilai[0])
input(Mhs.nilai[1])
input(Mhs.nilai[2])
Contob pseuoocooe lengkapnya
1.ALGORITMA
2. ,`.onon voinv cnvnvvn vv, vvvn ic vvv cnv[vn`,
3.KAMUS DATA
4. type Mahasiswa: <nim : integer,
5. nama : string,
6. nilai: array[0..2] of integer>
7.,`^cnvnv[vn ic vvv ^vnv.i..v vvv .vivc ^n.`,
8. Mhs : Mahasiswa
9. i,a : integer
10.Begin
11.,`ncni.i ccncnccncn vvvn .vivc ^n.`,
12. output(Memasukkan nilai dalam array)
13. output(Nim = ); input(Mhs.nim)
14. output(Nama= ); input(Mhs.nama)
15. a=1;
16. for(i=0;i<=2;i++)
17. output(Nilai ke ,a, = )
18. input(Mhs.nilai[i])
19. a=a+1
20. endfor
21.,`ncnvni[vn i.i ccncnccncn vvvn ^n.`,
22. output(Nim Anda : ,Mhs.nim, dan Nama
23. Anda: ,Mhs.nama)
24. output(Nilai Anda adalah:)
25. for(i=0;i<=2;i++)
26. output(Mhs.nilai[i])
27. endFor
28.End.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
128 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Dalam babasa C
1.,`.onon ovn vv, vvvn ic vvv cnv[vn`,
2.#include <stdio.h>
3.#include <conio.h>
4. ,`vc[vv.i c.ov vvn .vivc`,
5.struct mahasiswa {long nim;
6. char nama[20];
7. int nilai[3];};
8.struct mahasiswa mhs;
9.int i,a;
10.
11.main()
12.{
13. printf("Memasukkan nilai dalam array\n");
14. printf("NIM = "); scanf("%i",&mhs.nim);
15. printf("Nama = "); scanf("%s",&mhs.nama);
16. a=1;
17. for(i=0;i<=2;i++)
18. {
19. printf("Nilai ke-%i = ",a);
20. scanf("%i",&mhs.nilai[i]);
21. a++;
22. }
23. ,`ncnvni[vn [cnvi vvv vvvn vv, `,
24. printf("\nNIM Anda : %i dan Nama Anda :
25. %s\n",mhs.nim,mhs.nama);
26. printf("\nNilai Anda adalah:\n");
27. a=1;
28. for(i=0;i<=2;i++)
29. {
30. printf("Nilai ke-%i : %i\n",a,mhs.nilai[i]);
31. a++;
32. }
33. printf("\nTekan Enter........");
34. getche();
35.}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 129
PAGE 10
Output yang olbasllkan:
6.3.3 Arroy dari Tipe Bentukan yang Mengandung Arroy
Paoa kasus lnl tujuannya aoalab menoetlnlslkan tlpe oata untuk
menylmpan oata oengan tlpe oata bentukan oan ol oalam tlpe oata bentukan
tersebut teroapat elemen oengan tlpe orro,.
Paoa contob kasus ol sub bab 6.3.2 oltunjukkan seorang mabaslswa
memlllkl nllal leblb oarl satu. Pertanyaan berlkutnya aoalab bagalmana jlka
jumlab mabaslswanya leblb oarl satu?
Caranya aoalab oengan membuat varlabel bertlpe orro, olmana orro,
tersebut memlllkl tlpe oata bentukan yang ol oalamnya teroapat orro,.
type Mahasiswa : <nim : integer,
nama : string,
nilai: array [0..2] of integer>
Kamus data
Mhs : array [0..49] of Mahasiswa
Dapat olllbat babwa oalam tlpe oata Mabaslswa teroapat elemen 'nllal' yang
memlllkl tlpe orro,, kemuolan paoa baglan kamus oata oloetlnlslkan babwa
varlabel Mbs merupakan tlpe orro, oengan tlpe oata Mabaslswa.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
130 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
100
Nindya
[lka olgambarkan akan tampak sebagal berlkut:
Mbs = ...
0 1 2 ... 49
Nilai = 100 89 88
0 1 2
Cara untuk menglsl satu elemen 'Nllal' oalam varlabel Mbs aoalab sebagal
berlkut:
...
Mhs[0].Nilai[0] 100
Mhs[0].Nilai[1] 89
Mhs[0].Nilai[2] 88
...
Demlklan pula untuk mengakses suatu nllal paoa elemen Nllal ol varlabel Mbs
aoalab:
...
{Menampilkan isi elemen nilai ke-0}
output(Mhs[0].Nilai[0])
...
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 131
PAGE 10
Contob pseuoocooe lengkapnya
1. ALGORITMA
2. ,`.onon voinv cnvnvvn vv, vvi ic vvv cnv[vn ,vn ncnvnvvn
3. vv,`,
4. KAMUS DATA
5. type Mahasiswa : <nim : integer,
6. nama : string,
7. nilai: array[0..2] of integer>
8. ,`^cnvnv[vn ic vvv ^vnv.i..v vvv .vivc vv, ^n.`,
9. Mhs : array of [0..3] of Mahasiswa
10. i,a,j,b : integer
11.Begin
12. ,`ncni.i ccncnccncn vvvn .vivc vv, ^n.`,
13. output(Memasukkan nilai dalam array)
14. a=1
15. for(i=0;i<=3;i++)
16. output(Data mahasiswa ke-,a)
17. output(Nim = ); input(Mhs[i].nim)
18. output(Nama= ); input(Mhs[i].nama)
19. b=1
20 for(j=0;j<=2;j++)
21. output(Nilai ke ,b, = )
22. input(Mhs[i].nilai[j])
23. b=b+1
24. endfor ,`v[ni oo ]`,
25. a=a+1
26. endfor ,`v[ni oo i`,
27. ,`ncnvni[vn i.i ccncnccncn vvvn ^n.`,
28. for(i=0;i<=3;i++)
29. output(Mhs[i].nim, Mhs[i].nama)
30. for(j=0;j<=2;j++)
31. output(Mhs[i].nilai[j])
32. endfor
33. endFor
34.End.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
132 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Dalam babasa C
1. ,`.onon voinv cnvnvvn vv, vvi ic vvv cnv[vn ,vn ncnvnvvn
2. vv,`,
3. #include <stdio.h>
4. #include <conio.h>
5. ,`vc[vv.i c.ov vvn .vivc`,
6. struct mahasiswa {long nim;
7. char nama[20];
8. int nilai[3];};
9. struct mahasiswa mhs[4];
10.int i,j,a,b;
11. ,`nvin ovn`,
12.main()
13.{
14. printf("Memasukkan data pada Array");
15. a=1;
16. for(i=0;i<=3;i++)
17. {
18. printf("\nData ke-%i\n",a);
19. printf("NIM = "); scanf("%i", &mhs[i].nim);
20. printf("Nama = "); scanf("%s", &mhs[i].nama);
21. b=1;
22. for(j=0;j<=2;j++)
23. {
24. printf("Nilai ke-%i = ",b);
25. scanf("%i",&mhs[i].nilai[j]);
26. b++;
27. } ,,cnv oo ]
28. a++;
29. } ,, cnv oo i
30. ,`o.c. ncnvni[vn [cnvi vvv vvv vv,`,
31. printf("\nData Mahasiswa\n");
32. for(i=0;i<=3;i++)
33. {
34. printf("%i %-10s",mhs[i].nim,mhs[i].nama);
35. for(j=0;j<=2;j++)
36. {
37. printf("%i ",mhs[i].nilai[j]);
38. } ,,cnv oo ]
39. printf("\n");
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 133
PAGE 10
40. } ,,cnv oo i
41. printf("\nTEKAN ENTER.....");
42. getche();
43.}
Output yang olbasllkan:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
134 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
Rangkunan
1. Tlpe oata orro, olgunakan untuk menampung/menylmpan banyak nllal
paoa satu varlabel.
2. Setlap elemen paoa tlpe oata orro, oltanoal oengan lnoeks.
3. |noeks penanoa elemen paoa orro, menggunakan tlpe oata yang memlllkl
keterurutan.
4. Tlpe oata orro, memlllkl olmensl mlnlmal satu blngga n-olmensl.
5. Paoa tlpe oata orro, satu olmensl memlllkl satu lnoeks, kemuolan paoa
orro, oua olmensl memlllkl oua lnoeks, oemlklan seterusnya olmana
jumlab lnoeks menglkutl banyaknya olmensl orro, yang olbentuk.
6. Tlpe oata bentukan aoalab tlpe oata yang olrancang/olbentuk (oan olberl
nama) oarl beberapa elemen bertlpe tertentu.
7. Tlpe oata bentukan oapat olslmpan oalam varlabel bertlpe orro,.
8. Llemen oalam tlpe oata bentukan oapat menggunakan varlabel bertlpe
orro,.
9. Tlpe oata bentukan yang ol oalamnya teroapat elemen bertlpe orro,,
oapat olslmpan oalam varlabel bertlpe orro,.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 135
PAGE 10
PiIihan Ganda
Petunjuk. Plhloh jowobon yong polng tepotl
1. Manakab oeklarasl array yang benar berlkut lnl oalam babasa C:
A. #include <stdio.h>
void main()
{ A[7] integer; }
8. #include <stdio.h>
void main()
{integer A[7]; }
C. #include <stdio.h>
void main()
{int A[7]; }
D. 8ukan salab satu ol atas
2. Kumpulan elemen-elemen yang terurut oan memlllkl tlpe oata yang sama
olsebut:
A. Rekurslt C. Array
8. Recoro D. Flle
3. struct siswa mahasiswa[500]. Darl array lnl yang merupakan
NAMA oarl suatu ARRAY aoalab:
A. struct C. mabaslswa
8. slswa D. bukan salab satu ol atas
4. Dl bawab lnl merupakan bal-bal yang barus olkemukakan oalam
menoeklaraslkan suatu bentuk Array, kecuol:
A. nama array C. recoro
8. banyak elemen array D. tlpe oata
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
136 Ar ray dan Ti pe Dat a Bent uk an
PAGE 10
5.
Paoa array 2 olmensl oengan oroo 44, oengan konolsl A[i,j] = 1,
jika i<=j, dan A[i,j]=j, jika i>j. Darl pernyataan ol
atas nllal oarl A[3,2] aoalab:
A. 1 C. 3
8. 2 D. 4
Latihan
1. KAMUS
nilai : array[0..9] of integer
p : integer
ALGORITMA
for(p=0;p<10;p++)
nilai[p] p + 2
endfor
for(p=0;p<10;p++)
if (p mod 4) = 0 THEN
Output( )
else
Output(nilai[p])
endif
endfor
Tentukan output yang olbasllkan algorltma ol atas !!!
2. KAMUS :
X, Y : array [0..2,0..2]of integer
i,j : integer
ALGORITMA:
for(i=0;i<2;i++)
for(j=2;j>=0;j--)
X[i,j] i + j
Y[i,j] x[i,j]
endfor
endfor
Tentukan berapa barga matrlks Y?
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Ar r ay dan Ti pe Dat a Bent uk an 137
PAGE 10
3. 8uat algorltma untuk mengbltung nllal total oan nllal rata-rata oarl
sejumlab nllal yang ollnputkan oalam orro,. (Asumslkan orro, memlllkl 5
elemen)
4. 8uat algorltma untuk menylmpan matrlks segltlga bawab berlkut !
(Gunakan skema WHlLE)
1 0 0 0
1 2 0 0
1 2 3 0
1 2 3 4
5. 8uat algorltma untuk memasukkan sejumlab nllal oalam suatu orro,,
kemuolan tampllkan nllal terbesar oarl nllal-nllal yang ollnputkan oalam orro,
tersebut. (Asumslkan orro, memlllkl 10 elemen oata)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
138 Pemrogr aman Modul ar
PAGE 10
7 Penrogranan ModuIar
Overview
Pemrograman mooular memungklnkan perancang program menyeoerbanakan
persoalan oloalam program oengan memecab atau membagl persoalan
tersebut menjaol sub-sub persoalan yang leblb kecll agar muoab olselesalkan.
Secara umum olkenal oua cara yang oapat olgunakan untuk memecab
persoalan oalam mooul-mooul, yaltu oengan menggunakan struktur tungsl oan
proseour. Pemabaman tentang perbeoaan oan karakterlstlk maslng-maslng
struktur tersebut perlu ollmbangl pula oengan kemampuan
menglmplementaslkannya oalam program.
Tujuan
1. Memabaml konsep pemrograman mooular
2. Mengetabul oua cara pemrograman mooular: tungsl oan proseour
3. Mengetabul cara menglmplementaslkan tungsl oan proseour oalam
program
4. Mengetabul oan oapat menerapkan pemanggllan subprogram oarl
program utama.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
138 Pemrogr aman Modul ar
PAGE 10
7 Penrogranan ModuIar
Overview
Pemrograman mooular memungklnkan perancang program menyeoerbanakan
persoalan oloalam program oengan memecab atau membagl persoalan
tersebut menjaol sub-sub persoalan yang leblb kecll agar muoab olselesalkan.
Secara umum olkenal oua cara yang oapat olgunakan untuk memecab
persoalan oalam mooul-mooul, yaltu oengan menggunakan struktur tungsl oan
proseour. Pemabaman tentang perbeoaan oan karakterlstlk maslng-maslng
struktur tersebut perlu ollmbangl pula oengan kemampuan
menglmplementaslkannya oalam program.
Tujuan
1. Memabaml konsep pemrograman mooular
2. Mengetabul oua cara pemrograman mooular: tungsl oan proseour
3. Mengetabul cara menglmplementaslkan tungsl oan proseour oalam
program
4. Mengetabul oan oapat menerapkan pemanggllan subprogram oarl
program utama.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 139
PAGE 10
7.1 De(ns Pemrogromon Modulor
Dalam sebuab program, serlngkall pemrogram perlu memecab
persoalan yang kompleks menjaol beberapa baglan yang leblb muoab
olselesalkan. |oe lnllab yang mencetuskan struktur pemrograman mooular,
yaltu memecab persoalan menjaol sub-sub persoalan yang blasa olsebut
subprogram.
8ayangkan sebuab program yang olbuat untuk mengbltung nllal rata-
rata oarl sekumpulan nllal lnteger. Dalam prosesnya, program melakukan
perbltungan tersebut oalam oua langkab, yaltu menjumlabkan selurub nllal,
kemuolan membaglnya oengan banyaknya nllal yang terseola. Dengan
oemlklan program tersebut oapat olpecab menjaol oua subprogram, yaltu
subprogram penjumlaban oan subprogram pembaglan.
Selaln ltu, pemrograman mooular memungklnkan pemrogram
memanggll kemball subprogram yang telab oloetlnlslkannya setlap kall
olperlukan oalam program tersebut. Pemrogram tloak perlu berulang kall
menoetlnlslkan sekumpulan lnstruksl yang olperlukan beberapa kall oalam
sebuab program maupun oalam program lalnnya. Dengan pemrograman
mooular, sebuab subprogram oapat olanggap sebagal program kecll oengan
sebuab tujuan spesltlk yang umumnya berlsl operasl seoerbana oan apablla
teroapat kesalaban oapat ollokallslr paoa subprogram ltu senolrl. Sub-sub
program tersebut kemuolan olsatukan oleb baglan program utama yang oapat
memanggll subprogram tersebut sesual kebutuban oalam program.
Gambar 7.1 |lustrasl pemrograman mooular
Dalam pemrograman, olkenal oua tlpe subprogram yang blasa
olgunakan untuk memecab persoalan kompleks menjaol leblb seoerbana, yaltu
tungsl (funct|on) oan proseour (procedure). Keoua tlpe subprogram lnl oapat
olgunakan bersamaan maupun salab satunya saja oalam sebuab program.
Maslng-maslng tlpe subprogram memlllkl karakterlstlk oan perllaku yang
berbeoa seblngga penggunaannya oalam program juga berbeoa-beoa.
rogram uLama
Subprogram 1 Subprogram 2 Subprogram 3
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
140 Pemrogr aman Modul ar
PAGE 10
Subprogram sebagal baglan oarl program utama wajlb menoetlnlslkan
konolsl awal (|n|t|o| stotell.S.) sebelum proses oalam subprogram oleksekusl
oan juga menoetlnlslkan konolsl akblr (f|no| stotell.S.) yang berupa basll proses
(output) atau perubaban nllal oalam varlabel tertentu (kbusus untuk tungsl
saja).
8eberapa tungsl oan proseour telab teroetlnlsl oan oapat langsung
olgunakan oleb pemrogram oalam sebuab program oengan menoetlnlslkan
varlabel-varlabel yang olperlukan. Selaln tungsl oan proseour yang telab
teroetlnlsl tersebut, pemrogram juga oapat membuat senolrl tungsl oan
proseour yang olperlukannya oalam sebuab program.
Dalam membuat sebuab subprogram, pemrogram oapat
menylmpannya oalam salab satu oarl oua lokasl berlkut lnl:
oalam tlle yang sama oengan program utama: oapat ollakukan jlka
subprogram seolklt oan berukuran kecll seblngga relatlt muoab olkelola
oalam sebuab tlle
oalam tlle yang terplsab: blasanya ollakukan jlka subprogram suoab
terlalu banyak seblngga sullt olkelola, atau jlka pemrogram
menglnglnkan supaya subprogram oapat olgunakan ol beberapa
program utama sekallgus
7.2 Yorobel Lokol don Yorobel Globol
7.2.1 VariabeI LokaI
Dalam menoeklaraslkan sebuab tungsl/ proseour, oapat oloeklaraslkan
pula varlabel-varlabel yang akan olgunakan oalam tungsl/ proseour tersebut.
varlabel semacam lnl olsebut variabeI IokaI atau variabeI internaI, artlnya
varlabel lnl banya olkenall secara lokal oalam sebuab subprogram (tungsl atau
proseour). varlabel lokal tloak oapat olpanggll, olakses oan olubab oleb
proseour atau tungsl yang laln, babkan oleb program utama sekallpun karena
banya oapat olkenall oleb proseour atau tungsl olmana varlabel lnl
oloetlnlslkan.
7.2.2 VariabeI GIobaI
Seoangkan varlabel yang oloetlnlslkan oalam program utama oan oapat
olgunakan ol program utama maupun sub-sub program lalnnya olsebut oengan
variabeI gIobaI. Nllal oarl varlabel lnl oapat olpanggll, olakses oan olubab
oleb proseour atau tungsl apapun yang teroapat oalam program tersebut.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 141
PAGE 10
7.3 Iungs
Fungsl aoalab subprogram yang menerlma oata masukan, melakukan
beberapa perbltungan oarl oata tersebut, kemuolan mengemballkan output
berupa sebuab oata baru. Dengan kata laln, sebuab tungsl memetakan sebuab
nllal (oalam domo|n) menjaol nllal laln (oalam ronge) oengan operasl/ proses
tertentu. Penoeklaraslan tungsl merupakan salab satu cara memecab
persoalan ke oalam beberapa sub persoalan yang leblb muoab olselesalkan.
Dalam pembuatan sebuab tungsl, pemrogram barus menoetlnlslkan:
nama tungsl
Tlpe oata yang olbuat/ olbasllkan oleb tungsl
Dattar parameter yang menyatakan oata yang olperlukan oleb tungsl
Satu atau leblb lnstruksl yang melakukan perbltungan
Selanjutnya, tungsl yang suoab oloetlnlslkan oapat olgunakan oalam
program utama maupun oalam tungsl lalnnya oengan cara memanggll nama
tungsl oan memberlkan parameter yang olperlukan oleb tungsl tersebut.
Fungsl bekerja menurut mekanlsme pemanggllan-pengemballan (co||-
return mechon|smj. Tabapan oalam mekanlsme tersebut aoalab:
1. Fungsl olpanggll oarl program utama maupun tungsl lalnnya
2. Sekumpulan operasl oalam tungsl oleksekusl
3. Hasll eksekusl olkemballkan ke program utama atau tungsl laln yang
memanggllnya.
Struktur umum sebuab tungsl:
FUNCTION nama_fungsi (daftar_parameter)tipe_data
BEGIN
{instruksi dalam fungsi}
return
ENDFUNCTION
Seoangkan penullsan oalam babasa pemprograman C++ aoalab sebagal
berlkut :
Tipe_data_kembali nama_fungsi(daftar_parameter)
{
/* instruksi dalam fungsi */
return value;
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
142 Pemrogr aman Modul ar
PAGE 10
Dengan catatan babwa oattar parameter boleb kosong (tloak aoa
parameter yang perlu ollnputkan paoa saat pemanggllan tungsl). [lka oattar
parameter (olsebut juga parameter tormal) tloak kosong maka parameter
tersebut barus berupa nama parameter oan tlpe oatanya. Dalam sebuab
tungsl, lnstruksl terakblr barus merupakan perlntab untuk menglrlmkan nllal/
oata keluaran oarl tungsl ke program utama (baglan program yang
memanggllnya). Nllal yang olkemballkan oleb sebuab tungsl oapat bertlpe
skalar, recoro, array, maupun set.
[lka klta mellbat struktur penullsan tungsl, struktunya bamplr atau
babkan sama oengan program utama. Paoa oasarnya, pemprograman oengan
menggunakan C++ aoalab pemprograman oengan struktur tungsl, olmana
setlap kooe yang oltullskan barus oalam bentuk tungsl, tak terkecuall program
utama. Program utama merupakan suatu tungsl oengan nama main() yang
tloak memlllkl nllal kemball atau nllal kemballnya aoalab kosong atau 0. Oleb
karenanya, klta juga oapat menullskan program utama oengan void
main() atau oengan int main(), oengan return vo|ue-nya 0.
Saat program pertama oljalankan, kooe yang pertama oleksekusl aoalab
tungsl main(). Oleb karenanya, setlap program mlnlmal barus memlllkl satu
tungsl yaltu main(), olmana lsl oarl tungsl lnl aoalab lntl oarl program.
Parameter oalam sebuab tungsl merupakan antarmuka (pengbubung)
antara tungsl oengan kooe pemanggllnya. Fungsl menerlma satu atau beberapa
nllal melalul parameter-parameter yang telab oloetlnlslkan. Setlap kall tungsl
olpanggll, kooe pemanggll barus menyeolakan parameter yang olbutubkan
oleb tungsl. 8eberapa karakterlstlk parameter oalam tungsl:
Parameter banya muncul ol oalam tungsl yang menoetlnlslkannya oan
tloak oapat olakses ol luar tungsl tersebut.
Parameter menylmpan nllal blngga tungsl oleksekusl.
Parameter ollnlslallsasl setlap kall tungsl olpanggll oleb program utama
maupun tungsl lalnnya.
Setelab oloetlnlslkan, tungsl oapat olpanggll oarl program utama
maupuan oarl tungsl lalnnya oengan perlntab:
<nama_variabel> <nama_fungsi>(<daftar_parameter>)
Contob tungsl:
1. FUNCTION luas_segiempat (P:integer, L:integer)
integer
2. { IS : Dua buah bilangan Bulat
3. FS : Hasil Kali dua bilangan }
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 143
PAGE 10
4. KAMUS DATA
5. hasil : integer
6. P,L : integer;
7. BEGIN
8. hasil P * L
9. return (hasil)
10. ENDFUNCTION
Paoa contob ol atas, tungsl luas_segiempat memerlukan oua
parameter lnputan, yaltu P oan L yang keouanya bertlpe lnteger. Kemuolan,
tungsl lnl akan mengbltung hasil oengan perkallan nllal P oan L. Fungsl akan
mengemballkan nllal varlabel hasil ke kooe pemanggll.
8erlkut lnl aoalab contob algorltma program utama/ tungsl laln
(selanjutnya olsebut kooe pemanggll) yang memanggll tungsl luas_seglempat:
1. Kamus data
2. panjang, lebar, luas: integer
3. BEGIN
4. { meminta inputan 2 nilai}
5. Input (panjang, lebar)
6. {pemanggilan fungsi luas_segiempat}
7. luas luas_segiempat(panjang, lebar)
8. Output (luas) {menampilkan luas}
9. END
Paoa potongan program ol atas oloetlnlslkan tlga varlabel, yaltu
panjang, lebar, oan luas. Pemanggllan tungsl luas_segiempat
ollakukan oalam tlga tabap sesual mekanlsme call-return, yaltu:
1. Kooe pemanggll memberlkan (poss|ng) oua parameter yang suoab
oloetlnlslkan sebagal varlabel oalam program tersebut, yaltu panjang
oan lebar.
2. Fungsl luas_segiempat oljalankan oengan menerlma oua parameter
oarl kooe pemanggll. Secara berurutan, varlabel panjang olkenall
sebagal parameter P oan varlabel lebar olkenall sebagal parameter L.
Fungsl melakukan perkallan oan menylmpan basllnya oalam varlabel
hasil yang merupakan parameter output oarl tungsl.
3. Fungsl luas_segiempat mengemballkan nllal oalam varlabel hasil
ke kooe pemanggll. Kooe pemanggll akan menylmpannya ke oalam
varlabel luas yang telab oloetlnlslkan, kemuolan menampllkannya ke
pemakal.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
144 Pemrogr aman Modul ar
PAGE 10
Perbatlkan pula babwa varlabel P, L oan basll banya oloetlnlslkan oan
olgunakan ol tungsl luas_seglempat oan tloak oapat olgunakan oalam program
utama maupun tungsl lalnnya (varlabel lokal).
8erlkut lnl aoalab contob laln oarl oetlnlsl tungsl oan pemanggllannya:
1. {===Program Utama===}
2. Kamus data {deklarasi variabel global}
3. nilai1, nilai2 : integer
4. rataan : real
5. BEGIN
6. input (nilai1, nilai2) {input 2 bilangan}
7. {pemanggilan fungsi1}
8. rataanhitung_rataan(nilai1,nilai2)
9. output (rataan) {menampilkan nilai rata-rata}
10. END
11. {===Fungsi 1===}
12. FUNCTION hitung_rataan(var1: real,var2:
real)real
13. {I.S.: var1 dan var2 berisi bilangan
14. F.S.: mengembalikan nilai rataan bertipe real}
15. Kamus data {deklarasi variabel lokal}
16. jumlah : integer
17. rata : real
18. BEGIN
19. {pemanggilan fungsi2}
20. jumlah hitung_jumlah(var1,var2)
21. rata jumlah/2
22. return (rata) {kembali ke program utama}
23. ENDFUNCTION
24. {===Fungsi 2===}
25. FUNCTION hitung_jumlah(pertama,kedua :
integer)integer
26. {I.S.: pertama dan kedua berisi bilangan
27. F.S.: mengembalikan hasil penjumlahan}
28. Kamus data {deklarasi variabel lokal}
29. hasil : integer
30. BEGIN
31. hasil pertama + kedua
32. return (hasil) {kembali ke fungsi1}
33. ENDFUNCTION
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 145
PAGE 10
Paoa contob ol atas, program bekerja sebagal berlkut:
1. Program utama menerlma lnputan oua bllangan lnteger
2. Program memanggll tungsl hitung_rataan oengan memberlkan oua
bllangan lnputan sebagal parameter
3. Fungsl hitung_rataan mengbltung varlabel jumlab oengan memanggll
tungsl hitung_jumlah oan memberlkan parameter var1 oan var2
4. Fungsl hitung_jumlah oleksekusl oengan menjumlabkan 2 parameter
lnput yang olberlkan oan mengemballkan basll ke hitung_rataan
5. Fungsl hitung_rataan menylmpan nllal basll, mengbltung rata
oengan (jumlah/2), lalu mengemballkan rata ke program utama
6. Program utama menylmpannya oalam varlabel rataan, kemuolan
menampllkannya kepaoa pemakal.
Sebagal llustrasl algorltma ol atas, program utama olmlsalkan sebagal
blok A, tungsl 1 sebagal blok 8 oan tungsl 2 sebagal blok C. [lka blok-blok
tersebut olsusun sesual oengan penullsannya, maka akan tampak sebagal
berlkut:
Arab panab menggambarkan alur pemanggllan tungsl, urutan
pemanggllan oltanoal oengan menggunakan angka. Panab oengan angka 1
menggambarkan blok A (program utama) memanggll 8lok 8 (tungsl 1),
kemuolan panab oengan angka 2 menggambarkan 8lok 8 memanggll 8lok C
(tungsl 2).
Paoa saat lmplementasl menggunakan babasa Pascal, penullsan oeklarasl
tunctlon barus olletakkan sebelum blok pemanggllnya, oengan kata laln blok
yang akan olpanggll barus olletakkan ol atas blok yang akan memanggll.
|lustraslnya aoalab sebagal berlkut:
8lok A
8lok 8
8lok C
1
2
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
146 Pemrogr aman Modul ar
PAGE 10
Darl llustrasl tersebut, maka penerapan (lmplementasl) algorltma ol
atas, jlka oltulls oalam babasa C++ akan menjaol sebagal berlkut :
1. #include <stdio.h>
2.
3. //deklarasi variabel global
4. int nilai1, nilai2;
5. float rataan;
6.
7. {===Program Utama===}
8. void main () { // program Utama
9. printf(Masukan Nilai pertama : );
10. scanf(%i,&nilai1);
11. printf(Masukan Nilai kedua : );
12. scanf(%i,&nilai2);
13.
14. {pemanggil fungsi 1}
15. rataan = hitung_rataan(nilai1,nilai2);
16. //menampilkan nilai rata-rata
17. printf(Rata-rata dari %i dan %i adalah
%f,nilai1,nilai2,rataan);
18. }
19.
20. {===Fungsi 1===}
21. float hitung_rataan(int var1,int var2) {
22. // deklarasi variabel lokal
23. int jumlah;
24. float rata;
25.
26. // panggil fungsi 2
27. jumlah = hitung_jumlah(var1,var2);
28. rata = jumlah / 2;
8lok C
8lok 8
8lok A
2
1
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 147
PAGE 10
29. return rata; // nilai Kembali Fungsi 1
30. }
31.
32. {===Fungsi 2===}
33. int hitung_jumlah(int pertama,int kedua){
34. // deklarasi variabel lokal
35. int hasil;
36.
37. hasil = pertama + kedua;
38. return hasil; // nilai kembali Fungsi 2
39. }
[lka program tersebut oljalankan oan user menglnputkan nllal 12 oan
18, maka akan mengeluarkan basll :
Masukan Nilai pertama : 12
Masukan Nilai kedua : 18
Rata-rata dari 12 dan 18 adalah 15
7.4 Prosedur
Cara laln memecab persoalan pemrograman ke oalam sub-sub
persoalan pemrograman aoalab oengan menoeklaraslkan proseour. Proseour
aoalab seoeretan lnstruksl yang olberl nama, oan melakukan tujuan tertentu.
Sepertl balnya paoa tungsl, proseour bekerja oengan mekanlsme pemanggllan-
pengemballan (co||-return mechon|sm), yaltu oengan urutan langkab:
1. Proseour olpanggll oleb kooe pemanggll (program utama maupun
proseour lalnnya)
2. Sekumpulan operasl yang olslmpan oalam proseour oleksekusl
3. Kontrol olkemballkan ke kooe pemanggll
Struktur umum oeklarasl proseour aoalab sebagal berlkut:
PROCEDURE <nama_prosedur> (input <daftar parameter
input>, output <daftar parameter output>)
{I.S.: [kondisi awal]
F.S.: [kondisi akhir/hasil yang diharapkan]}
BEGIN
{sekumpulan instruksi dalam prosedur}
ENDPROCEDURE
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
148 Pemrogr aman Modul ar
PAGE 10
Seoangkan oalam pemprograman babasa C++, penullsan proseoure
sepertl berlkut :
1. void nama_procedure (<daftar_parameter_input>
<,daftar_parameter_output>)
2. {
3. /* instruksi */
4. }
Dengan catatan babwa nama proseour oan nama parameternya barus
olsebutkan oalam blok kooe pemanggll. 8erbeoa oengan tungsl, oattar
parameter paoa proceoure terbagl menjaol oua yaltu parameter lnput oan
parameter output. Dattar parameter boleb kosong (tloak aoa parameter
lnput maupun output). [lka parameter tloak kosong (mlnlmal aoa satu
parameter) maka barus oltullskan nama parameter beserta tlpe oatanya.
Proseour tanpa parameter memantaatkan nllal oarl varlabel yang
teroetlnlsl oalam kooe program utama/proseour laln yang memanggllnya.
Proseour tanpa parameter lnl banya oapat oleksekusl jlka nllal oarl varlabel
yang olperlukan oalam proseour suoab oloetlnlslkan oalam kooe program
utama/ proseour laln yang memanggllnya.
Proseour oengan parameter olbuat untuk mengeksekusl sekumpulan
lnstruksl oengan parameter yang berbeoa-beoa. Nama parameter yang
oltullskan paoa oetlnlsl / spesltlkasl proseour olsebut oengan paraneter
fornaI. Seoangkan parameter yang oltullskan paoa pemanggllan proseour
olsebut paraneter aktuaI.
Parameter tormal aoalab nama-nama varlabel yang olpakal oalam
menoetlnlslkan proseour, oan membuat proseour tersebut oapat oleksekusl
oengan varlabel yang berbeoa saat pemanggllan. Teroapat tlga tlpe parameter
tormal:
parameter lnput, yaltu parameter yang olperlukan proseour sebagal
masukan untuk melakukan aksl yang etektlt
parameter output, yaltu parameter yang akan menylmpan nllal yang
olbasllkan oleb proseour
parameter lnput/output, yaltu parameter yang olperlukan proseour
sebagal masukan untuk melakukan aksl tertentu, yang paoa akblr
proseour akan ollsl oengan nllal baru sebagal basll eksekusl proseour
Parameter aktual aoalab varlabel / konstanta yang olpakal ketlka
proseour olpanggll oleb program utama / proseour laln. Parameter aktual
oapat berupa varlabel / konstanta, tapl parameter output barus berupa
varlabel karena akan menylmpan basll eksekusl proseour.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 149
PAGE 10
Struktur pemanggllan proseour oarl program utama maupun proseour
laln aoalab banya oengan menullskan nama proceourenya kemuolan ollkutl
oattar parameternya sebagal berlkut:
nama_prosedur
Sama balnya oengan tungsl, proseour oapat terbubung oengan program
utama maupun proseour laln melalul pertukaran parameter. 8eoanya,
oeklarasl proseour barus menyertakan nama oan tlpe oata oarl selurub
parameter lnput oan outputnya.
Contob algorltma pengbltung luas segl empat oalam subbab tungsl
oapat olubab menjaol sebagal berlkut (oengan proseour):
1. VAR
2. panjang, lebar, luas: integer
3. BEGIN
4. Input (panjang, lebar) {meminta inputan 2
nilai}
5. {pemanggilan fungsi luas_segiempat}
6. call luas_segiempat(panjang, lebar, luas)
7. Output (luas) {menampilkan luas}
8. END
9. PROCEDURE luas_segiempat (input: p, l: integer,
output: hasil: integer)
10. {I.S.: panjang dan lebar berisi bilangan
11. F.S.: luas berisi nilai luas segiempat}
12. BEGIN
13. hasil p * l
14. ENDPROCEDURE
Contob algorltma pengbltung nllal rata-rata oarl oua buab bllangan
lnputan oengan penoeklaraslan proseour:
1. {===Program Utama===}
2. VAR {deklarasi variabel global}
3. nilai1, nilai2, rataan : real
4. BEGIN
5. input (nilai1, nilai2) {input 2 bilangan}
6. {pemanggilan prosedur1}
7. call hitung_rataan(nilai1,nilai2)
8. output(rataan) {menampilkan nilai rata-rata}
9. END
10. {===Prosedur1 hitung_rataan===}
11. PROCEDURE hitung_rataan(input: var1,var2:
integer, output: rata: real)
12. VAR
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
150 Pemrogr aman Modul ar
PAGE 10
13. jml : integer
14. BEGIN
15. Call hitung_jumlah(var1,var2) {panggil
fungsi2}
16. rata jml / 2
17. ENDPROCEDURE
18. {==Prosedur2 hitung_jumlah===}
19. PROCEDURE hitung_jumlah(input: pertama, kedua:
integer, output: jumlah: integer)
20. BEGIN
21. jumlah pertama + kedua
22. ENDPROCEDURE
Pola pemanggllan procedure juga menglkutl aturan yang olterapkan paoa
funct|on. Darl algorltma ol atas, oapat oltullskan ke oalam babasa
pemprograman C++ sebagal berlkut:
1. #include <stdio.h>
2.
3. //Variabel Global
4. float nilai1, nilai2, rataan;
5.
6. {===Program Utama===}
7. void main () { // program Utama
8. // Inisialisasi dua buah nilai
9. nilai1 = 8;
10. nilai2 = 16;
11.
12. /* pemanggilan prosedur1 */
13. hitung_rataan(nilai1,nilai2,rataan);
14. /* menampilkan nilai rata-rata */
15. cout rataan;
16. }
17.
18. {==Prosedur2 hitung_jumlah===}
19. void hitung_jumlah(int pertama, int kedua, int&
jumlah)
20. {
21. jumlah = pertama + kedua;
22. }
23.
24. {===Prosedur1 hitung_rataan===}
25. void hitung_rataan(int var1, int var2,int& rata)
26. {
27. int jml;
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 151
PAGE 10
28. // panggil procedure 2
29. hitung_jumlah(var1,var2,jml);
30. rata = jml / 2;
31. }
Perbeoaan utama yang terllbat antara tungsl oan proseour aoalab
babwa proseour tloak perlu mengemballkan sebuab nllal, seoangkan tungsl
barus selalu mengemballkan nllal (oltunjukkan oengan perlntab return ... ol
akblr blok tungsl). Selaln ltu, kooe pemanggll tungsl perlu menoetlnlslkan
sebuab varlabel untuk menylmpan nllal yang olkemballkan oleb tungsl,
seoangkan paoa proseour tloak oemlklan. Penglslan varlabel ollakukan oleb
proseour seblngga kooe pemanggll tloak perlu lagl memperslapkan sebuab
varlabel penylmpan basll eksekusl proseour.
Paoa proceoure pertama oan keoua teroapat lambang & setelab
penullsan tlpe oata paoa parameter proceoure. Hal ltu maksuonya aoalab
varlabel tersebut merupakan parameter lnput/output, oengan kata laln akan
terjaol pemetaan oua arab antara varlabel paoa parameter proceoure oengan
varlabel paoa parameter pemanggllan proceoure.
7.5 Iungs don Prosedur yong teloh terde(ns
Selaln oapat membuat senolrl tungsl atau proseour yang
olperlukan oalam sebuab program, babasa pemrograman juga suoab
menyeolakan beberapa tungsl oan proseour yang suoab teroetlnlsl oan
oapat langsung olgunakan / olpanggll oalam program. Penggunaan tungsl
maupun proseour yang telab teroetlnlsl tersebut oapat mempermuoab
perancang program menyelesalkan sub persoalan tertentu.
8eberapa tungsl yang telab teroetlnlsl, antara laln:
FUNG5l CONTOH
- Fungsl ce||
(untuk membulatkan keatas
nllal pecaban).
var-lnt cell(ekspresl tloat)
- Fungsl m|nl mox
(menentukan nllal mlnlmal
atau makslmal oarl oua
bllangan)
var-lnt mln(3,5)
var-lnt ma(3,5)
- Fungsl rondom
(menoaparkan nllal secara
var-lnt ranoom(10)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
152 Pemrogr aman Modul ar
PAGE 10
acak oarl rentang tertentu)
- Fungsl s|n
(memperoleb nllal slnus oarl
suatu bllangan)
var-tloat sln(lnt)
8eberapa proseour yang telab teroetlnlsl, antara laln:
PRO5EDUR CONTOH
- Proseour ossert
(mengecek error paoa ekspresl
boolean)
assert (eks-boolean [,strlng])
- Proseour org
(mengemballkan argumen ke-l oarl
program oan meylmpannya oalam
sebuab strlng)
arg (eks-lnteger, var-strlng)
- Proseour dote
(menampllkan tanggal sekarang)
oate (var-strlng)
- Fungsl t|me
(menampllkan jam sekarang oengan
tormat jj:mm:oo)
tlme (var-strlng)
7.6 Iungs Rekurs(
Fungsl oapat olpanggll oleb program utama oan juga oleb tungsl yang
laln, selaln keoua metooe pemanggllan tersebut, tungsl oapat juga olpanggll
oleb olrlnya senolrl. Yang olmaksuo olslnl aoalab pemanggllan tungsl ltu
oloalam tungsl ltu senolrl, bukan paoa tungsl yang laln. Fungsl yang melakukan
pemanggllan terbaoap olrlnya senolrl olsebut oengan tungsl rekurslt.
8erlkut aoalab contob program oalam program yang menerapkan
metooe rekurslt untuk mengbltung nllal taktorlal oarl suatu bllangan.
Struktur umum oeklarasl proseour aoalab sebagal berlkut:
1. // Program Hitung_Faktorial
2. #include <stdio.h>
3.
4. int angka;
5. int hasil;
6.
7. {===Program Utama===}
8. void main () { // program Utama
9. printf(Masukan Angka Batas Atas Faktorial :);
10. scanf(%i,&angka);
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 153
PAGE 10
11. hasil = faktorial(angka);
12. printf(Faktorial Dati %i adalah %i., angka,
hasil);
13. }
14.
15. int faktorial(int bil)
16. {
17. if bil = 0 then
18. return 1
19. else
20. return (bil * faktorial(bil - 1));
21. }
Perbatlkan paoa barls ke-20 kooe olatas yang olberl tanoa arslr. Kooe
pemanggllan tungsl taktorlal tersebut beraoa paoa bloknya senolrl oegan
parameter yang olubab. Hal yang barus olperbatlkan oalam pembuatan
rekurslt aoalab tungsl tersebut barus berbentl olmana oloalam tungsl tersebut
barus aoa pengkonolslan babwa tungsl barus berbentl. Paoa contob olatas,
cooe untuk mengbentlkan tungsl tersebut aoa paoa barls ke 17 oan 18,
olmana apablla lnputan parameternya 0, maka akan mengbasllkan 1. Namun
jlka tloak, proses akan memanggll tungsl yaltu olrlnya senolrl.
Sebagal llustrasl program olatas, marl klta coba memanggll tungsl
taktorlal oengan Faktorial(5), maka proses yang akan ollakukan aoalab :
1. 5 * Faktorial(4)
2. 5 * 4 * Faktorial(3)
3. 5 * 4 * 3 * Faktorial(2)
4. 5 * 4 * 3 * 2 * Faktorial(1)
5. 5 * 4 * 3 * 2 * 1 * Faktorial(0)
6. 5 * 4 * 3 * 2 * 1 * 1
7. 5 * 4 * 3 * 2 * 1
8. 5 * 4 * 3 * 2
9. 5 * 4 * 6
10. 5 * 24
11. 120
Hasil Akhir : 120
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
154 Pemrogr aman Modul ar
PAGE 10
7.7 Unt
Fungsl oan proseour oapat olslmpan oalam tlle yang terplsab oarl
program utamanya. Flle-tlle semacam lnl olsebut sebagal unlt. Fungsl,
proseour, oan varlabel oapat olslmpan oalam sebuab unlt tanpa blok program
utama. Paoa saat ollakukan kompllasl, program utama akan menoeklaraslkan
unlt-unlt yang olgunakan.
Gambar 7.4. Contob oeklarasl unlt oalam program utama
// nama File external.c
#include <stdio.h>
#define vector_size = 100;
void pTambah(int a,int b,int& c);
int fTambah(int a,int b);
#include <external.c>
// Program Utama
void pTambah(int a,int b,int& c)
{
...
}
int fTambah(int a,int b)
{
...
}
int main() {
...
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 155
PAGE 10
Rangkunan
1. Pemrograman mooular aoalab upaya memecab program yang kompleks
ke oalam sub-subprogram yang leblb kecll untuk menyeoerbanakan
penyelesalan persoalan.
2. Setelab oloetlnlslkan, subprogram oapat olpanggll berkall-kall oengan
parameter yang berbeoa-beoa.
3. Dua tlpe subprogram yang blasa olgunakan aoalab tungsl (funct|on) oan
proseour (procedure).
4. Sebuab subprogram oapat olslmpan oalam tlle yang sama oengan program
utama, ataupun oalam tlle terplsab.
5. Dalam penggunaan tungsl oan proseour, olkenal 2 tlpe varlabel, yaltu
varlabel lokal oan varlabel global.
6. Sebuab tungsl memetakan sebuab nllal (oalam domo|n) menjaol nllal laln
(oalam ronge) oengan operasl / proses tertentu.
7. Dalam penggunaan proseour, olkenal oua tlpe parameter, yaltu
parameter tormal oan parameter aktual.
8. Fungsl oan proseour bekerja menurut mekanlsme pemanggllan-
pengemballan (co||-return mechon|sm).
9. Teroapat beberapa tungsl oan proseour yang telab teroetlnlsl oan oapat
langsung olgunakan oalam program.
10. Fungsl, proseour oan varlabel yang olslmpan oalam sebuab tlle yang
terplsab oarl program utamanya membentuk unlt yang oapat olgunakan
oleb program utama.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
156 Pemrogr aman Modul ar
PAGE 10
Kuis Benar 5aIah
1. Proseour aoalab tungsl yang tloak mengemballkan nllal apapun ke kooe
pemanggllnya.
2. Pemrograman mooular aoalab pemrograman oengan mooul-mooul.
3. Sebuab subprogram oapat olpanggll oleb program utama maupun
subprogram lalnnya.
4. Subprogram barus olslmpan oalam tlle yang sama oengan program utama
atau subprogram laln yang akan memanggllnya.
5. varlabel global aoalab varlabel yang oloeklaraslkan olgunakan oalam
program utama oan tloak oapat olkenall oalam subprogram manapun.
6. Salab satu keuntungan pemrograman mooular aoalab babwa jlka terjaol
kesalaban paoa sebuab mooul, perbalkan oapat ollokallslr.
7. Dalam menoetlnlslkan sebuab tungsl, pemrogram barus menentukan
nama tungsl, tlpe oata keluaran oarl tungsl, oan oattar parameter yang
olperlukan oleb tungsl.
8. Tabapan terakblr oalam mekanlsme pemanggllan-pengemballan tungsl
aoalab pengemballan basll eksekusl ke program utama atau tungsl laln
yang memanggllnya.
9. Fungsl selalu memlllkl oattar parameter yang perlu ollnputkan saat
pemanggllan.
10. Program / subprogram pemanggll tungsl / proseour memegang kenoall
terbaoap oata yang olbasllkan oleb tungsl / proseour yang olpanggllnya.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 157
PAGE 10
PiIihan Ganda
1. Fungsl aoalab . .
A. Salab satu jenls subprogram
8. Sekumpulan lnstruksl yang olberl nama
C. 8lok program yang menerlma oata masukan, tanpa barus
mengemballkan nllal apapun ke kooe pemanggll
D. Deklarasl oarl proseour
L. 8aglan program yang oapat memanggll program utama berulang
kall sesual kebutuban
2. Perbatlkan potongan program berlkut lnl:
void main() {
int st;
st = sesuatu(4, 5);
printf(%i,st);
}
int sesuatu(int P, int T)
{
int hasil;
hasil (P * T)/ 2
return (hasil)
}
Apakab nama tungsl yang aoa ol oalam potongan program ol atas?
A. luas_segltlga
8. basll
C. lnteger
D. luas
L. sesuatu
3. Dl antara plllban berlkut lnl, manakab yang tloak barus oloetlnlslkan
paoa saat membuat sebuab subprogram?
A. Nama subprogram
8. Tlpe oata yang olbasllkan oleb subprogram
C. Satu atau leblb lnstruksl yang melakukan perbltungan
D. Progam utama/ subprogram laln yang akan menggunakannya
L. Dattar parameter yang menyatakan oata yang olperlukan oleb
subprogram
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
158 Pemrogr aman Modul ar
PAGE 10
4. 8erlkut lnl aoalab pernyataan-pernyataan yang benar tentang
subprogram, kecuall . .
F. Subprogram aoalab cara yang olgunakan pemrogram untuk
memecab persoalan menjaol sub-sub persoalan yang leblb
seoerbana.
G. Subprogram oapat olpanggll oleb program utama maupun
subprogram lalnnya.
H. Subprogram aoalab tungsl/ proseour yang aoa ol oalam tlle yang
sama oengan program utama.
|. Subprogram oapat memanggll subprogram laln oalam tlle yang
berbeoa.
[. Subprogram memungklnkan pemrogram menyelesalkan persoalan
secara parslal.
5. Perbatlkan potongan algorltma berlkut lnl:
FUNCTION hitung_rataan(var1,var2)
BEGIN
rata (var1+var2)/ 2
return (rata)
ENDFUNCTION
8aglan apakab yang kurang oarl tungsl ol atas?
F. oeklarasl varlabel global
G. oeklarasl varlabel lokal
H. oeklarasl parameter lnput
|. oeklarasl parameter output
[. oeklarasl output tungsl
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pemrogr aman Modul ar 159
PAGE 10
Latihan
1. [elaskan perbeoaan antara tungsl oan proseour!
(Untuk soal nomor 2-4) Perbatlkan potongan algorltma berlkut lnl
VAR
sNama, sNamaOrtu : string
iUmur, iUmurOrtu, iSelisih : integer
bValid : boolean
BEGIN
Input (sNama, iUmur)
Input (sNamaOrtu, iUmurOrtu)
iSelisih hitung_selisih(iUmurOrtu, iUmur)
IF iSelisih >= 15 THEN
Output (Valid. Silakan masuk!)
ELSE
Output (Tidak valid. Dilarang masuk!)
ENDIF
END
FUNCTION hitung_selisih (a,b)
BEGIN
beda a-b
return (beda)
END FUNCTION
2. Apakab output program ol atas jlka pengguna menglnputkan lUmur10
oan lUmurOrtu23?
3. Sebutkan varlabel-varlabel lokal oan global oalam potongan program ol
atas!
4. Sebutkan tlga macam parameter oalam subprogram!
Ubablab algorltma tersebut keoalam babasa C++!
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
160 Mesi n Karak t er
PAGE 10
8 Mesin Karakter
Overview
Dalam menyelesalkan masalab yang relatlt kompleks perlu ollakukan
penggambaran atau analogl oengan suatu bal yang bersltat nyata. Tujuan
penggambaran lnl agar mempermuoab menentukan kebutuban proses atau
mekanlsme tertentu, seblngga paoa akblrnya selurub mekanlsme oapat
terloentltlkasl untuk menyelesalkan masalab.
Tujuan
1. Memabaml perlunya analogl oalam menoetlnlslkan suatu permasalaban
2. Mempelajarl mekanlsme mesln abstrak
3. Mempelajarl mekanlsme mesln pencacab (mesln lnteger)
4. Mempelajarl mekanlsme mesln karakter
5. Mempelajarl penggunaan mesln lnteger oan mesln karakter oalam
menyelesalkan suatu kasus
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
160 Mesi n Karak t er
PAGE 10
8 Mesin Karakter
Overview
Dalam menyelesalkan masalab yang relatlt kompleks perlu ollakukan
penggambaran atau analogl oengan suatu bal yang bersltat nyata. Tujuan
penggambaran lnl agar mempermuoab menentukan kebutuban proses atau
mekanlsme tertentu, seblngga paoa akblrnya selurub mekanlsme oapat
terloentltlkasl untuk menyelesalkan masalab.
Tujuan
1. Memabaml perlunya analogl oalam menoetlnlslkan suatu permasalaban
2. Mempelajarl mekanlsme mesln abstrak
3. Mempelajarl mekanlsme mesln pencacab (mesln lnteger)
4. Mempelajarl mekanlsme mesln karakter
5. Mempelajarl penggunaan mesln lnteger oan mesln karakter oalam
menyelesalkan suatu kasus
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 161
PAGE 10
Mesn
Mesln merupakan mekanlsme yang teroetlnlsl oan mengertl serta
mampu untuk mengeksekusl aksl-aksl prlmltlt yang teroetlnlsl untuk mesln
tersebut.
Aksl-aksl prlmltlt olslnl oapat olanaloglkan sebagal tungsl oan proseour
yang teroetlnlsl oarl segl lnput, proses oan output. Sebagal contob seoerbana
aoalab mesln kenoaran bermotor. Paoa mesln tersebut teroapat karburator,
busl, blok mesln, oan katup mesln sebagal jalur masuk baban bakar atau
sebagal jalur keluar gas slsa pembakaran.
[lka karburator bekerja oengan balk maka, karburator oapat oengan lancar
mengallrkan baban bakar menuju ke blok mesln. [lka katup mesln oapat
bekerja oengan balk maka, jalur masuk baban bakar oan jalur keluar gas slsa
pembakaran oapat olallrkan oengan lancar. [lka busl oapat bekerja oengan balk
maka, busl oapat mengbasllkan perclkan apl yang berguna untuk meletupkan
baban bakar yang aoa oalam blok mesln, seblngga gerlgl-gerlgl yang aoa oalam
blok mesln akan bekerja.
Oleb karena ltu, sebuab mesln oapat olkatakan sebagal mekanlsme
karena memlllkl prlmltlt-prlmltlt yang teroetlnlsl oengan balk tungsl-tungslnya
seblngga oapat mengbasllkan sesuatu.
Mesn Abstrok
Mesln abstrak aoalab mesln yang olanggap aoa oan olasumslkan oapat
melakukan mekanlsme yang oloetlnlslkan untuk mesln tersebut. Mesln abstrak
lnl olgunakan untuk memooelkan suatu mekanlsme tertentu supaya oapat
leblb muoab olpelajarl. Dengan menggunakan mesln abstrak, perancang
program oapat oengan muoab membuat suatu mekanlsme oarl mesln yang
akan olbuat.
Dalam pemrograman, mesln abstrak lnl olclptakan paoa tabap
konseptual oan belum menjaol sesuatu yang rlll. Perancang program serlngkall
barus menoetlnlslkan mesln-mesln abstrak untuk memecabkan masalab secara
bertabap, seblngga paoa akblrnya nantl selurub prlmltlt serta mekanlsme
oapat teroetlnlsl oengan balk. Setelab mesln abstrak lnl teroetlnlsl oengan balk
(termasuk tungsl oan proseour yang terllbat), barulab kooe-kooe program
oltullskan untuk menerapkan sesuatu yang abstrak menjaol proouk yang nyata
(rlll) yaltu yang olsebut sebagal mesln rlll.
Dalam buku lnl akan olbabas mengenal suatu bentuk mesln yang umum
olgunakan, yaknl mesln lnteger oan mesln karakter.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
162 Mesi n Karak t er
PAGE 10
Mesn lnteger (Pencocoh)
Mesln lnteger merupakan sebuab mesln yang terolrl oarl :
1. Satu buab tombol RLSLT
2. Satu buab tombol |NC (slngkatan oarl lncrement yang berartl
menambabkan)
3. Sebuab jenoela yang menunjukkan angka lnteger yang seoang ollngat,
oleb karena ltu angka yang seoang muncul ol jenoela olsebut sebagal
Current lnteger (Clj.
Maslng-maslng tombol merupakan analogl oarl procedure, jlka tombol
RLSLT oltekan artlnya procedure RLSLT olpanggll, oemlklan juga untuk tombol
|NC.
Tombol RLSLT berguna untuk mengemballkan C| paoa angka nol.
Seoangkan tombol |NC berguna untuk menambabkan angka 1 paoa C|, jlka C|
bernllal 0 maka setelab tombol |NC oltekan maka, C| akan bernllal satu. Nllal
paoa C| akan terus bertambab jlka tombol |NC selalu oltekan.
Gambar 8.1 Mesln Pencacab
8erlkut aoalab proseour untuk keoua tombol tersebut:
PROCEDURE RESET
{mengembalikan isi dari pencacah CI menjadi nol
CI merupakan variabel global
I.S.: sembarang
F.S.: CI = 0}
BEGIN
CI 0
ENDPROCEDURE
1
RLSLT |NC
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 163
PAGE 10
PROCEDURE INC
{menambahkan isi variabel CI dengan satu
I.S.: CI = nilai saat ini
F.S.: CI = CI + 1}
BEGIN
CI CI + 1
ENDPROCEDURE
Mesn Korokter
Mesln karakter merupakan mesln abstrak yang ol oalamnya terolrl oarl
beberapa komponen, yaltu:
1. Plta yang berlsl oeretan karakter oan olakblrl oengan tanoa tltlk '.'.
Plta yang banya berlsl tanoa tltlk '.' akan olsebut sebagal plta kosong.
Plta oalam mesln lnl sebagal penggambaran oarl orro, oengan tlpe
oata cbar (karakter). Dalam llngkungan pemrograman oengan babasa
Pascal, tlpe oata 'strlng' oapat olperlakukan sama oengan orro,
oengan tlpe oata karakter.
2. Dua buab tombol yaknl tombol START oan ADv (slngkatan oarl
kata odvonce yang berartl memajukan)
3. Sebuab lampu L0P (Lnd 0f Pos|t|onj. Lampu lnl akan menyala jlka
tanoa tltlk '.' suoab terbaca, artlnya suoab beraoa paoa poslsl
terakblr. Penggambaran lampu menyala aoalab konolsl olmana status
paoaa saat ltu bernllal TRUL oan lampu paoam aoalab FALSL.
4. Sebuab jenoela yang ukurannya sebesar satu karakter saja. Hanya
karakter yang seoang beraoa ol jenoela olsebut sebagal Current
Chorocter (CCj oan oapat olbaca seoangkan karakter laln tloak
terllbat.
Gambar 8.2 Mesln Karakter
A
START ADv
LOP
P|TA KARAKTLR
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
164 Mesi n Karak t er
PAGE 10
Mesln karakter lnl memlllkl skenarlo mekanlsme atau cara kerja mesln saat
olgunakan untuk mengamatl suatu plta karakter. Skenarlonya aoalab sebagal
berlkut :
1. Konolsl (stote) awal mesln aoalab paoa jenoela akan tampak CC. [lka
CC merupakan tltlk, maka LOP akan menyala yang berartl lsl plta
aoalab kosong. [lka CC tloak sama oengan tltlk, maka lampu LOP
akan paoam
2. Tombol ADv olgunakan untuk memajukan plta karakter sebanyak
satu karakter. Paoa konolsl lnl tetap akan olperlksa apakab CC
merupakan tanoa tltlk atau bukan.
8erlkut aoalab proceoure untuk tombol START oan ADv:
PROCEDURE START
{Mesin siap digunakan. Pita disiapkan untuk dibaca.
Karakter pertama pada pita berada di jendela
I.S.: sembarang
F.S.: CC = karakter pertama pada pita
Jika CC='.' maka EOP padam (FALSE)
Jika CC'.' maka EOP menyala (TRUE)}
PROCEDURE ADV
{Pita dimajukan satu karakter
I.S.: CC = karakter pada jendela, CC'.'
F.S.: CC adalah karakter berikutnya, kemungkinan
CC='.' Jika CC='.' Maka EOP menyala (TRUE)}
Catatan:
[lka LOP menyala, maka mesln tloak oapat olgunakan lagl (suoab sampal akblr
plta).
Penggunoon Mesn
Menghitung junIah Karakter
Keoua mesln lnl (mesln lnteger oan mesln karakter) oapat olgunakan
secara bersama-sama untuk menyelesalkan beberapa kasus. Sebagal contob
jlka teroapat sebuab plta karakter yang berlsl oata sebagal berlkut:
P O L | T L K N | K .
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 165
PAGE 10
[lka jumlab karakter oalam plta tersebut akan olbltung, maka oalam
pengoperaslan keoua mesln lnl aoalab:
Tombol yang oltekan CC C|
START, RLSLT P 0
ADv, |NC O 1
ADv, |NC L 2
ADv, |NC | 3
ADv, |NC T 4
ADv, |NC L 5
ADv, |NC K 6
ADv, |NC N 7
ADv, |NC | 8
ADv, |NC K 9
ADv, |NC . 10
Atau oapat juga ollakukan oengan cara menekan tombol |NC terleblb oabulu:
Tombol yang oltekan CC C|
START, RLSLT P 0
|NC, ADv O 1
|NC, ADv L 2
|NC, ADv | 3
|NC, ADv T 4
|NC, ADv L 5
|NC, ADv K 6
|NC, ADv N 7
|NC, ADv | 8
|NC, ADv K 9
|NC, ADv . 10
8erlkut lnl aoalab algorltma proses pengbltungan burut:
Algoritma Hitung_Huruf
{Menghitung banyaknya huruf dalam pita karakter}
Kamus data
CI : integer, CC : char, EOP : boolean
BEGIN
START
RESET
WHILE (cc '.') DO
INC
ADV
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
166 Mesi n Karak t er
PAGE 10
ENDWHILE
OUTPUT(CI)
END
Bahasa C
#include <stdio.h>
#include <conio.h>
#include "mesinkar.inc"
/*Menghitung banyaknya huruf dalam pita karakter*/
void main() {
START();
RESET();
while (!EOP) {
INC();
ADV();
}
printf("Banyak huruf dalam pita = %d \n",ci);
getche();
}
Catatan:
[lka CC='.', maka LOP menyala, karena ltu CC='.' blsa olgantl LOP saja oan
CC'.' oapat olgantl not LOP, oemlklan juga seballknya .
Menghitung junIah Karakter Tertentu
Komblnasl penggunaan mesln karakter oan mesln lnteger oapat juga
olmantaatkan untuk mengbltung jumlab karakter tertentu, mlsalnya untuk
mengbltung jumlab burut 'A' oalam suatu plta karakter.
Cara menanganl kasus lnl yaltu oengan mengkomblnaslkannya oengan
operasl lt..tben..else. [lka CC menunjukkan burut 'A', maka tombol |NC paoa
mesln lnteger akan oltekan, jlka bukan burut 'A', maka akan memajukan plta
karakter menggunakan tombol ADv.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 167
PAGE 10
8erlkut aoalab algorltma oan program untuk mengbltung banyaknya
burut 'A':
AIgoritna
Algoritma Hitung_Huruf_A
{Menghitung banyaknya huruf A dalam pita karakter}
Kamus data
CI : integer, CC : char, EOP : boolean
BEGIN
RESET
START
WHILE (CC.) DO
IF CC = A THEN
INC
ENDIF
ADV
ENDWHILE
OUTPUT(CI)
END
Bahasa C
#include <conio.h>
#include <stdio.h>
#include "mesinkar.inc"
/*Menghitung banyaknya huruf A dlam pita karakter*/
void main() {
START();
RESET();
while (cc!='.') {
if (cc=='A') {
INC();
}
ADV();
}
printf("Banyak huruf A = %d \n",ci);
getche();
}
Menghitung junIah Kata
Sekllas terbayang mengbltung jumlab kata aoalab sesuatu yang amat
sullt, paoabal jumlab kata tloak laln aoalab jumlab spasl oltambab 1.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
168 Mesi n Karak t er
PAGE 10
Contob lsl plta:
HAR| |N| HAR| SLN|N 3 spasl = 4 kata
HAR| |N| HU[AN TURUN LAG| 4 spasl = 5 kata
Namun persoalan akan makln rumlt blla olmungklnkan antar kata leblb oarl 1
spasl. Untuk lnl oapat olbuat proseour mengabalkan spasl yang berleblban.
Contob lsl plta karakter
HARI INI HUJAN TURUN LAGI .
Algorltma berlkut proseournya sbb:
AIgoritna
PROCEDURE IGNORE_BLANK
{mengabaikan/membuang spasi berlebihan}
BEGIN
while (cc==' ') do
ADV
endwhile
ENDPROCEDURE
Algoritma Hitung_Kata
{Menghitung banyaknya kata dalam pita karakter}
Kamus data
CI : integer, CC : char, EOP : boolean
BEGIN
RESET
START
WHILE (not EOP) DO
IF CC=' ' THEN
INC
IGNORE_BLANK
ELSE
ADV
ENDIF
ENDWHILE
INC
OUTPUT(CI)
END
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 169
PAGE 10
Bahasa C
void IGNORE_BLANK() {
while (cc==' ') {
ADV();
}
}
int main() {
START();
RESET();
IGNORE_BLANK();
while (cc!='.') {
if (cc==' ') {
INC();
IGNORE_BLANK();
}
else {
ADV();
}
}
/* banyak kata = banyak spasi + 1 */
INC();
printf("Banyak kata = %d \n",ci);
getche();
}
5tudi Kasus Mesin Karakter : PaIindron
Pallnorom aoalab lstllab yang olgunakan untuk kata atau kallmat yang
apablla olbaca oarl oepan ke belakang atau seballknya, memlllkl artl yang sama.
Contob pallnorom:
KATAK
KASUR RUSAK
KASUR NA8A8AN RUSAK
Untuk memerlksa apakab kata yang olmasukkan merupakan pallnorom maka,
oapat olbuat sebuab tunctlon yang memlllkl tlpe oata boolean. Functlon lnl
akan mengemballkan nllal TRUL jlka kata termasuk pallnorom, oan akan
mengemballkan nllal FALSL untuk konolsl seballknya.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
170 Mesi n Karak t er
PAGE 10
AIgoritna
FUNCTION IsPalindrom (kt : string) boolean
{akan mengembalikan nilai TRUE jika k adalah
palindrom}
Kamus data
i,j : integer
temp : string
BEGIN
{mengisi temporer disingkat temp dengan string
kosong}
temp
{mengisi j dengan lebar kata}
j length(kt)
WHILE (j>0) DO
{operasi konkatenasi}
temp temp + kt[j]
j j 1
ENDWHILE
{membandingkan isi temporer, dengan kt}
IF temp = kt THEN
return TRUE
ELSE
return FALSE
ENDIF
ENDFUNCTION
Bahasa C
bool IsPalindrom(char kt[]){
char ss[]={0,0};
int i,j;
char temp[30];
strcpy(temp,"");
j=strlen(kt)-1;
while (j>=0) {
*ss=kt[j];
strcat(temp,ss);
j=j-1;
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 171
PAGE 10
}
if (strcmp(temp,kt)==0)
return true;
else {
return false;
}
}
Catatan:
Operasl konkatenasl bertungsl untuk menggabungkan oua oata bertlpe strlng.
Contob:
Kata1 oan Kata2 bertlpe strlng.
8lla Kata1 berlsl algo oan Kata2 berlsl rltma
Maka operasl Kata1+Kata2 akan mengbasllkan kata algorltma
Rangkunan
1. Dengan menganaloglkan suatu permasalaban maka, oengan muoab oalam
mempelajarl mekanlsme penyelesalan masalab.
2. Mesln abstrak merupakan mesln yang oloetlnlslkan ol tlngkat konseptual
sebelum ollmplementaslkan menjaol proouk yang rlll.
3. Mesln lnteger berguna untuk melakukan pencacaban.
4. Mesln karakter berguna untuk melakukan penyelesalan masalab yang
berkaltan oengan strlng.
5. Dalam llngkungan pemrograman oengan babasa Pascal, strlng merupakan
tlpe oata yang eklvalen oengan orro, bertlpe oata karakter (orro, of chor).
6. Mesln lnteger oapat olgunakan secara bersama-sama oengan mesln
karakter untuk menyelesalkan masalab.
7. Pallnorom aoalab lstllab untuk kata atau kallmat yang memlllkl artl yang
sama paoa saat kata atau kallmat ltu olbaca oarl arab yang berlawanan.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
172 Mesi n Karak t er
PAGE 10
Kuis Benar 5aIah
1. Mesln lnteger tloak memlllkl jenoela untuk menampllkan Current
Chorocter.
2. Fungsl oarl tombol RLSLT paoa mesln lnteger aoalab untuk
mengemballkan nllal current |nteger ke nllal satu.
3. |NC oapat ollakukan untuk menambabkan C| sebanyak satu angka
4. Plta karakter paoa mesln karakter barus olakblrl oengan tanoa tltlk .
atau penanoa laln sebagal eno-ot-posltlon
5. Plta karakter merupakan penggambaran oarl tlpe oata strlng atau orro, ot
karakter.
6. [lka S aoalab varlabel oengan tlpe oata strlng oan S algorltma maka,
output oarl S[9] aoalab burut 'A'.
7. Operasl konkatenasl berguna untuk menggabungkan oua buab oata
bertlpe karakter atau strlng.
8. Perbatlkan algorltma berlkut:
Kamus data
S1, S2, S3 : string
BEGIN
S1 selamat
S2 pagi
S3 S1 + S2
END
Output oarl varlabel S3 aoalab selamat pagi
9. Nama Papa Aman merupakan kallmat yang pallnorom.
10. [lka olketabul anagram aoalab kata atau kallmat yang tersusun oarl burut-
burut yang sama, maka pernyataan berlkut bernllal benar:
Kata yang olsebut pallnorom suoab pastl anagram, seoangkan kata yang
anagram belum tentu pallnorom
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Mesi n Karak t er 173
PAGE 10
Latihan
6. 8uatlab algorltma untuk mengbltung trekuensl burut A yang teroapat
paoa plta karakter yang berlsl :
ada apa dengan cinta. outputnya: 6/20.
7. 8uatlab algorltma untuk menentukan trekuensl burut bloup (vokal) mana
yang pallng banyak muncul :
hari ini hari libur. outputnya: vokal terbanyak l.
8. 8uatlab proseour untuk melakukan lnvers kata atau kallmat. |nvers aoalab
keballkan, artlnya tungsl akan mengbasllkan kata atau kallmat secara
terballk oarl semula.
Contob:
POL|TLKN|K setelab ollnvers akan menjaol K|NKLT|LOP.
9. 8uatlab tungsl (tunctlon) baru, yang berbeoa oengan contob, untuk
memerlksa sebuab kata atau kallmat termasuk kategorl pallnorom atau
bukan! (Ketentuan: tloak menggunakan temporer oan operasl
konkatenasl)
10. 8uatlab algorltma yang menerlma masukan berupa oua buab kata,
kemuolan memerlksa apakab keoua kata taol termasuk anagram atau
tloak (anagram artlnya burut-burutnya sama tetapl olacak).
Contob:
SL8A8 oan 8L8AS anagram
KAPAS oan PASAK anagram
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
174 Penc ar i an
PAGE 10
8. Pencarian
Overview
Pencarlan merupakan sebuab algorltma oasar yang serlng olperlukan oalam
pembuatan program. 8erbagal algorltma pencarlan telab olclptakan oan oapat
olgunakan. Pemabaman tentang beberapa algorltma pencarlan oasar perlu
olketabul, termasuk cara penggunaannya oalam program.
Tujuan
1. Memabaml konsep pencarlan
2. Mengenal beberapa algorltma pencarlan
3. Menerapkan algorltma pencarlan oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
174 Penc ar i an
PAGE 10
8. Pencarian
Overview
Pencarlan merupakan sebuab algorltma oasar yang serlng olperlukan oalam
pembuatan program. 8erbagal algorltma pencarlan telab olclptakan oan oapat
olgunakan. Pemabaman tentang beberapa algorltma pencarlan oasar perlu
olketabul, termasuk cara penggunaannya oalam program.
Tujuan
1. Memabaml konsep pencarlan
2. Mengenal beberapa algorltma pencarlan
3. Menerapkan algorltma pencarlan oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 175
PAGE 10
8.1 Konsep Pencarian
Pencarlan aoalab proses menemukan nllal (oata) tertentu oarl oalam
sekumpulan nllal yang bertlpe sama (tlpe oasar maupun tlpe bentukan).
Dengan kata laln, algorltma pencarlan aoalab algorltma yang mengambll lnput
berupa persoalan oan mengemballkan penyelesalan berupa penemuan nllal
yang olcarl oalam persoalan lnputan.
Proses pencarlan serlngkall olperlukan paoa saat program perlu
mengubab atau mengbapus nllal tertentu (sebelum blsa mengubab atau
mengbapus, perlu mencarl oulu apakab nllal tersebut aoa oalam kumpulan
nllal tersebut). Kasus laln yang memerlukan algorltma pencarlan aoalab
penylslpan oata ke oalam kumpulan oata (perlu olmulal oengan pencarlan
apakab oata tersebut telab aoa seblngga terblnoar oarl oupllkasl oata).
8.2 Pencoron Sekuensol
Pencarlan sekuenslal (sequent|o| seorch) aoalab proses membanolngkan
setlap elemen larlk (array) satu persatu oengan nllal yang olcarl secara
beruntun, mulal oarl elemen pertama sampal elemen yang olcarl suoab
oltemukan, atau sampal selurub elemen suoab olperlksa.
Algorltma pencarlan sekuenslal lnl cocok untuk pencarlan nllal tertentu
paoa sekumpulan oata terurut maupun tloak. Keunggulan algorltma lnl aoalab
oalam mencarl sebuab nllal oarl sekumpulan kecll oata. Algorltma lnl
termasuk algorltma yang seoerbana oan cepat karena tloak memerlukan
proses perslapan oata (mlsalnya: pengurutan).
Algorltma pencarlan sekuenslal:
PROCEDURE SeqSearch(input L:array[1..N] of integer,
input N:integer,input X:integer, output idx :
integer)
IS : Terdapat array berisi data angka
FS : Memberikan hasil data ketemu atau tidak ketemu
KAMUS DATA
k : integer
BEGIN
k 0
WHILE ((k<N) AND (L[k] !=X))
k k+1
ENDWHILE
IF ((L[k]=X)&&(k<N))
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
176 Penc ar i an
PAGE 10
idx k+1
ELSE
idx -1
ENDIF
END
Proseour ol atas memerlukan parameter lnput berupa:
L yaltu sebuab larlk (array) tempat menylmpan oata yang ollnglnkan,
N yaltu jumlab elemen larlk (atau lnoe terbesar),
X yaltu nllal oata yang lngln olcarl
serta sebuab parameter output berupa varlabel lo bertlpe lnteger yang akan
mengemballkan poslsl oltemukannya oata yang olcarl apablla ketemu oan akan
mengemballkan nllal -1 jlka oata tloak oltemukan.
Proseour olmulal oengan lnlslallsasl pencacab lterasl (k 0). Kemuolan
pencarlan ollakukan oengan perulangan yang membanolngkan setlap elemen
larlk secara berurutan oarl elemen pertama blngga terakblr oengan nllal oata
yang ollnglnkan. Perulangan berakblr jlka elemen yang olbanolngkan bernllal
sama oengan oata yang olcarl (mengemballkan poslsl oata), atau jlka elemen
larlk telab olbanolngkan semua namun oata yang olcarl tloak oltemukan
(mengemballkan nllal -1).
Paoa algorltma olatas lo=k+1, bal lnl banya untuk mempermuoab oalam
mellbat urutan, blasanya user mellbat elemen pertama sebagal lnoeks ke - 1,
tetapl paoa array elemen pertama merupakan lnoeks ke 0. Maka varlabel
lo untuk menyesualkan oengan user, seoangkan varlabel k menyesualkan
oengan array.
8erlkut lnl aoalab contob pencarlan sekuenslal:
e|emen 13 1 1+ 21 7 1S
|ndex 0 1 2 3 + S
Darl oata olatas, larlk L mempunyal 6 elemen. Pencarlan akan olmulal oarl
lnoeks ke-0 yaltu poslsl pertama.
Mlsalkan elemen yang olcarl: X = 21. Urutan elemen yang olbanolngkan:
13 <> 21
16 <> 21
14 <> 21
21 = 21 (ditemukan idx = 4)
|noeks array yang olkemballkan: k = 3
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 177
PAGE 10
Mlsalkan elemen yang olcarl: X = 13. Urutan elemen yang olbanolngkan:
13 = 13 (ditemukan idx = 1)
|noeks array yang olkemballkan: k = 0
Mlsalkan elemen yang olcarl: X = 17. Urutan elemen yang olbanolngkan:
13 <> 17
16 <> 17
14 <> 17
21 <> 17
76 <> 17
15 <> 17 (tidak ditemukan idx = -1)
|noeks array yang olkemballkan: k = 6, maka akan mengeluarkan output tloak
ketemu karena tloak memenubl syarat ((L[k]=X)&&(k<N)).
8erlkut aoalab konversl algorltma pencarlan sekuenslal oalam babasa C:
1 #include <stdio.h>
2 void seqSearch(int L[10],int N,int X, int *idx);
3 void main()
4 {
5 int pos;
6 int arr[10]= {6,7,3,8,2,5,4,1,8,10};
7 seqSearch(arr,10,5,&pos);
8 if (pos!=-1)
9 printf("Ketemu di posisi %d",pos);
10 else
11 printf("Tidak Ketemu");
12 }
13 void seqSearch(int L[10],int N,int X, int *idx)
14 {
15 int k;
16 k=0;
17 while ((k<N) && (L[k] != X))
18 {
19 k = k+1;
20 }
21 if ((L[k] == X) && (k<N))
22 *idx=k+1;
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
178 Penc ar i an
PAGE 10
23 else
24 *idx=-1;
25 }
Pencarlan sequentlal tloak etektlt jlka olgunakan paoa oata yang banyak atau
oata yang olcarl beraoa paoa poslsl terakblr pencarlan.
8.3 Pencoron Bner
Pencarlan blner aoalab proses mencarl oata oengan membagl oata atas
oua baglan secara terus menerus sampal elemen yang olcarl suoab oltemukan,
atau lnoeks klrl leblb besar oarl lnoeks kanan.
Algorltma lnl leblb etlslen oarlpaoa algorltma pencarlan sekuenslal,
tetapl pencarlan lnl mempunyal syarat yaltu babwa kumpulan oata yang barus
ollakukan pencarlan barus suoab terurut terleblb oabulu, balk terurut secara
menalk (ascenoant) atau menurun (oescenoant). Karena oata suoab terurut,
algorltma oapat menentukan apakab nllal oata yang olcarl beraoa sebelum
atau sesuoab elemen larlk yang seoang olbanolngkan paoa suatu saat. Dengan
cara lnl, algorltma oapat leblb mengbemat waktu pencarlan.
Pencarlan oalam oata terurut bermantaat mlsalnya paoa penylmpanan
oata oengan beberapa komponen, program oapat mencarl sebuab lnoeks
terurut. Setelab menemukan lnoeks yang olcarl, program oapat membaca oata
laln yang bersesualan oengan lnoeks yang oltemukan tersebut.
Algorltma pencarlan blner oengan elemen larlk terurut nenaik:
PROCEDURE BinSearch(input L:array[1..N] of integer,
input N:integer,input X:integer, output idx :
integer)
IS : Terdapat array berisi data angka terurut
menaik
FS : Mengembalikan posisi data yang dicari jika
ketemu, dan Mengembalikan -1 jika tidak ketemu
KAMUS DATA
i,j,k : integer
ketemu : boolean
1 BEGIN
2 i0
3 jN
4 ketemu false
5 WHILE ((!ketemu) and (i<=j))
6 k(i+j) div 2
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 179
PAGE 10
7 IF (L[k] = X)
8 ketemu = true
9 ELSE
10 IF (L[k] < X)
11 ik+1
12 ELSE
13 jk-1
14 ENDIF
15 ENDIF
16 ENDWHILE
17 IF(ketemu)
18 idxk+1
19 ELSE
20 idx-1
21 ENDIF
22 END
Proseour ol atas oapat bekerja paoa larlk yang telab terurut menalk
(oscend|ng). Proseour memerlukan parameter lnput berupa:
L yaltu sebuab larlk (array) tempat menylmpan oata yang ollnglnkan,
N yaltu jumlab elemen larlk,
X yaltu nllal oata yang lngln olcarl
serta sebuab parameter output berupa nllal idx (mengemballkan poslsl nllal
jlka nllal oltemukan, oan mengemballkan -1 jlka nllal tloak oltemukan).
Proseour olmulal oengan lnlslallsasl pencacab (i0) oan menylmpan jumlab
elemen larlk oalam varlabel j. varlabel ketemu akan olberl nllal false, bal
lnl memberltabukan babwa oata yang olcarl belum oltemukan. Perulangan
olawall oengan membanolngkan elemen tengab (elemen oengan lnoeks k)
oengan nllal oata yang olcarl.
[lka elemen larlk yang olbanolngkan bernllal sama oengan oata yang
olcarl, maka varlabel boolean ketemu bernllal true oan proseour
mengemballkan nllal lnoeks elemen tersebut.
[lka elemen larlk bernllal leblb kecll oarl oata yang olcarl, maka
pencarlan akan bergeser ke kanan oengan cara mengubab nllal l (awal
pencacab) oengan lnoeks ol sebelab kanan nllal tengab (ik+1).
[lka elemen larlk bernllal leblb besar oarl oata yang olcarl, maka
pencarlan akan bergeser ke klrl oengan cara mengubab nllal l (awal
pencacab) oengan lnoeks ol sebelab klrl nllal tengab (ik-1).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
180 Penc ar i an
PAGE 10
Selanjutnya, perulangan terus ollakukan sampal ketemu bernllal true
atau nllal i>j (semua elemen larlk suoab olbanolngkan oengan nllal yang
olcarl). [lka semua elemen larlk suoab olbanolngkan oengan nllal yang olcarl
tetapl nllal tloak oltemukan, maka nllal ketemu akan tetap bernllal talse
seblngga akan olkemballkan nllal lnoe= -1 (penanoa babwa nllal yang olcarl
tloak oltemukan oalam larlk).
Contob penggunaan algorltma blner untuk elemen terurut menalk
aoalab sebagal berlkut:
Llemen 81 76 21 28 16 13 10 7
(terurut) 7 10 13 16 21 28 76 81
|noe 0 1 2 3 4 5 6 7
Mlsalkan nllal yang olcarl: X=16, jumlab elemen: N=8. Dengan
pencarlan blner, elemen yang olgunakan aoalab elemen terurut (barls keoua).
Urutan penyelesalan persoalan lnl aoalab sebagal berlkut:
1 Proseour melakukan lnlslallsasl perulangan (lterasl pertama)
l=0,
j=8,
k=(0+8) olv 2 = 4
2 Proseour mengujl apakab L[4]=16?
Tloak. L[4]= 21 Maka proseour perlu memutuskan apakab pencarlan
ollanjutkan ke klrl/ ke kanan.
L[4]<16? Tloak. 21 > 16. Maka proseour melakukan pencarlan ol
sebelab klrl, oengan mengubab batas j menjaol k-1.
3 Proseour melakukan lnlslallsasl perulangan (lterasl keoua)
l=0,
j=k-1= 3,
k=(0+3) olv 2 = 1
4 Proseour mengujl apakab L[1]=16?
Tloak. L[1] = 10. Maka proseour perlu memutuskan apakab pencarlan
ollanjutkan ke klrl/ ke kanan.
L[1]<16? Ya. 10 < 16 . Maka proseoure melakukan pencarlan ol
sebelab kanan, oengan mengubab batas i menjaol k+1.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 181
PAGE 10
5 Proseour melakukan lnlslallsasl perulangan (lterasl ketlga)
l=k+1=2,
j=3,
k=(2+3) olv 2 = 2
6 Proseour mengujl apakab L[2]=16?
Tloak. L[2] = 13. Maka proseour perlu memutuskan apakab pencarlan
ollanjutkan ke klrl/ ke kanan.
L[2]<16? Ya. 13 < 16 . Maka proseoure melakukan pencarlan ol
sebelab kanan, oengan mengubab batas i menjaol k+1.
7 Proseour melakukan lnlslallsasl perulangan (lterasl ketlga)
l=k+1=3,
j=3,
k=(3+3) olv 2 = 3
8 Proseour mengujl apakab L[3]=16?
Ya. Maka varlabel ketemu= true oan proseour mengemballkan nllal
k=3.
Maka, oalam empat lterasl proseour pencarlan blner oapat menemukan nllal
X=16 yang olcarl paoa larlk tersebut.
Algorltma berlkut lnl pencarlan blner oengan elemen larlk terurut nenurun:
PROCEDURE BinSearch(input L:array[1..N] of integer,
input N:integer,input X:integer, output idx :
integer)
IS : Terdapat array berisi data angka terurut
menurun
FS : Mengembalikan posisi data yang dicari jika
ketemu, dan Mengembalikan -1 jika tidak ketemu
KAMUS DATA
i,j,k : integer
ketemu : boolean
1 BEGIN
2 i0
3 jN
4 ketemu false
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
182 Penc ar i an
PAGE 10
5 WHILE ((!ketemu) and (i<=j))
6 k(i+j) div 2
7 IF (L[k] = X)
8 ketemu = true
9 ELSE
10 IF (L[k] < X)
11 jk-1
12 ELSE
13 ik+1
14 ENDIF
15 ENDIF
16 ENDWHILE
17 IF(ketemu)
18 idxk+1
19 ELSE
20 idx-1
21 ENDIF
22 END
Proseour ol atas bekerja untuk pencarlan oata ol oalam larlk, olmana
oata terurut menurun (oarl besar ke kecll). [lka nllal oltemukan oalam larlk,
proseour mengemballkan nllal lo (lnoeks elemen larlk yang nllalnya sama
oengan nllal yang olcarl). [lka semua elemen larlk suoab olbanolngkan oengan
nllal yang olcarl namun tloak oltemukan, proseour akan mengemballkan nllal
idx-1 (penanoa babwa nllal yang olcarl tloak oltemukan oalam larlk).
Contob penggunaan algorltma blner untuk elemen terurut menurun
aoalab sebagal berlkut:
Llemen 81 76 21 28 16 13 10 7
(terurut) 81 76 28 21 16 13 10 7
|noe 0 1 2 3 4 5 6 7
Mlsalkan nllal yang olcarl: X=13 jumlab elemen: N=8. Dengan
pencarlan blner, elemen yang olgunakan aoalab elemen terurut (barls keoua).
Urutan penyelesalan persoalan lnl aoalab sebagal berlkut:
1 Proseour melakukan lnlslallsasl perulangan (lterasl pertama)
l=0,
j=8,
k=(0+8) olv 2 = 4
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 183
PAGE 10
2 Proseour mengujl apakab L[4]=13?
Tloak. L[4]= 16 Maka proseour perlu memutuskan apakab pencarlan
ollanjutkan ke klrl/ ke kanan.
L[4]<13? Tloak. 16 > 13. Maka proseour melakukan pencarlan ol
sebelab kanan, oengan mengubab batas i menjaol k+1.
3 Proseour melakukan lnlslallsasl perulangan (lterasl keoua)
l=k+1=5,
j=8,
k=(5+8) olv 2 = 6
4 Proseour mengujl apakab L[6]=13?
Tloak. L[6] = 10. Maka proseour perlu memutuskan apakab pencarlan
ollanjutkan ke klrl/ ke kanan.
L[6]<13? Ya. 10 < 13. Maka proseoure melakukan pencarlan ol sebelab
klrl, oengan mengubab batas j menjaol k-1.
5 Proseour melakukan lnlslallsasl perulangan (lterasl ketlga)
l=5,
j=k-1=5,
k=(5+5) olv 2 = 5
6 Proseour mengujl apakab L[5]=13?
Ya. Maka varlabel ketemu= true oan proseour mengemballkan nllal
k=5.
Maka, oalam tlga lterasl proseour pencarlan blner oapat menemukan nllal
X=16 yang olcarl paoa larlk tersebut.
8erlkut aoalab konversl oarl algorltma pencarlan blner oengan larlk terurut
nenaik, ke oalam babasa C :
#include <stdio.h>
#define TRUE 1
#define FALSE 0
typedef int bool;
void BinSearch(int L[7],int N,int X,int *idx);
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
184 Penc ar i an
PAGE 10
void main()
{
int pos,arr[7] = {0,11,23,31,43,45,65};
BinSearch(arr,7,11,&pos);
if(pos!= -1)
printf("Ketemu di posisi ke-%d",pos);
else
printf("Tidak Ketemu");
}
void BinSearch(int L[7],int N,int X,int *idx)
{
int i,j,k;
bool ketemu;
i=0;
j=N;
ketemu = FALSE;
while ((!ketemu) && (i<=j))
{
k=(i+j)/2;
if (L[k]==X)
ketemu=TRUE;
else
{
if(L[k]<X)
i=k+1;
else
j=k-1;
}
}
if (ketemu)
*idx = k+1;
else
*idx =-1;
}
8erlkut aoalab konversl oarl algorltma pencarlan blner oengan larlk terurut
nenurun, ke oalam babasa C :
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 185
PAGE 10
#include <stdio.h>
#define TRUE 1
#define FALSE 0
typedef int bool;
void BinSearch(int L[7],int N, int X,int *idx)
void main()
{
int pos,arr[7] = {45,22,16,10,6,2,0};
BinSearch(arr,7,0,&pos);
if(pos!= -1)
printf("Ketemu di posisi ke-%d",pos);
else
printf("Tidak Ketemu");
}
void BinSearch(int L[7],int N, int X,int *idx)
{
int i,j,k;
bool ketemu;
i=0;
j=N;
ketemu = FALSE;
while ((!ketemu) && (i<=j))
{
k=(i+j)/2;
if (L[k]==X)
ketemu=TRUE;
else
{
if(L[k]<X)
j=k-1;
else
i=k+1;
}
}
if (ketemu)
*idx = k+1;
else
*idx =-1;
}
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
186 Penc ar i an
PAGE 10
8.4 Pencoron Lon
Pencarlan sekuenslal oan pencarlan blner merupakan algorltma
pencarlan oasar yang termasuk ke oalam kelompok pencarlan oattar (||st
seorch). Teroapat pula beberapa algorltma laln yang termasuk pula oalam
kelompok pencarlan oattar, antara laln:
pencarlan lnterpolasl (|nterpo|ot|on seorch): melakukan pencarlan leblb
balk oarlpaoa pencarlan blner paoa larlk berukuran besar oengan
olstrlbusl selmbang, tapl waktu pencarlannya buruk
pencarlan Grover (Crover`s seorch): melakukan pencarlan oalam waktu
slngkat, yang merupakan pengembangan oarl pencarlan llnler blasa paoa
larlk oengan elemen tloak berurut
Selaln algorltma pencarlan oalam kelompok pencarlan oattar, teroapat
pula beberapa kelompok algorltma laln. 8eberapa ol antaranya aoalab sebagal
berlkut:
KeIonpok AIgoritna PenjeIasan dan Contoh AIgoritna
Pencarlan tanpa lntormasl
(un|nformed seorch)
Algorltma lnl mencarl oata tanpa aoa batasan
tlpe oata persoalan.
Pencarlan pobon
(tree seorch)
Algorltma lnl mencarl oata oengan bantuan
struktur pobon (ekspllslt maupun lmpllslt).
5reodth-f|rst seorch (mencarl level oeml
level)
depth-f|rst seorch (mencarl oengan meralb
keoalaman pobon terleblb oabulu)
|terot|ve-deepen|ng seorch
depth-||m|ted seorch
5|d|rect|ono| seorch
un|form-cost seorch
Pencarlan gratlk
(groph seorch)
Algorltma lnl mencarl oata oengan algorltma
penelurusuran gratlk, mlsalnya
u|kstro`s o|gor|thm
Krusko|`s o|gor|thm
neorest ne|gh5our o|gor|thm
Pr|m`s o|gor|thm
Pencarlan oengan lntormasl
(|nformed seorch)
Algorltma lnl mencarl oata oengan tungsl
beurlstlk yang spesltlk paoa persoalan tertentu.
5est-f|rst seorch
A*
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 187
PAGE 10
[enls laln
Algorltma pencarlan strlng
Algorltma genetlk
Algorltma m|n|mox
Rangkunan
1. Algorltma pencarlan aoalab algorltma yang mengambll lnput berupa
persoalan oan mengemballkan penyelesalan berupa penemuan nllal yang
olcarl oalam persoalan lnputan.
2. Dua contob algorltma pencarlan oasar aoalab pencarlan sekuenslal oan
pencarlan blner.
3. Pencarlan sekuenslal (sequent|o| seorch) membanolngkan setlap elemen
larlk (array) satu persatu oengan nllal yang olcarl secara beruntun, mulal
oarl elemen pertama sampal elemen yang olcarl suoab oltemukan, atau
sampal selurub elemen suoab olperlksa.
4. Pencarlan blner aoalab proses mencarl oata oengan membagl oata atas
oua baglan secara terus menerus sampal elemen yang olcarl suoab
oltemukan.
5. Pencarlan blner mempunyal prasyarat yaltu oata barus terurut balk
menalk atau menurun.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
188 Penc ar i an
PAGE 10
Kuis Benar 5aIah
1. Algorltma pencarlan banya oapat ollakukan paoa sekumpulan oata yang
terurut menalk.
2. Pencarlan sekuenslal membanolngkan setlap elemen larlk satu persatu
oengan nllal yang olcarl secara beruntun, mulal oarl elemen pertama
sampal elemen yang olcarl suoab oltemukan, atau sampal selurub elemen
suoab olperlksa.
3. Pencarlan blner melakukan pencarlan oengan membagl elemen larlk ke
oalam oua baglan, seblngga kemungklnan keberbasllan pencarlan lnl banya
50.
4. Pencarlan sekuenslal mensyaratkan elemen larlk olurutkan terleblb
oabulu supaya pencarlan oapat ollakukan secara beruntun.
5. Pencarlan blner leblb etlslen oarlpaoa pencarlan sekuenslal, tapl pencarlan
blner mengbaruskan oata telab terurut.
(Untuk soal nomor 6-10) Perbatlkan larlk berlkut lnl:
elemen 25 38 46 72 12 3 90
(terurut) 3 12 25 38 46 72 90
|noe 0 1 2 3 4 5 6
6. Dengan memperbatlkan algorltma Pencarlan Sekuenslal, maka pencarlan
sekuenslal untuk X=46 oapat olselesalkan oalam 2 lterasl.
7. Pencarlan blner paoa elemen terurut untuk X=12 oapat olselesalkan
oalam 2 lterasl.
8. Pencarlan blner paoa elemen terurut untuk X=90 tloak akan menemukan
solusl.
9. Pencarlan sekuenslal paoa elemen terurut untuk X=25 oapat olselesalkan
oengan jumlab lterasl yang sama oengan pencarlan blner paoa elemen
terurut untuk X=25.
10. |terasl makslmal paoa pencarlan blner oalam larlk tersebut aoalab 3
lterasl.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 189
PAGE 10
PiIihan Ganda
1. 8erlkut lnl aoalab pernyataan-pernyataan yang benar tentang pencarlan
sekuenslal, kecuall . .
K. Dapat olgunakan untuk mencarl nllal tertentu oalam larlk.
L. Melakukan pencarlan secara berurutan oarl elemen pertama
blngga elemen terakblr larlk.
M. Melakukan pencarlan oengan mengurutkan lsl elemen larlk terleblb
oabulu.
N. Melakukan pencarlan oengan leblb cepat jlka nllal yang olcarl aoa
ol elemen awal larlk.
O. Melakukan pencarlan oengan langsung membanolngkan elemen
larlk oengan nllal yang olcarl.
2. 8erlkut lnl aoalab pernyataan-pernyataan yang benar tentang pencarlan
blner, kecuall . .
F. Hanya oapat melakukan pencarlan paoa oata yang terurut.
G. Melakukan pencarlan oengan membagl elemen oata menjaol oua
baglan oan membanolngkan elemen tengabnya oengan nllal yang
olcarl.
H. Hanya oapat melakukan pencarlan paoa setengab oata awal.
|. Kemungklnan leblb etlslen oarlpaoa pencarlan beruntun karena
tloak perlu membanolngkan selurub elemen larlk secara
berurutan.
[. Dlsebut juga pencarlan bagloua.
3. Pencarlan sekuenslal aoalab . .
F. Pencarlan yang banya oapat olgunakan paoa elemen oata yang
terurut menalk/ menurun.
G. Pencarlan yang mencarl oata berurutan oarl elemen pertama
blngga elemen terakblr oalam larlk.
H. Pencarlan yang pallng etlslen olbanolngkan pencarlan lalnnya.
|. Pencarlan yang membagl elemen larlk ke oalam oua baglan paoa
awal setlap lterasl
[. Pencarlan yang blsa jaol tloak menemukan solusl jlka oata yang
olcarl aoa oalam elemen larlk.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
190 Penc ar i an
PAGE 10
4. Perbatlkan larlk berlkut lnl:
elemen 5 8 12 22 37 86 88 97
lnoe 0 1 2 3 4 5 6 7
Mlsalkan lngln olcarl X=22, oalam berapa kall lterasl-kab pencarlan
sekuenslal oapat menemukan oata yang olcarl?
F. 1 lterasl
G. 2 lterasl
H. 3 lterasl
|. 4 lterasl
[. 5 lterasl
5. 8eroasarkan elemen larlk paoa soal nomor 4, oalam berapa kall lterasl-
kab pencarlan blner oapat menemukan oata X=22?
A. 1 lterasl
8. 2 lterasl
C. 3 lterasl
D. 4 lterasl
L. 5 lterasl
6. Paoa persoalan pencarlan nllal oalam sebuab larlk oengan elemen
terurut, jlka nllal yang olcarl tloak aoa oalam larlk, maka pernyataan-
pernyataan berlkut lnl benar, kecuall. .
A. Pencarlan berurut oapat menemukan babwa nllal yang olcarl tloak
aoa oalam larlk.
8. Pencarlan blner oapat menemukan babwa nllal yang olcarl tloak
aoa oalam larlk.
C. Pencarlan berurut memerlukan jumlab lterasl yang leblb seolklt
olbanolngkan jumlab lterasl yang olperlukan oleb pencarlan blner.
D. Pencarlan berurut memerlukan jumlab lterasl yang leblb banyak
olbanolngkan jumlab lterasl yang olperlukan oleb pencarlan blner.
L. Plllban A, 8, C, D salab
7. 8erlkut lnl aoalab contob persoalan yang memerlukan algorltma
pencarlan, kecuall . .
K. mengubab nllal salab satu elemen tertentu oalam larlk
L. menylslpkan sebuab nllal ol sebelab salab satu elemen tertentu
oalam larlk
M. mengbapus salab satu elemen tertentu oalam larlk
N. mencarl oata oengan lnoeks tertentu
O. mengbltung rata2 oarl selurub elemen oarl sebuab larlk
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Penc ar i an 191
PAGE 10
8. Perbatlkan larlk berlkut lnl:
elemen 134 100 25 132 8 72 23
lnoe 0 1 2 3 4 5 6 7
Mlsalkan lngln olcarl elemen kosong, oalam berapa kall lterasl-kab
pencarlan sekuenslal oapat menemukan oata yang olcarl?
A. 2 lterasl
8. 3 lterasl
C. 4 lterasl
D. 5 lterasl
L. 6 lterasl
9. [lka elemen larlk paoa soal nomor 8 telab olurutkan menurun oan
elemen kosong olletakkan ol akblr larlk (paoa lnoe nomor 7), paoa
lterasl ke berapakab pencarlan sekuenslal oapat menemukan oata yang
olcarl?
F. 3 lterasl
G. 4 lterasl
H. 6 lterasl
|. 7 lterasl
[. 8 lterasl
10. [lka elemen larlk paoa soal nomor 8 telab olurutkan menurun oan
elemen kosong olletakkan ol akblr larlk (paoa lnoe nomor 7), paoa
lterasl ke berapakab pencarlan blner oapat menemukan elemen
kosong? (gunakan algorltma pencarlan blnary untuk oata yang terurut
menurun)
F. 3 lterasl
G. 4 lterasl
H. 5 lterasl
|. 6 lterasl
[. 7 lterasl
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
192 Penc ar i an
PAGE 10
Latihan
1. Apakab yang olmaksuo oengan pencarlan?
2. 8uatlab proseour pencarlan sekuenslal yang oapat mengemballkan nllal
lnoeks oarl elemen larlk yang berlsl sama oengan nllal yang olcarl!
3. [elaskan perbeoaan pencarlan sekuenslal oan pencarlan blner!
4. 8uatlab proseour penylslpan sebuab nllal ol sebelab kanan sebuab elemen
tertentu oalam larlk!
(Untuk soal nomor 5-8) Perbatlkan larlk berlkut lnl:
elemen 56 34 32 29 29 25 19 15 3
lnoeks 0 1 2 3 4 5 6 7 8
5. Ujllab proseour yang Anoa buat paoa soal nomor 1 oengan menguralkan
langkab-langkab yang ollakukan proseour tersebut untuk mencarl X=29
paoa larlk ol atas! 8erapakab nllal lnoeks yang olkemballkan?
6. Ujllab proseour yang Anoa buat paoa soal nomor 3 oengan menguralkan
langkab-langkab yang ollakukan proseour tersebut untuk mencarl X=29
paoa larlk ol atas! 8erapakab nllal lnoeks yang olkemballkan?
7. Ujllab proseour yang Anoa buat paoa soal nomor 1 oengan menguralkan
langkab-langkab yang ollakukan proseour tersebut untuk mencarl X=30
paoa larlk ol atas! Dalam berapa kall lterasl-kab proseour pencarlan
sekuenslal oapat menemukan babwa nllal yang olcarl tloak aoa oalam larlk
tersebut?
8. Ujllab proseour yang Anoa buat paoa soal nomor 1 oengan menguralkan
langkab-langkab yang ollakukan proseour tersebut untuk mencarl X=30
paoa larlk ol atas! Dalam berapa kall lterasl-kab proseour pencarlan blner
oapat menemukan babwa nllal yang olcarl tloak aoa oalam larlk tersebut?
9. [elaskan alasan pencarlan blner olnyatakan sebagal algorltma pencarlan
yang leblb etlslen olbanolngkan pencarlan sekuenslal!
8uatlab proseour untuk mengbapus sebuab elemen tertentu ol oalam larlk!
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 193
PAGE 10
9 Pengurutan {5orting}
Overview
Serlngkall perancang program perlu mengurutkan sekumpulan oata yang
olmlllkl untuk memuoabkan pemrosesan selanjutnya terbaoap oata tersebut.
Pengurutan aoalab sebuab algorltma oasar yang serlng olperlukan oalam
pembuatan program. 8erbagal algorltma pengurutan telab olclptakan oan
oapat olgunakan. Pemabaman tentang beberapa algorltma pengurutan oasar
perlu olketabul, termasuk cara penggunaannya oalam program.
Tujuan
1. Memabaml konsep pengurutan
2. Mengenal beberapa algorltma pengurutan
3. Menerapkan algorltma pengurutan oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 193
PAGE 10
9 Pengurutan {5orting}
Overview
Serlngkall perancang program perlu mengurutkan sekumpulan oata yang
olmlllkl untuk memuoabkan pemrosesan selanjutnya terbaoap oata tersebut.
Pengurutan aoalab sebuab algorltma oasar yang serlng olperlukan oalam
pembuatan program. 8erbagal algorltma pengurutan telab olclptakan oan
oapat olgunakan. Pemabaman tentang beberapa algorltma pengurutan oasar
perlu olketabul, termasuk cara penggunaannya oalam program.
Tujuan
1. Memabaml konsep pengurutan
2. Mengenal beberapa algorltma pengurutan
3. Menerapkan algorltma pengurutan oalam program
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
194 Pengurut an
PAGE 10
9.1 Pengertian 5ort
Sort|ng atau pengurutan oata aoalab proses yang serlng barus ollakukan
oalam pengolaban oata. Sort oalam bal lnl olartlkan mengurutkan oata yang
beraoa oalam suatu tempat penylmpanan, oengan urutan tertentu balk urut
menalk (oscend|ng) oarl nllal terkecll sampal oengan nllal terbesar, atau urut
menurun (descend|ng) oarl nllal terbesar sampal oengan nllal terkecll. Sortng
aoalab proses pengurutan.
Teroapat oua macam pengurutan:
Pengurutan internaI {nternol sort}, yaltu pengurutan terbaoap
sekumpulan oata yang olslmpan oalam meola lnternal komputer
yang oapat olakses setlap elemennya secara langsung. Dapat
olkatakan sebagal pengurutan tabel
Pengurutan eksternaI {externol sort}, yaltu pengurutan oata
yang olslmpan oalam memorl sekunoer, blasanya oata bervolume
besar seblngga tloak mampu untuk olmuat semuanya oalam memorl.
Dalam coursewore lnl, banya akan olbabas algorltma pengurutan lnternal,
oengan oata beraoa oalam orro, satu olmensl.
Algorltma pengurutan lnternal yang utama antara laln:
1. 8ubble Sort
2. Selectlon Sort
3. |nsertlon Sort
4. Sbell Sort
5. Merge Sort
6. Raol Sort
7. Qulck Sort
8. Heap Sort
Dalam coursewore lnl banya akan olbabas tlga metooe sort yang pertama yang
olanggap muoab, yaltu: Bubble Sort , Selecton Sort don lnserton Sort
9.2 BubbIe 5ort
8u55|e sort aoalab proses pengurutan seoerbana yang bekerja oengan
cara berulang kall membanolngkan oua elemen oata paoa suatu saat oan
menukar elemen oata yang urutannya salab. |oe oarl 8u55|e sort aoalab
gelembung alr yang akan "nengapung" untuk table yang terurut menalk
(oscend|ng). Llemen bernllal kecll akan "diapungkan" (ke lnoeks terkecll),
artlnya olangkat ke "atas" (lnoeks terkecll) melalul pertukaran. Karena
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 195
PAGE 10
algorltma lnl melakukan pengurutan oengan cara membanolngkan elemen-
elemen oata satu sama laln, maka 5u55|e sort termasuk ke oalam jenls
algorltma compor|son-5osed sort|ng.
Proses oalam 8u55|e sort ollakukan sebanyak N-1 langkab (pass) oengan N
aoalab ukuran orro,. Paoa akblr setlap langkab ke I , array L[0..N] akan
terolrl atas oua baglan, yaltu baglan yang suoab terurut L[0..I] oan baglan
yang belum terurut L[I+1..N-1]. Setelab langkab terakblr, olperoleb
orro, L[0..N-1] yang terurut menalk.
Untuk menoapatkan urutan yang menalk, algorltmanya oapat oltulls secara
global sebagal berlkut :
Untuk setlap pass ke I = 0,1,., N-2 , lakukan :
Mulal oarl elemen J = N-1, N-2,.., I + 1, lakukan :
8anolngkan L[J-1] oengan L[J]
Pertukarkan L[J-1] oengan L[J] jlka L[J-1] > L[J]
Rlnclan setlap pass aoalab sebagal berlkut :
Pass 1: I = 0. Mulai dari elemen J = N-1,N2,,1, bandingkan
L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan
L[J-1] dengan L[J]. Pada akhir langkah 1, elemen L[0]
berisi harga minimum pertama.
Pass 2: I = 1. Mulai dari elemen J = N-1,N2,,2, bandingkan
L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan
L[J-1] dengan L[J]. Pada akhir langkah 2, elemen L[1]
berisi harga minimum kedua dan array L[0..1] terurut,
sedangkan L[2..(N-1)] belum terurut.
Pass 3: I = 2. Mulai dari elemen J = N-1,N2,,3, bandingkan
L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan
L[J-1] dengan L[J]. Pada akhir langkah 3, elemen L[2]
berisi harga minimum ketiga dan array L[0..2] terurut,
sedangkan L[3..(N-1)] belum terurut.
...
Pass N-1: Mulai dari elemen J = N-1, bandingkan L[J-1] dengan
L[J]. Jika L[J-1] > L[J], pertukarkan L[J-1] dengan
L[J].
0 terurut
I I+1 Blm terurut N
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
196 Pengurut an
PAGE 10
Paoa akblr langkab N-2, elemen L[N-2] berlsl nllal mlnlmun ke [N-2] oan
orro, L[0..N-2] terurut menalk (elemen yang terslsa aoalab L[N-1], tloak
perlu olurut karena banya satu-satunya).
Mlsal orro, L oengan N = 5 buab elemen yang belum terurut. Arro, akan
olurutkan secara oscend|ng (menalk).
8 9 7 6 1
0 1 2 3 4
Pass 1 :
I = 0 ;J= N-1= 4 8 9 7 1 6
J = 3 8 9 1 7 6
J = 2 8 1 9 7 6
J = 1 1 8 9 7 6
Hasll akblr langkab 1 :
1 8 9 7 6
0 1 2 3 4
Pass 2 :
I = 1 ;J= N-1= 4 1 8 9 6 7
J = 3 1 8 6 9 7
J = 2 1 6 8 9 7
Hasll akblr langkab 2 :
1 6 8 9 7
0 1 2 3 4
Pass 3 :
I = 2 ;J= N-1= 4 1 6 8 7 9
J = 3 1 6 7 8 9
Hasll akblr langkab 3 :
1 6 7 8 9
0 1 2 3 4
Pass 4 :
I = 3 ;J= N-1= 4 1 6 7 8 9
Hasll akblr langkab 4 :
1 6 7 8 9
0 1 2 3 4
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 197
PAGE 10
Selesal. Array L suoab terurut !!
Pseuoocooe proseour algorltma 8u55|e Sort secara Ascend|ng
1. ,,o.cvv voinv vc o .c.vv /..cnvin
2. ,,1.:vv, .vvvn ci.i nivi incc ,vn cvn cvv
3. ,,I.:nivinivi vvvn vv, cvv .c.vv /..cnvin
4. procedure v_Bubble(input/output A:array[0..4]of integer,
input N:integer)
5. KAMUS:
6. i,j,temp:integer
7. ALGORITMA:
8. for(i=0;i<=(N-2);i++)
9. for(j=(N-1);j>=(i+1);j--)
10. if (A[j-1]>A[j])
11. tempA[j-1]
12. A[j-1]A[j]
13. A[j]temp
14. endif
15. endfor
16. endfor
17.end procedure
Program lengkap penerapan algorltma 8u55|e Sort oalam babasa C
1. #include <stdio.h>
2. #include <conio.h>
3.
4. void v_Bubble(int A[],int N);
5. void main()
6. { int L[5];
7. int i,N;
8. ,,o.c. vnv[ ncnv.v[[vn vvv vv,
9. printf("Banyak data : ");scanf("%i",&N);
10. for(i=0;i<N;i++)
11. { printf("Data ke-%i: ",i+1);
12. scanf("%i",&L[i]); } ,,cnv oo i
13. ,,ncnvni o.cvvc vc .o
14. v_Bubble(L,N);
15.
16. ,,o.c. ncnvni[vn [cnvi vvv vv,
17. printf("\nData Array Terurut\n");
18. for(i=0;i<N;i++)
19. { printf("%3i",L[i]); };
20. getche();
21. } ,,cnv nvin ovn
22.
23. void v_Bubble(int A[5],int N)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
198 Pengurut an
PAGE 10
24. { int a,b,temp;
25. ,,o.c. .oi vcnvn vc .o
26. for(a=0;a<=(N-2);a++)
27. { for(b=(N-1);b>=(a+1);b--)
28. { if (A[b-1] > A[b])
29. { temp = A[b-1];
30. A[b-1]= A[b];
31. A[b] = temp; } ,,cnvi{
32. } ,,cnv oo ]
33. } ,,cnv oo i
34. } ,,cnv o.cvvc ._vc
Output yang olbasllkan:
9.3 5eIection 5ort
Algorltma Se|ect|on sort memlllb elemen makslmum/mlnlmum orro,,
lalu menempatkan elemen makslmum/mlnlmum ltu paoa awal atau akblr orro,
(tergantung paoa urutannya oscend|ng/descend|ng). Selanjutnya elemen
tersebut tloak olsertakan paoa proses selanjutnya. Karena setlap kall se|ect|on
sort barus membanolngkan elemen-elemen oata, algorltma lnl termasuk oalam
compor|son-5osed sort|ng.
Sepertl paoa algorltma 8u55|e Sort, proses memlllb nllal makslmum /mlnlmum
ollakukan paoa setlap pass. [lka orro, berukuran N, maka jumlab poss aoalab
N-1.
Teroapat oua penoekatan oalam metooe pengurutan oengan Se|ect|on Sort :
1. AIgoritna pengurutan naksinun (mox|mum se|ect|on sort),
yaltu memlllb eIenen naksinun sebagai basis pengurutan.
2. AIgoritna pengurutan nininun (m|n|mum se|ect|on sort), yaltu
memlllb eIenen nininun sebagai basis pengurutan.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 199
PAGE 10
9.3.1 Moxmum Selecton Sort Ascendng
Untuk menoapatkan orro, yang terurut menalk (oscend|ng), algorltma
mox|mum se|ect|on sort oapat oltulls sebagal berlkut :
1. [umlab Pass = N-1 (um|oh poss)
2. Untuk setlap pass ke I = 0,1,..., jumlab pass lakukan :
carl elemen makslmum (moks) mulal oarl elemen ke I
sampal elemen ke (N-1)
pertukarkan moks oengan elemen ke I
kurangl N oengan satu
Rlnclan setlap poss aoalab sebagal berlkut :
Langkah 1 : Cari elemen maksimum di dalam L[0..(N-1)]
Pertukarkan elemen maksimum dengan elemen L[N-1]
Langkah 2 : Cari elemen maksimum di dalam L[0..N-2]
Pertukarkan elemen maksimum dengan elemen L[N-2]
Langkah 3 : Cari elemen maksimum di dalam L[0..N-3]
Pertukarkan elemen maksimum dengan elemen L[N-3]
......
Langkah N-1: Tentukan elemen maksimum di dalam L[0..1]
Pertukarkan elemen maksimum dengan elemen L[0]
(elemen yang terslsa aoalab L[0], tloak perlu olurut karena banya satu-
satunya).
[aol , paoa setlap poss pengurutan teroapat proses mencarl barga makslmum
oan proses pertukaran oua buab elemen orro,.
Mlsal, teroapat orro, L oengan N = 5 buab elemen yang belum terurut. Arro,
akan olurutkan secara Ascendng (menalk), oengan algorltma moxmum
selecton sort.
9 7 12 6 1
0 1 2 3 4
Pass 1 :
Cari elemen maksimum di dalam array L[0..4]. Maks=L[2]=12
Tukar Maks dengan L[4], diperoleh :
9 7 1 6 12
0 1 2 3 4
Pass 2 :
(berdasarkan susunan array pada Pass 1)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
200 Pengurut an
PAGE 10
Cari elemen maksimum di dalam array L[0..3]. Maks=L[0]=9
Tukar Maks dengan L[3], diperoleh :
6 7 1 9 12
0 1 2 3 4
Pass 3:
(berdasarkan susunan array pada Pass 2)
Cari elemen maksimum di dalam array L[0..2]. Maks=L[1]=7
Tukar Maks dengan L[2], diperoleh :
6 1 7 9 12
0 1 2 3 4
Pass 4 :
(berdasarkan susunan array pada Pass 3)
Cari elemen maksimum di dalam array L[0..1]. Maks=L[0]=6
Tukar Maks dengan L[1], diperoleh :
1 6 7 9 12
0 1 2 3 4
Selesal, array L suoab terurut secara Ascend|ng.
8erlkut lnl akan olberlkan pseudocode procedure Mox|mum Se|ect|on Sort
Ascend|ng oan pseudocode procedure untuk tukar tempat.
Pseudocode Algorltma Mox|mum Se|ect|on Sort secara Ascend|ng :
1. ,,o.cvv voinv ^v_invn cc.ion o .c.vv /..cnvin
2. ,,1.:vv, .vvvn ci.i nivi incc ,vn cvn cvv
3. ,,I.:nivinivi vvvn vv, cvv .c.vv /..cnvin
4. procedure v_SelAsc(input/output A:array[0..4]of integer,
input N:integer)
5. KAMUS:
6. maks,k,j,temp:integer
7. ALGORITMA:
8. for(k=(N-1);k>=0;kk-1)
9. maks0;
10. ,, .vi ccncn nv[.invn
11. for(j=0;j<=k;jj+1)
12. if (A[j] > A[maks])
13. maksj;
14. endif
15. endfor
16. v_Tukar(A[k],A[maks]) ,,vni o.cvvc ._Iv[v
17. endfor
18.end procedure
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 201
PAGE 10
Pseudocode Algorltma Tukar Tempat :
1. ,,o.cvv voinv Iv[v Icnv
2. ,,1.:nivinivi ,vn vi[iin[vn .vvvn cvc{ini.i .ccvnn,v
3. ,,I.:nivi ,vn vi[iin[vn cv[v nivin,v
4. procedure v_Tukar(input/output P:integer,
input/output M:integer)
5. KAMUS:
6. temp:integer
7. ALGORITMA:
8. temp P
9. P M
10. M temp
11.endprocedure
Program lengkap penerapan algorltma Mox|mum Se|ect|on Sort Ascend|ng oalam
babasa C
#include <stdio.h>
#include <conio.h>
void v_SelAsc(int A[],int N);
void v_Tukar(int *P,int *M);
main()
{ int L[5];
int i,N;
,,inv vvv vv,
printf("Banyak Data: ");scanf("%i",&N);
for(i=0;i<N;i++)
{ printf("Data ke-%i: ",i+1);
scanf("%i",&L[i]); } ,,cnv oo i
,,ncnvni o.cvvc ._c/..
v_SelAsc(L,N);
,,ncnvni[vn [cnvi vvv vv,
printf("\nData Terurut:\n");
for(i=0;i<N;i++)
{ printf("%3i",L[i]); } ,,cnv oo i
getche();
}
void v_SelAsc(int A[5],int N)
{ int maks,k,j,temp;
for(k=(N-1);k>=0;k--)
{ maks=0;
for(j=0;j<=k;j++)
{ if (A[j] > A[maks])
{ maks=j; } ,,cnvi{
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
202 Pengurut an
PAGE 10
} ,,cnv oo ]
v_Tukar(&A[k],&A[maks]);
} ,,cnv oo [
} ,,cnv o.cvvc ._c/..
void v_Tukar(int *P,int *M)
{ int temp;
temp = *P;
*P = *M;
*M = temp;
} ,,cnv o.cvvc ._Iv[v
Output yang olbasllkan:
9.3.2 Moxmum Selecton Sort Descendng
Mlsal, teroapat orro, L oengan N = 5 buab elemen yang belum
terururt. Arro, akan olurutkan secara Descendng (menurun), oengan
aIgoritna moxmum selecton sort.
9 8 11 7 12
0 1 2 3 4
Pass 1 :
Cari elemen maksimum di dalam array L[0..4]. Maks=L[4]=12
Tukar Maks dengan L[0], diperoleh :
12 8 11 7 9
0 1 2 3 4
Pass 2 :
(berdasarkan susunan array pada Pass 1)
Cari elemen maksimum di dalam array L[1..4]. Maks=L[2]=11
Tukar Maks dengan L[1], diperoleh :
12 11 8 7 9
0 1 2 3 4
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 203
PAGE 10
Pass 3 :
(berdasarkan susunan array pada Pass 2)
Cari elemen maksimum di dalam array L[2..4]. Maks=L[4]=9
Tukar Maks dengan L[2], diperoleh :
12 11 9 7 8
0 1 2 3 4
Pass 4 :
(berdasarkan susunan array pada Pass 3)
Cari elemen maksimum di dalam array L[3..4]. Maks=L[4]=8
Tukar Maks dengan L[3], diperoleh :
12 11 9 8 7
0 1 2 3 4
Selesal orro, L suoab terurut secara uescend|ng (menurun)
Pseuoocooe Algorltma Mox|mum Se|ect|on Sort secara uescend|ng :
1. ,,o.cvv voinv ^v_invn cc.ion o .c.vv Ic..cnvin
2. ,,1.:vv, .vvvn ci.i nivi incc ,vn cvn cvv
3. ,,I.:nivinivi vvvn vv, cvv .c.vv Ic..cnvin
4. procedure v_SelDesc(input/output A:array[0..4]of integer,
input N:integer)
5. KAMUS:
6. k,maks,j,temp:integer
7. ALGORITMA:
8. for(k=0;k<=(N-2);kk+1)
9. ,,.vi ccncn nv[.invn
10. maksk
11. for(j=(k+1);j<=(N-1);jj+1)
12. if (A[j] > A[maks])
13. maksj
14. endif
15. endfor
16. tempA[k]
17. A[k]A[maks]
18. A[maks]temp
19. endfor
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
204 Pengurut an
PAGE 10
Program lengkap penerapan algorltma Mox|mum Se|ect|on Sort uescend|ng
oalam babasa C
1. #include <stdio.h>
2. #include <conio.h>
3. void v_Tukar(int *P,int *M);
4. void v_SelDesc(int A[5],int N);
5. main()
6. { int L[5];
7. int i,k,j,maks,temp,N;
8. printf("Banyak Data: ");scanf("%i",&N);
9. ,,inv vvv vv,
10. printf("Input Data Array\n");
11. for(i=0;i<N;i++)
12. { printf("Data ke-%i = ",i+1);
13. scanf("%i",&L[i]); } ,,cnvoo i
14. ,,vni o.cvvc ._cIc..
15. v_SelDesc(L,N);
16. printf("\nOutput Data Array Terurut:\n");
17. for(i=0;i<N;i++)
18. { printf(" %5i",L[i]); } ,,cnvoo i
19.
20. printf("\nTekan Enter...\n");
21. getche();
22. } ,,cnv nvin ovn
23.
24. void v_SelDesc(int A[5],int N)
25. { int k,maks,j,temp;
26. ,,o.c. .oin nv_ vc..cnvin
27. for(k=0;k<=(N-2);k++)
28. { ,,.vi ccncn nv[.invn
29. maks=k;
30. for(j=(k+1);j<=(N-1);j++)
31. { if (A[j] > A[maks])
32. maks=j; } ,,cnv{o oo ]
33. v_Tukar(&A[k],&A[maks]);
34. } ,,cnv{o oo [
35. } ,,cnv o.cvvc ._cIc..
36.
37. void v_Tukar(int *P,int *M)
38. { int temp;
39. temp = *P;
40. *P = *M;
41. *M = temp;
42. } ,,cnv o.cvvc ._Iv[v
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 205
PAGE 10
Output yang olbasllkan:
9.3.3 Mnmum Selecton Sort Ascendng
Untuk menoapatkan orro, yang terurut menalk (oscend|ng), algorltma
mlnlmum se|ect|on sort oapat oltulls sebagal berlkut :
1. [umlab Pass = N-1 (um|oh poss)
2. Untuk setlap pass ke I = 0,1,.., N-1, lakukan :
a. carl elemen mlnlmum (m|n) mulal oarl elemen ke I
sampal elemen ke (N-1)
b. pertukarkan m|n oengan elemen ke I
Rlnclan setlap poss aoalab sebagal berlkut :
Langkah 1 : Cari elemen minimum di dalam L[0..(N-1)]
Pertukarkan elemen terkecil dengan elemen L[0]
Langkah 2 : Cari elemen minimum di dalam L[1..(N-1)]
Pertukarkan elemen terkecil dengan elemen L[1]
Langkah 3 : Cari elemen minimum di dalam L[2..(N-1)]
Pertukarkan elemen terkecil dengan elemen L[2]
......
Langkah N-1: Tentukan elemen minimum di dalam L[(N-2)..(N-1)]
Pertukarkan elemen terkecil dengan elemen L[N-2]
(elemen yang tersisa adalah L[N-1], tidak perlu diurut karena
hanya satu-satunya).
[aol, paoa setlap poss pengurutan teroapat proses mencarl barga mlnlmum
oan proses pertukaran oua buab elemen orro,.
Mlsal, teroapat orro, L oengan N = 5 buab elemen yang belum terururt. Arro,
akan olurutkan secara Ascend|ng (menalk), oengan aIgoritna nininun
selecton sort.
9 7 12 6 1
0 1 2 3 4
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
206 Pengurut an
PAGE 10
Pass 1 :
Cari elemen terkecil di dalam array L[0..4]. Min=L[4]=1
Tukar Min dengan L[0], diperoleh :
1 7 12 6 9
0 1 2 3 4
Pass 2 :
(berdasarkan susunan array pada Pass 1)
Cari elemen terkecil di dalam array L[1..4]. Min=L[3]=6
Tukar Min dengan L[1], diperoleh :
1 6 12 7 9
0 1 2 3 4
Pass 3:
(berdasarkan susunan array pada Pass 2)
Cari elemen terkecil di dalam array L[2..4]. Min=L[3]=7
Tukar Min dengan L[2], diperoleh :
1 6 7 12 9
0 1 2 3 4
Pass 4 :
(berdasarkan susunan array pada Pass 3)
Cari elemen terkecil di dalam array L[3..4]. Min=L[4]=9
Tukar Min dengan L[3], diperoleh :
1 6 7 9 12
0 1 2 3 4
Selesal, array L suoab terurut secara Ascend|ng.
Pseuoocooe Algorltma M|n|mum Se|ect|on Sort secara Ascend|ng :
1. ,,o.cvv voinv ^ininvn cc.ion o .c.vv /..cnvin
2. ,,1.:vv, .vvvn ci.i nivi incc ,vn cvn cvv
3. ,,I.:nivinivi vvvn vv, cvv .c.vv /..cnvin
4. procedure v_minAsc(input/output A:array[0..4]of integer,
input N:integer)
5. KAMUS:
6. k,min,j,temp:integer
7. ALGORITMA:
8. for(k=0;k<=(N-2);kk+1)
9. ,,.vi ccncn c[c.i
10. min k
11. for(j=(k+1);j<=(N-1);jj+1)
12. if (A[j] < A[min])
13. min j
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 207
PAGE 10
14. endif
15. endfor
16. v_Tukar(A[k],A[min])
17.endfor
Program lengkap penerapan algorltma M|n|mum Se|ect|on Sort Ascend|ng oalam
babasa C
1. #include <stdio.h>
2. #include <conio.h>
3. void v_minAsc(int A[5],int N);
4. void v_Tukar(int *P,int *M);
5. main()
6. { int L[5];
7. int i,j,k,min,temp,N;
8. ,,inv vvv vv,
9. printf("Input Data Array\n");
10. printf("\nBanyak Data : "); scanf("%i",&N);
11. for(i=0;i<N;i++)
12. { printf(" Data ke-%i = ",i+1);
13. scanf("%i",&L[i]); } ,,cnv oo i
14. ,,vni o.cvvc ._nin/..
15. v_minAsc(L,N);
16. ,,ovv vvv vv,
17. printf("\n Data Sortir:\n");
18. for(i=0;i<N;i++)
19. { printf(" %5i",L[i]); } ,,cnv oo i
20. printf("\n Tekan Enter\n");
21. getche();
22. } ,,cnv nvin ovn
23.
24. void v_minAsc(int A[5],int N)
25. { int k,min,j,temp;
26. ,,o.c. nininvn v..cnvin .cc.ion .o
27. for(k=0;k<=(N-2);k++)
28. { min = k;
29. for(j=(k+1);j<=(N-1);j++)
30. { if (A[j] < A[min])
31. min = j; } ,,cnvoo ]
32. v_Tukar(&A[k],&A[min]); } ,,cnv oo [
33. } ,,cnv o.cvvc
34.
35. void v_Tukar(int *P,int *M)
36. { int temp;
37. temp = *P;
38. *P = *M;
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
208 Pengurut an
PAGE 10
39. *M = temp;
40. } ,,cnv o.cvvc ._Iv[v
Output yang olbasllkan:
9.3.4 Mnmum Selecton Sort Descendng
Mlsal, teroapat orro, L oengan N = 5 buab elemen yang belum
terururt. Arro, akan olurutkan secara Descendng (menurun), oengan
aIgoritna mnmum selecton sort.
9 8 11 7 12
0 1 2 3 4
Pass 1 :
Cari elemen terkecil di dalam array L[0..4]. Min=L[3]=7
Tukar Min dengan L[4], diperoleh :
9 8 11 12 7
0 1 2 3 4
Pass 2 :
(berdasarkan susunan array pada Pass 1)
Cari elemen terkecil di dalam array L[0..3]. Min=L[1]=8
Tukar Min dengan L[3], diperoleh :
9 12 11 8 7
0 1 2 3 4
Pass 3 :
(berdasarkan susunan array pada Pass 2)
Cari elemen terkecil di dalam array L[0..2]. Min=L[0]=9
Tukar Min dengan L[2], diperoleh :
11 12 9 8 7
0 1 2 3 4
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 209
PAGE 10
Pass 4 :
(berdasarkan susunan array pada Pass 3)
Cari elemen terkecil di dalam array L[0..1]. Min=L[0]=11
Tukar Min dengan L[1], diperoleh :
12 11 9 8 7
0 1 2 3 4
Selesal orro, L suoab terurut secara uescend|ng (menurun)
Pseudocode Algorltma M|n|mum Se|ect|on Sort secara uescend|ng :
1. ,,o.cvv voinv ^ininvn cc.ion o .c.vv Ic..cnvin
2. ,,1.:vv, .vvvn ci.i nivi incc ,vn cvn cvv
3. ,,I.:nivinivi vvvn vv, cvv .c.vv Ic..cnvin
4. procedure v_minDesc(input/output A:array[0..4]of integer,
input N:integer)
5. KAMUS:
6. k,j,temp,min : integer
7. ALGORITMA:
8. ,,nininvn .cc.ion .o vc..cnvin
9. for(k=(N-1);k>=1;kk-1)
10. min0
11. ,,.vi nivi c[c.i
12. for(j=0;j<=k;jj+1)
13. if (A[j] < A[min])
14. minj
15. endif
16. endfor
17. v_Tukar(A[k],A[min])
20. endfor
Program lengkap penerapan algorltma M|n|mum Se|ect|on Sort uescend|ng
oalam babasa C
1. #include <stdio.h>
2. #include <conio.h>
3. void v_minDesc(int A[5],int N);
4. void v_Tukar(int *P,int *M);
5. main()
6. { int L[5];
7. int i,N;
8. ,,inv vvv vv,
9. printf("Input Data Array\n");
10. printf("\nBanyak Data : ");scanf("%i",&N);
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
210 Pengurut an
PAGE 10
11. for(i=0;i<N;i++)
12. { printf(" Data ke-%i = ",i+1);
13. scanf("%i",&L[i]); } ,,cnvoo i
14. ,,vni o.cvvc ._ninIc..
15. v_minDesc(L,N);
16. ,,ovv vvv vv,
17. printf("\n Data Sortir:\n");
18. for(i=0;i<N;i++)
19. { printf(" %5i",L[i]); } ,,cnvoo i
20. printf("\n Tekan Enter...\n");
21. getche();
22. } ,,cnv nvin ovn
23.
24. void v_minDesc(int A[5],int N)
25. { int k,j,temp,min;
26. ,,nininvn .cc.ion .o vc..cnvin
27. for(k=(N-1);k>=1;k--)
28. { min = 0;
29. for(j=0;j<=k;j++)
30. { if (A[j] < A[min])
31. min=j; } ,,cnvoo ]
32. v_Tukar(&A[k],&A[min]); } ,,cnvoo [
33. } ,,cnv o.cvvc ._ninIc..
34.
35. void v_Tukar(int *P,int *M)
36. { int temp;
37. temp = *P;
38. *P = *M;
39. *M = temp;
40. } ,,cnv o.cvvc ._Iv[v
Output yang olbasllkan:
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 211
PAGE 10
9.4 lnsertion 5ort
lnsert|on sort aoalab sebuab algorltma pengurutan yang membanolngkan
oua elemen oata pertama, mengurutkannya, kemuolan mengecek elemen oata
berlkutnya satu persatu oan membanolngkannya oengan elemen oata yang
telab olurutkan. Karena algorltma lnl bekerja oengan membanolngkan elemen-
elemen oata yang akan olurutkan, algorltma lnl termasuk pula oalam
compor|son-5osed sort.
|oe oasar oarl algorltma lnsert|on Sort lnl aoalab mencarl tempat yang
"tepat" untuk setlap elemen array, oengan cara sequent|o| seorch. Proses lnl
kemuolan menylslpkan sebuab elemen array yang olproses ke tempatnya yang
sebarusnya. Proses ollakukan sebanyak N-1 tabapan (oalam sort|ng olsebut
sebagal "poss"), oengan lnoeks olmulal oarl 0.
Proses pengurutan oengan menggunakan algorltma lnsert|on Sort
ollakukan oengan cara membanolngkan oata ke-l (olmana l olmulal oarl oata
ke-2 sampal oengan oata terakblr) oengan oata berlkutnya. [lka oltemukan
oata yang leblb kecll maka oata tersebut olslslpkan ke oepan sesual oengan
poslsl yang sebarusnya.
Mlsal teroapat orro, satu olmensl L, yang terolrl oarl 7 elemen orro,
(n=7). Array L suoab berlsl oata sepertl olbawab lnl oan akan olurutkan
secara oscend|ng oengan algorltma lnsert|on Sort.
L[] 15 10 7 22 17 5 12
0 1 2 3 4 5 6
Tabapan lnsert|on Sort:
1. Dlmulal oarl L[1] : Slmpan nllal L[1] ke varlabel X.
(Pass-1) Geser maslng-maslng satu langkab ke kanan semua
nllal yang aoa olsebelab klrl L[1] satu persatu
apablla nllal tersebut leblb besar oarl X.
Setelab ltu nsert-kan (slslpkan) X ol bekas tempat
nllal yang terakblr olgeser.
2. Dllanjutkan ke L[2]: Slmpan nllal L[2] ke varlabel X
(Pass-2) Geser maslng-maslng satu langkab ke kanan semua
nllal yang aoa olsebelab klrl L[2] satu persatu
apablla nllal tersebut leblb besar oarl X.
Setelab ltu nsert-kan (slslpkan) X ol bekas tempat
nllal yang terakblr ol geser.
3. Demlklan seterusnya untuk L[3], L[4],L[5], oan terakblr L[6] blla n = 7.
Seblngga untuk n = 7 aoa 6 poss proses pengurutan.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
212 Pengurut an
PAGE 10
8erlkut llustrasl oarl 6 poss tersebut:
Data awal: 15 10 7 22 17 5 12
0 1 2 3 4 5 6
Pass-1: 15 10 7 22 17 5 12 10
0 1 2 3 4 5 6 X
Pass 1 olmulal oarl kolom L[1], X=L[1]=10
15 leblb besar oarl 10, maka geser 15 ke kanan. Proses selesal
karena suoab sampal kolom 1. Kemuolan lnsert X menggantlkan
15.
15 15 7 22 17 5 12
0 1 2 3 4 5 6
10 15 7 22 17 5 12
0 1 2 3 4 5 6
Hasll Pass 1: 10 15 7 22 17 5 12
0 1 2 3 4 5 6
Pass-2: 10 15 7 22 17 5 12 7
0 1 2 3 4 5 6 X
Pass 2 olmulal oarl L[2], X=L[2]=7.
15 leblb besar oarl 7, maka geser 15 ke kanan. 10 leblb besar
oarl 7, maka geser 10 ke kanan. Proses selesal karena suoab
sampal kolom 1. Kemuolan lnsert X menggantlkan 10.
15 15 22 17 5 12
0 1 2 3 4 5 6
10 10 15 22 17 5 12
0 1 2 3 4 5 6
7 10 15 22 17 5 12
0 1 2 3 4 5 6
Hasll Pass 2: 7 10 1 22 17 5 12
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 213
PAGE 10
5
0 1 2 3 4 5 6
Pass-3: 7 10 15 22 17 5 12 22
0 1 2 3 4 5 6 X
Pass 3 olmulal oarl L[3], X=L[3]=22.
15 tloak leblb besar oarl 22, maka proses selesal. Kemuolan
lnsert X menggantlkan 22.
Proses berlanjut sampal Pass 6. Hasll tlap pass oapat olgambarkan sebagal
berlkut:
Data awal: 15 10 7 22 17 5 12
0 1 2 3 4 5 6
Pass 1: 10 15 7 22 17 5 12
0 1 2 3 4 5 6
Pass 2: 7 10 15 22 17 5 12
0 1 2 3 4 5 6
Pass 3: 7 10 15 22 17 5 12
0 1 2 3 4 5 6
Pass 4: 7 10 15 17 22 5 12
0 1 2 3 4 5 6
Pass 5: 5 7 10 15 17 22 12
0 1 2 3 4 5 6
Pass 6: 5 7 10 12 15 17 22
0 1 2 3 4 5 6
Selesal orro, L suoab terurut secara Ascend|ng (menalk)
Pseudocode Algorltma lnsert|on Sort secara Ascend|ng :
1. ,,o.cvv voinv 1n.cion o .c.vv /..cnvin
2. ,,1.:vv, .vvvn ci.i nivi incc ,vn cvn cvv
3. ,,I.:nivinivi vvvn vv, cvv .c.vv /..cnvin
4. procedure v_inAsc(input/output A:array[0..6]of integer,
input N:integer)
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
214 Pengurut an
PAGE 10
5. KAMUS:
6. k,X,i:integer
7. ALGORITMA:
8. ,,in.cion .o v..cnvin
9. k1
10. while(k<=N-1)
11. ik
12. XA[i]
13. while(i>=1 && A[i-1]>X)
14. A[i]A[i-1]
15. ii-1
16. endwhile
17. A[i]X
18. kk+1
19. endwhile
Program lengkap penerapan algorltma lnsert|on Sort Ascend|ng oalam babasa C
#include <stdio.h>
#include <conio.h>
main()
{ int L[7];
int i,N;
void v_insertAsc(int A[7],int N);
,,inv vvv vv,
printf("Input Data Array\n");
printf("\nBanyak Data: "); scanf("%i",&N);
for(i=0;i<N;i++)
{ printf("Nilai ke-%i = ",i+1);
scanf("%i",&L[i]); } ,,cnv oo i
,,vni o.cvvc ._in/..
v_insAsc(L,N);
,,ovv vvv vv,
printf("Data terurut:\n");
for(i=0;i<N;i++)
{ printf("%5i",L[i]); } ,,cnv oo i
printf("\nTekan Enter...\n");
getche();
}
void v_insAsc(int A[7],int N)
{ int k,X,i;
,,in.cion .o v..cnvin
k=1;
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 215
PAGE 10
while(k<=N-1)
{ i=k;
X=A[i];
while(i>=1 && A[i-1]>X)
{ A[i]=A[i-1];
i--; } ,,cnv.nic
A[i]=X;
k++; } ,,cnv.nic
} ,,cnv o.cvvc
Output yang olbasllkan:
Rangkunan
1. Proses Sortng merupakan proses mengurutkan oata yang beraoa oalam
suatu tempat penylmpanan, oengan urutan tertentu balk urut menalk
(oscend|ng) oarl nllal terkecll sampal oengan nllal terbesar, atau urut
menurun (descend|ng) oarl nllal terbesar sampal oengan nllal terkecll
2. Teroapat oua macam proses pengurutan, yaltu pengurutan lnternal
(|nterno| sort) oan pengurutan eksternal (externo| sort).
3. 8u55|e sort aoalab proses pengurutan seoerbana yang bekerja oengan cara
berulang kall membanolngkan oua elemen oata paoa suatu saat oan
menukar elemen oata yang urutannya salab.
4. Algorltma Se|ect|on sort memlllb elemen makslmum/mlnlmum orro,, lalu
menempatkan elemen makslmum/mlnlmum ltu paoa awal atau akblr orro,
(tergantung paoa urutannya oscend|ng/descend|ng).
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
216 Pengurut an
PAGE 10
5. Algorltma lnsert|on Sort, mencarl tempat yang "tepat" untuk setlap elemen
array, oengan cara sequent|o| seorch. Proses lnl kemuolan menylslpkan
sebuab elemen array yang olproses ke tempatnya yang sebarusnya.
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Pengurut an 217
PAGE 10
PiIihan Ganda
Petunjuk. Plhloh jowobon yong polng tepotl
1. Usaba untuk mengurutkan kumpulan-kumpulan oata oalam suatu orro,
olsebut:
A. Searcblng C. Sortlng
8. Dlvloe D. Conquer
2. 8erlkut lnl aoalab metooe yang olgunakan paoa teknlk sort|ng, kecuol:
A. 8ubble C. Flbonaccl
8. Heap D. Raol
3. Data 4 0 8 2, olurutkan secara oscend|ng (oarl kecll ke besar)
oengan metooe 5u55|e sort. Hasll urutan oata pass satu (tabap satu)
aoalab:
A. 0 4 2 8 C. 0 8 2 4
8. 0 4 8 2 D. 0 2 4 8
4. Paoa oata 0 6 3 2 4, akan ollakukan mox|mum se|ect|on sort secara
oscend|ng, maka paoa langkab pertama, urutan oata yang terjaol aoalab:
A. 0 2 6 3 4 C. 0 4 3 2 6
8. 0 2 3 4 6 D. 0 3 6 2 4
5. Pengurutan aoalab proses untuk:
A. mencarl elemen sebuab llst
8. mengecek barga elemen tertentu
C. pengaturan kemball elemen keoalam urutan tertentu
D. menyeoerbanakan persoalan oengan cara memecab ke persoalan yang
leblb kecll
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
218 Pengurut an
PAGE 10
Latihan
1. Mlsal teroapat recoro mabaslswa sebagal berlkut :
- nlm mabaslswa (tlpe oata lnteger)
- nama mabaslswa (tlpe oata strlng, panjang ma 15 cbar)
- tabun lablr (tlpe lnteger)
- umur (tlpe real)
8uat algorltma oengan menggunakan procedure berparameter untuk
menampllkan kemball oata mabaslswa yang terurut beroasarkan tabun
lablr. Asumslkan teroapat 5 mabaslswa.
2. PT. MURAH HAT| memberl komlsl salesmannya beroasarkan ketentuan
sebagal berlkut :
8lla salesman berbasll menjual barang sehorgo Rp 500.000,-
maka ola akan menoapat komlsl sebesar 10 .
8lla leblb oarl Rp 500.000,-, untuk Rp 500.000,- pertama
komlslnya 10 , seoangkan slsanya menoapat 15 .
8lla perusabaan tersebut memlllkl 5 orang salesman, rancanglab algorltma
untuk menentukan komlsl yang olterlma oleb setop salesmannya, serta
totol koms yang telab olbayarkan oleb PT. MURAH HAT| kepaoa ke 5
salesman taol serta total penjualan yang berbasll ollakukan para salesman.
Aoapun spesltlkasl oarl algorltma aoalab:
a. Algorltma barus menggunakan procedure atau funct|on
berparaneter.
b. Output yang ollnglnkan aoalab memunculkan oata karyawan (nama
karyawan, besar penjualan, serta komlsl) yang terurut secara
descendng berdasarkan besar penjuaIan.
c. Output yang ollnglnkan:
LAPORAN KOM|S| KARYAWAN
NO NAMA PLN[UALAN KOM|S|
1.
:
5.
---------------------------------------------------------------------------------------------
Total 99999 99999
Pol i t ek ni k Tel k om Al gor i t ma dan Pemr ograman
Daftar Pustaka
1. Algorltbm Data Structures ano Problem Solvlng wltb C++. 1997.
Aoolson Wesley.
2. Mob. Sjukanl, Algorltma oan Struktur Data. Mltra Wacana Meola
3. |nggrlanl Llem, Dlktat Catatan Slngkat 8abasa C Agustus 2003. |T8
4. |nggrlanl Llem, Dlktat Kullab Dasar Pemrograman Aprll 2007. |T8
5. Rlnalol Munlr, Algorltma oan Pemrograman. |ntormatlka 8anoung
6. Scbaum, Programmlng wltb C++ 2
no
. 2000. McGraw-Hlll
7. Scbaum. Teacb yourselt C++ ln 21 oays. 2007. McGraw-Hlll
8. bttp://www.cs.aau.ok/~normark/prog3-
03/btml/notes/paraolgms_tbemes-paraolgms.btml akses paoa 18 [ull
2009 14.00
9. bttp://encyclopeola.tbetreeolctlonary.com/Programmlng20paraolgm
akses paoa 18 [ull 2009 14.00

Vous aimerez peut-être aussi