Perulangan dan Percabangan

Dalam pemrograman, seringkali sebuah program harus mengulang sebuah aksi yang sama secara berulang. Salah satu contoh program yang melakukan perhitungan menggunakan perulangan adalah pada contoh program menghitung faktorial.

Sebuah ekspresi n! (dibaca n faktorial) adalah hasil perkalian dari bilangan 1 hingga n. Sebagai contoh, 5! Adalah hasil dari 1x2x3x4x5. Khusus untuk bilangan 0, pengertiannya tidaklah seperti itu, karena 0! Adalah 1. Jadi nilai faktorial dari suatu bilangan n adalah 1 jika n=0 atau merupakan hasil perkalian dari 1 hingga n jika n bukan 0.

Untuk dapat membuat program yang menghitung nilai suatu faktorial, maka ada dua hal baru yang harus kita ketahui. Pertama adalah bagaimana melakukan sebuah aksi yang berulang. Dan yang kedua adalah bagaimana memilih sebuah aksi berdasarkan sebuah keadaan.

Perulangan

Menurut jumlah perulangannya, perulangan dikelompokan menjadi dua macam, yaitu perulangan dengan jumlah yang diketahui dan perulangan dengan jumlah yang tidak di ketahui.

Untuk perulangan dengan jumlah yang sudah diketahui, kita menggunakan format:

for variabel := awal to akhir do aksi;

untuk awal lebih kecil dari akhir. Jika awal lebih besar dari akhir, maka aksi tidak pernah dijalankan.

atau

for variabel := awal downto akhir do aksi;

untuk awal yang lebih besar dari akhir. Jika awal lebih kecil dari akhir maka aksi tidak pernah dijalankan.

Sedangkan untuk perulangan dengan jumlah yang tidak diketahui, maka harus ada bagian yang mengevaluasi apakah perulangan masih perlu dilanjutkan atau tidak. Proses evaluasi ini adalah sebuah ekpresi, akan tetapi nilai yang dihasilkan dari ekspresi ini adalah jawaban berupa Ya atau Tidak. Di dalam Delphi, jawaban tersebut ditandai dengan nilai True atau False. Tipe data yang melibatkan nilai true atau false disebut dengan tipe boolean.

Jika evaluasi dilakukan sebelum masuk perulangan, maka format perulangannya adalah:

while ExpresiBoolean do aksi;

selama ExpresiBoolean menghasilkan nilai true, maka aksi akan terus dijalankan. Format perulangan seperti ini memungkinkan tidak pernah dilakukannya aksi.

Sedangkan jika evaluasi dilakukan setelah perulangan, maka format perulangannya adalah:

repeat aksi until EkspresiBoolean;

aksi akan terus dijalankan sampai EkspresiBoolean menghasilkan nilai True (aksi terus dijalankan selama hasil EkspresiBoolean False). Dengan format seperti ini, maka aksi akan dijalankan minimal adalah satu kali.

Percabangan

Ada dua macam pemilihan aksi, yaitu:

  1. if EkspresiBoolean then aksi;
  2. if EkspresiBoolean then aksi1 else aksi2;

Untuk cara yang pertama, aksi akan dijalankan jika nilai EkspresiBoolean adalah true.

Sedangkan untuk cara yang kedua, aksi1 akan dijalankan jika nilai EkspresiBoolean benilai true, jika sebaliknya, maka aksi2 yang akan dijalankan.

Untuk semua pengertian aksi, jika terdiri lebih dari satu statemen program, maka statemen-statemen tersebut dapat diawali dengan begin dan ditutup dengan end;. Khusus untuk repeatuntil, maka begin sudah diwakili oleh repeat, dan end; sudah diwakili oleh until. Jadi tidak diperlukan lagi tambahan begin dan end; untuk aksi yang terdiri lebih dari satu statemen. Aksi-aksi tersebut juga boleh merupakan statemen yang bertingkat. Artinya aksi-aksi tersebut boleh merupakan perulangan di dalam perulangan, perulangan di dalam if, atau if di dalam perulangan. Aturan kebertingkatan seperti ini bisa diterapkan untuk semua statemen program di dalam Delphi.

Setelah kita mengetahui cara melakukan sebuah perulangan maupun cara memilih aksi, maka kita bisa membuat program untuk menghitung nilai faktorial sebagai berikut:

program HitungFaktorial;
{$APPTYPE CONSOLE}
var
  n,i,faktorial:cardinal;  
begin
  Write('Masukkan sebuah bilangan: ');
  Readln(n);
  if (n=0) then faktorial:=1 else
  begin
    faktorial:=1;
    for i:=1 to n do faktorial:=faktorial*i;
  end;
  Write('Faktorial dari ',n);
  Writeln(' adalah ',faktorial);
  Writeln('Tekan Enter');
  Readln;
end.

Nama program secara otomatis akan diganti dengan nama file saat disimpan. Anda tidak perlu melakukannya secara manual.

Ekspresi boolean untuk pernyataan if pada program di atas adalah (n=0). Ekspresi tersebut akan bernilai true jika isi dari variabel n adalah 0. Tanda sama dengan pada ekspresi tersebut digunakan sebagai operator relasional, yaitu operator yang digunakan untuk menentukan hubungan antara dua buah ekspresi.

Operator relasional

Pada contoh program di atas, kita telah menggunakan sebuah operator relasional sama dengan (=). Selain sama dengan, masih ada beberapa operator relasional yang lain, yaitu:

  1. Operator dengan tanda sama dengan (E1=E2). Hasil dari operasi menggunakan operator ini akan bernilai true jika kedua ekspresi bernilai sama.
  2. Kebalikan dari sama dengan, yaitu akan menghasilkan nilai true jika kedua ekspresi bernilai tidak sama. Tanda yang digunakan adalah tanda lebih besar dan tanda lebih kecil secara berhadapan (E1<>E2).
  3. Operator dengan tanda lebih kecil (E1
  4. Operator dengan tanda lebih besar (E1>E2). Akan bernilai true jika ekspresi pertama bernilai lebih besar dari ekspresi kedua.
  5. Operator dengan tanda lebih kecil diikuti oleh tanda sama dengan (E1<=E2). Akan bernilai true jika ekspresi pertama bernilai lebih kecil atau bernilai sama dengan ekspresi kedua.
  6. Operator dengan tanda lebih besar diikuti oleh tanda sama dengan (E1>=E2). Akan bernilai true jika ekspresi pertama bernilai lebih besar atau bernilai sama dengan ekspresi kedua.

Coba jalankan program di atas dengan menekan tombol F9, lalu masukkan bilangan 0. Hasilnya adalah 1. Coba jalankan lagi dan masukkan bilangan 12, hasilnya adalah 479001600 yang merupakan jawaban yang benar. Sekarang coba lagi dengan bilangan 13, maka hasilnya adalah 1932053504 yang merupakan jawaban yang salah. Hal ini terjadi karena variabel faktorial tidak mencukupi untuk menyimpan hasilnya.

Apakah Anda menyukai post ini? Mengapa tidak memberikan komentar di bawah dan melanjutkan perbincangan, atau berlangganan my feed dan dapatkan artikel semacam ini yang dikirm secara otomatis feed reader Anda.
Harap diperhatikan bahwa komentar atau pertanyaan yang disampaikan haruslah sesuai dengan topik yang sedang dibahas. Komentar atau pertanyaan yang tidak sesuai dengan topik akan kami hapus :!:

Tinggalkan komentar

Sebelum membuat komentar, pastikan Anda telah membaca komentar-komentar sebelumnya. Jangan membuat pertanyaan yang telah ditanyakan. Perhatikan pula link-link dalam artikel. Lihatlah link tersebut sebelum membuat pertanyaan, karena mungkin penjelasan dari pertanyaan Anda telah di jawab dalam link tersebut.

Komentar yang tidak mengikuti aturan ini akan dihapus!

(wajib)

(wajib)


Time limit is exhausted. Please reload the CAPTCHA.