Kasus 4.1.
Tentukanlah bilangan terbesar antara dua bilangan bulat.
Algoritma 4.1.
Algoritma Maksimum
{Menentukan nilai terbesar antara dua bilangan bulat}
Deklarasi
A, B : integer
Deskripsi
read (A, B)
if (A > B) then write (‘Bilangan terbesar adalah = ‘A)
else write (‘Bilangan terbesar adalah = ‘B)
endif
Flow Chart 4.1.
Translasi 4.1.
Kasus 4.2.Tentukanlah bilangan terbesar antara 3 bilangan bulat.
Algoritma 4.2.a.
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
Deskripsi
read (x, y, z)
if (x > y) and (x > z) then write (‘Bilangan terbesar adalah = ‘,x)
else if (y > x) and (y > z) then write (‘Bilangan terbesar adalah = ‘,y)
else write (‘Bilangan terbesar adalah = ‘,z)
end if
Flow Chart 4.2a.
Translasi 4.2a.
Algoritma 4.2.b.
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)
Flow Chart 4.2b.
Translasi 4.2b.
Kasus 4.3.Carilah akar-akar persamaan kuadrat.
Algoritma 4.3.
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)
Flow Chart 4.3.
Translasi 4.3.
Kasus 4.4.
Konversikan nilai angka menjadi nilai huruf dengan ketentuan sebagai berikut :
Nilai Angka Nilai huruf
0 – 20 E
21 – 40 D
41 – 60 C
61 – 80 B
81 – 100 A
Algoritma 4.4.
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 4.4.
Translasi 4.4.
Kasus 4.5.Buatlah algoritma, flowchart, dan program untuk mengkonversi hari ke-1 adalah
hari Senin sampai dengan hari ke-7 adalah Minggu. Misalkan dimasukkan nilai 5,
outputnya adalah hari Jum’at.
Algoritma 4.5.
Algoritma menentukan_hari
{ masukan integer 1 sampai 7, akan ditentukan hari apa yang sesuai }
Deklarasi
hari_ke : integer;
hari : string;
Deskripsi
read(hari_ke);
case (hari_ke) of
1 : hari <-- 'Senin'
2 : hari <-- 'Selasa';
3 : hari <-- 'Rabu';
4 : hari <-- 'Kamis';
5 : hari <-- 'Jum''at';
6 : hari <-- 'Sabtu';
else hari <-- 'Minggu';
endcase
write(hari)
Flowchart 4.5.
Translasi 4.5.
Di atas itu adalah bagian kasus-kasus dari diktat bab 4, sedangkan di bawah ini adalah soal latihan dari diktat bab 4.
Soal Latihan
1. Buatlah flowchart dan translasi program dari algoritma 3.2.b. di atas.
1.
Algoritma menentukan_bilangan_terbesar
{mencari bilangan terbesar dari 3 bilangan yang diinput}
Deklarasi
Integer a,b,c,terbesar;
Deskripsi
Write(“Masukkan Bilangan Pertama : ”);
Read(a);
Write(“Masukkan Bilangan Kedua : ”);
Read(b);
Write(“Masukkan Bilangan Ketiga : ”);
Read(c);
if (a>b) then
if (a>c)
then write(“Terbesar = ”,a);
else wrie(“Terbesar = ”,c);
endif
else if (b>c)
then write(“Terbesar = ”,b);
else write(“Terbesar = ”,c);
endif
endif
{mencari bilangan terbesar dari 3 bilangan yang diinput}
Deklarasi
Integer a,b,c,terbesar;
Deskripsi
Write(“Masukkan Bilangan Pertama : ”);
Read(a);
Write(“Masukkan Bilangan Kedua : ”);
Read(b);
Write(“Masukkan Bilangan Ketiga : ”);
Read(c);
if (a>b) then
if (a>c)
then write(“Terbesar = ”,a);
else wrie(“Terbesar = ”,c);
endif
else if (b>c)
then write(“Terbesar = ”,b);
else write(“Terbesar = ”,c);
endif
endif
flowchart :
C++ :
2. Sempurnakan algoritma 3.3. dengan akar imajiner berbentuk :
a + bi
dengan a dan b bilangan real dan bila harga b^2 - 4ac < 0 .
Perhatikan bahwa nilai a dan b dihitung terpisah.
Algoritmanya :
Deklarasi:
a,b,c : integer{Input}
disk : longint{output}
x1,x2 : real{output}
Deskripsi:
read(a,b,c)
disk<--b*b-4a*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)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
Flowchartnya :
C++
3. Buatlah program dari algoritma 3.4. menggunakan case … of .
1.
Algoritma
konversi nilai
{dibaca nilai angka kemudian di konversi ke nilai
huruf}
Deklarasi :
nilai : integer
nilai_huruf : char
Deskripsi
read(nilai)
if (nilai>0) and (nilai <=20) then
nilai_huruf <- E
else if (nilai > 21) and (nilai<=40)then nilai_huruf <- D
else if (nilai > 41) and (nilai<=60)then nilai_huruf <- C
else if (nilai > 61) and (nilai<=80)then nilai_huruf <- B
else nilai_huruf <- A
end if
write(nilai_huruf)
flowchart :
C++ :
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.
Perbedaan :
Algoritmanya :
{menentukan bilangan bulat
atau real dari input yang di masukan}
deklarasi
a =float
b = integer
bil = char
deskripsi
b=a
read(a)
if(a=b) then bil <-- 'adalah bil bulat'
else bil<-- 'adalah bi real'
endif
write(bil)
deklarasi
a =float
b = integer
bil = char
deskripsi
b=a
read(a)
if(a=b) then bil <-- 'adalah bil bulat'
else bil<-- 'adalah bi real'
endif
write(bil)
flowchart :
C++ :
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.
Algoritma menentukan hari dalam satu bulan
{ input bulan dan tahun kemudian output jumlah hari dalam satu bulan
Deklarasi
AngkaBulan :
integer; { 1 . . 12
}
Tahun :
integer; { > 0 }
JumlahHari : integer;
Deskripsi
begin
write('Bulan (1-12) = ');
write('Tahun = ');
case AngkaBulan of
1, 3, 5, 7, 8, 10, 12
: JumlahHari:=31;
4, 6, 9,
11 :
JumlahHari:=30;
2
: if Tahun mod 4 = 0 then
JumlahHari:=29
else
JumlahHari:=28;
{endif}
end;
writeln('Jumlah hari dalam bulan
',AngkaBulan,' adalah ',JumlahHari);
end.
flowchart :
C++ :
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 :
{input karakter kemudian di cek apakah huruf besar, kecil atau
digit}
Deklarasi
karakter :
string {input, output}
Deskripsi
Read(karakter)
if(karakter>=’A’
&& karakter<=’Z’) ß
Huruf kapital
else
if(karakter>=’a’ && karakter<=’z’) ß huruf kecil
else(karakter>=’0’
&& karakter<=’9’) ß
digit
endif
write(karakter )
flowchart :
C++ :
7. Seorang dosen ingin mengkonversikan nilai angka hasil ujian mahasiswa
menjadi nilai huruf dengan ketentuan :
Nilai antara Nilai Huruf
0-60 F
61-70 D
71-80 C
81-90 B
91-100 A
Algoritma :
{dibaca nilai angka kemudian di konversi ke nilai huruf}
Deklarasi :
nilai : integer
nilai_huruf : char
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
end if
write(nilai_huruf)
flowchart :
C++ :
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.
Algoritma :
{Diberikan masukan x dan y, dihitung nilai dari x pangkat y}
Deklarasi
Deklarasi
x, y, i : integer { input }
pangkat : integer { output }
Deskripsi
Deskripsi
read (x,y)
pangkat ß 1
for i ß 1
to y do
pangkat ß pangkat * x
enfor
write
(pangkat)
flowchart :
C++ :
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.
Algoritma :
Deklarasi
NIK, Nama : String
Jhk, tunj.jabatan, tunj.makan, tunj.transport,
gaji_kotor, pajak, gaji_bersih : Real
Deskripsi
READ (NIK, Nama, gaji_pokok, tunj.jabatan, Jhk)
tunj.makan = 10000 * Jhk
tunj.transport = 5000 * Jhk
gaji_kotor = (gaji_pokok + tunj.jabatan +
tunj.makan + tunj.transport)
pajak = 0.1 * gaji_kotor
gaji_bersih = (gaji_kotor – pajak)
write (tunj.makan,
tunj.transport, gaji_kotor, pajak, gaji_bersih)
end
flowchart :
C++ :
Demikian postingan kali ini, Selamat malam sedulur.
0 komentar:
Posting Komentar