MK ALGORITMA DAN
PEMROGRAMAN DASAR
CRITICAL BOOK REVIEW
PRODI S1 PTIK
DISUSUN OLEH:
ANWAR ALIMUDA LUBIS
ADNAN KASHOGI NASUTION
A.RAHMAN RANGKUTI
Dosen Pengampu:
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.
Kelompok 10
ii
DAFTAR ISI
Contents
BAB I ....................................................................................................................................................... 1
PENDAHULUAN ................................................................................................................................... 1
BAB II ..................................................................................................................................................... 3
PEMBAHASAN ...................................................................................................................................... 3
iii
ii
BAB I
PENDAHULUAN
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
1.3 Tujuan Masalah
2
BAB II
PEMBAHASAN
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. 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:
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
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>
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
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>
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.
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.
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)
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.
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
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
d←𝑎*b
tidak benar karena d bertipe integer sedangkan hasil evaluasi ekspresi bertipe real.
k ← (𝑖 + 𝑗) div 2
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.
Operator “/” dan “*” dapat saja mempunyai urutan prioritas yang sama, misalnya
a*b/c
(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:
Selain notasi infix, ekspresi biner juga dapat ditulis dalam notasi prefix:
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.
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
x, y : integer
misalkan ketemu berisi nilai false , ada bernilai true,x bernilai 8 dan y bernilai 12, maka.
Contoh-contoh ekspresi Boolean adalah :
DEKLARASI
Kar : char
s : string
‘Jl Ganesha’ + ‘ no 10 ‘
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:
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
Unsigned %u
Long int % ld
Float %f
Double % lf
Char %c
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 :
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).
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.
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
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 ).
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
49
Versi 2:
Misalkan kedua bilangan tersebut A, B, danC.
Analisis kasus:
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
Analisis kasus:
56
Bagian yang dikerjakan oleh Adnan kashogi nasution
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 :
Xx+1
Endif
endif
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
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
Elsa
Endif
Read (n)
58
Zn*k
Else
Read (m)
Z m/k
endif
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:
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
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
Tuliskan algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah
bilangan tersebut positif, negatif, atau nol.
Penyelesaian :
Analisa kasus:
60
Kasus 1: jika x > 0, makan x adalah bilangan positif.
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).
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):
Program JamBerikutnya
62
{ menentukan jam berikutnya setelah jam sekarang ditambah 1 detik }
DEKLARASI
J: jam
ALGORITMA:
63
6.10 tabel translasi notasi algoritmik struktur pemilihan kedalam notasi pascal dan C
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
Case nilain :
aksi.n ;
Break;
Default :
Keterangan: aksiX;
Nilai1, nilai2 }
...
Adalah nilai
yang bertipe int
atau char.
66