Blog yang menyediakan pelajaran, source code, dan artikel-artikel seputar pemrograman dan komputer.

Tuesday, April 17, 2012

4 – kontrol program

10:07 AM Posted by Vyn , No comments
Photobucket
Pelajaran kali ini akan membahas:
  • Statement if
    • if ... then ... else
    • if bersarang
  • Perulangan Repeat – Until
  • Perulangan For
    • for bersarang
  • Perulangan While – do
Sekarang, saatnya mempelajari hal yang paling penting di dalam pemrograman: statement if (pembuat keputusan), perulangan for dan perulangan repeat – until. Tiga hal umum inilah yang biasanya mmembangun sebuah program di semua bahasa pemrograman, dan anda harus memastikan bahwa setelah anda mempelajari bagian ini, anda sudah cukup mempraktikannya berulang-ulang sebelum melanjutkan ke pelajaran berikutnya karena bagian ini adalah yang paling penting. Jika anda masih tidak yakin dengan pemahaman anda, cobalah pergi ke forum-forum untuk mencari jawaban atas masalah anda.

Statement if
statement if mengeksekusi sebuah pengkondisian. Maksudnya adalah jika sebuah aksi bernilai true, maka instruksi-instruksi yang ada di dalam badan if akan dieksekusi, jika tidak maka instruksi-instruksi akan dilewatkan saja. Untuk lebih jelasnya perhatikan yang dibawah ini:

if ini terjadi (aksi), then lakukan ini (reaksi, jika kondisi bernilai true/ benar).

Atau:

if ini terjadi  (aksi), then lakukan ini (reaksi, jika kondisi true/ benar), else lakukan yang ini (reaksi, jika kondisi false/ salah).

di dalam pascal, 'statement if' harus ditulis seperti berikut:

If ekspresi kondisional then kode ..... ; {jika satu aksi}

Atau:

If ekspresi kondisional then Begin instruksi-instruksi ... end; (jika ada lebih dari satu aksi)

Sebagai catatan bahwa anda tidak boleh menggunakan operator assignment ('=') di dalam ekspresi kondisional, jika iya maka compiler akan menampilkan pesan error. Contoh:

Salah:
If
x := 20 then x := x + 1; {karakter yang digarisbawahi adalah yang salah.}

Benar:
If
x = 20 then x:= x + 1; {tanda sama dengan hanya dipakai pada kondisi}

Program dibawah ini adalah contoh bagaimana statement if bekerja:

  1. Program lesson4_Program1;
  2. Uses  Crt;
  3. Label 1{digunakan bersama statement goto}
  4. Var Sel: String;
  5.     N1,N2, Total : Real;
  6.     YN : Char{variabel dengan tipe karakter,
  7.                  yang HANYA akan menampung satu huruf/angka saja}
  8. Begin
  9.  1:Clrscr;
  10. Total := 0{biasakan untuk menginisialisasi variabel integer / real}
  11. GotoXy(4,3);
  12.  Writeln('1.Penjumlahan');
  13. GotoXy(4,4);
  14.  Writeln('2.Pengurangan');
  15. GotoXy(4,5);
  16.  Writeln('3.Exit');
  17. GotoXy(6,8);
  18.  Write('Pilih: ');
  19. Sel := Readkey;
  20.  If Sel = '1' {aksi} then
  21.   Begin  {lebih dari satu aksi}
  22.    ClrScr;              
  23.    Write('Input No.1:');
  24.    Readln(N1);          
  25.    Write('Input No.2:');
  26.    Readln(N2);          
  27.    Total := N1 + N2;   
  28.    Writeln('Penjumlahan: ',N1:2:3,' + ',N2:2:3,' = ',Total:2:3);
  29.    Write('Tekan tombol mana saja untuk melanjutkan...');
  30.    Readkey;
  31.    Goto 1;{ini akan membawa kembali ke awal program,
  32.            jika tidak maka program akan berhenti}
  33.   End{menutup if statement(begin)}
  34.  If Sel = '2' then
  35.   {perhatikan bahwa operator assignment
  36.    tidak digunakan di dalam statement if}
  37.   Begin
  38.    ClrScr;
  39.    Write('Input No.1:');
  40.    Readln(N1);
  41.    Write('Input No.2:');
  42.    Readln(N2);
  43.    Total := N1 - N2;
  44.    Write('Pengurangan: ');
  45.    Write(N1:2:3,' - ',N2:2:3,' = ',Total:2:3);
  46.    Write('Tekan tombol mana saja untuk melanjutkan...');
  47.    Readkey;
  48.    Goto 1;
  49.   End{Menutup if statement}
  50.  If Sel = '3' then
  51.   Begin
  52.    ClrScr;
  53.    Write('Anda yakin untuk keluar?(Y/N)');
  54.    YN := Readkey;
  55.    If YN = 'y' then Halt; {1 aksi jadi tidak memerlukan Begin..End}
  56.    If YN = 'n' then Goto 1; {statement goto tidak direkomendasikan
  57.                              untuk program yang kompleks}
  58.   End;
  59. End.


Pada program diatas, statement 'goto' digunakan. Sejauh ini, ini adalah sebuah kerusakan yang nyata pada program dan ini membuat kebingungan yang tak diinginkan. Saya menganjurkan anda untuk tidak menggunakannya berulang-ulang.

>>If ... Then ... Else
Di dalam statement normal, 'reaksi' tidak bisa dilakukan jika kondisi tidak bernilai true. Tapi di dalam sebuah statement if ... then ... else, setidaknya ada satu statement yang dikerjakan. Mari lihat contoh di bawah ini:

writeln('Siapa yang menjadi presiden pertama indonesia?');
readln(ans);
if (ans = 'Soekarno') then
score := score + 1 {jika benar}
ELSE
writeln('maaf, jawaban anda salah');      {jika salah}

Perhatikan bahwa 'else' termasuk di dalam statement if, sehingga tidak ada tanda semi-colon (';') sebelum else; lihat saja pada contoh di atas

>>Statement if bersarang
Program diatas sudah menunjukkan sebuah contoh statement if bersarang.
if sel = '3' then
 Begin
  
clrscr;
   write('Anda Yakin? (Y/N)');
   YN := readkey;
   if YN = 'y' then HALT; {pernyataan if bersarang}
   if YN = 'n' then goto 1; {pernyataan if bersarang yang lain}
End.

Sebuah pernyataan if bersrang ada pada form:
if (ini terjadi) then {if 1}
  if (ini terjadi) then {if 2}
    (lakukan ini) dll...
  Else (lakukan ini) {if 2}
Else (lakukan ini) dll.. {if 1}

Sebuah pernyataan if bersarang adalah pernyataan if di dalam pernyataan if yang lain seperti tulisan diatas.

Pengulangan Repeat – Until

Perulangan ini digunakan untuk mengulang-ulang eksekusi dari satu set instruksi, minimal satu kali. Set Instruksi diulangi sampai kondisi ekspresi salah. Contoh dibawah ini menunjukkan model perulangan 'repeat-until':

Repeat
... (code)
... (code)
... (code)
Until pernyataan kondisi;

berikut contohnya:


Sangat mudah kan! Dalam program di atas, ada Ekspresi Boolean di baris ke-sepuluh (or) akan dijelaskan pada pelajaran berikutnya.

Perulangan For
Perulangan for mengulang satu set instruksi sebanyak jumlah yang ditentukan. Bentuk penulisan perulangan for:

- Jika untuk satu aksi/ instruksi:
for {variable}*:={nilai awal} to/downto {nilai akhir} do
  
{code.. (untuk satu aksi)}

- Jika untuk lebih dari satu aksi
for {variable}* := {nilai awal} to/downto {nilai akhir} do begin
  
{code..}
   {code..}
End;

*
Biasanya, variabel ini disebut 'loop counter'

Sekarang, sebagai contoh dari perulangan for, diperlihatkan dibawah ini, tapi pertama kali, anda harus mengerti penggunaan for loop yang efektif. Seperti contoh dibawah ini:

Tanpa for loop:


Dengan for loop:


Perhatikan bahwa kedua program diatas menghasilkan fungsi yang sama, tapi gaya pemrograman mana yang lebih luar biasa?

- For loop bersarang

Sebuah perulangan for bersarang mirip dengan pernyataan if bersarang. Penulisan for loop bersarang:

for {loop counter} := {nilai awal} to {nilai akhir} do {Begin-if required}
{code jika banyak, perlu menggunakan begin (i.e lebih dari satu aksi)}
for {loop counter} := {nilai awal} to {nilai akhir} do {Begin-if required}
{code..jika lebih dari satu aksi, gunakan begin pada for loop kedua}
{End; – jika begin digunakan pada for loop kedua)}
     {code if any..begin should be included in the first for loop} 
{End; - if begin is included in the first for loop)}



While-Do loop
Loop tipe ini dieksekusi ketika kondisi bernilai benar. ini berbeda dari 'Repeat-Until' loop yang dieksekusi minimal satu kali. Code bekerja seperti ini:

While <kondisi benar> lakukan berikut ini:
instruksi 1;
Instruksi 2;
Instruksi 3;
dll..
End; {jika While-do loops dimulai dengan pernyataan begin}

Contoh program While-do loop:


Friday, April 6, 2012

Algoritma dan contoh program mencari KPK atau LCM (English) dalam C++

10:51 AM Posted by Vyn No comments
Photobucket

Setelah sekian lama tidak posting karena jadwal kuliah semester 4-nya mahasiswa S1 Ilmu komputer USU yang terkenal super sibuk-sibuknya. Akhirnya saya memutuskan untuk menahan rasa kantuk sedikit lagi untuk menyempatkan diri memposting sebuah artikel mengenai pemrograman.

Kali ini saya akan berbicara mengenai algoritma pencarian KPK (Kelipatan Persekutuan terKecil) atau LCM (Least Commont Multiple) dari sejumlah bilangan. Jika pencarian KPK hanya melibatkan 2 bilangan, sepertinya cukup mudah. Namun ketika jumlah bilangan yang diminta lebih dari 2, algoritmanya menjadi sedikit bertambah ribet. Baik kita ulas saja langsung ya:

KPK dari 2 bilangan:
-> input a, b
-> a1 = a, b1 = b
-> selama a != b, lakukan:
    -> selama a < b, lakukan:
         -> a = a + a1
    -> selama a > b, lakukan:
        -> b = b + b1
contoh kode:

KPK untuk lebih dari 2 bilangan (menggunakan array):
-> input banyak bilangan (n)
-> input seluruh bilangan (a[0] .... a[0-1])
-> array dengan panjang n
-> ulangi selama i < n: 
    -> x = a[i], y = a[i+1] 
    -> selama a [i]= a[i+1], lakukan:
         -> selama a[i] < a[i+1], lakukan:
              -> a[i] = a[i] + x
         -> selama a[i] > a[i+1], lakukan: 
              -> a[i+1] = a[i+1] + y
-> hasil = a[n-1]

agar lebih jelas, dalam kodenya saya perlihatkan perubahan isi dari array di setiap kali ada pengubahan.


contoh kode:


Happy programming :)