LATIHAN WORKSHOP DIKTAT BAB IV PEMILIHAN / KONTROL PROGRAM
Sebagai contoh, seorang mahasiswa memperoleh nilai 75. Apakah dengan nilai tersebut mahasiswa itu lulus ? Jika batas kelulusan minimal 60 maka mahasiswa tersebut lulus ujian. Jika kurang dari 60 maka mahasiswa tersebut tidak lulus ujian. Salah satu kemampuan komputer adalah dapat melakukan proses pemilihan dari beberapa alternatif sesuai dengan kondisi yang diberikan.
1. Buatlah flowchart dan translasi program dari algoritma 4.2.b. di Modul Diktat.
Analisis: Dari kasus 4.2.b di modul diktat, kita diminta untuk membuat flowchart dan translasi menentukan bilangan terbesar dari tiga buah bilangan bulat, kasus membandingkan bilangan sering dijumpai di dalam berbagai soal di diktat. yang harus kita ketahui adalah tanda "<" lebih kecil dan ">" lebih besar.
Algoritma Nilai_ Maksimum
{Membaca tiga buah bilangan bulat, menentukan bilangan terbesar di antara tiga buah
bilangan tersebut dan menampilkannya ke layar}
Deklarasi
x, y, z : integer
maks : integer
Deskripsi
read (x, y, z)
maks <- x
if (y > maks) then maks <- y end if
if (z > maks) then maks ( z end if
write (‘Bilangan terbesar adalah = ‘,maks)
Flowchart 1
Translasi 1
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Banding
{
friend istream& operator>>(istream&, Banding&);
public:
Banding() {};
void bandingkan()
{
int maks = x;
if (y > maks) maks = y;
if (z > maks) maks = z;
cout << endl << endl << "Bilangan terbesar : " << maks;
}
private:
int x, y, z;
};
istream& operator>>(istream& in, Banding& bilangan)
{
cout << "Bilangan pertama = ";
cin >> bilangan.x;
cout << "Bilangan kedua = ";
cin >> bilangan.y;
cout << "Bilangan ketiga = ";
cin >> bilangan.z;
return in;
};
int main(int argc, char** argv) {
Banding bilangan;
cin >> bilangan;
bilangan.bandingkan();
return 0;
}
Hasil Kasus 1
2. Sempurnakan algoritma 4.3. dengan akar imajiner berbentuk : a + bi dengan a dan b bilangan real dan bila harga b2-4ac<0. Perhatikan bahwa nilai a dan b dihitung terpisah.
Analisis: Persamaan kuadrat adalah persamaan dengan bentuk umum Ax2 + Bx + c = 0,
dan tentu saja dengan A <- 0. Akar persamaan kuadrat diperoleh dengan rumus :
Bila b2-4ac<0 akan diperoleh akar imajiner.
Algoritma Persamaan_Kuadrat
{Menghitung akar-akar persamaan kuadrat Ax^2+Bx+C = 0}
Deklarasi
A, B, C : integer {koefisien-koefisien persamaan}
disk : longint { nilai diskriminan}
x1, x2 : real {nilai-nilai akar untuk disk>=0}
Deskripsi
read (A, B, C)
disk <- B*B– 4*A*C
if (A = 0) then write (‘Bukan Persamaan Kuadrat’)
else if disk > 0 then
x1 ( -B + sqrt (disk)/2*A
x2 ( -B - sqrt(disk)/2*A
else if disk = 0 then
x1 ( -B/2*A
x2 ( x1
else write (‘Akar imajiner’)
end if
write (x1,x2)
Flowchart 2
Translasi 2
#include <iostream>
#include <string>
using namespace std;
class akar{
private:
string raptor_prompt_variable_zzyz;
int a,b,c;
float D;
public:
akar(){
raptor_prompt_variable_zzyz ="Masukan Nilai A : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> a;
raptor_prompt_variable_zzyz ="Masukan Nilai B : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> b;
raptor_prompt_variable_zzyz ="Masukan Nilai C : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> c;
D =0;
D =b*b-(4*a*c);
}
void output();
};
void akar::output(){
if (D>=0)
{
cout << "Merupakan Akar REAL "<<D << endl; }
else
{
if (D<0)
{
cout << "Merupakan akar IMAJINER "<<D << endl; }
else
{
cout << "Merupakan akar RASIONAL "<<D << endl; }
}
}
int main()
{
akar s;
s.output();
return 0;
}
Hasil Kasus 2
3. Buatlah program dari algoritma 4.4. menggunakan case … of .
Analisis: Konversi nilai angka menjadi nilai huruf dengan ketentuan seperti diatas, kita akan membuat program konversi nilai tersebut dengan dengan kondisi if else if untuk dapat menyelesaikan kasus diatas sesuai dengan ketentuan yang ada dan akan membuat dalam bentuk case of.
Algoritma Konversi_Nilai
{Mengkonversikan nilai angka menjadi nilai huruf}
Deklarasi
nilai : integer
nilai_huruf : char
Deskripsi
read (nilai)
if (nilai > 0) and (nilai <= 20) then nilai_huruf <- ‘E’
else if (nilai > 20) and (nilai <= 40) then nilai_huruf <- ‘D’
else if (nilai > 40) and (nilai <= 60) then nilai_huruf <- ‘C’
else if (nilai > 60) and (nilai <= 80) then nilai_huruf <- ‘B’
else nilai_huruf <- ‘A’
endif
write (nilai_huruf)
Flowchart 3
Translasi 3
#include <iostream>
#include <string>
using namespace std;
string raptor_prompt_variable_zzyz;
class data{
private:
int nilai;
public:
data(){
raptor_prompt_variable_zzyz ="Masukan Nilai Angka : ";
cout << raptor_prompt_variable_zzyz;
cin >> nilai;
cout<<endl;
}
void output();
};
void data::output(){
switch (nilai)
{
case 81 ... 100 :
cout << nilai<<" Nilai Hurufnya Adalah A" << endl;
break;
case 61 ... 80 :
cout << nilai<<" Nilai Hurufnya Adalah B" << endl;
break;
case 41 ... 60 :
cout << nilai<<" Nilai Hurufnya Adalah C" << endl;
break;
case 21 ... 40 :
cout << nilai<<" Nilai Hurufnya Adalah D" << endl;
break;
case 0 ... 20 :
cout<< nilai+" Nilai Hurufnya Adalah E" << endl;
break;
}
}
int main()
{
data x;
x.output();
return 0;
}
Hasil Kasus 3
4. Buatlah algoritma, flowchart dan program untuk mengecek apakah pemakai memasukkan bilangan bulat atau bilangan real. Lebih dulu, carilah perbedaan dari 1.0 dan 1 kemudian 1 dan 1.23.
Analisis: Menentukan antara bilangan bulat atau bilangan real yang diinputkan oleh user, secara matematis kita sudah mengetahui antara bilangan bulat dan bilangan real. bilangan bulat adalah bilangan bersifat positif sedangkan real adalah bilangan bersifat negatif.
Algoritma Menentukan bilangan bulat atau real
{Membaca bilangan yang diinputkan, dan kemudian akan menentukan bilangan bulat atau real sebelum di tampilkan ke layar}
Deklarasi
A : Float
B : Integer
Deskripsi
read (A,B)
if (A==B)
write (Bilangann Bulat Or Bilangan Real)
Flowchart 4
Translasi 4
#include <iostream>
#include <string>
using namespace std;
string raptor_prompt_variable_zzyz;
class bil{
private:
float A;
int B;
public:
bil(){
raptor_prompt_variable_zzyz ="Masukan Bilangan : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >>A;
B=A;
}
void output();
};
void bil::output(){
if (A==B)
{
cout << "Bilangan Bulat" << endl; }
else
{
cout << "Bilangan Real" << endl; }
}
int main()
{
bil x;
x.output();
return 0;
}
Hasil Kasus 4
5. Buatlah algoritma, flowchart dan program untuk menentukan banyaknya hari
dalam suatu bulan dan tahun yang diberikan. Pertimbangkan pula adanya tahun kabisat di mana bulan Februari mempunyai jumlah 29 hari. Gunakan case .. of dan if .. then .. else .. yang tepat untuk setiap kasus.
Analisis: Menentukan banyaknya hari dalam dalam suatu bulan dan tahun yang diberikan, namun kita harus sudah mengetahui tahun yang akan kita gunakan untuk menghitung hari tersebut dan kemudian menentukan tahun kabisatnya.
Algoritma Menentukan Banyaknya hari dalam suatu bulan dan tahun
{Membaca hari dalam suatu bulan dan tahun, masukan bulan dan tahun, kemudian akan menampilkan tahun dan bulan yang terdiri dari tanggal.
Deklarasi
tahun,i,bulan : integer
Deskripsi
read (tahun)
read (bulan
if (Tahun)
while (i>29)
else
while (i>28)
else
if (Bulan)
while (i>31)
else
while (i>30)
Flowchart 5
Translasi 5
#include <iostream>
#include <string>
using namespace std;
class kalender{
private:
string raptor_prompt_variable_zzyz;
int tahun,i,bulan;
public:
kalender(){
raptor_prompt_variable_zzyz ="Bulan ke-";
cout << raptor_prompt_variable_zzyz << endl;
cin >> bulan;
raptor_prompt_variable_zzyz ="Tahun - ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> tahun;
}
void output();
};
void kalender::output(){
if (bulan==2)
{
if (tahun % 100==0 || tahun % 100!=0 && tahun % 400==0)
{
i =1;
while (!(i>29))
{
cout << i << endl; i =i+1;
}
}
else
{
i =1;
while (!(i>28))
{
cout << i << endl; i =i+1;
}
}
}
else
{
if (bulan==1 || bulan==3 || bulan==5 || bulan==7 || bulan==8 || bulan==10 || bulan==12)
{
i =1;
while (!(i>31))
{
cout << i << endl; i =i+1;
}
}
else
{
i =1;
while (!(i>30))
{
cout << i << endl; i =i+1;
}
}
}
}
int main()
{
kalender x;
x.output();
return 0;
}
Hasil Kasus 5
6. Buatlah algoritma, flowchart dan program untuk mengecek apakah karakter yang
dimasukkan itu merupakan huruf besar, huruf kecil atau digit (bilangan). Gunakan fungsi ORD(char) untuk menyatakan nomor urut dalam tabel ASCII.
Algoritma Mengecek suatu karakter huruf atau bilangan
{user diminta untuk memasukan suatu karakter kemudian akan di tentukan apakah termasuk kedalam huruf, bilangan, atau simbol.
Deklarasi
karakter char
Deskripsi
read karakter
write((char)karakter)
Flowchart 6
Translasi 6
#include <iostream>
#include <string>
using namespace std;
class karak{
private:
string raptor_prompt_variable_zzyz;
char karakter;
public:
karak(){
raptor_prompt_variable_zzyz ="Masukan Karakter : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> karakter;
}
void output();
};
void karak::output(){
if (karakter>= 'A' && karakter<= 'Z')
{
cout << "Huruf Besar " << endl; }
else
{
if (karakter>= 'a' && karakter<= 'z')
{
cout << "Huruf Kecil " << endl; }
else
{
if (karakter>= '0' && karakter<= '9')
{
cout << "Digit Bilangan " << endl; }
else
{
cout << "Simbol " << endl; }
}
}
}
int main()
{
karak bil;
bil.output();
return 0;
}
Versi Coba-Coba Kode ASCII
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class ascii{
private:
int n;
public:
ascii(){
cout << " ---Konversi Bilangan Menjadi Kode ASCII--- " << endl;
cout << " __________________________________________ " << endl;
cout << " Masukan Bilangan (maks. 255) : "; cin >> n;
}
void output();
};
void ascii::output(){
cout << " ASCII dari bilangan tersebut "<< n <<" adalah : "<<(char)n<<endl;
}
int main(int argc, char** argv) {
ascii x;
x.output();
return 0;
}
Hasil Kasus 6
7. Seorang dosen ingin mengkonversikan nilai angka hasil ujian mahasiswa menjadi nilai huruf dengan ketentuan :
Analisis: Konversi nilai angka menjadi nilai huruf dengan ketentuan seperti diatas, kita akan membuat program konversi nilai tersebut dengan dengan kondisi if else if untuk dapat menyelesaikan kasus diatas sesuai dengan ketentuan yang ada.
Algoritma Konversi_Nilai
{Mengkonversikan nilai angka menjadi nilai huruf}
Deklarasi
nilai : integer
Deskripsi
read (nilai)
if (nilai > 0) and (nilai <= 60) then nilai_huruf ô€ƒ… ‘E’
else if (nilai > 61) and (nilai <= 70) then nilai_huruf ô€ƒ… ‘D’
else if (nilai > 71) and (nilai <= 80) then nilai_huruf ô€ƒ… ‘C’
else if (nilai > 81) and (nilai <= 90) then nilai_huruf ô€ƒ… ‘B’
else nilai_huruf ô€ƒ… ‘A’
endif
write (nilai_huruf)
Flowchart 7
Translasi 7
#include <iostream>
#include <string>
using namespace std;
class konvnilai{
private:
string raptor_prompt_variable_zzyz;
int nilai;
public:
konvnilai(){
raptor_prompt_variable_zzyz ="Masukan Nilai Angka: ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> nilai;
}
void output();
};
void konvnilai::output(){
if (nilai<=60)
{
cout << "Nilai Hurufnya Adalah E" << endl; }
else
{
if (nilai<=70)
{
cout << "Nilai Hurufnya Adalah D" << endl; }
else
{
if (nilai<=80)
{
cout << "Nilai Hurufnya Adalah C" << endl; }
else
{
if (nilai<=90)
{
cout << "Nilai Hurufnya Adalah B" << endl; }
else
{
cout << "Nilai Hurufnya Adalah A" << endl; }
}
}
}
}
int main()
{
konvnilai x;
x.output();
return 0;
}
Hasil Kasus 7
8. Diberikan ketentuan pecahan uang di Indonesia. User memasukkan sebuah bilangan, program harus dapat memecahnya menjadi pecahan sesuai dengan mata uang di Indonesia. Misalkan dimasukkan nilai uang 127.675 rupiah. Cobalah memecah secara manual nilai uang di atas.
Analisis : Menghitung jumlah komponen sejumlah uang menjadi pecahan-pecahannya. Kita akan menginputkan jumlah uang dalam bentuk angka kemudian uang yang kita masukan akan terpecah sesuai dengan kategori masing-masing dan mengetahui jumlah lembar dari masing-masing uang.
Algoritma{Menghitung jumlah komponen sejumlah uang menjadi pecahan-pecahannya}
User diminta untuk memasukan jumlah uang kemudian akan di pecah-pecah sesuai dengan mata uang di indonesia.
Deklarasi
(u10,u5,u500,u20,u50,u1,u100,sisa,u2): integer
uang: integer
Deskripsi
read (uang)
read (uang)
if (u100>0)
else
if (u50>0)
else
if (u20>0)
else
if (u10>0)
else
if (u5>0)
else
if (u2>0)
else
if (u1>0)
else
if (u500>0)
else
write(u100rb)
write(u50rb)
write(u20rb)
write(u10rb)
write(u5rb)
write(u1rb)
write(u5ratus)
Flowchart 8
Translasi 8
#include <iostream>
#include <string>
using namespace std;
class duit{
private:
string raptor_prompt_variable_zzyz;
int u10,u5,u500,u20,u50,u1,u100,sisa,uang,u2;
public:
duit(){
raptor_prompt_variable_zzyz =" Masukan Nominal Uang Anda Rp.";
cout << raptor_prompt_variable_zzyz << endl;
cin >> uang;
u100 =uang/100000;
}
void output();
};
void duit::output(){
cout << " Uang Anda akan di pecah menjadi" << endl; if (u100>0)
{
cout << u100<<" lembar Rp. 100.000" << endl; }
else
{
}
sisa =uang % 100000;
u50 =sisa/50000;
if (u50>0)
{
cout << u50<<" lembar Rp. 50.000" << endl; }
else
{
}
sisa =sisa % 50000;
u20 =sisa/20000;
if (u20>0)
{
cout << u20<<" lembar Rp.20.000" << endl; }
else
{
}
sisa =sisa % 20000;
u10 =sisa/10000;
if (u10>0)
{
cout << u10<<" lembar Rp.10.000" << endl; }
else
{
}
sisa =sisa % 10000;
u5 =sisa/5000;
if (u5>0)
{
cout << u5<<" lembar Rp.5000" << endl; }
else
{
}
sisa =sisa % 5000;
u2 =sisa/2000;
if (u2>0)
{
cout << u2<<" lembar Rp. 2.000" << endl; }
else
{
}
sisa =sisa % 2000;
u1 =sisa/1000;
if (u1>0)
{
cout << u1<<" lembar Rp.1000" << endl; }
else
{
}
sisa =uang % 1000;
u500 =sisa/500;
if (u500>0)
{
cout << u500<<" keping Rp. 500" << endl; }
else
{
}
sisa =sisa % 500;
u100 =sisa/100;
cout << u100<<" keping Rp.100" << endl;
}
int main()
{
duit fendi;
fendi.output();
return 0;
}
Hasil Kasus 8
9. Seorang pegawai bekerja selama 5 hari kerja, yaitu Senin sampai Jum’at. Setiap
hari dia masuk jam 08.00 dan pulang jam 16.00. Kecuali Jum’at dia pulang jam 11.00. Apabila dia bekerja lebih dari 30 jam per bulan maka setiap 5 jam akan memperoleh uang lembur sebesar Rp 30.000,- bila kurang dari 5 jam maka akan dihitung Rp 4.000,-/jam. Buat program dengan masukan bulan yang diinginkan, dan outputnya berupa besarnya uang lembur pegawai tersebut.
Analisis : Menghitung besarnya uang lembur yang dihitung dari jam kerja yang ada selama 5 hari dari pukul 08.00-16.00 kecuali jumat jam 11.00, maka akan diperoleh uang lembur sesuai inputan bulan yang telah di inputkan.
Algoritma{Menghitung besarnya uang lembur}
User diminta untuk memasukan bulan yang diinginkan dan akan menampilkan jumlah uang yang didapat selama lembur.
Deklarasi
(jam1,total,jam2,gaji,bulan) integer
Deskripsi
read (bulan)
read (bulan)
if (bulan==1) menyatakan pada Bulan 1
if (total>30) total tanggal pada bulan 1
if (bulan==2)
if (total>30)
if (bulan==3)
if (total>30)
if (bulan==4)
if (total>30)
if (bulan==5)
if (total>30)
if (bulan==6)
if (total>30)
if (bulan==7)
if (total>30)
if (bulan==8)
if (total>30)
if (bulan==9)
if (total>30)
if (bulan==10)
if (total>30)
if (bulan==11)
if (total>30)
else
if (total>30)
write (gaji)
Flowchart 9
Translasi 9
#include <iostream>
#include <string>
using namespace std;
class duit{
private:
string raptor_prompt_variable_zzyz;
int jam1,total,jam2,gaji,bulan;
public:
duit(){
raptor_prompt_variable_zzyz =" Gaji yang diperoleh pada bulan ke- ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> bulan;
}
void output();
};
void duit::output(){
if (bulan==1)
{
jam1 =16*8;
jam2 =5*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << " Uang lembur yang diperoleh pada bulan Januari Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << " Uang lembur yang diperoleh pada bulan Januari Rp."<<gaji << endl; }
}
else
{
if (bulan==2)
{
jam1 =17*8;
jam2 =4*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << " Uang lembur yang diperoleh pada bulan Februarii Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << " Uang lembur yang diperoleh pada bulan Februarii Rp."<<gaji << endl; }
}
else
{
if (bulan==3)
{
jam1 =19*8;
jam2 =4*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << " Uang lembur yang diperoleh pada bulan Mareti Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << " Uang lembur yang diperoleh pada bulan Maret Rp."+gaji << endl; }
}
else
{
if (bulan==4)
{
jam1 =16*8;
jam2 =5*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << " Uang lembur yang diperoleh pada bulan April Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << " Uang lembur yang diperoleh pada bulan April Rp."<<gaji << endl; }
}
else
{
if (bulan==5)
{
jam1 =18*8;
jam2 =5*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << " Uang lembur yang diperoleh pada bulan Meil Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << " Uang lembur yang diperoleh pada bulan Mei Rp."<<gaji << endl; }
}
else
{
if (bulan==6)
{
jam1 =18*8;
jam2 =4*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30;
cout << " Uang lembur yang diperoleh pada bulan Juni Rp."<<gaji << endl; }
else
{
gaji =total*30;
cout << " Uang lembur yang diperoleh pada bulan Juni Rp."<<gaji << endl; }
}
else
{
if (bulan==7)
{
jam1 =16*8;
jam2 =5*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
}
else
{
if (bulan==8)
{
jam1 =19*8;
jam2 =4*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
}
else
{
if (bulan==9)
{
jam1 =17*8;
jam2 =5*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
}
else
{
if (bulan==10)
{
jam1 =17*8;
jam2 =4*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
}
else
{
if (bulan==11)
{
jam1 =18*8;
jam2 =4*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
}
else
{
jam1 =17*8;
jam2 =5*3;
total =jam1+jam2;
if (total>30)
{
gaji =(total/5)*30000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
else
{
gaji =total*4000;
cout << "Uanglembur yang diperoleh pada bulan Juli Rp."<<gaji << endl; }
}
}
}
}
}
}
}
}
}
}
}
}
int main()
{
duit t;
t.output();
return 0;
}
Hasil Kasus 9























0 komentar:
Posting Komentar