-
Perhatikan potongan program berikut:
hasil := 1; for i:=3 to 10 do begin if (i mod 2 <> 0) then begin hasil := hasil*i; hasil := hasil*(-1); end else hasil := hasil div 2; hasil := hasil*(-1); end; writeln(hasil)
Apakah output yang tampil di layar? Jawab: ……..
Pada pascal writeln(hasil)
tidak wajib menggunakan ‘;’
karena tidak ada perintah lagi setelahnya, meskipun bisa juga menggunakannya.
Pada bagian else tidak terdapat keyword begin
sehingga hanya bagian pertama saja yang masuk dalam bagian else.
Artinya hasil := hasil*(-1);
tetap akan dijalankan
meskipun kondisi if terpenuhi.
Program akan masuk kondisi if jika i mod 2 tidak sama dengan 0. Artinya jika i merupakan bilangan ganjil.
i = 3: hasil = 1 * 3 * (-1) = -3. Seperti penjelasan sebelumnya bahwa hasil := hasil*(-1);
tetap dijalankan, sehingga
hasil = 3.
i = 4: hasil = 3/2 = 1 (div merupakan pembagian dengan pembulatan ke bawah). Hasil kembali dikali dengan -1 menjadi -1.
i = 5: hasil = -1*5(-1)*(-1) = -5
i = 6: hasil = -5/2*(-1) = 2
i = 7: hasil = 2*7 = 14 (jika i ganjil, (-1) dijalankan dua kali)
i = 8: hasil = 14/2*(-1) = -7
i = 9: hasil = -7*9 = -63
i = 10: hasil = -63/2 = 31
Jadi output yang tampil adalah 31.
⅓ x ⅔ = 2/9 bagian
kok bisa gitu kak?
Kan ibunya dapat 1/3, jadi sisa 2/3 untuk anak-anaknya. Karena anaknya ada 3, jadi 2/3 itu dibagi 3 lagi buat masing-masing anak, sehingga bagian yang didapat anak-anaknya itu 1/3 dari 2/3 = 2/9.