1 - Bina Darma e

advertisement
5
PEMILIHAN
Menganalisis kasus dari suatu masalah artinya menentukan kondisi Boolean
(bernilai true atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut
berlaku. Kondisi Boolean adalah suatu ekspresi relasional yang bernilai true atau
false bergantung pada nilai masing-masing operand yang terlihat di dalamnya. Atau
Analisis kasus, yang melahirkan instruksi kondisional, adalah elemen primitive
pembangun algoritma, yaitu memungkinkan kita untuk membuat teks yang sama
namun menghasilkan eksekusi yang berbeda-beda. Mendefinisikan analisis kasus
adalah mendefinisikan :
1. Kondisi, yang berupa suatu ekspresi yang menghasilkan true atau false
2. Aksi yang akan dilaksanakan jika kondisi yang dipasangkan dengan aksi ybs.
dipenuhi
Konstruksi dari suatu analisis kasus dapat dimulai dari menentukan semua
kondisi yang mungkin (dengan melakukan partisi domain), atau dimulai dari
menentukan variasi aksi. Tidak ada rumus yang baku tentang bagaimana memulai
menuliskan analisis kasus. Pada contoh-contoh yang diberikan, ada yang berangkat
dari kondisi, dan ada yang dimulai dari menentukan aksi. Ada 2 struktur dalam
analisis kasus/pemilihan, yakni satu kasus yang mengakibatkan aksi, atau dua kasus
komplementer dan analisis kasus yang umum (banyak kasus).
5.1. Satu Kasus
Dalam bahasa Indonesia, if berarti jika dan then berarti maka. Kondisi adalah
persyaratan yang dapat bernilai benar atau salah. Aksi hanya akan dilaksanakan jika
kondisi bernilai benar. Sebaliknya, jika kondisi bernilai salah, maka aksi tidak akan
dilaksankan. Pernyataan ini dapat ditulis dalam struktur umum :
If (Kondisi) Then
Aksi
Endif
Jika kondisi benar, maka aksi dilakukan. Jika kondisi tidak benar, maka tidak
terjadi apa-apa (efek neto “kosong”).
Kasus 1. Dibaca sebuah bilangan bulat dari keyboard. Tuliskan algoritma untuk
mencetak pesan “bilangan genap” jika bilangan tersebut adalah genap. Bilangan
genap adalah bilangan yang habis dibagi 2 (sisa = 0).
Algoritma BilanganGenap
{Mencetak pesan “bilangan genap” jika sebuah bilangan yang
dibaca dari keyboard adalah bilangan genap}
Deklarasi :
Bilangan : Integer
39
Deskripsi :
Read (Bilangan)
If Bilangan mod 2=0 then
Write (‘Bilangan Genap’)
EndIf
Translasi ke Bahasa Java
Berikut ini adalah translasi dari algoritma pada kasus diatas kedalam bahasa
pemrograman Java.
public class genapganjil{
public static void main (String[] args) {
double bilangan;
bilangan = 4;
if ((bilangan % 2) == 0) {
// modulo dalam java adalah %
System.out.println("Bilangan Genap");
}
}
}
5.2. Dua Kasus Komplementer
Kondisi if-then hanya memberikan satu pilihan aksi bila kondisi dipenuhi atau
bernilai benar, dan tidak memberi pilihan aksi lain jika kondisi bernilai salah. Berikut
adalah kondisi if then else, yang memberi pilihan aksi lain jika kondisi bernilai salah.
If Kondisi then
Aksi 1
Else
{not Kondisi}
Aksi 2
EndIf
Else artinya kalau tidak. Jika kondisi bernilai benar, maka aksi 1 akan dikerjakan,
tetapi kalau tidak, aksi 2 yang akan dilaksanakan. Hati-hati dalam memakai “else”
yang berarti kondisi implisit yang merupakan negasi dari kondisi. Penulisan kondisi
“else” secara eksplisit sangat disarankan
Kasus 2. Dibaca dua buah bilangan bulat dari peranti masukan. Tentukan dari kedua
bilangan itu bilangan yang terbesar. Mislkan kedua bilangan tersebut adalah A dan B
Jika A > B, bilangan terbesar adalah A
Jika B ≥ A, bilangan terbesar adalah B
Algoritma Maks1
{Menentukan bilangan terbesar dari dua buah bilangan bulat}
Deklarasi :
A, B : Integer
Deskripsi :
Read (A,B)
If A > B then
Write (‘Bilangan terbesar : ‘,A)
Else
40
Write (‘Bilangan terbesar : ‘,B)
EndIf
Translasi ke Bahasa Java
Berikut ini adalah translasi dari algoritma pada kasus diatas kedalam bahasa
pemrograman Java.
import java.util.Scanner;
public class Maks1{
public static void main (String[] args) {
System.out.print ("masukkan Nilai A : ");
//Input Nilai A
double a = new Scanner(System.in).nextDouble();
System.out.print ("masukkan Nilai B : ");
//Input Nilai B
double b = new Scanner(System.in).nextDouble();
if (a > b) {
System.out.println( "Bilangan terbesar = " + a);
}
else {
System.out.println( "Bilangan terbesar = " + b);
}
}
}
Kasus 3. Karyawan honorer di PT “ABC” digaji berdasarkan jumlah jam kerjanya
selama satu minggu. Upah per jam adalah Rp. 7.000,- . Jika jam kerja lebih besar dari
48 jam, maka sisanya dianggap sebagai jam lembur. Upah lembur adalah Rp. 10.000,-.
Dibaca jumlah jam kerja seorang karyawan, tentukan upah mingguannya.
Penyelesaian :
Misalkan jumlah jam kerja (JJK)
Jika JJK ≤ 48 jam, Upah = JJK * 7.000
Jika JJK > 48 jam, Upah = (48 * 7.000) + (JJK-48) * 10.000
Berikut algoritma yang bisa dibuat dari kasus diatas :
Algoritma UpahKaryawan
{Menentukan upah mingguan seorang karyawan.
Masukkan yang
dibacah dari keyboard adalah nama karyawan dan jumlah jam
kerja. Sedangkan keluarannya adalah nama karyawan dan upah}
Deklarasi :
NamaKaryawan : String
JJK : Integer
Upah : Real
Deskripsi :
Read (NamaKaryawan, JJK)
If JJK ≤ 48 then
Upah ← JJK * 48
Else
Upah ← (48 * 7.000) + (JJK-48) * 10.000
EndIf
Write (NamaKaryawan, Upah)
41
5.3. Banyak Kasus
Apabila pilihan aksi yang dilakukan lebih dari dua buah, maka struktur
pemilihan menjadi lebih rumit, dinamakan pemilihan bersarang. Misalkan dibutuhkan
pemilihan kondisi percabangan untuk banyak syarat, dan hanya ingin agar kasus hanya
memilih salah satu maka dapat ditulis seperti contoh berikut :
If Kondisi_percabangan_1 then
{ proses jika kondisi percabangan 1 terpenuhi }
{end if}
Else if kondisi_percabangan_2 then
{proses jika kondisi percabangan 1 tidak terpenuhi dan kondisi Percabangan
2 terpenuhi }
{end if}
Else if kondisi_percabangan_3 then
{proses jika kondisi percabangan 1 dan 2 tidak terpenuhi dan Kondisi
percabangan 3 terpenuhi }
{end if}
Else
{ proses jika kondisi percabangan 1, 2, 3 Tidak terpenuhi }
{end else}
Jika kita ingin melakukan pemeriksaan secara terurut untuk banyak syarat
dimana semua syarat harus dilalui oleh semua yang memenuhi syarat atau tidak maka
kita dapat membuat percabangan sebagai berikut:
If Kondisi_percabangan_1 then
{proses jika kondisi percabangan 1 terpenuhi }
{end if}
Else if kondisi_percabangan_2 then
{proses jika kondisi percabangan 1 terpenuhi atau tidak terpenuhi
dan kondisi percabangan 2 terpenuhi }
{end if}
Else if kondisi_percabangan_3 then
{proses jika kondisi percabangan 1 dan 2 terpenuhi atau tidak
Terpenuhi dan kondisi percabangan 3 terpenuhi
{end if}
Kasus 4. Misalkan karyawan PT. “ABC” dikelompokkan berdasarkan golongannya.
Upah per jam tiap karyawan bergantung pada golongannya. Ketentuaannya adalah
sebagai berikut :
Golongan
A
B
C
D
Upah per Jam
Rp. 4000
Rp. 5000
Rp. 6000
Rp. 7000
42
Jumlah jam kerja yang normal selama seminggu adalah 48 jam. Kelebihan jam kerja
dianggap lembuar dengan upah lembur adalah Rp. 3000/jam untuk semua gologan
karyawan. Buat algoritma untuk masalah diatas !!
Algoritma UpahKaryawan
{Menghitung upah mingguan karyawan.
Masukan yang dibaca dari
keyboard adalah nama karyawan, golongan, dan jumlah jam kerja.
Nama karyawan dan upahnya dicetak ke peranti keluaran}
Deklarasi :
Const UL = 3000 {Upah Lembur per jam}
Nama : String
gol : Char {‘A’,’B’,’c’,’D’,’E’}
UJ, Upah : Real {UJ adalah Upah per jam}
Deskripsi :
Read (Nama, gol, JJK)
If gol ← “A” then
UJ ← 4000
Else
If gol ← “B” then
UJ ← 5000
Else
If gol ← “C” then
UJ ← 6000
Else
If gol ← “D” then
UJ ← 7000
Else
Write (“Golongan salah !”)
EndIf
EndIf
EndIF
EndIf
If JJK ≤ 48 then
Upah ← JJK * UJ
Else
Upah ← (48 * UJ) + (JJK-48) * UL
EndIf
Write (Nama, Upah)
Translasi ke Bahasa Java
Berikut ini adalah translasi dari algoritma pada kasus diatas kedalam bahasa
pemrograman Java.
import java.util.Scanner;
import java.io.*;
public class upah{
public static void main (String[] args) throws IOException{
double Upah1;
double UJ = 0;
double UL = 3000;
InputStreamReader reader = new InputStreamReader(System.in);
43
BufferedReader input = new BufferedReader(reader);
System.out.print("Masukan Nama Karyawan = "); //Input Nama
Karyawan
String NamaKaryawan = input.readLine();
System.out.print("Masukan Golongan = "); //Input golongan
String Gol = input.readLine();
System.out.print ("Masukkan Jam Kerja : ");
//Input
Gaji
double JJK = new Scanner(System.in).nextDouble();
if
(Gol.equals("A")){//Perbandingan
String
pada
java
menggunakan "equals"
UJ = 4000;
}
else {
if (Gol.equals("B")) {
UJ = 5000;
}
else {
if (Gol.equals("C")){
UJ = 6000;
}
else {
if (Gol.equals("D")){
UJ = 7000;
}
else {
System.out.println("Golongan Salah");}
}
}
}
if (JJK <= 48) {
Upah1 = JJK * UJ;
}
else {
Upah1 = (48*UJ) + (JJK - 48)*UL;
}
System.out.println("Nama karyawan
: " + NamaKaryawan);
System.out.println("Upah Rp
: " + Upah1);
}
}
5.4. Depend On (Dua Kondisi atau Lebih)
Percabangan depend on biasa digunakan untuk dua kondisi atau lebih
bergantung pada nilai sebuah variabel, syarat kondisi pada percabangan depend on
biasanya hanya sebuah nilai. Deklarasi percabangan depend on adalah sebagai berikut:
depend on (nama-nama)
<kondisi-1> : <aksi-1>
<kondisi-2 > :<aksi-2>
<kondisi-3> : <aksi-3>
kondisi-N : aksi-N
{end depend on}
44
Tiap kondisi akan diperiksa nilai kebenarannya mulai dari kondisi yang pertama
sampai ditemukan kondisi yang bernilai benar. Jika kondisi k benar, maka aksi k
dilaksanakan sedangkan aksi yang lainnya akan diabaikan, dengan syarat :
1. Kondisi-1,kondisi-2,kondisi-3 ... .,kondisi-N domain harganya [true,false]
2. Kondisi-1,kondisi-2,kondisi-3 ... .,kondisi-N adalah ekspresi lojik/boolean yang
mengandung nama-nama sebagai operan.
Struktur depend on berfungsi untuk menyederhanakan bentuk if then else yang
bertingkat-tingkat. Stuktur depend on diatas ekivalen dengan struktur if then else
berikut ini :
If <Kondisi1> then
Aksi1
Else
If <kondisi2> then
Aksi2
Else
If <kondisi3> then
Aksi3
Else
If <kondisiN> then
AksiN
Else
AksiX
EndIf
EndIf
EndIf
EndIf
Kasus 5. pada kasus 4 diatas dapat diubah dalam struktur case berikut :
Algoritma UpahKaryawan
{Menghitung upah mingguan karyawan.
Masukan yang dibaca dari
keyboard adalah nama karyawan, golongan, dan jumlah jam kerja.
Nama karyawan dan upahnya dicetak ke peranti keluaran}
Deklarasi :
Const UL = 3000 {Upah Lembur per jam}
Nama : String
gol : Char {‘A’,’B’,’c’,’D’,’E’}
UJ, Upah : Real {UJ adalah Upah per jam}
Deskripsi :
Read (Nama, gol, JJK)
Depend on (gol)
gol = “A” UJ ← 4000
gol = “B” UJ ← 5000
gol = “C” UJ ← 6000
gol = “D” UJ ← 7000
Else
Write (“Golongan salah !”)
{End Depend on}
If JJK ≤ 48 then
Upah ← JJK * UJ
45
Else
Upah ← (48 * UJ) + (JJK-48) * UL
EndIf
Write (Nama, Upah)
Kasus 6. Misalkan kita akan menghitung luas, keliling dan diagonal dari empat
persegi panjang. Pada setiap pilihan menu, dibaca panjang dan lebar empat persegi
panjang, dengan menu pilihan sebagai berikut :
1.
2.
3.
4.
Menu
Hitung luas
Hitung keliling
Hitung diagonal
Keluar dari program
Masukkan pilihan anda :
Algoritma PersegiPanjang
{Menampilkan menu perhitungan empat persegi panjang, memilih
menu dan melakukan proses perhitungan}
Deklarasi :
panjang, lebar : real
luas, keliling, diagonal : real
NomorMenu : integer
Deskripsi :
Write (‘ Menu’)
Write (‘1. Hitung luas’)
Write (‘2. Hitung keliling’)
Write (‘3. Hitung diagonal’)
Write (‘4. Keluar dari program’)
Write (‘Masukkan pilihan anda :’ )
Read (NomorMenu)
Depend on (NomorMenu)
NomorMenu = 1 : Read(panjang, lebar)
luas ← panjang * lebar
Write (luas)
NomorMenu = 2 : Read(panjang, lebar)
keliling ← 2 * (panjang+lebar)
Write (keliling)
NomorMenu = 3 : Read(panjang, lebar)
diagonal ← (2*panjang) + (2*lebar)
Write (diagonal)
NomorMenu = 4 : Exit
Write (‘Keluar dari program’)
{End Depend on}
46
Translasi ke Bahasa Java
Berikut ini adalah translasi dari algoritma pada kasus diatas kedalam bahasa
pemrograman Java
import java.util.Scanner;
public class hitungmenu{
public static void main (String[] args) {
int luas, keliling, diagonal;
System.out.println ("
Menu
");
System.out.println (" 1. Hitung Luas
");
System.out.println (" 2. Hitung Keliling
");
System.out.println (" 3. Hitung Diagonal
");
System.out.println (" 4. Keluar program
");
System.out.print (" Masukan Pilihan Anda : ");
int nomor = new Scanner(System.in).nextInt();
switch(nomor){
case 1 :
System.out.print("Panjang : ");
int panjang = new Scanner(System.in).nextInt();
System.out.print("Lebar : ");
int lebar = new Scanner(System.in).nextInt();
luas = panjang * lebar;
System.out.println("Luas : " + luas);
break;
case 2 :
System.out.print("Panjang : ");
int panjang1 = new Scanner(System.in).nextInt();
System.out.print("Lebar : ");
int lebar1 = new Scanner(System.in).nextInt();
keliling = 2*(panjang1 * lebar1);
System.out.println("Keliling : " + keliling);
break;
case 3 :
System.out.print("Panjang : ");
int panjang2 = new Scanner(System.in).nextInt();
System.out.print("Lebar : ");
int lebar2 = new Scanner(System.in).nextInt();
diagonal = (2*panjang2)+ (2*lebar2);
System.out.println("Diagonal : " + diagonal);
break;
case 4 :
System.out.println("Keluar program");
break;
default :
System.out.print("Pilihan Salah");
break;
}
}
}
Kasus 7. Pegawai pada suatu universitas swasta terdiri dari karyawan administrasi
dan dosen. Dosen terdiri dari dosen tetap dan dosen tidak tetap. Masing-masing
memiliki aturan penggajian yang berbeda.
1. Komponen dan aturan penggajian karyawan administrasi
47
a. Gaji Pokok
Golongan
IIA
IIB
IIC
IID
IIIA
IIIB
IIIC
IIID
GajiPokok
600.000
650.000
700.000
750.000
800.000
850.000
900.000
1.000.000
b. Tunjangan Jabatan
Jabatan
Ka.Biro
Ka. Keuangan
Kabag. Personalia
Kabag. KRS
Kabag. KHS
Staff
Tunj_Jabatan
800.000
600.000
500.000
400.000
300.000
200.000
2. Komponen dan aturan penggajian dosen tetap
a. Gaji Pokok
Golongan
IIIA
IIIB
IIIC
IIID
IVA
IVB
IVC
IVD
GajiPokok
800.000
850.000
900.000
1.000.000
1.100.000
1.200.000
1.300.000
1.400.000
b. Tunjangan Jabatan
Jabatan
Dekan
Kapogdi
Koordinator Lab.
Kepala Lab.
Tunj_Jabatan
1.000.000
800.000
700.000
500.000
c. Tunjangan Fungsional
Jenjang
Profesor
Lektor Kepala
Lektor
Asisten Ahli
Tnj_fungsional
2.000.000
1.300.000
500.000
270.000
d. Honor Mengajar
Pendidikan
S3
S2
Honorperjam
35.000
20.000
48
S1
10.000
Untuk dosen tetap jumlah jam mengajar dikurang 16 sks. Sedangkan dosen tidak tetap
hanya mendapat gaji honor mengajar sesuai dengan pendidikan dan jumlah jam
mengajar.
Pajak diperoleh dari rumus : pajak = 5% * gaji
Algoritma Gaji
{Menentukan gaji karyawan administrasi, dosen tetap dan dosen
tidak tetap}
DEKLARASI :
NmPengawai, status : string
Gol, jabatan, jenjang, pendidikan : string
GajiPokok, Tunj_Jabatan, Tunj_fungsi, Honorperjam : real
Honor, Pajak, GajiBersih, GajiKotor : real
DESKRIPSI :
Read (NmPegawai)
Read (status)
If status = ‘karyawan’ then
Read(gol,jabatan)
if gol =’IIA’ then
GajiPokok ← 600.000
Endif
if gol =’IIB’ then
GajiPokok ← 650.000
Endif
if gol =’IIC’ then
GajiPokok ← 700.000
Endif
if gol =’IIDA’ then
GajiPokok ← 750.000
Endif
if gol =’IIIA’ then
GajiPokok ← 800.000
Endif
if gol =’IIIB’ then
GajiPokok ← 850.000
Endif
if gol =’IIIC’ then
GajiPokok ← 900.000
Endif
if gol =’IIID’ then
GajiPokok ← 1.000.000
Endif
if jabatan =’Ka.Biro’ then
Tunj_Jabatan←800.000
Endif
if jabatan =’Ka.Keuangan’ then
Tunj_Jabatan←600.000
Endif
if jabatan =’Ka.Personalia’ then
Tunj_Jabatan←500.000
Endif
49
if jabatan =’Kabag.KRS’then
Tunj_Jabatan←400.000
Endif
if jabatan =’Ka.KHS’ then
Tunj_Jabatan←300.000
Endif
if jabatan =’Staff’ then
Tunj_Jabatan←200.000
Endif
GajiKotor← GajiPokok + Tunj_Jabatan
Else
If status = ‘DosenTetap’ then
Read(gol)
if gol =’IIIA’ then
GajiPokok ← 800.000
Endif
if gol =’IIIB’ then
GajiPokok ← 850.000
Endif
if gol =’IIIC’ then
GajiPokok ← 900.000
Endif
if gol =’IIID’ then
GajiPokok ← 1.000.000
Endif
if gol =’IVA’ then
GajiPokok ← 1.100.000
Endif
if gol =’IVB’ then
GajiPokok ← 1.200.000
Endif
if gol =’IVC’ then
GajiPokok ← 1.300.000
Endif
if gol =’IVD’ then
GajiPokok ←1.400.000
Endif
Read(Jabatan)
if jabatan =’Dekan’ then
Tunj_Jabatan←1.000.000
Endif
if jabatan =’Kaporgdi’ then
Tunj_Jabatan←800.000
Endif
if jabatan =’Koordinator Lab’ then
Tunj_Jabatan←800.000
Endif
if jabatan =’Kepala Lab’ then
Tunj_Jabatan←500.000
Endif
Read(jenjang)
if jenjang←’profesor’ then
Tunj_fungsi←2.000.000
Endif
50
if jenjang←’Lektor Kepala’ then
Tunj_fungsi←1.300.000
Endif
if jenjang←’Lektor’ then
Tunj_fungsi←500.000
Endif
if jenjang←’profesor’ then
Tunj_fungsi←270.000
Endif
Read(Pendidikan)
if Pendidikan←’S3’ then
Honorperjam←35.000
Endif
if Pendidikan←’S2’ then
Honorperjam←20.000
Endif
if Pendidikan←’S1’ then
Honorperjam←10.000
Endif
Read(JamMengajar)
Honor←(JamMengajar-16)*Honorperjam
GajiKotor← GajiPokok + Tunj_Jabatan + Tunj_fungsi + Honor
Else
If status = ‘DosenTdkTetap’ then
Read(Pendidikan,JamMengajar)
if Pendidikan←’S3’ then
Honorperjam←35.000
Endif
if Pendidikan←’S2’ then
Honorperjam←20.000
Endif
if Pendidikan←’S1’ then
Honorperjam←10.000
Endif
Honor←JamMengajar*Honorperjam
GajiKotor←Honor
EndIf
EndIf
EndIf
Pajak ← 0.05 * GajiKotor
GajiBersih ← GajiKotor - Pajak
Write(NmPegawai,GajiBersih)
Latihan
51
1. Buat algoritma yang menerima tiga buah angka masukan dan menampilkan nilai
yang paling besar dari ketiga masukan!
2. Buatlah algoritma yang menerima masukan berupa tiga buah sisi segitiga, periksa
apakah segitiga masukan merupakan segitiga siku-siku atau bukan!
3. Buat algoritma yang menerima masukan empat buah sisi, dimana jika semua sisi
sama maka tampilkan “Termasuk Kubus”, jika ada sisi yang tidak sama maka
tampilkan “Bukan Kubus”!
4. Buatlah algoritma yang menerima menu yang dapat berisi 1, 2, dan 3 dan dua
buah masukan bilangan, jika menu sama dengan 1 maka akan menampilkan hasil
dari bilangan 1 ditambah dengan bilangan 2, jika menu sama dengan 2 maka akan
menampilkan hasil dari bilangan 1 dikali dengan bilangan 2, jika menu sama
dengan 3 maka akan menampilkan hasil dari bilangan 1 dikurangi dengan
bilangan 2!
5. Buatlah algoritma yang menerima sebuah masukan berupa jam lembur, jika jam
lembur kurang dari 12 jam maka akan menampilkan gaji lembur sebesar Rp.
100.000, dari jam kerja normal, jika jam lembur sama dengan 12 jam maka akan
menampilkan gaji lembur sebesar Rp. 200.000 dari jam kerja normal, jika jam
lembur lebih dari 12 jam maka akan menampilkan gaji lebur sebesar Rp. 300.000
dari jam kerja normal. Jumlah jam kerja normal = 8 jam /hari sebesar Rp.
80.000,6. Tuliskanlah algoritma untuk menentukan bonus pegawai, berdasarkan ketentuan
yang diberikan oleh bagian personalia dan keuangan sebagai berikut : Pegawai
perusahaan digolongkan menjadi dua golongan, yaitu staf dan bukan staf. Staf
akan mendapatkan bonus sebesar 1 juta rupiah dengan syarat bahwa ia telah
bekerja paling tidak 5 tahun dan umurnya sudah mencapai 50 tahun; staf yang
bekerja kurang dari 5 tahun berapapun umurnya, hanya mendapat bonus sebesar
Rp. 500.000,-. Pegawai non-staf yang telah bekerja lebih dari 5 tahun akan
mendapat bonus sebesar Rp. 400.000,- jika berumur lebih dari 50 tahun
sedangkan pegawai non staf yang berumur kurang dari 50 tahun hanya akan
mendapat bonus Rp. 250.000,-. Pegawai staf yang umurnya kurang dari 50 tahun
akan mendapat bonus Rp. 300.000,7. Total nilai mahasiswa ditentukan berdasarkan nilai tugas, quis, mid dan uas.
Rumusnya adalah
TotalNilai = (15% * Tugas) + (15% * Quis) + (15% * MID) + (40% * UAS)
Sedangkan indeks nilai mahasiswa ditentukan berdasarkan ketentuan berikut :
TotalNilai
Indeks
≥ 80
A
70 – 79.99
B
55 – 69.99
C
40 – 54.99
D
< 40
E
Buat algoritma yang keluarannya adalah NmMhs dan Indeks !
8. Pada toko buku ‘abc’ diskon penjualan buku mengikuti tabel berikut :
52
TotalPenjualan
Diskon
< 100.000
2%
100.000-500.000
5%
> 500.000
7%
Buat algoritma untuk masalah diatas !
53
Download