• Tidak ada hasil yang ditemukan

Tugas Final Algoritma dan Pemrograman

N/A
N/A
Protected

Academic year: 2021

Membagikan "Tugas Final Algoritma dan Pemrograman"

Copied!
32
0
0

Teks penuh

(1)
(2)

Soal

uat algoritma untuk menghitung luas bangun geometri (lingkaran, bujursangkar, segitiga dan trapesium). Data masukan dibaca dari piranti masukan dan luas bangun ditampilkan sebagai keluaran.

KALIMAT DESKRIPTIF

1. Masukkan jenis bangun 2. Apabila jenis bangun :

 lingkaran maka :

Masukkan jari-jari kemudian hitung luas yaitu jari-jari x jari-jari x phi (3.14)  bujursangkar maka:

Masukkan panjang sisi kemudian hitung luas yaitu sisi x sisi  segitiga maka:

Masukkan alas dan tinggi kemudian hitung luas yaitu alas x tinggi dibagi 2  trapesium maka:

Masukkan 2 sisi sejajar kemudian hitung luas yaitu jumlah 2 sisi sejajar dikali tinggi dibagi 2

3. Tampilkan luas

PSEUDOCODE

Program LuasBangun

{Algoritma menghitung luas bangun lingkaran, segitiga, bujur sangkar dan trapesium}

Deklarasi

Jarijari, luas, tinggi, alas, sisi, sisi1, sisi2 : integer Bangun : integer

Const phi = 3.14

Algoritma

Program LuasBangun Read (bangun)

If (bangun=1) then read(jarijari)

luasjarijari*jarijari*phi write(Luas)

Else if (bangun=2) then read (tinggi, alas) luas(alas*tinggi)/2 write(Luas)

Else if (bangun=3)then read(sisi) luas(sisi*sisi) write(Luas)

Else if (bangun=4)then read(sisi1, sisi2, tinggi) luas(sisi1+sisi2)*tinggi/2 write(Luas)

Else write ('Salah input jenis bangun') Endif Endif Endif Endif

B

2

(3)

FLOWCHART Start Jarijari,luas,tinggi,alas, sisi,sisi1, sisi2,Bangun, Const phi=3.14 Input bangun

If bangun = 1 Input jarijari Y

Luas 

Jarijari*jarijari*phi Write (luas) If bangun = 2

N

N

N

Input sisi

Luas sisi*sisi Write (luas) Input alas, tinggi

Y

Luas alas*tinggi/2 Write (luas)

Input sisi1, sisi2, tinggi

Luas 

(sisi1+sisi2)*tinggi/2 Write (luas) Y

N Y If bangun = 3

If bangun = 4

(4)

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.

(5)
(6)

Soal

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. Masukkan tanggal pertama

2. Jumlah hari untuk tanggal pertama yaitu hari + (bulan x 30) + (tahun x 365) 3. Masukkan tanggal kedua

4. Jumlah hari untuk tanggal kedua yaitu hari + (bulan x 30) + (tahun x 365)

5. Selisih hari kedua tanggal adalah jumlah hari kedua dikurang jumlah hari pertama 6. Nilai tahun adalah selisih hari dibagi 365

7. Nilai bulan adalah sisa pembagian tahun dibagi 30 8. Nilai hari adalah sisa pembagian bulan

9. Tampilkan nilai tahun, nilai bulan dan nilai hari

FLOWCHART

Start

Tahun, bulan, hari, hari1, hari2 Input hari, bulan, tahun hari1  hari + bulan*30 + tahun*365

Write (tahun, bulan, hari) Stop

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

D

(7)
(8)

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 ');

(9)
(10)

Soal

ibaca tiga buah bilangan bulat x,y dan z. Tulislah algoritma untuk mempertukarkan tripel (x,y,z) menjadi (y,z,x).

DESKRIPTIF

1. Masukkan bilangan x, y dan z 2. Simpan nilai x ke dalam a 3. Simpan nilai y ke dalam x 4. Simpan nilai z ke dalam y 5. Simpan nilai a ke dalam z 6. Tampilkan nilai x, y dan z

FLOWCHART Start a, x, y, z Input x, y, z a  x x  y y  z z  a Write (x, y, z) Stop PSEUDOCODE Program TukarBilangan

{Algoritma menukar 3 buah bilangan}

Deklarasi a, x, y, z : integer Algoritma Read (x, y, z) a  x x  y y  z z  a write (x, y, z)

D

6

(11)

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.

(12)

Soal

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. Input nilai uang

2. Jumlah pecahan 1000 adalah nilai uang dibagi 1000

3. Jumlah pecahan 500 adalah sisa pembagian langkah (2) dibagi 500 4. Jumlah pecahan 100 adalah sisa pembagian langkah (3) dibagi 100 5. Jumlah pecahan 50 adalah sisa pembagian langkah (4) dibagi 50 6. Jumlah pecahan 25 adalah sisa pembagian langkah (5) dibagi 25 7. Tampilkan jumlah pecahan 1000, 500, 100, 50 dan pecahan 25

FLOWCHART Start uang, p1000, p500, p100, p50, p25 Input 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

Output (p1000, p500, p100, p50, p25)

Stop

B

(13)

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');

(14)
(15)

Soal

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 Output (x, km, m, cm) Stop

S

8

(16)

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

(17)

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

Output (‘bilangan

merupakan kelipatan 4’)

Stop

x mod 4 = 0

Y

Output (‘bilangan

bukan kelipatan 4’)

N

B

(18)

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.

(19)

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)

(20)

FLOWCHART

Start

Input a, b, c

Stop

(a <= b)

and

(a<=c)

N

Y

b <= c

N

Y

(b <= a)

and

(b<=c)

N

a <= c

Y

N

Y

a <= b

N

Y

Output(a,b,c)

Output (a,c,b)

Output (b,a,c)

Output (b,c,a)

Output (c,b,a)

Output (c,a,b)

(21)

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.

(22)

Soal

ulislah algoritma yang membaca panjang (integer) tiga buah sisi segitiga a,b,c yang dalam hal ini a≤b≤c, lalu menentukan apakah ketiga segitiga tersebut membentuk segitiga siku2, segitiga lancip atau segitiga tumpul (petunjuk: gunakan hukum phytagoras)

DESKRIPTIF

1. Masukkan 3 sisi segitiga

2. Cari nilai terbesar di antara ketiga sisi tersebut 3. c adalah nilai terbesar

4. Jika c2 = a2 + b2, maka segitiga tersebut adalah segitiga siku-siku

5. Jika c2 > a2 + b2, maka segitiga tersebut adalah segitiga tumpul

6. Jika c2 < a2 + b2, maka segitiga tersebut adalah segitiga lancip 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 ci, bj, ak else if (b>a) and (b>c) then cj, bi, ak else begin ck, bi, aj

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

(23)

FLOWCHART

Start

Input i, j, k

(i >= j)

and

(i >= k)

N

Y

(j <= i)

and

(j <=k)

Y

N

Output

(‘segitiga siku-siku’)

c = i

b = j

a = k

c = k

b = i

a = j

c = j

b = i

a = k

N

c

2

=a

2

+b

2

c

2

>a

2

+b

2

Y

Output

(‘segitiga tumpul’)

Output

(‘segitiga lancip’)

Y

N

(24)

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.

(25)
(26)

Soal

uatlah algoritma untuk menentukan bilangan prima

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 x adalah bilangan prima Stop x mod a = 0 N b = 2 a = x Y b = 0 a = 1 b = b + 1 a = a + 1 x bukan bilangan prima Y N Y N

B

(27)

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 bb+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');

(28)
(29)

Soal

uat algoritma untuk menentukan akar persamaan kuadrat.

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 akar-akarnya irrasional atau imaginer  D = 0, maka akarnya:

 D > 0, maka akarnya : √ 4. Keluaran adalah akar persamaan kuadrat 5. Selesai

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, x2x1

(30)

FLOWCHART

Start

a, b, c, x1, x2, D

Input a, b, c

Stop

a = 0

N

N

D = 0

D < 0

N

Y

Y

Y

D = b

2

– 4ac

Output x1

Output

‘Akar imaginer’

Output x1

Output

x1, x2

b

c

x

1

2a

b

x

1

a

2

D

b

x

1,2

(31)

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.

(32)

LAYOUT PROGRAM

Referensi

Dokumen terkait

Panjang sisi yang sama dari segitiga sama kaki adalah 2 kali panjang sisi ketiga.. Jika keliling segitiga 80

Segitiga yang mempunyai dua buah sisi yang sama dan dua buah sudut yang sama C.. Panjang AC

Duia buah segitiga dikatakan kongruen jika sisi-sisi yang bersesuaian sama panjang db. Dua buah segitiga dikatakan kongruen jika dua pasang sisi yang bersesuaian

Segitiga sama sisi adalah segitiga yang ketiga sisinya sama panjang.. Segitiga sama kaki adalah segitiga yang dua sisinya

Pola 3 sepuluh segitiga putih dan enam segitiga hitam, membentuk segitiga sama sisi dengan panjang sisi 4 cm.. Perhatikan

Misalnya ungkapan x=B+A melibatkan dua buah operator; operator aritmatika '+' mempunyai jenjang yang lebih tinggi dibandingkan dengan operator pengerjaan '=',

Pada sebuah dinding tegak terdapat gambar se- buah segitiga sama sisi dengan panjang sisi 3 m dengan salah satu sisi membentuk sudut 30° terhadap bidang

17.Jika dua sisi dari segitiga yang pertama masing-masing sama dengan dua sisi segitiga yang kedua, dan sisi ketiga dari segitiga pertama lebih panjang dari sisi ketiga dari