Soal
2
B
FLOWCHART
Start
Jarijari,luas,tinggi,alas,
sisi,sisi1, sisi2,Bangun,
Const phi=3.14
Input bangun
If bangun = 1
Input jarijari
Luas
Jarijari*jarijari*phi
N
If bangun = 2
Write (luas)
Write (luas)
Y
If bangun = 3
Input sisi
Luas sisi*sisi
Write (luas)
N
Y
Input sisi1,
sisi2, tinggi
If bangun = 4
Luas
(sisi1+sisi2)*tinggi/2
Write (luas)
Stop
Page | 2
PASCAL
program LuasBangun;
{Tugas No.2
Program menghitung luas bangun lingkaran,
segitiga, bujur sangkar dan trapesium
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var
jarijari,luas,tinggi,alas,sisi,sisi1,sisi2 : real;
bangun:integer;
const
phi=3.14;
begin
writeln ('masukkan angka 1, 2, 3 atau 4 untuk memilih jenis bangun');
writeln ('1: menghitung luas lingkaran');
writeln ('2: menghitung luas segitiga');
writeln ('3: menghitung luas bujursangkar');
writeln ('4: menghitung luas trapesium');
write ('Jenis Bangun = ');
read(bangun);
if(bangun=1) then
begin
write('Masukkan jari-jari : ');readln(jarijari);
luas:=jarijari*jarijari*phi;
writeln('Luas Lingkaran = ',luas:0:2);
end
else if(bangun=2) then
begin
write ('Masukkan tinggi : ');readln(tinggi);
write ('Masukkan alas : ');readln (alas);
luas:=(alas*tinggi)/2;
writeln ('Luas Segitiga = ',luas:0:2);
end
else if(bangun=3)then
begin
write ('masukkan sisi : ');readln(sisi);
luas:=(sisi*sisi);
write ('Luas Bujursangkar = ',luas:0:2);
end
else if(bangun=4)then
begin
write ('masukkan sisi sejajar pertama : ');readln(sisi1);
write ('masukkan sisi sejajar kedua : ');readln(sisi2);
write ('masukkan tinggi : ');readln (tinggi);
luas:=(sisi1+sisi2)*tinggi/2;
writeln ('Luas Trapesium = ',luas:0:2);
end
else writeln ('Salah input jenis bangun');
end.
Page | 3
LAYOUT PROGRAM
Page | 4
Soal
5
D
ibaca dua buah tanggal (dd:mm:yy), tulislah algoritma untuk menghitung berapa hari
jarak kedua tanggal tersebut. Asumsikan 1 tahun=365 hari, 1 bulan=30hari. Keluaran
(tahun, bulan, hari) ditampilkan ke piranti keluaran.
DESKRIPTIF
1.
2.
3.
4.
5.
6.
7.
8.
9.
FLOWCHART
Start
Tahun, bulan, hari,
hari1, hari2
Input hari, bulan, tahun
hari1 hari + bulan*30 + tahun*365
Input hari, bulan, tahun
hari2 hari + bulan*30 + tahun*365
hari hari2 hari1
tahun hari div 365
bulan (hari mod 365) div 30
hari (hari mod 365) mod 30
Write (tahun, bulan, hari)
Stop
Page | 5
Page | 6
PSEUDOCODE
Program SelisihTanggal
{Algoritma menghitung jarak antara dua tanggal yang diinput}
Deklarasi
tahun, bulan, hari1, hari2, hari : integer
Algoritma
Read (hari, bulan, tahun)
hari1 hari + bulan*30 + tahun*365
Read (hari, bulan, tahun)
hari2 hari + bulan*30 + tahun*365
hari hari2-hari1
tahun hari div 365
bulan (hari mod 365) div 30
hari (hari mod 365) mod 30
Write (tahun, bulan, hari)
PASCAL
program SelisihTanggal;
{Tugas No.5
Program menghitung selisih dua tanggal
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var
tahun,bulan:integer;
hari1,hari2,hari:longint;
begin
writeln ('masukkan tanggal (dd mm yyyy) '); read (hari,bulan,tahun);
hari1:=hari+bulan*30+tahun*365;
writeln ('masukkan tanggal selanjutnya (dd mm yyyy) '); read (hari,bulan,tahun);
hari2:=hari+bulan*30+tahun*365;
hari:=hari2-hari1;
tahun:=hari div 365;
bulan:=(hari mod 365) div 30;
hari:=(hari mod 365) mod 30;
writeln ('Jarak antara kedua tanggal adalah : ',abs(tahun),' tahun ',abs(bulan),' bulan
',abs(hari),' hari ');
end.
Page | 7
LAYOUT PROGRAM
Page | 8
Soal
6
D
ibaca tiga buah bilangan bulat x,y dan z. Tulislah algoritma untuk mempertukarkan
tripel (x,y,z) menjadi (y,z,x).
DESKRIPTIF
1.
2.
3.
4.
5.
6.
FLOWCHART
Start
a, x, y, z
Input x, y, z
a x
x y
yz
za
Write (x, y, z)
Stop
PSEUDOCODE
Program TukarBilangan
{Algoritma menukar 3 buah bilangan}
Deklarasi
a, x, y, z : integer
Algoritma
Read (x, y, z)
ax
xy
yz
za
write (x, y, z)
Page | 9
PASCAL
program TukarBilangan;
uses wincrt;
var a, x,y,z:integer;
begin;
writeln ('masukkan tiga buah bilangan bulat, x y z : '); read (x,y,z);
a:=x; x:=y; y:=z; z:=a;
write (x,' ', y,' ', z);
end.
LAYOUT PROGRAM
Page | 10
Soal
7
B
uat algoritma yang membaca nilai uang (rp) dalam kelipatan 25, lalu menentukan
berapa nilai tukaran pecahan. Pecahan yang tersedia adalah Rp.1000, Rp.5000,
Rp.100, Rp.50 dan Rp.25. Sebagai contoh: Rp.2775 setara dengan 2 buah pecahan 1000,
ditambah 1 buah pecahan Rp.500, ditambah 2 buah pecahah 100, ditambah 1 buah
pecahan Rp.50 ditambah 1 buah pecahan Rp.25.
DESKRIPTIF
1.
2.
3.
4.
5.
6.
7.
FLOWCHART
Start
uang, p1000, p500,
p100, p50, p25
Input uang
Page | 11
PSEUDOCODE
Program PecahanUang
{Algoritma menentukan nilai pecahan uang}
Deklarasi
Uang, p1000, p500, p100, p50, p25:integer
Algoritma
read (uang)
p1000 uang div 1000
p500 (uang mod 1000) div 500
p100 (uang mod 500) div 100
p50 (uang mod 100) div 50
p25 (uang mod 50) div 25
Write (p1000, p500, p100, p50, p25)
PASCAL
program PecahanUang;
{Tugas No.7
Program menentukan nilai pecahan uang
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var
uang:longint;
p1000,p500,p100,p50,p25:integer;
begin
writeln ('Masukkan Nilai Uang : '); read (uang);
p1000:= uang div 1000;
p500:= (uang mod 1000) div 500;
p100:= (uang mod 500) div 100;
p50:= (uang mod 100) div 50;
p25:= (uang mod 50) div 25;
write ('Rp.',uang, ' setara dengan ',p1000,' buah pecahan 1000, ditambah ',p500);
write (' buah pecahan 500, ditambah ',p100,' buah pecahan 100, ditambah ',p50);
write (' buah pecahan 50, ditambah ',p25,' buah pecahan 25');
end.
Page | 12
LAYOUT PROGRAM
Page | 13
Soal
8
S
eekor semut menempuh perjalanan sejauh x cm, tulis algoritma untuk mengkonversi
jarak x ke dalam km-m-cm. Ingat bahwa 1 m=100cm, 1 km = 1000 m = 100.000 cm.
Misalnya x=261341 cm, berarti semut menempuh jarak sejauh 2 km+63 m + 141 cm.
DESKRIPTIF
1. Masukkan jarak dalam x cm
2. Nilai km yaitu x dibagi 1000
3. Nilai m yaitu sisa pembagian (2) dibagi 100
4. Nilai cm yaitu sisa pembagian (3)
5. Tampilkan nilai km, nilai m dan nilai cm
6. Selesai
FLOWCHART
Start
x, km, m, cm
Input x
km = x div 100000
m = (x mod 100000) div 100
cm = (x mod 100000) mod 100
Stop
PSEUDOCODE
Program Konversi_Jarak
{ Algoritma mengkonversi jarak cm ke km, m, cm}
Deklarasi
x, km, m, cm : longint
Algoritma
read (x)
km x div 100000
m (x mod 100000) div 100
cm (x mod 100000) mod 100
write (x, km, m, cm)
Page | 14
PASCAL
program KonversiJarak;
{Tugas No.8
Program mengkonversi jarak cm ke km, m, cm
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var
x, km, m, cm: longint;
begin
write ('masukkan jarak x : '); read (x);
km:= x div 100000;
m := (x mod 100000) div 100;
cm := (x mod 100000) mod 100;
writeln (x,' cm = ',km,' km + ',m,' m + ',cm,' cm');
end.
LAYOUT PROGRAM
Page | 15
Soal
uat algoritma yang membaca sebuah bilangan bulat positif lalu menentukan apakah
bilangan tersebut merupakan kelipatan 4
DESKRIPTIF
1. Masukan bilangan bulat positif
2. Apabila bilangan tersebut :
- Habis dibagi 4, maka bilangan tersebut merupakan kelipatan 4
- Tidak habis dibagi 4, maka bilangan tersebut bukan kelipatan 4
3. Selesai
FLOWCHART
Start
Input x
x mod 4 = 0
Output (bilangan
bukan kelipatan 4)
Output (bilangan
merupakan kelipatan 4)
Stop
PSEUDOCODE
Program KelipatanEmpat
{Program menentukan bilangan kelipatan 4}
Deklarasi
x : integer
Algoritma
read (x)
if (x mod 4 = 0)
then write (' merupakan kelipatan 4')
else write (' bukan kelipatan 4');
endif
Page | 16
PASCAL
program KelipatanEmpat;
{Tugas No.11
Program menentukan bilangan kelipatan empat
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var
x:integer;
begin
write ('Masukkan bilangan bulat positif : ');
read (x);
if (x mod 4 = 0)
then write(x, ' merupakan kelipatan 4')
else write(x, ' bukan kelipatan 4');
end.
LAYOUT PROGRAM
Page | 17
Soal
ulislah algoritma yang membaca 3 buah bilangan bulat, lalu mengurutkan tiga buah
bilangan tersebut dari nilai yang terkecil ke nilai yang besar. Keluaran adalah 3 buah
bilangan yang terurut.
DESKRIPTIF
1. Masukkan Nilai a, b dan c
2. Bandingkan ketiga nilai
3. Kondisi jika nilai a lebih kecil dari 2 nilai yang lain:
Apabila b c maka cetak a, b, c
Apabila c b maka cetak a, c, b
4. Kondisi jika nilai b lebih kecil dari 2 nilai yang lain:
Apabila a c maka cetak b, a, c
Apabila c a maka cetak b, c, a
5. Kondisi jika nilai c lebih kecil dari 2 nilai yang lain:
Apabila a b maka cetak c, a, b
Apabila b a maka cetak c, b, a
6. Selesai
PSEUDOCODE
Program UrutanBilangan
{ Algoritma mengurutkan 3 bilangan dari yang terkecil ke bilangan terbesar }
Deskripsi
a,b,c :integer
Algoritma
read (a,b,c)
if (a<=b) and (a<=c) then
if (b<=c) then write (a,b,c)
else write (a,c,b)
endif
else if (b<=a) and (b<=c) then
if (a<=c) then write (b,a,c)
else write (b,c,a)
endif
else if (a<=b)then write (c,a,b)
else write(c,b,a)
endif
endif
endif
Page | 18
FLOWCHART
Start
Input a, b, c
(a <= b)
and
(a<=c)
Y
b <= c
Output (a,c,b)
N
(b <= a)
and
(b<=c)
a <= c
N
N
a <= b
Output(a,b,c)
Output (b,a,c)
Output (b,c,a)
Output (c,a,b)
N
Output (c,b,a)
Stop
Page | 19
PASCAL
program UrutanBilangan;
{Tugas No.13
Program mengurutkan 3 bilangan dari yang terkecil
ke bilangan terbesar
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var a,b,c:integer;
begin
write ('masukkan bilangan a ');readln (a);
write ('masukkan bilangan b ');readln (b);
write ('masukkan bilangan c ');readln (c);
writeln;
writeln ('urutan bilangan :');
if (a<=b) and (a<=c) then
if (b<=c) then write (a,b,c)
else write (a,c,b)
else if (b<=a) and (b<=c) then
if (a<=c) then write (b,a,c)
else write (b,c,a)
else if (a<=b)then write (c,a,b)
else write(c,b,a);
end.
LAYOUT PROGRAM
Page | 20
Soal
ulislah algoritma yang membaca panjang (integer) tiga buah sisi segitiga a,b,c yang
dalam hal ini abc, lalu menentukan apakah ketiga segitiga tersebut membentuk
segitiga siku2, segitiga lancip atau segitiga tumpul (petunjuk: gunakan hukum phytagoras)
DESKRIPTIF
1.
2.
3.
4.
5.
6.
PSEUDOCODE
Program phytagoras;
{Algoritma menentukan sebuah segitiga itu segitiga siku-siku,
segitiga tumpul atau segitiga lancip }
Deklarasi
a, b, c, i, j, k: integer
Algoritma
read(i, j, k)
if (i>j) and (i>k) then ci, bj, ak
else if (b>a) and (b>c) then cj, bi, ak
else begin ck, bi, aj
endif
endif
if (c*c = a*a + b*b) then write ('Segitiga tersebut adalah segitiga siku-siku')
else if (c*c > a*a + b*b) then write ('Segitiga tersebut adalah segitiga tumpul')
else write ('Segitiga tersebut adalah segitiga lancip')
endif
endif
Page | 21
FLOWCHART
Start
N
(i >= j)
and
(i >= k)
Input i, j, k
(j <= i)
and
(j <=k)
Y
Y
c=i
b=j
a=k
c2=a2+b2
c=j
b=i
a=k
Output
(segitiga siku-siku)
Output
(segitiga tumpul)
c=k
b=i
a=j
c2>a2+b2
Output
(segitiga lancip)
Stop
Page | 22
PASCAL
program phytagoras;
{Tugas No.14
Program menentukan sebuah segitiga itu segitiga siku-siku,
segitiga tumpul atau segitiga lancip
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var a,b,c,i,j,k: integer;
begin
writeln ('Program Segitiga Phytagoras');
writeln ('Masukkan sisi pertama'); read(i);
writeln ('Masukkan sisi kedua'); read(j);
writeln ('Masukkan sisi ketiga'); read(k);
if (i>j) and (i>k) then begin c:=i; b:=j; a:=k end
else if (j>i) and (j>k) then begin c:=j; b:=i;a:=k end
else begin c:=k; b:=i; a:=j end;
writeln;
writeln ('a = ',a,' b = ',b,' c = ',c);
if (c*c=a*a+b*b)
then begin
writeln ('Karena ','c','2 = ','a','2 + ','b','2 maka');
writeln ('Segitiga tersebut adalah segitiga siku-siku') end
else if (c*c>a*a+b*b)
then begin
writeln ('Karena ','c','2 > ','a','2 + ','b','2 maka');
writeln ('segitiga tersebut adalah segitiga tumpul')end
else begin
writeln ('Karena ','c','2 < ','a','2 + ','b','2 maka');
writeln ('segitiga tersebut adalah segitiga lancip')end
end.
Page | 23
Layout Program
Page | 24
Soal
DESKRIPTIF
1. Masukkan bilangan n
2. Cari hasil bagi n dengan bilangan antara 1 dan n
3. Apabila hasil pembagian:
- Bilangan n hanya habis dibagi dengan n dan 1 maka n adalah bilangan prima
- Jika tidak maka n bukan bilangan prima
4. Selesai
FLOWCHART
Start
x, a, b
Input x
b=0
a=1
x mod a = 0
b=b+1
N
N
a=x
a=a+1
Y
b=2
Y
x adalah
bilangan prima
x bukan
bilangan prima
Stop
Page | 25
PSEUDOCODE
Program Bilangan_Prima
{Algoritma menentukan bilangan prima}
Deklarasi
x, a, b : integer
Algoritma
read (x)
b:=0
for a = 1 to x
if (x mod a=0) then bb+1
endif
endfor
if (b=2) then write (x, ' adalah bilangan prima')
else write (x, ' bukan bilangan prima');
endif
PASCAL
program bilanganprima;
{Tugas No.19
Program menentukan bilangan prima
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var
x,a,b : longint;
begin
write ('Masukkan bilangan '); read (x);
b:=0;
for a:=1 to x do
begin
if (x mod a=0) then b:=b+1;
end;
if (b=2) then writeln (x, ' adalah bilangan prima')
else writeln (x, ' bukan bilangan prima');
end.
Page | 26
LAYOUT PROGRAM
Page | 27
Soal
DESKRIPTIF
1. Masukkan nilai a, b dan c dengan persamaan kuadrat ax2 + bx + c
2. Hitung D = b2 4ac
3. Apabila pada persamaan :
a = 0, maka akarnya:
D = 0, maka akarnya:
PSEUDOCODE
Program PersamaanKuadrat
{Algoritma menghitung akar persamaan kuadrat }
Deklarasi
a, b, c : integer
x1, x2, D : real
Algoritma
read (a, b, c)
D b*b 4*a*c
if (a = 0) then write ('Merupakan persamaan linier', -c/b)
else if (D<0) then write ('akar-akarnya merupakan imaginer dan tidak mempunyai
penyelesaian')
else if (D=0) then x1-b/2*a, x2x1
write (x1)
else x1:=(-b+sqrt (D))/(2*a)
x2:= (-b-sqrt (D))/(2*a)
write (x1, x2)
endif
endif
endif
Page | 28
FLOWCHART
Start
a, b, c, x1, x2, D
Input a, b, c
D = b2 4ac
Y
a=0
x1
c
b
Output x1
N
Y
D<0
Output
Akar imaginer
N
D=0
x1
b
2a
Output x1
x1,2
b D
2a
Output
x1, x2
Stop
Page | 29
PASCAL
program PersamaanKuadrat;
{Tugas No.20
Program menghitung akar persamaan kuadrat
Kelompok 11: Imaduddin, Nilam Cahya, Muh. Jasim}
uses wincrt;
var a,b,c:integer;
x1,x2,D:real;
begin
writeln ('Mencari Persamaan kuadrat: ax^2 + bx + c');
write ('Masukkan Nilai a : ');read (a);
write ('Masukkan Nilai b : ');read (b);
write ('Masukkan Nilai c : ');read (c);
D:=b*b-4*a*c;
if (a=0) then begin writeln ('Merupakan persamaan linier ',b,'x+',c,'=0');
writeln ('Dengan penyelesaian HP = {',-c/b:0:2,'}');end
else if (D<0) then begin writeln ('Karena Determinan < 0, maka');
writeln ('akar-akarnya merupakan imaginer');
writeln ('dan tidak mempunyai penyelesaian');end
else if(D=0) then begin x1:=-b/2*a;
x2:=x1;
writeln ('akar-akar persamaan kuadrat:');
writeln ('x1=',x1:0:2);
writeln ('x2=',x2:0:2);
writeln ('Himpunan Penyelesaian = {',x1:0:2,'}');end
else begin x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
writeln ('akar-akar persamaan kuadrat:');
writeln ('x1=',x1:0:2);
writeln ('x2=',x2:0:2);
writeln ('Himpunan Penyelesaian = {',x1:0:2,',',x2:0:2,'}');end
end.
Page | 30
LAYOUT PROGRAM
Page | 31