Wednesday, October 28, 2009

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 + ‘b’x +’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 );
X­2 := ((-b) – sqrt (D) / 2 * A );
Writeln (‘X1 = ‘,X1);
Writeln (‘X2 = ‘,X2);
End;
Else
Writeln (‘Persamaan tidak memiliki akar nyata’);
Writeln (‘ax2 + ‘b’x +’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 + I – 1
K + 1 pencacah2 = pencacah2 + 1
K + I + 1 pencacah1 = pencacah1 + 1
Bentuk umum flowchart / diagram alir :

S B

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 / f1X­0
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 / f1X­0;
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.

Resensi :
one.indoskripsi.com

Definisi Algoritma

1. DEFINISI ALGORITMA
Terdapat beberapa definisi mengenai kata Algoritma :
1. Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis (Rinaldi Munir :2002).
2. Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan
masalah (KBBI :1988).
3. Algoritma adalah suatu himpunan hingga dari instruksi-instruksi yang secara
jelas memperinci langkah-langkah proses pelaksanaan, dalam pemecahan
suatu masalah tertentu, atau suatu kelas masalah tertentu, dengan dituntut
pula bahwa himpunan instruksi tersebut dapat dilaksanakan secara mekanik
(Team Gunadarma :1988).
2. CIRI ALGORITMA
Menurut Donald E. Knuth, algoritma mempunyai lima ciri penring :
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
2. Setiap langkah harus didefinisikan secara tepat dan tidak berarti dua.
3. Algoritma memiliki nol atau lebih masukan (input).
4. Algoritma mempunyai nol atau lebih keluaran (output).
5. Algoritma harus sangkil (efektif)
3. NOTASI PENULISAN
Di bawah ini dikemukakan beberapa notasi yang digunakan dalam penulisan
algoritma, antara lain :
1) Notasi yang dinyatakan dalam kalimat deskriptif
Dengan notasi ini, deskripsi setiap langkah dijelaskan dengan bahasa
yang jelas. Notasi ini cocok untuk algoritma yang pendek, namun untuk
masalah yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu,
pengkonversian notasi algoritma ke notasi bahasa pemrograman
cenderung relatif sukar.
Contoh :
Algoritma Bilangan_Maksimum
Diberikan tiga buah bilangan bulat. Carilah bilangan bulat
maksimum diantara ketiga bilangan tersebut.
Deskripsi :
(1) baca bilangan 1
(2) baca bilangan 2
(3) bandingkan bilangan 1 dan bilangan 2, kita ambil yang
lebih besar, jika kedua bilangan tersebut sama besar,
dapat kita ambil bilangan 1, dan sebut bilangan
tersebut MAX
(4) baca bilangan 3
(5) bandingkan MAX dengan bilangan 3, dan pilih yang lebih
besar, jika keduanya sama besar, pilih MAX dan sebut
bilangan tersebut MAX.
(6) keluarkan sebagai output MAX
2) Notasi yang dinyatakan dengan pseudo code
Pseudocode adalah notasi yang menyerupai bahasa pemrograman tingkat
tinggi. Keuntungan menggunakan notasi pseudo code adalah kemudahan
mengkonversinya lebih tepat yang disebut mentranslasi ke notasi bahasa
pemrograman, karena terdapat korespondensi antara setiap pseudo code
dengan notasi bahasa pemrograman.
Contoh :
Algoritma Bilangan_Maksimum
{ Dibaca tiga buah bilangan dari piranti masukan. Carilah
bilangan bulat maksimum diantara ketiga bilangan tersebut }
Deklarasi :
Bil1,Bil2,Bil3 : integer {bilangan yang dicari
maksimumnya}
MAX : integer {variabel bantu}
Deskripsi :
Read (Bil1,Bil2)
If Bil1 >= Bil 2 then
Bil1 = MAX
Else Bil2 = MAX
Read (Bil3)
If Bil3 >= MAX then
Bil3 = MAX
Write (MAX)
Mulai
If Bil1>=
Bil2
Baca Bil1,
Bil2
Bil1=MAX
Bil2=MAX
Baca Bil3
If Bil3>=
MAX Bil3=MAX
Cetak MAX
Selesai
YA
YA
TDK
Flowchart Bilangan_Maksimum
3) Notasi yang dinyatakan dalam flow chart
Sama halnya dengan notasi deskriptif, notasi ini cocok untuk algoritma
yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini
jelas tidak efektif. Selain itu, pengkonversian notasi algoritma ke notasi
bahasa pemrograman cenderung relatif sukar.
Contoh : Algoritma Bilangan_Maksimum dalam flow char
4. TEKS ALGORITMA
Pada dasarnya, teks algoritma disusun atas tiga bagian (blok) : bagian judul
(header) agoritma, bagian deklarasi, dan bagian deskripsi. Setiap bagian dapat
diberi komentar untuk memperjelas maksud teks yang dituliskan. Komentar
biasanya ditulis menggunakan kurung kurawal.
1) Judul Algoritma
Judul algoritma adalah bagian yang terdiri atas nama algoritma dan
penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma
sebaiknya singkat, namun cukup menggambarkan apa yang akan
dilakukan oleh algoritma tersebut. Di bawah nama algoritma disertai
dengan penjelasan singkat (intisari) tentang apa yang dilakukan oleh
algoritma. Penjelasan di bawah nama algoritma sering dinamakan juga
spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi
yang didefinisikan.
Contoh :
Algoritma Luas_Lingkaran
{ Menghitung luas lingkaran untuk ukuran jari-jari tertentu.
Algoritma menerima masukan jari-jari lingkaran, menghitung
luasnya, lalu cetak luasnya ke piranti keluaran }
2) Deklarasi
Di dalam algoritma, deklarasi nama adalah bagian untuk mendefinisikan
semua nama yang dipakai di dalam algoritma. Nama tersebut dapat
berupa nama terapan, nama peubah, nama tipe, nama prosedur dan
nama fungsi.
Contoh :
Deklarasi :
Panjang = integer {tipe data bilangan bulat}
Lebar = integer
Luas = real {tipe data bilangan pecahan}
3) Deskripsi
Deskripsi adalah bagian terpenting dari struktur algoritma. Bagian ini berisi
uraian langkah-langkah penyelesaian masalah. Langkah-langkah ini
dituliskan dengan notasi yang lazim dalam penulisan algoritma. Setiap
langkah algoritma dibaca dari langkah paling atas hingga langkah paling
bawah. Urutan penulisan menentukan urutan pelaksanaan perintah.
Contoh :
Deskripsi :
Read (nama)
Read (NIM)
Read (nilai)
If (nilai < 45) then
Grade = E
Else if (nilai >= 45) and (nilai < 60) then
Grade = D
Else if (nilai >= 60) and (nilai < 70) then
Grade = C
Else if (nilai >= 70) and (nilai < 80) then
Grade = B
Else
Grade = A
Write (nama)
Write (NIM)
Write (nilai)
5. STRUKTUR DASAR ALGORITMA
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkahlangkah
tersebut dapat berupa runtunan aksi, pemilihan aksi, dan pengulangan
aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi,
sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu :
1) Runtunan (sequence)
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni
sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai
dikerjakan.
2) Pemilihan (selection)
Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Tiap
–tiap instruksi akan diseleksi oleh kondisi, apabila instruksi memenuhi
kondisi yang diminta, maka instruksi akan dijalankan.
3) Pengulangan (repetition)
Salah satu kelebihan komputer adalah kemampuannya untuk
mengerjakan pekerjaan yang sama berulang kali tanpa mengenal lelah.
Kita tidak perlu menulis instruksi yang sama berulang kali, tetapi cukup
melakukan pengulangan dengan instruksi yang tersedia.
Algoritma Konversi
{ Terdapat tiga sub bagian (menu) dari program konversi. Pertama,
konversi nilai dolar ke rupiah. Nilai tukar dan jumlah dolar diinput
dari piranti masukan. Kedua, konversi Kilo meter (KM) ke meter (m).
Nilai kilometer diinput dari piranti masukan. Ketiga, konversi
Celcius ke Fahrenheit. Nilai celcius diinput dari piranti masukan.
Ketiga nilai diolah dengan masing-masing rumus yang berbeda.
Hasilnya dicetak ke piranti keluaran }
Deklarasi :
Pilih, Tukar, Dolar, KM = Integer
Nilai1, Nilai2, Celcius = Integer
Nilai3 = Real
Lagi = Char
Deskripsi :
Cetak (judul program)
Cetak (pilihan)
Baca (Pilih)
If (Pilih=1) then
Baca (Tukar)
Baca (Dolar)
Nilai1 = Tukar * Dolar
Cetak (Nilai1)
ElseIf (Pilih=2) then
Baca (KM)
Nilai2 = KM * 1000
Cetak (Nilai2)
Elseif (Pilih=3) then
Baca (Celcius)
Nilai3 = (Celcius * 1.8) + 32
Cetak (Nilai3)
Else
Cetak (Peringatan)
Endif
Baca (Lagi)
If (Lagi = ‘Y’) then goto (x,y)
Cetak (selesai)

Resensi:
1. DEFINISI ALGORITMA
Terdapat beberapa definisi mengenai kata Algoritma :
1. Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis (Rinaldi Munir :2002).
2. Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan
masalah (KBBI :1988).
3. Algoritma adalah suatu himpunan hingga dari instruksi-instruksi yang secara
jelas memperinci langkah-langkah proses pelaksanaan, dalam pemecahan
suatu masalah tertentu, atau suatu kelas masalah tertentu, dengan dituntut
pula bahwa himpunan instruksi tersebut dapat dilaksanakan secara mekanik
(Team Gunadarma :1988).
2. CIRI ALGORITMA
Menurut Donald E. Knuth, algoritma mempunyai lima ciri penring :
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
2. Setiap langkah harus didefinisikan secara tepat dan tidak berarti dua.
3. Algoritma memiliki nol atau lebih masukan (input).
4. Algoritma mempunyai nol atau lebih keluaran (output).
5. Algoritma harus sangkil (efektif)
3. NOTASI PENULISAN
Di bawah ini dikemukakan beberapa notasi yang digunakan dalam penulisan
algoritma, antara lain :
1) Notasi yang dinyatakan dalam kalimat deskriptif
Dengan notasi ini, deskripsi setiap langkah dijelaskan dengan bahasa
yang jelas. Notasi ini cocok untuk algoritma yang pendek, namun untuk
masalah yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu,
pengkonversian notasi algoritma ke notasi bahasa pemrograman
cenderung relatif sukar.
Contoh :
Algoritma Bilangan_Maksimum
Diberikan tiga buah bilangan bulat. Carilah bilangan bulat
maksimum diantara ketiga bilangan tersebut.
Deskripsi :
(1) baca bilangan 1
(2) baca bilangan 2
(3) bandingkan bilangan 1 dan bilangan 2, kita ambil yang
lebih besar, jika kedua bilangan tersebut sama besar,
dapat kita ambil bilangan 1, dan sebut bilangan
tersebut MAX
(4) baca bilangan 3
(5) bandingkan MAX dengan bilangan 3, dan pilih yang lebih
besar, jika keduanya sama besar, pilih MAX dan sebut
bilangan tersebut MAX.
(6) keluarkan sebagai output MAX
2) Notasi yang dinyatakan dengan pseudo code
Pseudocode adalah notasi yang menyerupai bahasa pemrograman tingkat
tinggi. Keuntungan menggunakan notasi pseudo code adalah kemudahan
mengkonversinya lebih tepat yang disebut mentranslasi ke notasi bahasa
pemrograman, karena terdapat korespondensi antara setiap pseudo code
dengan notasi bahasa pemrograman.
Contoh :
Algoritma Bilangan_Maksimum
{ Dibaca tiga buah bilangan dari piranti masukan. Carilah
bilangan bulat maksimum diantara ketiga bilangan tersebut }
Deklarasi :
Bil1,Bil2,Bil3 : integer {bilangan yang dicari
maksimumnya}
MAX : integer {variabel bantu}
Deskripsi :
Read (Bil1,Bil2)
If Bil1 >= Bil 2 then
Bil1 = MAX
Else Bil2 = MAX
Read (Bil3)
If Bil3 >= MAX then
Bil3 = MAX
Write (MAX)
Mulai
If Bil1>=
Bil2
Baca Bil1,
Bil2
Bil1=MAX
Bil2=MAX
Baca Bil3
If Bil3>=
MAX Bil3=MAX
Cetak MAX
Selesai
YA
YA
TDK
Flowchart Bilangan_Maksimum
3) Notasi yang dinyatakan dalam flow chart
Sama halnya dengan notasi deskriptif, notasi ini cocok untuk algoritma
yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini
jelas tidak efektif. Selain itu, pengkonversian notasi algoritma ke notasi
bahasa pemrograman cenderung relatif sukar.
Contoh : Algoritma Bilangan_Maksimum dalam flow char
4. TEKS ALGORITMA
Pada dasarnya, teks algoritma disusun atas tiga bagian (blok) : bagian judul
(header) agoritma, bagian deklarasi, dan bagian deskripsi. Setiap bagian dapat
diberi komentar untuk memperjelas maksud teks yang dituliskan. Komentar
biasanya ditulis menggunakan kurung kurawal.
1) Judul Algoritma
Judul algoritma adalah bagian yang terdiri atas nama algoritma dan
penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma
sebaiknya singkat, namun cukup menggambarkan apa yang akan
dilakukan oleh algoritma tersebut. Di bawah nama algoritma disertai
dengan penjelasan singkat (intisari) tentang apa yang dilakukan oleh
algoritma. Penjelasan di bawah nama algoritma sering dinamakan juga
spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi
yang didefinisikan.
Contoh :
Algoritma Luas_Lingkaran
{ Menghitung luas lingkaran untuk ukuran jari-jari tertentu.
Algoritma menerima masukan jari-jari lingkaran, menghitung
luasnya, lalu cetak luasnya ke piranti keluaran }
2) Deklarasi
Di dalam algoritma, deklarasi nama adalah bagian untuk mendefinisikan
semua nama yang dipakai di dalam algoritma. Nama tersebut dapat
berupa nama terapan, nama peubah, nama tipe, nama prosedur dan
nama fungsi.
Contoh :
Deklarasi :
Panjang = integer {tipe data bilangan bulat}
Lebar = integer
Luas = real {tipe data bilangan pecahan}
3) Deskripsi
Deskripsi adalah bagian terpenting dari struktur algoritma. Bagian ini berisi
uraian langkah-langkah penyelesaian masalah. Langkah-langkah ini
dituliskan dengan notasi yang lazim dalam penulisan algoritma. Setiap
langkah algoritma dibaca dari langkah paling atas hingga langkah paling
bawah. Urutan penulisan menentukan urutan pelaksanaan perintah.
Contoh :
Deskripsi :
Read (nama)
Read (NIM)
Read (nilai)
If (nilai < 45) then
Grade = E
Else if (nilai >= 45) and (nilai < 60) then
Grade = D
Else if (nilai >= 60) and (nilai < 70) then
Grade = C
Else if (nilai >= 70) and (nilai < 80) then
Grade = B
Else
Grade = A
Write (nama)
Write (NIM)
Write (nilai)
5. STRUKTUR DASAR ALGORITMA
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkahlangkah
tersebut dapat berupa runtunan aksi, pemilihan aksi, dan pengulangan
aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi,
sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu :
1) Runtunan (sequence)
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni
sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai
dikerjakan.
2) Pemilihan (selection)
Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Tiap
–tiap instruksi akan diseleksi oleh kondisi, apabila instruksi memenuhi
kondisi yang diminta, maka instruksi akan dijalankan.
3) Pengulangan (repetition)
Salah satu kelebihan komputer adalah kemampuannya untuk
mengerjakan pekerjaan yang sama berulang kali tanpa mengenal lelah.
Kita tidak perlu menulis instruksi yang sama berulang kali, tetapi cukup
melakukan pengulangan dengan instruksi yang tersedia.
Algoritma Konversi
{ Terdapat tiga sub bagian (menu) dari program konversi. Pertama,
konversi nilai dolar ke rupiah. Nilai tukar dan jumlah dolar diinput
dari piranti masukan. Kedua, konversi Kilo meter (KM) ke meter (m).
Nilai kilometer diinput dari piranti masukan. Ketiga, konversi
Celcius ke Fahrenheit. Nilai celcius diinput dari piranti masukan.
Ketiga nilai diolah dengan masing-masing rumus yang berbeda.
Hasilnya dicetak ke piranti keluaran }
Deklarasi :
Pilih, Tukar, Dolar, KM = Integer
Nilai1, Nilai2, Celcius = Integer
Nilai3 = Real
Lagi = Char
Deskripsi :
Cetak (judul program)
Cetak (pilihan)
Baca (Pilih)
If (Pilih=1) then
Baca (Tukar)
Baca (Dolar)
Nilai1 = Tukar * Dolar
Cetak (Nilai1)
ElseIf (Pilih=2) then
Baca (KM)
Nilai2 = KM * 1000
Cetak (Nilai2)
Elseif (Pilih=3) then
Baca (Celcius)
Nilai3 = (Celcius * 1.8) + 32
Cetak (Nilai3)
Else
Cetak (Peringatan)
Endif
Baca (Lagi)
If (Lagi = ‘Y’) then goto (x,y)
Cetak (selesai)

Resensi :
1. DEFINISI ALGORITMA
Terdapat beberapa definisi mengenai kata Algoritma :
1. Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis (Rinaldi Munir :2002).
2. Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan
masalah (KBBI :1988).
3. Algoritma adalah suatu himpunan hingga dari instruksi-instruksi yang secara
jelas memperinci langkah-langkah proses pelaksanaan, dalam pemecahan
suatu masalah tertentu, atau suatu kelas masalah tertentu, dengan dituntut
pula bahwa himpunan instruksi tersebut dapat dilaksanakan secara mekanik
(Team Gunadarma :1988).
2. CIRI ALGORITMA
Menurut Donald E. Knuth, algoritma mempunyai lima ciri penring :
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
2. Setiap langkah harus didefinisikan secara tepat dan tidak berarti dua.
3. Algoritma memiliki nol atau lebih masukan (input).
4. Algoritma mempunyai nol atau lebih keluaran (output).
5. Algoritma harus sangkil (efektif)
3. NOTASI PENULISAN
Di bawah ini dikemukakan beberapa notasi yang digunakan dalam penulisan
algoritma, antara lain :
1) Notasi yang dinyatakan dalam kalimat deskriptif
Dengan notasi ini, deskripsi setiap langkah dijelaskan dengan bahasa
yang jelas. Notasi ini cocok untuk algoritma yang pendek, namun untuk
masalah yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu,
pengkonversian notasi algoritma ke notasi bahasa pemrograman
cenderung relatif sukar.
Contoh :
Algoritma Bilangan_Maksimum
Diberikan tiga buah bilangan bulat. Carilah bilangan bulat
maksimum diantara ketiga bilangan tersebut.
Deskripsi :
(1) baca bilangan 1
(2) baca bilangan 2
(3) bandingkan bilangan 1 dan bilangan 2, kita ambil yang
lebih besar, jika kedua bilangan tersebut sama besar,
dapat kita ambil bilangan 1, dan sebut bilangan
tersebut MAX
(4) baca bilangan 3
(5) bandingkan MAX dengan bilangan 3, dan pilih yang lebih
besar, jika keduanya sama besar, pilih MAX dan sebut
bilangan tersebut MAX.
(6) keluarkan sebagai output MAX
2) Notasi yang dinyatakan dengan pseudo code
Pseudocode adalah notasi yang menyerupai bahasa pemrograman tingkat
tinggi. Keuntungan menggunakan notasi pseudo code adalah kemudahan
mengkonversinya lebih tepat yang disebut mentranslasi ke notasi bahasa
pemrograman, karena terdapat korespondensi antara setiap pseudo code
dengan notasi bahasa pemrograman.
Contoh :
Algoritma Bilangan_Maksimum
{ Dibaca tiga buah bilangan dari piranti masukan. Carilah
bilangan bulat maksimum diantara ketiga bilangan tersebut }
Deklarasi :
Bil1,Bil2,Bil3 : integer {bilangan yang dicari
maksimumnya}
MAX : integer {variabel bantu}
Deskripsi :
Read (Bil1,Bil2)
If Bil1 >= Bil 2 then
Bil1 = MAX
Else Bil2 = MAX
Read (Bil3)
If Bil3 >= MAX then
Bil3 = MAX
Write (MAX)
Mulai
If Bil1>=
Bil2
Baca Bil1,
Bil2
Bil1=MAX
Bil2=MAX
Baca Bil3
If Bil3>=
MAX Bil3=MAX
Cetak MAX
Selesai
YA
YA
TDK
Flowchart Bilangan_Maksimum
3) Notasi yang dinyatakan dalam flow chart
Sama halnya dengan notasi deskriptif, notasi ini cocok untuk algoritma
yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini
jelas tidak efektif. Selain itu, pengkonversian notasi algoritma ke notasi
bahasa pemrograman cenderung relatif sukar.
Contoh : Algoritma Bilangan_Maksimum dalam flow char
4. TEKS ALGORITMA
Pada dasarnya, teks algoritma disusun atas tiga bagian (blok) : bagian judul
(header) agoritma, bagian deklarasi, dan bagian deskripsi. Setiap bagian dapat
diberi komentar untuk memperjelas maksud teks yang dituliskan. Komentar
biasanya ditulis menggunakan kurung kurawal.
1) Judul Algoritma
Judul algoritma adalah bagian yang terdiri atas nama algoritma dan
penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma
sebaiknya singkat, namun cukup menggambarkan apa yang akan
dilakukan oleh algoritma tersebut. Di bawah nama algoritma disertai
dengan penjelasan singkat (intisari) tentang apa yang dilakukan oleh
algoritma. Penjelasan di bawah nama algoritma sering dinamakan juga
spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi
yang didefinisikan.
Contoh :
Algoritma Luas_Lingkaran
{ Menghitung luas lingkaran untuk ukuran jari-jari tertentu.
Algoritma menerima masukan jari-jari lingkaran, menghitung
luasnya, lalu cetak luasnya ke piranti keluaran }
2) Deklarasi
Di dalam algoritma, deklarasi nama adalah bagian untuk mendefinisikan
semua nama yang dipakai di dalam algoritma. Nama tersebut dapat
berupa nama terapan, nama peubah, nama tipe, nama prosedur dan
nama fungsi.
Contoh :
Deklarasi :
Panjang = integer {tipe data bilangan bulat}
Lebar = integer
Luas = real {tipe data bilangan pecahan}
3) Deskripsi
Deskripsi adalah bagian terpenting dari struktur algoritma. Bagian ini berisi
uraian langkah-langkah penyelesaian masalah. Langkah-langkah ini
dituliskan dengan notasi yang lazim dalam penulisan algoritma. Setiap
langkah algoritma dibaca dari langkah paling atas hingga langkah paling
bawah. Urutan penulisan menentukan urutan pelaksanaan perintah.
Contoh :
Deskripsi :
Read (nama)
Read (NIM)
Read (nilai)
If (nilai < 45) then
Grade = E
Else if (nilai >= 45) and (nilai < 60) then
Grade = D
Else if (nilai >= 60) and (nilai < 70) then
Grade = C
Else if (nilai >= 70) and (nilai < 80) then
Grade = B
Else
Grade = A
Write (nama)
Write (NIM)
Write (nilai)
5. STRUKTUR DASAR ALGORITMA
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkahlangkah
tersebut dapat berupa runtunan aksi, pemilihan aksi, dan pengulangan
aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi,
sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu :
1) Runtunan (sequence)
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni
sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai
dikerjakan.
2) Pemilihan (selection)
Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Tiap
–tiap instruksi akan diseleksi oleh kondisi, apabila instruksi memenuhi
kondisi yang diminta, maka instruksi akan dijalankan.
3) Pengulangan (repetition)
Salah satu kelebihan komputer adalah kemampuannya untuk
mengerjakan pekerjaan yang sama berulang kali tanpa mengenal lelah.
Kita tidak perlu menulis instruksi yang sama berulang kali, tetapi cukup
melakukan pengulangan dengan instruksi yang tersedia.
Algoritma Konversi
{ Terdapat tiga sub bagian (menu) dari program konversi. Pertama,
konversi nilai dolar ke rupiah. Nilai tukar dan jumlah dolar diinput
dari piranti masukan. Kedua, konversi Kilo meter (KM) ke meter (m).
Nilai kilometer diinput dari piranti masukan. Ketiga, konversi
Celcius ke Fahrenheit. Nilai celcius diinput dari piranti masukan.
Ketiga nilai diolah dengan masing-masing rumus yang berbeda.
Hasilnya dicetak ke piranti keluaran }
Deklarasi :
Pilih, Tukar, Dolar, KM = Integer
Nilai1, Nilai2, Celcius = Integer
Nilai3 = Real
Lagi = Char
Deskripsi :
Cetak (judul program)
Cetak (pilihan)
Baca (Pilih)
If (Pilih=1) then
Baca (Tukar)
Baca (Dolar)
Nilai1 = Tukar * Dolar
Cetak (Nilai1)
ElseIf (Pilih=2) then
Baca (KM)
Nilai2 = KM * 1000
Cetak (Nilai2)
Elseif (Pilih=3) then
Baca (Celcius)
Nilai3 = (Celcius * 1.8) + 32
Cetak (Nilai3)
Else
Cetak (Peringatan)
Endif
Baca (Lagi)
If (Lagi = ‘Y’) then goto (x,y)
Cetak (selesai)

Resensi :
prihastomo.files.wordpress.com

Sunday, October 11, 2009

Konsep Dasar Algoritma

Algoritma adalah kumpulan instruksi/perintah yang dibuat secara jelas dan
sistematis berdasarkan urutan yang logis (logika) untuk penyelesaian suatu masalah.
French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi
dengan masalah rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan.
Penerapan dari konsep tersebut biasanya digunakan dalam rancangan algoritma. Dalam
merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau metode yaitu
kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu dan flow chart,
sedangkan Knuth (1973) menyarankan algoritma fundamental. Untuk keperluan
matematika dan program komputer metode yang sering digunakan yaitu :
1. Diagram Alir (Flow Chart)
2. Kode Semu (Pseudo Code)
3. Algoritma Fundamental
Knuth (1973) menyatakan 5 komponen utama dalam algoritma yaitu finiteness,
definiteness, input, output dan effectiveness. Sehingga dalam merancang sebuah algoritma
ada 3 (tiga) komponen yang harus ada yaitu:
1. Komponen masukan (input)
Komponen ini biasanya terdiri dari pemilihan variable, jenis variable, tipe variable,
konstanta dan parameter (dalam fungsi).
2. Komponen keluaran (output)
Komponen ini merupakan tujuan dari perancangan algoritma dan program.
Permasalahan yang diselesaikan dalam algoritma dan program harus ditampilkan dalam
komponen keluaran. Karakteristik keluaran yang baik adalah benar (menjawab)
permasalahan dan tampilan yang ramah (Frendly).
3. Komponen proses (processing)
Komponen ini merupakan bagian utama dan terpenting dalam merancang sebuah
algoritma. Dalam bagian ini terdapat logika masalah, logika algoritma (sintaksis dan
semantik), rumusan, metode (rekursi, perbandingan, penggabungan, pengurangan dan
lain-lain).

resensi :
algoritma dan pemrograman
oleh : Hendra,S.T