Anda di halaman 1dari 6

Contoh Algoritma Kita

Tentang apa itu algoritma, yaitu prosedur atau langkah-langkah pemecahan masalah. Ada 4 masalah yang akan kita cari jalan penyelesaiannya. Kita lihat dulu apa saja masalah-masalahnya : 1. Kita punya 2 buah ember yang volumenya 5 liter (5L) dan 3 liter (3L). Diminta untuk mendapatkan air sebanyak 4 liter (4L) menggunakan kedua ember tersebut. Tidak ada alat (ember) lain. Terserah cara mendapatkan air tersebut, mau dipindah-pindah, dibuang dst, yang penting dapat air 4L. 2. Ada seorang pemuda (P) membawa seekor kambing (K), seekor srigala (S) dan sekeranjang sayur (Y) tiba di pinggir sungai. Ada sebuah perahu yang akan digunakan untuk menyeberang, tetapi hanya bisa memuat 1 bawaan saja. Tentunya yang bisa mendayung perahu tersebut hanya pemuda. Masalah lainnya adalah kambing tidak dapat ditinggalkan bersama dengan sayur (bisa dimakan, srigala tidak dapat ditinggal bersama dengan kambing (srigala lapar. Ayo seberangkan semuanya dengan selamat 3. Tiga buah cakram dengan ukuran yang berbeda tersusun berlapis di sebuah batang besi A. Cakram terbesar berada pada bagian paling bawah dan yang terkecil paling atas. Diminta untuk memindahkan cakram-cakram itu ke batang besi B dengan syarat cakram dipindahkan satu per satu dan cakram terkecil tidak boleh berada di bawah cakram yang lebih besar. Boleh menggunakan batang besi C sebagai alat bantu perpindahan cakramcakram tersebut. Lihat gambar.

4. Tiga pasang suami-istri (berarti ada 6 orang) tiba di pinggir sebuah sungai dan ingin menyeberangi sunagi itu. Ada sebuah perahu yang digunakan untuk menyeberang, tetapi hanya dapat dimuati 2 orang saja. Masalah muncul dengan kenyataan bahwa para suami ternyata pencemburu dan tidak mau meninggalkan istri-istri mereka jika ada lelaki lain. Bisa menyeberang atau tidak?

Ya, dari 4 masalah di atas, sepertinya kita sedang main teka-teki dan terkesan seperti orang kurang kerjaan. Terserah pendapat masing-masing, tetapi ini adalah masalah yang harus diselesaikan dan tugas kita untuk mencari penyelesaiannya (problem solver). Sebelum mulai membuat penyelesaian, baca dan analisa dulu baik-baik masalahnya dan pikirkan apa sebenarnya yang diinginkan dari masalah-masalah itu. Lalu buat algoritma yang tersusun dan terstruktur rapi agar kita dan juga orang lain dapat membaca dan memahaminya dengan cepat. Beri judul algoritma pada bagian atas, beri nomor urut dan jika dianggap perlu memberi keterangan dalam bentuk komentar yang diapit tanda kurung kurawal {}. Penyelesaian masalah pertama : ALGORITMA Air 4 Liter. 1. Isi penuh ember 3L 2. Tuangkan air dari ember 3L ke ember 5L {ember 3L kosong, ember 5L terisi air 3 liter} 3. Isi penuh ember 3L 4. Tuangkan air dari ember 3L ke ember 5L sampai penuh {ember 5L penuh, ember 3L masih berisi 1 liter} 5. Buang semua air dalam ember 5L 6. Tuangkan air dari ember 3L ke ember 5L {ember 3L kosong, ember 5L berisi 1 liter} 7. Isi penuh ember 3L 8. Tuangkan air dari ember 3L ke ember 5L {ember 3L kosong, ember 5L berisi 4 liter} Sekarang masalah kedua, kita asumsikan bahwa penyeberangan dilakukan dari sisi A menuju sisi B dengan keadaan awal PKSY (singkatan dari pemuda, kambing, srigala dan sayur) berada di sisi A. Kita harus memperhatikan syarat-syarat yang diinginkan dari masalah tersebut.

ALGORITMA Penyeberangan PKSY 1. P dan K menyeberang ke sisi B {S dan Y tetap di sisi A} 2. P kembali ke sisi A sendirian {K tetap di sisi B} 3. P dan S menyeberang ke sisi B {Y tetap di sisi A} 4. P dan K kembali ke sisi A {S tinggal di sisi B} 5. P dan Y menyeberang ke sisi B {K tinggal di sisi A} 6. P kembali ke sisi A sendirian {S dan Y tetap di sisi B} 7. P dan K menyeberang ke sisi B {P, K, S dan Y sudah berada di sisi B} Sekarang main cakram yuk Berdasarkan gambar di atas, kita beri nama dulu untuk ketiga cakram tersebut. CB untuk cakram besar, CS untuk cakram sedang dan CK untuk cakram kecil. lalu kita buat penyelesaian sebagai berikut : ALGORITMA Pindah Cakram 1. Pindahkan CK dari besi A ke besi B 2. Pindahkan CS dari besi A ke besi C 3. Pindahkan CK dari besi B ke besi C {besi B kosong, CK berada di atas CS pada besi B, sampai di sini masih benar } 4. Pindahkan CB dari besi A ke besi B {CB paling bawah pada besi B} 5. Pindahkan CK dari besi C ke besi A {CS masih di besi C} 6. Pindahkan CS dari besi C ke besi B {CS berada di atas CB pada besi B, benar lagi } 7. Pindahkan CK dari besi A ke besi B {CK berada di atas CS, CS berada di atas CB, hore selesai } Masalah keempat, masalah yang berat nih, masih soal seberang-menyeberang sungai, pake acara cemburu-cemburuan lagi Karena ada 3 pasangan, kita buat singkatan saja, pasangan X, Y dan Z. s untuk suami dan i untuk istri. Jadi pasangan X adalah Xs dan Xi, dst

Ayo kita buat eeiiit tunggu dulu, masih ingat kan syaratnya, maksimal cuman bisa 2 orang dalam perahu dan suami tidak mau meninggalkan istrinya Sekarang baru kita mulai ALGORITMA Penyeberangan Lagi {kondisi awal di sisi A : Xs, Xi, Ys, Yi, Zs, Zi} {kondisi awal di sisi B : -, -, -, -, -, -} 1. Xi dan Yi menyeberang ke sisi B {sisi A : Xs, -, Ys, -, Zs, Zi} {sisi B : -, Xi, -, Yi, -, -} 2. Yi menyeberang sendiri ke sisi A {sisi A : Xs, -, Ys, Yi, Zs, Zi} {sisi B : -, Xi, -, -, -, -} 3. Yi dan Zi menyeberang ke sisi B {sisi A : Xs, -, Ys, -, Zs, -} {sisi B : -, Xi, -, Yi, -, Zi} 4. Zi menyeberang sendiri ke sisi A {sisi A : Xs, -, Ys, -, Zs, Zi} {sisi B : -, Xi, -, Yi, -, -} 5. Zi dan Zs menyeberang ke sisi B {sisi A : Xs, -, Ys, -, -, -} {sisi B : -, Xi, -, Yi, Zs, Zi} 6. Yi menyeberang sendiri ke sisi A {sisi A : Xs, -, Ys, Yi, -, -} {sisi B : -, Xi, -, -, Zs, zi} 7. Yi dan Ys menyeberang ke sisi B {sisi A : Xs, -, -, -, -, -} {sisi B : -, Xi, Ys, Yi, Zs, Zi} 8. Xi menyeberang sendiri ke sisi A {sisi A : Xs, Xi, -, -, -, -} {sisi B : -, -, Ys, Yi, Zs, Zi} 9. Xi dan Xs menyeberang ke sisi B {sisi A : -, -, -, -, -, -} {sisi B : Xs, Xi, Ys, Yi, Zs, Zi}

sesuai judul,program kali ini adalah program untuk mencari bilangan terbesar dan terkecil, dari beberapa buah nilai uang kita inputkan. bisa dilihat source nya seperti ini gan : view plainprint? 1. program maxmin; 2. uses wincrt; 3. var 4. bil :array[1..100] of integer; 5. max,min,i,n :integer; 6. begin 7. write('Masukkan jumlh bilangannya gan =');readln(n); 8. for i:= 1 to n do 9. begin 10. write('Bilangan ke ',i,' = ');readln(bil[i]); 11. end; 12. max:=bil[1]; 13. min:=bil[1]; 14. for i:= 2 to n do 15. if bil[i] > max then 16. max:=bil[i] 17. else 18. if bil[i] < min then 19. min:=bil[i]; 20. writeln('Bilangan terbesar =',max); 21. writeln('Bilangan terkecil =',min); 22. end.

uses wincrt; var dafbil:array[1..100] of integer; terbesar :integer; terkecil :integer; i,n :integer; begin write('Masukkan cacah bilangan =');readln(n); {terbesar:=-999; terkecil:=999;- -->ini hanya berlaku apabila nilai bilangan antara -999 s/d 999} {terbesar:=dafbil[1]; terkecil:=dafbil[1];--> akan menyebabkan yang terkecil selalu 0(nol) apabila nilai semua bilangan lebih besar dari 0(nol)} for i:= 1 to n do begin write('Bilangan ke ',i,' = ');readln(dafbil[i]); end; terbesar:=dafbil[1]; terkecil:=dafbil[1]; for i:= 2 to n do if dafbil[i] > terbesar then terbesar:=dafbil[i] {for i:= 2 to n do} else if dafbil[i] < terkecil then terkecil:=dafbil[i]; writeln('Bilangan terbesar =',terbesar); writeln('Bilangan terkecil =',terkecil); end.