Soal Nilai Akhir
Seorang mahasiswa ingin
mengetahui nilai akhir matakuliah algoritma.
Aturan perhitungan Nilai
Akhir yang diterapkan :
- UTS 25 %
- UAS 35 %
- Tugas & Quiz 20
%
- Praktikum 20
%
Setelah dihitung nilai akhirnya,
kemudian dapat ditentukan indeks nilainya dengan aturan:
- Indeks=”A” bila Nilai Akhir >= 80
- Indeks=”B” bila Nilai Akhir >= 65
dan Nilai Akhir <80 span="">80>
- Indeks=”C” bila Nilai Akhir >= 50
dan Nilai Akhir <65 span="">65>
- Indeks=”D” bila Nilai Akhir >= 35
dan Nilai Akhir <50 span="">50>
- Indeks=”E” bila Nilai Akhir < 35
Buat algoritma untuk
membantu mahasiswa tersebut dalam menghitung nilai akhir dan Indeksnya, bila
semua komponen nilai diINPUT.
Jawab:
var
na, uts, uas, tugas, praktikum: Real
begin
input(uts, uas, tugas, praktikum)
na <-- 0.25="" 0.2="" 0.35="" praktikum="" span="" tugas="" uas="" uts="">-->
output(na)
if (na >= 80) then
output('A')
else if (na >= 65) and (na
< 80) then
output('B')
else if (na >= 50) and (na
< 65) then
output('C')
else if (na >= 35) and (na
< 50) then
output('D')
else
output('E')
end algoritma.
Soal Menghitung Gaji Bersih
Gaji bersih seorang pegawai
dihitung dari gaji pokok dan tunjangan dipotong pajak yang harus dibayar. Besar
tunjangan adalah 15 % dari gaji pokok, dan besar pajak adalah 10 % dari gaji pokok
ditambah tunjangan. Buat algoritma untuk menghitung gaji bersih tersebut jika
gaji pokoknya diINPUT.
Jawab:
var
gaji,
tunjangan, gtunjangan, pajak, gbersih: real
begin
input(gaji)
tunjangan
<-- 0.15="" gaji="" span="">-->
output(tunjangan)
gtunjangan
<-- gaji="" span="" tunjangan="">-->
output(gtunjangan)
pajak
<-- 0.1="" gtunjangan="" span="">-->
output(pajak)
gbersih
<-- -="" gtunjangan="" pajak="" span="">-->
output(gbersih)
end.
Soal Menghitung Jumlah Bus
Sebuah acara
wisata digunakan bus yang berkapasitas 30 orang. Tulis algoritma untuk
menghitung jumlah bus wisata yang diperlukan bila jumlah peserta diINPUT dari
keyboard. Catatan : bila jumlah peserta tidak kelipatan 30, maka jika sisanya
> 5 harus disediakan 1 bus tambahan, bila sisanya <= 5 maka tidak perlu
tambahan bus.
Jawab:
var
jbus, jpeserta: integer
begin
input(jpeserta)
if (jpeserta > 30) then
if (jpeserta mod 30 > 5) then
jbus <-- 1="" 30="" div="" jpeserta="" span="">-->
else
jbus <-- 30="" div="" jpeserta="" span="">-->
else
jbus <-- 1="" span="">-->
output(jbus)
end
algoritma
Soal Menghitung Gaji dan Upah Lembur
Pada suatu perusahaan terdapat 5 golongan karyawan. Gaji karyawan
ditentukan berdasarkan gaji tetap dan juga dari lamanya bekerja. Gaji tetap dan
gaji per jam tergantung kepada golongan karyawan sesuai dengan tabel berikut:
Golongan
|
Gaji tetap (Rp)
|
Upah lembur per jam (Rp)
|
1
|
500.000
|
5000
|
2
|
300.000
|
3000
|
3
|
250.000
|
2000
|
4
|
100.000
|
1500
|
5
|
50.000
|
1000
|
Buatlah program untuk menghitung total gaji karyawan yang diterima
dengan rumus: gaji sesuai golongan + (banyaknya jam lembur * tarIF lembur
sesuai golongan karyawan)!
Contoh
tampilan program:
INPUT:
Golongan: 2
Jumlah jam lembur: 5
OUTPUT:
Total gaji: 315000
Jawab:
uses crt;
var
gol, lembur: integer;
totgaji: real;
begin
clrscr;
writeln('Masukkan Golongan: ');
readln(gol);
writeln('Masukkan jam lembur: ');
readln(lembur);
case gol of
1:totgaji := (500000 + (5000 *
lembur));
2:totgaji := (300000 + (3000 *
lembur));
3:totgaji := (250000 + (2000 *
lembur));
4:totgaji := (100000 + (1500 *
lembur));
5:totgaji := (50000 + (1000 * lembur));
end;
writeln('Total gaji adalah: ', totgaji:2:0);
readln;
end.
#include
Soal: Lama Bekerja
Tulis program untuk menentukan lama bekerja seorang
pegawai, jika jam masuk dan jam pulang diINPUT. Catatan: jam berupa angka 1-12,
dan seorang pegawai bekerja kurang dari 12 jam.
Contoh Masukan dan keluaran:
Jam masuk
|
Jam keluar
|
Keluaran/tampilan
|
10
|
11
|
Lama bekerja 1 jam
|
10
|
2
|
Lama bekerja 4 jam
|
10
|
7
|
Lama bekerja 9 jam
|
Jawab:
uses crt;
VAR
imasuk, ikeluar, ilama: Integer;
BEGIN
clrscr;
REPEAT
writeln('Masukkan Jam Masuk: ');
readln(imasuk);
writeln('Masukkan Jam Keluar: ');
readln(ikeluar);
IF (imasuk > 12) OR (ikeluar >
12) THEN writeln('Data yang anda masukkan lebih dari 12, silahkan masukkan
lebih kecil')
ELSE
IF (imasuk <= ikeluar) THEN
writeln ('Lama nya Bekerja: ', ikeluar
- imasuk)
ELSE
writeln('Lama nya Bekerja: ', (12 -
imasuk) + ikeluar);
readln;
UNTIL imasuk < 12;
end.Algoritma:
END
Soal: Biaya Parkir
Tulis program untuk menentukan biaya parkir yang
dihitung berdasarkan lama parkir. Lama parkir dihitung dari selisih jam masuk
dan jam keluar diINPUT. Biaya parkir 2 jam pertama 2000, perjam berikutnya 500.
Contoh Masukan dan keluaran:
Jam
masuk
|
Jam
keluar
|
Lama
|
keluaran/tampilan
|
10
|
11
|
1
|
Biaya
= 2000
|
10
|
2
|
4
|
Biaya
= 3000
|
Jawab:
uses crt;
VAR
imasuk, ikeluar, ilama,
ibiaya: integer;
BEGIN
clrscr;
writeln('Masukkan Jam
Masuk: ');
readln(imasuk);
writeln('Masukkan Jam
Keluar: ');
readln(ikeluar);
IF (imasuk <= ikeluar)
THEN
ilama := ikeluar - imasuk
ELSE
ilama := (12 - imasuk) +
ikeluar;
writeln('Lama parkir
adalah: ', ilama);
readln;
IF (ilama > 2) THEN
ibiaya := 2000 + ((ilama -
2) * 500)
ELSE
ibiaya := 2000;
writeln('Biaya nya adalah:
', ibiaya);
readln;
end.
Soal: Penggabungan Resistor
Tulis program untuk menghitung resistor pengganti
dari 3 buah resistor yang disusun secara seri atau paralel. Rumus untuk
resistor pengganti sbb:
Seri: Rgab = R1 + R2 +
R3
Paralel: 1/Rgab
= 1/R1 + 1/R2 + 1/R3
Besar R1, R2 dan R3 serta jenis penyusunan
(seri/paralel) diINPUT oleh user.
Jawab:
uses crt;
var
gab, r1, r2, r3: real;
jenis: string;
begin
clrscr;
writeln('Masukkan R1: ');
readln(r1);
writeln('Masukkan R2: ');
readln(r2);
writeln('Masukkan R3: ');
readln(r3);
writeln('Masukkan Jenis susunan, Seri /
Paralel: ');
readln(jenis);
if (jenis = 'seri') then
gab := r1 + r2 + r3
else
gab := (1 / r1) + (1 / r2) + (1
/ r3);
readln;
writeln('R gabungan adalah: ',
gab:2:0);
readln;
end.
Algoritma:
Algoritma Menghitung_Resistor
END
Soal: Harga barang
Buatlah
program untuk menyelesaikan masalah berikut :
Program akan menerima masukan berupa kode, jenis dan harga, dengan jenis adalah
"A", "B", dan "C". Untuk setiap jenis,
masing-masing akan diberikan diskon sebesar 10% untuk A, 15% untuk B, dan 20%
untuk C. Program akan menghitung berapa harga setelah didiskon.
Contoh masukan :
Jenis = B
kode
= 10
harga = 10000
Contoh keluaran :
Jenis barang B mENDapat diskon = 15%, Harga setelah didiskon = 8500
Jawab:
uses crt;
var
harga, disk: Real;
jenis: char;
begin
clrscr;
writeln('Masukkan Jenis: ');
readln(jenis);
writeln('Masukkan Harga: ');
readln(harga);
case jenis of
'a':disk := harga * 0.1;
'b':disk := harga * 0.15;
'c':disk := harga * 0.2;
end;
writeln('Harga setelah diskon: ', harga
- disk:2:0);
readln;
end.
Soal: Gaji karyawan mingguan
Sebuah perusahaan swasta menggaji karyawannya secara
mingguan dengan hitungan sebagai berikut :
golongan 1 dengan upah per jam 3.000 rupiah
golongan 2 dengan upah per jam 3.500 rupiah
golongan 3 dengan upah per jam 4.000 rupiah
golongan 4 dengan upah per jam 5.000 rupiah
Bila seorang karyawan bekerja kurang atau sama dengan 40 jam per
minggu, akan dihitung dengan upah per jam seperti di atas, tetapi apabila
bekerja lebih dari 40 jam, maka lebihnya akan dihitung sebagai lembur dengan
upah per jam 1½ kali upah biasa.
Tulis algoritma untuk menghitung gaji mingguan karyawan, bila golongan
dan jam kerja diINPUT dari keyboard.
Jawab:
var
gol, jamk: Integer
gaji: real
begin
input(gol)
input(jamk)
if (jamk > 40) then
case (gol) of
1:gaji<-- -="" 1.5="" 3000="" 40="" jamk="" span="">-->
2:gaji<-- -="" 1.5="" 3500="" 40="" jamk="" span="">-->
3:gaji<-- -="" 1.5="" 4000="" 40="" jamk="" span="">-->
4:gaji<-- -="" 1.5="" 40="" 5000="" jamk="" span="">-->
endcase
else
case (gol) of
1:gaji<-- 3000="" jamk="" span="">-->
2:gaji<-- 3500="" jamk="" span="">-->
3:gaji<-- 4000="" jamk="" span="">-->
4:gaji<-- 5000="" jamk="" span="">-->
endcase
output(gaji)
end.
Soal: Menghitung selisih waktu dalam jam dan menit
Buat program menghitung selisih
waktu (dalam jam dan menit) berdasarkan jam mulai (jam,menit) dengan jam
selesai (jam,menit). Data yang diINPUT adalah jam dan menit mulai, jam dan
menit selesai. Format jam yang dimasukkan bisa berupa format 12 jam ataupun
24jam.
Contoh Masukan dan Keluaran:
Mulai
(jam,menit)
|
Selesai
(jam,menit)
|
Lama
(menit)
|
Lama
(jam,menit)
|
10:30
|
12:10
|
100
|
1
jam 40 menit
|
10:30
|
1:40
|
190
|
3
jam 10 menit
|
Jawab:
uses crt;
VAR
ijamstart, imenitstart, imenitstop,
ijamstop: Integer;
itotmenitstart, itotmenitstop,
iselangmenit, ijamdurasi: Integer;
imenitdurasi: Integer;
BEGIN
clrscr;
writeln('Masukkan Jam Mulai: ');
readln(ijamstart);
writeln('Masukkan Menit Mulai: ');
readln(imenitstart);
writeln('Masukkan Jam Berhenti: ');
readln(ijamstop);
writeln('Masukkan Menit Berhenti: ');
readln(imenitstop);
itotmenitstart := ijamstart * 60 +
imenitstart;
itotmenitstop := ijamstop * 60
+imenitstop;
IF (itotmenitstop >=
itotmenitstart) THEN
iselangmenit := itotmenitstop -
itotmenitstart
ELSE
iselangmenit := (12*60) -
itotmenitstart + itotmenitstop;
writeln('Selisih total dalam menit: ',
iselangmenit);
writeln('Selisih ', iselangmenit div
60, 'Jam,', iselangmenit mod 60, 'Menit');
readln;
end.
Soal: Kuadran dari koordinat titik
Buat program dengan masukan
koordinat sebuah titik (x,y) dalam sebuah system koordinat kartesian, kemudian
ditentukan di kuadran mana titik tersebut.
Contoh Masukan :
Koordinat titik (x,y) : 10 -20
Contoh
keluaran:
Titik 10,-20 berada pada
kuadran 4
Jawab:
uses crt;
VAR
ix, iy: Integer;
BEGIN
clrscr;
writeln('Masukkan x:');
readln(ix);
writeln('Masukkan y:');
readln(iy);
IF (ix
>= 0) THEN
IF (iy >= 0) THEN
writeln('Bilangan merupakkan
kuadran I')
ELSE
writeln('Bilangan merupakkan
kuadran IV')
ELSE
IF (iy >= 0) THEN
writeln('Bilangan merupakkan
kuadran II')
ELSE
writeln('Bilangan merupakkan
kuadran III');
readln;
end.
Soal:
Tunjangan Anak
Pemerintah hanya memberikan
tunjangan anak dari PNS maksimal sampai 3 anak saja. Setiap anak diberikan
tunjangan sebesar 10% dari gaji pokok.
Tulis program untuk menghitung
total tunjangan anak, bila gaji pokok dan jumlah anak diINPUT oleh user.
Contoh Masukan dan Keluaran:
Jumlah
anak
|
Gaji
Pokok
|
Tunjangan
Anak
|
0
|
1.000.000
|
0
|
1
|
1.000.000
|
100.000
|
3
|
1.000.000
|
300.000
|
5
|
1.000.000
|
300.000
|
Jawab:
uses crt;
VAR
gajipokok, tunjangan: real;
jmlanak: integer;
BEGIN
clrscr;
writeln('Masukkan Gaji
Pokok: ');
readln(gajipokok);
writeln('Masukkan Jumlah
Anak: ');
readln(jmlanak);
if (jmlanak <= 3) then
tunjangan := jmlanak
* 0.1 * gajipokok
else
tunjangan :=
300000;
writeln('Tunjangannya adalah: ', tunjangan:2:0);
readln;
END.
Soal: Minibus pariwisata
Sebuah acara wisata digunakan minibus kapasitas 7
penumpang per mobil. Apabila terjadi kelebihan penumpang (walaupun cuma 1),
maka minibus yang digunakan ditambah 1. Tulis program untuk menghitung jumlah
minibus yang diperlukan, bila jumlah pesertanya diINPUT.
Contoh Masukan dan Keluaran:
Jumlah
Peserta
|
Jumlah
Minibus
|
5
|
1
|
7
|
1
|
8
|
2
|
Jawab:
uses crt;
var
jpeserta, jbus: integer;
begin
clrscr;
writeln('Masukkan Jumlah Peserta: ');
readln(jpeserta);
if (jpeserta > 7) then
jbus := jpeserta div 7;
if (jpeserta mod 7 > 0) then
jbus := jbus + 1
else
jbus := 1;
readln;
writeln('Jumlah bus yang dibutuhkan
adalah: ', jbus);
readln;
end.
Soal: Menentukan N hari yang lalu tanpa
mengINPUTkan Hari Ini
DiINPUT jumlah berapa hari yang lalu, kemudian
ditentukan nama harinya. Tulis program untuk menentukan nama hari dari sekian
hari yang lalu yang diINPUT. (Catatan, gunakan Hari ini = ‘Senin’)
Contoh Masukan dan Keluaran:
N
hari yang lalu
|
Nama
Hari
|
0
|
Senin
|
1
|
Minggu
|
10
|
Jumat
|
20
|
Selasa
|
Jawab:
uses crt;
var
hlalu:
integer;
begin
clrscr;
writeln('Masukkan berapa hari yang lalu, jika sekarang senin: ');
readln(hlalu);
if
(hlalu > 7) then
hlalu := hlalu mod 7
else
hlalu := hlalu;
readln;
case
(hlalu) of
0:writeln('Hari yang lalu adalah Senin');
1:writeln('Hari
yang lalu adalah Minggu');
2:writeln('Hari
yang lalu adalah Sabtu');
3:writeln('Hari
yang lalu adalah Jumat');
4:writeln('Hari
yang lalu adalah Kamis');
5:writeln('Hari
yang lalu adalah Rabu');
6:writeln('Hari
yang lalu adalah Selasa');
end;
readln;
end.
Soal: Menentukan N hari yang lalu
dengan mengINPUTkan Hari Ini
DiINPUT jumlah berapa hari yang lalu, kemudian
ditentukan nama harinya. Tulis program untuk menentukan nama hari dari sekian
hari yang lalu dan nomor hari ini yang diINPUT.
Contoh Masukan dan Keluaran:
N
hari yang lalu
|
Hari
ini
|
Nama
Hari
|
0
|
1
|
Senin
|
3
|
3
|
Minggu
|
5
|
4
|
Sabtu
|
Jawab:
uses crt;
var
hlalu, hini, namahari: integer;
begin
clrscr;
writeln('Masukkan hari keberapa sekarang: ');
readln(hini);
writeln('Masukkan berapa hari yang lalu: ');
readln(hlalu);
if
(hini > hlalu) then
namahari := hini - hlalu
else
namahari := 7 - (hlalu - hini);
readln;
case (namahari) of
1:writeln('Hari yang lalu adalah Senin');
2:writeln('Hari
yang lalu adalah Selasa');
3:writeln('Hari
yang lalu adalah Rabu');
4:writeln('Hari
yang lalu adalah Kamis');
5:writeln('Hari
yang lalu adalah Jumat');
6:writeln('Hari
yang lalu adalah Sabtu');
7:writeln('Hari
yang lalu adalah Minggu');
end;
readln;
end.
END
Soal: Penghitungan Pembayaran Listrik
PLN menerapkan pembayaran listrik perumahan dengan cara perhitungan
sebagai berikut :
-
Untuk
golongan 1 tarIF : Rp 1000/kWh
-
Untuk
golongan 2 tarIF : Rp 2000/kWh
Dengan
syarat penghitungan:
Minimum pembayaran
adalah 100 kWh sedangkan untuk pemakaian 1000 kWh dan seterusnya tarIFnya
ditambah 10% dari total pembayaran.
Golongan
|
Pemakaian
|
Bayar
|
1
|
50
|
100.000
|
2
|
150
|
300.000
|
1
|
1000
|
1.100.000
|
Jawab:
uses crt;
var
gol, pakai, tarif, bayar:
real;
begin
clrscr;
writeln('Masukkan Golongan
1 atau 2: ');
readln(gol);
writeln('Masukkan
Pemakaian: ');
readln(pakai);
if ( gol = 1) then
tarif := 1000
else
tarif := 2000;
if (pakai >= 1000) then
bayar := pakai *
tarif * 1.1
else if (pakai < 100)
then
bayar := 100 *
tarif
else
bayar := pakai *
tarif;
writeln('Pembayarannya
adalah: ', bayar:2:0);
readln;
end.
Soal: Penghitungan Bulan
Buatlah algoritma
untuk menghitung bulan pernikahan dengan mengINPUTkan bulan saat ini dan berapa
bulan kedepan. Misal data:
Bulan Saat Ini
|
N Bulan Kedepan
|
Bulan Pernikahan
|
1
|
2
|
3
|
12
|
1
|
1
|
10
|
5
|
3
|
Jawab:
VAR
Bini, bdepan, bnikah: integer
BEGIN
INPUT(bini, bdepan)
IF (bini + bedpan <= 12) then
bnikah ß bini + bedpan
else
bnikah ß (bini + bedpan) mod 12
output(bnikah)
END ALGORITMA
Soal: Selisih 2 waktu
Buat
program untuk menghitung selisih waktu antara 2 waktu, dengan masukan waktu
adalah dalam bentuk (jam, menit, detik) dan keluaran dalam detik!
Contoh
tampilan program:
INPUT:
Waktu1= 2:30:45
Waktu2= 2:31:20
OUTPUT:
Selisih waktu= 35 detik
Jawab:
uses crt;
var
jam1, jam2, menit1,
menit2, detik1, detik2, selisih: real;
begin
clrscr;
writeln('Masukkan Jam
Pertama: ');
readln(jam1);
writeln('Masukkan Menit
Pertama: ');
readln(menit1);
writeln('Masukkan Detik
Pertama: ');
readln(detik1);
writeln('Masukkan Jam
Kedua: ');
readln(jam2);
writeln('Masukkan Menit
Kedua: ');
readln(menit2);
writeln('Masukkan Detik
Kedua: ');
readln(detik2);
jam1 := jam1 * 3600;
menit1 := menit1 * 60;
jam2 := jam2 * 3600;
menit2 := menit2 * 60;
detik1 := jam1 + menit1 +
detik1;
detik2 := jam2 + menit2 +
detik2;
writeln('Total detik
Pertama adalah: ', detik1);
writeln('Total detik Kedua
adalah: ', detik2);
if (detik1 > detik2)
then
selisih := detik1
- detik2
else
selisih := detik2
- detik1;
readln;
writeln('Selisih nya Dalam
detik adalah: ', selisih:2:0,'detik');
readln;
end.
==selamat belajar==