Bagian 1
- Perhatikan algoritma berikut ini.
KAMUS
A, B, C, T : integer
BEGIN ALGORITMA
T ß 0
INPUT(A)
T ß T + A
INPUT(B)
T ß T + B
INPUT(C)
T ß T + C
OUTPUT(T)
END ALGORITMA
Berapakah nilai T, jika nilai A,B,C berturut-turut diINPUTkan dengan nilai 7, 5 dan 2 ?
14
jawaban_no 1;
uses crt;
var
A,B,C,T : integer;
begin
clrscr;
write('masukkan nilai A: ');
readln(A);
write('masukkan nilai B: ');
readln(B);
write('masukkan nilai C: ');
readln(C);
T := 0;
T := T + A;
T := T + B;
T := T + C;
write('maka nilai T adalah: ',T);
readln();
end.
- Perhatikan penggalan algoritma berikut ini.
A ß 4 ; B ß 3
X ß A
X ß B mod X
B ß A
B ß X + B
OUTPUT(A, X, B)
Berapakah nilai A, X dan B ?
Jawaban_no2;
uses crt;
var
A,B,X : integer;
begin
clrscr;
A := 4; B:= 3;
X := A;
X := B mod X;
B := A;
B := X + B;
writeln('maka nilai A adalah: ',A);
writeln('maka nilai X adalah: ',X);
writeln('maka nilai B adalah: ',B);
readln();
readln();
end.
A = 4 ; X = 3 ; B = 7
- Perhatikan penggalan algoritma dibawah ini:
Algoritma
…….
IF (a = 10 and b = 5) THEN
c <-- 156
ELSE
c <-- 165
END IF
Jika ternyata variabel a diberikan INPUT 5, maka nilai variabel c adalah?
uses crt;
var
A,B,C : integer;
begin
clrscr;
write('masukan nilai A: '); readln(A);
write('masukan nilai B: '); readln(B);
if (A = 10) AND (B = 5)then
C := 156
else
C := 165;
writeln('maka nilai C adalah: ',C); readln();
end.
165
- Perhatikan algoritma berikut ini.
KAMUS
A, B : integer
C : Boolean
BEGIN ALGORITMA
A ß 0 ; B ß 2
A ß B ; B ß A + A
C ß ((A > B) AND (A <> 2))
OUTPUT (C)
END ALGORITMA
Berapa nilai C ?
uses crt;
var
a,b : integer;
c : boolean;
begin
clrscr;
a := 0; b := 2;
a := b; b := a + a;
c := ((a > b) and (a <> 2));
writeln('maka nilai c adalah: ',c);
readln();
end.
- Perhatikan algoritma berikut.
KAMUS
A, B, C : integer
BEGIN ALGORITMA
INPUT(A,B,C)
IF (A > B) THEN
IF (A > C) THEN
OUTPUT(A)
ELSE
OUTPUT(C)
ENDIF
ELSE
IF (B > C) THEN
OUTPUT(B)
ELSE
OUTPUT(C)
ENDIF
ENDIF
END ALGORITMA
Apa OUTPUT yang dihasilkan, apabila nilai-nilai yang diINPUTkan , A = 3, B = 6 dan C = 4 ?
uses crt;
var
A,B,C : integer;
begin
clrscr;
write('masukan nilai A: '); readln(A);
Write('masukan nilai B: '); readln(B);
write('masukan nilai C: '); readln(C);
if (A > B) then
if (A > C) then
writeln('maka hasilnya nilai A: ',A)
else
writeln('maka hasilnya nilai C: ',C)
else
if(B > C)then
writeln('maka hasilnya nilai B: ',B)
else
writeln('maka hasilnya nilai C: ',C);
readln();
end.
6
- Perhatikan penggalan algoritma berikut ini.
INPUT(N)
IF (N > 50) THEN
IF ( N > 75) THEN
N ß N – 25
ENDIF
ELSE
N ß N + 10
ENDIF
OUTPUT(N)
Berapa nilai akhir N, apabila N awalnya diINPUT dengan nilai 85 ?
uses crt;
var
N : integer;
begin
clrscr;
write('masukan suatu angka: '); readln(N);
if (N > 50)THEN
if ( N > 75) then
N := N - 25
else
N := N + 10;
writeln('maka nilai itu menjadi: ',N); readln();
end.
60
- Perhatikan algoritma berikut ini :
KAMUSN, R, B : integer
BEGIN ALGORITMA
INPUT(N); INPUT(B)
IF (N < 80) THEN
R ß B + 4 * 2 + N / 4 – B + 1
ELSE IF (N < 70) THEN
R ß B + 5 * 3 + N / 4 – B + 2
ELSE IF (N < 60) THEN
R ß B + 6 * 4 + N / 4 – B + 3
ELSE
IF (N < 40) THEN
R ß B + 7 * 5 + N / 4 – B + 4
ELSE
R ß B + 8 * 6 + N / 4 – B + 5
ENDIF
ENDIF
OUTPUT(R)
END ALGORITMA
Berapa nilai R yang dihasilkan, apabila nilai B = 3 dan N = 60 ?
uses crt;
var
N,R,B : integer;
begin
clrscr;
write('masukan nilai N: '); readln(N);
write('masukan nilai B: '); readln(B);
if ( N < 80) then
R := B + 4 * 2 + N div 4 - B + 1
else if (N < 70) then
R := B + 5 * 3 + N div 4 - B + 2
else if (N < 60) then
R := B + 6 * 4 + N div - B + 3
else
if (N < 40)then
R := B + 7 * 5 + N div 4 - B + 4
else
R := B + 8 * 6 + N div 4 - B + 5;
writeln('maka nilai R adalah: ',R);
readln();
end.
24
- Perhatikan penggalan algoritma berikut ini:
INPUT(M, N, P)
IF (P < 20) THEN
M ß M * 2
ELSE
IF (N < 30) THEN
N ß N * 3
ELSE
IF (M < 40) THEN
P ß P * 4
ELSE
M ß 0
ENDIF
ENDIF
ENDIF
OUTPUT(M, N, P)
Tentukan OUTPUT yang dihasilkan, jika nilai awal yang diINPUTkan untuk M = 40, N = 30, dan P = 20.
uses crt;
var
m,n,p : integer;
begin
write('masukan nilai m: '); readln(m);
write('masukan nilai n: '); readln(n);
write('masukan nilai p: '); readln(p);
if (p < 20) then
m := m * 2
else
if (n < 30) then
n := n * 3
else
if (m < 40) then
p := p * 4
else
m := 0;
writeln('maka nilai m: ',m);
writeln('maka nilai n: ',n);
writeln('maka nilai p: ',p);
readln();
end.
M = 0 ; N = 30 ; P = 20
- Perhatikan penggalan algoritma berikut ini:
M ß 2 ; Q ß 10
IF (M < 5) THEN
M ß M + 2
ENDIF
IF (M >= 5) THEN
Q ß M + Q
ENDIF
OUTPUT(Q,M)
Berapa nilai akhir Q dan M ?
Q= 10 ; M = 4
uses crt;
var
m,n,p : integer;
begin
write('masukan nilai m: '); readln(m);
write('masukan nilai n: '); readln(n);
write('masukan nilai p: '); readln(p);
if (p < 20) then
m := m * 2
else
if (n < 30) then
n := n * 3
else
if (m < 40) then
p := p * 4
else
m := 0;
writeln('maka nilai m: ',m);
writeln('maka nilai n: ',n);
writeln('maka nilai p: ',p);
readln();
end.
- Perhatikan algoritma berikut ini:
KAMUS
Bilangan : integer
Keterangan : string
BEGIN ALGORITMA
INPUT(Bilangan)
Keterangan ß "menu promosi"
IF (Bilangan <> 4) THEN
CASE (Bilangan)
1 : Keterangan ß "menu hemat"
2 : Keterangan ß "menu paket"
3 : Keterangan ß "menu gledheg"
OTHERWISE : Keterangan ß "menu irit"
END CASE
ENDIF
OUTPUT (Keterangan)
END ALGORITMA
Tentukan OUTPUT dari algoritma di atas, apabila variabel Bilangan diINPUTkan 4
uses crt;
Var
bilangan : integer;
ket : string;
Begin
writeln('mohon masukkan nilai bilangan');
readln(bilangan);
ket := ('menu promosi');
if (bilangan > 4) then
case (bilangan) of
1 : ket := ('menu hebat');
2 : ket := ('menu paket');
3 : ket := ('menu gledeg');
else
writeln('menu irit');
end;
writeln('tadi keterangannya adalah : ',ket);
readln();
end.
Menu Promosi
- Diketahui A berisi 25, B berisi 13 dan C berisi 37, dijalankan algoritma
B ß A
C ß B
A ß C
OUTPUT(A)
Keluaran dari program diatas adalah …
2
uses crt;
var
a,b,c : integer;
begin
clrscr;
write('masukan nilai a: '); readln(a);
write('masukan nilai b: '); readln(b);
write('masukan nilai c: '); readln(c);
b := a;
c := b;
a := c;
writeln('maka nilai a adalah: ',a); readln();
end.
- Perhatikan potongan algoritma berikut:
na, uts, uas, tugas, quiz: integer
utsß75
uasß80
tugasß50
quizß50
naß (uts * 30 /100) + (uas * 35 / 100) + (tugas * 15 / 100) + (quiz * 20 / 100)
IF na>80 THEN
indeksß'A'
END IF
IF na>60 THEN
indeksß'B'
END IF
indeksß'C'
indeksß'A'
OUTPUT (indeks)
Apakah Keluaran dari program diatas?
D
uses crt;
var
na, uts, uas, tugas, quiz : integer;
indeks : char;
begin
clrscr;
uts := 75;
uas := 80;
tugas := 50;
quiz := 50;
na := (uts * 30 div 100) + (uas * 35 div 100) + (tugas * 15 div 100) + (quiz * 20 div 100);
if na > 80 then
indeks := 'A';
if na > 60 then
indeks := 'B';
end.
indeks := 'C'
indeks := 'A'
writeln(' maka indeks nilainya adalah: ',indeks); readln();
end.
- Diberikan potongan algoritma sbb :
i ß 5
i ß 8
OUTPUT(i)
Tampilan dari OUTPUT(i) adalah …
uses crt;
var
i : integer;
begin
clrscr;
i := 5;
i := 8;
writeln('nilai i adalah: ',i);
readln();
end.
8
- Diberikan potongan algoritma sbb :
IF d>0 THEN
d ß d - 1
ELSE
d ß 59
IF (m > 0) THEN
m ß m – 1
ELSE
m ß 59
j ß j - 1
ENDIF
END IF
OUTPUT(j + m - d)
Jika secara berurutan nilai j, m dan d 9,0, dan 0, maka tampilan akhir kode program diatas adalah?
uses crt;
var
j,m,d : integer;
begin
clrscr;
write('masukan nilai j: '); readln(j);
write('masukan nilai m: '); readln(m);
write('masukan nilai d: '); readln(d);
if d > 0 then
d := d - 1
else
d := 59;
if (m > 0)then
m := m - 1
else
m := 59;
j := j - 1;
writeln('maka nilai j + m - d adalah: ',j + m - d);
readln();
end.
8
- Perhatikan algoritma berikut
Program Soal18
Kamus
x,y:integer
Algoritma
xß15
yß8
zß7
xßy + x
yßx - y
OUTPUT(x)
OUTPUT(y)
END
Keluaran dari program diatas secara berurutan adalah 2
uses crt;
var
x,y,z : integer;
begin
x := 15;
y := 8;
z := 7;
x := y + x;
y := x - y;
writeln('maka nilai x: ',x);
writeln('maka nilai y: ',y);
readln();
end.
3
15
- Diketahui A berisi 15, B berisi 23, dijalankan algoritma
A ß B
B ß A
Isi A dan B di akhir algoritma adalah …
uses crt;
var
a,b : integer;
begin
clrscr;
write('masukan nilai a: '); readln(a);
write('masukan nilai b: '); readln(b);
a := b;
b := a;
writeln('maka nilai a: ',a);
writeln('dan nilai b: ',b);
readln();
end.
23 23
- Diketahui A berisi 25, B berisi 13 dan C berisi 37, dijalankan algoritma
B ß A
C ß B
A ß C
Isi C di akhir algoritma adalah … 25
uses crt;
var
a,b,c : integer;
begin
write('masukan nilai a: '); readln(a);
write('masukan nilai b: '); readln(b);
write('masukan nilai c: '); readln(c);
b := a;
c := b;
a := c;
writeln('maka nilai c adalah: ',c);
readln();
end.
- Diberikan potongan algoritma sbb :
INPUT(N)
IF N<10 THEN
N ß N + 5
END IF
OUTPUT(N)
Jika dari perintah INPUT(N), dimasukkan data 15, maka tampilan dari OUTPUT(N) adalah …
uses crt;
var
n : integer;
begin
write('masukan nilai n: '); readln(n);
if n < 10 then
n := n + 5
end.
writeln('maka nilai n adalah: ',n);
readln();
end.
- Sebuah bilangan yang telah diINPUT ke dalam variable bil akan dipecah menjadi ratusan,puluhan dan satuan :
ratusan ß bil div 100
puluhan ß ...
satuan ß bil mod 10
Perintah untuk mENDapatkan puluhan di atas adalah …
uses crt;
var
x, ratusan, puluhan, satuan: integer;
begin
clrscr;
write('masukan suatu angka: ');readln(x);
ratusan := x div 100;
puluhan := x div 10;
satuan := x mod 10;
writeln('maka nilai puluhannya adalah: ',puluhan);
readln();
end.
(bil mod 100) div 10
- Diberikan potongan algoritma sbb :
INPUT(j,m,d)
IF d>0 THEN
d ß d - 1
ELSE
d ß 59
IF m>0 THEN
m ß m – 1
ELSE
m ß 59
j ß j - 1
ENDIF
ENDIF
OUTPUT(j,m,d)
Jika INPUT(j,m,d), dimasukkan data 9, 0 dan 0, maka tampilan akhir dari OUTPUT(j,m,d) adalah …
uses crt;
var
j,m,d : integer;
begin
clrscr;
write('masukan nilai j: '); readln(j);
write('masukan nilai m: '); readln(m);
write('masukan nilai d: '); readln(d);
if d > 0 then
d := d - 1
else
d := 59;
if (m > 0)then
m := m - 1
else
m := 59;
j := j - 1;
writeln('maka nilai j adalah: ',j);
writeln('maka nilai m adalah: ',m);
writeln('maka nilai d adalah: ',d);
readln();
end.
8 59 59
- Telusuri program dibawah ini:
ALGORITMA Semangat1
KAMUS
x, y, z : integer
BEGIN ALGORITMA
INPUT(x,y,z)
IF (x < y) THEN
IF (y < z) THEN
OUTPUT("mahasiswa telkom university")
ELSE
OUTPUT("mempunyai visi yang besar")
END IF
ELSE
IF (x > y) THEN
IF (y < z) THEN
OUTPUT("karena itu")
ELSE
OUTPUT("kami selalu rajin belajar")
END IF
END IF
END IF
Jika pengguna memasukkan x = 3, y = 8, z = 5, maka OUTPUT algoritma tersebut adalah?
uses crt;
Var
x,y,z : integer;
Begin
Write('masukkan nilai x= ');
readln(x);
write('masukkan nilai y= ');
readln(y);
write('masukkan nilai z= ');
readln(z);
if (x < y) then
if (y < z) then
writeln('mahasiswa telkom universty')
else
writeln('mempunyai visi yang besar')
else
if (x > y) then
if (y > z) then
writeln('karena itu')
else
writeln('kami selalu rajin belajar');
readln();
end.
- Telusuri program dibawah ini:
ALGORITMA Semangat2
KAMUS
x, y, z : integer
BEGIN ALGORITMA
INPUT(x,y)
z <-- x + y
IF (z >= 80) THEN
z <-- z – 30
IF (z >= 70) THEN
z <-- z - 10
ELSE
IF (z >= 65) THEN
z <-- z - 5
y <-- x
END IF
END IF
IF (x <= 70) THEN
z <-- z – 10
y <-- x
END IF
OUTPUT(x, y, z)
END
Jika pengguna memasukkan x = 32, y = 50, maka OUTPUT algoritma tersebut adalah?
32 32 42
- Telusuri program dibawah ini:
Program Periksa_Semangat
Kamus
x, y : integer
BEGIN ALGORITMA
INPUT(x, y, x)
IF (x = 1) THEN
OUTPUT("1. Visi (Mimpi) telah sesuai dengan langkah")
ELSE IF ((x >= 2) and ( x <= 4) THEN
OUTPUT("2. Pantang menyerah untuk meraih mimpi")
ELSE IF (x = y) THEN
OUTPUT("3. Jujur dan profesional dalam melangkah")
ELSE IF ( y > x) THEN
OUTPUT("4. Berdoa tanpa putus")
END IF
END ALGORITMA
Jika pengguna memasukkan x = 4, y = 5, dan x = 1, maka outputnya adalah
uses crt;
Var
x,y : integer;
begin
write('masukkan nilai x= ');
readln(x);
write('masukkan nilai y= ');
readln(y);
write('masukkan nilai x= ');
if(x = 1) then
writeln('1. visi(mimpi) telah denagn langkah')
else if (x >= 2) and (x <=4) then
writeln('2. pantang menyerah untuk meraih mimpi')
else if (x = y) then
writeln('3. jujur dan profesional dalam melangkah')
else if (y > x) then
writeln('4. berdoa tanpa putus');
readln();
end.
1. Visi (Mimpi) telah sesuai dengan langkah
- Telusuri program dibawah ini:
ALGORITMA Cari_Maksimum
Kamus
dat1, dat2, dat3, dat4, big : integer
BEGIN
INPUT(dat1, dat2, dat3, dat4)
IF ((dat1 >= dat2) and (dat1 >= dat3) and (dat1 >= dat4)) THEN
big <-- dat1
ELSE IF ((dat2 >= dat1) and (dat2 >= dat3) and (dat2 >= dat4))
big <-- dat2
ELSE IF ((dat3 >= dat1) and (dat3 >= dat2) and (dat3 >= dat4))
big <-- dat3
ELSE
big <-- dat4
END IF
OUTPUT(big)
END
Jika pengguna memasukkan 12, 3, 4, dan 5, maka OUTPUTnya adalah?
12
- Perhatikan penggalan algoritma dibawah ini:
…….
IF (a = 10 and b = 5) THEN
c <-- 156
ELSE
c <-- 165
END IF
Jika ternyata variabel a diberikan INPUT 5, maka nilai variabel c adalah?
165
- Telusuri algoritma dibawah ini:
ALGORITMA AllAboutboolean
KAMUS
x, y, z : boolean
a : integer
BEGIN
INPUT(a)
x <-- false
z <-- ((3 + (5 mod 3)) = 5)
y <-- (a <= 0)
IF ((x and y) or (not(y or z))) THEN
OUTPUT("Telkom university is The Best")
ELSE IF ((y and (not z)) or (x and y)) THEN
OUTPUT("Telkom university is The Clean Campus")
END IF
OUTPUT("Telkom university is The Smart Campus")
END
Jika pengguna memasukkan -1, maka OUTPUT algoritma tersebut adalah?
Telkom university is The Smart Campus
- Diberikan potongan algoritma sbb :
IF d>0 THEN
d <-- d + 1
ELSE
d <-- 59
IF (m < 0) THEN
m <-- m + 1
ELSE
m <-- 59
j <-- j + 1
ENDIF
END IF
OUTPUT(j+m-d)
Jika secara berurutan nilai j, m dan d adalah 9, 0, dan 0,
maka tampilan akhir kode program diatas adalah?
10
- Diberikan potongan algoritma sbb :
INPUT(N)
IF N>10 THEN
N <-- N + 5
END IF
OUTPUT(N)
Jika dari perintah INPUT(N), dimasukkan data 5,
maka tampilan dari OUTPUT(N) adalah…
5
- Diberikan potongan algoritma sbb :
Kamus Data
a : integer
b : boolean
Begin
input(a)
bfalse
if (( a = 10 ) && b ) then
output("First ")
else
output("Second ")
end if
output("Third")
End
Apakah keluaran dari kode program diatas jika pada input(a) dimasukkan nilai 10?
Second Third
- Jika y diinputkan nilai 16, apakah output dari algoritma di bawah ini:
Kamus Data
isFalse: Boolean
y: Integer
BEGIN
Input(y)
isFalse <-- True
If (True) Then
If ( ((y Mod 2) = 0) AND isFalse )
y <-- y Div 3
Else
y <-- y * y
Endif
Else
y <-- 100
Endif
output(y)
END
5
BAGIAN 2: ESSAY
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
- Indeks="C" bila Nilai Akhir >= 50 dan Nilai Akhir <65
- Indeks="D" bila Nilai Akhir >= 35 dan Nilai Akhir <50
- Indeks="E" bila Nilai Akhir < 35
Buat algoritma untuk membantu mahasiswa tersebut dalam menghitung nilai akhir dan Indeksnya, bila semua komponen nilai diINPUT.
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.
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.
Algoritma Wisata
//
Kamus Data
jpeserta :
j_bus :
BEGIN
INPUT(jpeserta)
...
OUTPUT(j_bus)
END
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
#include<stdio.h>
#include<stdlib.h>
int main(){
int iGolongan, iLembur, iTotal;
printf("Golongan = ");
scanf("%d",&iGolongan);
printf("Jumlah jam lembur = ");
scanf("%d",&iLembur);
switch(iGolongan){
case 1: iTotal=500000+iLembur*5000;
break;
case 2: iTotal=300000+iLembur*3000;
break;
case 3: iTotal=250000+iLembur*2000;
break;
case 4: iTotal=100000+iLembur*1500;
break;
case 5: iTotal=50000+iLembur*1000;
break;
}
printf("Total gaji = %d\n",iTotal);
system("PAUSE");
return 0;
}
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 |
Algoritma:
Algoritma Lama_Bekerja
{jam berupa angka 1-12, dan seorang pegawai bekerja kurang dari 12 jam}
KAMUS DATA
iMasuk, iKeluar, iLama: Integer
BEGIN
Input(iMasuk)
Input(iKeluar)
If (iKeluar >= iMasuk) Then
iLama ß iKeluar - iMasuk
Else
iLama ß (12-iMasuk) + iKeluar
end if
Output(iLama)
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 |
Algoritma:
Algoritma Biaya_Parkir
{menghitung biaya parkir}
KAMUS DATA
iMasuk, iKeluar, iLama, iBiaya: Integer
BEGIN
Input(iMasuk)
Input(iKeluar)
If (iKeluar >= iMasuk) Then
iLama ß iKeluar - iMasuk
Else
iLama ß (12-iMasuk) + iKeluar
End If
If (iLama > 2) Then
iBiaya ß 2000 + ((iLama - 2)*500)
else
iBiaya ß 2000
Output(iBiaya)
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.
Algoritma:
Algoritma Menghitung_Resistor
KAMUS DATA
iPilihan: Integer
fR1, fR2, fR3, fResPengganti: Float
BEGIN
Input(fR1,fR2,fR3)
Input(iPilihan)
Case iPilihan
1: fResPengganti ß fR1+ fR2+ fR3
2: fResPengganti ß (1.0/fR1)+ (1.0/fR2)+ (1.0/fR3)
fResPengganti ß 1.0/fResPengganti
Otherwise: output("pilihan salah")
End Case
Output(fResPengganti)
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
Algoritma
Algoritma Menghitung_Barang
KAMUS DATA
iKode,iHarga:integer
cJenis: character
BEGIN
Input(cJenis)
Input(iKode)
Input(iHarga)
Case(cJenis)
'A': iHDiskon ß 0,9 * iHarga
'B': iHDiskon ß 0,85 * iHarga
'C': iHDiskon ß 0,8 * iHarga
End Case
output(iHDiskon)
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.
Algoritma:
Algoritma Menghitung_Gaji
KAMUS DATA
iGol, iJam, iUpah, iGaji : Integer
BEGIN
Input(iGol)
Input(iJam)
iUpah ß 0
Case(iGol)
1: iUpah ß 3000
2: iUpah ß 3500
3: iUpah ß 4000
4: iUpah ß 5000
End case
If (iJam > 40) Then
iGaji ß 40 * iUpah + ((iJam - 40) * 1.5 * iUpah)
Else
iGaji ß iJam * iUpah
End if
Output(iGaji)
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 |
Algoritma:
ALGORITMA MENGHITUNG_JAM_MENIT
KAMUS DATA
iJamStart,iMenitStart,iMenitStop,iJamStop: integer
iTotMenit1,iTotMenit2,iSelangMenit,iJamDurasi,iMenitDurasi: integer
BEGIN
Input(iJamStart)
Input(iMenitStart)
Input(iJamStop)
Input(iMenitStop)
iTotMenit1 ß iJamStart * 60 + iMenitStart
iTotMenit2 ß iJamStop * 60 + iMenitStop
If (iTotMenit2 >= iTotMenit1) Then
iSelangMenit ß iTotMenit2 - iTotMenit1
Else
iSelangMenit ß ((12*60)-iTotMenit1) + iTotMenit2
End if
iJamDurasi ß iSelangMenit div 60
iMenitDurasi ß iSelangMenit mod 60;
Output(iJamDurasi)
Output(iMenitDurasi)
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
Algoritma:
ALGORITMA Menghitung_Kuadran
KAMUS DATA
ix, iy: Integer
BEGIN
Input(ix,iy)
If (ix >= 0)
If (iy >=0)
Output("Kuadran I")
else
Output("Kuadran IV")
else
if (iy >=0)
Output("Kuadran II")
else
Output("Kuadran III")
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 |
Algoritma:
ALGORITMA Menghitung_Tunjangan
KAMUS DATA
iGajiPokok, iTunjangan, iJmlAnak: Integer
BEGIN
Input(iGajiPokok)
Input(iJmlAnak)
If (iJmlAnak <= 3 && iJmlAnak > 0) Then
iTunjangan ß iJmlAnak * 0.1 * iGajiPokok
Else If (iJmlAnak > 3)
iTunjangan ß 3 * 0.1 * iGajiPokok
Else
iTunjangan ß 0
End if
Output ( iTunjangan)
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 |
Algoritma:
ALGORITMA Menghitung_Tunjangan
KAMUS DATA
iPeserta,iMinibus : Integer
BEGIN
Output(iPeserta)
iMinibusß0
If (iPeserta > 7) Then
iMinibus ß iPeserta / 7
If (iPeserta % 7 != 0) Then
iMinibus ß iMinibus + 1
End If
Else if (iPeserta > 0) Then
iMinibus ß 1
End if
Output(iMinibus)
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 |
Algoritma:
ALGORITMA Menentukan_Nama_Hari_1
KAMUS DATA
iNHari,iBelakang : Integer
cNamaHari[15]: String
BEGIN
Input(iNHari)
iBelakang ß ( iNHari + 1)
Case (iBelakang)
1: cNamaHari ß"Senin"
2: cNamaHari ß"Selasa"
3: cNamaHari ß"Rabu"
4: cNamaHari ß"Kamis"
5: cNamaHari ß"Jumat"
6: cNamaHari ß"Sabtu"
7: cNamaHari ß"Minggu"
Otherwise: cNamaHari ß "Inputan salah"
End Case
Output(cNamaHari)
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 |
Algoritma:
ALGORITMA Menghitung_Hari
KAMUS DATA
iNHari,iHariIni,iBelakang : Integer
cNamaHari[15] : String
cNamaHariLalu: Char
BEGIN
Input(iHariIni)
Input(iNHari)
If (iHariIni>iNHari) Then
iBelakang ß iHariIni - iNHari
Else
iBelakang ß 7 - (iNHari - iHariIni)
End If
Case (iBelakang)
1: cNamaHari ß"Senin"
2: cNamaHari ß"Selasa"
3: cNamaHari ß"Rabu"
4: cNamaHari ß"Kamis"
5: cNamaHari ß"Jumat"
6: cNamaHari ß"Sabtu"
7: cNamaHari ß"Minggu"
End Case
Output(cNamaHari)
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
ALGORITMA Menghitung_Pembayaran_Listrik
KAMUS DATA
iGol,iPakai,iTarIF,iBayar : Integer
BEGIN
INPUT(iGol)
INPUT(iPakai)
IF ( iGol = 1) THEN
iTarIF <--1000
ELSE
iTarIF <-- 2000
END IF
IF (iPakai < 100) THEN
iBayar <-- 100 * iTarIF
ELSE IF ( iPakai >= 1000)
iBayar <-- iPakai * iTarIF * 1.1
ELSE
iBayar <-- iPakai * iTarIF
END IF
OUTPUT(iBayar)
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
ALGORITMA Menghitung_Bulan_Pernikahan
KAMUS DATA
iBlnSekarang, iNbulan, iBlnPernikahan : Integer
BEGIN
INPUT (iBlnSekarang)
INPUT (iNBulan)
IF ( (iBlnSekarang + iNbulan) <= 12 ) THEN
iBlnPernikahan <-- iBlnSekarang + iNbulan
ELSE
iBlnPernikahan <-- (iBlnSekarang + iNbulan) mod 12
END IF
OUTPUT (iBlnPernikahan)
END
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
#include<stdio.h>
#include<stdlib.h>
int main(){
int waktu1[3],waktu2[3], selisih;
printf("Waktu 1= ");
scanf("%d:%d:%d",&waktu1[0],&waktu1[1],&waktu1[2]);
printf("Waktu 2= ");
scanf("%d:%d:%d",&waktu2[0],&waktu2[1],&waktu2[2]);
selisih=(waktu1[0]*3600+waktu1[1]*60+waktu1[2])-(waktu2[0]*3600+waktu2[1]*60+waktu2[2]);
printf("Selisih = %d detik\n",selisih);
system("PAUSE");
return 0;
}