Anda di halaman 1dari 381

Suwarto_201100596

Algoritma dan
Pemrograman
1
Algoritma dan
Pemrograman
Penyusun
Suwarto
201100596
MI-3
GICI Busness
Schoo
Kampus Batu A|-
Batam
Suwarto_201100596
Algoritma dan
Pemrograman
2
Kata Pengantar
Assaamuaakum
Wr. Wb
Segaa pu| bag Aah SWT karena dengan karuna-Nya
modu kuah n dapat dseesakan.
Atas nama pribadi, saya sangat mengharga dan ngn
menyampakan terma kash kepada sumber-sumber
dan penyuntng yang teah memberkan tenaga, pkran,
dan waktu sehngga modu kuah n dapat tersusun.
D duna n tdak ada yang sempurna, oeh karena tu
kam harapkan para pengguna buku n dapat
memberkan masukan perbakan dem pengembangan
sean|utnya.
Semoga Modul Kuliah n dapat memberkan manfaat
dan membantu seuruh yang membutuhkan.
Amn
.
Wassaamuaakum Wr.
Wb.
Batam, De s 2 0 1 1
Suwarto
201100696
Daftar
Is
Kata Pengantar
..................................................................................
.......iii
Daftar Isi
..................................................................................
.................iv
1 Pendahuluan
..................................................................................
.1
Komputer Elektronik
...................................................................................2
Komponen Komputer
..................................................................................2
Algoritma ..............................................................................
.....................3
Program ................................................................................
.....................4
Bahasa Pemrograman
................................................................................4
Kasfkas Menurut Generas
......................................................................4
Kasfkas Menurut Tngkatan
.....................................................................6
Flowchart ..............................................................................
.....................8
Pseudocode ...........................................................................
...................11
2 Flowchart dan Pseudocode
...........................................................1
Flowchart ..............................................................................
...................14
Pengamban Keputusan
...........................................................................14
Penguangan
Proses..................................................................................1
8
Pseudocode ...........................................................................
...................20
Struktur agortma
....................................................................................20
!ipe Data" Operator dan #untunan
...............................................2$
3.1 Tpe Data Dasar
..............................................................................25
3.2
Variabel.................................................................................
.........28
3.3
Konstanta...............................................................................
........34
3.4 Operator
........................................................................................35
3.5 Urutan
Operasi...............................................................................4
1
3.6 Runtunan
.......................................................................................42
$
Pemilihan...................................................................
....................%1
4.1 Bentuk Umum IF dan
Varasnya.....................................................53
4.2 Terapan bentuk-bentuk IF
..............................................................58
4.3 Bentuk Umum CASE dan varasnya
................................................63
4.4 Terapan bentuk-bentuk CASE
.........................................................66
4.5 Konvers Struktur IF dan CASE ke Bahasa C
.....................................68
% Pengulangan
..................................................................................
&'
5.1 Konsep Pengulangan
......................................................................81
5.2 intaks !"#$E
................................................................................82
6
5.3 Sntaks DO.WHILE
.........................................................................90
5.4 intaks FOR
....................................................................................98
5.5 intaks Pengulangan Bersarang
...................................................106
5.6 intaks BREAK dan %O&'#&UE
......................................................111
( Array dan !ipe Data )entu*an
....................................................12%
6.1 Array
............................................................................................1
26
6.1.1 Arra( Satu Dmens
.......................................................................126
6.1.2 Array Dua
Dmens .......................................................................130
6.1.3 Array Mut-Dmens
.....................................................................135
6.2 Tpe Data Bentukan
......................................................................136
6.3 Kombnas Tpe Bentukan dan Arra(
.............................................140
6.3.1 Tpe Data Bentukan d daam arra(
..............................................140
6.3.2 Arra( d daam Tpe Data Bentukan
..............................................144
6.3.3 Arra( dar Tpe Bentukan yang Mengandung Arra(
......................148
+ Pemrograman ,odular
...............................................................1%&
7.1 )e*inisi Pemrograman Modular
...................................................159
7.2 Variabel $okal dan Variabel +lobal
...............................................160
7.2.1 Varabe
Loka...............................................................................160
7.2.2 Varabe Goba
.............................................................................161
7.3 Fungsi
..........................................................................................16
7
1
7.4
Prosedur..................................................................................
.....169
7.5 Fungsi dan Prosedur (ang telah terde*inisi
...................................174
7.6 Fungsi Rekursi*
.............................................................................175
7.7 Unit
..............................................................................................
177
& ,esin Kara*ter
............................................................................1&$
&.
Pencarian....................................................................
.................2''
- Pengurutan ./orting0
...................................................................221
9.1 Pengertan Sort
............................................................................222
9.2 Bubbe Sort
..................................................................................222
9.3 Seecton Sort
...............................................................................226
9.3.1 Ma,imum election ort Ascending
..............................................227
9.3.2 Ma,imum election ort )escending
............................................231
Output yang dhaskan:
..........................................................................234
9.3.3 Minimum election ort
Ascending...............................................234
Output yang dhaskan:
..........................................................................237
9.3.4 Minimum election ort
)escending.............................................237
9.4 Inserton Sort
...............................................................................240
Daftar Pusta*a
...................................................................................
8
.......vi
Pendahulua
n
9
1 Pendahuluan
1verview Komputer sudah men|ad aat bantu kehdupan
manusa sehar-har. Tanpa bantuan manusa, komputer hanya
akan men|ad seonggok mesn yang tdak bsa meakukan
apa-apa. Program men|ad "roh" yang dapat membuat
komputer dapat beker|a dan member bantuan kepada
manusa. Daam membuat program harus meau beberapa
tahapan, saah satunya adaah tahap desan. Supaya
perancangan program dapat dkomunkaskan dengan orang
an maka, perancangan program harus menggunakan notas
yang standar dan mudah untuk dbaca dan dpaham.
!u2uan
1. Memaham bagamana komputer menangan
data eektronk
2. Memaham komponen yang terbat daam
memproduks nformas
3. Memaham perbedaan bahasa pemrograman d
setap tngkatan
Komputer Elektronik
Komputer d era modern sepert sekarang n, sudah
men|ad kebutuhan untuk mendukung aktvtas yang
dakukan oeh manusa. Bentuk fsk dar komputer pun |uga
beragam, kompak dan semakn prakts.
Seuruh perangkat eektronk pada umumnya
terdapat sebuah
komputer kec yang berfungs sebaga otak atau
pusat pengenda
perangkat tersebut.
Perangkat komputer modern dapat beker|a apaba
terdapat energ strk, demkan pua dengan data yang
doah. Dengan dtemukannya energ strk, seuruh data
daam bentuk apapun sangat dmungknkan untuk
drepresentaskan ke daam bentuk eektronk.
Gambar 1. Komputer
eektronk
Komponen Komputer
D daam sebuah komputer eektronk terdapat beberapa
komponen/perangkat yang berfungs untuk mengoah data.
Secara umum, komponen komputer terbag men|ad 3 (tga)
bagan, yatu:
Input Process Output
Aat nput berfungs sebaga meda untuk memasukkan
data ke daam komputer. Contoh aat nput adaah:
keyboard, mouse, mcrophone, d.
Aat pemroses d daam komputer berfungs untuk meakukan
pengoahan data men|ad nformas. Contoh aat pemroses
adaah: prosesor.
Aat output berfungs sebaga meda untuk menyampakan
nformas has pengoahan, bsa daam bentuk tampan
menggunakan montor ataupun daam bentuk cetakan
menggunakan prnter.
Sesungguhnya, komputer tu hanyaah mesn eektronk
yang tersusun
atas komponen-komponen d atas. Namun dengan adanya
energ strk dan perangkat unak, baruah komponen komputer
dapat aktf dan kemudan dgunakan untuk beker|a.
Algoritma , Defnisi dan Sejarahnya
Dens Agortma adaah "Urutan angkah-angkah ogs
penyeesaan masaah yang dsusun secara sstemats dan
ogs".
Kata agortma dturunkan dar nama beakang seorang tokoh
matematkawan Persa bernama Muhammad bn Musa a-
Khuwarzm (ahr tahun 730an, menngga antara tahun 835
dan 850). A-Khuwarzm berasa dar propns Khorasan d
negara yang saat n bernama Uzbekstan. Un Sovet
menghormat |asa-|asa A-Khuwarzm dengan membuat
gambar drnya sebaga perangko.
A-Khuwarzm dbaca orang barat men|ad Agorsm, A-
Khuwarzm menus buku yang ber|udu Ktab A |abar Wa-
Muqabaa, yang artnya "Buku pemugaran dan pengurangan"
(The book of restoraton and reducton). Dar buku n kta
memperoeh kata A |abar (Agebra)
Perubahan kata Agorsm men|ad Agorthm muncu karena
Agorsm serng dkerukan dengan Arthmetc, sehngga akhran
-sm berubah men|ad -thm.
Daam bahasa Indonesa Agorthm dserap men|ad Agortma.
Agortma merupakan metode umum yang dgunakan
untuk menyeesakan kasus-kasus tertentu |1|. Daam
menuskan agortma, dapat dgunakan bahasa natura atau
menggunakan notas matematka, sehngga mash beum dapat
d|aankan pada komputer.
Daam kehdupan sehar-har, kta sudah meakukan
penyusunan agortma untuk menyeesakan permasaahan atau
tantangan yang dhadap. Sebaga contoh, pada saat dmnta
untuk membuat teur dadar. Sebeum membuat agortmanya,
kta peru mendefnskan masukan (nput) dan uaran
(output) terebh dahuu, dmana nput berupa teur mentah,
dan output berupa teur dadar yang sudah matang.
Susunan agortmanya sebaga
berkut:
1. Nyaakan ap kompor
2. Tuangkan mnyak ke daam wa|an
3. Pecahkan teur ayam ke daam mangkok
4. Tambahkan garam secukupnya
5. Aduk campuran teur dan garam
6. Tuang adonan teur ke daam wa|an
7. Masak teur hngga matang
Agortma akan ebh bak |ka dtus secara sstemats
menggunakan beberapa skema, daam buku n akan dbahas
mengena skema Flowchart dan Pseudocode.
Program
Program adaah formuas sebuah agortma daam bentuk
bahasa pemrograman|1|, sehngga sap untuk d|aankan pada
mesn komputer. Membuat program sepert membertahukan
apa yang harus dakukan kepada orang an. Sebaga contoh,
pada saat kta membertahukan agortma membuat teur
dadar kepada orang an, kta sudah meakukan
pemrograman.
Pemrograman membuat teur dadar kepada orang an
akan ebh mudah karena orang tersebut sudah mengetahu
apa tu teur dadar. Pada angkah yang ke-3 dmnta untuk
memecahkan teur, bagamana cara orang tersebut
memecahkan teur tentunya sudah dketahu dan kta tdak
peru men|easkan terau det.
Lan hanya |ka kta harus menyuruh komputer untuk
meakukan apa yang kta ngnkan. Komputer sebenarnya
hanyaah sebuah mesn bodoh yang tdak memk emos dan
kemampuan bersosasas. Oeh karena tu, untuk membuatnya
men|ad mudah, dperukan penyusunan agortma yang benar.
Mendesan agortma yang benar dan menter|emahkannya
ke daam bahasa pemrograman bukanah ha yang mudah
karena bahasa pemrograman memk tata penusan sendr.
Bahasa
Pemrograman
Bahasa pemrograman adaah bahasa buatan yang
dgunakan untuk mengendakan peraku dar sebuah mesn,
basanya berupa mesn komputer|2|, sehngga dapat dgunakan
untuk membertahu komputer tentang apa yang harus
dakukan|3|.
Struktur bahasa n memk kemrpan dengan bahasa
natura manusa, karena |uga tersusun dar eemen-eemen
dasar sepert: kata benda dan kata ker|a serta mengkut aturan
untuk menyusunnya men|ad kamat.
Klasifi*asi ,enurut
3enerasi
1. First +eneration $anguage (1GL)
Bahasa pemrograman n berupa kode-kode mesn
yang hanya bsa dpaham oeh mkroprosesor.
2. econd +eneration $anguage (2GL)
Bahasa pada generas n adaah assembl( language,
dmana bahasa n mash menggunakan kode-kode
yang dsebut dengan mnemonic. Bahasa assembl(
dsebut sebaga generas kedua karena bahasa n
bukan bahasa as mkroprosesor, meskpun begtu
programer tetap harus mengetahu keunkan dar
masng- masng mkroprosesor (regster dan |ens
nstruks).
3. Generas ketga
Bahasa pemrograman generas ketga senga|a
ddesan supaya mudah dpaham oeh manusa. Pada
generas n mua dkenakan stah varabe, tpe
data, ekspres a|abar dan sudah mendukung
pemrograman terstruktur.
Contoh bahasa: FORTRAN, COBOL, ALGOL, BASIC, C,
C++, Pasca,
|ava.
4. Generas keempat
Pada generas n, bahasa pemrograman ddesan
untuk mengurang e**ort dan mempercepat proses
pembuatan program. Pada 3GL, pembuatan program
membutuhkan waktu yang ama dan mudah seka
ddapat error. Pada 4GL, teah menggunakan
metodoog dmana sebuah perntah dapat
menghaskan beberapa nstruks 3GL yang kompeks
dengan sedkt error|4|.
Contoh
bahasa:
a. Pemrograman umum : DataFex, WnDev,
PowerBuder b. Bass data : SOL, Progress 4GL
c. Manpuas data, anass dan peaporan :
ABAP, Matab, PL/SOL.
5. Generas kema
Bahasa pemrograman generas kema dsebut
sebaga constraint-programming atau declarati.e-
programming. Program tdak dtuskan daam bentuk
agortma meankan
dtuskan batasan atau fakta dar sebuah ngkup
masaah, sehngga program akan menghaskan uaran
daam bentuk sous|5|.
Bahasa pemrograman n dgunakan untuk
membangun sstem kecerdasan buatan dan beum
dgunakan secara meuas d duna ndustr. Contoh
bahasa: Proog, LISP, Mercury.
Klasifi*asi ,enurut !ing*atan
/0 $ow-le.el programming language
Tngkat bahasa pemrograman n dsebut "rendah"
1low le.el2 bukan karena possnya berada d bawah,
meankan karena kurangnya abstraks
(penggambaran kode nstruks) antara bahasa natura
dengan bahasa mesn. Oeh karena tu, bahasa d
tngkat n serng dsebut sebaga bahasa mesn.
Bahasa pemrograman yang masuk kategor n adaah
bahasa mesn tu sendr (1GL) dan bahasa assembl(
(2GL).
2. Hgh-eve programmng anguage (HLL)
Bahasa pemrograman d tngkat n memk abstraks
yang ebh banyak dan terdapat kemrpan dengan
bahasa natura (bahasa Inggrs), ebh mudah untuk
dgunakan dan mudah untuk dpndahkan antar
patform.
3. Very hgh-eve programmng anguage (VHLL)
Bahasa n memk abstraks yang ebh tngg
dbandngkan HLL, dan dgunakan untuk menun|ang
produktftas programer profesona. Basanya VHLL
dgunakan hanya untuk tu|uan yang spesfk, msanya
untuk keperuan bsns: mengoah data, membuat
aporan, dsb.
Paradigma Pemrograman
Paradgma pemrograman merupakan sebuah cara pandang
seorang programmer daam menyeesakan sebuah
masaah dan memformuaskannya kedaam sebuah bahasa
pemrograman. Terdapat beberapa paradgma
pemrograman, antara an:
Paradgma Imperatf
Int dar paradgma n adaah men|aankan sebuah urutan
perntah,
|aankan satu perntah kemudan |aankan perntah yang
sean|utnya.
Sebuah program mperatf tersusun dar sekumpuan urutan
perntah yang akan d|aankan oeh komputer.
Pemrograman prosedura merupakan saah satu contoh
dar paradgma n, dan serngka danggap sebaga
sebuah sebuah paradgma yang sama.
Ide dasarnya adaah dar mode komputer Von
Neumann.
Eksekus angkah-angkah komputas datur oeh
sebuah struktur kontro.
Berdasarkan urutan-urutan atau
sekuensa.
Program adaah suatu rangkaan prosedur untuk
memanpuas data. Prosedur merupakan kumpuan
nstruks yang dker|akan secara berurutan.
Contoh bahasa pemrograman: Fortran, Ago,
Pasca, Basc, C
Paradgma Fungsona
Pemrograman Fungsona adaah sebuah paradgma yang
men|adkan fungs matematka sebaga penentu daam
eksekus komputas. Fungs tersebut merupakan dasar
utama dar program yang akan d|aankan. Paradgma n
ebh banyak dgunakan d kaangan akadems darpada
produk komersa, terutama yang murn fungsona.
Ide dasar dar matematka dan teor
fungs.
Beberapa contoh bahasa fungsona adaah APL,
Erang, Haske, Lsp, ML, Oz dan Scheme.
Paradgma Logka
Umumnya dgunakan pada doman yang berhubungan
dengan ekstraks pengetahuan yang berbass kepada fakta
dan reas. Daam paradgma n, ogka dgunakan secara
murn untuk representas bahasa dekaratf yang
kebenarannya dtentukan oeh programmer, sedangkan
pembukt- teorema atau mode pembangkt dgunakan
sebaga pemecah masaah.
Berasa dar pembuktan otomats ddaam
nteegensa buatan. Berdasar kepada aksoma,
aturan dan query.
Eksekus program men|ad proses pencaran secara
sstematk daam sekumpuan fakta, dengan
menggunakan sekumpuan aturan.
Beberapa contoh bahasa pemrograman: ALF, Fr,
Gde, Mercury, Oz, Cao, Vsua Proog, XSB, and AProog
Paradigma )erorientasi 1bye*
Pemrograman berorentas obyek muncu untuk mengatas
masaah kompekstas dar sebuah perangkat unak sehngga
kuatas dar perangkat unak tersebut dapat dkeoa dengan
ebh mudah. Caranya adaah dengan memperkuat modularit(
dan reusabilit( ddaam perangkat unak tersebut.
Pemrograman berorentas obyek menggunakan obyek dan
nteraks antar obyek daam penyusunan sebuah perangkat
unak. Paradgma n semakn banyak dgunakan karena ebh
mudah daam menggambarkan konds yang ada pada duna
nyata.
Ide dar nteraks antar obyek yang ada pada duna nyata.
Antar obyek sang bernteraks dengan sang
mengrmkan pesan
(message).
Terdapat beberapa karakterstk utama, yatu:
Abstraks, Enkapsuas, Pewarsan dan
Pomorfsme.
Flowhart
Daam membuat agortma, dperukan suatu mekansme
atau aat bantu untuk menuangkan has pemkran mengena
angkah-angkah penyeesaan masaah yang sstemats dan
terurut. Pada dasarnya untuk bsa menyusun sous dperukan
kemampuan problem-sol.ing yang bak. Oeh karena tu,
sebaga sarana untuk meath kemampuan tersebut terdapat
sebuah tool (aat) yang dapat dgunakan, yakn *lowchart.
Secara forma, *lowchart ddefnskan sebaga skema
penggambaran
dar agortma atau proses|8|. Tabe berkut menampkan
smbo-smbo yang dgunakan daam menyusun *lowchart.
Tabe 1.1 Smbo-smbo daam *lowchart
!erminato
r
Sebaga smbo START atau
END untuk memua atau
mengakhr fowchart.
"nput#Outp
ut
Dgunakan untuk menuskan
proses
menerma data atau
mengeuarkan data
Pros
es
Dgunakan untuk menuskan
proses yang dperukan,
msanya operas artmatka
$onditional # Deision
Dgunakan untuk menyatakan
proses yang membutuhkan
keputusan
Preparation
Dgunakan untuk
memberkan na awa
Arrow
Sebaga penun|uk arah
dan aur proses
$onnetor %On&page'
Dgunakan untuk
menyatukan
beberapa arrow
$onnetor %O((&
page'
Dgunakan untuk
menghubungkan fowchart
yang harus dgambarkan pada
haaman yang berbeda.
Basanya pada smbo n
dber nomor sebaga
Display
Dgunakan untuk
menampkan data ke monitor
Berkut n adaah fowchart untuk menggambarkan kegatan
membuat teur dadar:
START
Nyalakan api
kompor
Tuangkan minyak ke wajan
Pecahkan telur ke dalam
mangkok
Tambahkan garam
Aduk campuran telur dan garam
Tuang adonan telur dan garam ke
dalam wajan
Masak telur hingga matang
END
Dagram 1.1 Fowchart membuat teur dadar
Dengan menggunakan fowchart, tahapan-tahapan
pentng daam agortma dapat dtun|ukkan dengan dagram
d atas. Aran proses dtun|ukkan dengan arah panah atau
dsebut dengan fownes.
Keuntungan menggunakan *lowchart adaah
penggunaan dagram untuk menggambarkan tahapan proses,
sehngga ebh mudah dhat dan dpaham. Namun demkan,
fowchart |uga memk keemahan, yakn |ka dgunakan
untuk menggambarkan proses atau agortma untuk skaa
kasus yang besar, maka akan dbutuhkan banyak kertas|7|.
Pseudocode
Skema an yang dapat dgunakan untuk menyusun
agortma adaah pseudocode. Pseudocode adaah bentuk
nforma untuk mendeskrpskan agortma yang mengkut
struktur bahasa pemrograman tertentu.
Tu|uan dar penggunaan pseudocode adaah supaya :
1. ebh mudah dbaca oeh manusa
2. ebh mudah untuk dpaham
3. ebh mudah daam menuangkan de/has pemkran
Pseudocode serng dgunakan daam buku-buku
tentang mu komputer ataupun pubkas mah untuk
men|easkan urutan proses atau metode tertentu. Seorang
programer yang ngn yang ngn menerapkan agortma
tertentu, terutama yang kompeks atau agortma baru,
basanya akan memuanya dengan membuat deskrps daam
bentuk pseudocode. Seteah pseudocode tersebut |ad, maka
angkah sean|utnya hanya tngga menter|emahkannya ke
bahasa pemrograman tertentu. Pseudocode n basnya
dsusun daam bentuk yang terstruktur dengan pendekatan
sekuensa (berurutan) dar atas ke bawah.
Agortma yang men|easkan tentang proses membuat
teur dadar,
sebenarnya sudah menerapkan penggunaan pseudocode.
Sesungguhnya tdak ada suatu standar untuk menyusun
agortma menggunakan pseudocode.
Oeh karena pseudocode ebh cocok dgunakan untuk
menyusun agortma dengan kasus yang besar dan
kompeks, maka sangat dan|urkan kepada programer
pemua untuk mua menggunakan pseudocode daam
menyeesakan masaah. Berkut adaah contoh pseudocode
yang dbandngkan dengan bahasa pemrograman C++.
Tabe 1.2 Notas pseudocode dan
bahasa C++ Pseudocode
C++
f saes > 1000
then bonus
saes * 25%
saary 2000000 +
bonus
endf
nt saes;
saes=1001;
f (saes > 1000)
{bonus = saes * 0.25;
24 Flowchart dan
Pseudocode
output(saary)
saary = 2000 + bonus;
}
cout << "Saary : "<<saary;
2 Flowchart dan
Pseudocode
1verview Agortma dapat dtuskan ke daam berbaga
bentuk, namun struktur yang rap dan mengkut aturan
tertentu akan membuat agortma ebh mudah untuk dbaca
dan dpaham. Sean|utnya, agortma yang teah tersusun rap
akan dmpementaskan ke bahasa pemrograman.
!u2uan
1. Mengena bentuk pengamban keputusan
menggunakan fowchart
2. Mengena operas
booean
3. Mengena bentuk penguangan
menggunakan fowchart
4. Memaham tu|uan penggunaan pseudocode daam
menyusun agortma
Flowhart
Sepert teah d|easkan pada bab sebeumnya bahwa
fowchart dgunakan untuk menggambarkan agortma atau
proses. Fowchart dsusun menggunakan smbo-smbo,
maka dapat memberkan gambaran yang efektf dan |eas
tentang prosedur ogka.
Daam ha meakukan koreks atau anass dar suatu
permasaahan, fowchart dapat dengan mudah untuk dhat
dan dkomunkaskan. Ha n dkarenakan fowchart dsusun
atas smbo-smbo yang mengkut suatu standar tertentu.
Pengambilan Keputusan
Pengamban keputusan peru dakukan apaba harus
menentukan satu phan dar (mnma) dua phan yang ada.
Daam ha mengamb keputusan, peru dketahu konds yang
sedang dhadap. Konds n bsa berupa pernyataan booean
atau proses perbandngan. Daam fowchart, smbo yang
dgunakan untuk pengamban keputusan adaah
berbentuk beah ketupat.
a
kondisi
Tidak
Gambar 2.1 Smbo pengamban
keputusan
Smbo pengamban keputusan hanya memk satu buah
nput dan dua buah output yang dgunakan untuk
memfastas has dar pengu|an konds, yatu "Ya" atau
"Tdak", "True" atau "Fase".
Daam meakukan pengu|an konds, terdapat
beberapa notas yang dapat dgunakan, msanya
menggunakan notas reasona berkut :
Tabe 2.1 Notas reasona
> Lebh besar dar
< Kurang dar
> Lebh besar atau sama
dengan
Kurang dar atau sama
dengan
<> Tdak sama dengan
Daam proses pengamban keputusan, kadang kaa
terdapat beberapa syarat sekagus. Untuk menangan ha n
dapat dgunakan ekspres a|abar booean. A|abar booean
merupakan kakuus ogka yang dgunakan untuk
menentukan na kebenaran dar suatu ekspres ogka |10|.
Teknk a|abar n dkembangkan oeh George Booe pada
tahun 1930an, sebaga penghargaan atas penemuannya
maka a|abar n dber nama sesua dengan nama beakang
beau.
Daam a|abar booean terdapat tga buah operas
dasar, yatu : AND, OR, NOT ketga-tganya dapat dgunakan
secara ndependen atau dapat dgunakan sekagus. Keuaran
(output) dar a|abar n adaah na benar (TRUE) atau saah
(FALSE).
Berkut n adaah tabe yang menun|ukkan ketga has
operas a|abar booean :
Tabe X AND Y
4 5 4 A6D 5
T T T
T F F
F T F
F F F
Tabe X OR Y
4 5 4 1# 5
T T T
T F T
F T T
F F F
Tabe NOT X
4 61! 4
T F
F T
$ontoh
)*+
Pemmpn sebuah perusahaan otomotf peru menentukan
besarnya bonus yang akan dberkan kepada para
pegawanya yang beker|a sebaga account executve. |ka
terdapat pegawa yang daam buan n teah men|ua mob
ebh dar dua unt, maka akan mendapatkan bonus sebesar
Rp 1.000.000,- kemudan pegawa yang bsa men|ua mob
tepat dua buah maka, akan mendapatkan bonus Rp 500.000,-
namun |ka pegawa yang daam buan n pen|uaannya
kurang dar dua unt maka, pegawa tersebut tdak
mendapatkan bonus.
|ka kta gambarkan persoaan d atas
menggunakan fowchart maka, akan men|ad sepert berkut :
START
!nput
"jumlah penjualan#
jumlah
a penjualan$ %
unit&
Tidak
'onus (
)*+++*+++
jumlah
a
penjualan( %
unit&
Tidak
'onus (
,++*+++
'onus (
0
-utput
"'onus#
END
Gambar 2.2 Fowchart penghtungan bonus
Pengulangan
Proses
Daam beberapa kasus, serngka terdapat proses
yang harus dakukan secara beruang-uang, sebaga contoh
yang pang sederhana adaah proses ber|aan kak. Untuk
bsa mencapa tu|uan, kta harus meangkahkan kak secara
beruang-uang supaya dapat menempuh |arak tertentu dan
akhrnya sampa tu|uan.
Pada kasus yang berhubungan dengan pengoahan
nformas menggunakan komputer, terdapat proses-proses
yang harus dakukan secara beruang, mua dar nput
data, proses dan output. Program yang bak adaah program
yang bsa mengoptmakan kner|a komputer, dengan cara
menggunakan kemba program atau sekumpuan program
dengan proses tertentu. Atau dengan kata an terdapat
bagan program yang dapat dpangg/dgunakan secara
beruang-uang. Ha n akan mempermudah peker|aan
programmer daam menghaskan sous.
$ontoh
)*)
Seorang staff IT dmnta untuk menampkan data dar
sebuah tabe dmana d daamnya terdapat seratus bars data.
|ka staff tersebut harus menampkan satu per satu, tentunya
akan membutuhkan banyak kode program dan program akan
men|ad tdak efektf. Bagamana cara menyeesakan
persoaan staff IT tersebut?
Sous
:
Daam kasus n yang dmnta adaah bagamana
menampkan data sebanyak
100 bars tanpa harus menggunakan proses output
sebanyak 100 ka. Metode yang dgunakan adaah
penguangan.
Daam proses penguangan terdapat 3 (tga) ha
pentng, yatu:
1. Insasas (penentuan konds/na awa)
2. Proses
3. Konds berhent
Untuk kasus menampkan data, dapat dtentukan bahwa
|umah bars yang akan dbaca adaah 100. Bars akan dbaca
mua dar bars pertama (bars =
1). Proses yang dakukan adaah membaca dan menampkan
snya ke ayar (output). Pembacaan akan berhent |ka bars
yang dbaca sudah mencapa bars ke-100.
|ka dgambarkan menggunakan fowchart maka, akan tampak
sebaga berkut:
START
.umlah baris ( )++
'aris ( )
'aris / .umlah
baris &
a
-utput
"Data0'aris1#
'aris (
'aris 2 )
Tidak
END
Gambar 2.3 Fowchart untuk menampkan 100 bars
data
Dar gambar dapat dhat bahwa proses output data hanya
muncu satu ka, namun karena proses output dakukan
secara beruang-uang maka, pembacaan tehadap 10 bars
data dapat dakukan.
Pseudocode
Pada bab 1 teah d|easkan sebeumnya mengena
keuntungan daam menuangkan ogka dan agortma
menggunakan pseudocode. Daam menyeesakan kasus yang
besar dan kompeks, msanya membuat apkas untuk
menangan proses bsns sebuah perusahaan maka, yang
pang cocok dgunakan daam menuskan agortma adaah
pseudocode.
Sesungguhnya tdak ada aturan baku daam penusan
pseudocode, namun karena banyaknya bahasa pemrograman
yang beredar saat n maka, aturan penusan pseudocode
darahkan untuk menyerupa aturan penusan bahasa
pemroraman tertentu. Daam buku n akan dgunakan aturan
penusan pseudocode yang mendekat bahasa pemrograman
Pasca.
/tru*tur algoritma
Struktur agortma yang dgunakan mengacu pada
struktur pemrograman bahasa Pasca yang terdr dar 3 (tga)
bagan, yatu :
.3D34
DE54ARAS!65AM3S DATA
'ADAN PR-7RAM
Gambar 2.4 Struktur
program
Pada bagan 7udul, dgunakan sebaga tempat untuk
mencantumkan nama atau |udu program. Terdapat aturan
penusan |udu, yakn:
1. Tdak dawa dengan angka atau karakter
sean aphabet
2. Tdak terdapat karakter spas atau karakter
sean aphabet kecua karakter underscore _
(sebaga penggant karakter spas).
Contoh:
Agortma berhtung; Benar
Agortma konvers bangan; Saah
Agortma perhtungan_pa|ak; Benar
Agortma 2bangan; Saah
Agortma *kec; Saah
Pada bagan de*larasi, dgunakan sebaga tempat
untuk mencantumkan varabe, konstanta, dan record.
Mengngat cara eksekus kode program dakukan berurut dar
atas ke bawah maka, dekaras detakkan d awa program
seteah bagan |udu. Ha-ha yang ddekaraskan pada bagan
n dgunakan sebaga reservas aokas memor( untuk
penympanan data dan akan dgunakan seama program
beker|a.
Pada bahasa pemrograman Pasca, bagan dekaras
|uga berfungs untuk mendekaraskan nama functon dan
procedure.
Contoh:
Agortma
Coba; Kamus
data
x : nteger;
s : strng;
...
Pada bagan badan program, dgunakan untuk
meetakkan semua agortma atau kode-kode program. Bagan
n dawa dengan BEGIN dan dakhr dengan END. Semua
agortma atau kode program wa|b dtuskan dantara kedua
penanda tersebut.
Contoh:
Agortma
Heo
Kamus
data s : strng BEGIN
s "Hao!"
Tanda awa agortma
output(
s) END.
Tanda akhr agortma
"nput dan Output
Daam mengawa suatu proses tertentu, mnma
membutuhkan suatu masukan berupa data 1input2, karena
data nah yang nantnya akan dproses dan akan men|ad
keuaran 1output2.
Contoh :
Menerma masukan data dar user
(pengguna) Agortma
Masukkan_data
Kamus data
BEGIN
nput(x) /*x adaah varabe
penampung na*/ END.
Memasukkan na tertentu pada varabe
Agortma Masukkan_na
Kamus data
BEGIN
x 5 /*panah ke kr arah
masuknya na*/ END.
Menampkan s varabe ke ayar montor
Agortma Tampan
Kamus data
BEGIN
output(x) /*x adaah varabe yang
bers na*/ END.
#ang*uman
1. Fowchart dgunakan untuk menggambarkan agortma atau
proses
2. Daam meakukan pengu|an konds dgunakan notas
reasona
3. Smbo daam fowchart yang dgunakan untuk
pengamban keputusan adaah beah ketupat
4. A|abar booean merupakan kakuus ogka yang
dgunakan untuk
menentukan na kebenaran dar suatu ekspres ogka
5. Program yang bak adaah program yang bsa
mengoptmakan kner|a komputer, dengan cara
menggunakan kemba program atau sekumpuan
program dengan proses tertentu
6. Pseudocode cocok dgunakan untuk menuskan agortma
dengan kasus yang kompeks dan berskaa besar
39 Tipe data" operator dan
Runtutan
!ipe Data" Operator dan
#untunan
1verview Tpe data, operator, dan runtunan merupakan
suatu kesatuan konsep yang pang mendasar ddaam
pemprograman komputer, karena tpe-tpe data dasar dan
operator dapat membentuk berbaga macam ekspres yang
akan dgunakan daam program.
Sedangkan runtunan merupakan konsep dasar yang
dapat memberkan
gambaran tentang cara ker|a sebuah program daam
komputer atau dengan kata an adaah urutan peng-
eksekusan parntah pada satu argumen.
Tipe data" operator dan
Runtutan
4
!u2uan
1. Mengena dan membedakan tpe-tpe
data dasar
2. Memaham penggunaan tpe-tpe data dasar
daam program
3. Memaham operator dan penggunaannya
daam program
4. Memaham konsep runtunan daam
program
3.1 !ipe Data
Dasar
Tpe data adaah hmpunan na yang dapat dmk oeh
sebuah data. Tpe data menentukan apakah sebuah na
dapat dmk sebuah data atau tdak, serta operas apa
yang dapat dakukan pada data tersebut. Contoh tpe data
daam duna nyata adaah bangan buat. |ka sebuah
data, msanya umur, harus berupa bangan buat maka
dapat dpastkan bahwa
25, 13, 7 dapat men|ad na umur, sedangkan 7.5, 19.655
bukan merupakan contoh dar na umur.
Contoh bangan buat n dapat kta hat daam kasus
sehar -har khususnya daam ha pencacahan (Ingat kemba
bangan cacah : 1,2,3,4,..... yang merupakan hmpunan
bagan dar hmpunan bangan buat). Msanya |umah sswa
daam keas ada 20. 20 adaah bangan buat. Tdak akan
dtemukan pernyataan : |umah sswa daam keas ada 20,5.
Contoh yang an adaah |umah mob yang dparkr d tempat
parkr. Kta akan menggunakan bangan buat daam kasus
n. Tdak pernah akan kta gunakan angka angka
50,33 atau 3 atau 40/7 sebaga |umah dar mob yang
sedang parkr.
Sean tu, msanya data nama seseorang yatu
Bambang Pamungkas yang merupakan sebuah deretan
hurup dan an sebaganya.Daam sebuah program, setap
varabe dan konstanta memk tpe data yang harus
ddekaraskan d awa program. Pendekaras tpe data
tersebut bertu|uan untuk menentukan besarnya tempat daam
memor yang akan dgunakan untuk menympan data pada
tersebut saat program d|aankan.
Tpe data dasar adaah tpe data yang dapat
angsung dgunakan.
Secara umum terdapat 2 tpe data dasar, yatu numeri* dan
*ategori*. Tpe data numerk terdr atas angka/ kumpuan
angka serta dapat mengaam operas perhtungan,
sedangkan tpe data kategork dapat berupa angka maupun
huruf namun tdak dapat mengaam operas perhtungan.
Berkut merupakan contoh beberapa tipe
data dasar :
1). Integer8 bilangan bulat
Integer adaah tpe data dasar berupa bangan yang
tdak mengandung pecahan desma. Tpe data n |uga
memk urutan, sehngga dapat dbandngkan satu
dengan annya.
Contoh nteger: 2 5 -10
135 2008
Secara teorts, tpe data nteger tdak memk batasan,
yatu dar mnus tak hngga hngga pus tak hngga.
Namun daam pemrograman yang menggunakan bahasa
pemprograman C++, secara umum dkena beberap
macam tpe data nteger, yatu:
'abel /0 'ipe data integer
!ipe 9*ura
n
6ila
i
/hort 8 bt -128 .. 127
Int 16 bt -32768 .. 32767
:ong 32 bt -2147483648 .. 2147483647
#eal8 bilangan riil
Rea adaah tpe data dasar berupa bangan yang
memk pecahan desma. Daam pemrograman, na
dengan tpe data n harus dtus dengan sebuah ttk
sebaga pemsah bangan utuh dan bangan
pecahannya. Tpe data n dgunakan untuk perhtungan
yang mebatkan bangan pecahan, sepert perhtungan
kosnus, akar persamaan, dan sebaganya. Tpe data n
|uga memk urutan, sehngga dapat dbandngkan satu
dengan annya.
Contoh rea: .5 0.17 -3.465 92.0
4.3000+E9
Secara teorts, tpe data rea |uga tdak memk
batasan, yatu dar mnus tak hngga hngga pus tak
hngga. Namun daam pemrograman, secara umum
dkena beberapa macam tpe data rea, yatu:
'abel 30 'ipe data real
!ipe 9*uran 6ila
i
float
Double
32 bt
48 bt
2.9x10
-39
.. 1.7x10
38
5.0x10
-324
.. 1.7x10
308
Na pada tabe datas berbeda dengan na yang ada
pada tabe tpe data nteger, pada tabe datas na
untuk tpe data merupakan tngkat ketetan untuk
masng-masng tpe data, bukan berdasarkan rentang
na.
;har8 Kara*ter
Char adaah tpe data dasar yang terdr atas satu buah
angka, huruf, tanda baca atau karakter khusus. Untuk
menympan sebuah karakter, dperukan 1 byte atau 8
bt tempat ddaam memor. Daam sebuah
program, penusan tpe data char dawa dan dakhr
dengan tanda kutp ganda. Sean tu, terdapat sebuah
karakter kosong yang dsebut dengan null atau nil dan
dtuskan sebaga "".
Contoh char: "5" "A" "?"
"+" "$"
Perhatkan bahwa 5 adaah nteger sedangkan "5"
adaah char.
/tring
Strng adaah tpe data dasar yang berupa kumpuan
karakter dengan pan|ang tertentu. Meskpun berupa
kumpuan karakter, karena tpe data strng serng
dgunakan daam pemrograman, strng danggap
sebaga tpe data dasar. Untuk penympanan strng
ddaam memor, dbutuhkan 1 byte untuk tap
karakternya. Serupa dengan penusan karakter,
penusan sebuah strng |uga harus dawa dan dakhr
dengan tanda petk ganda. Strng |uga mengena nu
yang dtuskan dengan "".
Contoh
strng:
- "BANDUNG"
- "Poteknk Tekom Bandung"
- "ABC3456"
- "Lucu"
- "30202001"
- "z"
Perhatkan bahwa sebuah karakter tungga ("z")
|uga merupakan strng.
)oolean8 bilangan logi*a
Sebuah data booean memk tepat dua buah
kemungknan na, drepresentaskan sebaga Benar dan
Saah, atau True dan Fase, atau dapat |uga
dambangkan dengan 1 dan 0. Tpe data n
dapat dgunakan untuk pemhan dengan konds-konds
tertentu, dmana program harus memh aks apa yang
akan d|aankan dengan parameter tertentu.
Tpe data n pang serng dgunakan untuk range
yang mem dua buah na: uus - tdak uus, member -
bukan member,
.2
,aria-el
Varabe atau peubah adaah obyek yang nanya dapat
berubah-ubah daam sebuah program. Pada saat sebuah
varabe ddekaraskan, program
memesan tempat dengan ukuran tertentu (sesua tpe
datanya) pada memor untuk menympan na dar varabe
tersebut. Pemrogram dapat memberkan nama pada sebuah
varabe untuk mempermudah pemanggan varabe tersebut
d daam program. Pada saat mendekaraskan sebuah
varabe, pemrogram harus menyebutkan nama varabe dan
tpe data dar varabe tersebut.
Daam bentuk fowchart, dekaras varabe
dgambarkan sebaga sebuah proses. Msanya sebaga
berkut:
x : integer
nama : string
TB : real
+ambar /0 %ontoh deklarasi .ariabel dalam *lowchart
Contoh dekaras varabe daam psedeucode :
1. KAMUS DATA {awa dekaras varabe}
2. x : nteger
3. nama: strng
4. TB : rea
5. |ensKeamn : char
6. status : booean
Sebeum kta menuskan beberapa program daam bahasa
C++, ada baknya kta mengena terebh dahuu struktur dan
format penusan program daam bahasa C++.
1. // Contoh Program C++
2. #ncude <stdo.h>
3. /* Program Utama */
4. man() {
5. prntf("Seamat Datang");
6. return 0;
7. }
Pada contoh program datas, pada bars pertama
dtuskan dawaannya tanda doubleslash (//)0 Maksudnya
adaah sebaga komentar, artnya bars tersebut tdak akan
deksekus oeh program. Kta dapat menuskan apapun
seteah tanda tersebut dan beraku hanya satu bars.
Sedangkan untuk penusan komentar ebh dar satu bars
dgunakan tanda
/* .. */ dmana komentar dtuskan dantara tanda /* dan */
sepert tampak
pada bars ke 3 dan 4. Basanya tanda tersebut dgunakan
oeh programmer untuk member penanda atau keterangan
pada tap bars program sepert pada bars 5.
Pada bars kedua terdapat code #ncude <stdo.h>,
yang dawa dengan tanda crash (#). In dapat kta sebut
dengan preprocessor directi.e. preprocessor directi.e
merupakan perntah-perntah untuk membertahukan kepada
comper untuk meakukan berbagamacam defns sepert
menggunakan (include) fe brar msanya stdo.h, karena
ddaam fe tersebut mengandung beberapa fungs yang akan
dgunakan ddaam program.
Sedangkan pada bars ke 5 - 8 merupakan s dar
program. Pada bars ke 5 terdapat nstruks man() dmana
pada bars tersebut merupakan fungs utama atau program
utama. Maksudnya adaaha pada bars tersebut merupakan
penanda awa dar eksekus sebuah program. Untuk
awa nstruks dtanda dengan kurung kurawa. Sepert pada
program datas, pada bars ke-5 (tanda {) merupakan awa
dar program utama dan berakhr pada bars ke-8.
Pada bars dke-6 (prntf("Seamat Datang")) merupakan
nstruks untuk mencetak tusan "Seamat Datang" keayar.
Sedangkan pada bars ke-7 (return 0) merupakan na
kemba dar fungs utama yatu nanya adaah 0. Peru
dperhatkan bahwa setap nstruks pada perogram harus
dakhr dengan tanda semicolon (;).
Untuk menuskan varabe, kta dapat menuskannya
pada bagan s program. Contoh penusan varabenya
adaah :
1. #ncude <stdo.h>
2.
3. man () {
4. nt x;
5. strng nama;
6. foat BB;
7. char |Keamn;
8. boo status;
9. ...
10. }
Secara teor, pemrogram dapat memberkan nama
apapun pada sebuah varabe karena penamaan varabe
bertu|uan untuk memudahkan
pemanggan kemba. Namun, ada beberapa panduan
yang basa dacu pemrogram daam penamaan varabe,
antara an:
Huruf pertama pada nama varabe menun|ukkan
tpe data dar
varab
e.
Contoh: dawa dengan c untuk varabe char, untuk
nteger, s untuk strng, dan seterusnya. Panduan
penamaan n dsebut dengan %harles im(oni
"ungarion &otation.
Nama varabe harus cukup |eas menun|ukkan
tu|uan penggunaan varabe tersebut.
Contoh: sNama adaah varabe strng untuk
menympan nama,
c|ensKeamn adaah varabe char untuk menympan
|ens keamn, bStatus adaah varabe booean untuk
menympan status.
Nama varabe tdak boeh mengandung spas kosong
atau karakter khusus ! @ # $ % & * ( ) , - * + " ; :
< > , . / ? | dan \. Beberapa pemrogram
menggunakan _ untuk memsahkan kata d
nama varabe.
Contoh: c|ens_keamn, sNama_orang_tua, Na_akhr
Cara an untuk memsahkan kata daam nama varabe
adaah dengan memberkan huruf besar d awa tap
kata.
Contoh: c|ensKeamn, sNamaOrangTua, NaAkhr
Seteah sebuah varabe ddekaraskan, varabe dapat
menympan na. Pengsan na ke daam sebuah varabe
daam sebuah program dapat dakukan dengan 2 cara, yatu:
/ecara langsung
Contoh:
- c|ensKeamn = P
- sNamaOrangTua = |eremy Thomas
- NaAkhr = 99
Dengan inputan
Contoh:
- Input (c|ensKeamn)
- Input (sNamaOrangTua)
- Input (NaAkhr)
Penggunaan kedua cara pengsan na varabe n
akan dper|eas pada bab-bab sean|utnya. Daam fowchart,
pengsan na ke daam varabe dtun|ukkan pada gambar 2.
cJKelamin p
Input (cJKelamain)
1a2 secara langsung 1b2 dengan inputan
+ambar 30 Pengisian .ariabel dalam *lowchart
Contoh program untuk memberkan na pada sebuah
varabe :
1. #ncude <stdo.h>
2. man() {
3. nt A,B;
4. Strng NamaA, NamaB;
5. // Pengsan secara Langsung
6. A = 20;
7. NamaA = "|oko Handono";
8. // Pengsan dengan Inputan
9. scanf("%",&B);
10. scanf("%s",&NamaB);
11. // Menampkan Keayar
12. prntf("Na A : %",A);
13. prntf("Na B : %",B);
14. prntf("Na NamaA : %s",NamaA);
15. prntf("Na NamaB : %s",NamaB);
16. }
Pada contoh program datas, kta mehat ada tanda "%"
dan "%s". Funss tanda tersebut adaah untuk menkonfers
na nputan men|ad tpe yang sesua dengan yang dterma
atau mengubah na dar tpe data dasar men|ad tpe
karakter untuk dtampkan dayar. Karena pada
dasarnya, daam pemprograman bahasa C++ na
nput atau na yang dapat dtampkan berupa karakter.
Sedangkan ddaam program, na tersebut harus sesua
dengan tpe data yang ddekaraskan. Sebaga contoh
pada bars ke-10, varabe "B" tpe datanya adaah nteger.
Untuk mengubah tpe masukan men|ad nteger, maka
dgunakan "%". Basanya, strng tersebut dawa dengan
huruf pertama tpe datanya, msanya foat -> %f, Strng ->
%s dan seterusnya. Khusus untuk nputan, nama varabenya
harus dawa dengan strng "&" sepert tampak pada bars ke
10 dan 11.
. Konstanta
Pada varabe, na yang dsmpan dapat
berubah-ubah seama program d|aankan. Sedangkan pada
pada konstanta, na yang dsmpan tetap dan tdak dapat
dubah se|ak ddekaraskan hngga program berakhr..
Seteah sebuah konstanta ddekaraskan, konstanta
dapat dgunakan daam program dan nanya seau
tetap. Dekaras konstanta daam fowchart dgambarkan
sebaga sebuah proses. Msanya:
iMaks = 100
fPi = !1"
s#apa = $ell%
+ambar 40 )eklarasi konstanta dalam *lowchart
Cara penusan konstanta ddaam program, d tus
dengan dawa dengan tanda crash (#) kemudan dkut
dengan defne, sean|utnya nama konstantanya dan
sean|utnya nanya dan dtus duar program utama seteah
pendekarasan brar namespace. Contoh penusannya
adaah sebaga berkut :
1. #ncude <stdo.h>
2. #defne Maxs 100
3. #defne fP 3.14159
4. #defne sSapa Heo
5. #defne newLne \n
6. man() {
7. ...
8. }
.$
Operator
Operator adaah pengenda operas yang akan dakukan
pada beberapa operan sehngga membentuk sebuah
ekspres. Secara umum, daam sebuah ekspres terdapat
sebuah operator yang dapt dua operan. Contohnya pada
ekspres:
< = y
x dan y adaah operan, sedangkan
+ adaah operatornya
Terdapat tga macam operator yang basa dgunakan
daam pemrograman, yatu:
1perator aritmati*
Operator n membentuk perhtungan artmatk. Kedua
operan dar operas artmatk n dapat berupa na
nteger atau rea.
Operator yang termasuk tpe n adaah:
'abel 40 Operator aritmatik
:ambang Des*ripsi ;ontoh
= Pen|umahan x = y + z
> Pengurangan x = y - z
? Perkaan x = y * z
8 Pembagan x = y / z
@ Moduo (ssa bag) x = y % z
Output dar operas artmatk akan memk tpe data
yang sama dengan tpe data kedua operannya. Msanya,
|ka sebuah bangan nteger d|umahkan dengan
bangan nteger annya maka outputnya adaah
bangan nteger |uga. Sean tu peru dperhatkan pua
bahwa sebuah operator artmatk tdak dapat
dterapkan pada dua bangan dengan tpe data yang
berbeda.
Contoh program dengan operas
artmatk:
1 //Program Aritmatik
2 /* #5'ersedia dua buah bilangan integer
F5"asil Modulo duabuah
bilangan */
3 #ncude <stdo.h>
4
5 man () {
6 // Dekaras Varabe
7 nt Tambah;
8 nt Angka1, Angka2;
9 prntf("Masukan Bangan Pertama : ");
10 scanf("%", Angka1);
11 prntf("Masukan Bangan Kedua : ");
12 scanf("%", Angka2);
13 // Pen|umahan
14 Tambah = Angka1 + Angka2;
15 prntf("Has Pen|umahan % + % = %",
Angka1, Angka2,
Tambah
);
16 return 0;
17 }
Program d atas akan mengembakan na has
pen|umahan sesua dengan nputan. Msanya pada
nputan pertama kta masukan 10 dan yang keda kta
masukan 23 maka hasnya adaah 33. outputnya
adaah:
Masukan Bangan Pertama : 10
Masukan Bangan Kedua : 23
Has Pen|umahan 10 + 23 = 33
1perator Assignment
Daam pemprograman bahasa C++, Operator n
dgunakan memasukan na kedaam sebuah varabe,
tanpa menghangkan atau mengosongkan na varabe
sebeumnya. Contoh penggunaan operator n adaah
sebaga berkut :
'abel 60 Operator relasional
:ambang Des*ripsi ;ontoh
=A Menambahkan x +=
>A Mengurangkan x -=
1 ?A Mengakan x *=
2 8A Membag x /=
@A Mem-mod x %=
2
Increase and decrease
Penusan n dambangkan dengan ++ (Increade) dan --
(decrease). Operator n berfungs untuk menakan atau
menurunkan satu satuan na pada sebuah varabe.
Contoh penggunaannya adaah pada contoh dbawah
n :
1 ...
2 a++;
3 a += 1;
4 a = a + 1;
5 ...
Ada dua macam penusan operator n, yatu smbo
dapat dtus sebeum nama varabe dan seteah
varabe. Adapun perbedaab antara keduanya adaah :
1 B =
3;
2 A = ++B;
3 // A = 4, B
= 4
1 B = 3;
2 A = B++;
3 // A = 3, B = 4
1perator relasional
Operator n membandngkan dua operan dan hasnya
berupa na booean (BENAR atau SALAH). Operas
reasona dapat dakukan pada dua na dengan tpe
data yang sama: tpe data nteger, r, char, strng,
maupun booean. Berkut n adaah operator reasona:
'abel 60 Operator relasional
:ambang Des*ripsi ;ontoh
AA Sama dengan x == y
BA Tdak sama dengan x != y
C Lebh dar x > y
D Kurang dar x < y
CA Lebh dar atau sama dengan x >= y
DA Kurang dar atau sama
dengan
x <= y
Contoh penggunaan operator reasona daam agortma:
1 // Program Operator Reasona
2 KAMUS DATA {awa dekaras varabe}
3 Angka1, Angka2 : nteger
4 BEGIN {awa agortma}
5 Angka1 = 6 {pengsan varabe angsung}
6 Input(Angka2) {pengsan dgn nputan}
7 IF (Angka1 <> Angka2) THEN
8 Output (Tebakan Anda saah)
9 ELSE
10 Output (Horee! Tebakan Anda benar)
11 ENDIF
12 END
Output dar operas reasona bertpe booean (true7
*alse). Pada contoh d atas,
Angka1 != Angka2 berna benar/ true |ka
Angka1 tdak sama dengan Angka2
Angka1 != Angka2 berna saah/ *alse |ka Angka1
sama dengan Angka2
Program d atas akan mengeuarkan pesan sesua
nputan pengguna. |ka pengguna mengnputkan angka
sean 6 (Angka1 != Angka2 berna benar), program
akan mengeuarkan pesan Tebakan Anda saah. |ka
pengguna mengnputkan angka 6 (Angka1 != Angka2
berna saah), program akan mengeuarkan pesan
Horee! Tebakan Anda benar.
1perator logi*a
Operator ogka adaah operator yang dgunakan untuk
mengkombnaskan has ekspres yang mengandung
operator reasona.
Tga macam operator ogka
adaah:
'abel 80 Operator logika
:ambang Des*ripsi ;ontoh
EE And / Dan x > 7 && x = y
FF Or / Atau x != y || x > 3
B Not / Tdak ! (x > y)
Poa penggunaan operator ogka adaah:
ekspresi/ 1PG#A!1# ekspresi3
Output dar penggunaan operator AND dan OR adaah
sebaga berkut:
'abel 90 Output operator
logika
e*presi1 e*spresi2
*ombinasi
dengan
A6D 1#
True True True
True True Fase
Fase True Fase
True Fase True
Fase Fase Fase
Fase
Poa yang mudah untuk mengngat output kedua
operator ogka tersebut adaah: True AND True = True,
Fase OR Fase = Fase.
Beberapa contoh penggunaan
operator ogka: (x > 7) && (x
= y)
|ka ternyata na x adaah 8 dan y adaah 5, maka
(8 > 7) && (8
= 5) True
AND Fase
Fase (output
operas) (x != y)
|| (x > 3)
|ka ternyata na x adaah 4 dan y adaah 4, maka
(4 != 4) || (4
> 3) Fase OR
True
True (output
operas) NOT (x
> y)
|ka ternyata na x adaah 3 dan y adaah 3, maka
NOT (3 >
3) NOT
(Fase)
True (output operas)
.% .rutan Operasi
Sebuah ekspres mungkn terdr atas beberapa
operas sekagus. Msanya:
Has = x * 2 % 2 > y && (x != 3)
Untuk menentukan operas mana yang
dakukan terebh dahuu darpada operas annya,
setap operator memk eve urutan. Leve urutan n
terdr atas ma keompok, eve 1 hngga 5.
Operator yang memk eve ebh tngg
(dtun|ukkan dengan angka yang semakn kec) akan
doperaskan terebh dahuu dbandngkan operator an
yang evenya ebh rendah. Sedangkan pada operator-
operator yang berada pada eve yang sama, operas
dakukan secara berurutan dar kr ke kanan. Ha n
dsebut dengan asosatvtas.
Pada beberapaekspresdperukan
pengubahan urutan
eksekus operas-operas. Untuk
memungknkan pemrogram meakukan
ha tersebut, terseda sebuah operator tambahan
yang
memk eve eksekus pang tngg, yatu (). Operas
apapun yang ada daam tanda kurung () akan deksekus
pertama ka oeh program.
Leve urutan operator-operator tersebut adaah
sebaga berkut:
'abel :0 Urutan
operasi
1perator Des*ripsi Asosiativitas :evel 9rutan
.0 Tanda kurung 1
B Logka NOT 2
? Perkaan
8
Pembagan
@ Moduo
=
Pen|umahan
>
Pengurangan
Kr ke kanan 3
Kr ke kanan 4
D Kurang dar
Kr ke kanan 5
DA Kurang dar/
sama
dengan
CA Lebh dar/
sama
dengan
C Lebh dar
A Sama
dengan
Kr ke kanan 6
Msanya pada ekspres berkut n:
Has = x * 2 % 2 > y && (x <> 3)
|ka nputannya adaah x = 5 dan y = 3
maka urutan penger|aannya adaah:
H Penger2aan
1 Has x * 2 % 2 > y && (5 != 3)
Has x * 2 % 2 > y &&
True
Has 5 * 2 % 2 > y &&
True Has 0 > y &&
True
% Has 0 > 3 &&
True Has Fase
&& True
+ Has Fase
.(
/untunan
Secara umum, program akan dbaca dan deksekus
secara berurutan bars dem bars. Msanya pada agortma
berkut n:
1. Agortma Runtunan;
2. {IS:Terseda empat bangan yang akan
doperask
an
FS:Mengoutputkan dua bangan
BA Tdak sama
dengan
EE Logka AND Kr ke kanan 7
FF Logka OR Kr ke kanan 8
seteah doperaskan }
3. Kamus data
4. a,b,c,d : nteger
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.
Maka, output dar agortma d atas adaah:
6, 7
Perhatkan bahwa pada saat membaca bars ke-3,
program akan mengakan 3 dan 2 (a dan b). Kemudan, saat
membaca bars ke-5, program akan men|umahkan 5 dan 2 (a
dan b). Na a berubah karena d bars ke-4 varabe a ds
dengan 5. In merupakan akbat dar sfat program yang
membaca dan mengeksekus per bars. Seteah bars ke-4
deksekus, na a yang dskan pada bars pertama sudah
tdak beraku ag (tertumpuk dengan na baru yang dskan).
D bab-bab sean|utnya akan dtun|ukkan bahwa sfat
program membaca dan mengeksekus berurut terus per
bars n dapat dubah, dengan memberkannya perntah
untuk tdak membaca sesua urutan. Ha n dapat dakukan
dengan struktur pemhan, struktur penguangan, dan an-
an.
|ka agortma runtunan d atas dtuskan daam bahasa
Pasca, maka akan
tampak sebaga
berkut:
1. // Program Runtunan;
2. /*IS:Terseda empat bangan
yang akan doperaskan
FS:Menampkan dua bangan
seteah doperaskan */
3. #ncude <stdo.h>
4.
5. man () {
6. nt a,b,c,d;
7. a = 3;
8. b = 2;
9. c = a * b;
10. a = 5;
11. d = a + b;
12. prntf("Na C : %",c);
13. prntf("Na D : %",d);
14. }
|ka Program d|aankan, maka has keuaran program
adaah sepert berkut :
Na C :
6
Na D :
7
#ang*um
an
1. Tpe data dasar adaah tpe data yang dapat angsung
dgunakan, dan memk ukuran tertentu sesua dengan
tpe data masng-masng. Beberapa tpe data dasar:
nteger, rea, char, strng, dan booean.
2. Varabe adaah obyek yang nanya dapat berubah-ubah
daam sebuah program, sedangkan konstanta memk
na yang tetap se|ak ddekaraskan hngga program
berakhr.
3. Pada saat mendekaraskan sebuah varabe,
pemrogram harus menyebutkan nama varabe dan tpe
data dar varabe tersebut.
4. Operator adaah pengenda operas yang akan dakukan
pada beberapa
operan sehngga membentuk sebuah ekspres. Tga
macam operator daam pemrograman: operator artmatk,
operator reasona, dan operator ogka.
5. Penggunaan beberapa operator sekagus daam
sebuah ekspres mengakbatkan perunya menentukan
urutan operas yang datur daam eve urutan operator.
6. Operator dengan eve yang ebh tngg akan deksekus
ebh dahuu darpada operan dengan eve yang ebh
rendah. Operator-operator yang memk eve yang
sama akan deksekus menurut urutan penusan (dar
kr ke kanan).
Kuis )enar /alah
1. Dekaras tpe data mempengaruh besarnya tempat daam
memor yang dsedakan untuk menympan data tersebut.
2. Tpe data rea memk cakupan na antara 2.9x10
-39
hngga 1.1x10
4932
.
3. Penentuan nama varabe dan cara mengaksesnya
dakukan oeh program secara otomats.
4. Output dar operas artmatk akan memk tpe data yang
sama dengan kedua operannya.
5. Operator reasona dapat membandngkan dua na
booean.
(Untuk nomor 6-10) Perhatkan potongan agortma berkut n:
...
Kamus data
a, b, d, e :
nteger c, f :
rea
g :
char
h :
booean
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. Na akhr varabe a adaah 12.
7. Operas e d / a tdak dapat dakukan sehngga na
e tdak dapat dketahu.
8. |ka pengguna memberkan nput k untuk varabe g,
maka na akhr h adaah TRUE.
9. Varabe h tdak dapat dketahu nanya.
10. Output program tersebut akan mengeuarkan empat
na varabe dan empat error.
11. Tpe data word memk cakupan na yang ebh uas
darpada tpe data nteger.
12. Saah satu dar empat tpe data rea dapat menympan
na negatf.
13. Strng adaah kumpuan karakter dengan pan|ang tertentu.
14. Na dar sebuah konstanta tdak dapat dubah daam
badan program.
15. Pengsan na ke daam sebuah varabe dapat
dakukan dengan dua cara, yatu secara angsung atau
dengan nputan.
(Untuk nomor 16-20) Perhatkan ekspres berkut n:
Has = (50 - 37) + 50 * 2 % 35 > 21 / 3 && ! (200 - 7 != 25 * 7
+ 18)
16. Operas yang pertama ka deksekus adaah (50 - 37).
17. Operator yang terakhr deksekus adaah >.
18. Has bertpe nteger.
19. Has = 116.
20. Has = True.
Pilihan 3anda
1.
Berkut n adaah pernyataan-pernyataan yang benar
tentang tpe
data, kecua . .
A. Tpe data adaah hmpunan na yang dapat
dmk oeh sebuah data.
B. Tpe data menentukan operas apa yang dapat
dakukan pada
data tersebut.
C. Pemhan tpe data untuk sebuah varabe atau
konstanta harus mempertmbangkan kapastas
memor yang terseda.
D. Tpe data dar setap varabe dan konstanta harus
ddekaraskan d awa program.
E. Tpe data dasar dapat angsung dgunakan
daam sebuah
program.
2.
Berkut n adaah karakter yang sebaknya tdak
dgunakan daam
penamaan varabe/ konstanta, kecua . .
A.
# B.
/ C.
;
3.
Perhatkan ekspres
berkut n:
D. _
E. <
5 + 2 * 3 >= 100 MOD 45 OR 75 - 30 / 2 < 10
Apakah output dar ekspres tersebut?
A. 25
B. True
C. 11
D. Fase
E. 60
4.
Perhatkan kedua kamat tentang urutan eksekus
operator berkut
n:
Kamat A: Operas daam tanda kurung deksekus
pertama ka. Kamat B: Operas reasona
deksekus terebh dahuu
dbandngkan operas artmatk.
Manakah pernyataan yang tepat tentang kedua
kamat d atas? A. Kamat A dan kamat B
benar.
B. Kamat A dan kamat B saah.
C. Kamat A benar dan kamat
B saah. D. Kamat A saah dan
kamat B benar.
E. Saah satu dar kamat A atau kamat B tdak
dapat dtentukan benar/ saah.
5. Perhatkan potongan program
berkut n:
#ncude <stdo.h>
man ()
{
}
nt bangan1, bangan2;
nt bangan3, bangan4;
bangan1 := 10;
bangan1 := bangan1 * 2;
bangan2 := bangan1 +
10; bangan3 := bangan2 *
bangan1;
prntf("%",bangan3);
Manakah yang merupakan output dar program d atas?
A. 200 D.
600
B. 300 E.
C. 400
:atihan
1. |easkan perbedaan varabe dan konstanta!
2. Perhatkan ekspres berkut n:
4 + 7 * 10 - 5 mod 13
Apakah output dar ekspres d atas?
3. |easkan tentang konsep runtunan daam eksekus sebuah
program!
4. Perhatkan ekspres berkut n:
x * 3 + (7 mod
5) * y dengan x
5 dan
y 3
Apakah output dar ekspres d atas?
5. Perhatkan potongan program berkut n:
# ncude <stdo.h>
man () {
nt Pertama,
Kedua; Pertama
= 50; Pertama
%= 9;
Kedua = Pertama - 2;
prntf("%",Kedua);
}
Apakah output dar program d atas?}
81 Pemilihan
$ Pemilihan
1verview Program dapat merepresentaskan stuas
pemhan yang serng dhadap daam duna nyata.
Berdasarkan satu atau beberapa konds, dapat
dtentukan satu atau se|umah aks yang akan dakukan.
Dengan adanya struktur pemhan, program dapat ber|aan
dengan |aur yang berbeda, berdasarkan has pengecekan
konds yang dpenuh.
!u2uan
1. Memaham struktur pemhan
daam program
Pemilihan 82
2. Mengena struktur IF dan CASE yang dapat dgunakan
daam pemhan
3. Memaham konsep konds dan aks daam
struktur pemhan
4. Menerapkan pemhan daam menyeesakan
berbaga kasus
Daam kehdupan nyata, serngka dhadapkan pada
beberapa phan. Pada saat menghadap phan, satu atau
beberapa konds men|ad bahan pertmbangan daam
memutuskan untuk meakukan aks tertentu. Contoh:
|k a cuaca mendung, ma k a saya membawa payung.
Pada contoh tersebut, cuaca mendung merupakan
konds yang men|ad bahan pertmbangan untuk
meakukan aks saya membawa payung. |ka konds
cuaca mendung terpenuh (berna benar), maka aks
saya membawa payung dakukan
Sebuah program komputer |uga dapat mengena stuas
pemhan. Pernyataan daam contoh d atas dapat dtuskan
daam struktur pemhan sebaga berkut:
IF cuaca mendung THEN
sa(a membawa pa(ung
END IF
Untuk seengkapnya penggunaan bentuk pemhan akan
d|easkan berkut n.
4.1 )entu* 9mum IF dan Iariasinya
Bentuk IF yang |uga dkena dengan stah I F S t a t em e n t ,
memk bentuk umum sebaga berkut :
I f konds t h en
Aks-
1 |e s e
Aks-
2| E n d
f
K o nd s adaah ekspres booean yang berna benar
atau saah, bsa berupa:
Sebuah na booean: true atau fase
Sebuah varabe booean
Sebuah pembandngan data
Dua pembandngan data atau ebh yang dgabung
A k s berupa s a t u statement b e b e r a p a statement, dmana
tap statement dapat berupa:
Statement pengsan na sepert a 5
Statement nput data
Statement output data
Statement pemhan (If Statement atau Case
Statement) Statement penguangan (For,
Repeat atau Whe Statement)
| e s e A k s -2|, tanda | | menyatakan opsona (boeh
ada/tdak ada), dmana kaau tdak ada, berart
seteah Aks-1 angsung seesa.
Dar bentuk umum yang teah d|easkan, maka varas
bentuk IF n banyak dan tdak berhngga. D antaranya yang
pentng dapat dsebutkan berkut:
- f tanpa ese (satu phan, menger|akan atau tdak)
- f dengan ese (dua phan)
- f bersarang dmana daam f ada f ag, karena
Statement dapat berupa satu perntah pemhan. Saah
satu bentuk f bersarang adaah f untuk memh saah
satu dar banyak phan.
Contoh-contoh varas:
1. Satu phan (tanpa ELSE)
|I f konds
t h en
|
Statemen
t
|E n d
f
5ondisi
'enar&
a
Stement
Tidak
Pada varas n, apaba konds berna benar maka
Statement dker|akan dan apaba konds berna saah maka
Statement tdak dker|akan.
2. Dua phan (dengan ELSE)
|I f konds
t h en
|
Statement-1
|e s e
|
Statement-2
5ondisi
a
'enar&
Tidak
|E n d
f
Stement8) Statement8%
Pada varas n, apaba konds berna benar maka
Statement-1 yang dker|akan dan apaba konds berna
saah maka Statement-2 yang dker|akan (tdak pernah 2
statement n dker|akan semua).
3. Tga phan atau ebh, msa Statement-1dan Statement-2
pada contoh-2 dkembangkan men|ad bentuk f ag
sehngga |ad 4 phan:
|I f konds-1
t h en
| |I f konds-2
t h en
| | Statement-
a
| |E s e
| | Statement-
b
| |E n d f
|es e
a
5ondisi8%
benar&
a Tidak
5ondisi8)
benar&
a
Tidak
5ondisi89
benar&
Tidak
| |f konds-3
t h en
| |
St
a
m
nt-c
| |E s e
| | Statement-
d
| |E n d f
|E n d f
Statement8a Statement8b Statement8c Statement8d
Pada varas n, apaba konds-1 berna benar
maka dan|utkan memerksa konds-2. Apaba konds-2
berna benar maka Statement-a
yang dker|akan dan apaba konds-2 berna saah
maka Statement-b yang dker|akan. Sedangkan apaba
konds-1 saah maka dan|utkan memerksa konds-3.
Apaba konds-3 berna benar maka Statement-c yang
dker|akan dan apaba konds-3 berna saah maka
Statement-d yang dker|akan. (dar 4 statement yang ada
hanya saah satu yang dker|akan.
4. Tga phan atau ebh, dengan mengembangkan
Statement seteah ELSE
|I f konds-1 t h en
| Statement-1
|e s e
| |f konds-2
t h en
| | Statement-2
| |E s e
| | |If konds-3
t h en
| | |
Statement-3
| | |E s e
| | |
Statement-4
| | |E n d f
| |E n d f
|E n d f
5ondisi8)
benar&
a
Statement8)
Tidak
5ondisi8%
benar&
a
Statement8%
Tidak
5ondisi89
benar&
a
Statement89
Tidak
Statement8:
5. Penyederhanaan penusan contoh-4
(poss statement tdak semakn ke kanan, END IF hanya
satu ka)
|If konds-1 t h en
| Statement-1
|E s e f konds-2
t h en
| Statement-2
|E s e f konds-3
t h en
| Statement-3
|E s e
| Statement-4
|E n d f
5ondisi8)
benar&
Tidak
5ondisi89
benar&
Tidak
5ondisi8%
benar&
a Statement8)
a Statement8%
a Statement89
Tidak
Statement8:
Pada varas 4 dan 5 n, apaba konds-1 berna
benar maka Statement-I yang dker|akan dan seesa,
tetap apaba konds-1 berna saah maka dan|utkan
memerksa konds-2. Apaba konds-2 berna benar
maka Statement-2 yang dker|akan dan seesa, tetap
apaba konds-2 berna saah maka dan|utkan
memerksa konds-3. Apaba konds-3 berna benar
maka Statement-3 yang dker|akan, tetap apaba konds-
3 berna saah maka Statement-4 yang dker|akan. (dar
4 statement yang ada hanya saah satu yang dker|akan.
Penggunaan varas 5 ebh bak, karena tusan tida*
ma*in *e *anan waaupun pilihan sema*in banya*.
6. Bentuk bebas (|umahnya tak terhngga), saah satunya
|If konds-1
then
| |
Statement-a
| |If konds-2
then
| | |If konds-3
then
| | |
Statement-b
| | |
Ese
| | | |If konds-4
then
| | | | Statement-c
| | | |Ese
| | | | Statement-d
| | | |End f
| | |End f
| |Ese
| | Statement-e
| |End f
| |Statement-f
|Ese
| |Statement-g
| |f konds-5 then
| | Statement-h
| |End f
| |f konds-6 then
| | Statement-
| |End f
| |Statement-|
|End f
4.2 !erapan bentu*>bentu* IF
Sebuah masaah terkadang dapat dseesakan dengan
berbaga cara, sepert penggunaan "f tanpa ese" dan "f
dengan ese". Sebaga contoh dapat dhat pada kasus
berkut:
Kasus 4.1 : Menentukan apakah bangan yang dnput postp
atau negatp
Sous : ada beberapa cara berkut
Sous-1
|Input(b)
|If (b>=0) then
| Output(postp)
|Ese
| Output(negatp)
|End f
Sous-
2
|Input(b)
|If (b<0) then
| Output(negatp)
|Ese
| Output(postp)
|End f
Sous-3
|Input(b)
|Ket postp
Sous-4
|Input(b)
|Ket negatp
|If (b<0) then
| Ket negatp
|End f
|Output(Ket)
|If (b>=0) then
| Ket postp
|End f
|Output(Ket)
Sous-5
|Input(b)
|If (b>=0) then
| Output(postp)
|End f
|If (b<0) then
| Output(negatp)
|End f
Sous-
6
|Input(b)
|If (b<0) then
| Output(negatp)
|End f
|If (b>=0) then
| Output(postp)
|End f
Sous-7
|Input(b)
|postp b>=0
|If (postp=true) then
| Output(postp)
|ese
| Output(negatp)
|End f
Sous-
8
|Input(b)
|postp b>=0
|If (postp) then
| Output(postp)
|ese
| Output(negatp)
|End f
Uasan dar beberapa
sous:
Sous-1 dan Sous-2 adaah sous yang sama,
dgunakan konds berkebakan sehngga poss perntah
tampan dtukar.
Sous-3 dan Sous-4 |uga sama, keduanya menggunakan
"f tanpa ese",
dengan cara varabe Ket dnsasas (dber na awa)
dengan saah satu kemungknan hasnya, kemudan dubah
ba memenuh konds.
Sous-5 dan Sous-6 |uga sama, pada sous n dbuat 2
buah "f tanpa ese"
secara terpsah. Dengan cara n, berart akan dakukan
pemerksaan konds
2 ka (padaha sebenarnya cukup
satu ka).
Sous-7 dan Sous-8 keduanya menggunakan varabe bertpe
booean bernama postp untuk mencatat has
pembandngan b>=0. Penusan "f (postp=true)" sama
sa|a dengan menuskan "f (postp)" cara yang terakhr ebh
cepat waktu eksekusnya.
Berkut beberapa kasus yang
an: Kasus 4.2 : Terbesar
dar 3 bangan
Sous-1
|Input(A,B,C)
|I f (A>B) t h en
| |I f (A>C) t h en
| | Output(terbesar =,A)
| |E s e
| | Output(terbesar =,C)
| |E n d f
|e s e
| | f (B>C) t h en
| | Output(terbesar =,B)
| |E s e
| | Output(terbesar =,C)
| |E n d f
|E n d f
Sous-
2
|Input(A,B,C)
|I f (A<B) t h en
| |I f (B<C) t h e n
| | Output(terbesar =,C)
| |E s e
| | Output(terbesar =,B)
| |E n d f
|e s e
| | f (A<C) t h en
| | Output(terbesar =,C)
| |E s e
| | Output(terbesar =,A)
| |E n d f
|E n d f
Sous-3
|Input(A,B,C)
|I f (A>B and A>C) t h e n
| |Output(terbesar =,A)
|E s e
| | f (B>A and B>C) t h e n
| | Output(terbesar =,B)
| |E s e
| | f (C>A and C>B) t h en
| | Output(terbesar =,C)
| | |E n d f
| |E n d f
|E n d f
Sous-
4
|Input(A,B,C)
|I f (A>B and A>C) t h e n
| |Output(terbesar =,A)
|E s e f (B>A and B>C) t h en
| |Output(terbesar =,B)
|E s e f (C>A and C>B) t h en
| |Output(terbesar =,C)
|E n d f
Sous-5
|Input(A,B,C)
|Max A
|I f (B>Max) t h en
| |Max B
|E n d f
|I f (C>Max) t h en
| |Max C
|E n d f
Sous-
6
|Input(A,B,C)
|I f (A>B) t h en
| |Max A
|e s e
| |Max B
|E n d f
|I f (C>Max) t h en
| |Max C
|Output(terbesar = ,Max) |E n d f
|Output(terbesar = ,Max)
Uasan dar beberapa
sous:
Sous-1,Sous-2 dan Sous-3 mengguanakan 3 buah konds
dan setap has yang ddapat akan meau pemerksaan 2
buah kods.
Sous-4 menggunakan konds yang terdr dar 2
pembandngan, dengan rata-rata meakukan pemerksaan 2
konds (4 pembandngan)
Sous-5 dan Sous-6 dgunakan 2 buah f yang terpsah,
dmana has sementara na terbesar dcatat d tempat baru
(Max), cara n e b h p r a kt s terutama kaau dkembangkan
untuk mencar terbesar dar b a n y ak b a n g a n .
Kasus 4.3 : Pembayaran ar
mnum PDAM
PDAM menerapkan pembayaran ar mnum perumahan
dengan cara perhtungan sebaga berkut :
- Tarf per m3 untuk 10 m3 pertama (1-10)
adaah 2.000
- Tarf per m3 untuk 10 m3 kedua (11-20)
adaah 3.000
- Tarf per m3 untuk 10 m3 ketga (21-30)
adaah 4.000
- Tarf per m3 untuk 10 m3 sean|utnya (31 ke atas)
adaah 5.000
- Pemakaan ar dhtung mnma 10 m3 (kurang dar 10 m3
danggap 10 m3)
- Baya admnstras buanan
sebesar 10.000
Bagamana membuat agortma untuk menghtung
baya tersebut?
Contoh
kasus
Penggunaan ar 5 m3 dengan baya 10 x 2.000 +
10.000 = 30.000
Penggunaan ar 15 m3 dengan baya 10 x 2.000 + 5 x 3.000
+ 10.000 = 45.000
Penggunaan ar 75 m3 dengan baya 10 x 2.000
+ 10 x 3.000 +
10 x 4.000 + 45 x 5.000 +10.000 =
325.000
Sous
:
Pemakaan ar dbag men|ad 4 area pemakaan (msa area
a,b,c,d), baru dhtung tota baya
Sous-1
|Input(paka)
|I f (paka>30)
t h en
| |a 10
| |b 10
| |c 10
Sous-
2
|Input(paka)
|a10
|b 0
|c 0
|d 0
| |d paka - 30
|E s e I f (paka>20) t h en
| |a 10
| |b 10
| |c paka - 20
| |d 0
|E s e I f (paka>10) t h en
| |a 10
| |b paka - 10
| |c 0
| |d 0
|E s e
| |a 10
| |b 0
| |c 0
| |d 0
|E n d f
|baya a * 2000 + b *
3000 +
| c * 4000 + d *
5000 +
| 10000
|Output(baya =,baya)
|I f (paka>30) t h en
| |b 10
| |c 10
| |d paka - 30
|E s e I f (paka>20) t h en
| |b 10
| |c paka - 20
|E s e I f (paka>10) t h en
| |b paka - 10
|E n d f
|baya a * 2000 + b * 3000 +
| c * 4000 + d * 5000 +
| 10000
|Output(baya =,baya)
Uasan
sous :
Pada sous-1, tap aks dar f , terdr dar 4 statement
mengs a,b,c dan d. Bentuk sous n dsederhanakan pada
sous-2 dengan cara memberkan na awa sebeum masuk
f.
Kasus-4 : Indeks Na
Kuah
Indeks na sebuah matakuah ddapat dengan cara
menghtung na akhr berdasarkan prosentase komponen-
komponennya kemudan dtentukan ndeks nanya. Msa
dgunakan ketentuan sebaga berkut:
- Na Akhr dhtung dar 30% UTS, 40%UAS, 20% Tugas dan
10% kehadran
- Indeks Na dtentukan berdasarkan Na
Akhr (NA), Ba NA >= 85 maka Indeksnya
A
Ba 85 > NA >= 70 maka
Indeksnya B Ba 70 > NA >=
55 maka Indeksnya C Ba 55
> NA >= 40 maka Indeksnya
D Ba NA < 40 maka
Indeksnya E
Bagamana membuat agortma untuk menentukan Indeks Na
tersebut?
Sous-
1
|
Input(UTS,UAS,Tugas,Abs
)
|NAS 0.3*UTS +
0.4*UAS +
| 0.2*Tugas +
0.1*ABS
|I f (NAS>=85) t h e n
| |Indeks A
|E s e I f (NAS>=70 and
NAS<85)
| |t h en
| |Indeks B
|E s e I f (NAS>=55 and
NAS<70)
| |t h en
| |Indeks C
|E s e I f (NAS>=40 and
NAS<55)
| |t h en
| |Indeks D
|E s e
| |Indeks E
|E n d f
|Output(Indeks Na
=,Indeks)
Sous-
2
|Input(UTS,UAS,Tugas,Abs)
|NAS 0.3*UTS + 0.4*UAS +
| 0.2*Tugas + 0.1*ABS
|I f (NAS>=85) t h e n
| |Indeks A
|E s e I f (NAS>=70) t h en
| |Indeks B
|E s e I f (NAS>=55) t h en
| |Indeks C
|E s e I f (NAS>=40) t h en
| |Indeks D
|E s e
| |Indeks E
|E n d f
|Output(Indeks Na
=,Indeks)
Uasan
sous :
Pada sous-2 ebh bak dar sous-1 karena pemerksaan
konds yang serupa tdak dakukan dua ka. Pada sous-1,
pembandngan NAS dengan 85 dakukan dua ka, yang
pertama NAS>=85 dan yang kedua NAS<85 adaah
pembandngan yang serupa.
4.3 )entu* 9mum ;A/G dan
variasinya
Sebenarnya semua bentuk pemhan dapat dtus dengan IF,
namun penusan dengan IF untuk banyak phan terasa
kurang prakts. Bentuk CASE adaah cara an penusan
bentuk pemhan yang ebh sederhana, namun bentuk n
hanya dapat menggantkan IF apaba memenuh syarat:
- konds berupa pembandngan kesamaan (dengan tanda
"=" )
- na yang dbandngkan bertpe ordna (nteger,char dan
booean)
Bentuk CASE yang |uga dkena dengan stah C ASE
S t a t em e n t , memk bentuk umum sebaga berkut :
C a s e ekspres
Na-1: Aks-1
Na-2: Aks-2
...
Na-N: Aks-N
|Ot h e r w s e :
Aks-X|
E n d C a s e
E k s p r e s bertpe ordna,
berupa:
Sebuah na ordna: booean, nteger, char (bukan
strng atau rea) Sebuah varabe bertpe ordna
Operas data (na atau varabe) yang menghaskan
sebuah na ordna
N a harus berupa na ordna (tdak boeh varabe)
A k s berupa s a t u statement b e b e r a p a statement, dmana
tap statement dapat berupa:
Statement pengsan na sepert a 5
Statement nput data
Statement output data
Statement pemhan (If Statement atau Case
Statement) Statement penguangan (For,
Repeat atau Whe Statement)
| o t h e r w s e: Aks-X|, tanda | | menyatakan opsona (boeh
ada/tdak ada), dmana kaau tdak ada, berart seteah
Aks-1 angsung seesa. Fungs Otherwse sama dengan
ELSE pada IF Statement
Dar bentuk umum yang teah d|easkan, maka varas
bentuk CASE n banyak dan tdak berhngga. D antaranya
yang pentng dapat dsebutkan berkut:
- Case tanpa otherwse
- Case dengan otherwse
- Case dengan Aks yang sama untuk beberapa Na
- Case bersarang dmana daam case ada case ag, atau
Statement an
Contoh-contoh varas:
1. Case tanpa otherwse
C a s e ekspres
Na-1: Statement-1
Na-2: Statement -2
...
Na-N:
Statement -N E n d
C a s e
2. Case dengan
otherwse
C a s e
ekspres
Na-1: Statement -1
Na-2: Statement -2
...
Na-N:
Statement -N
|Ot h e r w s e : Aks-
X|
E n d
C a s e
3. Case dengan Aks yang sama untuk
beberapa Na
C a s e
ekspres
Na-1,Na-2,Na-3: Statement -1
Na-4,Na-5,Na-6: Statement -2
Na-7..Na-10: Statement -3
...
Na-N: Statement
-N |Ot h e r w s e :
Statement -X|
E n d
C a s e
4. Case bersarang,
contohnya : C a s e
ekspres-1
Na-1: Case ekspres-2
Na-a: Statement -1
Na-b: Statement -2
End Case
Na-2: f konds then
Statement-3
Ese
Statement-4
End f
Na-3:
...
Na-N:
Statement -N E n d
C a s e
4.4 !erapan bentu*>bentu* ;A/G
Kasus 4.4 : Menentukan nama har dar nomor har yang
dnput
Dnput nomor har, dtampkan nama harnya, bagamana
agortmanya? Sous dengan IF dan CASE
Sous-If |Input(NoHar)
|I f (NoHar=1) t h en
| |NmHar
Senn
|E s e I f (NoHar=2)
t h en
Sous-Case
|Input(NoHar)
|C a s e NoHar
| |1: NmHar Senn
| |2: NmHar Seasa
| |NmHar
Seasa
|E s e I f (NoHar=3)
t h en
| |NmHar
Rabu
|E s e I f (NoHar=4)
t h en
| |NmHar
Kams
|E s e I f (NoHar=5)
t h en
| |NmHar
|umat
|E s e I f (NoHar=6)
t h en
| |NmHar
Sabtu
|E s e I f (NoHar=7)
t h en
| |NmHar
Mnggu
|E n d f
|O u t p u t (NmHar)
| |3: NmHar Rabu
| |4: NmHar Kams
| |5: NmHar |umat
| |6: NmHar Sabtu
| |7: NmHar Mnggu
|E n d C a s e
|O u t p u t (NmHar)
Pada sous-2 terhat ebh sederhana dan mudah dbaca
dbandng dengan sous-1.
Kasus 4.5 : Merubah angka men|ad kamat
Dnput bangan/angka (angka dbatas 1-99), dtampkan
kata-kata/kamat dar bangan tersebut, bagamana
agortmanya?
Sous
Sous-Case
|Input(b)
|pu b dv 10
|sat b mod 10
|Kamat
|C a s e sat
| |1: Kamat Satu
| |2: Kamat Dua
| |3: Kamat Tga
| |4: Kamat Empat
| |5: Kamat Lma
| |6: Kamat Enam
| |7: Kamat Tu|uh
| |8: Kamat Deapan
| |9: Kamat Semban
|E n d C a s e
|C a s e pu
| |1: |C a s e sat
| | | 0: Kamat Sepuuh
| | | 1: Kamat Sebeas
| | | Otherwse: Kamat Kamat + beas
| | |E n d C a s e
| |2: |Kamat Dua Puuh + Kamat
| |3: Kamat Tga Puuh + Kamat
| |4: Kamat Empat Puuh + Kamat
| |5: Kamat Lma Puuh + Kamat
| |6: Kamat Enam Puuh + Kamat
| |7: Kamat Tu|uh Puuh + Kamat
| |8: Kamat Deapan Puuh + Kamat
| |9: Kamat Semban Puuh + Kamat
|E n d C a s e
|O u t p u t (Ka ma t )
Pada sous d atas, satuan dproses dengan case pertama,
sean|utnya puuhan dproses CASE kedua. Pada puuhan=1
(angka beasan) dbag ag man|ad 3 kemungknan, karena
buny kamatnya ada 3 macam,
4.5 Konversi /tru*tur IF dan ;A/G
*e )ahasa ;
Berkut n dberkan pedoman konvers dar agortma ke
daam bahasa C
untuk struktur IF dan
CASE:
Agortma Bahasa C
If konds then
Aks
End f
f (konds) {
Aks;
}
If konds then
Aks1
Ese
Aks2
End f
If (konds) {
Aks1;
}
ese
{ Aks
2;
}
If konds1 then
Aks1
Ese f konds2
f (konds1) {
Aks1;
}
Aks2
Ese
Aks3
End f
ese f
(konds2)
{ Aks2;
}
ese
{ Aks
3;
Case
ekspres
Na1:
Aks1
Na2:
Aks2
Na3:
Aks3
swtch (ekspres) {
case Na1:
Aks1;
Break;
case Na2:
Aks2;
Break;
case Na3: Aks3;
Case
ekspres
Na1: Aks1
Na2: Aks2
Na3: Aks3
Otherwse: Aks4
End case
swtch (ekspres) {
case Na1:
Aks1;
Break;
case Na2:
Aks2;
Break;
case Na3:
Aks3;
Break;
C a s e ekspres
Na-1,Na-2,Na-3: Aks1
Na-4,Na-5: Aks2
Na-6..Na-8: Aks3
Otherwse: Aks4
E n d C a s e
swtch (ekspres) {
case Na1:
case Na2:
case Na3:
Aks1;
Break;
case Na4:
case Na5:
Aks2;
Break;
case Na6:
case Na7:
case Na8:
Aks3;
Break;
Catatan:
- penusan konds pada IF dan ekspres pada CASE daam
bahasa C harus dgunakan tanda kurung ( ).
- aks berupa satu perntah atau ebh, masng-masng dakhr
ttk koma.
- apaba aks hanya berupa satu perntah,
penggunaan { } dapat dhangkan.
- kata "f", "ese", "swtch", "case" dan "defaut" daam bahasa
C, harus
dtus dengan huruf kec semua.
- daam bahasa C tdak ada kata "then", "end f" dan "end
case" tetap
dgantkan pasangan kurung kurawa { dan }
- hat-hat dengan penggunaan kesamaan, yatu dengan "=="
bukan "=".
- strng dgunakan kutp dua ( sepert "test" ) bukan kutp
satu (test). Contoh penusan agortma seengkapnya dan
has konversnya ke bahasa C. Damb dar contoh pada
Kasus 4.3
Agortma Bahasa C
A g or tma PDAM
/* menghtung baya
pemakaan ar*/ Ka mu s D a t a
paka,a,b,c,d : nteger
baya : nteger
Be g n
|Input(paka)
|a10
|b 0
|c 0
|d 0
|If (paka>30) t h en
| |b 10
| |c 10
| |d paka - 30
|E s e If (paka>20) t h en
| |b 10
| |c paka - 20
|E s e If (paka>10) t h en
| |b paka - 10
|E n d f
|baya a * 2000 + b * 3000 +
| c * 4000 + d * 5000 +
| 5000
Jinclude Dstdio.hC
Jinclude
Dconio.hC
/* menghtung baya pemakaan
ar*/
int main.0 K
//Kamus Data
nt paka,a,b,c,d;
nt baya;
//Begn
prntf("Masukkan pemakaan
ar: ");
scanf("%d",&paka);
a=1
0;
b=0;
c=0;
d=0;
f (paka>30) {
b=10
;
c=10
;
d=paka -
30;
|Output(baya
=,baya)
E n d
ese f (paka>10) {
b=paka -
10;
}
baya = a * 2000 + b * 3000 +
c * 4000 + d * 5000 +
10000
;
prntf("baya = %d",baya);
getche.0L
return 'L
//End
M
#ang*um
an
1. Struktur pemhan dapat dgunakan untuk
membuat program meakukan aks tertentu sesua na
dar konds yang dpertmbangkan.
2. Struktur pemhan dapat berupa struktur IF ... THEN ...,
struktur IF ...
THEN ... ELSE ..., struktur CASE, maupun pemhan
bersarang IF atau
CASE.
3. Struktur IF ... THEN ... (tanpa ELSE) dgunakan pada
stuas dengan phan menger|akan aks atau tdak.
4. Struktur IF ... THEN ... ELSE ... dgunakan untuk memh
saah satu aks dar berdasarkan na konds.
5. Struktur CASE merupakan bentuk penyederhanaan
dar struktur IF dengan persyaratan tertentu, yatu
konds berupa pembandngan kesamaan dan na yang
dbandngkan harus ordna (nteger,char atau booean).
6. Kausa OTHERWISE pada struktur CASE bersfat opsona,
sepert hanya
ELSE pada struktur CASE.
7. Struktur pemhan bersarang dan struktur
CASE dapat menyederhanakan program yang
menyeesakan kasus dengan na konds ber|umah ebh
dar dua.
Kuis )enar /alah
1. Kausa ELSE daam struktur pemhan IF... THEN...
ELSE... berart |ka tdak.
2. Kausa THEN daam struktur pemhan IF... THEN... ELSE...
berart maka.
3. Struktur pemhan dapat membantu pengamban
keputusan daam program.
4. Struktur pemhan dapat membuat program ber|aan
dengan aur yang berbeda sesua konds yang sedang
beraku.
5. Struktur CASE hanya dapat dgunakan pada pemhan
dengan satu ekspres.
6. Pada struktur pemhan IF... THEN... ELSE..., |ka konds
yang dsebutkan seteah kausa IF berna benar maka
program akan men|aankan aks seteah kausa ELSE.
(Untuk soa no 7 - 9) Perhatkan potongan
agortma berkut n:
#nput 1nilai2
IF nilai ; <8 A&) nilai => /?? THEN
Output 1@&ilai mutu > AA2
ELSE
IF nilai ; 9? A&) nilai => <8 THEN
Output 1@&ilai mutu > BA2
ELSE
IF nilai ; 68 A&) nilai => 9? THEN
Output 1@&ilai mutu > %A2
ELSE
IF nilai ; 4? A&) nilai => 68 THEN
Output 1@&ilai mutu
> )A2
ELSE
Output 1@&ilai mutu
> EA2
ENDI
F ENDIF
ENDIF
ENDI
F
7. |ka nputan na = 60, maka outputnya adaah Na mutu
= B.
8. |ka nputan na = 101, maka outputnya adaah Na mutu
= E
9. |ka nputan na = -5, maka outputnya adaah
Na tdak dapat dtentukan.
(Untuk soa no 10 - 13) Perhatkan potongan
agortma berkut n: CASE nilai OF
@AA : Output 1@angat memuaskanA2
@BA : Output 1@MemuaskanA2
@%A : Output 1@%ukupA2
@)A : Output 1@KurangA2
E : Output 1@angat kurangA2
OTHERWISE : Output 1@#nputkan ABBB%B) atau EA2
ENDCASE
10. |ka nputan na = B, maka outputnya adaah Sangat
memuaskan
11. |ka nputan na = E, maka outputnya adaah Sangat
kurang
12. |ka nputan na = 65, maka outputnya adaah Cukup
13. Potongan agortma berkut n tepat sama dengan
potongan program pada soa:
#nput 1nilai2
IF nilai > @AA THEN
Output 1@angat memuaskanA2
ELS
E
IF nilai > @BA THEN
Output 1@MemuaskanA2
ELSEIF nilai > @%A THEN
Output 1@%ukupA2
ELSEIF nilai > @)A THEN
Output 1@KurangA2
ELSEIF nilai > @EA THEN
Output 1@angat kurangA2
ELSEOutput 1@#nputkan ABBB%B) atau EA2
ENDI
F ENDIF
ENDI
F ENDIF
ENDIF
14. Pada struktur pemhan IF... THEN...,
pemrogram tdak peru menentukan parameter konds
yang dgunakan.
15. Pada struktur pemhan CASE, pemrogram tdak peru
menentukan
parameter konds yang dgunakan.
16. Struktur pemhan CASE dapat menyederhanakan
pemhan yang dtus dengan struktur IF... THEN...
ELSE... .
17. Daam fowchart, pengecekan konds pada
struktur pemhan dgambarkan dengan bentuk beah
ketupat.
18. Dua gars keuar dar struktur pemhan daam fowchart
menun|ukkan
kemungknan na dar konds.
19. Konds dan aks pada struktur pemhan harus berupa
ekspres booean.
20. Perhatkan potongan agortma
berkut n: Input (x)
IF , mod 3 > ? THEN
Output 1@sisa bagi adalah nolA2
ELSE
Output 1@sisa bagi bukan nolA2
ENDIF
Agortma d atas dapat dgunakan untuk membedakan
bangan genap dan gan|.
Pilihan 3anda
1. Struktur pemhan terdr atas komponen-komponen
berkut n,
kecua . .
A. konds pemhan
B. aternatf aks dr
na konds
C. aks
D. reaks
E. parameter konds
2. Perhatkan potongan agortma
berkut n: IF badan belum bersih
THEN
teruskan mandi
ELSE
mandi selesai
ENDIF
Menurut potongan agortma tersebut, mand seesa |ka
. .
A. tangan capek
B. sudah terau
ama
C. badan sudah
bersh
D. mand tdak dteruskan
E. phan A,B,C,dan D saah
3. Pernyataan manakah yang SALAH tentang struktur
pemhan CASE.
END CASE?
A. Terseda aks defaut daam struktur pemhan n
B. Daam struktur n, konds pemhan tdak peru
dtentukan
C. Struktur n dapat dgunakan untuk
menggantkan struktur pemhan bersarang.
D. Struktur n memk komponen parameter konds,
aternatf na,
dan aks
E. Pernyataan A,B,C maupun D benar semua.
4. Potongan agortma manakah yang tepat untuk
membedakan bangan genap dan gan|?
a0 #nput 1,2
IF , mod 3 ;> ? THEN
Output 1@, adalah bilangan genapA2
ELSE
IF , mod 3 = ? THEN
Output 1@, adalah bilangan ganCilA2
ENDI
F ENDIF
b0 #nput
1,2
IF , di. 3 ;> ? THEN
Output 1@, adalah bilangan genapA2
ELSE
IF , di. 3 = ? THEN
Output 1@, adalah bilangan ganCilA2
ENDI
F ENDIF
c0 #nput
1,2
IF , mod 3 > ? THEN
Output 1@, adalah bilangan genapA2
ELSE
Output 1@, adalah bilangan ganCilA2
ENDIF
d0 #nput
1,2
IF , di. 3 > ? THEN
Output 1@, adalah bilangan genapA2
ELSE
Output 1@, adalah bilangan ganCilA2
ENDIF
e. Phan A,B,C,D saah
5. Berkut n adaah contoh konds yang tdak dapat
dgunakan daam
pemhan, yatu . .
A. angka1 >
angka2
B. ga| =
1000000
C. ba|u = baru
D. a * b <= 0
E. Phan A,B,C,D saah
6. Apakah fungs kausa OTHERWISE pada struktur
pemhan CASE. END
CASE
?
A. Menentukan aks yang harus dakukan |ka konds
berna benar B. Menentukan aks yang harus
dakukan |ka konds berna saah C. Menentukan
aks tambahan yang dakukan apapun na konds
D. Menentukan aks yang harus dakukan |ka tdak
ada na yang
sesua dengan ekspres
E. Mengakhr struktur pemhan
7. Perhatkan potongan agortma berkut n:
#nput 1harga2
IF harga > /38?? then
Bel
i
ENDIF
Pernyataan manakah yang benar tentang
program d atas? A. |ka harga <12500 maka
akukan aks be
B. |ka harga >12500 maka akukan aks be
C. |ka harga = 12500 maka program tdak
meakukan apapun D. |ka harga <> 12500 maka
program tdak meakukan apapun E. |ka
harga <> 12500 maka program error
8. Daam struktur IF. THEN. ELSE., kausa IF dapat
dartkan . .
A. |ka
B. Maka
C. |ka
tdak
D. Sebaknya
E. Apapun yang ter|ad
9. Perhatkan potongan agortma
berkut n:
#nput 1n2
p > nD3
IF p mod 3 > ? THEN
Output
1p732
ELSE
Output
1pD32
ENDIF
Pernyataan manakah yang benar tentang agortma d
atas?
A. Berapapun na yang dnputkan, outputnya sama
dengan na nputan
B. |ka nputannya adaah bangan gan|, outputnya
adaah na nputan dka dua
C. |ka nputannya adaah bangan genap, outputnya
adaah na nputan dbag dua
D. Berapapun na yang dnputkan, outputnya adaah
na nputan dka dua
E. Phan A,B,C maupun D saah
10. Perhatkan potongan agortma berkut n:
#nput
1kelas2
SWITCH
kelas
BEGIN
CASE @/A :
Output 1@PengaCar > AnaA2
break
CASE @3A :
Output 1@PengaCar > AniA2
break
CASE @4A :
Output 1@PengaCar > #naA2
break
END
Apakah output dar agortma d atas |ka nputnya keas
= 4?
A. Penga|ar =
Ana B.
Penga|ar = An
C. Penga|ar =
Ina
D. Program error
E. Phan A,B,C dan D saah
Pengulanga
n
127
% Pengulangan
1verview Penguangan ($oop) merupakan sebuah
konsep yang pentng daam pemrograman. Dengan
struktur penguangan, program dapat ber|aan beberapa
ka sesua nsasas, |umah teras dan konds berhent
yang dtentukan. Ha n dapat menyederhanakan
program yang kompeks men|ad ebh sederhana. Daam
C dsedakan berbaga perntah $oop, dmana setap
perntah loop memek keunkan tersendr. D daam bab n
akan d|easkan tentang struktur penguangan daam
agortma serta mpementas struktur peruangan dengan
perntah loop yang ada d daam
C.
!u2uan
1. Memaham konsep dasar dan struktur
128 Pengulanga
n
penguangan
2. Memaham perntah
penguangan daam C
3. Menerapkan sntaks-sntaks penguangan daam
menyeesakan
persoaan
%.1 Konsep
Pengulangan
Program yang efsen adaah program yang
memungknkan pengguna beker|a sesedkt mungkn dan
komputer beker|a sebanyak mungkn. Saah satu cara
meakukan ha tersebut adaah dengan menggunakan kemba
sekumpuan bars program yang terdapat pada bagan an
dar program tersebut atau bars program yg terdapat d
daam program an.
Penguangan merupakan sebuah konsep pemrograman
yang pentng karena konsep n memungknkan pengguna
menggunakan sekumpuan bars program beruang ka
dengan tga komponen yang mengendakannya, yatu:
Inisialisasi; menentukan konds awa dakukannya
penguangan. 7umlah iterasi; menun|ukkan berapa ka
penguangan akan dakukan. Kondisi berhenti;
menentukan konds yang dapat mengakhr
penguangan.
Contoh kasus duna nyata yang dapat dgunakanuntuk
menggambarkan ketga komponen n adaah certa bu
mengupas sepuuh (10) butr kentang. Ibu akan
mengumpukan duu 10 butr kentang yang akan dkupas,
kemudan Ibu akan mengamb sebuah kentang kemudan
mengupasnya, seteah seesa mengupas Ibu akan mengamb
kentang berkutnya dan meakukan aks mengupas ag. Ibu
akan meakukan pengupasan kentang satu persatu hngga
mencapa kentang ke-10, dan seuruh kentang tersebut teah
terkupas. Ibu akan meakukan sederetan aks yang tepat
sama terhadap kesepuuh butr kentang tersebut. Maka,
Inisialisasi: 10 butr kentang yang mash utuh dengan
kutnya
7umlah iterasi: 10 (sesua |umah kentang)
Kondisi berhenti: 10 butr kentang sudah terkupas.
Ketka mengmpementaskan daam program, ketga
komponen n tdak seau dapat ddefnskan daam struktur
penguangan. Mungkn sa|a saah satu komponen tersebut
tdak ddefnskan. Penguangan tetap dapat ber|aan, asa
komponen yang tdak ddefnskan tersebut dapat dketahu
secara tersrat berdasarkan komponen an yang ddefnskan.
Ha an yang peru dperhatkan adaah bahwa pengulangan
harus berhenti. |ka penguangan tdak pernah berhent,
maka ogka program saah. Penguangan akan berhent |ka
|umah teras yang dmnta sudah tercapa atau konds
berhent berna benar. Maka, daam setap penguangan,
pemrogram peru menentukan |umah teras atau konds
berhent dan angkah pencapaan menu|u konds berhent
tersebut.
Pada bab n akan d|easkan 3 struktur peruangan dan
mpementasnya d daam C, yatu struktur peruangan Whe
, For, dan Do Whe
%.2 Sintaks
01"2E
Penguangan dengan menggunakan WHILE merupakan
sebuah penguangan yang dkendakan oeh suatu konds
tertentu, dmana konds tersebut yang akan menentukan
apakah peruangan tu akan terus daksanakan atau
dhentkan. Konds tersebut akan dcek dsetap awa teras,
apakah sebuah konds terpenuh atau tdak. |ka konds
terpenuh (berna benar), maka teras akan dan|utkan. |ka
konds tdak terpenuh, maka teras dhentkan.
Peruangan dengan WHILE dapat dgunakan pada
struktur peruangan
yang dketahu |umah terasnya dan |uga pada struktur
peruangan yang tdak dketahu |umah terasnya, tetap
harus seau terdapat konds berhent. Struktur penguangan
WHILE adaah:
1 {nsasas}
2 01"2E (konds)
3 aks
4 ubah pencacah (pencapaan konds berhent)
8 E3D01"2E
Pencacah adaah varabe pengenda teras yang harus
dnsasas, dcek daam konds, dan terus berubah nanya
setap teras dakukan. Pencacah nah yang akan membuat
sebuah konds berhent tercapa. Pada struktur penguangan
dengan sntaks WHILE, na pencacah akan dubah d akhr
aks penguangan.
Contoh: Ibu mengupas 10 butr kentang dapat
drepresentaskan dengan penguangan WHILE sebaga berkut
:
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang beum dkupas
FS : 10 kentang teah terkupas
KAMUS DATA
kentang : nteger
1
BEGIN
{nsasas |umah kentang yang sudah dkupas}
2 kentang
0
3 WHILE (kentang < 10 ){konds
teras dakukan}
4 Amb sebuah
kentang
5 Kupas kut
kentang
6 kentangkentang+1 {pencapaan
konds berhent}
7
ENDWHILE
8
END
Teah dketahu bahwa Ibu akan meakukan pengupasan
sebanyak 10 kentang, maka sebeum masuk struktur
penguangan, varabe kentang bers
0 {menun|ukkan bahwa d awa teras beum ada kentang
yang dkupas atau
|umah kentang yg teah
dkupas = 0}.
Pada teras pertama, ter|ad pengecekan konds
(kentang < 10) dmana artnya "apakah |umah kentang yang
dkupas beum mencapa 10", karena na *entang A '
maka konds berna benar, bu akan mengamb sebuah
kentang kemudan mengupas kutnya. D akhr teras
pertama, |umah kentang yang sudah dkupas men|ad (0+1)
= 1. Pada ttk n, varabe kentang bers 1 (artnya, 1
kentang sudah dkupas).
Pada teras kedua, ter|ad pengecekan konds (kentang
< 10), sedangkan kentang = 1, maka konds berna benar,
bu akan mengamb sebuah kentang kemudan mengupas
kutnya. D akhr teras kedua, |umah kentang yang sudah
dkupas men|ad (1+1)=2.
Iteras n terus beruang sampa teras ke 10, varabe
kentang bers
9. Saat ter|ad pengecekan konds (kentang < 10) berna
benar, maka bu mengamb sebuah kentang kemudan
mengupas kutnya. D akhr teras ke sepuuh, |umah
kentang yang sudah dkupas men|ad (9+1) = 10.
Kemudan, pada teras ke 11, ter|ad pengecekan konds
(kentang < 10) , karena kentang = 10 maka konds berna
saah, sehngga teras dakhr.
Has akhrnya, varabe kentang bers 10 (artnya, 10
kentang sudah dkupas).
|aannya teras n dapat dtus daam bentuk tabe
berkut:
Iterasi *e> Kentan
g
*entang D
1'
ambil E
*upas
*entan
g
1 0 Ya Ya 1
2 1 Ya Ya 2
2 Ya Ya 3
$ 3 Ya Ya 4
% 4 Ya Ya 5
( 5 Ya Ya 6
+ 6 Ya Ya 7
& 7 Ya Ya 8
- 8 Ya Ya 9
1' 9 Ya Ya 10
11 10 Tda Tda -
Dar contoh d atas, varabe kentang merupakan
pengenda teras. Iteras dapat terus dakukan atau tdak,
bergantung pada na varabe kentang n. Sean|utnya,
varabe penentu teras n dsebut dengan pencacah.
Pencacah harus berupa na yang memk urutan, yatu
dapat bertpe nteger atau karakter. D setap struktur
penguangan, pencacah seau ada dan |angan upa untuk
mengnsasas pencacah. Na pencacah akan berubah pada
setap teras.
Ha an yang peru dperhatkan adaah bahwa d akhr
teras, varabe
kentang berna 10. Na n tdak berubah ag karena teras
tdak dakukan ag, dan dsebut sebaga loop in.ariant.
Contoh an struktur penguangan n:
1) Agortma untuk menampkan karakter * sebanyak 5
ka.
ALGORITMA Tamp_Bntang
IS : -
FS : |umah bntang yg tamp = 5
KAMUS DATA
: nteger
1 BEGIN
2 0 {nsasas pencacah }
3 WHILE ( < 5) {|umah teras}
4 Output (*) ,aks-
5 + 1 {pencapaan konds berhent}
6 ENDWHILE
7 END
Output dar agortma n:
*
*
*
*
*
2) Agortma untuk menampkan teras ke 1
sampa 5 dengan penguangan.
ALGORITMA Iteras_Angka
IS : -
FS : Tamp angka 1 hngga 5
KAMUS DATA
: nteger
1 BEGIN
2 1 {nsasas pencacah }
3 WHILE ( <= 5)
4 Output (In adaah teras ke-,)
5 + 1
6 ENDWHILE
7 END
Output dar
agortma n: In
adaah teras ke-1
In adaah teras ke-2
In adaah teras ke-3
In adaah teras ke-4
In adaah teras ke-5
3) Agortma untuk memasukkan na tga (3) orang
mahasswa
ALGORITMA Input_Na
IS : -
FS : Menerma nputan na dar user
KAMUS DATA
: nteger na
: nteger
1 BEGIN
2 1
3 WHILE ( <= 3)
4 Output (Na mahasswa ke-,,adaah:)
5 Input (na)
6 + 1
7 ENDWHILE
8 END
Output dar
agortma n:
Na mahasswa ke-1
adaah: _ Na
mahasswa ke-2 adaah:
_ Na mahasswa ke-3
adaah: _
4) Agortma untuk menghtung na rata-rata dar tga
bangan yang dnputkan.
ALGORITMA Na_Rata_Rata
IS : -
FS : Tamp rata-rata dar na yang dnputkan
KAMUS DATA
|umah : foat
bangan : nteger x
: foat
rerata : foat
1 BEGIN
2 |umah 0 {varabe |umah bangan}
3 bangan 3 {nsasas varabe pencacah}
4 WHILE (bangan > 0)
5 Output(Masukkan angka : )
6 Input (x) {masukkan sebuah bangan}
7 |umah |umah + x {tambahkan bangan}
8 bangan bangan - 1 {pencacah mundur}
9 ENDWHILE
10 rerata |umah/ 3 {menghtung rerata}
11 Output (Rerata : ,rerata)
12 END
Pada contoh agortma yang ke-4, dtun|ukkan bahwa
teras dapat dakukan dengan pencacah mundur. Seama
konds bangan > 0 terpenuh, maka pengguna dmnta
memasukkan sebuah bangan yang kemudan d|umahkan
dengan bangan-bangan sebeumnya (pada teras
pertama,
bangan d|umahkan dengan no). Karena menggunakan
teras mundur, maka pencacah akan dkurangkan.
Agortma akan memberkan output berupa has
perhtungan rerata dar ketga bangan yang dnputkan.
|ka pada contoh agortma yang ke-4 datas dnputkan
angka 60, 70, dan 90, maka |aannya teras n dapat dtus
daam bentuk tabe berkut:
Iteras ke- bangan x |umah rerata banga
n
1 3 60 60 - 2
2 2 70 130 - 1
3 1 90 220 - 0
4 0 - 220 73.33 -
Penggunaan sntaks WHILE daam bahasa pemrograman C :
Agortma C
WHILE (kondisi)
aksi
ubah pencacah
ENDWHILE
whe (konds)
{
//aks
//ubah pencacah
}
...
0
WHILE ( < 5)
Output(*)
+ 1
ENDWHILE
...
...
= 0;
whe ( < 5)
{
prntf("*");
= + 1;
}
...
Impementas agortma contoh ke-4 ke daam C adaah :
1 //Na_Rata_Rata.c
2 //Menerma 3 angka dan menampkan rata-ratanya
3 #ncude <stdo.h>
4 man ()
5 {
6 //dekaras varabe yg dgunakan
7 foat |umah;
8 nt bangan;
9 foat x;
10 foat rerata;
11 //nsasas varabe |umah
12 |umah = 0;
13 //nsasas varabe pencacah bangan
14 bangan = 3;
15 whe (bangan > 0 )
16 {
17 //memnta nputan dar user
18 prntf("Masukkan angka : ");
19 scanf("%f",&x);
20 //men|umahkan angka yg dnputkan
21 |umah = |umah + x;
22 //mengurangkan pencacah untuk mencapa
23 //konds berhent
24 bangan = bangan - 1;
25 }
26 //menghtung rata-rata dar 3 nputan angka
27 rerata = |umah / 3;
28 //menampkan has rata-rata
29 prntf("Rerata : %.2f",rerata);
30 }
Teah dkatakan d awa bahwa peruangan dengan
WHILE dapat dgunakan untuk struktur penguangan yang
beum dketahu |umah terasnya, tetap tetap mempunya
konds berhent.
Contoh struktur penguangan n adaah sebaga berkut :
ALGORITMA Tebak_Huruf
IS : -
FS : Menampkan pesan "Maaf Anda saah" |ka
tebakan saah, dan menampkan "Anda Benar" |ka tebakan
benar
KAMUS DATA
huruf : character
1 BEGIN
2 {nsasas huruf tebakan pertama }
3 Output(Masukkan tebakan : )
4 Input(huruf)
5 WHILE (huruf != q) ,pengecekan konds-
6 Output(Maaf Anda saah )
7 Output(Masukkan tebakan : )
8 Input(huruf) {nput huruf berkutnya}
9 ENDWHILE
10 Output (Anda Benar)
11 END
Pada agortma datas tdak terhat adanya
dekaras varabe pencacah dan nsasasnya, |uga tdak
terhat adanya perubahan terhadap varabe pencacah untuk
mencapa konds berhent. Penguangan datas tetap dapat
ber|aan, karena komponen yang tdak ddefnskan tersebut
dapat dketahu secara tersrat berdasarkan komponen
an yang ddefnskan. Dan yang pang pentng adaah
peruangan n mempunya konds berhent.
Pada bars ke-4 user akan memasukkan sebuah
karakter. Karakter nah yang akan men|ad pemcu
daksanakan penguangan atau tdak, |ka karakter yang
dmasukkan adaah q, maka penguangan tdak dan|utkan,
tetap |ka karakter yang dmasukkan bukan q, maka
penguangan dan|utkan. Dapat dhat pada bars ke-5
bahwa konds berhent penguangan adaah ketka user
memasukkan (nput) huruf q.
|umah teras tdak dtentukan oeh varabe pencacah,
meankan dtentukan sendr oeh user yang mengnputkan
huruf. Berkut adaah mpementas dar agortma
Tebak_Huruf daam bahasa pemrograman C.
1 //Tebak_Huruf.c
2 //User memasukkan sebuah karakter untuk menebak
3 #ncude <stdo.h>
4 man()
5 {
6 //dekaras varabe untuk menerma nput
7 char huruf;
8 //mengnsasas huruf awa untuk dcek
9 prntf("Tebakan : " );
10 scanf("%s",&huruf);
11 //pengecekan konds terhadap huruf nputan
12 whe (huruf!='q')
13 {
14 //|ka huruf bukan 'q' maka nput huruf an
15 prntf("Maaf anda saah");
16 prntf("\nTebakan : " );
17 scanf("%s",&huruf);
18 }
19 //|ka huruf = 'q' maka tdak masuk ke whe
20 prntf("Anda Benar");
21 }
5.3 /inta*s D1NOPI:G
Sntaks DO... WHILE... meakukan penguangan serupa
dengan sntaks WHILE. Penggunaan sntaks n |uga tdak
harus menyebutkan |umah penguangan yang harus
dakukan, karena dapat dgunakan untuk peruangan
dengan |umah terasnya yang beum dketahu, tetap harus
mempunya konds berhent.
Bedanya, |ka pada sntaks WHILE konds devauas/ du|
sebeum aks
penguangan dakukan, sedangkan pada sntaks
DO...WHILE pengu|an konds dakukan seteah aks
penguangan dakukan.
Struktur penguangan DO...WHILE yatu:
1 {nsasas}
2 D1
3 aks
4 ubah pencacah
8 OPI:G (konds)
Pada struktur penguangan dengan sntaks DO...
WHILE..., aks akan terus dakukan hngga konds yang
dcek d akhr penguangan, berna benar. Dengan sntaks
n, penguangan past dakukan mnma satu ka, yakn pada
teras pertama sebeum pengecekan konds. WHILE dengan
DO WHILE serngka memberkan has yang sama, tetap
ada kaanya hasnya akan berbeda, sehngga harus berhat-
hat daam penggunaan konds antara WHILE dengan DO
WHILE.
Beberapa contoh penerapan struktur penguangan DO...
WHILE... :
5) Agortma bu mengupas kentang
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang beum dkupas
FS : 10 kentang teah terkupas
KAMUS DATA
kentang :
nteger
1 BEGIN
2 {nsasas |m kentang yang sudah dkupas}
3 kentang 0
4 DO
5 Amb sebuah kentang
6 Kupas kut kentang
7 {pencapaan konds berhent}
8 kentangkentang+1
9 WHILE (kentang < 10) {konds berhent}
10 END
Pada potongan agortma n, aks past dakukan mnma
satu ka, tanpa memperhatkan na pencacah. D akhr
teras pertama, baru dakukan pengecekan |umah
kentang yang sudah terkupas (pencacah). |aannya teras
n dapat dtus daam bentuk tabe berkut:
Iterasi *e> Ka*s
iM
*entan
g
Kentang D
1'
1 Ya 1 Ya
2 Ya 2 Ya
Ya 3 Ya
$ Ya 4 Ya
% Ya 5 Ya
( Ya 6 Ya
+ Ya 7 Ya
& Ya 8 Ya
- Ya 9 Ya
1' Ya 10 Tdak
Penguangan dhentkan pada teras ke- 10 karena
konds kentang < 10 berna saah.
6) Agortma untuk menampkan karakter * sebanyak 5 ka.
ALGORITMA Tamp_Bntang
IS : |umah bntang yg tamp = 0
FS : |umah bntang yg tamp = 5
KAMUS DATA
: nteger
1 BEGIN
2 0 {nsasas pencacah }
3 DO
4 Output (*) ,aks-
5 + 1 {pencapaan konds berhent}
6 WHILE ( < 5) {|umah teras}
7 END
Output dar agortma n:
*
*
*
*
*
Penguangan dhentkan pada teras ke- 5 karena konds
<5 saah.
7) Agortma untuk menampkan teras ke 1
sampa 5 dengan penguangan.
ALGORITMA Iteras_Angka
IS : -
FS : Tamp angka 1 hngga 5
KAMUS DATA
: nteger
1 BEGIN
2 1 {nsasas pencacah }
3 DO
4 Output (In adaah teras ke-,),aks-
5 + 1
6 WHILE ( <= 5) {konds berhent}
7 END
Output dar
agortma n: In
adaah teras ke-1
In adaah teras ke-2
In adaah teras ke-3
In adaah teras ke-4
In adaah teras ke-5
Penguangan dhentkan pada teras ke- 5 dmana na
= 6 sehngga konds <=5 saah.
8) Agortma untuk memasukkan na tga (3) orang
mahasswa
ALGORITMA Input_Na
IS : -
FS : Menerma nputan na dar user
KAMUS DATA
: nteger na :
nteger
1 BEGIN
2 1 {nsaas}
3 DO
4 Output (Na mahasswa ke-,,adaah:)
5 Input (na)
6 + 1
7 WHILE( <= 3) {konds berhent}
8 END
Output dar agortma n:
Na mahasswa ke-1
adaah: _ Na
mahasswa ke-2 adaah:
_ Na mahasswa ke-3
adaah: _
Penguangan dhentkan pada teras ke- 3, ketka na
= 4 sehngga konds <= 3 saah.
9) Agortma untuk menghtung na rata-rata dar tga
bangan yang dnputkan.
ALGORITMA Na_Rata_Rata
IS : -
FS : Tamp rata-rata dar na yang dnputkan
KAMUS DATA
|umah : foat
bangan : nteger x
: foat
rerata : foat
1 BEGIN
2 |umah 0 {varabe |umah bangan}
3 bangan 3 {nsasas varabe pencacah}
4 DO
5 Output(Masukkan angka : )
6 Input (x) {masukkan sebuah bangan}
7 |umah |umah + x {tambahkan bangan}
8 bangan bangan - 1 {pencacah mundur}
9 WHILE (bangan > 0)
10 rerata |umah/ 3 {menghtung rerata}
11 Output (Rerata : ,rerata)
12 END
Pada agortma n |uga dtun|ukkan bahwa teras pada
penguangan dengan sntaks DO... WHILE... dapat dakukan
dengan pencacah mundur. Pengguna terus dmnta
memasukkan sebuah bangan yang kemudan d|umahkan
dengan bangan-bangan sebeumnya (pada teras pertama,
bangan d|umahkan dengan no) hngga pencacah berna 0.
Program akan memberkan output berupa has perhtungan
rerata dar ketga bangan yang dnputkan.
Penggunaan DO...WHILE daam pemrograman C :
Agortma C
DO
aks
ubah pencacah
WHILE (konds)
do
{
//aks
//ubah pencacah
}
whe (konds);
Impementas agortma contoh ke-8 ke daam C adaah :
1 //InputNa.c
2 //User dmnta untuk nput na sebanyak 3 ka
3 #ncude <stdo.h>
4 man()
5 {
6 nt ; //dekaras pencacah
7 nt na;
8 =1; //nsasas pencacah
9 do
10 {
11 prntf("Na mahasswa ke-%d adaah : ",);
12 scanf("%d",&na); //nput na dar user
13 =+1; //penambahan na pencacah
14 }
15 whe (<=3); //konds berhent
16 }
Tdak semua mpementas konds pada DO...WHILE
sama dengan mpementas pada WHILE, contohnya adaah
agortma berkut :
OPI:G
ALGORITMA Tebak_Huruf
IS : -
FS : Menampkan pesan "Maaf Anda saah" |ka
tebakan saah, dan menampkan "Anda Benar" |ka tebakan
benar
KAMUS DATA
huruf : character
1 BEGIN
2 Output(Masukkan tebakan : )
3 Input(huruf)
4 WHILE (huruf != q)
5 Output(Maaf Anda saah )
6 Output(Masukkan tebakan : )
7 Input(huruf)
8 ENDWHILE
9 Output (Anda Benar)
10 END
D1...OPI:G
ALGORITMA Tebak_Huruf
IS : -
FS : Menampkan pesan "Maaf Anda saah" |ka
tebakan saah, dan menampkan "Anda Benar" |ka tebakan
benar
KAMUS DATA
huruf : character
1 BEGIN
2 Output(Masukkan tebakan : )
3 Input(huruf)
4 DO
5 Output(Maaf Anda saah )
6 Output(Masukkan tebakan : )
7 Input(huruf)
8 WHILE (huruf != q)
9 Output (Anda Benar)
10 END
Perbandngan output dar agortma datas adaah sebaga
berkut
OPI:G
Masukkan tebakan : q
Anda Benar
D1...OPI:G
Masukkan tebakan : q
Maaf Anda Saah
Masukkan tebakan :
Ba user memasukkan nputan q pada pertanyaan yang
kedua n, maka penguangan akan dhentkan, tetap |ka user
memasukkan huruf yang an maka penguangan akan
dan|utkan.
Dar contoh datas dapat dhat bahwa penggunaan
sntaks WHILE dan
DO...WHILE kadang akan memberkan output
yang berbeda.
Sama sepert pada penggunaan sntaks WHILE, sntaks
DO...WHILE dapat dgunakan untuk struktur penguangan
yang beum dketahu |umah terasnya, tetap tetap
mempunya konds berhent.
Contoh struktur penguangan tersebut adaah
sebaga berkut :
ALGORITMA Menu
IS : -
FS : Menampkan menu yang dph user
KAMUS DATA
phan : nteger
1 BEGIN
2 DO
3 Output(MENU : )
4 Output(1. Uang)
5 Output(2. Keuar)
6 Output(Phan : )
7 Input(phan)
8 WHILE (phan != 2) {pengecekan konds}
9 Output (Anda Ph Keuar)
10 END
Karena pada struktur DO...WHILE tdak terdapat
pengecekan konds d awa, maka s dar DO...WHILE akan
angsung d|aankan, pengecekan akan dakukan seteah user
memasukkan phan. Yang pang pentng adaah peruangan
n mempunya konds berhent, yatu ketka user nput angka
2. |umah teras tdak dtentukan oeh varabe pencacah,
meankan dtentukan sendr oeh user yang mengnputkan
angka. Berkut adaah mpementas dar agortma Menu
daam bahasa pemrograman C.
1 //Menu.c
2 //User memasukkan phan menu 1 atau 2
3 #ncude <stdo.h>
4 man()
5 {
6 nt phan;
7 do
8 {
9 prntf("MENU");
10 prntf("\n1. Uang");
11 prntf("\n2. Keuar");
12 prntf("\nPhan : ");
13 scanf("%d",&phan);
14 }
15 whe (phan != 2);
16 prntf("\nAnda ph keuar");
17 }
Output dar sntaks datas adaah
MENU
1. Uang
2. Keuar
Phan : 1
MENU
1. Uang
2. Keuar
Phan : 1
MENU
1. Uang
2. Keuar
Phan : 2
Anda ph keuar
%.$ Sintaks FO/
Sntaks penguangan FOR merupakan sntaks yang reatf
pang mudah dgunakan. Sntaks n serupa dengan sntaks
WHILE... DO... daam ha pengecekan konds dakukan d
awa. Daam menggunakan struktur penguangan dengan
sntaks FOR, pemrogram harus mendefnskan na awa
dan na akhr pencacah yang menun|ukkan |umah teras.
Setap ka teras berangsung, na pencacah akan dubah.
|ka pencacah sudah mencapa na akhr yang dtentukan,
maka penguangan akan berhent.
Ba contoh Ibu mengupas kentang ngn dubah ke
daam struktur penguangan dengan sntaks FOR, pemrogram
harus menentukan na awa dan akhr pencacah, yatu
varabe kentang. Karena bu akan mengupas kentang
pertama hngga kentang ke sepuuh, maka:
Na awa pencacah: kentang = 1
Na akhr pencacah: kentang = 10
Seama konds kentang>=1 dan kentang<=10
terpenuh, aks penguangan akan
dakukan.
Struktur umum penguangan dengan sntaks FOR adaah:
F1#.inisialisasiLKondisiPengulanganLPerubah6ilaiPenca
cah0
Kpernyataan8perintah
pengulanganM G6DF1#
Dmana :
Insasas : untuk memberkan na awa untuk
varabe pencacah. Konds Penguangan : konds
penguangan akan berhent atau tdak.
Perubah Na Pencacah : pengubahan na varabe
pencacah untuk mencapa konds berhent, dapat berupa
kenakan ataupun penurunan. Pengubah varabe
pencacah tdak harus seau nak atau turun satu, tetap
dapat dakukan pengubahan varabe pencacah ebh dar
satu.
Pernyataan perntah : aks yang akan duang
Maka, pada contoh-contoh sebeumnya dapat dubah daam
struktur FOR
men|ad :
10) Agortma bu mengupas kentang
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang beum dkupas
FS : 10 kentang teah terkupas
KAMUS DATA
kentang : nteger
1 BEGIN
2 //nsasas,konds, dan pengubah pencacah
3 //ddekaraskan daam sntaks for
4 FOR(kentang 0; kentang < 10; kentang++)
5 {aks penguangan}
6 Amb sebuah kentang
7 Kupas kut kentang
8 ENDFOR
9 END
Perhatkan bahwa potongan agortma d atas tdak
mencantumkan aks pengubah pencacah kentang
kentang + 1. Insasas, pengecekan konds, dan
pengubah varabe pencacah sudah terdapat daam
argumen FOR. Pada poss pengubah varabe, pernyataan
kentang++ sama dengan kentangkentang +
1,penambahan akan dakukan seteah aks
penguangan daksanakan.
|aannya teras n dapat dtus daam bentuk
tabe berkut:
Iterasi *e> *entang *entangD 1'Q Ka*siM
1 0 Ya Ya
2 1 Ya Ya
2 Ya Ya
$ 3 Ya Ya
% 4 Ya Ya
( 5 Ya Ya
+ 6 Ya Ya
& 7 Ya Ya
- 8 Ya Ya
1' 9 Ya Ya
11 10 Tda -
Penguangan dhentkan pada teras ke- 11 karena
konds kentang<10 berna saah.
11) Agortma untuk menampkan karakter * sebanyak 5
ka.
ALGORITMA Tamp_Bntang
IS : |umah bntang yg tamp = 0
FS : |umah bntang yg tamp = 5
KAMUS DATA
: nteger
1 BEGIN
2 FOR( 0; < 5; ++)
3 Output (*) ,aks-
4 ENDFOR
5 END
Output dar agortma n:
*
*
*
*
*
Penguangan dhentkan pada teras ke- 6 karena konds
<5 berna saah. Perhatkan bahwa pencacah dapat
dmua dar angka berapapun hngga berapapun sesua
kebutuhan program.
12) Agortma untuk menampkan teras ke 1
sampa 5 dengan penguangan.
ALGORITMA Iteras_Angka
IS : -
FS : |umah bntang yg tamp = 5
KAMUS DATA
: nteger
1 BEGIN
2 FOR( 1; <= 5;++)
3 Output (In adaah teras ke-,),aks-
4 ENDFOR
5 END
Output dar
agortma n: In
adaah teras ke-1
In adaah teras ke-2
In adaah teras ke-3
In adaah teras ke-4
In adaah teras ke-5
Penguangan dhentkan pada teras ke- 6 karena
konds <=5 berna saah.
13) Agortma untuk memasukkan na tga (3) orang
mahasswa
ALGORITMA Input_Na
IS : -
FS : Menerma nputan na dar user
KAMUS DATA
: nteger na
: nteger
1 BEGIN
2 FOR( 1; <= 3;++)
3 Output (Na mahasswa ke-,,adaah:)
4 Input (na)
5 ENDFOR
6 END
Output dar agortma n:
Na mahasswa ke-1
adaah: _ Na
mahasswa ke-2 adaah:
_ Na mahasswa ke-3
adaah: _
Penguangan dhentkan pada teras ke- 4 karena
konds <=3 berna saah.
Serupa dengan struktur penguangan dengan sntaks
an, struktur penguangan dengan sntaks FOR |uga dapat
dakukan dengan pencacah mundur. Berkut n adaah
beberapa contoh penggunaan struktur penguangan FOR
dengan pencacah mundur :
14) Program untuk menghtung rerata dar tga bangan yang
dnputkan.
ALGORITMA
Na_Rata_Rata
IS : -
FS : Tamp rata-rata dar na yang dnputkan
KAMUS DATA
|umah : foat
bangan :
nteger x
: foat
rerata : foat
1 BEGIN
2 |umah 0 {varabe |umah bangan}
3 {nsasas varabe pencacah}
4 FOR(bangan 3; bangan > 0;bangan--)
5 Output(Masukkan angka : )
6 Input (x)
7 |umah |umah + x
8 ENDFOR
9 rerata |umah/ 3 {menghtung rerata}
10 Output (Rerata : ,rerata)
11 END
Pada agortma, pengguna terus dmnta memasukkan
sebuah bangan yang kemudan d|umahkan dengan
bangan-bangan sebeumnya (pada teras pertama,
bangan d|umahkan dengan no) hngga pencacah
berna 0. Penguangan dhentkan pada teras ke-4
karena konds bangan>0 berna saah. Program akan
memberkan output berupa has perhtungan rerata dar
ketga bangan yang dnputkan.
15) Agortma petasan: program akan menghtung mundur
dengan menampkan se|umah bangan tertentu,
kemudan mengeuarkan pesan DOR!!! d akhr
perhtungan mundur.
ALGORITMA Htung_Mundur
IS :
FS : Menampkan angka dar 5 hngga 1
KAMUS DATA
htung : nteger
1 BEGIN
2 FOR(htung 5; htung > 0;bangan--)
3 Output(htung)
4 ENDFOR
5 Output (DOR!!!)
6 END
Output dar agortma n:
5
4
3
2
1
DOR!!!
16) Agortma bu mengupas kentang dengan perhtungan
mundur
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang beum dkupas
FS : 10 kentang teah terkupas
KAMUS DATA
kentang : nteger
1 BEGIN
2 //nsasas,konds, dan pengubah pencacah
3 //ddekaraskan daam sntaks for
4 FOR(kentang 10; kentang > 0; kentang--)
5 Amb sebuah kentang
6 Kupas kut kentang
7 ENDFOR
8 END
Pada agortma d atas, teras dakukan 10 ka dan
akan dhentkan pada teras ke 11 karena konds
kentang>0 berna saah.
Penusan sntaks FOR daam bahasa
pemrograman C: F o r d e n g an s a t u a k s
nt ;
for(=0;<5;++)
print*1EFdGBi2H
F o r d e n g an b a n y ak a k s
nt ;
for(=0;<5;++)
{
print*1EMasukkan angka ke-FdGBi2H
scan*1EFdGBInilai2H
}
Impementas agortma contoh ke-11 ke daam bahasa
pemrograman C :
1 //bntang.c
2 #ncude <stdo.h>
3 man()
4 {
5 nt ;
6 for(=0;<5;++)
7 prntf("\n*");
8 }
Sepert pada penggunaan sntaks WHILE dan
DO...WHILE, dmana kta dapat mengmpementaskan
struktur penguangan yang beum dketahu |umah
terasnya, tetap tetap mempunya konds berhent. Pada
sntaks FOR, kta dapat menggunakannya untuk penguangan
dengan |umah teras tak berhngga.
Contoh struktur penguangan tersebut adaah sebaga berkut :
ALGORITMA Menu
IS : -
FS : Menampkan menu yang dph user
KAMUS DATA
phan : nteger
1 BEGIN
2 FOR(;phan!=2;)
3 Output(MENU : )
4 Output(1. Uang)
5 Output(2. Keuar)
6 Output(Phan : )
7 Input(phan)
8 ENDFOR
9 Output (Anda Ph Keuar)
10 END
Argumen yang dgunakan d daam FOR tdak harus
seau engkap, kadang bagan nsasas tdak dgunakan
F1#.LKondisiPengulanganLPerubah6ilaiPencacah0
Kpernyataan8perintah
pengulanganM G6DF1#
Atau bagan Konds Penguangan tdak
kta perukan
F1#.InisialisaiLLPerubah6ilai
Pencacah0
Kpernyataan8perintah
pengulanganM G6DF1#
Ataupun bagan Perubah Na Pencacah
dhangkan sepert
F1#.InisialisaiLKondisiPen
gulanganL0
Kpernyataan8perintah
pengulanganM G6DF1#
|uga bsa dgunakan kombnas sepert contoh agortma d
atas, dmana bagan nsasas dan perubah na pencacah
dhangkan, tetap meskpun dhangkan, penguangan harus
tetap mempunya konds berhent
%.% Sintaks Pengulangan
Bersarang
Sama hanya dengan struktur pemhan, struktur
penguangan |uga dapat dsusun bersarang. Sebuah struktur
penguangan bsa berada daam struktur penguangan
annya. Atau, sebuah struktur penguangan bsa mengandung
struktur penguangan an d daamnya.
Dar contoh bu mengupas kentang, msanya
dengan struktur penguangan WHILE berkut n:
ALGORITMA Kupas_Kentang
IS : Terdapat 10 kentang beum dkupas
FS : 10 kentang teah terkupas
KAMUS DATA
kentang : nteger
1 BEGIN
{nsasas |umah kentang yang sudah dkupas}
2 kentang 0
3 WHILE (kentang < 10 ){konds teras dakukan}
4 Amb sebuah kentang
5 Kupas kut kentang
6 kentangkentang+1 {pencapaan konds berhent}
7 ENDWHILE
8 END
Setap ka bu mengamb sebuah kentang, bu akan
mengupas kut kentang kemudan angsung memotongnya
men|ad empat bagan. Berdasarkan konds n, potongan
agortma d atas dapat dengkap men|ad:
ALGORITMA Kupas_Kentang_Potong_4
IS : Terdapat 10 kentang beum dkupas
FS : 10 kentang teah terkupas dan terrs men|ad 4 bagan
KAMUS DATA
kentang :
nteger
potongan:
1 BEGIN
{nsasas |umah kentang yang sudah dkupas}
2 kentang 0
3 WHILE (kentang < 10 ){konds teras dakukan}
4 Amb sebuah kentang
5 Kupas kut kentang
6 potongan 1 {nsasa |m potongan kentang}
7 DO
8 Potong kentang
9 potongan = potongan + 1
10 WHILE (potongan<=4)
11 kentangkentang+1 {pencapaan konds berhent}
12 ENDWHILE
13 END
Pada contoh d atas, penguangan uar (WHILE)
merupakan penguangan untuk aks mengupas kentang,
sedangkan penguangan daam (DO...WHILE)
merupakan penguangan untuk memotong kentang ke
daam 4 bagan. Penguangan daam akan berhent ketka
|umah potongan = 4.
Contoh an penggunaan sntaks penguangan bersarang n
adaah sebaga berkut:
17) Agortma untuk menampkan karakter * sebanyak
5 ka, masng- masng sebanyak tga ka.
ALGORITMA Tamp_Bntang
IS : -
FS : Menampkan bntang sebanyak 3 koom dan 5 bars
KAMUS DATA
: nteger | :
nteger
1 BEGIN
2 FOR( 0; < 5; ++)
3 FOR(| 0; | < 3; |++)
4 Output (*) ,aks-
5 ENDFOR
6 ENDFOR
7 END
Output dar agortma n:
***
***
***
***
***
18) Agortma untuk memasukkan na tga (3) orang
mahasswa, yang masng-masng memk dua na
ALGORITMA Input_Na
IS :
FS : Na mahasswa teah dnputkan
KAMUS DATA
: nteger | :
nteger na :
nteger
1 BEGIN
2 FOR( 1; <= 3;++)
3 Output (Na mahasswa ke-,,adaah:)
4 FOR(|1; |<=2; |++)
5 Output(Na ke-,|,:)
6 Input (na)
7 ENDFOR
8 ENDFOR
9 END
Output dar agortma n:
Na mahasswa ke-1 adaah
Na ke-1:
_ Na ke-
2: _
Na mahasswa ke-2 adaah
Na ke-1:
_ Na ke-
2: _
Na mahasswa ke-3 adaah
Na ke-1:
_ Na ke-
2: _
Penguangan bersarang dapat |uga dakukan
dengan beberapa struktur penguangan yang berbeda,
bahkan dapat |uga dgabungkan dengan struktur pemhan.
Contoh:
19) Agortma untuk menampkan karakter * untuk
membentuk gars pembatas kotak sebesar ma koom
dan ma bars.
ALGORITMA Tamp_Bntang_Kotak
IS : -
FS : Menampkan tanda bntang berbentuk kotak
KAMUS DATA
: nteger | :
nteger
1 BEGIN
2 FOR( 1; <= 5; ++){penguangan bars}
3 IF (=1 OR =5) {bars ke-1 dan ke-5}
4 |1 {pencacah koom}
5 DO
6 Output (*)
7 ||+1
8 WHILE (|<=5)
9 ELSE {bars ke-2,3 dan 4}
10 |1
11 DO
12 IF (|=1 OR |=5)
13 Output(*)
14 ELSE
15 Output( )
16 ENDIF
17 ||+1
18 WHILE(|<=5)
19 ENDIF
20 ENDFOR
21 END
Impementas agortma datas ke daam C
1 //Bntang_Kotak.c
2 //menggambar * membentuk kotak
3 #ncude <stdo.h>
4 man()
5 {
6 nt ,|;
7 for(=1;<=5;++) //peruangan bars
8 {
9 //|ka kursor d poss bars 1,5
10 f ((==1) || (==5))
11 {
12 |=1;
13 do //peruangan koom utk bars 1,5
14 {
15 prntf("*");
16 |=|+1;
17 }
18 whe(|<=5);
19 }
20 //|ka kursor d poss bars 2,3,4
21 ese
22 {
23 |=1;
24 do //peruangan koom utk bars 2,3,4
173 Pengulanga
n
25 {
26 //|ka cursor berada d koom 1,5
27 f ((|==1) || (|==5))
28 prntf("*");
29 //|ka cursor berada d koom 2,3,4
30 ese
31 prntf(" ");
32 |=|+1;
33 }
34 whe(|<=5);
35 }
36 //ke bars berkutnya
37 prntf("\n");
38 }
39 }
Output dar agortma n:
*****
* *
* *
* *
*****
%.( Sintaks B/EAK dan $O3!"3.E
Sntaks BREAK dan %O&'#&UE merupakan sntaks yang
dgunakan untuk menghentkan penguangan dan
mean|utkan ke perntah atau aks berkutnya. Sntaks BREAK
dan CONTINUE dapat dgunakan bak d daam struktur
penguangan WHILE, DO...WHILE, dan FOR.
Sntaks BREAK dgunakan untuk menghentkan
penguangan kemudan keuar dar struktur penguangan
tanpa mean|utkan perntah d daam struktur penguangan.
Berkut adaah penguangan dengan FOR tanpa
menggunakan BREAK atau
CONTINUE :
ALGORITMA Iteras_Angka
IS : -
FS : Menampkan angka 1 hngga 6
KAMUS DATA
: nteger
1 BEGIN
2 FOR( 1; <= 6;++)
3 Output (In adaah teras ke-,),aks-
4 ENDFOR
5 OUTPUT(Akhr penguangan)
6 END
|ka agortma datas d|aankan, maka akan menghaskan
output sebaga berkut :
In adaah teras ke-1
In adaah teras ke-2
In adaah teras ke-3
In adaah teras ke-4
In adaah teras ke-5
In adaah teras ke-6
Akhr penguangan
Contoh penggunaan sntaks BREAK d daam
penguangan dengan menggunakan FOR
ALGORITMA Iteras_Angka_Break
IS : -
FS : Menampkan angka 1 hngga 6 tetap berhent d angka 3
KAMUS DATA
: nteger
1 BEGIN
2 FOR( 1; <= 6;++)
3 IF (=4)
4 BREAK
5 ENDIF
6 Output (In adaah teras ke-,),aks-
7 ENDFOR
8 OUTPUT(Akhr penguangan)
9 END
|ka agortma datas d|aankan, maka akan menghaskan
output sebaga berkut :
In adaah teras ke-1
In adaah teras ke-2
In adaah teras ke-3
Akhr penguangan
Ketka varabe mencapa angka 4 maka akan memenuh
syarat untuk masuk ke struktur IF, kemudan perntah BREAK
d|aankan yatu keuar dar struktur penguangan FOR, dan
menampkan perntah pada bars ke-8.
Sntaks %O&'#&UE dgunakan untuk kemba ke awa
penguangan tanpa men|aankan perntah berkutnya.
Contoh penggunaan sntaks CONTINUE d daam penguangan
dengan menggunakan FOR
ALGORITMA Iteras_Angka_Contnue
IS : -
FS : Menampkan angka 1 hngga 6
KAMUS DATA
: nteger
1 BEGIN
2 FOR( 1; <= 6;++)
3 IF (=4)
4 CONTINUE
5 ENDIF
6 Output (In adaah teras ke-,),aks-
7 ENDFOR
8 OUTPUT(Akhr penguangan)
9 END
|ka agortma datas d|aankan, maka akan menghaskan
output sebaga berkut :
In adaah teras ke-1
In adaah teras ke-2
In adaah teras ke-3
In adaah teras ke-5
In adaah teras ke-6
Akhr penguangan
Ketka varabe mencapa angka 4 maka akan memenuh
syarat untuk masuk ke struktur IF, kemudan perntah
CONTINUE d|aankan yatu kemba ke awa penguangan
dmana akan dakukan penambahan na varabe pencacah
dan pengecekan konds. Ketka perntah CONTINUE
d|aankan,
maka perntah berkutnya yatu perntah pada bars ke-6 tdak
d|aankan, sehngga tampan In adaah teras ke-4 tdak
keuar. Seteah kemba ke awa penguangan, varabe akan
dtambah men|ad 5 kemudan masuk ag ke struktur
penguangan.
Berkut adaah mpementas agortma d atas ke
daam bahasa pemrograman C :
1 //
TampAngkaBreak.c
2 #ncude
<stdo.h>
3
man()
4
{
5 nt
;
6 for(=1;
<=6; ++)
7
{
8 f
(==4)
9
{
10
break;
11
}
12 prntf("\nIn adaah teras
ke-%d",);
13
}
14 prntf("\nAkhr
penguangan");
15
}
1 //TampAngkaContnue.c
2 #ncude <stdo.h>
3 man()
4 {
5 nt ;
6 for(=1; <=6; ++)
7 {
8 f (==4)
9 {
10 contnue;
11 }
12 prntf("\nIn adaah teras ke-%d",);
13 }
14 prntf("\nAkhr penguangan");
15 }
|ka tdak terdapat konds berhent yang tepat untuk
suatu penguangan, maka kta dapat menggunakan sntaks
BREAK untuk keuar dar suatu penguangan. Berkut
contoh penguangan FOR dmana semua argumen d
daam FOR dhangkan, ha n akan memberkan
penguangan tak berhngga.
//Menu.c
//User memasukkan phan menu 1 atau 2
#ncude <stdo.h>
man()
{
nt phan;
for (;;)
{
prntf("MENU");
prntf("\n1.
Uang");
prntf("\n2.
Keuar");
prntf("\nPhan :
");
scanf("%d",&ph
an); f (phan
== 2)
break;
}
prntf("\nAnda ph keuar");
}
#ang*uman
1. Struktur penguangan memungknkan program
meakukan satu atau ebh aks beberapa ka.
2. Tga komponen pengenda aks adaah nsasas,
|umah teras, dan konds berhent.
3. Tga struktur penguangan yang dapat dgunakan
adaah struktur penguangan dengan sntaks WHILE,
DO...WHILE, dan FOR.
4. Struktur penguangan dapat dbuat bersarang dengan
sntaks penguangan yang sama atau berbeda,
bahkan dapat dgabungkan
dengan struktur pemhan.
5. Untuk keuar dar struktur penguangan sebeum konds
berhent, kta dapat menggunakan sntaks BREAK
6. Untuk mean|utkan struktur penguangan ke awa
penguangan maka dapat dgunakan sntaks CONTINUE
7. Ha yang terpentng dar struktur penguangan adaah
konds berhent yang akan memberkan konds apakah
penguangan dakukan atau tdak.
Kuis )enar /alah
1. Struktur penguangan dengan sntaks WHILE tdak
mencantumkan nsasas.
2. Struktur penguangan dengan sntaks DO...WHILE tdak
mencantumkan konds berhent.
3. Struktur penguangan dengan sntaks FOR tdak
mencantumkan |umah
teras.
4. Aks yang dtuskan ddaam sntaks WHILE akan
d|aankan |ka konds pada WHILE... berna benar.
5. Aks yang dtuskan seteah DO... pada sntaks
penguangan DO...
WHILE... d|aankan |ka konds yang dtuskan seteah
WHILE berna saah.
6. Aks yang dtuskan ddaam sntaks penguangan FOR
d|aankan |ka konds yang dtuskan ddaam argumen
FOR... berna benar.
7. Penguangan dengan sntaks WHILE dapat dubah
dengan sntaks
DO...WHILE.
8. Penguangan dengan sntaks DO... WHILE... dapat dubah
dengan sntaks
FOR.
9. Penguangan dengan sntaks FOR dapat dubah dengan
sntaks WHILE.
10. Struktur penguangan bersarang mensyaratkan bahwa
varabe pencacah dar seuruh penguangan sama.
(Untuk soa nomor 11 - 15) Perhatkan potongan agortma d
bawah n:
ALGORITMA
IS :
FS :
KAMUS DATA
a : nteger
na :
nteger
1 a 0
2 WHILE (a < 15)
3 Output (Na mahasswa ke-,a,adaah:)
4 Input (na)
5 IF ((na >= 0) AND (na <= 100))
6 a a + 1
7 ELSE
8 Output (Na harus antara 0-100)
9 ENDIF
10 ENDWHILE
11. Varabe a pada contoh d atas merupakan pencacah.
12. Penguangan d atas akan mengaam sebanyak 16 ka
teras.
13. |ka na yang dnputkan tdak berada daam
range 0-100, maka program akan dakhr.
14. Na pencacah akan bertambah 1 |ka na yang dnputkan
sudah berada
daam range 0-100.
15. Insasas varabe a membuat program tdak dapat
ber|aan dengan semestnya.
(Untuk soa nomor 6-10) Perhatkan potongan agortma berkut
n:
ALGORITMA
IS :
FS :
KAMUS DATA
a :
nteger b
: nteger
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 penguangan d atas tdak tepat karena tdak
mencantumkan |umah teras yang akan dakukan.
17. Iteras akan dakukan tepat ma ka.
18. Output dar agortma d atas adaah xoxox.
19. Struktur penguangan d atas menggunakan pencacah
mundur.
20. Pada agortma d atas, terdapat pembedaan aks
untuk na a berupa bangan gan| dan a berupa
bangan genap.
Pilihan
3anda
1. Perhatkan potongan agortma berkut n:
ALGORITMA
IS : FS :
KAMUS DATA
a : nteger
1 WHILE (a < 7)
2 Output (In contoh program)
3 a a + 1
4 ENDWHILE
|ka output yang dngnkan adaah menampkan In
contoh program sebanyak tu|uh ka, maka nsasas
yang tepat untuk penguangan d atas yatu . .
A. a
0
B. a 1
C. a >
0
D. a > 1
E. phan A,B,C,D saah
2. Apakah yang dmaksud dengan konds berhent
daam struktur penguangan?
A. Konds yang menyebabkan nsasas berhent
B. Konds yang menyebabkan teras berhent
C. Konds yang menyebabkan program berhent
D. Konds yang akan berhent saat teras berhent
E. Konds yang akan berhent saat program berhent
3. Perhatkan potongan agortma berkut n:
ALGORITMA
IS :
FS :
KAMUS DATA
e : nteger
huruf : character
1 e 1
2 DO
3 Input (huruf)
4 e e + 1
5 WHILE ((huruf != a) OR (e != 10))
Apakah yang dakukan oeh
agortma d atas?
A. Memnta nputan sebuah huruf
hngga 10 ka
B. Memnta nputan sebuah huruf hngga huruf yang
dnputkan a C. Memnta nputan sebuah huruf
hngga huruf yang dnputkan e D. Memnta nputan
sebuah huruf hngga huruf yang dnputkan a
atau teras sudah 10 ka
E. Memnta nputan sebuah huruf hngga huruf yang
dnputkan e
atau teras sudah 10 ka.
4. Pernyataan manakah yang saah tentang varabe
pencacah?
A. Varabe pencacah mengendakan |umah teras
daam struktur penguangan.
B. Na varabe pencacah terus berubah
setap ka teras.
C. Na varabe pencacah akan berhent
berubah d akhr penguangan.
D. Varabe pencacah dapat bertpe nteger
maupun char.
E. Na varabe pencacah tdak peru dnsasas
d awa teras.
5. Pada sebuah konser, panta memberkan bonus 1 tket
untuk setap pembean 3 tket. Harga 1 tket adaah Rp.
100.000,-. Panta membuat agortma untuk
menghtung harga yang harus dbayar setap orang
yang membe tket. Perhatkan potongan agortma
berkut n:
ALGORITMA
IS :
FS :
KAMUS DATA |mTket :
nteger |mBayar :
nteger harga : nteger
: nteger
1 Input (|mTket)
2 |mBayar 0
3 IF (|mTket < 1)
4 Output (|umah tket mnma 1)
5 ELSE
6 BEGIN
7 FOR ( 1; <= |mTket; ++)
8 IF (|mTket > 3)
9 BEGIN
10 |mTket |mTket - 3
11 |mBayar |mBayar + 3
12 END
13 ELSE
14 |mBayar |mBayar + |mTket
15 ENDIF
16 ENDFOR
17 harga |mBayar * 100000
18 Output (harga)
19 END
20 ENDIF
Pernyataan manakah yang benar tentang potongan
agortma d atas?
A. Agortma d atas tdak dapat menghtung harga
untuk 1 tket
B. Agortma d atas memberkan output saah |ka nput
|mTket > 3
C. Penguangan tdak pernah dakukan |ka nput
|mTket = 0
D. Penguangan tdak pernah dakukan |ka nput
|mTket > 3
E. Tdak ada masaah daam agortma d atas
6. Apakah output dar agortma nomor 5 |ka nput |mTket
= 10?
A. 600000 D. 120000
B. 800000 E. Agortma error
C. 100000
7. Varabe |mBayar pada agortma nomor 5
dgunakan untuk
menympan na . .
A. Harga 1 tket
B. Harga tota tket
C. |umah
penguangan
D. |umahtket yang
harus dbayar
E. |umah tket grats
8. Sntaks penguangan manakah yang meakukan
pengecekan konds d akhr penguangan?
A. DO.
WHILE.
B. WHILE. .
C. FOR.
D. IF. THEN. ELSE.
9. Tpe data apakah yang dapat dgunakan untuk varabe
pencacah?
A.
Integer
B. Text
C. Foat
D. Rea
E. Array
10. Perhatkan potongan agortma berkut n:
ALGORITMA
IS :
FS :
KAMUS DATA
: nteger
| : character
1 FOR ( 1 ; <= 2 ; ++)
2 IF ( mod 2 = 0 )
3 FOR (| 1 ; |<= 4 ; |++)
4 IF (| mod 2 = 1)
5 Output (x)
6 ELSE
7 Output (o)
8 ENDFOR
9 ELSE
10 Output ()
11 ENDIF
12 ENDFOR
Apakah output dar agortma d atas?
A. I
xoxo
B. xoxo
1
C. 1
Oxox
D.
oxox
1
E. 1
1
:atihan
1. Buatah program dengan struktur penguangan untuk
menampkan
tusan "Saya suka mata kuah n" sebanyak 5 ka!
2. Bandngkan tga sntaks penguangan: WHILE, DO.
WHILE, dan FOR
kemudan sebutkan kekurangan dan keebhan masng-
masng sntaks!
3. Buatah program penguangan untuk menghtung
|umah sederet bangan berurut yang dmua dar 1
hngga bangan nputan. Contoh: INPUT : 7
PROSES : 1+2+3+4+5+6+7
OUTPUT : 28
4. Buatah program penguangan bersarang dengan
sntaks FOR untuk menampkan output sebaga berkut:
*
**
***
****
5. Buatah program penguangan bersarang dengan
sntaks FOR untuk menampkan output sebaga berkut:
*****
****
***
**
*
6. Buatah program penguangan bersarang dengan
sntaks FOR untuk menampkan output sebaga berkut:
1
22
333
4444
55555
Dengan |umah bars sesua nputan. (Pada contoh d atas,
nput = 5)
7. Ubahah program nomor 7 dengan sntaks WHILE !
8. Ubahah program nomor 7 dengan sntaks DO.WHILE !
9. Apakah fungs nsasas daam sebuah struktur
penguangan?
10. Apakah fungs pencacah daam sebuah struktur
penguangan?
193 Arra! dan Tipe "ata
#entu$an
( Array dan !ipe Data
)entu*an
1verview
Daam duna nyata, struktur data yang dhadap sangat
beragam dan penggunaan varabe dengan tpe data dasar
memk keterbatasan pada banyaknya na yang dapat
dsmpan. Dengan menggunakan arra( dan tpe data
bentukan, dapat dakukan pemodean struktur data dengan
ebh bak bahkan untuk struktur data yang reatf kompeks.
!u2uan
1. Memaham tpe data arra( dan keuntungan yang
dapat dberkan
2. Memaham arra( yang memk dmens
ebh dar satu
Arra! dan Tipe "ata
#entu$an
194
3. Dapat meng-mpementaskan tpe data array
daam program
4. Memaham cara menentukan tpe data bentukan dan
menggunakannya daam program
6.1
Array
Tpe data arra( adaah tpe data terstruktur yang meru|uk
kepada sebuah atau sekumpuan eemen yang mempunya
tpe data yang sama meau ndeks. Arra( basanya dsebut
|uga sebaga tabel" ve*tor atau lari*.
Eemen dar arra( dapat dakses angsung 2i*a dan hanya
2i*a ndeks terdefns (teah dtentukan nanya sesua
dengan doman yang ddefnskan untuk ndeks tersebut).
Struktur data array dsmpan dengan urutan yang sesua
dengan defns ndeks secara *ontigu .berurutan0 dalam
memori komputer. Karena tu ndeks harusah merupakan
suatu tpe data yang memk keterurutan (ada suksesor dan
predesesor), msa tpe nteger dan karakter.
Dhat dar dmensnya, arra( dapat dbag men|ad Arra( Satu
Dmens, Arra(
Dua Dmens dan Arra( Mut-
Dmens
(.1.1 Array /atu
Dimensi
Representas arra( satu dmens
My_array
=
0 1 2 . . . 49 50
ndeks
Untuk mendekaraskan varabe dengan tpe data arra(
satu dmens pada notas agortma, dgunakan poa sebaga
berkut:
...
K&M'# (&T&
)ama*+aria,el : array -x!!./ of tipe*0ata
...
2 4 6 . . . 98 100
Ke t e r a n g an:
Na x merupakan na awa ndeks pada arra(, dan na y
merupakan na akhr pada ndeks arra(.
Contoh :
Agortma
...
Kamus data
arrHar : arra y |1..7| of strng
arr|mBuan : arra y |1..12| of
nteger arrFrekuens : arra y
*a..z+ of nteger
...
, e n ga *ses d a t a a rr a y
s a t u d im e nsi:
Arra( satu dmens dakses meau ndeksnya. Msa akan
dsapkan arra( satu dmens A bertpe nteger dengan 5
eemen yang dber nomor ndeks dar 0 sampa 4, yang
dapat dustraskan dengan gambar berkut:
0 1 2 3 4
A|0| A|1|
A|4|
Karena arra( tersebut mempunya nama yang sama, yatu A,
maka setap eemen dber sebutan nama yang berbeda
dengan memberkan nomor ndeks, sehngga masng-masng
men|ad: A|0|, A|1|, sampa dengan A|4|, yang dapat dbaca
dengan:
A dengan ndeks 0 atau A no
A dengan ndeks 1 atau A satu
dan seterusnya.
Untuk menympan na daam arra( satu dmens, dapat
dakukan dengan cara sebaga berkut:
A|0| 4 /*smpan na 4 daam arra( A pada
ndeks 0 */ A|1| 8 /*smpan na 8 daam arra(
A pada ndeks 1*/ A|2| 6 /*smpan na 6 daam
arra( A pada ndeks 2*/ A|3| A|0| +A|1|
/*tambahkan na daam arra( A ndeks 0
dengan na arra( A ndeks 1 dan
smpan
hasnya pada arra( A ndeks 3*/
A|4| A|2| /*skan arra( A ndeks 4 dengan na pada
arra( A
ndeks
2*/
Sehngga gambaran arra( A men|ad sepert berkut n:
0 1 2 3 4
4 8 6 12 6
A|0|
A|1| A|2|
A|3|
A|4|
Pseudocode engkapnya adaah sebaga berkut:
1.A:31#I!,A
2./* Menyapkan dan memasukkan na daam array satu
dmens
3. I.S : array daam keadaan kosong
4. F.S : menampkan na yang dsmpan daam array
dengan menggunakan struktur
5. penguangan */
6.KA,9/ DA!A
7. A : a rr a y |0..4| of n t e g er
8. : n t e g er
9.)G3I6
10. A|0| 4 7Dsimpan 6 dalam arra( A indeks ?D7
11. A|1| 8 7Dsimpan < dalam arra( A indeks /D7
12. A|2| 6
13. A|3| A|0| + A|1|
14. A|4| A|2|
15. 7Dmenampilkan kembali nilai dalam arra(D7
16. For (=0; <=4; ++)
17. output("A*",,"+ = " ,A*+)
18. GndFor
19.G6D.
Daam Bahasa C
1.7DMen(iapkan dan memasukkan nilai dalam arra( satu
dimensi
2. #0 5 arra( dalam keadaan kosong
3. F0 5 menampilkan nilai (ang disimpan dalam arra(
dengan menggunakan struktur
4. pengulangan */
5.
6.#ncude <stdo.h>
7.#ncude <cono.h>
8.
9.vod man()
10.{
11. nt A|5|; 7Ddeklarasi arra( A dengan 8 elemenD7
12. nt ;
13. A|0| = 4; 7Dsimpan 6 dalam arra( A indeks ?D7
14. A|1| = 8;
15. A|2| = 6;
16. A|3| = A|0| + A|1|;
17. A|4| = A|2|;
18. 7Dmenampilkan kembali nilai dalam arra(D7
19. for(=0;<=4;++)
20. {
21. prntf("A|%| = %\n",,A||);
22. }
23. prntf("Tekan Enter...");
24. getch(); /* menahan tampan pada ayar */
25.}
Output yang dhaskan:
(.1.2 Array Dua Dimensi
Arra( dua dmens merupakan arra( yang terdr dar m
buah bars (row) dan n buah koom (column). Bentuk arra(
semacam n menggunakan 2 (dua) buah keompok ndeks
yang masng-masng drepresentaskan sebaga ndeks bars
dan koom. |ka ngn memasukkan atau membaca sebuah
na pada matrks maka, harus dketahu terebh dahuu
ndeks bars dan koomnya.
Untuk mendekaraskan varabe dengan tpe data arra(
dua dmens pada notas agortma, dgunakan poa sebaga
berkut:
...
K&M'# (&T&
)ama*+aria,el : array -x!!.1t!!u/ of tipe*0ata
...
Ke t e r a n g a
n:
Na x merupakan na awa ndeks bars pada arra(, dan na
y merupakan na akhr ndeks bars arra(. Na t merupakan
na awa ndeks koom pada arra(, dan na u merupakan
na akhr ndeks koom arra(.
Representas arra( dua
dmens:
A|0,0| Ada 5 koom (0-4)
0 1 2 3 4
0
A 1
2
Ada 3 bars (0-2)
A|1,2|
A|2,4|
Gambar d atas merepresentaskan arra( yang terdr dar
3 bars dan 5 koom, dan |umah eemennya = 3 x 5 = 15
eemen. Karena terdr dar bars (row) dan koom (column),
maka arra( dua dmens serng |uga dsebut matri<.
, e n ga *ses d a t a a rr a y d u a
d im e nsi:
Sepert arra( satu dmens, arra( dua dmens |uga dakses
meau ndeksnya. Contoh: A|1,2|, menun|uk pada poss na
arra( pada bars 1, koom 2.
Untuk menympan na daam arra( dua dmens, dapat
dakukan dengan cara sebaga berkut:
A|0,0| 2 /*smpan 2 pada arra( A bars
0,koom 0*/ A|0,1| 4 /*smpan 3 pada
arra( A bars 0,koom 1*/ A|1,2| 8
/*smpan 5 pada arra( A bars 1,koom 2*/
A|2,2| A|0,0| + A|1,2| /*tambahkan na pada
arra( A bars
0,koom 0 dengan na pada
arra( A
bars 1,koom 2 dan smpan
hasnya
pada arra( A bars
2,koom 2 */ Sehngga gambaran array A men|ad sepert
berkut n:
A|0,0| Ada 5 koom (0-4)
0 1 2 3 4
0 2 4
A 1
8
2 10
Ada 3 bars (0-2)
A|1,2|
A|2,4|
Contoh pseudocode untuk menympan dan menampkan
na pada arra(
dua dmens.
1.A:31#I!,A
2.7D Men(iapkan dan memasukkan nilai dalam arra( dua
dimensi
3. #0 5 arra( dalam keadaan kosong
4. F0 5 menampilkan nilai (ang disimpan dalam arra(
dengan menggunakan struktur
5. pengulangan D7
6.KA,9/ DA!A
7. A : a rr a y |0..2,0..4| of n t e g er
8. ,|,k : n t e g er
9.)G3I6
10. k=0;
11. 7Dmemasukkan nilai dalam arra(D7
12. for(=0;<=3;++)
13. for(|=0;|<=4;|++)
14. A|,||=k+2;
15. k=k+2;
16. endfor
17. endfor
18. 7Dmenampilkan kembali nilai pada arra(D7
19. for(=0;<=3;++)
20. for(|=0;|<=4;|++)
21. output(A*,,|,+= ,A*,|+)
22. endfor
23. endfor
24.G6D.
Pseudocode d atas menggambarkan proses menympan
arra( dua dmens, dmana na yang dmasukkan merupakan
penambahan dengan 2.
Daam Bahasa C
1. /*Menyapkan dan memasukkan na daam array dua
dmens
2. I.S : array daam keadaan kosong
3. F.S : menampkan na yang dsmpan daam array
dengan menggunakan struktur
4. penguangan */
5. #ncude <stdo.h>
6. #ncude <cono.h>
7. vod man()
8. {
9. nt A|3||5|; /*dekaras array dua dmens*/
10. nt ,|,k;
11. k=0;
12. /*memasukkan data daam array dua dmens*/
13. for(=0;<=2;++)
14. { for(|=0;|<=4;|++)
15. { A||||| = k + 2;
16. k+=2; } /* endfor oop | */
17. } /* endfor oop */
18. /*menampkan kemba na array dua dmens*/
19. for(=0;<=2;++)
20. { for(|=0;|<=4;|++)
21. { prntf("A|%,%| = %\n",,|,A|||||);
22. } /*endfor oop |*/
23. } /*endfor oop */
24. prntf("tekan Enter...");
25. getch(); /* menahan tampan pada ayar*/
26. }
Output yang dhaskan:
(.1. Array ,ulti>Dimensi
Daam menggambarkan arra( mutdmens, hanya
terbatas hngga dmens ke-3, yakn dengan menggunakan
bangun ruang, namun daam kenyataannya, tpe data arra(
n dapat dbentuk men|ad ebh dar tga dmens atau
men|ad n-dmens.
Representas arra( 3 (tga) dmens
Y
1
2
3
4
4 X
3
5
1
2
1 2 3 4
Z
Penusan notas agortma untuk mendekaraskan tpe
data arra( mutdmens cukup dengan memodfkas dekaras
arra( satu dmens, yakn dengan menambahkan tanda
koma "," pada bagan defns banyaknya eemen arra(
dan menambahkan ukuran eemen yang dngnkan.
Untuk mendekaraskan varabe dengan tpe data
arra( n-dmens pada notas agortma, dgunakan poa
sebaga berkut:
...
K&M'# (&T&
)ama*+aria,el:array -a!!,1t!!u1x!!.1!!/ of tipe*0ata
...
(.2 !ipe Data )entu*an
Daam membuat program, kadangkaa akan dhadapkan
dengan struktur data yang tdak sederhana dan apaba hanya
dtangan dengan tpe data dasar sa|a, maka pembuat
program akan kesutan merumuskan kompossnya.
Sebaga contoh, program yang akan dbuat mebatkan
data tentang mahasswa, maka untuk varabe mahasswa
akan sut dtentukan tpe datanya karena pada mahasswa
terdapat beberapa eemen yatu, nama,
nomor nduk mahasswa, |ens keamn, aamat, dan eemen-
eemen yang annya.
Tantangan berkutnya adaah bagamana cara
menympan data-data mahasswa tersebut |ka |umah
mahasswa ebh dar satu? Tentunya ha n akan sangat sut
|ka harus dseesakan dengan tpe data dasar sa|a. Oeh
karena tu dperukan adanya suatu tpe data baru yang
dgunakan untuk menangan kasus d atas, yatu dengan
menggunakan tpe data bentukan.
Tpe data bentukan merupakan suatu tpe data yang
drancang/dbentuk (dan dber nama) dar beberapa eemen
bertpe tertentu yang sudah dkena. |ad d daam tpe data
bentukan akan terdapat eemen dengan tpe data dasar dan
dapat |uga terdapat tpe data bentukan an yang teah
ddefnskan sebeumnya.
Tu|uan dgunakannya tpe data bentukan adaah supaya
perancang program mendapatkan suatu tpe data dmana
seuruh komponennya secara keseuruhan memk makna
semantk dan d daamnya terdapat keterkatan antar
komponen. Pada data mahasswa teah d|abarkan beberapa
eemen yang ada maka, dengan menggunakan tpe data
bentukan n, perancang program dapat mendefnskannya ke
daam program.
Impementas tpe data bentukan daam bahasa
pemrograman sangat
bervaras tergantung dar struktur bahasa pemrograman tu
sendr. Daam notas agortmk, sebuah tpe bentukan (tpe
komposs) dapat dsusun sebaga berkut :
type nama_type < eemen1 :
type_data1, eemen2 :
type_data2,
...
>
Contoh pada data mahasswa dapat d|abarkan eemen-
eemennya sebaga berkut:
1. Nm bertpe ongnt
2. Nama bertpe strng
3. Umur bertpe word
|ka dtuskan daam notas agortmk maka,
akan men|ad:
type Mahasswa : <nm :
nteger, nama :
strng,
umur : nteger>
Operas daam menggunakan tpe data bentukan
memk peraku yang sama dengan operas pada tpe data
dasar, hanya perbedaannya adaah pada cara
mengaksesnya. Tpe data bentukan memk
beberapa
varabe/eemen yang berada d daamnya, oeh
karena tu cara
mengaksesnya menggunakan tanda dot/ttk .
Contoh:
|ka akan mendefnskan nama varabe Mhs dengan tpe
data Mahasswa maka pendekarasannya adaah:
Kamus data
Mhs : Mahasswa
|ka akan mengs eemen nm pada varabe
Mhs maka: Mhs.nm 30107001
Atau dengan perntah masukan sebaga berkut:
nput(Mhs.nm)
|ka akan menampkan s dar eemen nm pada varabe Mhs
maka:
output(Mhs.nm)
Berkut adaah contoh penggunaan tpe data bentukan secara
engkap:
1.A:31#I!,A
2. 7Dcontoh algoritma penggunaan tipe data bentukan
sederhanaD7
3.KA,9/ DA!A
4. type Mahasswa : <nm : nteger,
5. nama: strng,
6. umur: nteger>
7. 7DMenggunakan tipe data Mahasiswa pada .ariabel MhsD7
8. Mhs : Mahasswa
9. )egin
10. 7Dmengisi elemen-elemen dalam .ariabel MhsD7
11. nput(Mhs.nm)
12. nput(Mhs.nama)
13. nput(Mhs.umur)
14. 7Dmenampilkan isi elemen-elemen dalam MhsD7
15. output(Mhs.nm)
16. output(Mhs.nama)
17. output(Mhs.umur)
18.Gnd.
Daam bahasa C
1. #ncude <stdo.h>
2. #ncude <cono.h>
3. 7Ddeklarasi record mahasiswaD7
4. struct mahasswa { ong nm;
5. char nama|20|;
6. short umur; };
7. struct mahasswa Mhs;
8.
9. man()
10. {
11. prntf("Masukkan Data Mahasswa\n");
12. prntf("NIM = "); scanf("%",&Mhs.nm);
13. prntf("Nama = "); scanf("%s",&Mhs.nama);
14. prntf("Umur = "); scanf("%",&Mhs.umur);
15.
16. 7Dmenampilkan isi elemen-elemen dalam MhsD7
17. prntf("\n\nHas masukan Anda adaah: \n");
18. prntf("Nm Anda = %\n",Mhs.nm);
19. prntf("Nama Anda = %s\n",Mhs.nama);
20. prntf("Umur Anda = %\n",Mhs.umur);
21. prntf("tekan Enter...");
22. getche(); /*menahan tampan pada ayar*/
23. }
Output yang dhaskan:
(. Kombinasi !ipe )entu*an dan Array
(..1 !ipe Data )entu*an di dalam array
Permasaahan yang berkutnya adaah bagamana
caranya memasukkan data mahasswa dengan |umah yang
banyak? D sn dapat dgunakan arra( sebaga sarana untuk
menympan data mahasswa daam satu varabe.
Cara mendekaraskannya adaah sebaga berkut:
KAMUS DATA
t.pe Ma2asis3a : 4nim : integer1
nama : string1
umur : integer
5
M2s : arra. -0!!"6/ %f Ma2asis3a
|ka drepresentaskan daam bentuk gambar maka, akan
tampak sebaga berkut:
0107008
&ming3ati
19
Mhs = ...
0 1 2 ... 49
0107001
:una Ma.a
19
Untuk mengmpementaskan penggambaran data d
atas maka, cara pengsan arra( Mhs adaah sebaga
berkut:
...
Mhs|0|.nm 30107001
Mhs|0|.nama "Luna Maya"
Mhs|0|.umur 18
Mhs|1|.nm 30107002
Mhs|1|.nama "Amngwat"
Mhs|1|.umur 18
...
Atau dengan perntah masukan
sebaga berkut
nput(Mhs|0|.nm)
nput(Mhs|0|.nama)
nput(Mhs|0|.umur)
nput(Mhs|1|.n
m)
nput(Mhs|1|.na
ma)
nput(Mhs|1|.um
ur)
.....
Dengan demkan data mahasswa dapat dsmpan daam
satu buah varabe bertpe arra( dengan tpe Mahasswa.
Contoh pseudocode engkapnya
1.A:31#I!,A
2. 7Dcontoh algoritma penggunaan tipe data bentukan dalam
arra(D7
3.KA,9/ DA!A
4. Type Mahasswa : <nm : nteger,
5. nama : strng,
6. umur : nteger >
7. 7DMenggunakan tipe data Mahasiswa pada .ariabel MhsD7
8. Mhs : array |0..2| Mahasswa
9. : nteger
10.)egin
11. 7Dmengisi elemen-elemen dalam .ariabel MhsD7
12. for(=0;<=2;++)
13. output("Nm = "); nput(Mhs*+.nm)
14. output("Nama = "); nput(Mhs*+.nama)
15. output("Umur = "); nput(Mhs*+.umur)
16. EndFor
17. 7Dmenampilkan isi elemen-elemen dalam MhsD7
18. for(=0;<=2;++)
19. output(Mhs||.nm)
20. output(Mhs||.nama)
21. output(Mhs||.umur)
22. EndFor
23.Gnd.
Daam bahasa C
1./*contoh program penggunaan tpe data bentukan daam
array*/
2.#ncude <stdo.h>
3.#ncude <cono.h>
4.7Ddeklarasi record mahasiswaD7
5.struct mahasswa { ong nm;
6. char nama|20|;
7. short umur; };
8.struct mahasswa mhs|3|;
9. 7D main program D7
10.man()
11.{
12. nt ;
13. nt a;
14. prntf("Input Data Mahasswa\n");
15. a=1;
16. for(=0;<=2;++)
17. {
18. prntf("Data ke-%d\n",a);
19. prntf("NIM = "); scanf("%",&mhs||.nm);
20. prntf("Nama = "); scanf("%s",&mhs||.nama);
21. prntf("Umur = "); scanf("%",&mhs||.umur);
22. prntf("\n");
23. a++;
24. } //endfor
25. 7Dmenampilkan data mahasiswaD7
26. prntf("\nData Yang Teah D nputkan\n");
27. for(=0;<=2;++)
28. {
29. prntf("%%10s%3\n",mhs||.nm,mhs||.nama,
30. mhs||.umur);
31. } //endfor
32. getche(); /*menahan tampan pada ayar*/
33.}
Output yang
dhaskan:
(..2 Array di dalam !ipe Data )entu*an
Pada contoh sebeumnya teah dtun|ukkan bahwa d
daam sebuah eemen arra( dapat ds dengan suatu
na yang memk tpe data bentukan. |ka konds yang
dhadap oeh perancang program adaah konds yang
sebaknya, yatu memasukkan varabe bertpe arra( men|ad
saah satu atau beberapa eemen d daam varabe yang
memk tpe data bentukan, bagamanakah cara
mendefnskan dan mengoperaskan varabe tersebut?
D daam tpe data bentukan, satu atau beberapa
eemennya dperboehkan untuk menggunakan tpe data
arra(. Saah satu contoh kasusnya adaah bagamana
mendefnskan data mahasswa yang mempunya beberapa
na. |ka dgambarkan akan tampak sebaga berkut:
Mahassw
a
100
;)in0.a<
)ilai = 100 96 99
0 1 8
Dar gambar d atas dapat dhat bahwa seorang
mahasswa memk beberapa na, maka cara
mendekaraskan tpe datanya adaah:
type Mahasswa : <nm :
nteger, nama
: strng,
na: array |0..2| of nteger
>
Kamus
data
Mhs : Mahasswa
Daam ha n yang memk tpe data arra( adaah eemen d
daam tpe data bentukan, oeh karena tu cara mengakses
eemen arra( yang terdapat d daam tpe Mahasswa adaah
sebaga berkut:
Mhs.na|0|
100
Mhs.na|1|
89
Mhs.na|2|
88
Atau dengan perntah masukan
sebaga berkut:
nput(Mhs.na|
0|)
nput(Mhs.na|
1|)
nput(Mhs.na|
2|)
Contoh pseudocode
engkapnya
1.A:31#I!,A
2. 7Dcontoh algoritma penggunaan arra( dalam tipe data
bentukanD7
3.KA,9/ DA!A
4. type Mahasswa: <nm : nteger,
5. nama : strng,
6. na: array|0..2| of nteger>
7.7DMenggunakan tipe data Mahasiswa pada .ariabel MhsD7
8. Mhs : Mahasswa
9. ,a : nteger
10.)egin
11.7Dmengisi elemen-elemen dalam .ariabel MhsD7
12. output("Memasukkan na daam array")
13. output("Nm = "); nput(Mhs.nm)
14. output("Nama= "); nput(Mhs.nama)
15. a=1;
16. for(=0;<=2;++)
17. output("Na ke ",a," = ")
18. nput(Mhs.na||)
19. a=a+1
20. endfor
21.7Dmenampilkan isi elemen-elemen dalam MhsD7
22. output("Nm Anda : ",Mhs.nm," dan Nama
23. Anda: ",Mhs.nama)
24. output("Na Anda adaah:")
25. for(=0;<=2;++)
26. output(Mhs.na||)
27. endFor
28.Gnd.
Daam bahasa C
1./*contoh program array daam tpe data bentukan*/
2.#ncude <stdo.h>
3.#ncude <cono.h>
4. /*dekaras record dan varabe*/
5.struct mahasswa {ong nm;
6. char nama|20|;
7. nt na|3|;};
8.struct mahasswa mhs;
9.nt ,a;
10.
11.man()
12.{
13. prntf("Memasukkan na daam array\n");
14. prntf("NIM = "); scanf("%",&mhs.nm);
15. prntf("Nama = "); scanf("%s",&mhs.nama);
16. a=1;
17. for(=0;<=2;++)
18. {
19. prntf("Na ke-% = ",a);
20. scanf("%",&mhs.na||);
21. a++;
22. }
23. /*menampkan kemba data daam array */
24. prntf("\nNIM Anda : % dan Nama Anda :
25. %s\n",mhs.nm,mhs.nama);
26. prntf("\nNa Anda adaah:\n");
27. a=1;
28. for(=0;<=2;++)
29. {
30. prntf("Na ke-% : %\n",a,mhs.na||);
31. a++;
32. }
33. prntf("\nTekan Enter........");
34. getche();
35.}
Output yang dhaskan:
(.. Array dari !ipe )entu*an yang ,engandung Array
Pada kasus n tu|uannya adaah mendefnskan tpe
data untuk menympan data dengan tpe data bentukan
dan d daam tpe data bentukan tersebut terdapat eemen
dengan tpe arra(.
Pada contoh kasus d sub bab 6.3.2 dtun|ukkan
seorang mahasswa
memk na ebh dar satu. Pertanyaan berkutnya adaah
bagamana |ka |umah mahasswanya ebh dar satu?
Caranya adaah dengan membuat varabe bertpe arra(
dmana arra(
tersebut memk tpe data bentukan yang d daamnya
terdapat arra(. type Mahasswa : <nm : nteger,
nama : strng,
na: array |0..2| of nteger>
Kamus
data
Mhs : array |0..49| of Mahasswa
Dapat dhat bahwa daam tpe data Mahasswa terdapat
eemen na yang memk tpe arra(, kemudan pada
bagan kamus data ddefnskan bahwa varabe Mhs
merupakan tpe arra( dengan tpe data Mahasswa.
|ka dgambarkan akan tampak sebaga berkut:
Mhs = ...
0 1 2 ... 49
100
;)in0.a<
Na = 100 89 88
0 1 2
Cara untuk mengs satu eemen Na daam varabe Mhs
adaah sebaga
berkut:
...
Mhs|0|.Na|0| 100
Mhs|0|.Na|1| 89
Mhs|0|.Na|2| 88
...
Demkan pua untuk mengakses suatu na pada eemen
Na d varabe
Mhs adaah:
...
{Menampkan s eemen na ke-0}
output(Mhs|0|.Na|0|)
...
Contoh pseudocode engkapnya
1. A:31#I!,A
2. 7Dcontoh algoritma penggunaan arra( dari tipe data
bentukan (ang mengandung
3. arra(D7
4. KA,9/ DA!A
5. type Mahasswa : <nm : nteger,
6. nama : strng,
7. na: array|0..2| of nteger>
8. 7DMenggunakan tipe data Mahasiswa pada .ariabel arra(
MhsD7
9. Mhs : array of |0..3| of Mahasswa
10. ,a,|,b : nteger
11.)egin
12. 7Dmengisi elemen-elemen dalam .ariabel arra( MhsD7
13. output("Memasukkan na daam array")
14. a=1
15. for(=0;<=3;++)
16. output("Data mahasswa ke-",a)
17. output("Nm = "); nput(Mhs*+.nm)
18. output("Nama= "); nput(Mhs*+.nama)
19. b=1
20 for(|=0;|<=2;|++)
21. output("Na ke ",b," = ")
22. nput(Mhs||.na|||)
23. b=b+1
24. endfor /*akhr oop |*/
25. a=a+1
26. endfor /*akhr oop */
27. 7Dmenampilkan isi elemen-elemen dalam MhsD7
28. for(=0;<=3;++)
29. output(Mhs||.nm, Mhs||.nama)
30. for(|=0;|<=2;|++)
31. output(Mhs||.na|||)
32. endfor
33. endFor
34.Gnd.
Daam bahasa C
1. 7Dcontoh algoritma penggunaan arra( dari tipe data
bentukan (ang mengandung
2. arra(D7
3. #ncude <stdo.h>
4. #ncude <cono.h>
5. /*dekaras record dan varabe*/
6. struct mahasswa {ong nm;
7. char nama|20|;
8. nt na|3|;};
9. struct mahasswa mhs|4|;
10.nt ,|,a,b;
11. /*man program*/
12.man()
13.{
14. prntf("Memasukkan data pada Array");
15. a=1;
16. for(=0;<=3;++)
17. {
18. prntf("\nData ke-%\n",a);
19. prntf("NIM = "); scanf("%", &mhs||.nm);
20. prntf("Nama = "); scanf("%s", &mhs||.nama);
21. b=1;
22. for(|=0;|<=2;|++)
23. {
24. prntf("Na ke-% = ",b);
25. scanf("%",&mhs||.na|||);
26. b++;
27. } //end oop |
28. a++;
29. } // end oop
30. /*proses menampkan kemba data pada array*/
31. prntf("\nData Mahasswa\n");
32. for(=0;<=3;++)
33. {
34. prntf("% %-10s",mhs||.nm,mhs||.nama);
35. for(|=0;|<=2;|++)
36. {
37. prntf("% ",mhs||.na|||);
38. } //end oop |
39. prntf("\n");
40. } //end oop
41. prntf("\nTEKAN ENTER.....");
42. getche();
43.}
Output yang dhaskan:
#ang*uman
1. Tpe data arra( dgunakan untuk
menampung/menympan banyak na pada satu varabe.
2. Setap eemen pada tpe data arra( dtanda dengan ndeks.
3. Indeks penanda eemen pada arra( menggunakan
tpe data yang memk keterurutan.
4. Tpe data arra( memk dmens mnma satu hngga n-
dmens.
5. Pada tpe data arra( satu dmens memk satu ndeks,
kemudan pada arra( dua dmens memk dua ndeks,
demkan seterusnya dmana |umah ndeks mengkut
banyaknya dmens arra( yang dbentuk.
6. Tpe data bentukan adaah tpe data yang
drancang/dbentuk (dan dber nama) dar beberapa
eemen bertpe tertentu.
7. Tpe data bentukan dapat dsmpan daam varabe bertpe
arra(.
8. Eemen daam tpe data bentukan dapat menggunakan
varabe bertpe
arra(.
9. Tpe data bentukan yang d daamnya terdapat eemen
bertpe arra(, dapat dsmpan daam varabe bertpe
arra(.
Petunjuk4
Pilihlah
jawa-an
yang paling
tepat5
Pilihan
3anda
1. Manakah dekaras array yang benar berkut n daam
bahasa C:
A. #ncude <stdo.h>
vod man()
{ A|7| nteger; }
B. #ncude <stdo.h>
vod man()
{nteger A|7|; }
C. #ncude <stdo.h>
vod man()
{nt A|7|; }
D. Bukan saah satu d atas
2. Kumpuan eemen-eemen yang terurut dan memk
tpe data yang sama dsebut:
A. Rekursf C. Array
B. Record D. Fe
3. struct sswa mahasswa|500|. Dar array n yang
merupakan NAMA dar suatu ARRAY adaah:
A. struct C. mahasswa
B. sswa D. bukan saah satu d atas
4. D bawah n merupakan ha-ha yang harus
dkemukakan daam mendekaraskan suatu bentuk
Array, keuali:
A. nama array C. record
B. banyak eemen array D. tpe data
5.
Pada array 2 dmens dengan ordo 4x4, dengan konds
A|,|| = 1, |ka <=|, dan A|,||=|, |ka >|. Dar pernyataan
d atas na dar A|3,2| adaah: A. 1 C. 3
B. 2 D. 4
:atihan
1. K A, 9 /
na : array|0..9| of
nteger p : nteger
A : 3 1 # I! , A
for(p=0;p<10;
p++)
na|p| p +
2 endfor
for(p=0;p<10;
p++)
f (p mod 4) = 0 THEN
Output("
")
ese
Output(na|
p|)
end
f endfor
Tentukan output yang dhaskan agortma d atas !!!
2. K A, 9 / R
X, Y : array |0..2,0..2|of nteger
,| : nteger
A : 3 1 # I !, A
R
for(=0;<2;
++)
for(|=2;|>=0;|--)
X|,|| + |
Y|,|| x|,||
endfor
endfor
Tentukan berapa harga matrks Y?
3. Buat agortma untuk menghtung na tota dan na
rata-rata dar se|umah na yang dnputkan daam arra(.
(Asumskan arra( memk 5 eemen)
4. Buat agortma untuk menympan matrks segtga
bawah berkut ! (Gunakan skema OPI:G)
1 0 0 0
1 2 0 0
1 2 3 0
1 2 3 4
5. Buat agortma untuk memasukkan se|umah na daam
suatu arra(, kemudan tampkan na terbesar dar na-
na yang dnputkan daam arra( tersebut. (Asumskan
arra( memk 10 eemen data)
Pemrograman
%odular
23&
+ Pemrograman
,odular
1verview Pemrograman moduar memungknkan
perancang program menyederhanakan persoaan ddaam
program dengan memecah atau membag persoaan tersebut
men|ad sub-sub persoaan yang ebh kec agar mudah
dseesakan. Secara umum dkena dua cara yang dapat
dgunakan untuk memecah persoaan daam modu-modu,
yatu dengan menggunakan struktur fungs dan prosedur.
Pemahaman tentang perbedaan dan karakterstk masng-
masng struktur tersebut peru dmbang pua dengan
kemampuan mengmpementaskannya daam program.
Tu|uan
1. Memaham konsep pemrograman
moduar
2. Mengetahu dua cara pemrograman moduar: fungs
Pemrograman
%odular
236
dan prosedur
3. Mengetahu cara mengmpementaskan fungs dan
prosedur daam program
4. Mengetahu dan dapat menerapkan pemanggan
subprogram dar
program utama.
+.1 De(inisi
Pemrograman 6odular
Daam sebuah program, serngka pemrogram peru
memecah persoaan yang kompeks men|ad beberapa bagan
yang ebh mudah dseesakan. Ide nah yang mencetuskan
struktur pemrograman moduar, yatu memecah persoaan
men|ad sub-sub persoaan yang basa dsebut subprogram.
Bayangkan sebuah program yang dbuat untuk
menghtung na rata- rata dar sekumpuan na nteger.
Daam prosesnya, program meakukan perhtungan tersebut
daam dua angkah, yatu men|umahkan seuruh na,
kemudan membagnya dengan banyaknya na yang
terseda. Dengan demkan program tersebut dapat dpecah
men|ad dua subprogram, yatu subprogram pen|umahan dan
subprogram pembagan.
Sean tu, pemrograman moduar memungknkan
pemrogram
memangg kemba subprogram yang teah ddefnskannya
setap ka dperukan daam program tersebut. Pemrogram
tdak peru beruang ka mendefnskan sekumpuan nstruks
yang dperukan beberapa ka daam sebuah program
maupun daam program annya. Dengan pemrograman
moduar, sebuah subprogram dapat danggap sebaga
program kec dengan sebuah tu|uan spesfk yang umumnya
bers operas sederhana dan apaba terdapat kesaahan
dapat dokasr pada subprogram tu sendr. Sub-sub
program tersebut kemudan dsatukan oeh bagan
program utama yang dapat memangg subprogram tersebut
sesua kebutuhan daam program.
Program
Utama
Subprogram 1 Subprogram 2 Subprogram 3
Gambar 7.1 Iustras pemrograman moduar
Daam pemrograman, dkena dua tpe subprogram yang
basa dgunakan untuk memecah persoaan kompeks men|ad
ebh sederhana, yatu fungs (*unction) dan prosedur
(procedure). Kedua tpe subprogram n
dapat dgunakan bersamaan maupun saah satunya sa|a
daam sebuah program. Masng-masng tpe subprogram
memk karakterstk dan peraku yang berbeda sehngga
penggunaannya daam program |uga berbeda-beda.
Subprogram sebaga bagan dar program utama wa|b
mendefnskan konds awa (initial state7#00) sebeum proses
daam subprogram deksekus dan |uga mendefnskan
konds akhr (*inal state7F00) yang berupa has proses
(output) atau perubahan na daam varabe tertentu (khusus
untuk fungs sa|a).
Beberapa fungs dan prosedur teah terdefns dan dapat
angsung dgunakan oeh pemrogram daam sebuah program
dengan mendefnskan varabe-varabe yang dperukan.
Sean fungs dan prosedur yang teah terdefns tersebut,
pemrogram |uga dapat membuat sendr fungs dan prosedur
yang dperukannya daam sebuah program.
Daam membuat sebuah subprogram, pemrogram dapat
menympannya daam saah satu dar dua okas berkut n:
daam fe yang sama dengan program utama: dapat
dakukan |ka subprogram sedkt dan berukuran
kec sehngga reatf mudah
dkeoa daam sebuah fe
daam fe yang terpsah: basanya dakukan |ka
subprogram sudah terau banyak sehngga sut
dkeoa, atau |ka pemrogram
mengngnkan supaya subprogram dapat dgunakan
d beberapa program utama sekagus
+.2 ,aria-el 2okal dan
,aria-el 7lo-al
+.2.1
Iariabel :o*al
Daam mendekaraskan sebuah fungs/ prosedur,
dapat ddekaraskan pua varabe-varabe yang akan
dgunakan daam fungs/ prosedur tersebut. Varabe
semacam n dsebut variabel lo*al atau variabel internal,
artnya varabe n hanya dkena secara oka daam sebuah
subprogram (fungs atau prosedur). Varabe oka tdak dapat
dpangg, dakses dan dubah oeh prosedur atau fungs yang
an, bahkan oeh program utama sekapun karena hanya
dapat dkena oeh prosedur atau fungs dmana varabe n
ddefnskan.
+.2.2 Iariabel 3lobal
Sedangkan varabe yang ddefnskan daam program
utama dan dapat dgunakan d program utama maupun
sub-sub program annya dsebut dengan variabel global.
Na dar varabe n dapat dpangg, dakses dan dubah oeh
prosedur atau fungs apapun yang terdapat daam program
tersebut.
+. Fungsi
Fungs adaah subprogram yang menerma data
masukan, meakukan beberapa perhtungan dar data
tersebut, kemudan mengembakan output berupa sebuah
data baru. Dengan kata an, sebuah fungs memetakan
sebuah na (daam domain) men|ad na an (daam range)
dengan operas/ proses tertentu. Pendekarasan fungs
merupakan saah satu cara memecah persoaan ke daam
beberapa sub persoaan yang ebh mudah dseesakan.
Daam pembuatan sebuah fungs, pemrogram harus
mendefnskan:
nama fungs
Tpe data yang dbuat/ dhaskan oeh fungs
Daftar parameter yang menyatakan data yang dperukan
oeh fungs
Satu atau ebh nstruks yang meakukan perhtungan
Sean|utnya, fungs yang sudah ddefnskan dapat
dgunakan daam program utama maupun daam fungs
annya dengan cara memangg nama fungs dan
memberkan parameter yang dperukan oeh fungs tersebut.
Fungs beker|a menurut mekansme pemanggan-
pengembaan (call- return mechanism2. Tahapan daam
mekansme tersebut adaah:
1. Fungs dpangg dar program utama maupun fungs
annya
2. Sekumpuan operas daam fungs deksekus
3. Has eksekus dkembakan ke program utama atau
fungs an yang memanggnya.
Struktur umum sebuah fungs:
FUNCTION nama_fungs (daftar_parameter)tpe_data
BEGIN
{nstruks daam fungs}
return
ENDFUNCTION
Sedangkan penusan daam bahasa
pemprograman C++ adaah sebaga berkut :
Tpe_data_kemba nama_fungs(daftar_parameter)
{
/* nstruks daam fungs */
return vaue;
}
Dengan catatan bahwa daftar parameter boeh kosong
(tdak ada parameter yang peru dnputkan pada saat
pemanggan fungs). |ka daftar parameter (dsebut |uga
parameter forma) tdak kosong maka parameter tersebut
harus berupa nama parameter dan tpe datanya. Daam
sebuah fungs, nstruks terakhr harus merupakan perntah
untuk mengrmkan na/ data keuaran dar fungs ke program
utama (bagan program yang memanggnya). Na yang
dkembakan oeh sebuah fungs dapat bertpe skaar, record,
array, maupun set.
|ka kta mehat struktur penusan fungs, struktunya
hampr atau bahkan sama dengan program utama. Pada
dasarnya, pemprograman dengan menggunakan C++ adaah
pemprograman dengan struktur fungs, dmana setap kode
yang dtuskan harus daam bentuk fungs, tak terkecua
program utama. Program utama merupakan suatu fungs
dengan nama man() yang tdak memk na kemba atau
na kembanya adaah kosong atau 0. Oeh karenanya, kta
|uga dapat menuskan program utama dengan vod man()
atau dengan nt man(), dengan return .alue-nya 0.
Saat program pertama d|aankan, kode yang
pertama deksekus
adaah fungs man(). Oeh karenanya, setap program
mnma harus memk satu fungs yatu man(), dmana s
dar fungs n adaah nt dar program.
Parameter daam sebuah fungs merupakan antarmuka
(penghubung) antara fungs dengan kode pemanggnya.
Fungs menerma satu atau beberapa na meau parameter-
parameter yang teah ddefnskan. Setap ka fungs
dpangg, kode pemangg harus menyedakan parameter
yang dbutuhkan oeh fungs. Beberapa karakterstk
parameter daam fungs:
Parameter hanya muncu d daam fungs yang
mendefnskannya dan tdak dapat dakses d uar fungs
tersebut.
Parameter menympan na hngga fungs deksekus.
Parameter dnsasas setap ka fungs dpangg
oeh program utama maupun fungs annya.
Seteah ddefnskan, fungs dapat dpangg dar
program utama
maupuan dar fungs annya dengan
perntah:
<nama_varabe> <nama_fungs>(<daftar_parameter>)
Contoh fungs:
1. FUNCTION uas_segempat (P:nteger, L:nteger) nteger
2. { IS : Dua buah bangan Buat
3. FS : Has Ka dua bangan }
4. KAMUS DATA
5. has : nteger
6. P,L : nteger;
7. BEGIN
8. has P * L
9. return (has)
10. ENDFUNCTION
Pada contoh d atas, fungs uas_segempat memerukan
dua parameter nputan, yatu P dan L yang keduanya bertpe
nteger. Kemudan, fungs n akan menghtung has dengan
perkaan na P dan L. Fungs akan mengembakan na
varabe has ke kode pemangg.
Berkut n adaah contoh agortma program utama/
fungs an (sean|utnya dsebut kode pemangg) yang
memangg fungs uas_segempat:
1. Kamus data
2. pan|ang, ebar, uas: nteger
3. BEGIN
4. { memnta nputan 2 na}
5. Input (pan|ang, ebar)
6. {pemanggan fungs uas_segempat}
7. uas uas_segempat(pan|ang, ebar)
8. Output (uas) {menampkan uas}
9. END
Pada potongan program d atas ddefnskan tga
varabe, yatu pan|ang, ebar, dan uas. Pemanggan fungs
uas_segempat dakukan daam tga tahap sesua mekansme
ca-return, yatu:
1. Kode pemangg memberkan (passing) dua
parameter yang sudah ddefnskan sebaga varabe
daam program tersebut, yatu pan|ang dan ebar.
2. Fungs uas_segempat d|aankan dengan menerma dua
parameter dar kode pemangg. Secara berurutan,
varabe pan|ang dkena sebaga parameter P dan
varabe ebar dkena sebaga parameter L. Fungs
meakukan perkaan dan menympan hasnya daam
varabe has yang merupakan parameter output dar
fungs.
3. Fungs uas_segempat mengembakan na daam
varabe has ke kode pemangg. Kode pemangg akan
menympannya ke daam varabe uas yang teah
ddefnskan, kemudan menampkannya ke pemaka.
Perhatkan pua bahwa varabe P, L dan has hanya
ddefnskan dan dgunakan d fungs uas_segempat dan
tdak dapat dgunakan daam program utama maupun fungs
annya (varabe oka).
Berkut n adaah contoh an dar defns fungs dan
pemanggannya:
1. {===Program Utama===}
2. Kamus data {dekaras varabe goba}
3. na1, na2 : nteger
4. rataan : rea
5. BEGIN
6. nput (na1, na2) {nput 2 bangan}
7. {pemanggan fungs1}
8. rataanhtung_rataan(na1,na2)
9. output (rataan) {menampkan na rata-rata}
10. END
11. {===Fungs 1===}
12. FUNCTION htung_rataan(var1: rea,var2: rea)rea
13. {I.S.: var1 dan var2 bers bangan
14. F.S.: mengembakan na rataan bertpe rea}
15. Kamus data {dekaras varabe oka}
16. |umah : nteger
17. rata : rea
18. BEGIN
19. {pemanggan fungs2}
20. |umah htung_|umah(var1,var2)
21. rata |umah/2
22. return (rata) {kemba ke program utama}
23. ENDFUNCTION
24. {===Fungs 2===}
25. FUNCTION htung_|umah(pertama,kedua : nteger)nteger
26. {I.S.: pertama dan kedua bers bangan
27. F.S.: mengembakan has pen|umahan}
28. Kamus data {dekaras varabe oka}
29. has : nteger
30. BEGIN
31. has pertama + kedua
32. return (has) {kemba ke fungs1}
33. ENDFUNCTION
Pada contoh d atas, program beker|a sebaga berkut:
1. Program utama menerma nputan dua bangan nteger
2. Program memangg fungs htung_rataan dengan
memberkan dua bangan nputan sebaga parameter
3. Fungs htung_rataan menghtung varabe |umah
dengan memangg fungs htung_|umah dan memberkan
parameter var1 dan var2
4. Fungs htung_|umah deksekus dengan men|umahkan
2 parameter nput yang dberkan dan mengembakan
has ke htung_rataan
5. Fungs htung_rataan menympan na has, menghtung
rata dengan
(|umah/2), au mengembakan rata ke program utama
6. Program utama menympannya daam varabe
rataan, kemudan menampkannya kepada pemaka.
Sebaga ustras agortma d atas, program utama
dmsakan sebaga bok A, fungs 1 sebaga bok B dan fungs
2 sebaga bok C. |ka bok-bok tersebut dsusun sesua
dengan penusannya, maka akan tampak sebaga berkut:
Bok
A
1
Bok
B
2
Bok
C
Arah panah menggambarkan aur pemanggan fungs,
urutan pemanggan dtanda dengan menggunakan angka.
Panah dengan angka 1 menggambarkan bok A (program
utama) memangg Bok B (fungs 1), kemudan panah dengan
angka 2 menggambarkan Bok B memangg Bok C (fungs 2).
Pada saat mpementas menggunakan bahasa Pasca,
penusan dekaras functon harus detakkan s e b e u m bok
pemanggnya, dengan kata an bok yang akan dpangg
harus detakkan d atas bok yang akan memangg.
Iustrasnya adaah sebaga berkut:
Bok
C
2
Bok
B
1
Bok
A
Dar ustras tersebut, maka penerapan (mpementas)
agortma d atas, |ka dtus daam bahasa C++ akan men|ad
sebaga berkut :
1. #ncude <stdo.h>
2.
3. //dekaras varabe goba
4. nt na1, na2;
5. foat rataan;
6.
7. {===Program Utama===}
8. vod man () { // program Utama
9. prntf("Masukan Na pertama : ");
10. scanf("%",&na1);
11. prntf("Masukan Na kedua : ");
12. scanf("%",&na2);
13.
14. {pemangg fungs 1}
15. rataan = htung_rataan(na1,na2);
16. //menampkan na rata-rata
17. prntf("Rata-rata dar % dan % adaah
%f",na1,na2,rataan);
18. }
19.
20. {===Fungs 1===}
21. foat htung_rataan(nt var1,nt var2) {
22. // dekaras varabe oka
23. nt |umah;
24. foat rata;
25.
26. // pangg fungs 2
27. |umah = htung_|umah(var1,var2);
28. rata = |umah / 2;
29. return rata; // na Kemba Fungs 1
30. }
31.
32. {===Fungs 2===}
33. nt htung_|umah(nt pertama,nt kedua){
34. // dekaras varabe oka
35. nt has;
36.
37. has = pertama + kedua;
38. return has; // na kemba Fungs 2
39. }
|ka program tersebut d|aankan dan user mengnputkan
na 12 dan
18, maka akan mengeuarkan has :
Masukan Na pertama : 12
Masukan Na kedua : 18
Rata-rata dar 12 dan 18 adaah 15
+.$ Prosedur
Cara an memecah persoaan pemrograman ke daam
sub-sub persoaan pemrograman adaah dengan
mendekaraskan prosedur. Prosedur adaah sederetan
nstruks yang dber nama, dan meakukan tu|uan tertentu.
Sepert hanya pada fungs, prosedur beker|a dengan
mekansme pemanggan-pengembaan (call-return
mechanism), yatu dengan urutan angkah:
1. Prosedur dpangg oeh kode pemangg (program
utama maupun prosedur annya)
2. Sekumpuan operas yang dsmpan daam prosedur
deksekus
3. Kontro dkembakan ke kode pemangg
Struktur umum dekaras prosedur adaah
sebaga berkut:
PROCEDURE <nama_prosedur> (nput <daftar parameter
nput>, output <daftar parameter output>)
{I.S.: |konds awa|
F.S.: |konds akhr/has yang
dharapkan|} BEGIN
{sekumpuan nstruks daam
prosedur} ENDPROCEDURE
Sedangkan daam pemprograman bahasa C++,
penusan prosedure sepert berkut :
1. vod nama_procedure (<daftar_parameter_n
put> <,daftar_parameter_output>)
2. {
3. /* nstruks */
4. }
Dengan catatan bahwa nama prosedur dan nama
parameternya harus
dsebutkan daam bok kode pemangg. Berbeda dengan
fungs, daftar parameter pada procedure terbag men|ad dua
yatu parameter nput dan parameter output. Daftar
parameter boeh kosong (tdak ada parameter nput
maupun output). |ka parameter tdak kosong (mnma ada
satu parameter) maka harus dtuskan nama parameter
beserta tpe datanya.
Prosedur tanpa parameter memanfaatkan na dar
varabe yang terdefns daam kode program utama/prosedur
an yang memanggnya. Prosedur tanpa parameter n hanya
dapat deksekus |ka na dar varabe yang dperukan daam
prosedur sudah ddefnskan daam kode program utama/
prosedur an yang memanggnya.
Prosedur dengan parameter dbuat untuk mengeksekus
sekumpuan nstruks dengan parameter yang berbeda-beda.
Nama parameter yang dtuskan pada defns / spesfkas
prosedur dsebut dengan parameter formal. Sedangkan
parameter yang dtuskan pada pemanggan prosedur
dsebut parameter a*tual.
Parameter forma adaah nama-nama varabe yang
dpaka daam mendefnskan prosedur, dan membuat
prosedur tersebut dapat deksekus dengan varabe yang
berbeda saat pemanggan. Terdapat tga tpe
parameter forma:
parameter nput, yatu parameter yang dperukan
prosedur sebaga masukan untuk meakukan aks yang
efektf
parameter output, yatu parameter yang akan
menympan na yang dhaskan oeh prosedur
parameter nput/output, yatu parameter yang
dperukan prosedur
sebaga masukan untuk meakukan aks tertentu,
yang pada akhr prosedur akan ds dengan na baru
sebaga has eksekus prosedur Parameter aktua
adaah varabe / konstanta yang dpaka ketka
prosedur dpangg oeh program utama / prosedur an.
Parameter aktua dapat berupa varabe / konstanta, tap
parameter output harus berupa varabe karena akan
menympan has eksekus prosedur.
Struktur pemanggan prosedur dar program utama
maupun prosedur an adaah hanya dengan menuskan
nama procedurenya kemudan dkut daftar parameternya
sebaga berkut:
nama_prosed
ur
Sama hanya dengan fungs, prosedur dapat terhubung
dengan program utama maupun prosedur an meau
pertukaran parameter. Bedanya, dekaras prosedur harus
menyertakan nama dan tpe data dar seuruh parameter
nput dan outputnya.
Contoh agortma penghtung uas seg empat daam
subbab fungs dapat dubah men|ad sebaga berkut (dengan
prosedur):
1. VAR
2. pan|ang, ebar, uas: nteger
3. BEGIN
4. Input (pan|ang, ebar) {memnta nputan 2 na}
5. {pemanggan fungs uas_segempat}
6. ca uas_segempat(pan|ang, ebar, uas)
7. Output (uas) {menampkan uas}
8. END
9. PROCEDURE uas_segempat (nput: p, : nteger, output: has:
nteger)
10. {I.S.: pan|ang dan ebar bers bangan
11. F.S.: uas bers na uas segempat}
12. BEGIN
13. has p *
14. ENDPROCEDURE
Contoh agortma penghtung na rata-rata dar dua
buah bangan nputan dengan pendekarasan prosedur:
1. {===Program Utama===}
2. VAR {dekaras varabe goba}
3. na1, na2, rataan : rea
4. BEGIN
5. nput (na1, na2) {nput 2 bangan}
6. {pemanggan prosedur1}
7. ca htung_rataan(na1,na2)
8. output(rataan) {menampkan na rata-rata}
9. END
10. {===Prosedur1 htung_rataan===}
11. PROCEDURE htung_rataan(nput: var1,var2: nteger,
output: rata: rea)
12. VAR
13. |m : nteger
14. BEGIN
15. Ca htung_|umah(var1,var2) {pangg fungs2}
16. rata |m / 2
17. ENDPROCEDURE
18. {==Prosedur2 htung_|umah===}
19. PROCEDURE htung_|umah(nput: pertama, kedua:
nteger, output:
|umah:
nteger)
20. BEGIN
21. |umah pertama + kedua
22. ENDPROCEDURE
Poa pemanggan procedure |uga mengkut aturan yang
dterapkan pada *unction. Dar agortma d atas, dapat
dtuskan ke daam bahasa pemprograman C++ sebaga
berkut:
1. #ncude <stdo.h>
2.
3. //Varabe Goba
4. foat na1, na2, rataan;
5.
6. {===Program Utama===}
7. vod man () { // program Utama
8. // Insasas dua buah na
9. na1 = 8;
10. na2 = 16;
11.
12. /* pemanggan prosedur1 */
13. htung_rataan(na1,na2,rataan);
14. /* menampkan na rata-rata */
15. cout rataan;
16. }
17.
18. {==Prosedur2 htung_|umah===}
19. vod htung_|umah(nt pertama, nt kedua, nt& |umah)
20. {
21. |umah = pertama + kedua;
22. }
23.
24. {===Prosedur1 htung_rataan===}
25. vod htung_rataan(nt var1, nt var2,nt& rata)
26. {
27. nt |m;
28. // pangg procedure 2
29. htung_|umah(var1,var2,|m);
30. rata = |m / 2;
31. }
Perbedaan utama yang terhat antara fungs dan
prosedur adaah
bahwa prosedur tdak peru mengembakan sebuah na,
sedangkan fungs harus seau mengembakan na
(dtun|ukkan dengan perntah return ... d akhr bok fungs).
Sean tu, kode pemangg fungs peru mendefnskan
sebuah varabe untuk menympan na yang dkembakan
oeh fungs, sedangkan pada prosedur tdak demkan.
Pengsan varabe dakukan oeh prosedur sehngga kode
pemangg tdak peru ag mempersapkan sebuah varabe
penympan has eksekus prosedur.
Pada procedure pertama dan kedua terdapat ambang
"E" seteah penusan tpe data pada parameter procedure.
Ha tu maksudnya adaah varabe tersebut merupakan
parameter nput/output, dengan kata an akan ter|ad
pemetaan dua arah antara varabe pada parameter
procedure dengan varabe pada parameter pemanggan
procedure.
+.% Fungsi dan Prosedur yang
telah terde(inisi
Sean dapat membuat sendr fungs atau prosedur
yang dperukan daam sebuah program, bahasa
pemrograman |uga sudah menyedakan beberapa
fungs dan prosedur yang sudah terdens dan dapat
angsung dgunakan / dpangg daam program.
Penggunaan fungs maupun prosedur yang teah
terdens tersebut dapat mempermudah perancang
program menyeesakan sub persoaan tertentu.
Beberapa fungs yang teah terdens, antara an:
F963/
I
;16!1
P
- Fungs ceil
(untuk membuatkan
keatas na pecahan).
var-nt ce(ekspres oat)
- Fungs min7 ma,
(menentukan na
mnma
atau maksmadar dua
var-nt mn(3,5)
var-nt max(3,5)
bangan)
- Fungs random
(mendaparkan na
secara
acak dar rentang
var-nt random(10)
- Fungs sin
(memperoeh na snus
dar suatu bangan)
Var-oat sn(nt)
Beberapa prosedur yang teah terdens, antara an:
P#1/GD9
#
;16!1
P - Prosedur assert
(mengecek error pada
ekspres
booean)
assert (eks-booean
|,strng|)
- Prosedur arg
(mengembakan argumen ke-
dar
program dan meympannya
daam sebuah strng)
arg (eks-nteger, var-
strng)
- Prosedur date
(menampkan tangga
sekarang)
date (var-strng)
- Fungs time
(menampkan |am
sekarang
dengan format ||:mm:dd)
tme (var-strng)
+.( Fungsi /ekursi(
Fungs dapat dpangg oeh program utama dan |uga
oeh fungs yang an, sean kedua metode pemanggan
tersebut, fungs dapat |uga dpangg oeh drnya sendr.
Yang dmaksud dsn adaah pemanggan fungs tu ddaam
fungs tu sendr, bukan pada fungs yang an. Fungs
yang meakukan pemanggan terhadap drnya sendr dsebut
dengan fungs rekursf.
Berkut adaah contoh program daam program yang
menerapkan metode rekursf untuk menghtung na faktora
dar suatu bangan.
Struktur umum dekaras prosedur adaah sebaga berkut:
1. // Program Htung_Faktora
2. #ncude <stdo.h>
3.
4. nt angka;
5. nt has;
6.
7. {===Program Utama===}
8. vod man () { // program Utama
9. prntf("Masukan Angka Batas Atas Faktora :");
10. scanf("%",&angka);
11. has = faktora(angka);
12. prntf("Faktora Dat % adaah %.", angka, has);
13. }
14.
15. nt faktora(nt b)
16. {
17. f b = 0 then
18. return 1
19. ese
20. return (b * fa*torial.bil > 10);
21. }
Perhatkan pada bars ke-20 kode datas yang dber
tanda arsr. Kode pemanggan fungs faktora tersebut
berada pada boknya sendr degan parameter yang dubah.
Ha yang harus dperhatkan daam pembuatan rekursf
adaah fungs tersebut harus berhent dmana ddaam
fungs tersebut harus ada pengkondsan bahwa fungs harus
berhent. Pada contoh datas, code untuk menghentkan
fungs tersebut ada pada bars ke 17 dan
18, dmana apaba nputan parameternya 0, maka akan
menghaskan 1. Namun |ka tdak, proses akan memangg
fungs yatu drnya sendr.
Sebaga ustras program datas, mar kta coba
memangg fungs faktora dengan Faktora(5), maka proses
yang akan dakukan adaah :
1. 5 * Faktora(4)
2. 5 * 4 * Faktora(3)
3. 5 * 4 * 3 * Faktora(2)
4. 5 * 4 * 3 * 2 * Faktora(1)
5. 5 * 4 * 3 * 2 * 1 * Faktora(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
Has Akhr : 120
+.+ .nit
Fungs dan prosedur dapat dsmpan daam fe yang
terpsah dar program utamanya. Fe-fe semacam n dsebut
sebaga unt. Fungs, prosedur, dan varabe dapat
dsmpan daam sebuah unt tanpa bok program utama.
Pada saat dakukan kompas, program utama akan
mendekaraskan unt-unt yang dgunakan.
== nama >ile external!c
?inclu0e 4st0i%!25
?0efine +ect%r*si@e = 100A
+%i0 pTam,a2(int a1int ,1intB c)A
int fTam,a2(int a1int ,)A
?inclu0e 4<external!c<5
== Pr%gram 'tama
+%i0 pTam,a2(int a1int ,1intB c)
{
...
}
int fTam,a2(int a1int ,)
{
...
}
int main() C
...
}
aam program utama
Gambar 7.4. Contoh
dekaras unt d
#ang*uman
1. Pemrograman moduar adaah upaya memecah program
yang kompeks ke daam sub-subprogram yang ebh kec
untuk menyederhanakan penyeesaan persoaan.
2. Seteah ddefnskan, subprogram dapat dpangg
berka-ka dengan
parameter yang berbeda-beda.
3. Dua tpe subprogram yang basa dgunakan adaah fungs
(*unction) dan prosedur (procedure).
4. Sebuah subprogram dapat dsmpan daam fe yang
sama dengan program utama, ataupun daam fe
terpsah.
5. Daam penggunaan fungs dan prosedur, dkena 2 tpe
varabe, yatu varabe oka dan varabe goba.
6. Sebuah fungs memetakan sebuah na (daam domain)
men|ad na an
(daam range) dengan operas / proses tertentu.
7. Daam penggunaan prosedur, dkena dua tpe
parameter, yatu parameter forma dan parameter aktua.
8. Fungs dan prosedur beker|a menurut mekansme
pemanggan- pengembaan (call-return mechanism).
9. Terdapat beberapa fungs dan prosedur yang teah
terdefns dan dapat angsung dgunakan daam program.
10. Fungs, prosedur dan varabe yang dsmpan daam
sebuah fe yang terpsah dar program utamanya
membentuk unt yang dapat dgunakan oeh program
utama.
Kuis )enar /alah
1. Prosedur adaah fungs yang tdak mengembakan na
apapun ke kode pemanggnya.
2. Pemrograman moduar adaah pemrograman dengan
modu-modu.
3. Sebuah subprogram dapat dpangg oeh program
utama maupun subprogram annya.
4. Subprogram harus dsmpan daam fe yang sama
dengan program utama atau subprogram an yang akan
memanggnya.
5. Varabe goba adaah varabe yang ddekaraskan
dgunakan daam program utama dan tdak dapat dkena
daam subprogram manapun.
6. Saah satu keuntungan pemrograman moduar adaah
bahwa |ka ter|ad kesaahan pada sebuah modu,
perbakan dapat dokasr.
7. Daam mendefnskan sebuah fungs, pemrogram
harus menentukan nama fungs, tpe data keuaran dar
fungs, dan daftar parameter yang dperukan oeh fungs.
8. Tahapan terakhr daam mekansme pemanggan-
pengembaan fungs adaah pengembaan has eksekus
ke program utama atau fungs an yang memanggnya.
9. Fungs seau memk daftar parameter yang peru
dnputkan saat pemanggan.
10. Program / subprogram pemangg fungs / prosedur
memegang kenda terhadap data yang dhaskan oeh
fungs / prosedur yang dpanggnya.
Pilihan 3anda
1. Fungs adaah . .
A. Saah satu |ens subprogram
B. Sekumpuan nstruks yang dber nama
C. Bok program yang menerma data masukan,
tanpa harus mengembakan na apapun ke kode
pemangg
D. Dekaras dar prosedur
E. Bagan program yang dapat memangg program
utama beruang ka sesua kebutuhan
2. Perhatkan potongan program berkut n:
vod man() {
nt st;
st = sesuatu(4, 5);
prntf("%",st);
}
nt sesuatu(nt P, nt T)
{
nt has;
has (P * T)/
2 return
(has)
}
Apakah nama fungs yang ada d daam potongan
program d atas?
A.
uas_segtga
B. has
C. nteger
D. uas
E. sesuatu
3. D antara phan berkut n, manakah yang tdak harus
ddefnskan pada saat membuat sebuah subprogram?
A. Nama subprogram
B. Tpe data yang dhaskan oeh subprogram
C. Satu atau ebh nstruks yang meakukan perhtungan
D. Progam utama/ subprogram an yang akan
menggunakannya
E. Daftar parameter yang menyatakan data yang
dperukan oeh subprogram
4. Berkut n adaah pernyataan-pernyataan yang
benar tentang
subprogram, kecua . .
F. Subprogram adaah cara yang dgunakan
pemrogram untuk memecah persoaan men|ad sub-
sub persoaan yang ebh sederhana.
G. Subprogram dapat dpangg oeh program utama
maupun subprogram annya.
H. Subprogram adaah fungs/ prosedur yang ada d
daam fe yang sama dengan program utama.
I. Subprogram dapat memangg subprogram an
daam fe yang
berbeda.
|. Subprogram memungknkan pemrogram
menyeesakan persoaan secara parsa.
5. Perhatkan potongan agortma berkut n:
FUNCTION
htung_rataan(var1,var2)
BEGIN
rata
(var1+var2)/ 2
return (rata)
ENDFUNCTION
Bagan apakah yang kurang dar fungs d atas?
F. dekaras varabe
goba
G. dekaras varabe
oka
H. dekaras parameter
nput
I. dekaras parameter
output
|. dekaras output fungs
1. |easkan perbedaan antara fungs dan prosedur!
(Untuk soa nomor 2-4) Perhatkan potongan
agort
ma
berkut
n
VA
R
:atiha
n
sNama, sNamaOrtu : strng
Umur, UmurOrtu, Sesh :
nteger bVad : booean
BEGIN
Input (sNama, Umur)
Input (sNamaOrtu, UmurOrtu)
Sesh htung_sesh(UmurOrtu, Umur)
IF Sesh >= 15 THEN
Output (Vad. Sakan
masuk!)
ELSEOutput (Tdak vad. Darang masuk!)
EN
D
ENDIF
FUNCTION htung_sesh
(a,b) BEGIN
beda a-b
return
(beda) END
FUNCTION
2. Apakah output program d atas |ka pengguna
mengnputkan Umur10 dan UmurOrtu23?
3. Sebutkan varabe-varabe oka dan goba daam
potongan program d atas!
4. Sebutkan tga macam parameter daam subprogram!
Ubahah agortma tersebut kedaam bahasa C+
+!"
%esin
'ara$ter
275
& ,esin
Kara*ter
1verview Daam menyeesakan masaah yang reatf
kompeks peru dakukan penggambaran atau anaog
dengan suatu ha yang bersfat nyata. Tu|uan penggambaran n
agar mempermudah menentukan kebutuhan proses atau
mekansme tertentu, sehngga pada akhrnya seuruh
mekansme dapat terdentfkas untuk menyeesakan masaah.
!u2uan
1. Memaham perunya anaog daam mendefnskan
suatu permasaahan
2. Mempea|ar mekansme
%esin
'ara$ter
276
mesn abstrak
3. Mempea|ar mekansme mesn pencacah
(mesn nteger)
4. Mempea|ar mekansme mesn
karakter
5. Mempea|ar penggunaan mesn nteger dan mesn
karakter daam
menyeesakan suatu kasus
6esi
n
Mesn merupakan mekansme yang terdefns dan
mengert serta
mampu untuk mengeksekus aks-aks prmtf yang
terdefns untuk mesn tersebut.
Aks-aks prmtf dsn dapat danaogkan sebaga
fungs dan prosedur yang terdefns dar seg nput, proses
dan output. Sebaga contoh sederhana adaah mesn
kendaran bermotor. Pada mesn tersebut terdapat karburator,
bus, bok mesn, dan katup mesn sebaga |aur masuk bahan
bakar atau sebaga |aur keuar gas ssa pembakaran.
|ka karburator beker|a dengan bak maka, karburator dapat
dengan ancar mengarkan bahan bakar menu|u ke bok
mesn. |ka katup mesn dapat beker|a dengan bak maka,
|aur masuk bahan bakar dan |aur keuar gas ssa
pembakaran dapat darkan dengan ancar. |ka bus dapat
beker|a dengan bak maka, bus dapat menghaskan perckan
ap yang berguna untuk meetupkan bahan bakar yang ada
daam bok mesn, sehngga gerg-gerg yang ada daam
bok mesn akan beker|a.
Oeh karena tu, sebuah mesn dapat dkatakan sebaga
mekansme karena memk prmtf-prmtf yang
terdefns dengan bak fungs- fungsnya sehngga dapat
menghaskan sesuatu.
6esin
A-strak
Mesn abstrak adaah mesn yang danggap ada dan
dasumskan dapat meakukan mekansme yang ddefnskan
untuk mesn tersebut. Mesn abstrak n dgunakan untuk
memodekan suatu mekansme tertentu supaya dapat ebh
mudah dpea|ar. Dengan menggunakan mesn abstrak,
perancang program dapat dengan mudah membuat suatu
mekansme dar mesn yang akan dbuat.
Daam pemrograman, mesn abstrak n dcptakan pada
tahap konseptua dan beum men|ad sesuatu yang r.
Perancang program serngka harus mendefnskan mesn-
mesn abstrak untuk memecahkan masaah secara
bertahap, sehngga pada akhrnya nant seuruh prmtf
serta mekansme dapat terdefns dengan bak. Seteah mesn
abstrak n terdefns dengan bak (termasuk fungs dan
prosedur yang terbat), baruah kode-kode program dtuskan
untuk menerapkan sesuatu yang abstrak men|ad produk
yang nyata (r) yatu yang dsebut sebaga mesn r.
%esin 'ara$ter 18&
%esin
'ara$ter
279
Algoritma dan
Pemrograman
d e s anmu t m e d a.b o g s po t. c om/
Daam buku n akan dbahas mengena suatu bentuk
mesn yang umum dgunakan, yakn mesn nteger dan mesn
karakter.
6esin "nteger %Penaah'
Mesn nteger merupakan sebuah mesn yang terdr dar :
1. Satu buah tombo RESET
2. Satu buah tombo INC (sngkatan dar ncrement
yang berart menambahkan)
3. Sebuah |endea yang menun|ukkan angka nteger
yang sedang dngat, oeh karena tu angka yang
sedang muncu d |endea dsebut sebaga %urrent
#nteger 1%#2.
Masng-masng tombo merupakan anaog dar
procedure, |ka tombo
RESET dtekan artnya procedure RESET dpangg,
demkan |uga untuk tombo INC.
Tombo RESET berguna untuk mengembakan CI pada
angka no. Sedangkan tombo INC berguna untuk
menambahkan angka 1 pada CI, |ka CI berna 0 maka
seteah tombo INC dtekan maka, CI akan berna satu. Na
pada CI akan terus bertambah |ka tombo INC seau dtekan.
1
RESET INC
Gambar 8.1 Mesn Pencacah
Berkut adaah prosedur untuk kedua
tombo tersebut: PROCEDURE RESET
{mengembakan s dar pencacah CI men|ad no
%esin
'ara$ter
28
Algoritma dan
Pemrograman
d e s anmu t m e d a.b o g s po t. c om/
CI merupakan varabe goba
I.S.:
sembarang
F.S.: CI = 0}
BEGIN
CI 0
ENDPROCEDURE
PROCEDURE INC
{menambahkan s varabe CI dengan satu
I.S.: CI = na
saat n F.S.: CI =
CI + 1} BEGIN
CI CI + 1
ENDPROCEDURE
6esin Karakter
Mesn karakter merupakan mesn abstrak yang d
daamnya terdr dar beberapa komponen, yatu:
1. Pta yang bers deretan karakter dan dakhr dengan
tanda ttk ..
Pta yang hanya bers tanda ttk . akan dsebut
sebaga pta kosong. Pta daam mesn n sebaga
penggambaran dar arra( dengan tpe data char
(karakter). Daam ngkungan pemrograman dengan
bahasa Pasca, tpe data strng dapat dperakukan
sama dengan arra( dengan tpe data karakter.
2. Dua buah tombo yakn tombo START dan ADV
(sngkatan dar kata
ad.ance yang berart
mema|ukan)
3. Sebuah ampu EOP 1End O* Position2. Lampu n akan
menyaa |ka tanda ttk . sudah terbaca, artnya
sudah berada pada poss terakhr. Penggambaran
ampu menyaa adaah konds dmana status padaa
saat tu berna TRUE dan ampu padam adaah FALSE.
4. Sebuah "|endea" yang ukurannya sebesar satu
karakter sa|a. Hanya karakter yang sedang berada d
|endea dsebut sebaga %urrent %haracter 1%%2 dan
dapat dbaca sedangkan karakter an tdak terhat.
EOP
&
%esin 'ara$ter 187
START
283 %esin
'ara$ter
d e s anmu t m e d a.b o g s po t. c om/
Algoritma dan
Pemrograman
PITA
KARAKTER
ADV
Gambar 8.2 Mesn Karakter
Mesn karakter n memk skenaro mekansme atau cara
ker|a mesn saat dgunakan untuk mengamat suatu pta
karakter. Skenaronya adaah sebaga berkut :
1. Konds (state) awa mesn adaah pada |endea akan
tampak CC. |ka CC merupakan ttk, maka EOP akan
menyaa yang berart s pta adaah kosong. |ka CC
tdak sama dengan ttk, maka ampu EOP akan
padam
2. Tombo ADV dgunakan untuk mema|ukan pta
karakter sebanyak
satu karakter. Pada konds n tetap akan dperksa
apakah CC
merupakan tanda ttk atau bukan.
Berkut adaah procedure untuk tombo
START dan ADV: PROCEDURE START
{Mesn sap dgunakan. Pta dsapkan untuk dbaca.
Karakter pertama pada pta berada d |endea
I.S.: sembarang
F.S.: CC = karakter pertama
pada pta |ka CC='.' maka
EOP padam (FALSE) |ka CC='.'
maka EOP menyaa (TRUE)}
PROCEDURE ADV
{Pta dma|ukan satu karakter
I.S.: CC = karakter pada |endea, CC='.'
F.S.: CC adaah karakter berkutnya, kemungknan
CC='.' |ka CC='.' Maka EOP
menyaa (TRUE)} Catatan:
|ka EOP menyaa, maka mesn tdak dapat dgunakan ag
(sudah sampa
284
Algoritma dan
Pemrograman
%esin
'ara$ter
d e s anmu t m e d a.b o g s po t. c om/
akhr pta).
Penggunaan 6esin
,enghitung 7umlah Kara*ter
Kedua mesn n (mesn nteger dan mesn karakter)
dapat dgunakan secara bersama-sama untuk menyeesakan
beberapa kasus. Sebaga contoh |ka terdapat sebuah pta
karakter yang bers data sebaga berkut:
"P" "O" "L" "I" "T" "E" "K" "N" "I" "K" "."
|ka |umah karakter daam pta tersebut akan dhtung,
maka daam pengoperasan kedua mesn n adaah:
Tombo yang
dtekan
CC CI
START, RESET "P" 0
ADV, INC "O" 1
ADV, INC "L" 2
ADV, INC "I" 3
ADV, INC "T" 4
ADV, INC "E" 5
ADV, INC "K" 6
ADV, INC "N" 7
ADV, INC "I" 8
ADV, INC "K" 9
ADV, INC "." 10
Atau dapat |uga dakukan dengan cara menekan tombo INC
terebh dahuu:
Tombo yang
dtekan
CC CI
START, RESET "P" 0
INC, ADV "O" 1
INC, ADV "L" 2
INC, ADV "I" 3
INC, ADV "T" 4
INC, ADV "E" 5
INC, ADV "K" 6
INC, ADV "N" 7
INC, ADV "I" 8
INC, ADV "K" 9
INC, ADV "." 10
Berkut n adaah agortma proses
penghtungan huruf: Agortma Htung_Huruf
{Menghtung banyaknya huruf daam pta karakter}
Kamus data
CI : nteger, CC : char, EOP : booean
BEGIN
STAR
T
RESE
T
WHILE (cc = '.') DO
INC ADV
ENDWHILE
OUTPUT(CI
) END
)ahasa ;
#ncude <stdo.h>
#ncude <cono.h>
#ncude "mesnkar.nc"
/*Menghtung banyaknya huruf daam pta karakter*/
vod
man()
{ START(
);
RESET();
whe (!
EOP) {
INC();
ADV();
}
prntf("Banyak huruf daam pta = %d \n",c);
getche();
}
Catatan:
|ka CC=., maka EOP menyaa, karena tu CC=. bsa
dgant EOP sa|a dan
CC=. dapat dgant not EOP, demkan |uga sebaknya .
,enghitung 7umlah
Kara*ter !ertentu
Kombnas penggunaan mesn karakter dan mesn
nteger dapat |uga dmanfaatkan untuk menghtung |umah
karakter tertentu, msanya untuk menghtung |umah huruf
A daam suatu pta karakter.
Cara menangan kasus n yatu dengan
mengkombnaskannya
dengan operas f..then..ese. |ka CC menun|ukkan huruf A,
maka tombo INC pada mesn nteger akan dtekan, |ka
bukan huruf A, maka akan mema|ukan pta karakter
menggunakan tombo ADV.
Berkut adaah agortma dan program untuk menghtung
banyaknya
huruf A:
Algoritma
Agortma Htung_Huruf_A
{Menghtung banyaknya huruf A daam pta
karakter} Kamus data
CI : nteger, CC : char, EOP : booean
BEGIN
RESET
START
WHILE (CC=".")
DO IF CC = "A"
THEN
INC
ENDIF
ADV
ENDWHILE
OUTPUT(CI)
END
)ahasa ;
#ncude <cono.h>
#ncude <stdo.h>
#ncude "mesnkar.nc"
/*Menghtung banyaknya huruf A dam pta karakter*/
vod man()
{ START();
RESET();
whe (cc!='.') {
f
(cc=='A')
{ INC();
}
ADV();
}
prntf("Banyak huruf A = %d \n",c);
getche();
}
,enghitung 7umlah Kata
Sekas terbayang menghtung |umah kata adaah
sesuatu yang amat sut, padaha |umah kata tdak an
adaah |umah spas dtambah 1. Contoh s pta:
HARI INI HARI SENIN 3 spas = 4 kata
HARI INI HU|AN TURUN LAGI 4 spas = 5 kata
Namun persoaan akan makn rumt ba dmungknkan antar
kata ebh dar 1 spas. Untuk n dapat dbuat prosedur
mengabakan spas yang berebhan.
Contoh s pta karakter
" HARI INI HU|AN TURUN LAGI ."
Agortma berkut prosedurnya sbb:
Algoritma
PROCEDURE IGNORE_BLANK
{mengabakan/membuang spas
berebhan} BEGIN
whe (cc==' ') do
ADV
endwhe
ENDPROCEDURE
Agortma Htung_Kata
{Menghtung banyaknya kata daam
pta karakter} Kamus data
CI : nteger, CC : char, EOP : booean
BEGIN
RESE
T
STAR
T
WHILE (not EOP)
DO IF CC=' '
THEN
INC
IGNORE_BLA
NK
ELSE
ENDI
F
ADV
ENDWHIL
E INC
OUTPUT(CI
) END
)ahasa ;
vod IGNORE_BLANK() {
whe
(cc==' ') {
ADV();
}
}
nt
man()
{ STAR
T();
RESET()
;
IGNORE_BLANK();
whe (cc!='.') {
f (cc==' ') {
INC();
IGNORE_BLAN
K();
}
ese
{ AD
V();
}
}
/* banyak kata = banyak
spas + 1 */ INC();
prntf("Banyak kata = %d \n",c);
getche();
}
/tudi Kasus ,esin Kara*ter R Palindrom
Pandrom adaah stah yang dgunakan untuk kata
atau kamat yang apaba dbaca dar depan ke beakang atau
sebaknya, memk art yang sama.
Contoh
pandro
m:
KATAK
KASUR RUSAK
KASUR NABABAN RUSAK
Untuk memerksa apakah kata yang dmasukkan
merupakan pandrom maka, dapat dbuat sebuah
functon yang memk tpe data booean. Functon n
akan mengembakan na TRUE |ka kata termasuk
pandrom, dan akan mengembakan na FALSE untuk konds
sebaknya.
Algoritma
FUNCTION IsPandrom (kt : strng) booean
{akan mengembakan na TRUE |ka k
adaah pandrom} Kamus data
,| : nteger
temp : strng
BEGIN
{mengs temporer dsngkat temp dengan strng kosong}
temp ""
{mengs | dengan ebar kata}
| ength(kt)
WHILE (|>0)
DO
{operas konkatenas}
temp temp + kt|||
| | - 1
ENDWHILE
{membandngkan s temporer,
dengan kt} IF temp = kt THEN
return TRUE
ELSE
return
FALSE ENDIF
ENDFUNCTI
ON )ahasa
;
boo IsPandrom(char kt||){
char ss||={0,0};
nt ,|;
char temp|30|;
strcpy(temp,
"");
|=stren(kt)-
1; whe
(|>=0) {
*ss=kt|||;
strcat(temp,
ss); |=|-1;
}
f (strcmp(temp,kt)==0)
return true;
ese {
return fase;
}
}
Catatan:
Operas konkatenas berfungs untuk menggabungkan
dua data bertpe strng. Contoh:
Kata1 dan Kata2 bertpe strng.
Ba Kata1 bers "ago" dan Kata2 bers "rtma"
Maka operas Kata1+Kata2 akan menghaskan kata
"agortma"

#ang*uman
1. Dengan menganaogkan suatu permasaahan maka,
dengan mudah daam mempea|ar mekansme
penyeesaan masaah.
2. Mesn abstrak merupakan mesn yang ddefnskan d
tngkat konseptua sebeum dmpementaskan men|ad
produk yang r.
3. Mesn nteger berguna untuk meakukan pencacahan.
4. Mesn karakter berguna untuk meakukan penyeesaan
masaah yang berkatan dengan strng.
5. Daam ngkungan pemrograman dengan bahasa
Pasca, strng merupakan tpe data yang ekvaen
dengan arra( bertpe data karakter (arra( o* char).
6. Mesn nteger dapat dgunakan secara bersama-sama
dengan mesn karakter untuk menyeesakan masaah.
7. Pandrom adaah stah untuk kata atau kamat yang
memk art yang sama pada saat kata atau kamat tu
dbaca dar arah yang berawanan.
Kuis )enar /alah
1. Mesn nteger tdak memk |endea untuk
menampkan %urrent
%haracter.
2. Fungs dar tombo RESET pada mesn nteger
adaah untuk mengembakan na current integer ke
na satu.
3. INC dapat dakukan untuk menambahkan CI sebanyak satu
angka
4. Pta karakter pada mesn karakter harus dakhr dengan
tanda ttk "."
atau penanda an sebaga end-of-poston
5. Pta karakter merupakan penggambaran dar tpe data
strng atau arra(
of karakter.
6. |ka S adaah varabe dengan tpe data strng dan S
"agortma" maka, output dar S*9+ adaah huruf A.
7. Operas konkatenas berguna untuk menggabungkan
dua buah data
bertpe karakter atau strng.
8. Perhatkan agortma
berkut: Kamus data
S1, S2, S3 : strng
BEGIN
S1 "seamat"
S2 "pag"
S3 S1 + S2
END
Output dar varabe S3 adaah "seamat pag"
9. "Nama Papa Aman" merupakan kamat yang pandrom.
10. |ka dketahu anagram adaah kata atau kamat
yang tersusun dar huruf-huruf yang sama, maka
pernyataan berkut berna benar:
"Kata yang dsebut pandrom sudah past anagram,
sedangkan kata
yang anagram beum tentu pandrom"
:atihan
6. Buatah agortma untuk menghtung frekuens huruf "A"
yang terdapat
pada pta karakter yang bers :
"ada apa dengan cnta. " outputnya: 6/20.
7. Buatah agortma untuk menentukan frekuens huruf hdup
(voka)
mana yang pang banyak muncu :
"har n har bur. " outputnya: voka terbanyak "".
8. Buatah prosedur untuk meakukan nvers kata atau
kamat. Invers adaah kebakan, artnya fungs akan
menghaskan kata atau kamat secara terbak dar
semua.
Contoh:
"POLITEKNIK" seteah dnvers akan men|ad "KINKETILOP".
9. Buatah fungs (functon) baru, yang berbeda dengan
contoh, untuk memerksa sebuah kata atau kamat
termasuk kategor pandrom atau bukan! (Ketentuan:
tdak menggunakan temporer dan operas konkatenas)
10. Buatah agortma yang menerma masukan berupa
dua buah kata, kemudan memerksa apakah kedua
kata tad termasuk anagram atau tdak (anagram
artnya huruf-hurufnya sama tetap dacak).
Contoh:
"SEBAB" dan "BEBAS" anagram
"KAPAS" dan "PASAK" anagram
Pencarian 31
&. Pencarian
1verview Pencaran merupakan sebuah agortma dasar
yang serng dperukan daam pembuatan program. Berbaga
agortma pencaran teah dcptakan dan dapat dgunakan.
Pemahaman tentang beberapa agortma pencaran dasar
peru dketahu, termasuk cara penggunaannya daam program.
!u2uan
1. Memaham konsep
32 Pencarian
pencaran
2. Mengena beberapa agortma pencaran
3. Menerapkan agortma pencaran daam program
8.1 Konsep Pencarian
Pencaran adaah proses menemukan na (data)
tertentu dar daam sekumpuan na yang bertpe sama (tpe
dasar maupun tpe bentukan). Dengan kata an, agortma
pencaran adaah agortma yang mengamb nput berupa
persoaan dan mengembakan penyeesaan berupa
penemuan na yang dcar daam persoaan nputan.
Proses pencaran serngka dperukan pada saat
program peru mengubah atau menghapus na tertentu
(sebeum bsa mengubah atau menghapus, peru mencar
duu apakah na tersebut ada daam kumpuan na
tersebut). Kasus an yang memerukan agortma pencaran
adaah penyspan data ke daam kumpuan data (peru
dmua dengan pencaran apakah data tersebut teah ada
sehngga terhndar dar dupkas data).
&.2 Penarian Sekuensial
Pencaran sekuensa (seJuential search) adaah proses
membandngkan setap eemen ark (array) satu persatu
dengan na yang dcar secara beruntun, mua dar
eemen pertama sampa eemen yang dcar sudah
dtemukan, atau sampa seuruh eemen sudah dperksa.
Agortma pencaran sekuensa n cocok untuk
pencaran na tertentu pada sekumpuan data terurut
maupun tdak. Keungguan agortma n adaah daam
mencar sebuah na dar sekumpuan kec data. Agortma n
termasuk agortma yang sederhana dan cepat karena tdak
memerukan proses persapan data (msanya: pengurutan).
Agortma pencaran sekuensa:
PROCEDURE SeqSearch(nput L:array|1..N| of nteger, nput
N:nteger,nput
X:nteger, output dx : nteger) IS : Terdapat array bers data angka
FS : Memberkan has data ketemu atau tdak ketemu
KAMUS DATA
k : nteger
BEGIN
k 0
WHILE ((k<N) AND (L|k| !=X))
k k+1
ENDWHILE
IF ((L|k|=X)&&(k<N))
dx k+1
ELSE
dx -1
ENDI
F END
Prosedur d atas memerukan parameter
nput berupa:
L yatu sebuah ark (array) tempat menympan data yang
dngnkan,
N yatu |umah eemen ark (atau ndex terbesar),
X yatu na data yang ngn dcar
serta sebuah parameter output berupa varabe dx bertpe
nteger yang akan mengembakan poss dtemukannya data
yang dcar apaba ketemu dan akan mengembakan na -1
|ka data tdak dtemukan.
Prosedur dmua dengan nsasas pencacah teras (k
0). Kemudan
pencaran dakukan dengan peruangan yang
membandngkan setap eemen ark secara berurutan dar
eemen pertama hngga terakhr dengan na data yang
dngnkan. Peruangan berakhr |ka eemen yang
dbandngkan berna sama dengan data yang dcar
(mengembakan poss data), atau |ka eemen ark teah
dbandngkan semua namun data yang dcar tdak dtemukan
(mengembakan na -1).
Pada agortma datas dx=k+1, ha n hanya untuk
mempermudah daam mehat urutan, basanya user mehat
eemen pertama sebaga ndeks ke - 1, tetap pada array
eemen pertama merupakan ndeks ke - 0. Maka varabe dx
untuk menyesuakan dengan user, sedangkan varabe k
menyesuakan dengan array.
Berkut n adaah contoh pencaran
sekuensa:
elemen /4 /9 /6 3/ :9 /8
inde, ? / 3 4 6 8
Dar data datas, ark L mempunya 6 eemen. Pencaran
akan dmua dar ndeks ke-0 yatu poss pertama.
Msakan eemen yang dcar: X = 21. Urutan eemen yang
dbandngkan:
13 <> 21
16 <> 21
14 <> 21
21 = 21 (dtemukan dx = 4)
Indeks array yang dkembakan: k = 3
Msakan eemen yang dcar: X = 13. Urutan eemen yang
dbandngkan:
13 = 13 (dtemukan dx = 1)
Indeks array yang dkembakan: k = 0
Msakan eemen yang dcar: X = 17. Urutan eemen yang
dbandngkan:
13 <> 17
16 <> 17
14 <> 17
21 <> 17
76 <> 17
15 <> 17 (tdak dtemukan dx = -1)
Indeks array yang dkembakan: k = 6, maka akan
mengeuarkan output tdak ketemu karena tdak memenuh
syarat ((L|k|=X)&&(k<N)).
Berkut adaah konvers agortma pencaran sekuensa daam
bahasa C:
1 #ncude <stdo.h>
2 vod seqSearch(nt L|10|,nt N,nt X, nt *dx);
3 vod man()
4 {
5 nt pos;
6 nt arr|10|= {6,7,3,8,2,5,4,1,8,10};
7 seqSearch(arr,10,5,&pos);
8 f (pos!=-1)
9 prntf("Ketemu d poss %d",pos);
10 ese
11 prntf("Tdak Ketemu");
12 }
13 vod seqSearch(nt L|10|,nt N,nt X, nt *dx)
14 {
15 nt
k;
16
k=0;
17 whe ((k<N) &&
(L|k| != X))
18
{
19 k =
k+1;
20
}
21 f ((L|k| == X) &&
(k<N))
22
*dx=k+1;
23
ese
24
*dx=-1;
25
}
Pencaran sequenta tdak efektf |ka dgunakan pada data
yang banyak atau data yang dcar berada pada poss terakhr
pencaran.
&.
Penarian Biner
Pencaran bner adaah proses mencar data dengan
membag data atas dua bagan secara terus menerus sampa
eemen yang dcar sudah dtemukan, atau ndeks kr ebh
besar dar ndeks kanan.
Agortma n ebh efsen darpada agortma pencaran
sekuensa,
tetap pencaran n mempunya syarat yatu bahwa
kumpuan data yang harus dakukan pencaran harus sudah
terurut terebh dahuu, bak terurut secara menak
(ascendant) atau menurun (descendant). Karena data sudah
terurut, agortma dapat menentukan apakah na data yang
dcar berada sebeum atau sesudah eemen ark yang sedang
dbandngkan pada suatu saat. Dengan cara n, agortma
dapat ebh menghemat waktu pencaran.
Pencaran daam data terurut bermanfaat msanya
pada penympanan data dengan beberapa komponen,
program dapat mencar sebuah ndeks terurut. Seteah
menemukan ndeks yang dcar, program dapat membaca
data an yang bersesuaan dengan ndeks yang dtemukan
tersebut.
Agortma pencaran bner dengan eemen ark
terurut menai*R
PROCEDURE BnSearch(nput L:array|1..N| of nteger, nput
N:nteger,nput
X:nteger, output dx : nteger)
IS : Terdapat array bers data angka terurut menak
FS : Mengembakan poss data yang dcar |ka
ketemu, dan
Mengembakan -1 |ka tdak ketemu
KAMUS DATA
,|,k : nteger
ketemu :
booean
1 BEGIN
2 0
3 |N
4 ketemu fase
5 WHILE ((!ketemu) and (<=|))
6 k(+|) dv 2
7 IF (L|k| = X)
8 ketemu = true
9 ELSE
10 IF (L|k| < X)
11 k+1
12 ELSE
13 |k-1
14 ENDIF
15 ENDIF
16 ENDWHILE
17 IF(ketemu)
18 dxk+1
19 ELSE
20 dx-1
21 ENDIF
22 END
Prosedur d atas dapat beker|a pada ark yang teah
terurut menak
(ascending). Prosedur memerukan parameter nput berupa:
L yatu sebuah ark (array) tempat menympan data yang
dngnkan,
N yatu |umah eemen ark,
X yatu na data yang ngn dcar
serta sebuah parameter output berupa na dx
(mengembakan poss na |ka na dtemukan, dan
mengembakan -1 |ka na tdak dtemukan). Prosedur
dmua dengan nsasas pencacah (0) dan menympan
|umah eemen ark daam varabe |. Varabe ketemu akan
dber na fase, ha n membertahukan bahwa data yang
dcar beum dtemukan. Peruangan
dawa dengan membandngkan eemen tengah (eemen
dengan ndeks k)
dengan na data yang
dcar.
|ka eemen ark yang dbandngkan berna sama
dengan data yang dcar, maka varabe booean
ketemu berna true dan prosedur
mengembakan na ndeks eemen tersebut.
|ka eemen ark berna ebh kec dar data yang
dcar, maka pencaran akan bergeser ke kanan dengan
cara mengubah na (awa
pencacah) dengan ndeks d sebeah kanan na tengah
(k+1).
|ka eemen ark berna ebh besar dar data
yang dcar, maka pencaran akan bergeser ke kr
dengan cara mengubah na (awa
pencacah) dengan ndeks d sebeah kr na tengah (k-
1). Sean|utnya, peruangan terus dakukan sampa
ketemu berna true
atau na >| (semua eemen ark sudah dbandngkan dengan
na yang dcar). |ka semua eemen ark sudah dbandngkan
dengan na yang dcar tetap na tdak dtemukan, maka
na ketemu akan tetap berna fase sehngga akan
dkembakan na ndex= -1 (penanda bahwa na yang dcar
tdak dtemukan daam ark).
Contoh penggunaan agortma bner untuk eemen
terurut menak adaah sebaga berkut:
Eemen 81 76 21 28 16 13 10 7
(terurut) 7 10 13 16 21 28 76 81
Index 0 1 2 3 4 5 6 7
Msakan na yang dcar: X=16, |umah eemen: N=8.
Dengan pencaran bner, eemen yang dgunakan adaah
eemen terurut (bars kedua). Urutan penyeesaan
persoaan n adaah sebaga berkut:
1 Prosedur meakukan nsasas peruangan (teras
pertama)
=0;
|=8;
k=(0+8) dv 2 = 4
2 Prosedur mengu| apakah L|4|=16?
Tdak. L|4|= 21 Maka prosedur peru memutuskan
apakah pencaran dan|utkan ke kr/ ke kanan.
L|4|<16? Tdak. 21 > 16. Maka prosedur
meakukan pencaran d sebeah kr, dengan
mengubah batas | men|ad k-1.
3 Prosedur meakukan nsasas peruangan (teras kedua)
=0;
|=k-1= 3;
k=(0+3) dv 2 = 1
4 Prosedur mengu| apakah L|1|=16?
Tdak. L|1| = 10. Maka prosedur peru memutuskan
apakah pencaran dan|utkan ke kr/ ke kanan.
L|1|<16? Ya. 10 < 16 . Maka prosedure meakukan
pencaran d
sebeah kanan, dengan mengubah batas men|ad k+1.
5 Prosedur meakukan nsasas peruangan (teras ketga)
=k+1=2;
|=3;
k=(2+3) dv 2 = 2
6 Prosedur mengu| apakah L|2|=16?
Tdak. L|2| = 13. Maka prosedur peru memutuskan
apakah pencaran dan|utkan ke kr/ ke kanan.
L|2|<16? Ya. 13 < 16 . Maka prosedure
meakukan pencaran d sebeah kanan, dengan
mengubah batas men|ad k+1.
7 Prosedur meakukan nsasas peruangan (teras ketga)
=k+1=3;
|=3;
k=(3+3) dv 2 = 3
8 Prosedur mengu| apakah L|3|=16?
Ya. Maka varabe ketemu= true dan prosedur
mengembakan na k=3.
Maka, daam empat teras prosedur pencaran bner dapat
menemukan na
X=16 yang dcar pada ark tersebut.
Agortma berkut n pencaran bner dengan eemen ark
terurut menurun:
PROCEDURE BnSearch(nput L:array|1..N| of nteger, nput
N:nteger,nput
X:nteger, output dx : nteger)
IS : Terdapat array bers data angka terurut menurun
FS : Mengembakan poss data yang dcar |ka
ketemu, dan
Mengembakan -1 |ka tdak ketemu
KAMUS DATA
,|,k : nteger
ketemu :
booean
1 BEGIN
2 0
3 |N
4 ketemu fase
5 WHILE ((!ketemu) and (<=|))
6 k(+|) dv 2
7 IF (L|k| = X)
8 ketemu = true
9 ELSE
10 IF (L|k| < X)
11 |k-1
12 ELSE
13 k+1
14 ENDIF
15 ENDIF
16 ENDWHILE
17 IF(ketemu)
18 dxk+1
19 ELSE
20 dx-1
21 ENDIF
22 END
Prosedur d atas beker|a untuk pencaran data d daam
ark, dmana data terurut menurun (dar besar ke kec). |ka
na dtemukan daam ark, prosedur mengembakan na dx
(ndeks eemen ark yang nanya sama dengan na yang
dcar). |ka semua eemen ark sudah dbandngkan
dengan na yang dcar namun tdak dtemukan, prosedur
akan mengembakan na dx-1 (penanda bahwa na yang
dcar tdak dtemukan daam ark).
Contoh penggunaan agortma bner untuk eemen
terurut menurun adaah sebaga berkut:
Eemen 81 76 21 28 16 13 10 7
(terurut) 81 76 28 21 16 13 10 7
Index 0 1 2 3 4 5 6 7
Msakan na yang dcar: X=13 |umah eemen:
N=8. Dengan pencaran bner, eemen yang dgunakan
adaah eemen terurut (bars kedua). Urutan penyeesaan
persoaan n adaah sebaga berkut:
1 Prosedur meakukan nsasas peruangan (teras
pertama)
=0;
|=8;
k=(0+8) dv 2 = 4
2 Prosedur mengu| apakah L|4|=13?
Tdak. L|4|= 16 Maka prosedur peru memutuskan
apakah pencaran dan|utkan ke kr/ ke kanan.
L|4|<13? Tdak. 16 > 13. Maka prosedur
meakukan pencaran d sebeah kanan, dengan
mengubah batas men|ad k+1.
3 Prosedur meakukan nsasas peruangan (teras kedua)
=k+1=5;
|=8;
k=(5+8) dv 2 = 6
4 Prosedur mengu| apakah L|6|=13?
Tdak. L|6| = 10. Maka prosedur peru memutuskan
apakah pencaran dan|utkan ke kr/ ke kanan.
L|6|<13? Ya. 10 < 13. Maka prosedure meakukan
pencaran d sebeah kr, dengan mengubah batas |
men|ad k-1.
5 Prosedur meakukan nsasas peruangan (teras ketga)
=5;
|=k-1=5;
k=(5+5) dv 2 = 5
6 Prosedur mengu| apakah
L|5|=13?
Ya. Maka varabe ketemu= true dan prosedur
mengembakan na k=5.
Maka, daam tga teras prosedur pencaran bner dapat
menemukan na
X=16 yang dcar pada ark tersebut.
Berkut adaah konvers dar agortma pencaran bner
dengan ark terurut
menai*, ke daam bahasa C :
#ncude <stdo.h>
#defne TRUE 1
#defne
FALSE 0
typedef nt
boo;
vod BnSearch(nt L|7|,nt N,nt X,nt *dx);
vod man()
{
nt pos,arr|7| =
{0,11,23,31,43,45,65};
BnSearch(arr,7,11,&pos);
f(pos!= -1)
prntf("Ketemu d poss ke-%d",pos);
ese
}
prntf("Tdak Ketemu");
vod BnSearch(nt L|7|,nt N,nt X,nt *dx)
{
nt ,|,k;
boo ketemu;
=0;
|=N;
ketemu = FALSE;
whe ((!ketemu) && (<=|))
{
k=(+|)/2;
f (L|k|==X)
ketemu=TRUE;
ese
{
f(L|k|<X)
=k+1;
ese
}
}
|=k-1;
f (ketemu)
*dx = k+1;
ese
}
*dx =-1;
Berkut adaah konvers dar agortma pencaran bner
dengan ark terurut
menurun, ke daam bahasa C :
#ncude <stdo.h>
#defne TRUE 1
#defne
FALSE 0
typedef nt
boo;
vod BnSearch(nt L|7|,nt N, nt X,nt *dx)
vod man()
{
nt pos,arr|7| =
{45,22,16,10,6,2,0};
BnSearch(arr,7,0,&pos);
f(pos!= -1)
prntf("Ketemu d poss ke-%d",pos);
ese prntf("Tdak Ketemu");
}
vod BnSearch(nt L|7|,nt N, nt X,nt *dx)
{
nt ,|,k;
boo ketemu;
=0;
|=N;
ketemu = FALSE;
whe ((!ketemu) && (<=|))
{
k=(+|)/2;
f (L|k|==X)
ketemu=TRUE;
ese
{
f(L|k|<X)
|=k-1;
ese
}
}
=k+1;
f (ketemu)
*dx = k+1;
ese
}
*dx =-1;
&.$ Penarian 2ain
Pencaran sekuensa dan pencaran bner merupakan
agortma pencaran dasar yang termasuk ke daam keompok
pencaran daftar (list search). Terdapat pua beberapa
agortma an yang termasuk pua daam keompok pencaran
daftar, antara an:
pencaran nterpoas (interpolation search):
meakukan pencaran ebh bak darpada pencaran
bner pada ark berukuran besar dengan
dstrbus sembang, tap waktu pencarannya buruk
pencaran Grover (+ro.erAs search): meakukan
pencaran daam waktu sngkat, yang merupakan
pengembangan dar pencaran ner basa pada ark
dengan eemen tdak berurut
Sean agortma pencaran daam keompok pencaran
daftar, terdapat pua beberapa keompok agortma an.
Beberapa d antaranya adaah sebaga berkut:
Kelompo*
Algoritma
Pen2elasan dan ;ontoh
Algoritma
Pencaran tanpa
nformas
(unin*ormed search)
Agortma n mencar data tanpa ada
batasan
tpe data persoaan. Pencaran pohon
(tree search)
Agortma n mencar data dengan
bantuan
struktur pohon (ekspst maupun
mpst).
breadth-*irst search (mencar
eve dem eve)
depth-*irst search (mencar
dengan merah kedaaman pohon
terebh dahuu)
iterati.e-deepening
search depth-limited
Pencaran grafk
(graph search)
Agortma n mencar data dengan
agortma
peneurusuran grafk,
msanya )CikstraAs
algorithm KruskalAs
algorithm
nearest neighbour algorithm
Pencaran dengan
nformas
(in*ormed search)
Agortma n mencar data
dengan fungs
heurstk yang spesfk pada
persoaan tertentu.
best-*irst search
AD
|ens an Agortma pencaran
strng Agortma
genetk Agortma
minima,
#ang*uman
1. Agortma pencaran adaah agortma yang mengamb
nput berupa persoaan dan mengembakan
penyeesaan berupa penemuan na yang dcar daam
persoaan nputan.
2. Dua contoh agortma pencaran dasar adaah pencaran
sekuensa dan pencaran bner.
3. Pencaran sekuensa (seJuential search) membandngkan
setap eemen ark (array) satu persatu dengan na yang
dcar secara beruntun, mua dar eemen pertama sampa
eemen yang dcar sudah dtemukan, atau sampa seuruh
eemen sudah dperksa.
4. Pencaran bner adaah proses mencar data dengan
membag data atas dua bagan secara terus menerus
sampa eemen yang dcar sudah
dtemukan.
5. Pencaran bner mempunya prasyarat yatu data
harus terurut bak menak atau menurun.
Kuis )enar /alah
1. Agortma pencaran hanya dapat dakukan pada
sekumpuan data yang terurut menak.
2. Pencaran sekuensa membandngkan setap eemen ark
satu persatu dengan na yang dcar secara beruntun,
mua dar eemen pertama sampa eemen yang dcar
sudah dtemukan, atau sampa seuruh eemen sudah
dperksa.
3. Pencaran bner meakukan pencaran dengan membag
eemen ark ke
daam dua bagan, sehngga kemungknan keberhasan
pencaran n hanya 50%.
4. Pencaran sekuensa mensyaratkan eemen ark
durutkan terebh dahuu supaya pencaran dapat
dakukan secara beruntun.
5. Pencaran bner ebh efsen darpada pencaran
sekuensa, tap pencaran bner mengharuskan data
teah terurut.
(Untuk soa nomor 6-10) Perhatkan ark berkut n:
eemen 25 38 46 72 12 3 90
(terurut) 3 12 25 38 46 72 90
Index 0 1 2 3 4 5 6
6. Dengan memperhatkan agortma Pencaran
Sekuensa, maka pencaran sekuensa untuk X=46
dapat dseesakan daam 2 teras.
7. Pencaran bner pada eemen terurut untuk X=12
dapat dseesakan daam 2 teras.
8. Pencaran bner pada eemen terurut untuk X=90 tdak akan
menemukan
sous.
9. Pencaran sekuensa pada eemen terurut untuk
X=25 dapat dseesakan dengan |umah teras yang
sama dengan pencaran bner pada eemen terurut untuk
X=25.
10. Iteras maksma pada pencaran bner daam ark
tersebut adaah 3 teras.
Pilihan 3anda
1. Berkut n adaah pernyataan-pernyataan yang
benar tentang
pencaran sekuensa, kecua . .
K. Dapat dgunakan untuk mencar na tertentu daam
ark.
L. Meakukan pencaran secara berurutan dar
eemen pertama hngga eemen terakhr ark.
M. Meakukan pencaran dengan mengurutkan s
eemen ark terebh dahuu.
N. Meakukan pencaran dengan ebh cepat |ka na
yang dcar ada d eemen awa ark.
O. Meakukan pencaran dengan angsung
membandngkan eemen ark dengan na yang
dcar.
2. Berkut n adaah pernyataan-pernyataan yang
benar tentang
pencaran bner, kecua . .
F. Hanya dapat meakukan pencaran pada data yang
terurut.
G. Meakukan pencaran dengan membag eemen
data men|ad dua bagan dan membandngkan
eemen tengahnya dengan na yang dcar.
H. Hanya dapat meakukan pencaran pada setengah
data awa.
I. Kemungknan ebh efsen darpada pencaran
beruntun karena tdak peru membandngkan
seuruh eemen ark secara berurutan.
|. Dsebut |uga pencaran bagdua.
3. Pencaran sekuensa adaah . .
F. Pencaran yang hanya dapat dgunakan pada
eemen data yang terurut menak/ menurun.
G. Pencaran yang mencar data berurutan dar eemen
pertama hngga eemen terakhr daam ark.
H. Pencaran yang pang efsen dbandngkan
pencaran annya.
I. Pencaran yang membag eemen ark ke daam dua
bagan pada awa setap teras
|. Pencaran yang bsa |ad tdak menemukan sous
|ka data yang dcar ada daam eemen ark.
4. Perhatkan ark berkut n:
eemen 5 8 12 22 37 86 88 97
ndex 0 1 2 3 4 5 6 7
Msakan ngn dcar X=22, daam berapa ka teras-
kah pencaran sekuensa dapat menemukan data yang
dcar?
F. 1
teras G.
2 teras
H. 3
teras
I. 4 teras
|. 5 teras
5. Berdasarkan eemen ark pada soa nomor 4,
daam berapa ka teras-kah pencaran bner dapat
menemukan data X=22?
A. 1
teras B.
2 teras
C. 3
teras
D. 4 teras
E. 5 teras
6. Pada persoaan pencaran na daam sebuah ark
dengan eemen
terurut, |ka na yang dcar tdak ada daam ark,
maka pernyataan- pernyataan berkut n benar,
kecua. .
A. Pencaran berurut dapat menemukan bahwa
na yang dcar tdak ada daam ark.
B. Pencaran bner dapat menemukan bahwa na yang
dcar tdak ada daam ark.
C. Pencaran berurut memerukan |umah teras yang
ebh sedkt
dbandngkan |umah teras yang dperukan oeh
pencaran bner. D. Pencaran berurut memerukan
|umah teras yang ebh banyak dbandngkan |umah
teras yang dperukan oeh pencaran bner.
E. Phan A, B, C, D saah
7. Berkut n adaah contoh persoaan yang
memerukan agortma
pencaran, kecua . .
K. mengubah na saah satu eemen tertentu daam ark
L. menyspkan sebuah na d sebeah saah satu
eemen tertentu daam ark
M. menghapus saah satu eemen tertentu daam ark
N. mencar data dengan ndeks tertentu
O. menghtung rata2 dar seuruh eemen dar sebuah
ark
8. Perhatkan ark berkut n:
eemen 134 100 25 132 8 72 23
ndex 0 1 2 3 4 5 6 7
Msakan ngn dcar eemen kosong, daam berapa
ka teras-kah pencaran sekuensa dapat menemukan
data yang dcar?
A. 2
teras B.
3 teras
C. 4
teras
D. 5 teras
E. 6 teras
9. |ka eemen ark pada soa nomor 8 teah durutkan
menurun dan eemen kosong detakkan d akhr ark
(pada ndex nomor 7), pada teras ke berapakah
pencaran sekuensa dapat menemukan data yang
dcar?
F. 3
teras G.
4 teras
H. 6
teras
I. 7 teras
|. 8 teras
10. |ka eemen ark pada soa nomor 8 teah durutkan
menurun dan eemen kosong detakkan d akhr ark
(pada ndex nomor 7), pada teras ke berapakah
pencaran bner dapat menemukan eemen kosong?
(gunakan agortma pencaran bnary untuk data yang
terurut menurun)
F. 3
teras G.
4 teras
H. 5
teras
I. 6 teras
|. 7 teras
:atihan
1. Apakah yang dmaksud dengan pencaran?
2. Buatah prosedur pencaran sekuensa yang dapat
mengembakan na ndeks dar eemen ark yang bers
sama dengan na yang dcar!
3. |easkan perbedaan pencaran sekuensa dan pencaran
bner!
4. Buatah prosedur penyspan sebuah na d sebeah
kanan sebuah eemen tertentu daam ark!
(Untuk soa nomor 5-8) Perhatkan ark berkut n:
eemen 56 34 32 29 29 25 19 15 3
ndeks 0 1 2 3 4 5 6 7 8
5. U|ah prosedur yang Anda buat pada soa nomor 1 dengan
mengurakan angkah-angkah yang dakukan prosedur
tersebut untuk mencar X=29 pada ark d atas!
Berapakah na ndeks yang dkembakan?
6. U|ah prosedur yang Anda buat pada soa nomor 3 dengan
mengurakan angkah-angkah yang dakukan prosedur
tersebut untuk mencar X=29 pada ark d atas!
Berapakah na ndeks yang dkembakan?
7. U|ah prosedur yang Anda buat pada soa nomor 1 dengan
mengurakan angkah-angkah yang dakukan prosedur
tersebut untuk mencar X=30 pada ark d atas! Daam
berapa ka teras-kah prosedur pencaran sekuensa
dapat menemukan bahwa na yang dcar tdak ada
daam ark tersebut?
8. U|ah prosedur yang Anda buat pada soa nomor 1 dengan
mengurakan
angkah-angkah yang dakukan prosedur tersebut untuk
mencar X=30 pada ark d atas! Daam berapa ka
teras-kah prosedur pencaran bner dapat menemukan
bahwa na yang dcar tdak ada daam ark tersebut?
9. |easkan aasan pencaran bner dnyatakan sebaga
agortma pencaran yang ebh efsen dbandngkan
pencaran sekuensa!
Buatah prosedur untuk menghapus sebuah eemen tertentu d
daam ark!
Penguruta
n

+
- Pengurutan
./orting0
1verview
Serngka perancang program peru mengurutkan
sekumpuan data yang dmk untuk memudahkan
pemrosesan sean|utnya terhadap data tersebut. Pengurutan
adaah sebuah agortma dasar yang serng dperukan daam
pembuatan program. Berbaga agortma pengurutan teah
dcptakan dan dapat dgunakan. Pemahaman tentang
beberapa agortma pengurutan dasar peru dketahu,
termasuk cara penggunaannya daam program.
!u2uan
Penguruta
n
338
1. Memaham konsep
pengurutan
2. Mengena beberapa agortma
pengurutan
3. Menerapkan agortma pengurutan
daam program
-.1 Pengertian /ort
orting atau pengurutan data adaah proses yang serng
harus dakukan daam pengoahan data. Sort daam ha n
dartkan mengurutkan data yang berada daam suatu tempat
penympanan, dengan urutan tertentu bak urut menak
(ascending) dar na terkec sampa dengan na terbesar,
atau urut menurun (descending) dar na terbesar sampa
dengan na terkec. Sorting adaah proses pengurutan.
Terdapat dua macam pengurutan:
Pengurutan internal .internal sort0, yatu
pengurutan terhadap sekumpuan data yang
dsmpan daam meda nterna
komputer
yang dapat dakses setap eemennya secara
angsung. Dapat dkatakan sebaga pengurutan tabe
Pengurutan e*sternal .e8ternal sort0, yatu
pengurutan data yang
dsmpan daam memor sekunder, basanya data
bervoume besar sehngga tdak mampu untuk dmuat
semuanya daam memor.
Daam courseware n, hanya akan dbahas agortma
pengurutan nterna, dengan data berada daam arra( satu
dmens.
Agortma pengurutan nterna yang utama antara an:
1. Bubbe
Sort
2. Seecton Sort
3. Inserton Sort
4. She Sort
5. Merge Sort
6. Radx Sort
7. Ouck Sort
8. Heap Sort
Daam courseware n hanya akan dbahas tga metode sort
yang pertama yang danggap mudah, yatu: Bu--le Sort ,
Seletion Sort dan "nsertion Sort
-.2 )ubble /ort
Bubble sort adaah proses pengurutan sederhana yang
beker|a dengan cara beruang ka membandngkan dua
eemen data pada suatu saat dan
menukar eemen data yang urutannya saah. Ide dar Bubble
sort adaah geembung ar yang akan SmengapungS untuk
tabe yang terurut menak (ascending). Eemen berna kec
akan Sdiapung*anS (ke ndeks terkec), artnya dangkat ke
SatasS (ndeks terkec) meau pertukaran. Karena agortma
n meakukan pengurutan dengan cara membandngkan
eemen- eemen data satu sama an, maka bubble sort
termasuk ke daam |ens agortma comparison-based sorting.
Proses daam Bubble sort dakukan sebanyak N-1 angkah
(pass) dengan N adaah ukuran arra(. Pada akhr setap
angkah ke - I , array L|0..N| akan terdr atas du a b a g a n ,
yatu bagan yang sudah terurut L|0..I| dan bagan yang
beum terurut L|I+1..N-1|. Seteah angkah terakhr, dperoeh
arra( L|0..N-1| yang terurut menak.
0 terurut
I ID1 Blm terurut )
Untuk mendapatkan urutan yang menak, agortmanya
dapat dtus secara goba sebaga berkut :
Untuk setap pass ke - I = 0,1,...., N-2 , akukan :
Mua dar eemen | = N-1, N-2,..., I +
1, akukan : Bandngkan L||-1|
dengan L|||
Pertukarkan L||-1| dengan L||| |ka L||-1| > L|||
Rncan setap pass adaah sebaga berkut :
Pass 1: I = 0. Mua dar eemen | = N-1,N-2,.,1, bandngkan L*|-1|
dengan L|||. |ka L||-
1| > L|||, pertukarkan L||-1| dengan L|||. Pada akhr angkah 1,
eemen L|0| bers
harga mnmum pertama.
Pass 2: I = 1. Mua dar eemen | = N-1,N-2,.,2, bandngkan L*|-1|
dengan L|||. |ka L||-
1| > L|||, pertukarkan L||-1| dengan L|||. Pada akhr angkah 2,
eemen L|1| bers
harga mnmum kedua dan array L|0..1| terurut, sedangkan
L|2..(N-1)| beum terurut.
Pass 3: I = 2. Mua dar eemen | = N-1,N-2,.,3, bandngkan L*|-1|
dengan L|||. |ka L||-
1| > L|||, pertukarkan L||-1| dengan L|||. Pada akhr angkah 3,
eemen L|2| bers
harga mnmum ketga dan array L|0..2| terurut, sedangkan
L|3..(N-1)| beum terurut.
...
Pass N-1: Mua dar eemen | = N-1, bandngkan L||-1| dengan L|||.
|ka L||-1| > L|||, pertukarkan L||-1| dengan L|||.
Pada akhr angkah N-2, eemen L|N-2| bers na mnmun ke
|N-2| dan arra( L|0..N-2| terurut menak (eemen yang terssa
adaah L|N-1|, tdak peru durut karena hanya satu-satunya).
Msa arra( L dengan N = 5 buah eemen yang beum terurut.
Arra( akan durutkan secara ascending (menak).
8 9 7 6 1
Pa ss
1 R
0 1 2 3 4
I = 0 ;|= N-1= 4 8 9 + 1 6
| = 3 8 - 1 7 6
| = 2 & 1 9 7 6
| = 1 1 8 9 7 6
Has akhr angkah 1 :
1 8 9 7 6
0 1 2 3 4
Pa ss 2 R
I = 1 ;|= N-1= 4 1 8 - ( 7
| = 3 1 & ( 9 7
| = 2 1 ( 8 9 7
Has akhr angkah 2 :
1 ( 8 9 7
0 1 2 3 4
Pa ss R
I = 2 ;|= N-1= 4 1 ( & + 9
| = 3 1 ( + 8 9
Has akhr angkah 3 :
1 ( + 8 9
0 1 2 3 4
Pa ss $ R
I = 3 ;|= N-1= 4 1 ( + & -
Has akhr angkah 4 :
1 ( + & -
0 1 2 3 4
Seesa. Array L sudah terurut !!
Pseudocode prosedur agortma Bubble ort secara Ascending
1. //prosedur agortma Bubbe Sort secara Ascendng
2. //I.S:array sudah bers na nteger yang beum terurut
3. //F.S:na-na daam array terurut secara Ascendng
4. procedure v_Bubbe(input # o u tp u t A:array|0..4|of nteger,
inpu t
N:nteger)
5. K A, 9 /:
6. ,|,temp:nteger
7. A : 3 1 # I! ,AR
8. for(=0;<=(N-2);++)
9. for(|=(N-1);|>=(+1);|--)
10. if (A||-1|>A|||)
11. tempA||-1|
12. A||-1|A|||
13. A|||temp
14. endif
15. endfor
16. endfor
17.end procedure
Program engkap penerapan agortma Bubble ort daam
bahasa C
1. #ncude <stdo.h>
2. #ncude <cono.h>
3.
4. vod v_Bubbe(nt A||,nt N);
5. vod man()
6. { nt L|5|;
7. nt ,N;
8. //proses untuk memasukkan data array
9. prntf("Banyak data : ");scanf("%",&N);
10. for(=0;<N;++)
11. { prntf("Data ke-%: ",+1);
12. scanf("%",&L||); } //end oop
13. //memangg procedure bubbe sort
14. v_Bubbe(L,N);
15.
16. //proses menampkan kemba data array
17. prntf("\nData Array Terurut\n");
18. for(=0;<N;++)
19. { prntf("%3",L||); };
20. getche();
21. } //end man program
22.
23. vod v_Bubbe(nt A|5|,nt N)
24. { nt a,b,temp;
25. //proses sortr dengan bubbe sort
26. for(a=0;a<=(N-2);a++)
27. { for(b=(N-1);b>=(a+1);b--)
28. { f (A|b-1| > A|b|)
29. { temp = A|b-1|;
30. A|b-1|= A|b|;
31. A|b| = temp; } //endf
32. } //end oop |
33. } //end oop
34. } //end procedure v_Bubbe
Output yang dhaskan:
-. /election /ort
Agortma election sort memh eemen
maksmum/mnmum arra(, au menempatkan eemen
maksmum/mnmum tu pada awa atau akhr arra(
(tergantung pada urutannya ascending/descending).
Sean|utnya eemen tersebut tdak dsertakan pada proses
sean|utnya. Karena setap ka selection sort harus
membandngkan eemen-eemen data, agortma n termasuk
daam comparison-based sorting.
Sepert pada agortma Bubble ort, proses memh
na maksmum
/mnmum dakukan pada setap pass. |ka arra( berukuran N,
maka |umah
pass adaah N-1.
Terdapat dua pendekatan daam metode pengurutan dengan
election ort :
1. Algoritma pengurutan ma*simum (ma,imum
selection sort), yatu memh elemen ma*simum
sebagai basis pengurutan.
2. Algoritma pengurutan minimum (minimum
selection sort), yatu memh elemen minimum
sebagai basis pengurutan.
-..1 6a8imum Seletion Sort Asending
Untuk mendapatkan arra( yang terurut m e n a k
(ascending), agortma
ma,imum selection sort dapat dtus sebaga berkut :
1. |umah Pass = N-1
(Cumlah pass)
2. Untuk setap pass ke - I = 0,1,..., |umah pass akukan :
_ car eemen maksmum (maks) mua dar
eemen ke - I
sampa eemen ke - (N-1)
_ pertukarkan maks dengan eemen ke - I
_ kurang N dengan
satu
Rncan setap pass adaah sebaga berkut :
:ang*ah 1R Car eemen maksmum d daam L|0..(N-1)|
Pertukarkan eemen maksmum dengan
eemen L|N-1|
:ang*ah 2R Car eemen maksmum d daam L|0..N-2|
Pertukarkan eemen maksmum dengan eemen L|N-2|
:ang*ah R Car eemen maksmum d daam L|0..N-3|
Pertukarkan eemen maksmum dengan eemen L|N-3|
...
...
:ang*ah 6>1 R Tentukan eemen maksmum d
daam L|0..1| Pertukarkan eemen
maksmum dengan eemen L|0|
(eemen yang terssa adaah L|0|, tdak peru durut karena
hanya satu- satunya).
|ad , pada setap pass pengurutan terdapat proses mencar
harga maksmum dan proses pertukaran dua buah eemen
arra(.
Msa, terdapat arra( L dengan N = 5 buah eemen yang
beum terurut. Arra( akan durutkan secara A s e n d in g
(menak), dengan agortma ma8imum seletion sort.
9 7 12 6 1
' 1 2 $
Pass 1 R
_ Car eemen maksmum d daam arra( L|0..4|. Maks=L|2|=12
_ Tukar Maks dengan L|4|, dperoeh :
9 7 1 6 12
Pass
2 R
0 1 2 3 4
(berdasarkan susunan arra( pada Pass 1)
_ Car eemen maksmum d daam arra( L|0..3|. Maks=L|0|=9
_ Tukar Maks dengan L|3|, dperoeh :
6 7 1 9 12
Pass
R
0 1 2 3 4
(berdasarkan susunan arra( pada Pass 2)
_ Car eemen maksmum d daam arra( L|0..2|. Maks=L|1|=7
_ Tukar Maks dengan L|2|, dperoeh :
6 1 7 9 12
0 1 2 3 4
Pass $ R
(berdasarkan susunan arra( pada Pass 3)
_ Car eemen maksmum d daam arra( L|0..1|. Maks=L|0|=6
_ Tukar Maks dengan L|1|, dperoeh :
1 6 7 9 12
0 1 2 3 4
Seesa, array L sudah terurut secara A s c e nd in g .
Berkut n akan dberkan pseudocode procedure Ma,imum
election ort
Ascending dan pseudocode procedure untuk tukar tempat.
Pseudocode Agortma Ma,imum election ort secara
Ascending :
1. //prosedur agortma Maxmum Seecton Sort secara Ascendng
2. //I.S:array sudah bers na nteger yang beum terurut
3. //F.S:na-na daam array terurut secara Ascendng
4. procedure v_SeAsc(input#output A:array|0..4|of nteger,
input
N:nteger)
5. K A, 9 / R
6. maks,k,|,temp:nteger
7. A : 3 1 # I! ,AR
8. for(k=(N-1);k>=0;kk-1)
9. maks0;
10. // car eemen maksmum
11. for(|=0;|<=k;||+1)
12. if (A||| > A|maks|)
13. maks|;
14. endif
15. endfor
16. v_Tukar(A|k|,A|maks|) //pangg procedure v_Tukar
17. endfor
18.end procedure
Pseudocode Agortma Tukar Tempat :
1. //prosedur agortma Tukar Tempat
2. //I.S:na-na yang dkrmkan sudah terdefns sebeumnya
3. //F.S:na yang dkrmkan tertukar nanya
4. procedure v_Tukar(inpu t # o u tp u t P:nteger,
input # o u tpu t
M:nteger)
5. K A, 9 /:
6. temp:nteger
7. A : 3 1 # I !, A R
8. temp P
9. P M
10. M temp
11.endprocedure
Program engkap penerapan agortma Ma,imum election
ort Ascending
daam bahasa C
#ncude <stdo.h>
#ncude <cono.h>
vod v_SeAsc(nt A||,nt N);
vod v_Tukar(nt *P,nt *M);
man()
{ nt L|5|;
nt ,N;
//nput data array
prntf("Banyak Data: ");scanf("%",&N);
for(=0;<N;++)
{ prntf("Data ke-%: ",+1);
scanf("%",&L||); } //end oop
//memangg procedure
v_SeAsc v_SeAsc(L,N);
//menampkan kemba data
array prntf("\nData
Terurut:\n"); for(=0;<N;+
+)
{ prntf("%3",L||); } //end oop
getche();
}
vod v_SeAsc(nt A|5|,nt N)
{ nt maks,k,|,temp;
for(k=(N-1);k>=0;k--)
{ maks=0;
for(|=0;|<=k;|++)
{ f (A||| > A|maks|)
{ maks=|; } //
endf
} //end oop |
v_Tukar(&A|k|,&A|maks|);
} //end oop k
} //end procedure v_SeAsc
vod v_Tukar(nt *P,nt *M)
{ nt temp;
temp = *P;
*P = *M;
*M = temp;
} //end procedure v_Tukar
Output yang dhaskan:
-..2 6a8imum Seletion Sort Desending
Msa, terdapat arra( L dengan N = 5 buah eemen
yang beum terururt. Arra( akan durutkan secara
De s e n d in g (menurun), dengan algoritma ma8imum
seletion sort.
9 8 11 7 12
Pass
1 R
0 1 2 3 4
_ Car eemen maksmum d daam arra( L|0..4|. Maks=L|4|=12
_ Tukar Maks dengan L|0|, dperoeh :
12 8 11 7 9
Pass
2 R
0 1 2 3 4
(berdasarkan susunan arra( pada Pass 1)
_ Car eemen maksmum d daam arra( L|1..4|. Maks=L|2|=11
_ Tukar Maks dengan L|1|, dperoeh :
12 11 8 7 9
Pass
R
0 1 2 3 4
(berdasarkan susunan arra( pada
Pass 2)
_ Car eemen maksmum d daam arra( L|2..4|. Maks=L|4|=9
_ Tukar Maks dengan L|2|, dperoeh :
12 11 9 7 8
0 1 2 3 4
Pass $ R
(berdasarkan susunan arra( pada Pass 3)
_ Car eemen maksmum d daam arra( L|3..4|. Maks=L|4|=8
_ Tukar Maks dengan L|3|, dperoeh :
12 11 9 8 7
0 1 2 3 4
Seesa arra( L sudah terurut secara ) e s c e nd in g (menurun)
Pseudocode Agortma Ma,imum election ort secara
)escending :
1. //prosedur agortma Maxmum Seecton Sort secara Descendng
2. //I.S:array sudah bers na nteger yang beum terurut
3. //F.S:na-na daam array terurut secara Descendng
4. procedure v_SeDesc(input#output A:array|0..4|of nteger,
5.
K A, 9 / R
input N:nteger)
6. k,maks,|,temp:nteger
7. A : 3 1 # I! ,A:
8. for(k=0;k<=(N-2);kk+1)
9. //car eemen maksmum
10. maksk
11. for(|=(k+1);|<=(N-1);||+1)
12. if (A||| > A|maks|)
13. maks|
14. endif
15. endfor
16. tempA|k|
17. A|k|A|maks|
18. A|maks|temp
19. endfor
Program engkap penerapan agortma Ma,imum election
ort )escending
daam bahasa C
1. #ncude <stdo.h>
2. #ncude <cono.h>
3. vod v_Tukar(nt *P,nt *M);
4. vod v_SeDesc(nt A|5|,nt N);
5. man()
6. { nt L|5|;
7. nt ,k,|,maks,temp,N;
8. prntf("Banyak Data: ");scanf("%",&N);
9. //nput data array
10. prntf("Input Data Array\n");
11. for(=0;<N;++)
12. { prntf("Data ke-% = ",+1);
13. scanf("%",&L||); } //endoop
14. //pangg procedure v_SeDesc
15. v_SeDesc(L,N);
16. prntf("\nOutput Data Array Terurut:\n");
17. for(=0;<N;++)
18. { prntf(" %5",L||); } //endoop
19.
20. prntf("\nTekan Enter...\n");
21. getche();
22. } //end man program
23.
24. vod v_SeDesc(nt A|5|,nt N)
25. { nt k,maks,|,temp;
26. //proses sortng max descendng
27. for(k=0;k<=(N-2);k++)
28. { //car eemen maksmum
29. maks=k;
30. for(|=(k+1);|<=(N-1);|++)
31. { f (A||| > A|maks|)
32. maks=|; } //endfor oop |
33. v_Tukar(&A|k|,&A|maks|);
34. } //endfor oop k
35. } //end procedure v_SeDesc
36.
37. vod v_Tukar(nt *P,nt *M)
38. { nt temp;
39. temp = *P;
40. *P = *M;
41. *M = temp;
42. } //end procedure v_Tukar
Output yang dhaskan:
-.. 6inimum Seletion Sort Asending
Untuk mendapatkan arra( yang terurut m e n a k
(ascending), agortma mnmum selection sort dapat dtus
sebaga berkut :
1. |umah Pass = N-1
(Cumlah pass)
2. Untuk setap pass ke - I = 0,1,..., N-1, akukan :
a. car eemen mnmum (min) mua dar
eemen ke - I
sampa eemen ke -
(N-1)
b. pertukarkan min dengan eemen ke - I
Rncan setap pass adaah sebaga berkut :
:ang*ah 1R Car eemen mnmum d daam L|0..(N-
1)| Pertukarkan eemen terkec dengan
eemen L|0|
:ang*ah 2R Car eemen mnmum d daam L|1..(N-
1)| Pertukarkan eemen terkec dengan
eemen L|1|
:ang*ah R Car eemen mnmum d daam L|2..(N-
1)| Pertukarkan eemen terkec dengan
eemen L|2|
......
:ang*ah 6>1R Tentukan eemen mnmum d daam
L|(N-2)..(N-1)| Pertukarkan eemen
terkec dengan eemen L|N-2|
(eemen yang terssa adaah L|N-1|, tdak peru durut karena hanya satu-
satunya).
|ad, pada setap pass pengurutan terdapat proses mencar
harga mnmum dan proses pertukaran dua buah eemen
arra(.
Msa, terdapat arra( L dengan N = 5 buah eemen yang
beum terururt. Arra( akan durutkan secara A s c e nd in g
(menak), dengan algoritma minimum seletion sort.
9 7 12 6 1
0 1 2 3 4
Pass 1 R
_ Car eemen terkec d daam arra( L|0..4|. Mn=L|4|=1
_ Tukar Mn dengan L|0|, dperoeh :
1 7 12 6 9
0 1 2 3 4
Pass 2 R
(berdasarkan susunan arra( pada Pass 1)
_ Car eemen terkec d daam arra( L|1..4|. Mn=L|3|=6
_ Tukar Mn dengan L|1|, dperoeh :
1 6 12 7 9
0 1 2 3 4
Pass
R
(berdasarkan susunan arra( pada Pass 2)
_ Car eemen terkec d daam arra( L|2..4|. Mn=L|3|=7
_ Tukar Mn dengan L|2|, dperoeh :
1 6 7 12 9
Pass
$ R
0 1 2 3 4
(berdasarkan susunan arra( pada Pass 3)
_ Car eemen terkec d daam arra( L|3..4|. Mn=L|4|=9
_ Tukar Mn dengan L|3|, dperoeh :
1 6 7 9 12
0 1 2 3 4
Seesa, array L sudah terurut secara A s c e nd in g .
Pseudocode Agortma Minimum election ort secara
Ascending :
1. //prosedur agortma Mnmum Seecton Sort secara Ascendng
2. //I.S:array sudah bers na nteger yang beum terurut
3. //F.S:na-na daam array terurut secara Ascendng
4. procedure v_mnAsc(input #ou tpu t A:array|0..4|of nteger,
inpu t
N:nteger)
5. K A, 9 /:
6. k,mn,|,temp:nteger
7. A : 3 1 # I! ,A:
8. for(k=0;k<=(N-2);kk+1)
9. //car eemen terkec
10. mn k
11. for(|=(k+1);|<=(N-1);||+1)
12. if (A||| < A|mn|)
13. mn |
14. endif
15. endfor
16. v_Tukar(A|k|,A|mn|)
17.endfor
Program engkap penerapan agortma Minimum election
ort Ascending
daam bahasa C
1. #ncude <stdo.h>
2. #ncude <cono.h>
3. vod v_mnAsc(nt A|5|,nt N);
4. vod v_Tukar(nt *P,nt *M);
5. man()
6. { nt L|5|;
7. nt ,|,k,mn,temp,N;
8. //nput data array
9. prntf("Input Data Array\n");
10. prntf("\nBanyak Data : "); scanf("%",&N);
11. for(=0;<N;++)
12. { prntf(" Data ke-% = ",+1);
13. scanf("%",&L||); } //end oop
14. //pangg procedure v_mnAsc
15. v_mnAsc(L,N);
16. //output data array
17. prntf("\n Data Sortr:\n");
18. for(=0;<N;++)
19. { prntf(" %5",L||); } //end oop
20. prntf("\n Tekan Enter\n");
21. getche();
22. } //end man program
23.
24. vod v_mnAsc(nt A|5|,nt N)
25. { nt k,mn,|,temp;
26. //proses mnmum ascendng seecton sort
27. for(k=0;k<=(N-2);k++)
28. { mn = k;
29. for(|=(k+1);|<=(N-1);|++)
30. { f (A||| < A|mn|)
31. mn = |; } //endoop |
32. v_Tukar(&A|k|,&A|mn|); } //end oop k
33. } //end procedure
34.
35. vod v_Tukar(nt *P,nt *M)
36. { nt temp;
37. temp = *P;
38. *P = *M;
39. *M = temp;
40. } //end procedure v_Tukar
Output yang dhaskanR
-..$ 6inimum Seletion Sort Desending
Msa, terdapat arra( L dengan N = 5 buah eemen
yang beum terururt. Arra( akan durutkan secara
De s e n d in g (menurun), dengan algoritma minimum
seletion sort.
9 8 11 7 12
0 1 2 3 4
Pass 1 R
_ Car eemen terkec d daam array L|0..4|. Mn=L|3|=7
_ Tukar Mn dengan L|4|, dperoeh :
9 8 11 12 7
Pass
2 R
0 1 2 3 4
(berdasarkan susunan array pada Pass 1)
_ Car eemen terkec d daam array L|0..3|. Mn=L|1|=8
_ Tukar Mn dengan L|3|, dperoeh :
9 12 11 8 7
Pass
R
0 1 2 3 4
(berdasarkan susunan array pada Pass 2)
_ Car eemen terkec d daam array L|0..2|. Mn=L|0|=9
_ Tukar Mn dengan L|2|, dperoeh :
11 12 9 8 7
Pass
$ R
0 1 2 3 4
(berdasarkan susunan array pada Pass 3)
_ Car eemen terkec d daam array L|0..1|. Mn=L|0|=11
_ Tukar Mn dengan L|1|, dperoeh :
12 11 9 8 7
0 1 2 3 4
Seesa arra( L sudah terurut secara ) e s c e nd in g (menurun)
Pseudocode Agortma Minimum election ort secara
)escending :
1. //prosedur agortma Mnmum Seecton Sort secara Descendng
2. //I.S:array sudah bers na nteger yang beum terurut
3. //F.S:na-na daam array terurut secara Descendng
4. procedure v_mnDesc(input #ou t pu t A:array|0..4|of nteger,
inpu t N:nteger)
5. K A, 9 /:
6. k,|,temp,mn : nteger
7. A : 3 1 # I! ,A:
8. //mnmum seecton sort descendng
9. for(k=(N-1);k>=1;kk-1)
10. mn0
11. //car na terkec
12. for(|=0;|<=k;||+1)
13. if (A||| < A|mn|)
14. mn|
15. endif
16. endfor
17. v_Tukar(A|k|,A|mn|)
20. endfor
Program engkap penerapan agortma Minimum election
ort )escending
daam bahasa C
1. #ncude <stdo.h>
2. #ncude <cono.h>
3. vod v_mnDesc(nt A|5|,nt N);
4. vod v_Tukar(nt *P,nt *M);
5. man()
6. { nt L|5|;
7. nt ,N;
8. //nput data array
9. prntf("Input Data Array\n");
10. prntf("\nBanyak Data : ");scanf("%",&N);
11. for(=0;<N;++)
12. { prntf(" Data ke-% = ",+1);
13. scanf("%",&L||); } //endoop
14. //pangg procedure v_mnDesc
15. v_mnDesc(L,N);
16. //output data array
17. prntf("\n Data Sortr:\n");
18. for(=0;<N;++)
19. { prntf(" %5",L||); } //endoop
20. prntf("\n Tekan Enter...\n");
21. getche();
22. } //end man program
23.
24. vod v_mnDesc(nt A|5|,nt N)
25. { nt k,|,temp,mn;
26. //mnmum seecton sort descendng
27. for(k=(N-1);k>=1;k--)
28. { mn = 0;
29. for(|=0;|<=k;|++)
30. { f (A||| < A|mn|)
31. mn=|; } //endoop |
32. v_Tukar(&A|k|,&A|mn|); } //endoop k
33. } //end procedure v_mnDesc
34.
35. vod v_Tukar(nt *P,nt *M)
36. { nt temp;
37. temp = *P;
38. *P = *M;
39. *M = temp;
40. } //end procedure v_Tukar
Output yang dhaskan:
-.$ Insertion /ort
#nsertion sort adaah sebuah agortma pengurutan yang
membandngkan dua eemen data pertama, mengurutkannya,
kemudan mengecek eemen data berkutnya satu persatu
dan membandngkannya dengan eemen data yang teah
durutkan. Karena agortma n beker|a dengan
membandngkan eemen-eemen data yang akan
durutkan, agortma n termasuk pua daam comparison-
based sort.
Ide dasar dar agortma #nsertion ort n adaah
mencar tempat yang "tepat" untuk setap eemen array,
dengan cara seJuential search. Proses n kemudan
menyspkan sebuah eemen array yang dproses ke
tempatnya yang seharusnya. Proses dakukan sebanyak N-1
tahapan (daam sorting dsebut sebaga "pass"), dengan
ndeks dmua dar 0.
Proses pengurutan dengan menggunakan agortma
#nsertion ort dakukan dengan cara membandngkan data
ke- (dmana dmua dar data ke-2 sampa dengan data
terakhr) dengan data berkutnya. |ka dtemukan data yang
ebh kec maka data tersebut dsspkan ke depan sesua
dengan poss yang seharusnya.
Msa terdapat arra( satu dmens L, yang terdr dar 7
eemen arra( (n=7). Array L sudah bers data sepert
dbawah n dan akan durutkan secara ascending dengan
agortma #nsertion ort.
L||
0 1 2 3 4 5 6
Tahapan #nsertion ort:
1. Dmua dar L|1| : Smpan na L|1| ke varabe X.
(Pass>1) Geser masng-masng satu angkah
ke kanan semua na yang ada
dsebeah kr L|1| satu persatu
apaba na tersebut ebh besar dar X.
Seteah tu insert-kan (sspkan) X d
bekas tempat na yang terakhr dgeser.
2. Dan|utkan ke L|2|: Smpan na L|2| ke varabe X
(Pass-2) Geser masng-masng satu angkah
ke kanan semua na yang ada
dsebeah kr L|2| satu persatu
apaba na tersebut ebh besar dar X.
Seteah tu insert-kan (sspkan) X d
bekas tempat na yang terakhr d
geser.
3. Demkan seterusnya untuk L|3|, L|4|,L|5|, dan terakhr
L|6| ba n = 7.
Sehngga untuk n = 7 ada 6 pass proses
pengurutan. Berkut ustras dar 6 pass
tersebut:
Data awa:
0 1 2 3 4 5 6
Pass>1: 10
0 1 2 3 4 5 6 X
Pass 1 dmua dar koom L|1|, X=L|1|=10
15 ebh besar dar 10, maka geser 15 ke kanan.
Proses seesa karena sudah sampa koom 1.
Kemudan nsert X menggantkan
15.
15 10 7 22 17 5 12
15 10 7 22 17 5 12
15 10 7 22 17 5 12
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
Has Pass
1:
0 1 2 3 4 5 6
Pass>
2:
7
0 1 2 3 4 5 6 X
Pass 2 dmua dar L|2|,
X=L|2|=7.
15 ebh besar dar 7, maka geser 15 ke kanan.
10 ebh besar dar 7, maka geser 10 ke kanan.
Proses seesa karena sudah sampa koom 1.
Kemudan nsert X menggantkan 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
Has Pass
2:
Pass>
:
0 1 2 3 4 5 6
22
0 1 2 3 4 5 6 X
Pass 3 dmua dar L|3|, X=L|3|=22.
15 tdak ebh besar dar 22, maka proses
seesa. Kemudan nsert X menggantkan 22.
Proses beran|ut sampa Pass 6. Has tap pass dapat
dgambarkan sebaga berkut:
10 15 7 22 17 5 12
10 15 7 22 17 5 12
7 10 15 22 17 5 12
7 10 15 22 17 5 12
Data
awa:
0 1 2 3 4 5 6
Pass 1:
15 10 7 22 17 5 12
10 15 7 22 17 5 12
0 1 2 3 4 5 6
Pass
2:
0 1 2 3 4 5 6
Pass
3:
0 1 2 3 4 5 6
Pass
4:
0 1 2 3 4 5 6
Pass
5:
0 1 2 3 4 5 6
Pass
6:
0 1 2 3 4 5 6
Seesa arra( L sudah terurut secara A s c e nd in g (menak)
Pseudocode Agortma #nsertion ort secara Ascending :
1. //prosedur agortma Inserton Sort secara Ascendng
2. //I.S:array sudah bers na nteger yang beum terurut
3. //F.S:na-na daam array terurut secara Ascendng
4. procedure v_nAsc(input #out p u t A:array|0..6|of nteger,
inpu t N:nteger)
5. K A, 9 /:
6. k,X,:nteger
7. A : 3 1 # I! ,A:
8. //nserton sort ascendng
9. k1
10. while(k<=N-1)
11. k
12. XA||
13. while(>=1 && A|-1|>X)
14. A||A|-1|
15. -1
7 10 15 22 17 5 12
7 10 15 22 17 5 12
7 10 15 17 22 5 12
5 7 10 15 17 22 12
5 7 10 12 15 17 22
16. endwhile
17. A||X
18. kk+1
19. endwhile
Program engkap penerapan agortma #nsertion ort
Ascending daam bahasa C
#ncude <stdo.h>
#ncude <cono.h>
man()
{ nt L|7|;
nt ,N;
vod v_nsertAsc(nt A|7|,nt N);
//nput data array prntf("Input
Data Array\n"); prntf("\nBanyak
Data: "); scanf("%",&N);
for(=0;<N;++)
{ prntf("Na ke-% = ",+1);
scanf("%",&L||); } //end oop
//pangg procedure
v_nAsc v_nsAsc(L,N);
//output data array
prntf("Data
terurut:\n");
for(=0;<N;++)
{ prntf("%5",L||); } //end oop
prntf("\nTekan Enter...\n");
getche();
}
void v_nsAsc(nt A|7|,nt N)
{ nt k,X,;
//nserton sort
ascendng k=1;
whe(k<=N-1)
{ =k;
X=A|
|;
whe(>=1 && A|-1|>X)
{ A||=A|-1|;
--; } //endwhe
A||=X;
k++; } //endwhe
} //end procedure
Output yang dhaskan:
#ang*uman
1. Proses Sorting merupakan proses mengurutkan data
yang berada daam suatu tempat penympanan, dengan
urutan tertentu bak urut menak (ascending) dar na
terkec sampa dengan na terbesar, atau urut menurun
(descending) dar na terbesar sampa dengan na
terkec
2. Terdapat dua macam proses pengurutan, yatu
pengurutan nterna
(internal sort) dan pengurutan eksterna (e,ternal sort).
3. Bubble sort adaah proses pengurutan sederhana yang
beker|a dengan cara beruang ka membandngkan dua
eemen data pada suatu saat dan menukar eemen data
yang urutannya saah.
4. Agortma election sort memh eemen
maksmum/mnmum arra(, au menempatkan eemen
maksmum/mnmum tu pada awa atau akhr arra(
(tergantung pada urutannya ascending/descending).
5. Agortma #nsertion ort, mencar tempat yang "tepat"
untuk setap eemen array, dengan cara seJuential
search. Proses n kemudan menyspkan sebuah eemen
array yang dproses ke tempatnya yang seharusnya.
Pilihan 3anda
Petunjuk4 Pilihlah jawa-an yang paling tepat5
1. Usaha untuk mengurutkan kumpuan-kumpuan data
daam suatu arra(
dsebut:
A. Searchng C. Sortng
B. Dvde D. Conquer
2. Berkut n adaah metode yang dgunakan pada teknk
sorting, keuali: A. Bubbe C. Fbonacc
B. Heap D. Radx
3.
Data 4 0 8 2, durutkan secara ascending (dar kec
ke besar) dengan metode bubble sort. Has urutan data
pass satu (tahap satu) adaah:
A. 0 4 2 8 C. 0 8 2 4
B. 0 4 8 2 D. 0 2 4 8
Pada data 0 6 3 2 4, akan dakukan ma,imum
selection sort secara
4. ascending, maka pada angkah pertama, urutan data
yang ter|ad adaah:
A. 0 2 6 3 4 C. 0 4 3 2 6
B. 0 2 3 4 6 D. 0 3 6 2 4
5. Pengurutan adaah proses
untuk: A. mencar eemen
sebuah st
B. mengecek harga eemen tertentu
C. pengaturan kemba eemen kedaam urutan tertentu
D. menyederhanakan persoaan dengan cara memecah
ke persoaan yang
ebh
kec
:atihan
1. Msa terdapat record mahasswa
sebaga berkut :
- nm mahasswa (tpe data nteger)
- nama mahasswa (tpe data strng, pan|ang max 15
char)
- tahun ahr (tpe nteger)
- umur (tpe rea)
Buat agortma dengan menggunakan procedure
berparameter untuk menampkan kemba data mahasswa
yang terurut berdasarkan tahun ahr. Asumskan terdapat
5 mahasswa.
2. PT. MURAH HATI member koms saesmannya
berdasarkan ketentuan sebaga berkut :
v Ba saesman berhas men|ua barang seharga
Rp 500.000,-
maka da akan mendapat koms sebesar 10 %.
v Ba ebh dar Rp 500.000,-, untuk Rp
500.000,- pertama komsnya 10 %, sedangkan
ssanya mendapat 15 %.
Ba perusahaan tersebut memk 5 orang saesman,
rancangah agortma untuk menentukan koms yang
dterma oeh setiap saesmannya, serta total komisi
yang teah dbayarkan oeh PT. MURAH HATI kepada ke 5
saesman tad serta tota pen|uaan yang berhas dakukan
para saesman.
Adapun spesfkas dar agortma
adaah:
a. Agortma harus menggunakan procedure
atau *unction
b e r p ar a m ete r .
b. Output yang dngnkan adaah memuncukan data
karyawan (nama karyawan, besar pen|uaan, serta
koms) yang te r u r ut sec a r a d e s e n d in g
berdasar*an besar pen2ualan.
c. Output yang
dngnkan:
LA P O R AN KOM I SI KAR Y A W AN
NO NAMA PEN|UALAN KOMISI
1.
:
5.
-------------------------------------------------------------------------------
-------------- Tota 99999 99999
Algoritma dan
Pemrograman
d e s anmu t m e d a.b o g s po t. c om/
Daftar Pusta*a
1. Agorthm Data Structures and Probem Sovng wth
C++. 1997.
Addson Wesey.
2. Moh. S|ukan, Agortma dan Struktur Data. Mtra Wacana
Meda
3. Inggran Lem, Dktat Catatan Sngkat Bahasa C Agustus
2003. ITB
4. Inggran Lem, Dktat Kuah Dasar Pemrograman Apr
2007. ITB
5. Rnad Munr, Agortma dan Pemrograman. Informatka
Bandung
6. Schaum, Programmng wth C++ 2
nd
. 2000. McGraw-H
7. Schaum. Teach yoursef C++ n 21 days. 2007. McGraw-
H
8 . h tt p :// www. c s . aa u . d k /- no r ma r k /p r o g 3 -
03/h t m /no t e s /p a r a d g m s _ t h em e s -p a r a d g m s . h t m akses
pada 18 |u
2009 14.00
9 . h tt p :// e nc y c op e d a . t h ef r e e d c t on a r y. co m /P r o g r amm n g
% 20p a r a d g m akses pada 18 |u 2009 14.00

Anda mungkin juga menyukai