0% menganggap dokumen ini bermanfaat (0 suara)
337 tayangan28 halaman

Alg1 02 17A

Dokumen membahas tentang pemrograman terstruktur yang terdiri dari tiga struktur kontrol yaitu sekuensial, seleksi, dan pengulangan. Struktur sekuensial adalah eksekusi instruksi secara berurutan satu per satu. Struktur seleksi digunakan untuk memilih salah satu alternatif pekerjaan berdasarkan kondisi yang dievaluasi. Struktur pengulangan digunakan untuk mengulangi eksekusi serangkaian instruksi.

Diunggah oleh

Agung Prananta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
337 tayangan28 halaman

Alg1 02 17A

Dokumen membahas tentang pemrograman terstruktur yang terdiri dari tiga struktur kontrol yaitu sekuensial, seleksi, dan pengulangan. Struktur sekuensial adalah eksekusi instruksi secara berurutan satu per satu. Struktur seleksi digunakan untuk memilih salah satu alternatif pekerjaan berdasarkan kondisi yang dievaluasi. Struktur pengulangan digunakan untuk mengulangi eksekusi serangkaian instruksi.

Diunggah oleh

Agung Prananta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 28

Algoritma I

BAB II
PEMROGRAMAN TERSTRUKTUR

2.1. Pendahuluan

Program sebaiknya dibuat dengan urutan yang logis sehingga mudah


dimengerti dan diikuti aliran logikanya. Program yang seperti ini akan mudah
diperbaiki jika ada kesalahan dan dimodifikasi jika ada penambahan masalah.
Program yang demikian disebut sebagai program yang terstruktur. Dalam bidang
rekayasa perangkat lunak, pemrograman dengan cara ini disebut pemrograman
terstruktur. Dalam pemrograman terstruktur, aliran logika program ditentukan oleh
tiga struktur kontrol yaitu sekuensial, seleksi, dan pengulangan.

2.2. Struktur Sekuensial

Struktur sekuensial disebut juga struktur urutan sederhana. Dalam struktur


ini, instruksi dieksekusi satu per satu, masing-masing sekali, sesuai dengan
urutannya, mulai dari instruksi pertama lalu instruksi kedua dan seterusnya. Yang
perlu diperhatikan adalah bahwa suatu instruksi tidak akan dieksekusi jika
instruksi sebelumnya belum selesai dieksekusi. Bentuk umum struktur sekuensial
adalah :

1. Instruksi ke 1
2. Instruksi ke 2
3. Instruksi ke 3
………
n. Halt.

Struktur sekuensial ini banyak digunakan oleh algoritma yang telah


dibahas di bab 1. Salah satunya adalah Algoritma CETAK, ini adalah contoh
algoritma yang menggunakan struktur sekuensial.

BAB 2 : Pemrograman Terstruktur - 27


Algoritma I

2.3. Ekspresi Logika

Sebelum pembahasan dilanjutkan dengan struktur lainnya, akan dibahas


dulu jenis ekspresi yang lain yaitu ekspresi logika. Ekspresi logika digunakan
dalam struktur seleksi dan struktur pengulangan untuk menentukan apakah suatu
proses dikerjakan atau tidak berdasarkan hasil dari ekspresi logika tersebut.

Berbeda dengan ekspresi aritmetika yang menghasilkan konstanta numerik


yang jangkauannya hampir tidak terbatas, ekspresi logika hanya menghasilkan
satu dari dua konstanta yaitu TRUE atau FALSE. Konstanta ini disebut konstanta
logika dan variabel yang menyimpan konstanta logika ini disebut variabel logika.
Variabel logika harus didefinisikan pada bagian deklarasi dari algoritma. Ada 2
macam operator yang digunakan dalam ekspresi logika yaitu:

1. Operator relasional: macam-macam simbol operator relasional dan artinya


dapat dilihat pada tabel 2.1 di bawah ini. Bentuk umum ekspresi logika yang
menggunakan operator relasional adalah:

ekspresi_1 operator_relasional ekspresi_2

Ekspresi_1 dan ekspresi_2 dapat berupa ekspresi aritmetika, atau berupa


konstanta atau variabel yang bertipe numerik atau string.
Tabel 2.1 Operator Relasional
Simbol Arti
< Lebih kecil dari
> Lebih besar dari
== Sama dengan
 atau <= Lebih kecil dari atau sama dengan
 atau >= Lebih besar dari atau sama dengan
!= Tidak sama dengan

Sebagai contoh, diketahui A, B, dan C adalah variabel integer yang


berturut-turut berisi angka 3, 4 dan 5
a. C != 10 = .....  hasilnya: TRUE
b. A > B = .....  hasilnya: FALSE
c. B2  4*A*C = .....  hasilnya: FALSE

BAB 2 : Pemrograman Terstruktur - 28


Algoritma I

Jika ada beberapa operator relasional dalam suatu ekspresi, maka ekspresi
dikerjakan mulai dari kiri ke kanan. Ekspresi logika yang menggunakan
operator relasional disebut ekspresi logika sederhana.
2. Operator logika: macam-macam simbol operator logika, arti serta urutan
pengerjaannya dapat dilihat pada tabel 2.2 di bawah ini. Bentuk umum
ekspresi logika yang menggunakan operator logika:

ekspresi_1 operator_logika ekspresi_2

Ekspresi_1 dan ekspresi_2 adalah konstanta atau variabel yang bertipe logika,
atau ekspresi logika lainnya. Hasil dari ekspresi logika dapat dilihat pada tabel
2.3. Tabel ini biasanya disebut sebagai truth table.

Sebagai contoh diketahui P dan Q adalah variabel yang bertipe logika yang
berisi masing-masing konstanta logika TRUE dan FALSE.

a. P AND TRUE = .....  hasilnya: TRUE


b. NOT Q = .....  hasilnya: TRUE
c. (A > B) OR (C < B) =  hasilnya: FALSE

Ekspresi logika yang menggunakan operator logika disebut ekspresi logika


majemuk.

Tabel 2.2 Operator Logika


Simbol Arti Urutan pengerjaan
NOT atau ! Tidak/Negasi 1
AND atau && Dan 2
OR atau || Atau 3
EQV Sama dengan 4
NEQV Tidak sama dengan 4

Tabel 2.3 Tabel Hasil Operator Logika


P dan Q adalah variabel logika
P Q P AND Q P OR Q NOT Q
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE FALSE
FALSE FALSE FALSE FALSE TRUE

BAB 2 : Pemrograman Terstruktur - 29


Algoritma I

Jika ada beberapa jenis ekspresi dalam suatu ekspresi, maka ekspresi aritmetika
dikerjakan lebih dulu, lalu ekspresi logika sederhana, dan terakhir ekspresi logika
majemuk. Sebagai contoh diketahui ekspresi logika sebagai berikut:
(A + C) != (A * C) OR Q AND A > (B – C) = ..............
Hasilnya: (3 + 5) != ( 3 * 5) OR FALSE AND 3 > (4 – 5) =
8 != 15 OR FALSE AND 3 > (-1) =
TRUE OR FALSE AND TRUE =
TRUE OR FALSE =
TRUE

LATIHAN SOAL SUBBAB 2.3


Jawablah soal-soal ekspresi logika berikut ini, jika diketahui A, B, dan C
adalah variabel integer yang masing-masing berisi angka 8, 10 dan 12, serta P dan
Q adalah variabel logika yang masing-masing berisi nilai TRUE dan FALSE.

1. P AND FALSE = .....


2. NOT (A + B < C + 5) = .....
3. (A > B) AND (C < B) = .....
4. NOT P OR NOT Q = .....
5. Q OR TRUE AND (A + B = C) = .....
6. NOT (B > A) OR (B = = C) NEQV P = .....
7. (B  C) EQV (B != C – A) AND P OR NOT Q = .....
8. ((C – B) * A > C) OR ((SQRT(B * A) DIV C) <= (C – A)) = .....

2.4. Struktur Seleksi

Struktur seleksi digunakan untuk memilih satu di antara beberapa alternatif


pekerjaan. Pemilihan itu ditentukan oleh suatu kondisi yang berupa ekspresi
logika yang menghasilkan nilai TRUE atau FALSE. Jika kondisi bernilai TRUE
maka suatu alternatif pekerjaan dipilih, jika kondisi bernilai FALSE maka dipilih
alternatif pekerjaan yang lain. Struktur seleksi pada umumnya menggunakan
instruksi IF. Ada macam-macam bentuk instruksi IF yang akan dipelajari.

BAB 2 : Pemrograman Terstruktur - 30


Algoritma I

2.4.1. Instruksi If sederhana


Instruksi If sederhana digunakan untuk menjawab permasalahan apakah
suatu pekerjaan dilakukan atau tidak. Dalam hal ini, jika kondisi dipenuhi (TRUE)
maka akan dilakukan suatu pekerjaan, tetapi jika tidak dipenuhi (FALSE) maka
tidak melakukan apapun. Bentuk umumnya adalah sebagai berikut dan ilustrasi
flowchart-nya dapat dilihat pada gambar 2.1.

IF ( kondisi )
{ alternatif jika kondisi TRUE }

Sebagai contoh, lihat potongan algoritma untuk membuat nilai absolut


berikut ini:

If nilai < 0
{nilai = -nilai }

Dalam potongan algoritma di atas, jika kondisi bernilai TRUE (nilai


kurang dari 0) maka instruksi “nilai = -nilai” dikerjakan sehingga akan
menghasilkan nilai yang positif. Jika kondisi bernilai FALSE (nilai lebih dari atau
sama dengan 0), maka tidak ada instruksi yang perlu dikerjakan, dan eksekusi
algoritma dilanjutkan dengan instruksi berikutnya.

Masuk

True False
Evaluasi
Kondisi

Alternatif
True

Keluar
(proses berikutnya)

Gambar 2.1 Ilustrasi flowchart untuk instruksi IF sederhana

Contoh lainnya, lihat potongan algoritma berikut ini:

BAB 2 : Pemrograman Terstruktur - 31


Algoritma I

If RATA >= 60
{ Write (“ Nama siswa = “, NAMA)
Write (“ Nilai = “, RATA)
Write (“ Anda lulus”)
}

Dalam potongan algoritma tersebut, jika kondisi bernilai TRUE (nilai


RATA lebih besar atau sama dengan 60) maka ketiga instruksi WRITE akan
dieksekusi, jika kondisi salah (nilai RATA kurang dari 60) maka tidak dilakukan
apapun. Algoritma yang lengkap untuk contoh di atas dapat dilihat di bawah ini.

Algoritma Lulus
Algoritma untuk mencetak siswa yang lulus. N1, N2, N3, dan N4
adalah variabel integer yang menyimpan data nilai. NR adalah
variabel integer yang menyimpan nilai rata-rata
1. [membaca 4 buah nilai dari alat input]
Read (N1, N2, N3, N4)
2. [menghitung rata-rata dari ke 4 nilai tadi]
NR = (N1 + N2 + N3 + N4)/4
3. [Jika rata-rata > 60 maka lulus, cetak nama dan nilai siswa]
If RATA >= 60
{ Write (“ Nama siswa = “, NAMA)
Write (“ Nilai = “, RATA)
Write (“ Anda lulus ”)
}
4. Halt

2.4.2. Instruksi If-Else


Berbeda dari instruksi If sederhana yang hanya mempunyai 1 alternatif,
pada instruksi If-Else, terdapat 2 alternatif, yaitu (1) jika kondisi TRUE dan (2)
jika kondisi FALSE. Jadi dalam hal ini terdapat 2 altrnatif perkerjaan tetapi hanya
dipilih 1 pekerjaan yang akan dilaksanakan. Pemilihan tergantung dari suaatu
kondisi yang bernilai TRU astau FALSE. Bentuk umum instruksi if–else adalah
sebagai berikut ini dan ilustrasi flowchart-nya dapat dilihat pada gambar 2.2.

IF ( kondisi )
{ alternatif jika kondisi TRUE }
ELSE
{ alternatif jika kondisi FALSE }

BAB 2 : Pemrograman Terstruktur - 32


Algoritma I

Masuk

True False
Evaluasi
Kondisi

Alternatif Alternatif
True False

Keluar
(proses berikutnya)

Gambar 2.2 Flowchart struktur IF – ELSE

Sebagai ilustrasi masalah, misalnya ada dua buah angka yang disimpan
dalam variabel A dan B. Ingin diketahui mana dari angka tersebut yang lebih
besar. Jika A lebih besar dari B maka A yang dicetak, tetapi jika B yang lebih
besar maka B yang dicetak. Disini ada 2 buah alternatif pekerjaan yaitu (1)
mencetak A atau (2) mencetak B. Pekerjaan yang dipilih tergantung dari hasil
perbandingan apakah A lebih besar atau tidak lebih besar dari B. Untuk
membandingkan A dan B digunakan ekspresi logika: A > B, lalu digabungkan
dengan instruksi IF – ELSE untuk memilih alternatif pekerjaan yang akan
dilakukan sehingga potongan algoritma adalah:

IF ( A > B)
{ Write (“Bilangan yang terbesar : “, A) }
ELSE
{ Write (“Bilangan yang terbesar : “, B) }

Algoritma lengkap untuk masalah di atas dapat dilihat pada Algoritma BESAR
berikut ini dan ilustrasi flowchart-nya dapat dilihat pada gambar 2.3.

Algoritma BESAR
Menentukan bilangan yang lebih besar di antara 2 buah bilangan. A
dan B adalah variabel integer.
1. [memasukkan dua bilangan]
Read (A,B)

BAB 2 : Pemrograman Terstruktur - 33


Algoritma I

2. [membandingkan dua bilangan]


If ( A > B )
[alternatif jika kondisi = TRUE]
{ write (“Bilangan yang lebih besar : “, A) }
[alternatif jika kondisi = FALSE]
Else
{ write (“Bilangan yang lebih besar : “, B) }
3. [selesai]
Halt

Gambar 3.2 Flowchart dari Algoritma BESAR

Ilustrasi lain dari penggunaan instruksi if-else ini adalah untuk


menentukan apakah seorang pegawai mendapatkan bonus atau tidak. Ketentuan
itu diambil berdasarkan kriteria: Jika (Lembur – (2/3 * Absen) > 0.0) maka
pegawai akan mendapatkan bonus Rp. 100.000,-. Jika (Lembur – (2/3 * Absen)
<= 0.0) maka pegawai tidak mendapatkan bonus.
Algoritma untuk menjawab masalah di atas adalah:
Algoritma MENENTUKAN_BONUS
Algoritma untuk membaca nama pegawai (NAMA), lama kerja
lembur (LEMBUR), dan lama absen (ABSEN), lalu menentukan
apakah pegawai mendapatkan bonus (BONUS) atau tidak. Variabel

BAB 2 : Pemrograman Terstruktur - 34


Algoritma I

NAMA bertipe karakter. Variabel LEMBUR, ABSEN dan BONUS


bertipe integer.
1. [memasukkan data pegawai]
Read (NAMA, LEMBUR, ABSEN)
2. [menghitung bonus]
If ( LEMBUR – (2*ABSEN/3)  0 )
{ BONUS = 0 }
Else
{ BONUS = 100000 }
3. [mencetak hasil]
Write (“Bonus untuk : ”, NAMA, “ adalah Rp. “,BONUS)
4. [selesai]
Halt

2.4.3 Instruksi If Bertingkat


Dalam beberapa kasus, kondisi yang harus dievaluasi ada lebih dari dua
atau setelah memilih suatu alternatif, orang dihadapkan pada pilihan yang lain
sehingga untuk hal ini dibuat instruksi IF yang berada dalam instruksi IF dari
kondisi yang pertama. Instruksi IF yang berada dalam instruksi IF yang lain ini
disebut IF BERTINGKAT (NESTED IF).

Sebagai contoh, misalnya ingin ditentukan bilangan yang terbesar dari 3


bilangan. Caranya adalah dengan menguji bilangan secara berpasangan. Mula-
mula dibandingkan 2 bilangan, misalnya A dan B. Setelah didapat yang terbesar
dari kedua bilangan itu, bandingkan lagi dengan bilangan yang ketiga, C, sehingga
didapat bilangan yang terbesar. Diasumsikan isi nilai variabel A,B, dan C tidak
ada yang sama. Algoritmanya dapat dilihat pada Algoritma MAX_3 sedang
ilustrasi flowchart-nya dapat dilihat pada gambar 3.4.

Algoritma MAX_3
Algoritma untuk menentukan bilangan terbesar dari 3 bilangan.
Variabel A, B, C berisi bilangan yang dibaca. Variabel MAX berisi
bilangan yang terbesar. Semua variabel bertipe integer.
1. [memasukkan 3 bilangan]
Read (A,B,C)
2. [menentukan bilangan yang terbesar dengan membandingkan-
nya secara berpasangan]
If ( A>B )
{ if ( A>C )
{ MAX = A } [ A > B, A > C ]
else

BAB 2 : Pemrograman Terstruktur - 35


Algoritma I

{ MAX = C } [C>A>B]
}
else
{ if ( B>C )
{ MAX = B } [ B > A, B > C ]
else
{ MAX = C } [C>B>A]
}
3. [mencetak bilangan yang terbesar]
Write(“Bilangan terbesar adalah “, MAX)
4. [selesai]
Halt

Perhatikan, pada algoritma di atas, masing-masing instruksi IF ditulis


dengan indentasi yang berbeda untuk memudahkan pembacaan.

Gambar 3.4 Flowchart dari Algoritma MAX_3

BAB 2 : Pemrograman Terstruktur - 36


Algoritma I

Untuk contoh yang kedua, struktur IF-bertingkat digunakan untuk


menjawab masalah berikut ini: Sebuah perusahaan ingin memberikan bonus
tahunan kepada pegawainya berdasarkan jumlah jam kerja lembur dan jam absen
(tidak berkerja) si pegawai sesuai tabel 3.4 di bawah ini. Data yang disiapkan
untuk tiap pegawai adalah nama pegawai, lama kerja lembur (dalam jam), dan
lama absen (dalam jam).

Untuk itu dibuat algoritma untuk membaca data pegawai, lalu ditentukan
banyaknya bonus yang diterima si pegawai. Ketika menentukan bonus ini,
dibutuhkan struktur IF-bertingkat karena ada 5 kriteria yang perlu dievaluasi.
Yang perlu diperhatikan adalah bahwa setiap pegawai hanya menerima satu
katagori bonus. Algoritmanya dapat dilihat pada Algoritma BONUS berikut.

Tabel 3.4 Kriteria pemberian bonus tahunan


Lembur – (2/3 * Absen) Banyaknya Bonus
Kurang dari 0 Rp. 0,-
Antara 0 sampai  10 jam Rp. 100.000,-
> 10 jam tetapi  20 jam Rp. 200.000,-
> 20 jam tetapi  30 jam Rp. 300.000,-
> 30 jam tetapi  40 jam Rp. 400.000,-
> 40 jam Rp. 500.000,-

Algoritma BONUS
Algoritma untuk membaca nama pegawai (NAMA), lama kerja
lembur (LEMBUR), dan lama absen (ABSEN), lalu menentukan
banyaknya bonus (BAYAR) yang diterima si pegawai. Variabel
NAMA bertipe karakter. Variabel LEMBUR, ABSEN dan BAYAR
bertipe integer.
1. [memasukkan data pegawai]
Read (NAMA, LEMBUR, ABSEN)
2. [menghitung bonus]
If ( LEMBUR – (2*ABSEN/3)  0.0 )
{ BAYAR = 0 }
Else
{ If ( LEMBUR – (2*ABSEN/3)  10.0 )
{ BAYAR = 100000 }
Else
{ If ( LEMBUR – (2*ABSEN/3)  20.0 )
{ BAYAR = 200000 }
Else
{ If ( LEMBUR – (2*ABSEN/3)  30.0 )
{ BAYAR = 300000 }

BAB 2 : Pemrograman Terstruktur - 37


Algoritma I

Else
{ If ( LEMBUR – (2*ABSEN/3)  40.0 )
{ BAYAR = 400000 }
Else
{ BAYAR = 500000 }
}
}
}
}
3. [mencetak hasil]
Write (“Bonus tahunan untuk : “, NAMA, “ adalah Rp. “,BAYAR)
4. [selesai]
Halt

Perhatikan instruksi IF bertingkat pada langkah ke dua. Misalnya seorang


pegawai mempunyai lama kerja lembur 10 jam dan lama absen 3 jam. Dengan
mengurangi jam lembur dengan 2/3 jam absen akan menghasilkan 8 jam sehingga
berdasarkan Tabel 3.4 si pegawai berhak mendapatkan bonus Rp. 100.000,-.
Untuk pegawai ini, hasil pengujian kondisi pertama (LEMBUR – 2*ABSEN /3) 
0) di langkah ke dua adalah FALSE sehingga dipilih instruksi ELSE untuk
dieksekusi. Dalam instruksi ELSE ini ada instruksi IF yang kedua. Pengujian
kondisi pada IF yang kedua ini menghasilkan nilai TRUE sehingga instruksi
“{ (BAYAR = 100000) }” dieksekusi. Karena instruksi yang lain berada di dalam
instruksi ELSE dari IF yang pertama maka instruksi tersebut tidak dieksekusi dan
eksekusi algoritma dilanjutkan ke langkah ke 3. Untuk kasus ini, hanya perlu
menguji dua kondisi untuk menentukan bonus yang dibayarkan.

Misalnya seorang pegawai lain mempunyai lama kerja lembur 30 jam dan
lama absen 12 jam. Dengan mengurangi jam lembur dengan 2/3 jam absen akan
menghasilkan 22 jam sehingga berdasarkan Tabel 3.4 si pegawai berhak
mendapatkan bonus Rp. 300.000,-. Untuk pegawai ini, hasil pengujian IF pertama
(LEMBUR – 2*ABSEN/3  0) di langkah ke dua adalah FALSE sehingga dipilih
instruksi ELSE. Dalam instruksi ELSE ini diuji kondisi IF yang ke dua yaitu
(LEMBUR – 2*ABSEN/3  10), dan hasilnya adalah FALSE sehingga dipilih
instruksi ELSE lagi. Dalam instruksi Else ini diuji kondisi yang ke tiga
(LEMBUR – 2*ABSEN/3  20), dan hasilnya adalah FALSE sehingga dipilih
instruksi ELSE lagi. Dalam instruksi ELSE ini diuji kondisi yang ke empat

BAB 2 : Pemrograman Terstruktur - 38


Algoritma I

(LEMBUR – 2*ABSEN/3  30), dan hasilnya adalah TRUE sehingga instruksi “{


(BAYAR = 300000) }” dieksekusi. Instruksi lainnya berada di dalam instruksi
Else dari kondisi yang ke empat ini sehingga tidak perlu dieksekusi dan eksekusi
algoritma dilanjutkan dengan langkah yang ke tiga.

Dari pembahasan di atas, dapat dilihat bahwa struktur IF-bertingkat ini


dapat mengurangi pengujian yang tidak perlu karena jika suatu kondisi telah
bernilai benar maka kondisi berikutnya tidak perlu diuji lagi. Pembacaan
algoritma ini dapat diperbaiki dengan menyimpan perhitungan kondisi:
(LEMBUR – 2*ABSEN/3) dalam suatu variabel (misalnya KRITERIA) sehingga
perhitungan kondisi hanya dilakukan satu kali saja, yaitu sebelum memasuki
instruksi IF-bertingkat. Dengan demikian algoritma BONUS direvisi menjadi
Algoritma BONUS_revisi_1 berikut ini.

Algoritma BONUS_revisi_1
Algoritma untuk membaca nama pegawai (NAMA), jumlah jam
kerja lembur (LEMBUR), dan jumlah jam kerja absen (ABSEN), lalu
menentukan berapa bonus (BAYAR) yang diterima si pegawai
berdasarkan KRITERIA. Variabel NAMA bertipe karakter, variabel
LEMBUR, ABSEN dan BAYAR bertipe integer. Variabel KRITERIA
bertipe real
1. [memasukkan data pegawai]
Read (NAMA, LEMBUR, ABSEN)
2. [menghitung kriteria]
KRITERIA = LEMBUR – (2*ABSEN/3)
3. [menentukan bonus]
If ( KRITERIA  0 )
{ BAYAR = 0 }
Else
{ If ( KRITERIA  10.0 )
{ BAYAR = 100000 }
Else
{ If ( KRITERIA  20.0 )
{ BAYAR = 200000 }
Else
{ If ( KRITERIA  30.0 )
{ BAYAR = 300000 }
Else
{ If ( KRITERIA  40.0 )
{ BAYAR = 400000 }
Else
{ BAYAR = 500000 }

BAB 2 : Pemrograman Terstruktur - 39


Algoritma I

}
}
}
}
4. [mencetak hasil]
Write (“Bonus tahunan untuk : “, NAMA, “ adalah Rp. “,BAYAR)
5. [selesai]
Halt

Untuk lebih jelasnya, alur kontrol program dapat dilihat pada gambar
flowchart dari algoritma BONUS_revisi_1 ini (gambar 2.5) di bawah ini.

Gambar 2.5 Flowchart dari algoritma BONUS_revisi_1

Yang perlu diperhatikan dalam penulisan instruksi if bertingkat adalah:


a. Selalu menggunakan indentasi untuk tiap instruksi If sehingga memudahkan
pembacaan algoritma karena dapat dengan mudah diketahui suatu instruksi

BAB 2 : Pemrograman Terstruktur - 40


Algoritma I

termasuk dalam kelompok If-else yang mana (lihat penulisan alogoritma


BONUS _revisi_1 di atas).
b. Setiap instruksi If harus ditulis dengan lengkap maksudnya harus mempunyai
alternatif instruksi jika kondisi menghasilkan nilai TRUE.

LATIHAN SOAL SUBBAB 2.4

1. Buatlah potongan algoritma untuk masalah berikut ini:


a. Jika KODE = 1 maka baca variabel X dan Y, lalu hitung dan tampilkan
jumlah dari X2 dan Y2.
b. Jika JAWAB = ‘Y’ maka baca variabel nama, nilai UTS dan nilai UAS,
hitung nilai akhir sama dengan rata-rata dari nilai UTS dan nilai UAS, lalu
tampilkan nama dan nilai akhir.
c. Jika variabel A bernilai di antara 1 dan 5 maka B sama dengan 1/A 2, selain
itu, B sama dengan A2.
d. Tampilkan pesan “TAHUN KABISAT” jika variabel TAHUN merupakan
angka tahun kabisat atau pesan “BUKAN TAHUN KABISAT” jika
variabel TAHUN bukan angka tahun kabisat. (Tahun kabisat adalah tahun
yang habis dibagi dengan 4).

e. Jika LamaStudi <= 4 maka tulis keterangan “Tepat Waktu”, selain itu tulis
keterangan “Tidak Tepat Waktu”

2. Untuk memacu kinerja para pegawainya perusahaan memberikan bonus 5%


jika si pegawai dapat menjual barang senilai lebih dari 10 juta rupiah. Buatlah
algoritma untuk membaca nama pegawai dan besarnya penjualan lalu
menentukan besarnya bonus yang diperoleh jika si pegawai memenuhi
kriteria.

3. Nilai akhir mahasiswa menentukan apakah si mahasiswa lulus atau tidak lulus
suatu mata kuliah. Komposisi nilai akhir adalah 30% nilai UTS, 20% nilai
praktikum dan 50% nilai UAS. Seorang mahasiswa dinyatakan lulus jika nilai
akhirnya >= 60.0. Buatlah algoritma untuk membaca nama mahasiswa, nilai
UTS, nilai praktikum dan nilai UAS, menghitung nilai akhir dan menentukan

BAB 2 : Pemrograman Terstruktur - 41


Algoritma I

apakah mahasiswa lulus atau tidak. Buatlah laporan yang berisi nama
mahasiswa, nilai akhir dan keterangan “Anda lulus” atau “Anda tidak lulus”.

4. Sebuah pertunjukan musik menjual 2 macam karcis, yaitu karcis anak-anak


dengan harga Rp. 50.000,- dan karcis dewasa dengan harga Rp. 100.000,-.
Buatlah algoritma untuk membaca banyaknya karcis anak-anak dan dewasa
yang akan dibeli, lalu menghitung dan menampilkan harga total karcis yang
dibeli.

5. Perbaiki Algoritma MAX_3 sehingga dapat digunakan untuk mencari


bilangan maksimum dan minimum dari 3 bilangan.

6. Tulis kembali Algoritma MAX_3 sehingga untuk mencari bilangan yang


terbesar dari 3 bilangan tidak menggunakan If bertingkat tetapi menggunakan
If sederhana.

7. Sebuah kota mengelompokkan nilai indeks polusi yang lebih kecil dari 35
sebagai “Nyaman”, antara 35 sampai 60 sebagai “Tidak Nyaman”, dan di atas
60 sebagai “Berbahaya”. Buatlah algoritma untuk membaca nilai indeks polusi
lalu menampilkan kelompok yang sesuai.

8. Modifikasi algoritma pada no 3 di atas sehingga dapat diketahui kelompok


nilai nya sesuai ketentuan berikut ini:
Nilai Akhir Kelompok Nilai
90.0 – 100.0 A
80.0 – 89.9 B
70.0 – 79.9 C
60.0 – 69.9 D
50.0 - 59.9 E
kurang dari 50.0 F

Modifikasikan pula bentuk laporannya.


9. Modifikasi algoritma pada no 4 di atas sehingga dapat digunakan untuk 3
macam jenis karcis, yaitu anak-anak Rp. 50.000,-, dewasa Rp.100.000,- dan
orang tua Rp. 75.000,-
10. Modifikasikan algoritma pada no 4 di atas untuk jenis karcis sesuai tabel di
halaman berikut.

BAB 2 : Pemrograman Terstruktur - 42


Algoritma I

Jenis Karcis Harga


Anak-anak Rp. 100.000,-
VIP balcon Rp. 1.000.000,-
Wing balcon Rp. 700.000,-
Upper balcon Rp. 500.000,-
VIP Festival Rp. 400.000,-
Festival Rp. 200.000,-

11. Perusahaan air bersih menagih pelanggannya berdasarkan jumlah pemakaian


air sesuai tabel berikut ini:
Jumlah pemakaian (m3) Tagihan .
0 – 100 Rp. 200.000,-
101 – 300 Rp. 200.000,- + Rp. 2.500,- untuk setiap m3 di atas 100
lebih dari 300 Rp. 500.000,- + Rp. 3.000,- untuk setiap m3 di atas 300

Pembacaan angka meteran air dilakukan tiap bulan. Buatlah algoritma untuk
membaca nama pelanggan, angka meter bulan lalu dan angka meter bulan ini,
lalu menghitung jumlah pemakaian air dan jumlah tagihan. Buatlah slip
tagihan yang berisi nama pelanggan, jumlah pemakaian air dan jumlah tagihan
yang harus dibayar.

12. Jika diketahui angka meteran air berupa counter yang terdiri dari 4 digit,
perbaiki algoritma di atas sehingga dapat mengatasi kemungkinan angka
meter bulan ini lebih kecil dari angka meter bulan lalu.

13. Pengembang apartemen melakukan promosi penjualan sebagai berikut:


- Pembayaran tunai langsung: discount 10%
- Pembayaran tunai bertahap (dicicil 6 kali dalam 6 bulan): discount 5%
- Pembayaran kredit pendek (dicicil dalam 12 kali dalam 12 bulan): tidak
discount
- Pembayaran kredit menengah (dicicil dalam 24 kali dalam 24 bulan):
dikenai biaya bunga 10%
- Pembayaran kredit panjang (dicicil dalam 60 kali dalam 60 bulan): dikenai
biaya bunga 25%
Buatlah program untuk membaca harga apartemen dan jenis pembayaran lalu
menghitung besarnya pembayaran (total) yang harus dilakukan pembeli dan
tiap bulan jika membayar cicilan.

BAB 2 : Pemrograman Terstruktur - 43


Algoritma I

14. Wisma TENANG mempunyai 5 macam kamar yang dapat disewa yaitu single,
double, keluarga, VIP, dan bungalow dengan harga sewa per malam berturut-
turut Rp. 200.000,-, Rp. 350.000,-, Rp. 500.000,-, Rp. 450.000,- dan
Rp.750.000,-. Buatlah program untuk menanyakan nama tamu, kamar yang
dipilih, lama menginap lalu menghitung biaya menginap. Sebagai output
cetaklah bukti pembayaran yang berisi besarnya biaya yang harus dibayar oleh
tamu beserta pajak pembangunan 15%.

15. Tulis kembali potongan algoritma berikut sehingga lebih mudah dibaca:

If (X < Y) { if (V < W)
{J=X}
Else { if (X > Y) { If (Y < W ) { J = Y }
Else { J = V } }
Else { if (X < W) { J = W }
}
}
} Else { J = X + W }

2.5. Kondisi Majemuk


Pada subbab sebelumnya, kondisi ditampilkan dalam bentuk ekspresi
logika sederhana yang menggunakan operator relasional. Jika ada lebih dari satu
kondisi yang perlu dievaluasi maka tiap kondisi harus dievaluasi satu persatu
dalam instruksi if-bertingkat. Dalam beberapa kasus hal ini dapat
membingungkan. Ada alternatif lain untuk mengevaluasi kondisi-kondisi itu, yaitu
dengan menggunakan operator logika AND, OR atau NOT. Dengan cara ini
beberapa kondisi dapat dievaluasi sekaligus sebelum menentukan langkah
selanjutnya. Ekspresi yang menggunakan operator logika ini disebut sebagai
kondisi majemuk (compound conditions). Yang perlu diperhatikan dalam kondisi
majemuk adalah semua operand-nya harus dalam bentuk ekspresi logika (bernilai
TRUE atau FALSE). Hasil dari masing-masing operator logika dapat dilihat pada
tabel 3.3 dalam subbab sebelumnya.

Sebagai contoh, lihat kembali algoritma mencari bilangan yang terbesar


dari tiga bilangan (Algoritma MAKS_3). Dengan menggunakan operator logika

BAB 2 : Pemrograman Terstruktur - 44


Algoritma I

AND atau &&, dapat dibandingkan A dengan B dan langsung dilanjutkan dengan
membandingkan A dengan C dalam satu kondisi dari instruksi IF. Jika semua
perbandingan menghasilkan nilai TRUE maka A adalah bilangan yang terbesar.
Demikian pula dengan bilangan lainnya, lihat algoritma MAX_3 (revisi 1).

Algoritma MAX_3_revisi_ 1
Menentukan bilangan terbesar dari 3 bilangan. Variabel A, B, C
berisi bilangan yang dibaca. MAX berisi bilangan yang terbesar.
Semua variabel bertipe integer.
1. [memasukkan 3 bilangan]
Read(A,B,C)
2. [menentukan bilangan yang terbesar]
If ( A>B && A>C )
{ MAX = A
}
3. If ( B>A && B>C )
{ MAX = B
}
4. If ( C>A && C>B )
{ MAX = C
}
5. [mencetak bilangan yang terbesar]
Write(“Bilangan terbesar adalah “, MAX)
6. [selesai]
Halt

Jika dibandingkan dengan algoritma MAKS_3, instruksi pada algoritma


hasil revisi ini lebih singkat, lebih mudah dibaca dan dipahami. Tetapi dengan
adanya deretan instruksi IF (langkah 3 sampai 5), eksekusi algoritma akan lebih
lama karena setiap instruksi IF harus dievaluasi. Berbeda jika digunakan instruksi
IF-bertingkat, bila suatu kondisi telah terpenuhi maka kondisi berikutnya tidak
perlu dievaluasi lagi.

Sebagai contoh berikutnya, kondisi majemuk digunakan untuk


menentukan apakah seseorang dapat diberikan kredit atau tidak berdasarkan
kriteria:
a. Jika pemohon adalah sarjana dan sudah bekerja lebih dari 2 tahun maka dapat
diberikan kredit
b. Jika pemohon bukan sarjana tetapi bekerja lebih dari 4 tahun maka dapat
diberikan kredit

BAB 2 : Pemrograman Terstruktur - 45


Algoritma I

c. Selain di atas, maka permohonan kredit ditolak

Untuk masalah di atas, algoritmanya adalah:

Algoritma Kredit
Menentukan apakah pemohon dapat diberikan kredit atau tidak
berdasarkan lama kerja dan lulus sarjana. Variabel NAMA berisi
nama pemohon, variabel SAR adalah variabel char berisi ‘Y’ jika
pemohon adalah sarjana, variabel LAMA berisi lama kerja.
1. [memasukkan nama pemohon]
Read(NAMA)
2. [memasukkan kesarjanaan pemohon]
Write (“Apakah anda seorang sarjana? (Y atau T) “)
Read (SAR)
3. [Memasukkan lama kerja]
Write (“Berapa lama anda sudah bekerja? (tahun) ”)
Read (LAMA)
4. [memproses permohonan]
If ( SAR == ‘Y’ && LAMA >= 2)
{ Write (”Selamat “, NAMA)
Write (“ Permohonan kredit disetujui” )
}
Else If (( SAR != ‘Y’ && LAMA >= 4)
{ Write (”Selamat “, NAMA)
Write (“ Permohonan kredit disetujui” )
}
Else
{ Write (“Maaf “, NAMA)
Write (“ Permohonan kredit tidak disetujui” )
}
5. [selesai]
Halt

Pada algoritma di atas, tidak digunakan deretan instruksi IF tetapi


menggunakan instruksi IF-ELSE untuk mempersingkat pemeriksaan deretan
kondisi IF. Pada langkah 4, penggunaan operator logika dapat mempersingkat
pemeriksaan kondisi dalam IF, karena ada 2 kondisi yang dapat diperiksa
sekaligus yaitu SAR == ‘Y’ dan LAMA >= 2. Dan dengan menggunakan operator
AND maka kedua kondisi tersebut harus bernilai TRUE untuk dapat memenuhi
kriteria pemberian kredit. Jika salah satu kriteria tidak dipenuhi maka pemeriksaan
akan dilanjutkan ke instruksi ELSE berikutnya. Tetapi jika kriteria sudah dipenuhi
maka instruksi dilanjutkan ke langkah berikutnya yaitu langkah ke 5.

BAB 2 : Pemrograman Terstruktur - 46


Algoritma I

Dari pembahasan di atas, dapat dilihat bahwa penggunaan instruksi IF bertingkat


dapat mengurangi pengujian yang tidak perlu jika dibandingkan dengan deretan
instruksi IF saja.

LATIHAN SOAL SUBBAB 2.5


1. Diasumsikan A, B, C, dan D adalah variabel integer, dan S1, S2, S3 dan S4
adalah instruksi.
a. Gunakan ekspresi logika sederhana dan if bertingkat untuk ekspresi kondisi
majemuk berikut ini:

If ( (A<B && CD) && (B>D || B < C) )


{ S1 }
Else
{ S2 }

b. Gunakan ekspresi kondisi majemuk untuk mengeksekusi S1, S2, S3, dan S4
dari instruksi if bertingkat berikut ini:
If ( A > B )
{ If ( B  C )
{ If ( C != D )
{ S1 }
Else
{ S2 }
}
Else
{ S3 }
}
Else
{ S4 }

2. Terangkan apakah pasangan dari potongan algoritma berikut ini sama atau
berbeda.
a. If ( X < Y ) If ( X < Y AND X = = 10 )
{ If ( X = = 10 ) { write (X) }
{ write (X) } else
else { write (Y) }
{ write (Y) }
}
b. If ( X < Y ) If ( X < Y OR X > 10 )
{ write (X) } { write (X) }
else else

BAB 2 : Pemrograman Terstruktur - 47


Algoritma I

{ If ( X > 10 ) { write (Y) }


{ write (X) }
else
( write (Y) }
}

3. Jawablah latihan soal subbab 2.4 nomor 7 dengan menggunakan kondisi


majemuk dan deretan instruksi If.

4. Jawablah latihan soal subbab 2.4 nomor 8 dengan menggunakan kondisi


majemuk dan deretan instruksi If.

5. Perbaiki potongan algoritma pada latihan soal subbab 2.4 no 11 dengan


menggunakan kondisi majemuk dan deretan instruksi If.

6. Modifikasi algoritma MAKS_3 dan MAKS_3_revisi_1 sehingga dapat


mencari bilangan yang terbesar dari 4 bilangan dan 5 bilangan.

7. Modifikasikan algoritma BONUS_REVISI_1 dengan menggunakan kondisi


majemuk dan deretan instruksi IF.

2.6. Instruksi Switch-Case


Cara lain untuk menghindari instruksi IF bertingkat adalah dengan
menggunakan instruksi Switch. Biasanya instruksi Switch ini digunakan jika ada
lebih dari 2 alternatif pilihan atau lebih dari 2 instruksi IF bertingkat. Bentuk
umum dari instruksi Switch adalah:

SWITCH (ekspresi )
{
CASE nilai_1 : instruksi-1
CASE nilai_2 : instruksi-2
……………
CASE nilai_n : instruksi-n
DEFAULT : instruksi-k
}

Artinya:
Jika ekspresi == nilai_1 maka kerjakan instruksi-1

BAB 2 : Pemrograman Terstruktur - 48


Algoritma I

Jika ekspresi == nilai_2 maka kerjakan instruksi-2


.......................
Jika ekspresi == nilai_n maka kerjakan instruksi-n
Jika ekspresi bukan nilai_1, nilai_2, ..., atau nilai_n, maka kerjakan instruksi-k

Instruksi Switch di atas ekuivalen dengan instruksi IF bertingkat berikut ini:


If (ekspresi = = nilai_1)
{ instruksi-1 }
Else
{ If (ekspresi = = nilai_2)
{ instruksi-2 }
Else
{ If .....
.....
Else
{ If (ekspresi = = nilai_n)
{ instruksi-n }
Else
{ instruksi-k }
}
.....
......
}
}

Dengan demikian jika instruksi SWITCH dibandingkan dengan instruksi


IF bertingkat, kelihatan bahwa instruksi SWITCH lebih singkat penulisannya dan
lebih mudah dipahami karena kondisi yang menentukan suatu aksi langsung
terlihat di sebelah kanan instruksi Case. Yang perlu diperhatikan, ekspresi yang
digunakan dalam Switch harus berupa ekspresi integer.

Sebagai ilustrasi untuk penggunaan instruksi Switch dan ekuvivalen


instruksi IF bertingkatnya, dapat dilihat pada proses yang terjadi di teller otomatis
sebuah bank. Proses transaksi dilakukan berdasarkan kode transaksi yang
dimasukkan nasabah. Diasumsikan nasabah hanya melakukan salah satu dari 4
transaksi yaitu: menyetor uang/menabung (kode = ‘S’), mengambil uang (kode =
‘A’), melihat saldo (kode = ‘P’) atau menutup rekening (kode = ‘T’). Dengan
demikian, data inputnya berbentuk seperti contoh berikut:

BAB 2 : Pemrograman Terstruktur - 49


Algoritma I

‘S’ 500000  nasabah menyetor uang sejumlah Rp.500.000


‘P’  nasabah melihat saldo

Untuk masalah ini, dibuat algoritma untuk membaca kode lalu melakukan
transaksi yang sesuai. Dengan menggunakan instruksi IF bertingkat, algoritmanya
adalah sebagai berikut.

Algoritma Transaksi
Algoritma untuk menentukan transaksi nasabah di teller otomatis.
Variabel NOREK bertipe integer, untuk menyimpan nomor rekening
nasabah. Variabel kode bertipe character, untuk menyimpan kode
transaksi. Variabel JUMLAH bertipe real, untuk menyimpan jumlah
uang yang ditransaksikan, variabel SALDO bertipe real, untuk
menyimpan jumlah uang yang disimpan dalam bank. Diasumsikan
SALDO dimasukkan bersama dengan nomor rekening nasabah.
1. [membaca nomor rekening dan saldo]
Read (NOREK, SALDO)
2. [membaca kode transaksi]
Read (KODE)
3. [melakukan transaksi sesuai KODE]
If ( KODE == ‘A’ )
{ Read(JUMLAH)
SALDO = SALDO – JUMLAH
Write(“Ambilah Uang Anda’)
Write(“Saldo Anda sekarang : “, SALDO)
}
Else
{ If ( KODE == ‘S’ )
{ Read(JUMLAH)
SALDO = SALDO+ JUMLAH
Write(“Saldo Anda sekarang : “, SALDO)
}
Else
{ If ( KODE == ‘P’ )
{ Write(“Saldo Tabungan Anda : “, SALDO) }
Else
{ If ( KODE == ‘T’ )
{ Write(“Saldo penutupan tabungan
anda :”, SALDO)
SALDO = 0 }
Else
{ Write (‘Anda salah menekan tombol’) }
}
}
}
4. [selesai]
Halt.

BAB 2 : Pemrograman Terstruktur - 50


Algoritma I

Dengan menggunakan instruksi SWITCH, maka algoritmanya menjadi seperti


berikut.
Algoritma Transaksi_2
Algoritma untuk menentukan transaksi nasabah di teller otomatis
dengan menggunakan instruksi Switch.
Variabel NOREK bertipe integer, untuk menyimpan nomor rekening
nasabah. Variabel kode bertipe character, untuk menyimpan kode
transaksi. Variabel JUMLAH bertipe real, untuk menyimpan jumlah
uang yang ditransaksikan, variabel SALDO bertipe real, untuk
menyimpan jumlah uang yang disimpan dalam bank. Diasumsikan
SALDO dimasukkan bersama dengan nomor rekening nasabah.
1. [membaca nomor rekening dan saldo]
Read (NOREK, SALDO)
2. [membaca kode transaksi]
Read (KODE)
3. [melakukan transaksi sesuai KODE]
Switch ( KODE )
{
Case ‘A’ : Read (JUMLAH)
SALDO = SALDO – JUMLAH
Write (“Ambilah Uang Anda”)
Write(“Saldo Anda sekarang : “, SALDO)
Case ‘S’ : Read (JUMLAH)
SALDO = SALDO + JUMLAH
Write(“Saldo Anda sekarang : “, SALDO)
Case ‘P’ : Write (“Saldo Tabungan Anda : “, SALDO)
Case ‘T’ : Write (“Saldo Penutupan Tabungan Anda : ",
SALDO)
SALDO = 0
Default : Write (“Anda salah menekan tombol”)
}
4. Halt.

Cara mengeksekusi instruksi SWITCH sama dengan instruksi IF


bertingkat, yaitu dimulai dengan menguji instruksi Case yang pertama: apakah
ekspresi = = nilai_1. Jika hasilnya adalah TRUE maka dipilih instruksi_1 untuk
dieksekusi, dan tidak perlu menguji instruksi SWITCH yang berikutnya. Jika
hasilnya FALSE maka pengujian dilanjutkan dengan instruksi Case berikutnya:
apakah ekspresi = = nilai_2 dan seterusnya sampai nilai_n. Jika suatu nilai Case
telah dipilih, maka nilai Case lainnya tidak perlu diuji lagi, dan eksekusi
dilanjutkan ke instruksi berikutnya (ke instruksi setelah instruksi SWITCH ini).
Jika ekspresi tidak memenuhi semua nilai Case yang ada maka dipilih instruksi
‘Default’ atau keluar dari instruksi Switch jika ‘Default’ tidak ada. Untuk lebih

BAB 2 : Pemrograman Terstruktur - 51


Algoritma I

jelasnya dapat dilihat pada ilustrasi flowchart untuk algoritma Transaksi_2 pada
gambar 2.6 berikut.

Yang perlu diperhatikan dalam membuat instruksi SWITCH adalah:


a. Ekspresi pada instruksi Switch sebaiknya bertipe integer atau character, tidak
disarankan bertipe real.
b. semua konstanta dalam nilai CASE harus mempunyai tipe yang sama dan juga
harus sama dengan tipe ekspresinya.
c. satu konstanta dalam nilai CASE hanya dapat memilih satu alternatif instruksi.
Tidak boleh ada sebuah konstanta yang dapat memilih dua alternatif instruksi.

Gambar 2.6 Flowchart dari potongan algoritma transaksi

LATIHAN SOAL BAB 2


1. Buat algoritma untuk mengkonversikan tanggal dalam bentuk dd/mm/yy
menjadi bentuk tanggal bulan tahun. Contoh 01/01/07 menjadi 01 Januari

BAB 2 : Pemrograman Terstruktur - 52


Algoritma I

2007. Algoritma yang anda buat harus membaca 3 angka integer lalu
mencetak tanggal dalam bentuk yang baru

2. Jawablah latihan soal subbab 2.4 nomor 10 dengan menggunakan instruksi


SWITCH.
3. Jawablah algoritma pada bab 2.3 nomor 13 dengan menggunakan instruksi
Switch
4. Jawablah algoritma pada bab 2.3 nomor 14 dengan menggunakan instruksi
Switch
5. Buatlah algoritma untuk membuat kalkulator sederhana yang dapat melakukan
operasi tambah (+), kurang (-), kali (*) dan bagi (/). Untuk menggunakan
kalkulator, anda memasukkan angka, operator, dan angka. Angka dalam jenis
real, dan operator dalam jenis karakter. Sebagai output cetaklah angka dan
operator yang dimasukkan beserta jawabannya. Juga cetak pesan kesalahan
jika terjadi kesalahan input. Contoh input: 25.6 + 15.8,
maka outputnya: 25.6 + 15.8 = 41.4

6. Biaya asuransi ladang pertanian yang standar adalah 3.5 persen dari nilai
tanggungan dikalikan luas tanah. Tetapi untuk ladang kacang kedelai, kentang,
bawang merah dan cabai, biaya asuransinya adalah 2 kali biaya standar. Dan
untuk ladang padi dan jagung biaya asuransinya adalah 1.5 kali biaya standar.
Buatlah algoritma untuk membaca jenis ladang, nilai tanggungan dan luas
tanah lalu menghitung biaya asuransi dan menampilkan hasilnya. Gunakanlah
tipe data enumerasi untuk jenis ladang.

7. Buatlah algoritma untuk menampilkan menu yang berisi macam-macam


bentuk bangun 2 dimensi (segitiga, persegi panjang, bujur sangkar, lingkaran,
jajaran genjang). Berdasarkan bentuk yang dipilih dari menu, mintalah data
yang diperlukan untuk menghitung luas dan keliling serta menampilkan
hasilnya.
8. Kartu kredit ABC yang bekerja sama dengan restoran XYZ memberikan
promosi sebagai berikut:
a. Jika tagihan kurang dari Rp. 500.000,- maka tidak diberikan diskon

BAB 2 : Pemrograman Terstruktur - 53


Algoritma I

b. Jika tagihan lebih Rp 500.000 dan menggunakan kartu kredit ABC maka
mendapatkan diskon 25%. Jika tidak menggunakan kartu kredit ABC maka
hanya mendapatkan diskon 10%.
Buatlah algoritma untuk menerima input berupa tagihan dan cara pembayaran
lalu menghitung diskon jika ada dan mencetak slip tagihan. Sesuai dengan
aturan pemerintah, tagihan akan dikenakan pajak Restoran sebesar 11% dan
biaya layanan sebesar 5%. Tampilkan total tagihannya.
9. Sebuah toko ritel memberikan promosi seperti tabel di bawah ini. Buatlah
algoritma untuk mencetak slip pembayaran yang berisi nama barang, harga
satuan, banyaknya barang, total harga barang, menghitung besarnya diskon
jika ada, lalu menampilkan harga barang yang harus dibayar.
banyaknya barang yang dibeli diskon
>= 10 5%.
>= 25 10%
>= 50 15%
>=100 20%

Tambahkan dalam algoritma, instruksi untuk membaca uang yang diterima,


jika lebih besar dari harga barang maka hitung uang kembaliannya

BAB 2 : Pemrograman Terstruktur - 54

Anda mungkin juga menyukai