You are on page 1of 15

Algoritma percabangan

1.PERCABANGAN Penggunaan If Else Di gunakan untuk menguji sebuah kondisi dimana kondisi, bila kondisi yang di uji terpenuhi maka program akan melakukan pernyataan-pernyataan tertentu & bila kondisi yang di uji salah maka program akan menjalankan pernyataan lain. Bentuk umumnya adalah : If kondisi .. Begin Pernyataan pernyataan yang di jadikan bila kondisi benar End Else.. Pernyataan pernyataan yang di jalan kan jika kondisi salah K = Jika kondisi benar maka kerjakan K + 1? K + i, jika tidak maka kerjakan K + i + 1? K + r K+1 ----- Pernyataan-pernyataan dijalankan jika kondisi benar K+i K+i+1 ------ Dijalankan jika kondisi salah K+r Flowchart : Contoh : Begin Read(x); If ( x > 0 ) then Writeln (x bilangan positif); Else Writeln (x bukan bilangan positif); Writeln (x); End. Langkah langkahnya adalah sebagai berikut : 1.Mulai 2.Masukkan x 3.Jika x > 0 maka kerjakan 4, jika tidak maka kerjakan 5 4.Tulis (x bilangan positif) 5.Tulis (x bukan bilangan positif) 6.Tulis (x) 7.Selesai Bila ada lebih dari 2 pernyataan ( pernyataan if, else, if ) If kondisi 1 then Begin Pernyataan 1; Else if kondisi 2 then

Begin Pernyataan 2; End; ------------------------------------------------Else if kondisi then Begin Pernyataan; End. Contoh lebih dari 2 pernyataan : Read (x); If (x > 0) then Writeln (x bilangan positif); Else if (x < 0) then Writeln (x bilangan negatif); Else Writeln (x adalah nol); Writeln (x); End. Algoritmanya adalah : 1.Mulai 2.Masukkan x 3.Jika x > 0 maka tulis (x bilangan positif) 4.Jika x < 0 maka tulis (x bilangan negatif) 5.Jika x = 0 maka tulis (x adalah nol) 6.Tulis x 7.Selesai Bentuk flowchartnya : Latihan soal : Tulis algoritma yang menampilkan bilangan genap jika suatu bilangan adalah bilangan genap dan bilangan ganjil jika suatu bilangan adalah bilangan ganjil. Jawab : Algoritmanya : 1.Mulai 2.Masukkan x 3.Jika x mod 2 = 0 maka tulis (bilangan genap) 4.Jika x mod 2 =1 maka tulis (bilangan ganjil) 5.Tulis x 6.Selesai Bentuk flowchartnya : Tugas : Tulis algoritma untuk menghitung akar-akar persamaan kuadrat ax2 + bx + c = 0 x1,2 = -b + Jawab : Algoritmanya :

1.Mulai 2.Masukkan A 3.Masukkan B 4.Masukkan C 5.Hitung D ( sqr (b) ( 4 * A + B ) 6.Jika D > 0 maka kerjakan sub program 7 7.Mulai Hitung X1 = ((-b) + sqrt (D) / phi * A ) Hitung X2 = ((-b) - sqrt (D) / phi * A ) Tulis X1 Tulis X2 Selesai 8.Jika D < 0 tulis Persamaan tidak memiliki akar nyata 9.Tulis ax2 + bx +c = 0 10.Selesai Bentuk flowchart b s Program latihan; Uses crt; Var Real : a, b, a, D, X1, X2; Begin Writeln (masukkan nilai a !); Readln (a); Writeln (masukkan nilai b !); Readln (b); Writeln (masukkan nilai c !); Readln (c); D := ( sqr (b) ( 4*a*c ); If D > 0 then Begin X1 := ((-b) + sqrt (D) / 2 * A ); X2 := ((-b) sqrt (D) / 2 * A ); Writeln (X1 = ,X1); Writeln (X2 = ,X2); End; Else Writeln (Persamaan tidak memiliki akar nyata); Writeln (ax2 + bx +c = 0); End. 2.Pengulangan

Pernyataan For For pencacah := nilai awal to nilai akhir do Begin Pernyataan-pernyataan yang akan diulang End. Bentuk umumnya K pencacah = nilai awal K+1 selama pencacah < = nilai akhir kerjakan K+2 K+i K+2 ------- Pernyataan-pernyataan yang akan diulang K+ -1 K+i pencacah = pencacah + 1 Bentuk flowchart Contoh : Program pascal : Begin Read (X); For I := 1 to 10 do X = X + 1; Writeln (X); End. Algoritmanya : 1.Mulai 2.Masukkan x 3.I = 1 4.Selama I < = 10 kerjakan 5 6 5.X = X + 1 6.I = I + 1 7.Tulis (x) 8.Selesai Flowchartnya : Benar Salah Pernyataan for bersarang For pencacah1 = nilai awal1 to nilai akhir1 do Begin For pencacah2 = nilai awal2 to nilai akhir2 do Begin Pernyataan-pernyataan yang akan diulang End; End.

Bentuk umum K pencacah1 = nilai awal1 K + 1 selama pencacah1 = < = nilai akhir1 kerjakan K + 2 K + I + 1 K + 2 selama pencacah2 K + 3 selama pencacah2 <= nilai akhir2 kerjakan K + 4 K + I K+4 ------- Pernyataan2 yang akan diulang K+I1 K + 1 pencacah2 = pencacah2 + 1 K + I + 1 pencacah1 = pencacah1 + 1 Bentuk umum flowchart / diagram alir : SB Contoh : Buat algoritma untuk menampilkan semua bilangan genap yang lebih kecil 1 = 100. Jawab : 1.Mulai 2.I = 1 3.Selama I <= 100 kerjakan 4 4.Jika 1 mod 2 = 0 maka kerjakan 5 Jika tidak maka kerjakan 6 5.Tulis (I) 6.I = I + 1 7.Selesai Bentuk flowchartnya : Pernyataan While Bentuk program pascal dari pernyataan while : While condition do Begin Pernyataan2 yang akan diulang jika kondisi benar End. Bentuk umum : ------K = selama kondisi kerjakan K + 1 K + I K+1 ------- pernyataan2 yang akan diulang jika kondisi benar K+I Bentuk flowchartnya : Pernyataan Repeat Until Bentuk program dalam pascal : Repeat Pernyataan-pernyataan yang akan diulang bila pernyataan masih salah Until

Kondisi Bentuk umum : ------K = ulangi langkah2 K + 1 K + I sampai kondisi K+1 ------- Pernyataan2 yang diulang bila kondisi masih salah K+I Bentuk flowchartnya : Pernyataan Break Digunakan untuk menyatakan sejumlah pengulangan di tengah jalan Pernyataan Continue Digunakan untuk memindahkan program dari loop ke K ke loop K + I Latihan soal : Tulis algoritma dari : Rata2 Jawab : 1.Mulai 12. Rata2 = Y/n 2.Masukkan n 13. Z = 0 3.I = 1 14. I = 1 4.Selama I <= n kerjakan 5 6 15. Selama I <= n kerjakan 16 21 5.Masukkan X ( I ) 16. Z = 2 + sqr ( X ( I ) rata2 ) 6.I = I + 1 17. I = I + 1 7.Y = 0 18. S = sqr ( z/(n-1) ) 8.I = 1 19. Tulis rata2 9.Selama I <= n kerjakan 20. Tulis Y 10.Y = Y + X ( I ) 21. Selesai 11.I = I + 1 3.Pangkat X2 = sqr ( X ) = sqrt ( X ) Fungsi ex tan Fungsi ln x ex Sifat-sifat : 1.e0 = 1 6. ln (xy) = ln x + ln y 2.ex+y = ex . ey 7. ln x/y = ln x . ln y 3.exy = ex/ey 8. ln xn = n . ln x 4.(ex)n = en.x 9. eln x = x 5.ln 1 = 0 10. ln ex = x ln x Latihan soal : F (x) = x3 + 4x2 7x + z

3x2 + 8x 7 x1 = x0 x2 = x1 Algoritmanya : 1.Mulai 2.Masukkan X0 3.f ( X0 = exp ( 3 * ln (x) ) + 4 * exp ( 2 * ln (x) ) 7 * X + 2 4.f1 x0 = 3 * exp ( 2 * ln (x) ) + 8 * X 7 5.X1 = X0 fX0 / f1X0 6.X0 = X1 7.Jika jarak < 0,01 maka kerjakan 9 jika tidak maka kembali ke 3 8.Tulis ( X1 memenuhi persamaan ) 9.Selesai Program pascalnya Begin Read (X0); Repeat f ( X0 = exp ( 3 * ln (x) ) + 4 * exp ( 2 * ln (x) ) 7 * X + 2; f1 x0 = 3 * exp ( 2 * ln (x) ) + 8 * X 7; X1 = X0 fX0 / f1X0; Jarak = abs (X1 X0); X0 = X1; Until (jarak < 0,01) Writeln ( X1 memenuhi persamaan ) 4.Subrutin Procedure Digunakan untuk melakukan proses terhadap variabel2 Bentuk umum : Procedure nama procedure ( parameter 1, parameter 2, ) Begin Pernyataan-pernyataan End. Contoh : Diket : c = a a=b b=c Hitunglah dengan menggunakan Procedure. Jawab : Procedure tukar (a,b : real); Var c : real; Begin c := a; a := b;

b := c; End. Function Digunakan untuk menghitung dari variabel2 Bentuk umum : Function nama fungsi ( parameter 1, parameter 2, ) : type kembalian Begin Pernyataan-pernyataan End. Contoh : Menghitung pangkat. Jawab : Function pangkat (n,x : real) : real Begin Pangkat := exp (n*ln (x)); End. Program utamanya Var x,y : real Begin Read (y); Z := pangkat (5,y) Writeln (Z); End. Soal latihan : 1.Tulislah program yang meminta masukan dari pengguna dua matrik yang berukuran n x n kemudian menjumlah 2 matrik tersebut 2.tulislah 3 procedure masing-masing untuk meminta masukan matrik dari pengguna, menjumlahkan matrik, menampilkan matrik ke layar jawab : program masukkan 2 buah matrik begin read (m,n); for I := 1 to m do begin for j := 1 to n do begin read (A[i,j]); read (B[I,j]); end; end. For i := 1 to m do

Begin For j := 1 to n do C [I,j] := A [i,j] + B [i,j]; For i := 1 to m do Begin For j := 1 to n do Writeln (C[i,j]); End; End. Procedure masukkan matriks Bentuk umum : Procedure masukkan matriks ( a : matrix ; n,m : integer ); Var i, j : integer; Begin For I := 1 to m do Begin For j := 1 to n do Read ( a [i, j] ); End; End. Procedure jumlah matriks Bentuk umum : Procedure jumlah matriks ( A, B : matrix ; var C : matrix; n, m : integer ); Var I,J : integer; Begin For I := 1 to m do Begin For J := 1 to n do C [I,J] := A [I,J] + B [I,J]; End; End. Procedure tulis matriks Bentuk umum : Procedure tulis matriks ( A : matrix; n,m : integer ); Var I, J : integer; Begin For I := 1 to m do Begin For J := 1 to n do Writeln ( A [I,J] )

End; End. Begin Read (m,n); Masukkan matrix (A, n, m); Masukkan matrix (B, n, m); Jumlahkan matrix (A, B, C, n, m); Tulis matrix (C, n, m); End. Penyelesaian sistem persamaan linear dengan metode Gauss Eliminasi Begin Read (n); For i := 1 to n do Begin For j := 1 to n + 1 do Read (A[i,j]); End; For k := 1 to n 1 do Begin For i := 1 to n do Begin C := A [i,k] / A [i,k]; For j := 1 to n + 1 do A [i,j] = A [i,j] A [i,j] * C; End; End; For i := n downto 1 do Begin Z := 0; For r := i + 1 to n do Begin Z := Z (A[i,r] * x [r]; End; X [i] := (A[i,n+1) Z) / A [i ,i]; Writeln (x[i] =[i]); End; End. ELIMINASI GAUSS Const Max : 25; Type Matrik = record Row, col : byte;

Element : array [1..max, 1..max] of real; End; Vektor = record Row : byte; Element : array [1..max] of real; End; Var x, b : vektor; A : matrik; n : integer; Error : boolean; Procedure masukkandata; Var i,j : byte; Begin Write (jumlah persamaan); Readln (n); A.row := n; A.col := n ; b. row := n; for i := 1 to n do begin writeln (persamaan ke ,i ); for j := 1 to n do begin write (A[, i, , , j, ]= ); readln (A.element [i,j]); end; end; procedure eliminasigauss; var I,j,k : integer; temp, S : real; Begin Error := false; For i := 1 to A.row 1 do For k := i + 1 to A.row do Begin If (A.element[i,i] = 0.0 ) then Begin Error := true; Exit; End; Temp := A.element [k,i] / A.element[i,i]; For j := i + 1 to A.row do A.element [k,j] := A.element [k,j] - * temp A.element [i,j];

b.element [k] := b.element [k] temp * b.element [i]; A.element [k,j] := 0.0 ; End; x.row := A.row; for i := A.row downto 1 do begin S := b.element [i]; For j:= i + 1 to A.row do S := S A.element [i,j] * x.element [j]; If (A.element [i,i] = 0.0 ) then Begin Error := true; Exit; End; x.element [i] := S / A.element [i,i]; end; end; Procedure tulishasil; Var i : byte; Begin If (error) then Begin Writeln (persamaan simultan linear tidak dapat diselesaikan); End; Else Begin Writeln; Writeln (penyelesaian persamaan linear simultan : ); For i := 1 to x.row do Writeln (x.row [i] : 6 : 2 ); End; End. Begin Masukkandata; Eliminasigauss; Tulishasil; End. 5.Rekursi Adalah kemampuan suatu loding untuk memanggil dirinya sendiri Contoh : Function factorial (n : integer) : integer; Begin

If (n = 0) or (n = 1) then Factorial := 1 Else Factorial := n * factorial (n-1); End; Factorial (4) Factorial = 4 * factorial (3) Factorial = 3 * factorial (2) Factorial = 2 * factorial (1) Factorial = 1 Fungsi FTP (m,j,n : integer) : integer; Begin If (m = 0) then FTP := n Else if (m < n) then FTP := FTP (n,m) Else FTP := (m mod n,n); End; Function fungsi (n : integer) : integer; Begin If (n = 0) then Fungsi := 0; Else if (n = 1) then Fungsi := 1; Else Fungsi := fungsi (n-1) + fungsi (n-2); End; BUJURSANGKAR AJAIB 16 2 3 13 5 11 10 8 9 7 6 12 4

14 15 1 Algoritma penyusunan bujur sangkar 4m x 4m 1.Isi bujur sangkar dengan nilai 1 s/d 42m secara berurutan 2.Bagi bujur sangkar menjadi berukuran 4m/2 x 4m/2 3.Beri nama elemen2 bujur sangkar dengan kode X11, X12, X13, , X44 4.Lakukan pertukaran berikut X11 ? X44, X14 ? X41, X22 ? X33, dan X23 ? X32 5.Apabila setiap elemen bujur sangkar masih terdiri dari bujur sangkar lagi, artinya m > 1, kerjakan lagi baris 2 Const Max = 128; Valid : set of byte = [4, 8, 16, 32, 64, 128]; Var i, j, n : byte; A : array [1..max, 1..max0 of word); Procedure tukarkotak (dimensi, ofsx, ofsy : byte); Var i, j : byte; Center2 : byte; Center4 : byte; Begin Center2 := dimensi div 2; Center4 := dimensi div 4; For i := 1 to center4 do For j := 1 to center4 do Begin Tukar (A [ofsy + j, ofsx + i], A [dimensi + ofsy center4 + j, dimensi + ofsx center4 + i]); Tukar (A [ofsy + center4 = j, ofsx + center4 + i], A [ofsy + center2 + j, ofsx + center2 + i]); Tukar(A [ofsy + center2 + j, ofsx + center4 + i], A [ofsy + center4 + j, ofsx + center2 + i]); Tukar (A [ofsy + j, dimensi + ofsx center4 + i], A [dimensi + ofsy center4 + j, ofsx + i]); If (center2 > 2) then Begin Tukarkotak (center2, ofsx, ofsy); Tukarkotak (center2, ofsx + center2, ofsy); Tukarkotak (center2, ofsx, ofsy + center2); Tukarkotak (center2, ofsx + center2, ofsy + center2); End; End; Begin Write (masukkan dimensi bujur sangkar : );

Readln (n); If (not (n in valid)) then Begin Writeln (dimensi bujur sangkar tidak valid ); Halt; End; Fillchar (a, sizeof (a), 0); For i := 1 to n do For j := 1 to n do A [i, j] := (i 1) * n + j; Tukarkotak (n, 0, 0); For i := 1 to n do Begin For j := 1 to n do Write (A [i, j] : 3, ); Writeln ; End; End.

You might also like