Anda di halaman 1dari 4

Soal Latihan

Perulangan
var
n, k, i : byte;
begin
readln(n, k);
for i := 1 to n do
begin
if i mod (k+1) = 0 then
write('* ')
else
write(i, ' ');
end;
writeln(‘#’);
end.
1. Tuliskan output dari program pseudocode tersebut jika input n = 11 dan k = 3?
(OSP 2015)

z := 0;
while (x > y) do begin
z := z + x;
z := z - y;
x := x - 2;
y := y - 1;
end;
writeln(z);
2. Tuliskan output dari program pseudo code tersebut jika input x = 20 dan y = 14
(OSP 2015)

a:=2;
b:=3;
for i:=p to q do
begin
b:=i*(a+b);
end;
3. Apabila rumus pada baris ke-5 program di atas diubah menjadi b:=a*(a+b) dan nilai b
setelah program dijalankan adalah 108, maka berapa nilai q-p?
4. Apabila diketahui p=3 dan nilai b setelah program dijalankan adalah 350, maka berapa
nilai q pada saat inisialisasi?
(OSP 2012)

var i,j:longint;
begin
for j:=1 to 15 do
for i:=1 to 16-j do
if (i mod j=0) then writeln(‘*’);
end.
5. Jika program di atas dijalankan, maka banyaknya bintang yang akan ditampilkan ke
layar adalah ...
6. Jika ’16-j’ diubah menjadi 16, maka banyaknya bintang yang akan ditampilkan ke layar
adalah ...
(OSP 2012)

hitung:=0;
n:=10;
for i:=1 to n do
if (i mod 2 = 0) then
for j:=1 to 10 do
if (j mod 2 = 0) then
hitung := hitung + j
else
hitung := hitung + i;
writeln(hitung);
7. Apakah output yang tampil di layar?
8. Jika kode di baris ke 2 diganti dengan
n:=1000;
Apakah output yang tampil di layar?
(OSP 2011)

for i:=1 to n do
begin
for k:=i to n-1 do write(' ');
for j:=1 to (2*i-1) do
if (i=n) or (i mod 2=1) then write('*')
else if j mod 2=1 then write('*')
else write('0');
writeln;
end;
for l:=n downto 2 do
begin
for m:=l to n do write(' ');
for o:=(2*l-1) downto 3 do
if o mod 2=1 then write('*')
else write('0');
writeln;
end;
9. Apabila diberi masukan n=7, maka berapakah banyaknya ‘*’ yang dicetak pada layar?
(OSP 2013)

var i,j,x: integer;


begin
x := 0;
for i:=1 to 5 do begin
for j:= 5 downto 1 do begin
x := x + i + j;
end;
end;
writeln(x);
end.
10. Apakah keluaran dari program di atas?
(OSP 2013)

var
i,j,x,baa:longint;
begin
x:=0;
baa:=10;
for i:=1 to baa do begin
for j:= 1 to i do begin
if i mod 2=1 then
x:=x-j
else
x:=x+j;
end;
end;
writeln(x);
end.
11. Apakah keluaran dari program di atas?
12. Jika nilai baa pada awalnya diganti menjadi baa:=1000; maka keluaran program
menjadi?
(OSP 2014)

var aku,sayang,kamu:integer;
begin
aku:=1;
sayang:=0;
kamu:=1;
while (sayang<=100) do
begin
aku:=aku+kamu;
inc(sayang);
inc(kamu); inc(kamu);
end;
writeln(aku);
end.
13. Apakah output yang akan dihasilkan?
(OSP 2014)

i := 1;
while i <= n do
begin
j := 1;
while j <= n do
begin
writeln('*');
j := j * 10
end;
i := i * 2;
end;
14. Berapa kali karakter „*‟ dituliskan untuk n = 1000?
Tujuan dari algoritma ini adalah mencetak deret bilangan: 1, 2, 5, 10, 17, 26, 37, dan
seterusnya selama
hingga pertama kali mencetak angka yang > 1000.
i := 1;
j := 1;
while (i <= 1000) do
begin
writeln(i);
............ // perintah yang hilang
j := j + 2;
end;
writeln(i);
15. Agar algoritma bekerja sesuai dengan yang diharapkan, perintah apakah yang harus
dituliskan di bagian . .” ............ // perintah yang hilang”.
16. Bila pada ekspresi pemeriksaan kondisi loop-while (perintah “while (i <= 1000) do”)
variable I diganti dengan pemeriksaan variabel j menjadi “while (j <= M) do” berapakah
harga yang terkecil yang mungkin untuk menggantikan M agar algoritma bekerja secara
identik?
17. Bila angka 1000 pada ekspresi pemeriksaan kondisi loop-while (perintah “while (i <=
1000) do”) diganti dengan angka 10000, berapakah angka yang akan dicetak oleh
perintah “writeln(i)” pada baris terakhir?
18. Bila angka yang terakhir dicetak diharapkan adalah angka terbesar yang lebih kecil dari
500, maka angka ke berapakah itu dalam deret yang dicetak (catatan: yang pertama
adalah 1, kedua adalah 2, dst)?
(OSP 2010)

for i := 1 to 20 do
begin
j := 0;
while (j<13) do
begin
j := j + (i mod 5) + 1;
end;
end;
19. Banyaknya karakter '*' yang dicetak ke layar adalah ...
(OSN 2008 sesi 1)

i := 1;
while i < n do begin
j := n;
while j > 0 do begin
if (j mod 2) = 1 then write('*');
j := j div 2;
end;
i := i + 2;
end;
20. Jika banyaknya '*' yang dicetak adalah 104, berapakah n harus diberi harga?
(OSN 2008 sesi 1)

Anda mungkin juga menyukai