OSP 2011

  1. 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.

Share Now:

5 1 vote
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
kim
kim
3 years ago

⅓ x ⅔ = 2/9 bagian
kok bisa gitu kak?

2
0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!