Jumat, 26 April 2013

Perulangan (Looping) dengan "FOR" dalam Pascal.

Salam semangat! hehe.. How are you friend? hehe, saya harap kalian baik-baik saja hehe
Ya seperti pada judulnya, kali ini kita akan belajar mengenai perulangan (looping) dalam Bahasa pemprograman Pascal.
Ada 3 cara di dalam Bahasa Pemprograman Pascal untuk menyatakan perulangan. Yaitu

1. FOR - DO
2. WHILE - DO
3. REPEAT - UNTIL

ke tiganya mempunyai cara penulisan dan fungsinya masing-masing(meskipun pada dasarnya semua nya digunakan untuk perulangan)

Menurut saya, bagian dari belajar dasar pemprograman yang "membutuhkan waktu lebih" untuk di kuasai adalah bagaian ini.
yah, perulangan. karena akan banyak khasus yang membutuhkan analisa logika teman-teman untuk menyelesaikanya(tentunya berhubungan dengan perulangan)

Kali ini kita akan membahas perlulangan dalam Bahasa Pemprograman Pascal menggunakan FOR - DO. Yuk mari...

Di dalam Pemprograman pascal, Syntax Looping dengan menggunakan FOR di bedakan menjadi 2 jenis. Yaitu

A. Increasement (bertambah)
FOR <variable> : = <nilai_awal> TO <nilai_akhir> DO
Syntax FOR di atas digunakan untuk perulangan yang nilai awalnya terus bertambah hingga nilai akhir.
atau dalam pengertian dapat di rumuskan :
Printah (statement) di dalam FOR akan selalu di jalankan selama nilai_awal masih <= nilai_akhir.
Kemudian nilai_awal akan selalu di tambahkan 1 di setiap kali perulangan.
Perintah (statement) di dalam FOR akan berkahir/selesai di eksekusi pada saat nilai_awal > nilai_akhir.

Sebagai contoh :

Contoh1
Tampilkan urutan bilangan mulai dari 1 hingga 10

Berikut script penyeselsaianya :
program Contoh1;
var
   x: integer;
begin
   for x := 1  to 10 do
   begin
      write(x , ' ');
   end;
   readln;
end.
Hasil dari program di atas adalah :
1 2 3 4 5 6 7 8 9 10 
nilai dari variable x mula-mula adalah 1, kemudian perintah yang dijalankan adalah write/mencetak variable x .
Kemudian karena x masih kurang dari 10 maka x ditambahkan 1, sehingga sekarang nilai x menjadi 2 .
Dan begitu seterusnya hingga x = 10 maka program perhenti di proses.

B. Decreasement (berkurang)
FOR <variable> : = <nilai_awal> DOWNTO <nilai_akhir> DO
Berkebalikan dengan FOR untuk Increasement, Syntax FOR untuk Decreasement di atas digunakan untuk perulangan dengan penurunan nilai.
Jadi :
Printah (statement) di dalam FOR akan selalu di jalankan selama nilai_awal masih >= nilai_akhir.
Kemudian nilai_awal akan selalu di dikurangi 1 di setiap kali perulangan,
Perintah (statement) di dalam FOR akan berkahir/selesai di eksekusi pada saat nilai_awal < nilai_akhir.

Sebagai contoh :

Contoh2
Tampilkan urutan bilangan mulai dari 15 hingga 5

Berikut script penyelesaianya :
program Contoh2;
var
   y: integer;
begin
   for y := 15  downto 5 do
   begin
      write(y , ' ');
   end;
   readln;
end.
Hasil dari program di atas adalah :
15 14 13 12 11 10 9 8 7 6 5
nilai dari variable y mula-mula adalah 15, kemudian perintah yang dijalankan adalah write/mencetak variable y .
Kemudian karena y masih lebih dari 5 maka y dikurangi 1, sehingga sekarang nilai y menjadi 14 .
Dan begitu seterusnya hingga y = 5 maka program perhenti di proses.

OK,, kita sudah mengenal 2 jenis FOR dalam pascal, sekarang saat nya implementasi :D

Saya mempunyai 2 khasus yaitu :

1. Saya ingin menampilkan bilangan perima mulai dari 1 hingga 50
2. Saya inggin membuat Pyramit dari character 'x' menjadi seperti :
    x
   xxx
  xxxxx
 xxxxxxx
Bagaimana caranya?
yuk kita kerjakan bersama - sama :D

1. Khasus 1
untuk mengerjakan khasus ini kita memerlukan operator artimatik "MOD" (modulus) yaitu operator aritmatik yang berfungsi untuk mendapatkan nilai sisa hasil bagi.
seperti yang kita ketahui, ciri-ciri dari bilangan prima adalah hanya dapat dibagi oleh angka 1 dan bilangan itu sendiri.
jadi jumlah bilangan pembagi bilangan prima hanyalah ada 2.

Brikut script nya :
Program khasus1;
var
a,b,c,x : integer;

BEGIN 
    x := 50; // batas nilai prima
    for a:= 1 to x do // for pertama
    Begin
    
      c := 0; // jumlah pembagi bilangan prima
      for b: = 1 to a do  // for ke 3
      Begin
          if a mod b=0 then  // pengecekan sisa hasil pembagian
          c:=c+1; // jika sisanya 0 jumlah pembagi ditambah 1 
      end; // akhir for ke 2

      if c = 2 then // pengecekan jumlah pembagi, jika jumlah pembagi = 2 maka cetak bilangan tersebut (berarti bilangan prima)
      begin
          write(a,' '); // cetak nilai bilangan prima
      end;
    
    end; // akhir for pertama

     readln;
END.

Penjelasan :
a. for pertama berfungsi untuk perulangan bilangan variable a dari 1 hingga x (50)
b. for ke 2 berfungsi untuk mencari berapa jumlah bilangan yang hasil bagi dengan variable a nya adalah 0

Hasilnya :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 

2. Khasus 2
Dilihat dari hasilnya, sepertinnya mudah? yakin? hehehe
Menurut saya, bagi yang baru belajar Pemprograman, khasus ini adalah khasus yang cukup meguras otak kita hehe.
Tapi tenang jangan panik. disini kita kan bahas bersama-sama :D

sebelumnya akan saya berikan script lengkapnya terlebih dahulu baru akan saya bahas bagian-perbagian :D

berikut ini script lengkapnya :
program khasus2;
var 
    baris,sepasi,piramit1,piramit2,jumbaris :integer;
begin
    jumbaris := 4;
    
    for baris :=1 to jumbaris do // for pertama
    begin
         for sepasi := jumbaris downto baris do // for ke 2
         begin
              write(' '); // mencetak segitiga spasi
         end; // akhir for 2
         
         for piramit1 := 1 to baris do // for 3
         begin
              write('x'); // mencetak segitiga x 1
         end; // akhir for 3
         
         for piramit2 := 2 to baris do // for 4
         begin 
              write('x'); // mencetak segitiga x 2
         end; // akhir for 4
         
         writeln; // mencetak baris baru
    end; // akhir for pertama
    readln;
end.

hah? panjang dan banyak banget for nya??
tenang aja, yuk kita bahas bersama-sama.

dari yang temen-temn lihat, kira-kira ada berapa objek segitiga?
1?
hmm... salah... :)
jawabanya ada 3..
loh koq bisa?
heheh akan saya jelaskan

a. For pertama
for baris :=1 to jumbaris do // for pertama
begin
 . . . .
end;

for pertama adalah FOR pembungkus dari semua FOR pembentuk objek segitiga.
fungsi dari for pertama adalah untuk membuat baris. yaitu mulai baris pertama (1) hingga baris ke jumbaris (4)
varibale "baris" disini berfungsi sebagai acuan pembentukan kolom di setiap objek segitiganya

b. For ke 2
for sepasi := jumbaris downto baris do // for ke 2
begin
    write(' '); // mencetak segitiga spasi
end; // akhir for 2
for ke 2 ini berfungsi sebagai pemebentuk kolom yang nantinya menjadi segitiga spasi.
bingung? sekarang coba temen-temen ganti isi dari write(' '); menjadi write('0');
apa yang terjadi?
yups ada segitiga yang terbentuk dari angka 0.
Seperti yang saya sebutkan, fungsi dari for ini adalah untuk membuat kolom, jumlah kolom (dalam hal ini spasi/angka 0) adalah hasil dari perulangan for tersebut, sebagai contoh di baris yang pertama jumlah spasi/0 adalah 4 buah. itu dukarenakan perulangan Decreasement perintah mencetak spasi/0 di baris pertama yaitu dari nilai variable sepasi (4) hingga nilai variable baris (1). dan begitu seterusnya hingga for pembentuk beris(for pertama) berakhir.

c. For ke 3
for piramit1 := 1 to baris do // for 3
begin
    write('x'); // mencetak segitiga x 1
end; // akhir for 3
fungsi dari for ke 3 ini adalah untuk membentuk segitiga x yang ke 1. sama seperti fungsi dari for yang kedua, cuma bedanya yang di cetak adalah character x dan perulangan untuk pembentukan barisnya adalah Increasement.
sebagai contoh di baris yang pertama jumlah x adalah 1 buah. itu di karenakan perulangan perintah pencetakan x dari nilai mulla-mula varibale piramit1 (1) bertambah terus hingga nilainya sama dengan variable baris (1) dan begitu seterusnya hingga for pembentuk beris(for pertama) berakhir.

d. For ke 4
for piramit2 := 2 to baris do // for 4
begin 
     write('x'); // mencetak segitiga x 2
end; // akhir for 4
Fungsinya adalah pembentuk segitiga x yang ke 2. algoritmanya sama persis dengan for yang ke 3, hanya bedanya piramit2 dimulai dari 2, bukan 1.
kenapa? karena segitiga yang akan dicetak lebih kecil 1 baris dari yang pertama. coba temen-temen ganti isi piramit2 menjadi 1. apa yang akan terjadi? :D

Hasilnya adalah :
    x
   xxx
  xxxxx
 xxxxxxx
yeah,,, kita sudah belajar macam-macam for dalam pascal.. udah tambah Pintar Coding dong pastinya hehehe..
terus terang For adalah bagian dasar dari pemprograman yang perlu perhatian lebih dalam memahaminya, jadi tenang aja bagi yang belum paham bisa di pelajari pelan-pelan koq hehe
ok,, di article selanjutnya kita kan belajar Looping dalam Pascal menggunakan WHILE-DO dan REPEAT-UNTIL ..
tenang ndak sesulit For koq, saya yakin ini lebih mudah,, jadi nantikan ya article selanjutnya... semoga bermanfaat.. :D

4 komentar:

  1. keren update terus , di tunggu latihan selanjutnya

    BalasHapus
  2. nice! jelas banget ngajarinnya

    BalasHapus
  3. Mulai paham tentang for do
    Mantap ngejelasinya nih
    Nice share ilmunya gan

    BalasHapus