Algoritma I
BAB II PEMROGRAMAN PEMROGRAMAN TERSTRUKTUR 2.1. Pendahuluan Progra Program m sebaik sebaiknya nya dibuat dibuat dengan dengan urutan urutan yang yang logis logis sehingg sehinggaa mudah 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, ini, instru instruksi ksi diekse dieksekus kusii satu satu per satu, satu, masing masing-ma -masin sing g sekali, sekali, sesuai sesuai dengan dengan urutannya, mulai dari instruksi pertama lalu instruksi kedua dan seterusnya. Yang perlu diperhatikan adalah baha suatu instruksi tidak akan dieksekusi jika instruksi sebelumnya belum selesai dieksekusi. !entuk umum struktur sekuensial adalah " #. Instruksi ke # $. Inst Instru ruks ksii ke $ %. Inst Instru ruks ksii ke % &&& n. 'alt.
Strukt Struktur ur sekuen sekuensial sial ini banyak banyak diguna digunakan kan oleh oleh algori algoritma tma yang yang telah telah dibahas dibahas di bab #. Salah satunya satunya adalah Algoritma Algoritma ()*A+, ()*A+, ini adalah contoh contoh algoritma yang menggunakan struktur sekuensial.
!A! $ " Pemrograman *erstruktur *erstruktur
$
Algoritma I
2.3. Eksresi !"#ika Sebelum pembahasan dilanjutkan dengan struktur lainnya, akan dibahas dulu jenis ekspresi yang lain yaitu ekspresi logika. )kspresi logika digunakan dalam struktur seleksi dan struktur pengulangan untuk menentukan apakah suatu proses dikerjakan atau tidak berdasarkan hasil dari ekspresi logika tersebut. !erbeda dengan ekspresi aritmetika yang menghasilkan konstanta numerik yang jangkauannya hampir tidak terbatas, ekspresi logika hanya menghasilkan satu dari dua konstanta yaitu *) atau /A0S). +onstanta ini disebut konstanta logika dan 1ariabel yang menyimpan konstanta logika ini disebut 1ariabel logika. 2ariabel logika harus didefinisikan pada bagian deklarasi dari algoritma. Ada $ macam operator yang digunakan dalam ekspresi logika yaitu" #. Oerat"r relasi"nal " macam-macam simbol operator relasional dan artinya dapat dilihat dilihat pada tabel $.# di baah ini. !entuk !entuk umum ekspresi logika yang menggunakan operator relasional adalah" eksresi$1 "erat"r$relasi"nal eksresi$2
)kspre )kspresi3 si3# # dan ekspre ekspresi3 si3$ $ dapat dapat berupa berupa ekspre ekspresi si aritmet aritmetika ika,, atau berupa berupa konstanta atau 1ariabel yang bertipe numerik atau string. Ta%el 2.1 Oerat"r Relasi"nal Relasi"n al Si&%"l 4 5 66 atau 46 atau 56 76
Arti
0ebih kecil dari 0ebih besar dari Sama dengan 0ebih kecil dari atau sama dengan 0ebih besar dari atau sama dengan *idak sama dengan
Seba Sebaga gaii cont contoh oh,, dike diketa tahu huii A, !, dan dan ( adala adalah h 1ari 1ariab abel el integ integer er yang yang berturut-turut berisi angka %, 8 dan 9 a. ( 76 #: #: 6 .......
asilnya" h as
*)
b. A ' ! 6 .....
hasilnya" has
/A0S)
c. !$ 8; 8;A;( 6 .....
hasilnya"
/A0S)
!A! $ " Pemrograman *erstruktur *erstruktur
$<
Algoritma I
=ika ada beberapa operator relasional dalam suatu ekspresi, maka ekspresi dikerjakan mulai dari kiri ke kanan. )kspresi logika yang menggunakan operator relasional disebut ekspresi logika sederhana. $. Oerat"r l"#ika" macam-macam simbol operator logika, arti serta urutan pengerjaannya dapat dilihat pada tabel $.$ di baah ini. !entuk umum ekspresi logika yang menggunakan operator logika" eksresi$1 "erat"r$l"#ika eksresi$2
)kspresi3# dan ekspresi3$ adalah konstanta atau 1ariabel yang bertipe logika, atau ekspresi logika lainnya. 'asil dari ekspresi logika dapat dilihat pada tabel $.%. *abel ini biasanya disebut sebagai truth table. Sebagai contoh diketahui P dan > adalah 1ariabel yang bertipe logika yang berisi masing-masing konstanta logika *) dan /A0S). a. P AN( TRUE 6 .....
h asilnya"
*)
%. NOT > 6 .....
h asilnya"
*)
). ?A 5 !@ OR ?( 4 !@ 6
hasilnya"
/A0S)
)kspresi logika yang menggunakan operator logika disebut ekspresi logika majemuk. Ta%el 2.2 Oerat"r !"#ika Si&%"l B* atau 7 AD atau B atau EE )>2 )>2
Arti *idakCegasi Dan Atau Sama dengan *idak sama dengan
Urutan en#er*aan # $ % 8 8
Ta%el 2.3 Ta%el +asil Oerat"r !"#ika P dan > adalah 1ariabel logika P
,
P AN( ,
P OR ,
NOT ,
*)
*)
*)
*)
/A0S)
*)
/A0S)
/A0S)
*)
*)
/A0S)
*)
/A0S)
*)
/A0S)
/A0S)
/A0S)
/A0S)
/A0S)
*)
!A! $ " Pemrograman *erstruktur
$F
Algoritma I
=ika 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 G (@ 76 ?A ; (@ OR > AN( A ' ?! H (@ 6 .............. 'asilnya"
?% G 9@ 76 ? % ; 9@ OR /A0S) AN( % 5 ?8 H 9@ <
76
#9
OR /A0S) AN( % 5
*)
OR /A0S) AN(
*)
OR
?-#@
*)
/A0S)
6 6 6 6
*)
!ATI+AN SOA! SUBBAB 2.3
=aablah soal-soal ekspresi logika berikut ini, jika diketahui A, !, dan ( adalah 1ariabel integer yang masing-masing berisi angka <, #: dan #$, serta P dan > adalah 1ariabel logika yang masing-masing berisi nilai *) dan /A0S). #. P AN( -A!SE 6 ..... $. NOT ?A G ! 4 ( G 9@ 6 ..... %. ?A 5 !@ AN( ?( 4 !@ 6 ..... 8. NOT P OR NOT > 6 ..... 9. > OR TRUE AN( ?A G ! 6 (@ 6 ..... . NOT ?! 5 A@ OR ?! 6 6 (@ NE, P 6 ..... . ?! (@ E, ?! 76 ( H A@ AN( P OR NOT > 6 ..... <. ??( H !@ ; A 5 (@ OR ??S>*?! ; A@ DI2 (@ 46 ?( H A@@ 6 .....
2./. 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 *) atau /A0S). =ika kondisi bernilai *) maka suatu alternatif pekerjaan dipilih, jika kondisi bernilai /A0S) maka dipilih alternatif pekerjaan yang lain. Struktur seleksi pada umumnya menggunakan instruksi I/. Ada macam-macam bentuk instruksi I/ yang akan dipelajari.
!A! $ " Pemrograman *erstruktur
%:
Algoritma I
2./.1. Instruksi I0 sederhana Instruksi If sederhana digunakan untuk menjaab permasalahan apakah suatu pekerjaan dilakukan atau tidak. Dalam hal ini, jika kondisi dipenuhi ?*)@ maka akan dilakukan suatu pekerjaan, tetapi jika tidak dipenuhi ?/A0S)@ maka tidak melakukan apapun. !entuk umumnya adalah sebagai berikut dan ilustrasi flochart-nya dapat dilihat pada gambar $.#. I- k"ndisi alternati0 *ika k"ndisi TRUE 4
Sebagai contoh, lihat potongan algoritma untuk membuat nilai absolut berikut ini" If nilai < 0 {nilai = -nilai
}
Dalam potongan algoritma di atas, jika kondisi bernilai *) ?nilai kurang dari :@ maka instruksi Jnilai 6 -nilaiK dikerjakan sehingga akan menghasilkan nilai yang positif. =ika kondisi bernilai /A0S) ?nilai lebih dari atau sama dengan :@, maka tidak ada instruksi yang perlu dikerjakan, dan eksekusi algoritma dilanjutkan dengan instruksi berikutnya. Lasuk
*rue
)1aluasi +ondisi
/alse
Alternatif *rue
+eluar ?proses berikutnya@
Mambar $.# Ilustrasi flochart untuk instruksi I/ sederhana (ontoh lainnya, lihat potongan algoritma berikut ini"
!A! $ " Pemrograman *erstruktur
%#
Algoritma I
If RATA >= { Write (“ Write (“ Write (“ }
60 Nama siswa = “, NAMA) Nilai = “, RATA) Ana l!l!s")
Dalam potongan algoritma tersebut, jika kondisi bernilai *) ?nilai A*A lebih besar atau sama dengan :@ maka ketiga instruksi NI*) akan dieksekusi, jika kondisi salah ?nilai A*A kurang dari :@ maka tidak dilakukan apapun. Algoritma yang lengkap untuk contoh di atas dapat dilihat di baah ini. Al#$ritma %!l!s Al#$ritma !nt!& men'eta& siswa an# l!l!s N*, N+, N, an N aala. /ariael inte#er an# menim1an ata nilai NR aala. /ariael inte#er an# menim1an nilai rata-rata * 2mema'a !a. nilai ari alat in1!t3 Rea (N*, N+, N, N) + 2men#.it!n# rata-rata ari &e nilai tai3 NR = (N* 4 N+ 4 N 4 N)5 2i&a rata-rata > 60 ma&a l!l!s, 'eta& nama an nilai siswa3 If RATA >= 60 { Write (“ Nama siswa = “, NAMA) Write (“ Nilai = “, RATA) Write (“ Ana l!l!s ") } 7alt
2./.2. Instruksi I05Else !erbeda dari instruksi If sederhana yang hanya mempunyai # alternatif, pada instruksi If-)lse, terdapat $ alternatif, yaitu ?#@ jika kondisi *) dan ?$@ jika kondisi /A0S). =adi dalam hal ini terdapat $ altrnatif perkerjaan tetapi hanya dipilih # pekerjaan yang akan dilaksanakan. Pemilihan tergantung dari suaatu kondisi yang bernilai * astau /A0S). !entuk umum instruksi ifHelse adalah sebagai berikut ini dan ilustrasi flochart-nya dapat dilihat pada gambar $.$. I- k"ndisi alternati0 *ika k"ndisi TRUE 4 E!SE alternati0 *ika k"ndisi -A!SE 4
!A! $ " Pemrograman *erstruktur
%$
Algoritma I
Lasuk
*rue
)1aluasi +ondisi
Alternatif *rue
/alse
Alternatif /alse
+eluar ?proses berikutnya@
Mambar $.$ /lochart struktur I/ H )0S) Sebagai ilustrasi masalah, misalnya ada dua buah angka yang disimpan dalam 1ariabel A dan !. Ingin diketahui mana dari angka tersebut yang lebih besar. =ika A lebih besar dari ! maka A yang dicetak, tetapi jika ! yang lebih besar maka ! yang dicetak. Disini ada $ buah alternatif pekerjaan yaitu ?#@ mencetak A atau ?$@ mencetak !. Pekerjaan yang dipilih tergantung dari hasil perbandingan apakah A lebih besar atau tidak lebih besar dari !. ntuk membandingkan A dan ! digunakan ekspresi logika" A 5 !, lalu digabungkan dengan instruksi I/ H )0S) untuk memilih alternatif pekerjaan yang akan dilakukan sehingga potongan algoritma adalah" I8 ( A > 9) { Write (“9ilan#an an# teresar : “, A) } ;%; { Write (“9ilan#an an# teresar : “, 9) }
Algoritma lengkap untuk masalah di atas dapat dilihat pada Algoritma !)SA berikut ini dan ilustrasi flochart-nya dapat dilihat pada gambar $.%.
Al#$ritma 9;AR Menent!&an ilan#an an# lei. esar i antara + !a. ilan#an A an 9 aala. /ariael inte#er * 2memas!&&an !a ilan#an3 Rea (A,9)
!A! $ " Pemrograman *erstruktur
%%
Algoritma I
+ 2memanin#&an !a ilan#an3 If ( A > 9 ) 2alternatif i&a &$nisi = TR;3 { write (“9ilan#an an# lei. esar : “, A) } 2alternatif i&a &$nisi = 8A%;3 ;lse { write (“9ilan#an an# lei. esar : “, 9) } 2selesai3 7alt
Mambar %.$ /lochart dari Algoritma !)SA
Ilustrasi lain dari penggunaan instruksi if-else ini adalah untuk menentukan apakah seorang pegaai mendapatkan bonus atau tidak. +etentuan itu diambil berdasarkan kriteria" =ika ?0embur H ?$C% ; Absen@ 5 :.:@ maka pegaai akan mendapatkan bonus p. #::.:::,-. =ika ?0embur H ?$C% ; Absen@ 46 :.:@ maka pegaai tidak mendapatkan bonus. Algoritma untuk menjaab masalah di atas adalah" Al#$ritma M;N;NT?AN@9N Al#$ritma !nt!& mema'a nama 1e#awai (NAMA), lama &era lem!r (%;M9R), an lama asen (A9;N), lal! menent!&an a1a&a. 1e#awai mena1at&an $n!s (9N) ata! tia& Bariael
!A! $ " Pemrograman *erstruktur
%8
Algoritma I
NAMA erti1e &ara&ter Bariael %;M9R, A9;N an 9N erti1e inte#er * 2memas!&&an ata 1e#awai3 Rea (NAMA, %;M9R, A9;N) + 2men#.it!n# $n!s3 If ( %;M9R C (+DA9;N5) 0 ) { 9N = 0 } ;lse { 9N = *00000 } 2men'eta& .asil3 Write (“9$n!s !nt!& : ", NAMA, “ aala. R1 “,9N) 2selesai3 7alt
2./.3 Instruksi I0 Bertin#kat Dalam beberapa kasus, kondisi yang harus die1aluasi ada lebih dari dua atau setelah memilih suatu alternatif, orang dihadapkan pada pilihan yang lain sehingga untuk hal ini dibuat instruksi I/ yang berada dalam instruksi I/ dari kondisi yang pertama. Instruksi I/ yang berada dalam instruksi I/ yang lain ini disebut I/ !)*IM+A* ? NESTED IF @. Sebagai contoh, misalnya ingin ditentukan bilangan yang terbesar dari % bilangan. (aranya adalah dengan menguji bilangan secara berpasangan. Lulamula dibandingkan $ bilangan, misalnya A dan !. Setelah didapat yang terbesar dari kedua bilangan itu, bandingkan lagi dengan bilangan yang ketiga, (, sehingga didapat bilangan yang terbesar. Diasumsikan isi nilai 1ariabel A,!, dan ( tidak ada yang sama. Algoritmanya dapat dilihat pada Algoritma LAO3% sedang ilustrasi flochart-nya dapat dilihat pada gambar %.8. Al#$ritma MAE@ Al#$ritma !nt!& menent!&an ilan#an teresar ari ilan#an Bariael A, 9, F erisi ilan#an an# ia'a Bariael MAE erisi ilan#an an# teresar em!a /ariael erti1e inte#er * 2memas!&&an ilan#an3 Rea (A,9,F) + 2menent!&an ilan#an an# teresar en#an memanin#&anna se'ara er1asan#an3 If ( A>9 ) { if ( A>F ) { MAE = A } 2 A > 9, A > F 3 else
!A! $ " Pemrograman *erstruktur
%9
Algoritma I
{ MAE = F }
2F>A>93
} else { if ( 9>F ) { MAE = 9 } 2 9 > A, 9 > F 3 else { MAE = F } 2F>9>A3 } 2men'eta& ilan#an an# teresar3 Write(“9ilan#an teresar aala. “, MAE) 2selesai3 7alt
Perhatikan, pada algoritma di atas, masing-masing instruksi I/ ditulis dengan indentasi yang berbeda untuk memudahkan pembacaan.
Mambar %.8 /lochart dari Algoritma LAO3%
!A! $ " Pemrograman *erstruktur
%
Algoritma I
ntuk contoh yang kedua, struktur I/-bertingkat digunakan untuk menjaab masalah berikut ini" Sebuah perusahaan ingin memberikan bonus tahunan kepada pegaainya berdasarkan jumlah jam kerja lembur dan jam absen ?tidak berkerja@ si pegaai sesuai tabel %.8 di baah ini. Data yang disiapkan untuk tiap pegaai adalah nama pegaai, lama kerja lembur ?dalam jam@, dan lama absen ?dalam jam@. ntuk itu dibuat algoritma untuk membaca data pegaai, lalu ditentukan banyaknya bonus yang diterima si pegaai. +etika menentukan bonus ini, dibutuhkan struktur I/-bertingkat karena ada 9 kriteria yang perlu die1aluasi. Yang perlu diperhatikan adalah baha setiap pegaai hanya menerima satu katagori bonus. Algoritmanya dapat dilihat pada Algoritma !BS berikut. *abel %.8 +riteria pemberian bonus tahunan !e&%ur 6 273 8 A%sen Ban9akn9a B"nus +urang dari : p. :,p. #::.:::,Antara : sampai #: jam p. $::.:::,5 #: jam tetapi $: jam p. %::.:::,5 $: jam tetapi %: jam p. 8::.:::,5 %: jam tetapi 8: jam 5 8: jam p. 9::.:::,-
Al#$ritma 9N Al#$ritma !nt!& mema'a nama 1e#awai (NAMA), lama &era lem!r (%;M9R), an lama asen (A9;N), lal! menent!&an ana&na $n!s (9AGAR) an# iterima si 1e#awai Bariael NAMA erti1e &ara&ter Bariael %;M9R, A9;N an 9AGAR erti1e inte#er * 2memas!&&an ata 1e#awai3 Rea (NAMA, %;M9R, A9;N) + 2men#.it!n# $n!s3 If ( %;M9R C (+DA9;N5) 00 ) { 9AGAR = 0 } ;lse { If ( %;M9R C (+DA9;N5) *00 ) { 9AGAR = *00000 } ;lse { If ( %;M9R C (+DA9;N5) +00 ) { 9AGAR = +00000 } ;lse { If ( %;M9R C (+DA9;N5) 00 ) { 9AGAR = 00000 }
!A! $ " Pemrograman *erstruktur
%
Algoritma I
;lse { If ( %;M9R C (+DA9;N5) 00 ) { 9AGAR = 00000 } ;lse { 9AGAR = H00000 } } } } } 2men'eta& .asil3 Write (“9$n!s ta.!nan !nt!& : “, NAMA, “ aala. R1 “,9AGAR) 2selesai3 7alt
Perhatikan instruksi I/ bertingkat pada langkah ke dua. Lisalnya seorang pegaai mempunyai lama kerja lembur #: jam dan lama absen % jam. Dengan mengurangi jam lembur dengan $C% jam absen akan menghasilkan < jam sehingga berdasarkan *abel %.8 si pegaai berhak mendapatkan bonus p. #::.:::,-. ntuk pegaai ini, hasil pengujian kondisi pertama ?0)L! H $;A!S) C%@ :@ di langkah ke dua adalah /A0S) sehingga dipilih instruksi )0S) untuk dieksekusi. Dalam instruksi )0S) ini ada instruksi I/ yang kedua. Pengujian kondisi pada I/ yang kedua ini menghasilkan nilai *) sehingga instruksi J ?!AYA 6 #:::::@ QK dieksekusi. +arena instruksi yang lain berada di dalam instruksi )0S) dari I/ yang pertama maka instruksi tersebut tidak dieksekusi dan eksekusi algoritma dilanjutkan ke langkah ke %. ntuk kasus ini, hanya perlu menguji dua kondisi untuk menentukan bonus yang dibayarkan. Lisalnya seorang pegaai lain mempunyai lama kerja lembur %: jam dan lama absen #$ jam. Dengan mengurangi jam lembur dengan $C% jam absen akan menghasilkan $$ jam sehingga berdasarkan *abel %.8 si pegaai berhak mendapatkan bonus p. %::.:::,-. ntuk pegaai ini, hasil pengujian I/ pertama ?0)L! H $;A!S)C% :@ di langkah ke dua adalah /A0S) sehingga dipilih instruksi )0S). Dalam instruksi )0S) ini diuji kondisi I/ yang ke dua yaitu ?0)L! H $;A!S)C% #:@, dan hasilnya adalah /A0S) sehingga dipilih instruksi )0S) lagi. Dalam instruksi )lse ini diuji kondisi yang ke tiga ?0)L! H $;A!S)C% $:@, dan hasilnya adalah /A0S) sehingga dipilih instruksi )0S) lagi. Dalam instruksi )0S) ini diuji kondisi yang ke empat
!A! $ " Pemrograman *erstruktur
%<
Algoritma I
?0)L! H $;A!S)C% %:@, dan hasilnya adalah *) sehingga instruksi J ?!AYA 6 %:::::@ QK dieksekusi. Instruksi lainnya berada di dalam instruksi )lse 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 baha struktur I/-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"
?0)L! H $;A!S)C%@ dalam suatu 1ariabel ?misalnya +I*)IA@ sehingga perhitungan kondisi hanya dilakukan satu kali saja, yaitu sebelum memasuki instruksi I/-bertingkat. Dengan demikian
algoritma !BS dire1isi menjadi
Algoritma !BS3re1isi3# berikut ini.
Al#$ritma 9N@re/isi@* Al#$ritma !nt!& mema'a nama 1e#awai (NAMA), !mla. am &era lem!r (%;M9R), an !mla. am &era asen (A9;N), lal! menent!&an era1a $n!s (9AGAR) an# iterima si 1e#awai erasar&an ?RIT;RIA Bariael NAMA erti1e &ara&ter, /ariael %;M9R, A9;N an 9AGAR erti1e inte#er Bariael ?RIT;RIA erti1e real * 2memas!&&an ata 1e#awai3 Rea (NAMA, %;M9R, A9;N) + 2men#.it!n# &riteria3 ?RIT;RIA = %;M9R C (+DA9;N5) 2menent!&an $n!s3 If ( ?RIT;RIA 0 ) { 9AGAR = 0 } ;lse { If ( ?RIT;RIA *00 ) { 9AGAR = *00000 } ;lse { If ( ?RIT;RIA +00 ) { 9AGAR = +00000 } ;lse { If ( ?RIT;RIA 00 ) { 9AGAR = 00000 } ;lse { If ( ?RIT;RIA 00 ) { 9AGAR = 00000 } ;lse { 9AGAR = H00000 }
!A! $ " Pemrograman *erstruktur
%F
Algoritma I
} } } } 2men'eta& .asil3 Write (“9$n!s ta.!nan !nt!& : “, NAMA, “ aala. R1 “,9AGAR) H 2selesai3 7alt
ntuk lebih jelasnya, alur kontrol program dapat dilihat pada gambar flochart dari algoritma !BS3re1isi3# ini ?gambar $.9@ di baah ini.
Mambar $.9 /lochart dari algoritma !BS3re1isi3# 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
!A! $ " Pemrograman *erstruktur
8:
Algoritma I
termasuk dalam kelompok If-else yang mana ?lihat penulisan alogoritma !BS 3re1isi3# di atas@. b. Setiap instruksi If harus ditulis dengan lengkap maksudnya harus mempunyai alternatif instruksi jika kondisi menghasilkan nilai *).
!ATI+AN SOA! SUBBAB 2./
#. !uatlah potongan algoritma untuk masalah berikut ini" a. =ika +BD) 6 # maka baca 1ariabel O dan Y, lalu hitung dan tampilkan jumlah dari O$ dan Y$. b. =ika =ANA! 6 RY maka baca 1ariabel nama, nilai *S dan nilai AS, hitung nilai akhir sama dengan rata-rata dari nilai *S dan nilai AS, lalu tampilkan nama dan nilai akhir. c. =ika 1ariabel A bernilai di antara # dan 9 maka ! sama dengan #CA$, selain itu, ! sama dengan A$. d. *ampilkan pesan J*A' +A!ISA*K jika 1ariabel *A' merupakan angka tahun kabisat atau pesan J!+A *A' +A!ISA*K jika 1ariabel *A' bukan angka tahun kabisat. ?*ahun kabisat adalah tahun yang habis dibagi dengan 8@. e. =ika 0amaStudi 46 8 maka tulis keterangan J*epat NaktuK, selain itu tulis keterangan J*idak *epat NaktuK $. ntuk memacu kinerja para pegaainya perusahaan memberikan bonus 9T jika si pegaai dapat menjual barang senilai lebih dari #: juta rupiah. !uatlah algoritma untuk membaca nama pegaai dan besarnya penjualan lalu menentukan besarnya bonus yang diperoleh jika si pegaai memenuhi kriteria. %. ilai akhir mahasisa menentukan apakah si mahasisa lulus atau tidak lulus suatu mata kuliah. +omposisi nilai akhir adalah %:T nilai *S, $:T nilai praktikum dan 9:T nilai AS. Seorang mahasisa dinyatakan lulus jika nilai akhirnya 56 :.:. !uatlah algoritma untuk membaca nama mahasisa, nilai *S, nilai praktikum dan nilai AS, menghitung nilai akhir dan menentukan
!A! $ " Pemrograman *erstruktur
8#
Algoritma I
apakah mahasisa lulus atau tidak. !uatlah laporan yang berisi nama mahasisa, nilai akhir dan keterangan JAnda lulusK atau JAnda tidak lulusK. 8.
Sebuah pertunjukan musik menjual $ macam karcis, yaitu karcis anak-anak dengan harga p. 9:.:::,- dan karcis deasa dengan harga p. #::.:::,-. !uatlah algoritma untuk membaca banyaknya karcis anak-anak dan deasa yang akan dibeli, lalu menghitung dan menampilkan harga total karcis yang dibeli.
9.
Perbaiki Algoritma LAO3% sehingga dapat digunakan untuk mencari bilangan maksimum dan minimum dari % bilangan.
. *ulis kembali Algoritma LAO3% sehingga untuk mencari bilangan yang terbesar dari % bilangan tidak menggunakan If bertingkat tetapi menggunakan If sederhana. . Sebuah kota mengelompokkan nilai indeks polusi yang lebih kecil dari %9 sebagai JyamanK, antara %9 sampai : sebagai J*idak yamanK, dan di atas : sebagai J!erbahayaK. !uatlah algoritma untuk membaca nilai indeks polusi lalu menampilkan kelompok yang sesuai. <. Lodifikasi algoritma pada no % di atas sehingga dapat diketahui kelompok nilai nya sesuai ketentuan berikut ini" ilai Akhir F:.: H #::.: <:.: H
+elompok ilai A ! ( D ) /
Lodifikasikan pula bentuk laporannya. F. Lodifikasi algoritma pada no 8 di atas sehingga dapat digunakan untuk % macam jenis karcis, yaitu anak-anak p. 9:.:::,-, deasa p.#::.:::,- dan orang tua p. 9.:::,#:. Lodifikasikan algoritma pada no 8 di atas untuk jenis karcis sesuai tabel di halaman berikut.
!A! $ " Pemrograman *erstruktur
8$
Algoritma I
=enis +arcis 'arga Anak-anak p. #::.:::,2IP balcon p. #.:::.:::,Ning balcon p. ::.:::,pper balcon p. 9::.:::,2IP /esti1al p. 8::.:::,/esti1al p. $::.:::,##. Perusahaan air bersih menagih pelanggannya berdasarkan jumlah pemakaian air sesuai tabel berikut ini" =umlah pemakaian ?m %@
*agihan
.
: H #::
p. $::.:::,-
#:# H %::
p. $::.:::,- G p. $.9::,- untuk setiap m % di atas #::
lebih dari %::
p. 9::.:::,- G p. %.:::,- untuk setiap m % di atas %::
Pembacaan angka meteran air dilakukan tiap bulan. !uatlah algoritma untuk membaca nama pelanggan, angka meter bulan lalu dan angka meter bulan ini, lalu menghitung jumlah pemakaian air dan jumlah tagihan. !uatlah slip tagihan yang berisi nama pelanggan, jumlah pemakaian air dan jumlah tagihan yang harus dibayar. #$. =ika diketahui angka meteran air berupa counter yang terdiri dari 8 digit, perbaiki algoritma di atas sehingga dapat mengatasi kemungkinan angka meter bulan ini lebih kecil dari angka meter bulan lalu. #%. Pengembang apartemen melakukan promosi penjualan sebagai berikut" -
Pembayaran tunai langsung" discount #:T
-
Pembayaran tunai bertahap ?dicicil kali dalam bulan@" discount 9T
-
Pembayaran kredit pendek ?dicicil dalam #$ kali dalam #$ bulan@" tidak discount
-
Pembayaran kredit menengah ?dicicil dalam $8 kali dalam $8 bulan@" dikenai biaya bunga #:T
-
Pembayaran kredit panjang ?dicicil dalam : kali dalam : bulan@" dikenai biaya bunga $9T
!uatlah program untuk membaca harga apartemen dan jenis pembayaran lalu menghitung besarnya pembayaran ?total@ yang harus dilakukan pembeli dan tiap bulan jika membayar cicilan.
!A! $ " Pemrograman *erstruktur
8%
Algoritma I
#8. Nisma *)AM mempunyai 9 macam kamar yang dapat disea yaitu single, double, keluarga, 2IP, dan bungalo dengan harga sea per malam berturutturut p. $::.:::,-, p. %9:.:::,-, p. 9::.:::,-, p. 89:.:::,-
dan
p.9:.:::,-. !uatlah 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 #9T. #9. *ulis kembali potongan algoritma berikut sehingga lebih mudah dibaca" If (E < G) { if (B < W) {=E} ;lse { if (E > G) { If (G < W ) { = G } ;lse { = B } } ;lse { if (E < W) { = W } } } } ;lse { = E 4 W }
2.:. K"ndisi Ma*e&uk Pada subbab sebelumnya, kondisi ditampilkan dalam bentuk ekspresi logika sederhana yang menggunakan operator relasional. =ika ada lebih dari satu kondisi yang perlu die1aluasi maka tiap kondisi harus die1aluasi satu persatu dalam
instruksi
if-bertingkat.
Dalam
beberapa
kasus
hal
ini
dapat
membingungkan. Ada alternatif lain untuk menge1aluasi kondisi-kondisi itu, yaitu dengan menggunakan operator logika AD, B atau B*. Dengan cara ini beberapa kondisi dapat die1aluasi sekaligus sebelum menentukan langkah selanjutnya. )kspresi 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 *) atau /A0S)@. 'asil dari masing-masing operator logika dapat dilihat pada tabel %.% dalam subbab sebelumnya. Sebagai contoh, lihat kembali algoritma mencari bilangan yang terbesar dari tiga bilangan ?Algoritma LA+S3%@. Dengan menggunakan operator logika
!A! $ " Pemrograman *erstruktur
88
Algoritma I
AD atau , dapat dibandingkan A dengan ! dan langsung dilanjutkan dengan membandingkan A dengan ( dalam satu kondisi dari instruksi I/. =ika semua perbandingan menghasilkan nilai *) maka A adalah bilangan yang terbesar. Demikian pula dengan bilangan lainnya, lihat algoritma LAO3% ?re1isi #@. Al#$ritma MAE@@re/isi@ * Menent!&an ilan#an teresar ari ilan#an Bariael A, 9, F erisi ilan#an an# ia'a MAE erisi ilan#an an# teresar em!a /ariael erti1e inte#er * 2memas!&&an ilan#an3 Rea(A,9,F) + 2menent!&an ilan#an an# teresar3 If ( A>9 A>F ) { MAE = A } If ( 9>A 9>F ) { MAE = 9 } If ( F>A F>9 ) { MAE = F } H 2men'eta& ilan#an an# teresar3 Write(“9ilan#an teresar aala. “, MAE) 6 2selesai3 7alt
=ika dibandingkan dengan algoritma LA+S3%, instruksi pada algoritma hasil re1isi ini lebih singkat, lebih mudah dibaca dan dipahami. *etapi dengan adanya deretan instruksi I- ?langkah % sampai 9@, eksekusi algoritma akan lebih lama karena setiap instruksi I/ harus die1aluasi. !erbeda jika digunakan instruksi I/-bertingkat, bila suatu kondisi telah terpenuhi maka kondisi berikutnya tidak perlu die1aluasi lagi. Sebagai
contoh berikutnya,
kondisi
majemuk
digunakan
untuk
menentukan apakah seseorang dapat diberikan kredit atau tidak berdasarkan kriteria" a.
=ika pemohon adalah sarjana dan sudah bekerja lebih dari $ tahun maka dapat diberikan kredit
b.
=ika pemohon bukan sarjana tetapi bekerja lebih dari 8 tahun maka dapat diberikan kredit
!A! $ " Pemrograman *erstruktur
89
Algoritma I
c.
Selain di atas, maka permohonan kredit ditolak
ntuk masalah di atas, algoritmanya adalah" Al#$ritma ?reit Menent!&an a1a&a. 1em$.$n a1at ieri&an &reit ata! tia& erasar&an lama &era an l!l!s sarana Bariael NAMA erisi nama 1em$.$n, /ariael AR aala. /ariael '.ar erisi JGK i&a 1em$.$n aala. sarana, /ariael %AMA erisi lama &era * 2memas!&&an nama 1em$.$n3 Rea(NAMA) + 2memas!&&an &esaranaan 1em$.$n3 Write (“A1a&a. ana se$ran# saranaL (G ata! T) “) Rea (AR) 2Memas!&&an lama &era3 Write (“9era1a lama ana s!a. e&eraL (ta.!n) ") Rea (%AMA) 2mem1r$ses 1erm$.$nan3 If ( AR == JGK %AMA >= +) { Write ("elamat “, NAMA) Write (“ erm$.$nan &reit iset!!i" ) } ;lse If (( AR = JGK %AMA >= ) { Write ("elamat “, NAMA) Write (“ erm$.$nan &reit iset!!i" ) } ;lse { Write (“Maaf “, NAMA) Write (“ erm$.$nan &reit tia& iset!!i" ) } H 2selesai3 7alt
Pada algoritma di atas, tidak digunakan deretan instruksi I/ tetapi menggunakan instruksi I/-)0S) untuk mempersingkat pemeriksaan deretan kondisi I/. Pada langkah 8, penggunaan operator logika dapat mempersingkat pemeriksaan kondisi dalam I/, karena ada $ kondisi yang dapat diperiksa sekaligus yaitu
SAR == ‘Y’ dan LAMA >= 2.
Dan dengan menggunakan operator
AD maka kedua kondisi tersebut harus bernilai *) untuk dapat memenuhi kriteria pemberian kredit. =ika salah satu kriteria tidak dipenuhi maka pemeriksaan akan dilanjutkan ke instruksi )0S) berikutnya. *etapi jika kriteria sudah dipenuhi maka instruksi dilanjutkan ke langkah berikutnya yaitu langkah ke 9.
!A! $ " Pemrograman *erstruktur
8
Algoritma I
Dari pembahasan di atas, dapat dilihat baha penggunaan instruksi I/ bertingkat dapat mengurangi pengujian yang tidak perlu jika dibandingkan dengan deretan instruksi I/ saja.
!ATI+AN SOA! SUBBAB 2.:
#. Diasumsikan A, !, (, dan D adalah 1ariabel integer, dan S#, S$, S% dan S8 adalah instruksi. a. Munakan ekspresi logika sederhana dan if bertingkat untuk ekspresi kondisi majemuk berikut ini" If ? ?A4! ( D@ ?!5D EE ! 4 (@ @ S# Q )lse S$ Q b. Munakan ekspresi kondisi majemuk untuk mengeksekusi S#, S$, S%, dan S8 dari instruksi if bertingkat berikut ini" If ? A 5 ! @ If ? ! ( @ If ? ( 76 D @ S# Q )lse S$ Q Q )lse S% Q Q )lse S8 Q $. *erangkan apakah pasangan dari potongan algoritma berikut ini sama atau berbeda. a. If ? O 4 Y @ If ? O 6 6 #: @ rite ?O@ Q else rite ?Y@ Q Q b. If ? O 4 Y @ rite ?O@ Q else
If ? O 4 Y AD O 6 6 #: @ rite ?O@ Q else rite ?Y@ Q
If ? O 4 Y B O 5 #: @ rite ?O@ Q else
!A! $ " Pemrograman *erstruktur
8
Algoritma I
If ? O 5 #: @ rite ?O@ Q else ? rite ?Y@ Q
rite ?Y@ Q
Q %. =aablah latihan soal subbab $.8 nomor dengan menggunakan kondisi majemuk dan deretan instruksi If. 8. =aablah latihan soal subbab $.8 nomor < dengan menggunakan kondisi majemuk dan deretan instruksi If. 9. Perbaiki potongan algoritma pada latihan soal subbab $.8 no ## dengan menggunakan kondisi majemuk dan deretan instruksi If. . Lodifikasi algoritma LA+S3% dan LA+S3%3re1isi3# sehingga dapat mencari bilangan yang terbesar dari 8 bilangan dan 9 bilangan. . Lodifikasikan algoritma !BS3)2ISI3# dengan menggunakan kondisi majemuk dan deretan instruksi I/.
2.;. Instruksi SIT=+ eksresi =ASE nilai$1 ? instruksi51 =ASE nilai$2 ? instruksi52 @@@@@ =ASE nilai$n ? instruksi5n (E-AU!T ? instruksi5k 4
Artinya" =ika ekspresi 66 nilai3# maka kerjakan instruksi-#
!A! $ " Pemrograman *erstruktur
8<
Algoritma I
=ika ekspresi 66 nilai3$ maka kerjakan instruksi-$ ....................... =ika ekspresi 66 nilai3n maka kerjakan instruksi-n =ika ekspresi bukan nilai3#, nilai3$, ..., atau nilai3n, maka kerjakan instruksi-k Instruksi Sitch di atas ekui1alen dengan instruksi I/ bertingkat berikut ini" If ?ekspresi 6 6 nilai3#@ instruksi-# Q )lse If ?ekspresi 6 6 nilai3$@ instruksi-$ Q )lse If ..... ..... )lse If ?ekspresi 6 6 nilai3n@ instruksi-n Q )lse instruksi-k Q Q ..... ...... Q Q
Dengan demikian jika instruksi SNI*(' dibandingkan dengan instruksi I/ bertingkat, kelihatan baha instruksi SNI*(' lebih singkat penulisannya dan lebih mudah dipahami karena kondisi yang menentukan suatu aksi langsung terlihat di sebelah kanan instruksi (ase. Yang perlu diperhatikan, ekspresi yang digunakan dalam Sitch harus berupa ekspresi integer. Sebagai ilustrasi untuk penggunaan instruksi Sitch dan eku1i1alen instruksi I/ 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 8 transaksi yaitu" menyetor uangCmenabung ?kode 6 RS@, mengambil uang ?kode 6 RA@, melihat saldo ?kode 6 RP@ atau menutup rekening ?kode 6 R*@. Dengan demikian, data inputnya berbentuk seperti contoh berikut"
!A! $ " Pemrograman *erstruktur
8F
Algoritma I
RS RP
9:::::
nasabah
menyetor uang sejumlah p.9::.::: nasabah melihat saldo
ntuk masalah ini, dibuat algoritma untuk membaca kode lalu melakukan transaksi yang sesuai. Dengan menggunakan instruksi I/ bertingkat, algoritmanya adalah sebagai berikut. Al#$ritma Transa&si Al#$ritma !nt!& menent!&an transa&si nasaa. i teller $t$matis Bariael NR;? erti1e inte#er, !nt!& menim1an n$m$r re&enin# nasaa. Bariael &$e erti1e '.ara'ter, !nt!& menim1an &$e transa&si Bariael M%A7 erti1e real, !nt!& menim1an !mla. !an# an# itransa&si&an, /ariael A%O erti1e real, !nt!& menim1an !mla. !an# an# isim1an alam an& Oias!msi&an A%O imas!&&an ersama en#an n$m$r re&enin# nasaa. * 2mema'a n$m$r re&enin# an sal$3 Rea (NR;?, A%O) + 2mema'a &$e transa&si3 Rea (?O;) 2mela&!&an transa&si ses!ai ?O;3 If ( ?O; == JAK ) { Rea(M%A7) A%O = A%O C M%A7 Write(“Amila. an# AnaK) Write(“al$ Ana se&aran# : “, A%O) } ;lse { If ( ?O; == JK ) { Rea(M%A7) A%O = A%O4 M%A7 Write(“al$ Ana se&aran# : “, A%O) } ;lse { If ( ?O; == JK ) { Write(“al$ Ta!n#an Ana : “, A%O) } ;lse { If ( ?O; == JTK ) { Write(“al$ 1en!t!1an ta!n#an ana :", A%O) A%O = 0 } ;lse { Write (JAna sala. mene&an t$m$lK) } } } } 2selesai3 7alt
!A! $ " Pemrograman *erstruktur
9:
Algoritma I
Dengan menggunakan instruksi SNI*(', maka algoritmanya menjadi seperti berikut. Al#$ritma Transa&si@+ Al#$ritma !nt!& menent!&an transa&si nasaa. i teller $t$matis en#an men##!na&an instr!&si wit'. Bariael NR;? erti1e inte#er, !nt!& menim1an n$m$r re&enin# nasaa. Bariael &$e erti1e '.ara'ter, !nt!& menim1an &$e transa&si Bariael M%A7 erti1e real, !nt!& menim1an !mla. !an# an# itransa&si&an, /ariael A%O erti1e real, !nt!& menim1an !mla. !an# an# isim1an alam an& Oias!msi&an A%O imas!&&an ersama en#an n$m$r re&enin# nasaa. * 2mema'a n$m$r re&enin# an sal$3 Rea (NR;?, A%O) + 2mema'a &$e transa&si3 Rea (?O;) 2mela&!&an transa&si ses!ai ?O;3 wit'. ( ?O; ) { Fase JAK : Rea (M%A7) A%O = A%O C M%A7 Write (“Amila. an# Ana") Write(“al$ Ana se&aran# : “, A%O) Fase JK : Rea (M%A7) A%O = A%O 4 M%A7 Write(“al$ Ana se&aran# : “, A%O) Fase JK : Write (“al$ Ta!n#an Ana : “, A%O) Fase JTK : Write (“al$ en!t!1an Ta!n#an Ana : P, A%O) A%O = 0 Oefa!lt : Write (“Ana sala. mene&an t$m$l") } 7alt
(ara mengeksekusi instruksi SNI*(' sama dengan instruksi I/ bertingkat, yaitu dimulai dengan menguji instruksi (ase yang pertama" apakah ekspresi 6 6 nilai3#. =ika hasilnya adalah *) maka dipilih instruksi3# untuk dieksekusi, dan tidak perlu menguji instruksi SNI*(' yang berikutnya. =ika hasilnya /A0S) maka pengujian dilanjutkan dengan instruksi (ase berikutnya" apakah ekspresi 6 6 nilai3$ dan seterusnya sampai nilai3n. =ika suatu nilai (ase telah dipilih, maka nilai (ase lainnya tidak perlu diuji lagi, dan eksekusi dilanjutkan ke instruksi berikutnya ?ke instruksi setelah instruksi SNI*(' ini@. =ika ekspresi tidak memenuhi semua nilai (ase yang ada maka dipilih instruksi RDefault atau keluar dari instruksi Sitch jika RDefault tidak ada. ntuk lebih
!A! $ " Pemrograman *erstruktur
9#
Algoritma I
jelasnya dapat dilihat pada ilustrasi flochart untuk algoritma *ransaksi3$ pada gambar $. berikut. Yang perlu diperhatikan dalam membuat instruksi SNI*(' adalah" a. )kspresi pada instruksi Sitch sebaiknya bertipe integer atau character, tidak disarankan bertipe real. b. semua konstanta dalam nilai (AS) harus mempunyai tipe yang sama dan juga harus sama dengan tipe ekspresinya. c. satu konstanta dalam nilai (AS) hanya dapat memilih satu alternatif instruksi. *idak boleh ada sebuah konstanta yang dapat memilih dua alternatif instruksi.
Mambar $. /lochart dari potongan algoritma transaksi
!ATI+AN SOA! BAB 2
#. !uat algoritma untuk mengkon1ersikan tanggal dalam bentuk ddCmmCyy menjadi bentuk tanggal bulan tahun. (ontoh :#C:#C: menjadi :# =anuari
!A! $ " Pemrograman *erstruktur
9$
Algoritma I
$::. Algoritma yang anda buat harus membaca % angka integer lalu mencetak tanggal dalam bentuk yang baru $. =aablah latihan soal subbab $.8 nomor #: dengan menggunakan instruksi SNI*('. %.
=aablah algoritma pada bab $.% nomor #% dengan menggunakan instruksi Sitch
8.
=aablah algoritma pada bab $.% nomor #8 dengan menggunakan instruksi Sitch
9. !uatlah algoritma untuk membuat kalkulator sederhana yang dapat melakukan operasi tambah ?G@, kurang ?-@, kali ?;@ dan bagi ?C@. ntuk 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 jaabannya. =uga cetak pesan kesalahan jika terjadi kesalahan input. (ontoh input" $9. G #9.<, maka outputnya" $9. G #9.< 6 8#.8 . !iaya asuransi ladang pertanian yang standar adalah %.9 persen dari nilai tanggungan dikalikan luas tanah. *etapi untuk ladang kacang kedelai, kentang, baang merah dan cabai, biaya asuransinya adalah $ kali biaya standar. Dan untuk ladang padi dan jagung biaya asuransinya adalah #.9 kali biaya standar. !uatlah algoritma untuk membaca jenis ladang, nilai tanggungan dan luas tanah lalu menghitung biaya asuransi dan menampilkan hasilnya. Munakanlah tipe data enumerasi untuk jenis ladang. . !uatlah algoritma untuk menampilkan menu yang berisi macam-macam bentuk bangun $ dimensi ?segitiga, persegi panjang, bujur sangkar, lingkaran, jajaran genjang@. !erdasarkan bentuk yang dipilih dari menu, mintalah data yang diperlukan untuk menghitung luas dan keliling serta menampilkan hasilnya. <. +artu kredit A!( yang bekerja sama dengan restoran OYU memberikan promosi sebagai berikut" a. =ika tagihan kurang dari p. 9::.:::,- maka tidak diberikan diskon
!A! $ " Pemrograman *erstruktur
9%
Algoritma I
b. =ika tagihan lebih p 9::.::: dan menggunakan kartu kredit A!( maka mendapatkan diskon $9T. =ika tidak menggunakan kartu kredit A!( maka hanya mendapatkan diskon #:T. !uatlah 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 estoran sebesar ##T dan biaya layanan sebesar 9T. *ampilkan total tagihannya. F. Sebuah toko ritel memberikan promosi seperti tabel di baah ini. !uatlah 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
56 #:
9T.
56 $9
#:T
56 9:
#9T
56#::
$:T
*ambahkan dalam algoritma, instruksi untuk membaca uang yang diterima, jika lebih besar dari harga barang maka hitung uang kembaliannya
!A! $ " Pemrograman *erstruktur
98