Anda di halaman 1dari 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.

Anda mungkin juga menyukai