Yuk bantu teman kamu belajar dengan menambahkan soal di Kujawab. Klik disini..

Olimpiade Sains Kota (OSK) 2011 - Komputer , Nomor 50

50

Perhatikan tahapan-tahapan berikut: Misalkan ada dua variable "x" dan "y", dan variable "hasil" yang nilai awalnya 0. Lakukan proses berikut selama nilai "x" lebih besar dari 0:

  • Jika nilai "x" ganjil maka nilai "hasil" := "hasil" + y.

  • nilai "x" selanjutnya adalah nilai "x" sebelumnya dibagi dua, bila ada hasil pecahan, maka pecahannya di buang. (contoh bila nilai "x" sebelumnya 1, maka nilai "x" selanjutnya 0)

  • nilai "y" selanjutnya adalah nilai "y" sebelumnya dikali dua

Manakah program pseudo-pascal yang merupakan program dari tahapan-tahapan tersebut? (catatan: fungsi "mod" memberikan nilai sisa bagi, contoh: 13 mod 5 = 3 dan fungsi “div” membagi dan membulatkan ke bawah)

a.

var x,y : integer
x := 10;
 y := 15;
 hasil := 0;
 while x > 0
 begin
 if (y mod 2 = 1) then begin hasil := hasil + y; end;
 x := x * 2;
 y := y div 2;
 end

b.

var x,y : integer
 x := 10;
 y := 15;
 hasil := 0;
 while x > 0
 begin
 if (x mod 2 = 1) then begin hasil := hasil + y; end;
 x := x div 2;
 y := y * 2;
 end

c.

var x,y : integer
 x := 10;
 y := 15;
 hasil := 0;
 while x > 0
 begin
 if (x mod 2 = 1) then begin hasil := hasil + x; end;
 x := x * 2;
 y := y div 2;
 end

d.

var x,y : integer
 x := 10;
 y := 15;
 hasil := 0;
 while x > 0
 begin
 if (x mod 2 = 1) then begin hasil := hasil + x; end;
 x := x div 2;
 y := y * 2;
 end

e.

var x,y : integer
 x := 10;
 y := 15;
 hasil := 0;
 while x > 0
 begin
 if (y mod 2 = 1) then begin hasil := hasil + y; end;
 x := x div 2;
 y := y * 2;
 end