Anda di halaman 1dari 70

CRITICAL BOOK REVIEW

MK ALGORITMA DAN
PEMROGRAMAN DASAR
CRITICAL BOOK REVIEW
PRODI S1 PTIK

“Tipe, Operator, dan Ekspresi” FT

DISUSUN OLEH:
ANWAR ALIMUDA LUBIS
ADNAN KASHOGI NASUTION
A.RAHMAN RANGKUTI

Dosen Pengampu:

Amirhud Dalimunthe, S.T.,M.Kom.

PENDIDIKAN TEKNOLOGI INFORMATIKA DAN KOMPUTER

UNIVERSITAS NEGERI MEDAN

TAHUN 2017

i
KATA PENGANTAR

Puji syukur atas kehadiran Tuhan Yang Maha Esa karena hikmah dan kuasaNya sehingga dapat
menyelesaikan Critikal Book Review yang berjudul “Algoritma”. Atas dukungan moral dan materi
yang di berikan dalam penyususnan Critical Book Review ini, maka kami mengucapkan
terimakasih kepada bapak Amirhud Dalimunthe S.T,M.Kom

Critical Book Review ini kami susun dengan maksimal dan mendapat bantuan dari berbagai
pihak sehingga dapat memperlancar pembuatan CBR ini. Dalam penyususnan CBR ini, kami
menyadari sepenuhnya bahwa CBR ini masih jauh dari kata sempurna sebab kemampuan dan
pengalaman yang kami miliki masih sangat terbatas.

Demikan akhr kata dari kami , kami beraharap semoga CBR saya yang berjudul “Algoritma”ini
dapat memberi manfaaat maupun inspirasi terhadap pembaca.

Medan, Desemberr 2017

Kelompok 10

ii
DAFTAR ISI

Contents

KATA PENGANTAR ............................................................................................................................. ii

DAFTAR ISI .......................................................................................................................................... iii

BAB I ....................................................................................................................................................... 1

PENDAHULUAN ................................................................................................................................... 1

1.1 Latar Belakang Masalah .............................................................................................................. 1

1.2 Rumusan Masalah ........................................................................................................................ 1

1.3 Tujuan Masalah............................................................................................................................ 2

BAB II ..................................................................................................................................................... 3

PEMBAHASAN ...................................................................................................................................... 3

RINGKASAN ISI BUKU ..................................................................... Error! Bookmark not defined.

iii
ii
BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Bahasa pemprograman, merupakan adalah suatu komando atau perintah yang dibuat
manusia untuk membuat komputer menjadi memiliki fungsi tertentu. Pemograman dalam
struktur data ada beberapa macam. Salah satunya adalah pemograman C++. Bahasa
pemrograman ini adalah suatu susunan aturan penulisan (sintaks) yang membentuk kode kode
yang kemudian akan diterjemahkan oleh program kompiler menjadi bahasa rakitan (assembly)
dan terus diolah hingga dimengerti oleh mesin. Komputer hanya mengerti bahasa mesin.

Bagi pemula, belajar bahasa pemprograman memang sulit, namun bukan berarti itu
penghalang bagi kita untuk enggan belajar. Di Fakultas Informatika yang notabene khusus
mempelajari ilmu-ilmu komputer sekalipun, tidak semua mahasiswanya pandai dalam bahasa
pemrograman tertentu.Hal itu dikarenakan tidak semua orang mempunyai pemikiran dan
kreativitas yang sama sehingga daya nalar terhadap sebuah bahasa pemrograman didapatkan
hasil yang berbeda-beda untuk setiap orang. Perlu anda ketahui bahwa Program yang ditulis
dengan menggunakan bahasa pascal mempunyai ciri yang terstruktur sehingga mudah dipahami
maupun dikembangkan oleh pemogram.

Pada suatu bahasa pemrograman umumnya telah menyediakan tipe – tipe data yang
sederhana ( simple ) maupun yang terstruktu. Termasuk di bahasa pascal

1.2 Rumusan Masalah

1. Apa yang dimaksud dengan tipe data dan operator?


2. Apa saja jenis tipe – tipe data ?
3. Apa saja yang dianalisis dalam Kasus pemilihan?
4. Apa saja contoh dari kasus pemilihan?

1
1.3 Tujuan Masalah

1. Untuk mengetahui pengertian data dan operator.


2. Untuk mengetahui jenis tipe- tipe data
3. Untuk mengetahui kasus dalam pemilihan.
4. Untuk mengetahui contoh dari kasus pemilihan.

2
BAB II

PEMBAHASAN

Tipe, Operator, dan Ekspresi


Bagian yang dikerjakan oleh Anwar alimuda lubis

Peubah (variable) dan konstanta (constant) adalah objek data dasar yang dimanipulasi di dalam
program. Deklaras.i daftar peubah digunakan untuk menyatakan tipe peubah.
 Tipe sebuah objek menentukan himpunan nilai yang dapat dimiliklnya dan operasi yang dapat
dilakukan pada objek tersebut. Nilal·nilai yang dicakup oleh tipe terse but dinyatakan di dalam
ranah (domain) nilal
Tipe data dapat dlkelompokkan meajadl atas dua macam: tipe dasar adalah ripe yang dapat
langsung dipakai,sedangkan ripe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lain
yang sudah didefinisikan sebelumnya.

4.1 Tipe Dasar


Dalam dunia pemrograman, yang termasuk ke dalam tipe dasar adalah: bilangan lojik, bilangan
bulat, karakter, bilangan riil, dan string. Tiga tipe dasar yang pertama disebut juga tipe ordinal
karena setiap konstanta nllainya dapat ditransfonnasi ke suatu nilai integer.

4. 1. 1 Bilangan Lojik

 NamaTipe

Nama tipe bilangan lojik adalah boolean (diambil dari nama seorang matematikawan lnggris,
George Boole).

 Ranah Nilai

3
Bilangan lojik banya mengenal dua buab nilai: benar (true) atau salab (false). 1stilah "bilangan"
pada "bilangan lojik" dikarenakan kita dapat menyatakan "benar" dengan angka 1 dan "salah"
dengan angka o (atau sebaliknya, bergantung konvensi yang kita buat).

 Konstanta
Karena ranah nilai tipe boolean hanya beranggotakan dua buab nllal, maka konstanta (constant)
yang terdapat pada tipe inl adalah true dan false

 Operasi
Operasi-operasi yang dapat dilakukan terbadap tipe boolean dikenal dengan operui logika atau
operul boolean. Operasi Jogika menghasilkan nllal true atau false. Operator logika yang umum
digunakan untuk operasi logikaadalab: not, and, or, dan xor.
Jika a dan b adalah peubab (variable) yang bertipe boolean, maka basil operasi a dan b dengan
keempat operator boolean tersebut dlberikan oleh masing-masing tabel (yang disebut tabel
kebenaran - truth table) berikut:
a Not a
True False
false True

a b A dan b A or b A xor b
True True True True False
True False False True True
False True False True True
False False False False False

Contoh operasi logika: misalkan X, Y, clan Z adalah peubah bertipe boolean, X bemilai true, Y
bemilai false, dan Z bemilai true. maka:
Operasi logika Hasil
(x and y) or z True
X and (y or z) True
4
Not (x and z) False
(y xor z) and y False

4. 1. 2 Bilangan Bulat
 Nama tipe
Nama tipe bilangan bulat adalah integer.
 RanahNilai
Rentang nilainya adalah dari minus tidak terhingga sampai plus tidak berhingga. Tetapi, di
dalam komputer tipe integer mempunyai ranah nilai yang terbatas. Ranah nilai tipe integer
pemrograman bergantung pada mesin (komputer) dan kompilator yang digunakan. Pada
kompilator Pascal yang d!gunakan pada komputer 16-bit, rentang nilai integer 16-bit adalah dari
-32768 sampal +32767. Kompilator lni menyediakan empat macam tipe untuk integer, yaitu byte,
shortint, word, Integer, dan longint. Rentang nilai untuk kelima tipe tersebut adalah:
Tipe Rentang nilai Format
Byte 0..255 Unsigned 8–bit
Shotint -128..127 Signed 8-bit
Word 0..65335 Unsigned 16-bit
Integer -32768..32767 Signed 16-bit
Longint -2147483648.. 2147483647 Signed 16 bit

Dalam bahasa C, hanya ada dua macam tipe untuk integer yaltu char dan int. Tipe char
berukuran 1 byte, sedangkan int adalah tipe integer yang secara tipikal mencermirkan ukuran alami
dari integer pada kebanyakan mesin. Qualifier yang dapat diterapkan pada tipe int, yaitu short dan
long. Qualifier short dan long mernberikan panjang yang berbeda pada tipe int; int normalnya
berukuran yang natural pada mesin tertentu. shore: umumnya 16-bit, long 32 bit, dan int salah satu
dari 16-bit atau 32-bit. Short dan int paling sedildt 16-bit, long paling sedikit 32-bit, short tidak
lebih panjang dari int, dan int tidak lebih panjang dari long. Qualifier signed menyebabkan nilai
integer yang d.lpakai dapat bertanda negatif, sedangkan unaigned menyebabkan nilai integer

5
selalu positif atau nol [KERSS]. Ekivalensi antara tipe integer di dalam kompilator Turbo Pascal
dan kompilator Turbo C dinyatakan dalam tabel berikut:

Pascal Rentang Nilai C


Byte 0..255 Unsigned char
Shotint -128..127 Signed char
Word 0..65335 Unsigned int
Integer -32768..32767 Int, short int
Longint -2147483648.. 2147483647 Long int

Sebagai contoh, misalkan dua buah peubah X dan Y masing-masing dideklarasikan bertipe byte
dan integer dalam bahasa Pascal:
var
X : byte ;
Y : integer;
Dengan mendeklarasikan X bertipe byte sedangkan Y bertipe integer, maka peubah X tidak
dapat dioperasikan untuk nilai-nilai di atas 255 atau di bawah o. Begitu juga peubah Y tidak dapat
manampung nilai di atas 32767. Pemilihan implementasi bllangan bulat ke dalam tipe-tipe integer
yang berbeda lebih disebabkan pada faktor penghematan memori. Sebagai contoh, tipe word
hanya membutuhkan 2 byte memori, sedangkan integer membutuhkan 4 byte memori.
Tipe bilangan bulat adalah tipe yang memiliki keterurutan. Artinya bila sebuah nilai bilangan
bulat diketahui, nilai sebelumnya (predecessor) dan nilai sesudahnya (successor) dapat dltentukan.
Contohnya, predecessor dari S adalah 7, sedangkan succesor-nya adalah 9. Secara formal
keterurutan itu didefinisikan sebagai berikut: jika a adalah peubah bertipe bilangan bulat, maka
predecessor(a) =a - 1, dan successor(a) =a+ 1.
 Konstanta
Konstanta nilai bertipe bilangan bulat harus ditulis tanpa mengandung titik desimal. Contoh
beberapa konstanta bertipe bilangan bulat misa)nya:
78 -14 7654 0 5 9999
 Operasi

6
Operasi yang dilakukan terhadap bilangan bulat ada dua macam, yaitu :
a. Operasi Aritmetika
Operator aritmetika yang didefinlsikan pada bilangan bulat adalah:
+ (tambah)
- (kurang)
* (kali)
Div (bagi)
Mod (sisa hasil bagi)
Contoh-contoh operasi aritmetika bilangan bulat beserta hasil operasinya:
3 + 10 ( hasil = 13 )
67 - l1 ( hasil = 56 )
5*10 ( hasil = 50 )
10 div 3 ( hasil = 3)
10 mod 3 ( hasil = 1)
20 div 5 ( hasil = 4)
20 mod 5 ( hasil = 0)

b. Operasi Perbandingan
Operator perbandingan untuk bilangan bulat adalah:
< ( lebih kecil )
≤ ( lebih kecil atausama dengan )
> ( lebih besar )
≥ ( lebih besar atau sama dengan )
= ( sama dengan )
≠ ( tidak sama dengan )
Contoh operasi perbandingan:
3<8 ( true )
74 > 101 ( false )
9≤9 ( true )
9<9 ( false )
17 = 17 ( true )
(24 div 3) ≠ 8 ( false )

7
4.1.3 Bilangan Rill
Bllangan rill adalah bllangan yang mengandung pecahan desimal, misalnya 3.65, 0.0003, 29.0,
2:6o240000E-6, .24, clan lain-lain. Semua konstanta bilangan ril harus mengangandung ”." (tilik).
Konstanta "18" dlanggap sebagal bilangan bulat, tetapi "18.0" dlanggap sebagai bilangan rill.
1. Nama tipe
Nama tipe bilangan bulat adalah real (beberapa literatur menyebutnya floating-point)
2. Ranah Nilai
Sebagaimana halnya pada tipe bilangan bulat, secara teoritis tlpe bilaogan rill memilild ranah
nilai yang tidak terbatas. Rentang oilainya adalah dari minus tidak hingga sampai plus tidak
hingga.
Tipe real mempunyal rentang nilal yang terbatas, bergantung pada processor dan kompllator
yang dlgunakan. Di dalam kompilator Pascal mlsalnya, tlpe real dapat dlrepresentaslkan ke
dalam empat macam tipe, yaltu real, single, double, dan extended. Rentang nilai posltif untuk
keempat tipe tersebut adalah:
Tipe Rentang Nilai Format
Real 2.9 * 10-19..1.7 * 1039 6 byte
Single 1.5 * 1045..3.4 * 1034 4 byte
Double 5.0 * 10-224..1.7 * 10308 8 byte
Extended 3.4 * 10-4033..1.1 * 104022 10 byte
Di dalam bahasa C, hanya ada dua tipe untuk bilangan riil, yaitu float adalah bilangan riil
berpresisi tunggal (single-precision) dan double adalah bilangan rill berpresisi ganda (double-
precision). Qualifier long dapat dlgunakan untuk menghasilkan ukuran tipe bilangan riil yang
berbeda; long double menspesifikasikan tipe bilangan riil yang berpresisi-extended.
3. Konstanta

8
Setiap konstanta yang bertipe bllangan rill harus ditulis dengan tanda titik desimal.Contoh
konstanta bertipe bilangan riil misalnya :
0.78 14.2376 7.65400+E8 0.0 -5 99.0

4. Operasi
a. Operasi Aritmatika
Operator aritmetika yang berlaku pada bilangan riil adalah:
+ (tambah)
- (kurang)
* (kali)
/ (bagi)
Contoh - contoh operasi aritmetika bilangan rill:
6.4 + 5.7 (hasil : 12.1)
8.0 – 2.8 (hasil : 5.2)
10.0/3.0 (hasil : 3.333...)
10/2.5 (hasil : 4.0 operasi bilangan campuran)
7.2 *0.5 (hasil : 3.6)

b. Operasi Perbandingan
Operator perbandingan untuk bilangan rill adalah:
< ( lebih kecil )
≤ ( lebih kecil atausama dengan )
> ( lebih besar )
≥ ( lebih besar atau sama dengan )
= ( sama dengan )
≠ ( tidak sama dengan )
Contoh-contoh operasi perbandingan :
0.003 < 0.3 ( hasil: false )
8.0 ≥ 5 ( hasil: true )

9
3.0 ≠ 3.5 ( hasil: true )

4.1.4 Karakter
Yang termasuk ke dalam karakter adalah semua huruf abjad, semua tanda baca, angka 'o', '1', ...
, '9', dan karakter-karakter khusus sepertl '&', '^', '%', '#', '@', dan sebagainya. Karakter kosong
(null) adalah karakter yang panjangnya nol, dan dilambangkan dengan ",
 Nama Tipe
Nama tipe untuk karakter adalah char.
 Ranah Nilai
Ranah karakter adalah semua huruf di dalam alfabet ('a' . .'z', 'A' . .'Z'), angka desimal (0 .. 9),
tanda baca ('.',':',!','?','.', dan lain – lain) operator aritmetik ('+', '.', ‘*’, '/), dan karakter-karakter
khusus seperti ('$', '#', '@', '!', ·~·, dan lain-lain). Daftar karakter baku yang lengkap dapat dilihat di
dalam bukubuku yang memuat tabel ASCII.
 Konstanta
Konstanta karakter harus diapit oleh tanda petik tunggal. Contoh konstanta karakter misalnya:
'h’ 'Y' 'P' '+' '9' '0' '$'
 Operasi
Operasi yang berlaku pada tipe karakter adalah operasi perbandingan.
= ( sama dengan)
≠ ( tidak sanma dengan)
< ( lebih kecil )
 ( lebih besar)
≥ ( lebih besar atau sama dengan)
Tipe karakter memiiliki keterurutan (successor dan predeccessor) yang di tentukan oleh cara
pengodeannya di dalam komputer. Operasi dengan operator perbandingan menghasilkan nilai
boo/eon. Misalnya, bila a dan b adalah peubah bertipe karakter, maka operasi a < b akan
menghasilkan nilai benar atau salah bergantung pada keterurutan harga a dan b pada sistem
pengodeannya.
Contoh :
‘a’ = ‘a’ (hasil: true)

10
‘T’ = ‘t’ (hasil: false)
‘y’ ≠ ‘Y’ (hasil: true)
‘n’ < ‘z’ (hasil: true)
‘Q’ > ‘Z’ (hasil: false)

4.1.5 String
String adalah untaian karakter dengan panjang tertentu.
o Nama Tipe
Nama tipe string adalah string.
o Ranah Nilai
Ranah nllaJ untuk tipe sning adalah deretan karakter yang telah didefinisikan pada ranah
karakter.
o Konstanta
Semua konstanta string harus diapit oleh tanda petik tunggal. Contoh contoh konstanta string
misalnya :
‘BANDUNG’
‘ganesha’
‘Jl. Pahlawan No. 76’
‘ Jurusan Teknik Informatika’
‘....................................’
‘ABCD765’
‘K7685302’
‘m’
String kosong (null) adalah string yang panjangnya nol, dan dllambangkan dengan ". Dengan
kata lain, string kosong sama dengan karakter kosong .
o Operasi
Operasi terhadap data bertipe string didefinisikan dua macam:
a. Operasi Penyambungan (Concatenation)
operator: +

11
Operator • + • yang dimaksudkan di sini berarti penyambungan. Bila a dan b adalah
peubah bertipe string, maka a + b sama dengan ab.
Contoh
‘Teknik’ + ‘INFORMATIKA’ = ‘TeknikINFORMATIKA’
‘Teknik’ + ‘ INFORMATIKA’ = ‘Teknik INFORMATIKA’
‘aaa’ + ‘ bbb’ + ‘cc’ = ‘aaa bbbcc’
‘1’ + ‘2’ = ‘12’ dan ‘2’ + ‘1’ = ‘21’
b. Operasi Perbandingan
operator:
= ( sama dengan)
≠ ( tidak sanma dengan)
< ( lebih kecil )
 ( lebih besar)
≥ ( lebih besar atau sama dengan)
≤ ( lebih kecil atausama dengan )
Contoh:
‘abcd’ = ‘abc’ (hasil: false)
‘aku’ = ‘AKU’ (hasil: true)
String yang disusun oleh gabungan numerik dan karakter sering dinamakan alfanumerik

4.2 Tipe Bentukan


Tipe beutukan adalah tipe yang didefinisikan sendlri oleh pemrogram (user-defined type data).
Ada dua maeam tlpe bentukan:
1. tipe dasar yang dlberi nama dengan nama tipe baru,
2.. tipe terstructur.
4.2.1 Tipe Dasar yang Diberi Nama Tipe Baru
Nama baru untuk tipe dasar tersebut dengan kata kunci type· Ranah nilai, cara menulis
konstanta, dan operasi-operasi terhadap tipe baru tersebut tidak berubah, tetap sama dengan tipe
dasar aslinya.
Contoh : type BilanganBulat ; integer
12
BilanganBulat adalah tipe bilangan bulat yang sama saja dengan tipe integer.

4.2.2 Tipe Terstruktur


Tipe terstruktur adalah tlpe yang berbentuk rekaman (record). Rekaman disusun oleh satu atau
lebih.field (Gambar 4.1). Tiap.field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan
lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan sendlri oleh pemrogram.
field 1 field 2 Field 3 .... fieldN
Gambar 4.1 Tipe Terstruktur dengan N buah field

Contoh-contoh di bawah ini memperllhatkan bagalmana mendefenislkan tipe bentukan untuk tlpe
terstruktur.
1. Tltik dalam koordinat karteslan dinyatakan sebagai (x, y), dengan x adalah nilai absis dalam
arah sumbu-X dan y adalah nilai ordinat dalam arah sumbu-Y. Kita dapat mendefinisikan titik
sebagai tipe bentukan baru dengan x dan y sebagai nama.field-nya.
x y
Cara menyelesaikan tipe titik :
Type Titik : record < x : real, y : real>
Atau
Type Titik : record x, y = real>
Kata kunci record menyatakan bahwa Titik adalah tipe terstruktur. Jika dideklarasikan P adalah
peubah (variable) bertipe Titik, maka cara mengacu tiap field pada P adalah:
P. x
P. y
Tipe Titik didefinisikan sebagai berikut:
Nama tipe : Titik
Ranah nilai : (real.real)
Contoh konstanta : <2. 7, 13. 2>
< -1,4,-6.5>
<3.0.34,-10.12>

Operasi : operasi aribnetik bilangan riil terhadap x dan y operasi perbandingan


terhadap x dan y

13
2. Bilangan kompleks adalah bilangan yang dapat dinyatakan sebagai a + bi dengan a dan b rill
sedangkan i = √1. Misalnya 4.0 + 3.8i, 9.4 -2.5i, dan sebagainya. Kita dapat menyatakan
sebuah bilangan kompleks sebagai tipe rekaman dengan a dan b sebagai nama field-nya.
a b
Cara menuliskan tipe Kompleks:
Type Komplleks : record <a;real, b;real>
Jika dideklarasikan K adalah peubah bertipe Kompleka, maka cara mengacu tiap field pada K adalah:
K.a
K.b

Definisl tipe Kompleks sebagai berikut:


Nama tipe : Kompleks
Ranah nilai : (real, real)
Contoh konstanta : <4.0.3.8>, <9.4,2.5>, <23.034, -100.0>
Operasi : • operasi aritmetik bllangan rill terhadap a dan b
• operasi perbandingan terhadap masing - masingfield

3. Didefinisikan tipe terstruktur yang mewakili tanggal dalam kalender Masehi. Hari dinyatakan
sebagai tanggal (dd), bulan (mm), dan tahun (yy), misalnya 10-8:1999. Mlsalkan tipe bentukan
tersebut diberi nama Tanggal:
dd mm yy
Cara menuliskan tipe Tanggal:
Type Tanggal : record
<dd : {1..31}
mm : {1..12}
yy : { > 0}
>
Jika p adalah peubah bertipe Tanggal, maka cara mengacu tiap field:
p.dd
p.mm
p.yy
Tipe Tanggal didefinisikan sebagai berikut:
Nama tipe : Tanggal
14
Ranah nilai : sesuai ranah masing·masing field
Contoh konstanta : <12,7,1997>, <31,12,1980>, <29,2,1980>

Operasi : • operasi aritmetik bilangan bulat terhadap tiap field


• operasi perbandingan terhadap masing-masing field
4. Didefinisikan tipe terstruktur yang mewakili jam. Jam dinyatakan sebagai jam (hh), menit
(mm), dan detik (ss), contohnya 12:45:10 (jam 12 lewat 45 menlt lewat 10 detlk). Misalkan tipe
bentukan tersebut diberi namaJam.
dd mm ss
Cara menuliskan tipe Jam:
Type Jam : record
<hh : integer {0..23}
Mm : integer {0..59}
Yy : integer {0..59}
Tipe Jam didefinlsikan sebagai berikut:
Nama tipe : Jam
Ranah nilai : sesuai ranah masing-ma.singjie/d
Contohkonstanta :<12,45,10 > , <23,12,19>, <9,17,8>
Operas! : - operasi aritmetik bilangan bulat terhadap tiap field
- operasl perbandingan terhadap masing·masing field
5. Tipe terstruktur untuk jadwal kereta api. Jadwal keberangkatan kereta api terdiri atas informasi
nomor kereta api (NoKA), kota asal (KotaAsal), kola tujuan (Kotatujuan), jam berangkat
(JamBerangkat), dan jam tiba (Jamtiba).
Cara rnenuliskan tipe Jadwal_KA:
Type Jadwal_KA : record
<NOKA : string,
KotaAsal : string,
JamBerangkat : Jam,
KotaTujuan : string,
JamTiba : Jam
>
Jika JKA adalah peubah bertipe Jadwal_KA, maka akan mengacu tiap-tiap field:
JKA.NOKA

15
JKA.KotaAsal
JKA.JamBerangkat { mengacu jam keberangkatan }
JKA.JamBerangkat,hh { mengacu jam (hh) keberangkatan }
JKA.JamBerangkat,mm { mengacu menit (mm) keberangkatan }
JKA.JamBerangkat,ss { mengacu detik (ss) keberangkatan }
JKA.KotaTujuan
JKA.JamTiba.hh
JKA.JamTiba.mm
JKA.JamTiba.ss
Tipe Jadwal_KA didefinisikan sebagal berikut:
Noma ripe : Jadwal_KA
Ranah nilai : sesuai ranah masing – mnasing field
Contoh konstanta : <’KA01’,’Jakarta’,’<17.2,0>, ‘Semarang’,
<05,54,0> >
<KA24’>, ‘Bandung’, <9.40, 12>, ‘Solo’,
<14,10.50> >
Operasi : sesuai operasi untuk asing – masing tipe filed

6. NilMhs adalah nama ripe terstruktur yang menyatakan nilai ujian seorang mahasiswa untuk
suatu matn kuliah (Mk') yang di ambil, Data setiap mahasiswa adalah NIM (Nomor lnduk
Mahasiswa}, narna mahasiswa, kode mata kuliah yang di arnbil, dan nilai rnata kuliah tersebut.
NIM NamaMhs KodeMK Nilai
Carn menuliskan tipe NilMhs:
Type NilMhs : record
< NIM integer , { Nomor Induk Mahasiswa }
NamaMhs string, { Nama Mahasiswa}
KodeMK string {kode mata kuliah}
Niali char {indeks nlai MK (A/B/C/D/E}
>
Jika dideklarasikan M adalah peubah bertipe NilMhs, maka Cara mengacu tiap field pada rekaman
M adalah:
M.NIM
M.NamaMhs
M.KodeMK
M.Nilai
16
Tipe NilMhs didefinlslkan sebagai berilrut:
Nama tipe : NilMhs
Ranah nilai : sesuai ranah masing-masingfield
Contoh konstanta : <13596001, ‘ Amir Ali’,’ FI324 ‘,’A'>
<13597010,'Wati Siregar','MA211,'C'>
Operasi : - operasi aritmetlk bilangan bulat terbadap NIM
- operasi string terhadap NamaMhs, KodeMK, Nilai

7. Contoh berikut menyajikan struktur tipe bentukan yang cukup kompleks. Misalkan kita ingin
menyimpan data nllai-nilai mata kuliah yang diambil setiap mahasiswa. Data yang disimpan di
dalam struktur rekaman sebagai berikut:
1. NIM (Nomor Induk mahasiswa)
2. NamaMhs (nama mahasiswa)
3. Mata kUliah yang diambil mahasiswa tersebut, yang terdlri etas:
- Kode mata kuliah
- Nama mata kuliah
- Nilai mata kuliah
Cara menuliskan tipe MataKuliah:
Type MataKuliah : record
<KodeMK : string, { kode mata kuliah }
NamaMK : string, { kode mata kuliah }
Nilai : char {indeks nilai MK (A/B/C/D/E)}
>
Type NilMhs : record
<NIM : string, {Nomor Induk Mahasiswa}
NamaMhs : string, { Nama Mahasiswa }
MK : MataKuliah
>

4.3 Nama

17
Di dalam algoritma, nama dipakai sebagai pengidentifikasi "sesuatu" dan pemrogram
mengacu "sesuatu" itu melalui namanya. Karena itu, tiap nama haruslah unik, tidak boleh
ada dua buah nama yang sama.
Beberapa aturan mengenai penamaan:
1. Nama harus dimulai dengan huruf alfabet, tidak boleh dimulai dengan angka, spasi, atau
karakter khusus lainnya;
2. Huruf besar atau huruf kecil tidak dibedakan. Jadi, suatu nama yang ditulis dalam hurufbesar
atau hurufkecil dianggap sama;
3. Karakter penyusun nama hanya boleh huruf alfabet, angka, dan • •. I<arakter garis bawah
(underscore) dihitung sebagai sebuah huruf; karakter ini kadang-kadang berguna untuk
memudahkan membaca algoritma.
4. Nama tidak boleh mengandung operator aritmetika, operator relasional, tanda baca, dan karakter
khusus lainnya;
5. Karakter-karakter di dalam nama tidak boleh dipisah dengan spasi, Hal ini mengingat bahwa
nama adalah kesatuan leksikal, maka setiap nama harus ditulis secara utuh. Spasi dapat diganti
dengan karakter • _ •
6. Panjang nama tidak dlbatasi.
Nama sebaiknya interpretatif yaitu mencerminkan nilai intrinsik atau fungsi yang dlkandungnya.

Contoh nama yang salah :


6 titik { karena dimulai dengan angka }
Nilai ujian { karena dipisahkan dengan spasi }
PT-1 { karena mengandung operator kurang }
Hari II ( karena mengandung karakter khusus }
A 1 { karena mengandung spasi }
Contoh nama yang benar :
Titik6 atau titik_6
Nilai_ujian atau nilai ujian
PT1 atau PT_1
Hari
A1
18
Di dalam algoritma, objek yang dlheri nama dapat berupa:
1. Peubah (variable);
Peubah adalah tempat menyimpan nilai yang isinya dapat diubah.
Contoh:
DEKLARASI
X, nilai_ujian, jumlah real
K : integer
C : char
x, nilai_ujian, jumlah, k, dan c adalah nama-nama peubah. Nilai-nilai peubah dapat dimanipulasi
melalui pemyataan-pemyataan di dalam algoritma.
2. Konstanta (corutant);
Konstanta adalah tempat penyimpanan di dalam memori yang nilainya tetap selama
pelaksanaan program dan tidak boleh diubah. Notasi untuk menyatakan konstanta adalah const
Contoh :
DEKLARASI
Const phi =3.14
Const Maks = 100
Const sandi = ‘xyz’
phi, Nmaks, dan aandi adalah nama konstanta. Nilai konstanta yang sudah dl.isikan ke dalam nama
konstanta tidak dapat dlubah oleh instruksi di dalam algoritma.
3. Tipe bentukan, teperti yang telah clijelukan di atas; Nama tipe bentukan diberikan oleh
pemogroman;
Contoh
DEKLARASI
Type titik : record <x : real, y : real>
Type jam : record
<hh : integer, {0..23}
mm : integer, {0..59}
nn : integer, {0..59}
p : titik
J1, J2 : Jam
19
Titik dan Jam adalah nama tipe, sedangkan P adalah nama peubah yang bertipe Titik, Jl dan J2
adalah nama peubah yang bertipeJam.
4. Nama fungsi (akan dijelaskan kemudian) yang digunakan;
Contoh
DEKLARASI
FUNCTION Maksimun(input A, B : integer) integer
{ mengembalikan nilai terbesar antara A dan B}

Maksimum adalah nama fungsi


5. Nama prosedur (akan dijelaskan kemudian) yang digunakan.
Contoh :
DEKLARASI
PROCEDURE Tukar(input/output A,B: integer
{ mempertukarkan nilai A dan B }

4.4 Tabel Translasi dari Algoritmik ke Pascal dan C

Kelompok algorikmik pascal c ket


1. Tipe boolean Boolean (lihat ket di bawah
Dasar tabel)
Integer Byte Unsigned char 1 byte
Shortint Signed char 1 byte
Eord unsigned int 2 byte
Integer int, short int 2 byte
Longist long ist 4 byte

Real Real flost (pada


Double double komputer
Extended long double 16 bit)

Char Char char

String String (lihat ket. )


String n Char

Record Record Struct


<field1:type, Field1; { type field 1;
Field2:type, Type, Type field2;
20
.... ... ...
FieldN:type FieldN, Type fieldN
> Type, }
End,
2. Operator
a. Aritmatik + + +
- - -
* * *
/ / /
Div Div /
Mod Mod
b. < < <
perbandingan < <= <=
> > >
> >= >=
= = =
≠ <>
c. logika Not Not I
And And “
Or Or //
Xor Xor Tidak ada
d. string + + Tidak ada
< < Tidak ada
< <= Tidak ada
> > Tidak ada
> >= Tidsk ada
= = Tidak ada
≠ <> Tidak ada

3. komentar { komentar } { komentar } /* komentar*/


{*komentar*)
4. lain - lain Const Const Const
Type Type Typedat
True True Dapat diganti 1
false false Dapat diganti 0

Keterangan Tambahan:
1. Bahasa C tidak menyedlakan tipe boolean secara elcsplislt. Tlpe boolean dapat diganti dengan
tipe integer, yang dalam hat In! tMle • 1,falu • o. Namun demlldan, klta dapat membentuk tlpe
baru yang bemama boolean dengan typedef sebagai berikut:
Typedat amin (false + 0, true + 1) boolean

21
2. Sebuah karakter atau string dalam bahasa Pascal diapit dengan sepasang tanda petik tunggal ('
.. .') , sedangkan dalam bahasa C karakter. Sebuah karakter atau string dalam bahasa Pascal
diapit dengan sepasang tanda petik tunggal (' ... ') , sedangkan dalam bahasa C lcarakter diapit
oleh sepasang tanda petik tunggal (' ... ') dan sebuah string diapit oleh sepasang tanda petik
ganda (· .. .").
Contoh dalam bahasa pascal
‘a’ {karakter}
‘Teknik Informatika {string}
Contoh dalam bahasa C
‘a’ {karakter}
“Teknik Informatika” {string}
3. Dalam bahasa Pascal, string yang tidak disertai dengan panjaog maka diasumsikan panjangnya
adalah default, yaitu 255. Apabila panjangnya ditentukan, panjang tersebut ha.rus dlsebutkan.
Contoh : kota : string(20);
4. Bahasa C tidak menyedlakan tipe string secara khusus. String di dalam bahasa C
direpresentaslkan dengan Jarik (array - materi larik dlberlkan di dalam Bab 13)) Namun, kita
dapat membuat tipe bentukan baru untuk string dengao menggunakan larik dan fasilltas typedef
dan panjaog string maksimum 255 (sepertl nilai default panjaog string di bahasa Pascal)
Typedat char string(255);
5. Dua buah string di dalam bahasa C tidak dapat dibandingkan secara lang.sung, karena string
pada dasamya adalah array of character (lihat Bab tentang array, Bab 13). Namun, kita dapat
membandingkan kesamaan dua buah string dengan menggunakan fungsi strcmp. Fungsi ini
menghasilkan nilai peibandingan dua buah string, S1 dan S2 dengan format
Nilai = string {a1, a2}
Yang dalam hal ini , nilai a = 0, jika s1 = s2, nilai < 0 jika s1 < s2, dan nilai > 0 jika s1> s2.
6. Pendeklarasian konstanta daJam bahasa C, selain menggunakan kata kunci const, dapat juga
menggunakan pemyataan baris adefine. Pernyataan #define mendefenisikan konstanta simbolik
dengan cara penulisan:
#define nama nilai
Pemyataan di alas berarti, setiap kemunculan nama di dalam program akan diganti dengan nilai.
Contoh
22
/* nama konstanta*/
Const float phi = 3.14 /*konstanta x*/
Const int N= 100 /*jumlah mahasiswa*/
Const char sandi{}=’xyz’ /*kunci rahasia*/
Pemyataan #de tine harus diletakkan di luar blok main(). Perhatikan bahwa tidak diperlukan
karakter ";" pada akhlr pemyaatan #define. Nama-nama seperti PHI, N, dan SANDI adalah
konstanta simbolik, bukan peubah, sehlngga mereka tidak muncul di bagian deklarasi. Nama-nama
konstanta simbolik menurut konvensl ditulls dengan huruf besar untuk membedakannya dengan
nama peubah.
Contoh-contoh translasi
Contoh translasi bagian DEKLARASI ke dalam bahasa Pascal dan C diberikan di bawah ini.
Untuk prosedur dan fungsi, pembaca dapat membaca Bab 10 dan Bab 11 tentang cara
mentranslasikan prosedur dan fungsi ke dalam bahasa Pascal dan C. Kata-kata yang dicetak tebal
di dalam bahasa Pascal dan C adalah reserved words (kata cadangan). Kata cadangan tidak boleh
dijadlkan sebagai nama tipe, nama peubah, nama tetapan, nama fungsi, dan nama prosedur
ALGORITMIK
DEKLARASI
{ nama konstanta }
Const phi = 3,14 {konstanta phi}
Const Nmake {jumlah mahasiswa}

23
24
PASCAL

25
26
/• nama fungai dan procedur • /
void HitungTitikTengah(Titik Pl, Titik P2, Titik •P)1
/• Mengbitung titik tengah garis dangan titik ujung Pl don P2 -,
int Paktorial(int n)1
/• mengembaliltan nilai faktorial dari n·~ o •/ .
boolean C&rl (in!; X) I
/• true bila x dite""1lcan, false bila sebaliknya •/
void CetakJadwal!Ul(cllai- kota[1SJ)1
/• Mencatak jawal eemua kereta api yang berangkat dari kota
tertentu •
•/

4.5 Nilai
Nilai adalah besaran dari tipe data yang terdefinisi (tipe dasar atau tipe bentukan). Nilai dapat
berupa data yang disimpan di dalam peubah atau konstanta, nilal dari basil perhitungan, atau nilai
yang dlkirim oleh fungsi. Algoritma pada dasamya memanlpulasi nilai yang dislmpan di dalam
peubah
4.5.1 Pengisian Nilai ke dalam Nama Peubah
Peubah menyimpan sebuah nilal bertipe sama dengan tipe peubah. Sebuah nilai dapat dimasukkan
ke dalam nama peubah dengan dua buah cara:
1. pengisian nilai secara langsung (assignment),
2. pembacaan.
4.5.1.1 Pengisian Nilai Secara Langsung
Pengisian nilal secara langsung (assignment) adalah mengisl sebuah nila.1 ke dalam peubah secara
langsung di dalam algoritma. Nilai yang diisikan harus bertipe sama dengan tipe peubah.
Notasi pengisian nilai secara langsung
Arti notasi nilai di sebelah kanan tanda panah dlisikan ke dalam peubah di sebelah kirinya.

(a) Nilai yang diisikan kc dalam pcubab dapat berupa konstanta,


peubah konstanta {nilai konstanta diisikan ke dalam peubah }
(b) atau suatu peubah diisi dengan nilai dnrl peubah lain:

27
peubah peubah1 {nilai konstanta di salin ke dalam peubah2 }
contoh : A B { nilai A di salin kedalam B}
(c) atau suatu peubah diisi dengan hasil evaluasi dari sebuah ekspresi:
peubah ekspresi {hasil perhitungan diisikan ke dalam peubah}
contoh : A (B + C)/2 { A berisi hasi levaluasi (B + C)/2 }
Setiap peubnh menempati sebuah Lokasi di memori komputer, Sifat momori adalah jika in diisi
dengan nilai baru, maka nilai yang disimpan sebelumnyn hilang. Jadl, jika suatu peubnh diisi
dengan nilal bani, maka nilai lama yang disimpan oleh peubah terscbut ~ditirnpn" dengan nilal
yang bani. Prinsip yang dipakai ndnlah: nilai yang diknndung oleh peubah adalah nilai yang
terakhir kali diisikan ke dalamnya.
Misalkan peubah k dideklarasikan bertipe integer,jarak bertipe real, ketemu bertipe boolean,
NamaKota bertipe string, dun J bcrtipe Jam.
DEKLARASI
k : integer
jarak : real
ketemu : boolean
NamaKota : string
Type jam : record
<hh : integer, {0..23}
Mm : integer, {0..59}
Nn : integer, {0..59}
J : Jam
Misalkan B, awal, suhul, suhu2, ulang, dan mulai ndalnh nama peubah yang didefinisikan bertipe
integer. Conteh di bawah ini adalah meugisi sebuah peubah dengan nilai dari peubnh lain.
DEKLARASI
B, awal, suhu1, suhu2, ulang : integer
ALGORITMA
B awal
Suhu1 suhu2
Ulang mulai

28
Contoh berikur ini ndalnh pengisia peubah dengun ekspresi. Hasil ekspresi harus bertipe sama
dengnn tipe peubah di ruas kiri.
DEKLARASI
P, Q, R, niubah, jumlah, banyak, i,j,k: integer
A,b,c, determinan : real
N : boolean
ALGORITMA
C A + B
Niubah jumlah / banyak + s
Determinan b + b – 4*a + c
4.5.1.2 Pembacaan
Nilai peubah dapat diisi secara eksternal dari piranti masukan, misalnya dari papan ketik, dari
sebuah berkas (file), dari tetlku.s (mouse), dan sebagainya. Memasukkan nilai dari dari piranti
masukan dinamakan operasi Pembacaan data, karena komputer seolah-olah membaca apa yang
kita masukkan.
Notasi algoritmik untuk pembacaan nilai darl piranti masukan:
Read (nama,. Nama,....namaN)
dengan syarat bahwa nama., nama,, ... , nama. adalah nama-nama peubah yang sudah
dideklarasikan tipenya.
Misalkan M, a1, a2, a3, bertipe real, nama_kota dan nama_mh• bertipe string, NRP dan nilai
bertipe integer, dan P adalah rekaman bertipe Titik. Cara membaca nilai untuk semua peubah
tersebut adalah:
DEKLARASI
M, a1, a2, a3 : real
Nama_mha : string

29
Bagian yang dikerjakan A.rahman rangkuti

NlM : integer
type titik : record <X : real, y : real >
P : Titik

ALGORITMA :

Read (M)

Read (a1, a2, a3)

Read (nama_mhs, NIM)

Read (p.x, p.y)

Ketika pernyataan

Read(M)

dieksekusi oleh komputer, komputer rnembaca nilai M yang dimasukkan dari luar (misalnya
dari papan ketik), .jika nilai yang diketik adalah 78, maka lokasi memori yang bernama M
sekarang berisi 78.

Begitu juga dengan pernyataan

Read (nama_mhs, NIM)

Dieksekusi, komputermeminta pengguna mengetikkan nilai untuk nama_mhs,NRP, dan


nilai. Bila pengguna mengetikkan.

4.5.2 Ekspresi

Suatu nilai dipakai untuk proses transformasi menjadi keluaran yang diinginkan.
Transformasi nilai menjadi keluaran dilakukan melalui suatu perhitungan (komputasi). Cara
perhitungan itu dinyatakan dalam suatu ekspresi. Eksprasi terdiri atas operand dan operator.
Operand adalah nilai yang dioperasikan dengan operan tertentu. Operand dapat berupa
konstanta, nama peubah, nama konstanta, atau hasil dari suatu fungsi. Hasil evaluasi dari sebuah
ekspresi adalah uilai di dulam ranah yang sesuni dengan tipe operand yang dipakai, Dikenal
tiga macam ekspresi: eskpresi aritmetik, ekspresi relasional, dan ekspresi string.

30
4.5.2.1 Ekspresi Aritmetik

Ekspresi numerik adalah ekspresi yang haik operand-nya bertipe numerik dan hasilnya juga
bertipe numerik. Misalkan dideklarasikan nama-nama peubah sebagai berikut :

DEKLARASI

a, b, c : real

d : integer

i, j, k : integer

contoh ekspresi numerik misalnya :

a*c

Hasil evaluasi ekspresl tersebut juga bertipe real. Pada ekspresi ini, operandnya adalah a dan
b, sedangkan operatomya adalah “*”. Bila hasil evaluasi disimpan ke dalam peubah,maka
peubah tersebut haruslah bertipe sama dengan tipe hasil. Pengisian hasil evaluasi ekspresi a*c
ke dalam nama peubah c melalui pernyataan

c← 𝑎*b

adalah benar, tetapi pernyataan

d←𝑎*b

tidak benar karena d bertipe integer sedangkan hasil evaluasi ekspresi bertipe real.

Contoh lainnya adalah penyimpanan ekspresi (i+j) div 2 ke dalam peubah k:

k ← (𝑖 + 𝑗) div 2

contoh ekspresi numeric lainnya :

a/2.5) + c * b

i +(j*k) – 10 * (d+k)

100.0/(a+c) – 2.5
31
Yang barus diperhatikan dalam penulisan ekspresi numerik adalah tingkatan (hirarkhi)
operator. Operator yang mempunyai tingkatan lebih tinggi leblb dahulu dikerjakan daripada
operator yang tlngkatannya lebih rendah. Misalnya ekspresi

a/c + b

akan dikerjakan dengan urutan a/c lebih dahulu. Lalu hasilnya ditambah dengan b.

urutan evaluasi ekspresi dapat diubah karena penggunaan tanda kurung.. misalnya ekspresi

a/(c + b)

akan dikerjakan sebagai c + b lebih dahulu, baru kemudian a dibagi dengan hasil dari c + b.

tingkatan operator aritmatika adalah (dari tertinggi ke terendah ) :

(i) Div, mod


(ii) /
(iii) *
(iv) +, -

Operator “/” dan “*” dapat saja mempunyai urutan prioritas yang sama, misalnya

a*b/c

sama saja dengan

(a*b)/c

Atau

a*(b/c)

tetapi a/b*c diinterprestasikan sebagai (a/b) *c, hasilnya tidak sam dengan a/ (b*c).
penggunaan tanda kurung dapat menghilangkan kesalahan interprestasi.

Operator +,- mempunyai urutan perioritas yang sama. Apabila ada bagian ekspresi yang
diapit oleh pasangan tanda kurung, maka ekspresi di dalam tanda kurung mempunyai prioritas
tertinggi untuk dievaluasi terlebih dahulu.

Contoh-contoh ekspresi yang sudah kita kemukakan merupakan ekspresi biner, yaitu
ekspresi yang operatornya membutuhkan dua buah operand (sehingga operator-nya disebut
juga operator biner). Di samplng eskpresi biner, terdapat juga ekspresi uner, yaitu ekspresi
dengan satu buah operand, misalnya

32
-a

-a * (b+c)

(-a adalah ekspresi uner ). Operator “_”, selain merupakan operator biner, juga adalah satu-
satunya operator uner dari seluruh operator arirmatika.

Ekpresi biner pada seluruh contoh di atas ditulis dalam notasi infix, yaitu notasi yang kita
gunakan dalam kehidupan sehari-hari. Notasi infix adalah notasi dengan susunan:

operand1 operator operand2

Selain notasi infix, ekspresi biner juga dapat ditulis dalam notasi prefix:

operator operand1 operand2

atau dalam notasi postfix (suffix atau polish):

operand1 operand2 operator

contoh ekspresi infix, prefix, dan postfix :

infix : 6*8

a+b/c*d-e*f

prefix : *68

*+a/bc-d*ef

Postfix : 68*

abc/+def*-*

umumnya bahasa pemrograman mengevaluasi ekspresi dalam notasi infix, namun ada
beberapa bahasa pemrograman tertentu yang dapat menghitung ekspresi dalam notasi postfix
dan prefix.

4.5.2.2 Ekspresi Relasional

Ekspresi rasional adalah ekspresi dengan operator <,≤, >, ≥, =, 𝑑𝑎𝑛 ≠, not, and, or, dan xor.
Hasil evaluasu ekspresinya adalah nilai bertipe Boolean (true atau false), sehingga ekspresli
relasional kadang-kadang disebut juga ekspresi boolean. Misalkan dideklarasikan nama-nama
peubah sebagai berikut ini:

33
DEKLARASI

Ada, ketemu, besar : Boolean

x, y : integer

misalkan ketemu berisi nilai false , ada bernilai true,x bernilai 8 dan y bernilai 12, maka.
Contoh-contoh ekspresi Boolean adalah :

4.5.2.3 Ekspresi String

Ekspresi string adalah ekspresi dengan operator "+" (operator penyumbangan


/concatenation). Misalkan dideklarasikan nama-nama peubah sebagai berikut ini:

DEKLARASI

Kar : char

s : string

maka contoh-contoh ekspresi string misalnya :

s + kar) + ‘c’ {operasi penyumbangan karakter/string}

‘Jl Ganesha’ + ‘ no 10 ‘

4.5.3 Menuliskan Nilai ke Piranti Keluaran

Nilai konstanta, peubah, dan hasil ekspresi dapat ditampilkan ke piranti


keluaran (umumnya layar peraga). lnstruksi penulisan nilai dilakukan dengan
notasi write:

Write ( 𝑛𝑎𝑚𝑎1 , 𝑛𝑎𝑚𝑎2 , ...., 𝑛𝑎𝑚𝑎𝑛 ,)

Write (konstanta)

34
Write(ekspresi)

Write(nama,konstanta,ekspresi)

𝑛𝑎𝑚𝑎1 , 𝑛𝑎𝑚𝑎2 , ...., 𝑛𝑎𝑚𝑎𝑛 dapat berupa nama peubah atau nama konstanta. Menampilkan
nilai ke piranti keluaran diistilahkan dengan mencetak nilai tersebut.

Contoh:

Misalkan nama_mhs,nrp,nilai dan J dideklarasikan tipenya di dalam bagian DEKLARASI.


Algoritma untuk mencetak nilai yang disimpan oleh nama-nama tersebut adalah seperti
dibawah ini:

Keluaran yang ditampilkan ke piranti keluaran adalah seprti ini :

Jurusan teknik informatika ITB

Ahmad baiquni 10290056


35
Nilai : 90.8

Dihitung pada pukul : 6 : 12 : 45

Perhatikanlah bahwa write (A) tidak sama dengan write (‘A’). yang pertama menuliskan
nilai A, sedangkan yang kedua menuliskan karakter ‘A’.

4.6 Tabel Translasi Notasi Algoritmik Pengisian Nilai, Pembacaan, dan Penulisan ke
dalam Notasi Bahasa Pascal dan C

36
Tabel penentu format dalam bahasa C

Tipe data Penentu format


Int %d

Unsigned %u

Long int % ld

Long unsigned int % lu

Float %f

Double % lf

Char %c

Char [n] (string) %s

Di dalam bahasa C, pengisiankonstanta string secara langsung ke dalam peubah tidak dapat
dilakukan. Sebagai contoh, jika dideklarasikan s sebagai peubah string :

Char s [15]

Maka, pernyataan

S = “ ini string”;

Adalah salah. Cara mengisi konstanta string kedalam peubah adalah dengan perantara fungsi
strcpy (string copy) sebagai berikut :

Strcpy (s, “ ini string”) ;

Sebaliknya, bahasa Pascal membolehkan pengisian konstanta string secara


langsung ke dalam peubah. Sebagai contoh, jika dideklarasikan s sebagai
peubah string:

Var s : string[15]

Maka, pernyataan

S : = “ini string” ;

Adalah benar.

37
Contoh-contoh translasi :

38
39
40
41
42
BAB 6

PEMILIHAN

Struktur pemilihan mernungkinkan kita melakukan aksi jika suatu syarat dipenuhi. Di dalam
bab 6 ini kita akan membahas konstruksi algoritma yang penting yaitu struktur pemilihan
(selection).

6.1 Menganalisis Kasus

Sebuah persoalan harus kita analisis untuk menentukan kasus-kasus yang mungkin terdapat
di dalamnya. Untuk setiap kasus ada aksi tertentu yang dilakukan. Adanya analisis kasus
menyebabkan terjadinya pemilihan instruksi (atau pencabangan) di dalam algoritma,
bergantung pada kasus mana yang dipenuhi.

Ada lima kasus yang harus kita analisis untuk menentukan kuadran titik
P(,x,y), yaitu:
Kasus 1 :jika x > 0 dan y > 0, maka titik P terletak di kuadran I
Kasus2 :jlka x < 0 dan y > 0, maka titik P terletak di kuadran II
Kasus 3 :jlka x < 0 dan y < 0, maka titlk P terletak di kuadran III
Kasus 4 :jika x > 0 dan y < 0, maka titik P terletak di kuadran IV
Kasus 5 : selain Kasus 1, 2, 3, dan 4, maka titik P tidak terletak di kuadran manapun.

Contohnya, titik (1, 3) terletak di kuadran I karena 1 > 0 dan 3 > 0, titlk (-1, 3) di kuadran II,
titik (-1, -3) di kuadran ID, dan titik (3, -1) di kuadran IV.

Perhatikan Kasus 1. Pada kasus ini ada pernyataan:


jika x > 0 dan y > 0, maka P<.x,y) terletak di kuadran I
43
Kondisi atau syarat yang harus dipenuhi agar P(x, y) terletak di kuadran l adalah

x > 0 dan y > 0

Kondisi bemilai boolean (true atau false) dan menentukan aksi yang dilakukan jika
kondisitersebut berlaku (memenuhi). Penting dicatat bahwa setiap kasustidakboleh beririsan,
dan analisiskasus harus mencakup semua kemungkinan kasus,

Kondisi bemilai boolean adalah ekspresi boolean yang bemilai true atau false bergantung
pada nilai masing-masing operand yang terlibat di dalamnya. Ekspresi boolean dibentuk
dengan mengombinasikan operand yang bertipe sarna dengan salah satu dari operator
relasional: = , ≠, < , ≤, >, ≥, dan operator uner not.
Contoh-contoh ekspresi boolean:

x >𝑦
a ≠ 10

m=n

p≤q

a+b>1

atr = ‘itb’

k mod 4 = 0

ketemu = true

not berhenti

(x > 0) and (y > 0)

Aksi yang dikerjakan jika kondisi boolean dipenuhi bergantung pada masalahnya, misalnya
berupa pernyataan pengisian nilai (assignment), kalkulasi, baca, tulis, dan sebagainya.
Penentuan kondisi boolean dan aksi yang dilakukan bergantung pada jumlah kasus yang
terdapat pada masalah tersebut: satu kasus, dua kasus, atau lebih dari dua kasus. Masing-maslng
dijelaskan terpisah seperti yang dijelaskanberikut ini.

44
6.2 Satu Kasus

Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan konstruksi
iIF-THEN (jika-maka) dalam bentuk pernyataan:

If kondisi then

Aksi

endif

Pernyataan di atas berarti bahwa aksi hanya dilaksanakan bila kondisi bernilai benar (true).

Bila kondisi bemilai salah (false), tidak ada aksi apa pun yang dikerjakan. Kata endif sengaja
kita tambahkan untuk mempertegas awal dan akhir struktur IF-THEN. Aksi yang dikerjakan
bisa

45
karena aksi sesudah kata then hanya akan dikerjakan hanya jika kondisi bernilai true (
dalam hal ini, kondisi adalah not ada, yang bernilai true bila ada bernilai false ).

6.3 Contoh-contoh Masalah dengan Satu Kasus

Contob 6.1. Buatlah algoritma yang membaca sebuah bilangan bulat, lalu mencetak pesan
"genap" jika bilaugan tersebur adalah genap.

Penyelesaian
Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0)
Oleh karena itu, kita perlu membagi data masukan dengan 2. ,jika data masukan
habis dibagi 2, maka kita tulis dibawah bilangan tesrebut bilangan genap.

46
6.4 Dua Kasus

Konstruksi IF-THEN hanya menyediakan satu alternative aksi jika suatu persyaratan
(kondisi) dipenuhi. Notasi algoritmik untuk masalah dengan dua buah kasus adalah dengan
menggunakan konstruksi IF-THEN-ELSE (Jika-maka-kalau tidak) :

If kondisi then

𝑎𝑘𝑠𝑖1

Else

𝑎𝑘𝑠𝑖2

Endif

Pernyataan diatas berarti bahwa 𝑎𝑘𝑠𝑖1 dikerjakan jika kondisi bernilai benar, sebaliknya
jika kondisi bernilai salah, maka 𝑎𝑘𝑠𝑖2 yang akan dilaksanakan. Perhatikanlah bahwa Else
menyatakan ingkaran ( negation) dari kondisi. Bagan-alir pada gambar 6.3 membantu
memperlihatkan visualisasi pemilihan dengan dua kasus-kasus.

47
6.5 Contoh-contoh Masalah dengan Dua Kasus

Contoh 6.4. Tulislah algoritma yang membaca sebuah bilangan bulat, lalu menuliskan pesan
"genap"jika bilangan tersebut adalah genap, atau "ganjil" jika bilangan tersebut adalah bilangan
ganjil.

Penyelesaian
Misalkan bilangan bulat yang dibaca adalah x. Hanya ada dan kemungkinan untuk x, yaitu
genap utau ganjil. Bilangan genap adalah bilangan yang habis dibagi dengan 2 (memberikan
sisa » o), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2. Contohnya, 10 adalah
bilangan genap karena 10 mod 2 = o, tetupi 9 adulah bilangan ganjil karena 9 mod 2 = 1.

48
Analisis kasus:
Kasus 1; jika x mod 2 = 0, maka tulis pesan "genap"
Kasus 2: jika x mod 2 ≠ 0, rnnka tulis pesan "ganjil"

Contoh 6.6. Tuliskan algoritma yang membaca tiga buah bilangan bulat, lalu rnenentukan
dari ketiga bilangan itu yang terbesar !

Penyelesaian
Ada dua cara penyelesaian masalah yang mungkin untuk masalah ini. Kedua versi penyelesaian
masalah diberikan di bawah ini.

Versi 1 :
misalkan kedua bilangan tersebut A, B, dan C.
Analisis kasus:
Kasus 1: jika A > 8, maka set maks = A
Kasus 2: [ika Jl 01: A, maka set maks = B

Bandingkan maks dengan C: jika C > moks, maka set rnaks = C

49
Versi 2:
Misalkan kedua bilangan tersebut A, B, danC.
Analisis kasus:

Kasus 1. jika A > 8, maka


Analisis kasus (A, C):
Kasus 1.1: jika A > C, maka tulis "Bilangan terbesar =A”
Kasus 1.2: jika C≥A, rnaka tulis "Bilangan terbesar = C”

Kasus 2: jika B <:A, maka


Analisis kasus (B, C):
Kasus 2.1: jika B > C, maka tulis "Bilangan terbesar =B"
Kasus 2.2: jika C≥B, maka tulis "Bilangan terbesar = C”

50
Atau dalam kondisi yang lebih ringkas :

51
6.6 Tiga Kasus atau Lebih

Masalah yang mempunyai tiga buah kasus utau labih dapat dianalisis dangan konstruksi
IF·THEN·ELSE bertingkat-tingkat. Gambar 6.4 memperlihatkan bagan alir untuk masalah
dengan 3 kasus.

52
Empat kasus :

53
6.7 Contoh-contoh Masalah dengan Tiga Kasus atau Lebih

Contoh 6.9. Tulislah algoritma yang rnembaca sebuah bilangan bulat, lalu menentukan
apakah bilangan tersebut positif, negatif, ntau nol.

Penyelesaian
Baca bilangan bulat itu adalah x,
Analisis kasus:
Kasus 1: jlka x > 0. makn x adnlah bilangan positif.
Kasus :i: jika x < 0, maka x adalah bilangan negative.
Kasus 3: jika x = 0, rnaka x adalah bilangan nol.

54
Kita dapat juga menuliskan analisis kasus tanpa tanpa memeriksa kasus ketiga, karena jika
suatu bilangan bulat bukan positif atau negatif, pastilah bilangan tersebut 0 :

Contoh 6.10. Tulislah algoritma yang rnembaca temperatur air, T, (dalam satuan derajat
celcius) pada tekanan normal, lalu menentukan apakah wujud air tersebut dalam keadnan padat
(T≤ 0℃),cair (0< 𝑇 <100),atau gas (T> 100).

Penyelesaian

Misalkan suhu air adalah T

Analisis kasus:

Kasus 1: jika T≤ 0, maka air berwujud padat


55
Kasus 2: jika 0 < T < 100, maka air berwujud cair
Kasus 3: jika T> 100, maka air berwujud uap

56
Bagian yang dikerjakan oleh Adnan kashogi nasution

6.2 Satu Kasus

Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan kontruksi
IF-THEN (jika-maka) dengan bentuk penyelesaian :

If kondisi then

Aksi

Endif

Pernyataan diatas berarti pernyataan aksi hanya dilaksanakan bila kondisi bernilai bener
(true). Bila kondisi bernilai salah (false), tidak ada aksi apapun yang di kerjakan.

Contoh :

(a) if x > 100 then

Xx+1

Endif

(b) if kar = ‘ * ‘ then


stop  true

endif

6.3 Contoh-Contoh Masalah Dengan Satu Kasus

Buatlah algoritma dengan membaca sebuah bilangan bulat, lalu mencetak pesan “ genap”
jika bilangan tersebut adalah genap.

Penyelesaian:

Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0).

PROGRAM Genap

{mencetak pesan “ bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti
masukan merupakan bilangan genap}

DEKLARASI
57
X : integer

ALGORITMA

Read(x)

If x mod 2 = 0 then

Write (‘genap’)

endif

6.4 Dua Kasus

Kontruksi IF-THEN hanya menyediaka satu alternatif aksi jika suatu persyaratan (kondisi)
dipenuhi.

If kondisi then

Aksi

Else

Aksi ,

Endif

Pernyataan diatas berarti bahwa aksi1dikerjakan jika kondisi bernilai benar, sebaliknya jika
kondisi bernilai salah, maka aksi2 yang akan dilaksanakan.

Contoh :

(a) if a . 0 then

Write (‘bilangan positif’)

Elsa

Write (‘bilangan bukan positif’)

Endif

(b) if (k . 4 ) and (k div 2 = 4) then

Read (n)
58
Zn*k

Else

Read (m)

Z  m/k

endif

6.5 Contoh-Contoh Masalah Dengan Dua Kasus

Tuliskan algoritma yang membaca sebuah bilangan bulat, lalu menuliskan “genap” jika
bilangan tersebut adalah bilangan genap, atau “ganjil” jika bilangan tersebuta adalah bilangan
ganjil.

Penyelesaian :

Misalkan bilangan bulat yang dibaca adalah x. Hanya ada dua kemungkinan untuk x, yaitu
genap dan ganjil. Bilangan genap adalah bilangan yang habis dibagi dengan 2 (memberikan
sisa =0), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2.

Analisa kasus:

Kasus 1: jika x mod 2= 0, maka tulis pesan “genap”

Kasus 2: jika x mod 2 = 0, maka tulis pesan “ ganjil “

PROGRAM GenapGanjil

{ mecetak pesan “ genap “ jika bilangan bulat yang dibaca merupakan bilangan genap, atau
“ganjil” jika bilangan tersebut ganjil }

DEKLARASI

X : integer

ALGORITMA :

read (x)

if x mod 2 = 0 then

write (‘genap’)

59
else

write (‘ganjil’)

endif

6.6 Tiga Kasus Atau Lebih

Masalah yang mempunyai tiga buah kasus atau lebih dapat dianalisa dengan kontruksi IF-
THEN-ELSE bertingkat-tingkat. Memperlihatkan bagan alir untuk masalah dengan 3 kasus.

Tiga kasus:

If kondisi 1 then

Aksi 1

Else

If kondisi 2 then

Aksi 2

Else

If kondisi 3 then

Aksi 3

endif

endif

endif

6.7 Contoh-Contoh Masalah Dengan Tiga Kasus Atau Lebih

Tuliskan algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah
bilangan tersebut positif, negatif, atau nol.

Penyelesaian :

Baca bilangan bulat itu adalah x.

Analisa kasus:
60
Kasus 1: jika x > 0, makan x adalah bilangan positif.

Kasus 2: jika x < 0, maka x adalah bilangan negatif.

Kasus 3: jika x = 0, maka x adalah bilangan nol.

PROGRAM JenisBilanganBulat

{ menentukan apakah sebuah bilangan bulat merupakan bilangan positif, negatif , atau nol }

DEKLARASI

X : integer

ALGORITMA:

Read (x)

If x > 0 then

Write (‘positif’)

Else

If x < 0 then

Write (‘negatif”)

Else

If x = 0

Write (‘nol’)

Endif

Endif

endif

61
6.8 Structur case

Untuk masalah dengan dya kasus atau lebih, kontruksi case dapat menyederhanakan
penulisan IF-THEN-ELSE yang bertimgkat-tingkat seebagaimana contoh-contoh sebelum ini.
Konstruksi CASE sebagai berikut :

Case eskripsi

Nilai 1 : aksi 1

Nilai 2 : aksi 2

Nilai 3 : aksi 3

Nilai n : aksi n

Otherwise : aksin

endcase

Ekspresi adalah sembarang ekspresi (aritmatika atau boolean) yang menghasilkan suatu nilai
(konstanta).

6.9 Contoh-Contoh Tambahan

Buatlah contoh yang membaca sebuag jam (hh:mm:ss), lalu menentukan jam yang baru
setelah jam yang lama ditambah (increment) satu detik.

Penyelesaian

Cara 1 (komputasi):

(a) konversi jam-menit-detik (hh:mm:ss) ke jumlah detik

(b) tambahkan jumlah detik dengan 1

(c) konversi kembali dari (b) kedalam jam-meenit-detik (hh:mm:ss)

Program JamBerikutnya
62
{ menentukan jam berikutnya setelah jam sekarang ditambah 1 detik }

DEKLARASI

Type jam : record <hh: integer, { 0..59}

Mm: integer, { 0..59}

Ss: integer, {0..23}

J: jam

Totaldetik, sisadetik, : integer

ALGORITMA:

Read (j.hh, j.mm, j.ss) {baca jam}

Totaldetik  j.hh*3600 + j.mm*60 + j.ss {konversi J kejumlah detik}

Totaldetik  Totaldetik + 1 { tambahkan totaldetik dengan 1 }

{konversi totaldetik ke hh:mm:ss}

j.hh  totaldetik div 3600

sisadetik  totaldetik mod 3600

j.mm  sisadetik div 60

j.ss  sisadetik mod 60

write (j.hh, j.mm, j.ss) { jam yang baru }

63
6.10 tabel translasi notasi algoritmik struktur pemilihan kedalam notasi pascal dan C

Kelompok Algoritma Pascal C


1. IF-THEN If kondisi then If kondisi then If (kondisi)

Aksi Aksi Aksi ;

endif (*endif*) /*endif*/

Catatan: bila Catatan: bila


aksi aksi lebih dari
satu buah:
Lebih dari satu
buah: If
(kondisi)
If kondisi
then {

Begin Aksi 1;

Aksi1; Aksi 2;

Aksi2; ...

... Aksi n;

Aksin; }

End ; (*if*)
2. IF-THEN- If kondisi then If kondisi then If ( kondisi )
ELSE
Aksi 1 Aksi1 Aksi1;

64
Else Else Else

Aksi 2; Aksi2; Aksi1;

endif (*endif*) /*endif*/


3. CASE Case ekspresi Case ekpresi of Swicth
(ekspresi)
Nilai1 ; aksi Nilai1 : aksi 1;
1; {
Nilai2 : aksi
Nilai2 ; aksi 2; Case nilai1 :
2; aksi1;
.
.
. Break;
.
. Case nilai2 :
. aksi2 ;
Nilain : aksi
Nilain : aksi; n;
Break ;
Otherwise : Else aksi x ;
aksi; .
End;
endcase .

Case nilain :
aksi.n ;

Break;

Default :
Keterangan: aksiX;

Nilai1, nilai2 }

...

Adalah nilai Keterangan :


yang bertipe
integer, char, atau Nilai1, nilai2,
boolean.
65
...

Adalah nilai
yang bertipe int
atau char.

66

Anda mungkin juga menyukai