Sabtu, 19 Desember 2009

Struktur Algoritma

Ada tiga struktur dasar yang digunakan dalam membuat algoritma yaitu
  1. struktur berurutan (sequencing),
  2. struktur pemilihan/keputusan/percabangan (branching) dan
  3. struktur pengulangan (looping). Sebuah algoritma biasanya akan menggabungkan ketiga buah struktur ini untuk menyelesaikan masalah.

Algoritma Dan Diagram Alir Untuk Proses Pengulangan (LOOPING)

Mobil Balap harus mengelilingi lintasan sirkuit berkali-kali sesuai yang ditetapkan dalam aturan lomba. Siapa yang mencapai garis akhir paling cepat, dialah yang menang.

Pada pembuatan program komputer, kita juga kadang-kadang harus mengulang satu atau sekelompok perintah berkali-kali agar memperoleh hasil yang diinginkan. Dengan menggunakan komputer, eksekusi pengulangan mudah dilakukan. Hal ini karena salah satu kelebihan komputer dibandingkan dengan manusia adalah kemampuannya untuk mengerjakan tugas atau suatu instruksi berulangkali tanpa merasa lelah, bosan, atau malas.

Bandingkan dengan pengendara mobil balap, suatu ketika pasti dia merasa lelah dan bosan untuk berputar-putar mengendarai mobil balapnya.

Loop adalah istilah tidak resmi untuk menyatakan segala jenis struktur kendali yang mengalami pengulangan (iterasi); yaitu, setiap struktur yang menyebabkan program berulang kali melaksanakan suatu blok kode

Memakai loop adalah salah satu aspek pemrograman yang paling komplek dalam bahasa dengan aturan tertentu. Mengetahui cara dan kapan setiap loop itu dipakai sangat menentukan pembuatan software berkualitas tinggi.

Struktur pengulangan terdiri dari dua bagian :
  1. Kondisi pengulangan, yaitu syarat yang harus dipenuhi untuk melaksanakan pengulangan. Syarat ini biasanya dinyatakan dalam ekspresi Boolean yang harus diuji apakah bernilai benar (true) atau salah (false)
  2. Badan pengulangan (loop body), yaitu satu atau lebih instruksi yang akan diulang Pada struktur pengulangan, biasanya juga disertai bagian inisialisasi dan bagian terminasi. Inisialisasi adalah instruksi yang dilakukan sebelum pengulangan dilakukan pertama kali. Bagian insialisasi umumnya digunakan untuk memberi nilai awal sebuah variable. Sedangkan terminasi adalah instruksi yang dilakukan setelah pengulangan selesai dilaksanakan.

Ada beberapa bentuk pengulangan yang dapat digunakan, masing-masing dengan syarat dan karakteristik tersendiri. Beberapa bentuk dapat dipakai untuk kasus yang sama, namun ada bentuk yang hanya cocok untuk kasus tertentu saja. Pemilihan bentuk pengulangan untuk masalah tertentu dapat mempengaruhi kebenaran algoritma. Pemilihan bentuk pengulangan yang tepat bergantung pada masalah yang akan diprogram.

Dalam sebagian besar bahasa pemrograman, ada beberapa jenis loop yakni;
  • Loop yang sudah ditentukan jumlah pelaksanaannya, misalnya satu kali untuk setiap pegawai.
  • Loop yang dievaluasi secara kontinu. Untuk loop jenis ini tidak diketahui berapa kali pelaksanaannya, dan setiap kali diulangi selalu diperiksa apakah itu adalah loop terakhir.
  • Ada juga jenis loop yang tidak pernah berakhir.

Macam loop juga dibedakan oleh lokasi di mana pengujian kesempurnaan itu dilaksanakan.
  • Pengujian dapat dilaksanakan di awal,
  • Pengujian dapat dilaksanakan tengah atau
  • Pengujian dapat dilaksanakan akhir loop.

Karakteristik ini memberitahukan bahwa apakah sedikitnya loop itu dieksekusi satu kali.
  • Jika pengujian dilakukan di awal, maka bagian utama loop tidak perlu dieksekusi.
  • Jika loop diuji di akhir, bagian badan loop harus dieksekusi sedikitnya satu kali.
  • Jika loop diuji ditengah, maka bagian loop yang mendahului bagian yang diuji, dieksekusi sedikitnya satu kali.
  • Tapi bagian loop sesudahnya, yaitu yang menyusul bagian yang sudah diuji tidak perlu dieksekusi sama sekali.

Untuk mempermudah penjelasan dan pemelajaran tentang proses loop ini akan digunakan studi kasus, sebagai berikut:
Diinginkan untuk membuat program yang dapat menampilkan semua bilangan genap antara 0 sampai dengan 100. Untuk menyelesaikan permasalahan itu maka harus dilakukan identifikasi masalah terlebih dahulu. Bilangan genap adalah bilangan yang habis dibagi dua, sehingga untuk bilangan genap antara 1 –100 adalah 2,4,6,8, .. dst.

Hal ini akan lebih efektif jika dipecahkan dengan memakai loop. Adapun algoritmanya adalah sebagai berikut:
Langkah 1 : Mulai
Langkah 2 : Tentukan i=1
Langkah 3 : Apakah i mod 2 = 0, jika ya (i bilangan genap), maka pergi ke langkah 4,
tetapi jika tidak, maka pergi ke langkah 5
Langkah 4 : Tampilkan i
Langkah 5 : Tentukan i = i + 1
Langkah 6 : Apakah i > 100 jika ya, pergi ke langkah 7, jika tidak maka kembali ke langkah 3
Langkah 7 : Selesai


Dalam langkah 3 algoritma di atas terdapat operator Mod. Mod adalah suatu operator aritmatika yang digunakan untuk menghitung sisa hasil bagi antara dua buah bilangan bulat atau integer. Hasil dari operasi mod ini adalah suatu bilangan integer juga.

Kemudian untuk diagram alir programnya adalah sebagai berikut:

Contoh Kasus 2 : Mencari Bilangan Posotif dan Negarif

1) Langkah 1: Mulai.
Langkah 2: Masukkan atau berikan sembarang bilangan. Simpan dalam variabel X.
Langkah 3: Apakah X<0 ?, jika ya : pergi ke langkah 4, jika tidak : pergi ke langkah 5.
Langkah 4: Tampilkan pesan “X bilangan negatif”, pergi langkah 6.
Langkah 5:Tampilkan pesan “X bilangan positif atau nol”.
Langkah 6: Selesai.


2) Langkah 1: Mulai.
Langkah 2: Masukkan atau berikan sembarang bilangan. Simpan dalam variabel X.
Langkah 3: Apakah X mod 3 = 0 ?, jika ya : pergi ke langkah 4, jika tidak : pergi ke langkah 5.
Langkah 4: Tampilkan pesan “X dapat dibagi 3”, pergi langkah 6.
Langkah 5: Tampilkan pesan “X tidak dapat dibagi 3”.
Langkah 6: Selesai.

Contoh Kasus 3 : Mencari Bilangan Prima
Langkah 1 : Mulai
Langkah 2 : Tentukan i:=2;
Langkah 3 : Tentukan (diasumsikan) bilangan i adalah prima, sehingga set awal
variabel prima:=True
Langkah 4 : Tentukan j:=i-1;
Langkah 5 : Cek apakah i habis dibagi j, jika ya pergi ke langkah 6, jika tidak pergi ke langkah 7
Langkah 6 : berarti bukan bilangan prima, set prima:=False;
Langkah 7 : j:=j-1; Apakah j=2? jika tidak kembali ke langkah 5,
jika ya terus ke langkah 8 berikut.
Langkah 8 : Cek apakah prima=True? Jika ya, tampilkan i, jika tidak terus ke langkah 9.
Langkah 9 : i := i + 1, Apakah i = 50? jika tidak kembali ke langkah 3,
jika ya pergi ke langkah 9.
Langkah 10 : Selesai.


Contoh Kasus 4 : Mencari Bilangan Maximum / Minimum
Langkah 1: Mulai
Langkah 2: Tentukan max:= nilai[1]; (asumsikan elemen-1 adalah nilai maksimum).
Langkah 3: Tentukan i := 2;
Langkah 4: Cek apakah nilai[i]>max? Jika tidak, pergi ke langkah 6,
Jika ya lanjutkan ke langkah 5 berikut ini.
Langkah 5: Ganti isi max dengan nilai[i], max:=nilai[i];
Langkah 6: i:=i+1; Apakah i>n ? (n banyaknya elemen larik)
Jika tidak, pergi ke langkah 4, Jika ya pergi ke langkah 7 berikut.
Langkah 7: Nilai maksimum ketemu, yakni max, lalu tampilkan max.
Langkah 8: Selesai.

Tidak ada komentar:

Posting Komentar