Anda di halaman 1dari 66

Kumpulan Soal UTS

Algoritma dan
Pemrograman
1. Berapakah hasil ekspresi : 10 div 40 mod 60 / 5 – 3 / 3 = ……, dengan tipe …………

(UTS 2008-2009)

2. Jika a,b,c bertipe integer , dengan input : 1 2 3 4 5 6. Perhatikan potongan program ini :

read(a,b);
c:= a mod b div c + a - b;
if a > c then c := c div b else c:= a mod b;
read(a,b,c); c:=b-a;

Maka nilai akhir variabel a,b dan c adalah : …,…,…


(UTS 2008-2009)

3. Sebuah program memiliki deklarasi untuk penulisan konstanta dengan nama tetap dan tipe
jurusan, dengan nilai TE; deklarasi tipe enumerasi jurusan dengan nilai TE,TI dan IF
(bukan string), dan variabel bertipe jurusan dengan nama jur. Tulis deklarasi tersebut dalam
notasi algoritma !
(UTS 2008-2009)

4. Perhatikan program berikut :


program uts1;
var a,c : integer;
begin
readln(a);
while a < 0 do
begin
a:=a-1;
write(1/a:2:2,’ ’);
end;
end.

Jika input adalah 3, keluaran program tersebut adalah : ........,…….,…….


(UTS 2008-2009)

5. Tulis output untuk potongan program dibawah ini:


for i:=1 to 3 do
for j:=1 to i do begin
write(j);
writeln;
end;

(UTS 2008-2009)

6. Tulis keluaran algoritma sebagai berikut, jika masukan adalah 1 2 3 4:


input(a,b)
depend on a
a=1 : if a<2 then
Input (a,b)
Output(a,b)
a>1 : if a>2 then
depend on b
b=2 : output (b,a)
b>2 : output (b+1,a+1)
b<2 : output (b-1,a-1)
a<1 : output(a*b,b/a)

Keluaran : ………………….
(UTS 2008-2009)

7. Lingkari penyebab kesalahan pada potongan program pascal berikut:


var a: integer;
b: real;
c: boolean;
begin
if a then
case b of
10..20 : writeln('A');
1..9 : writeln('B');
else if c then writeln ('C');
end
else
if b>a then
if a and c then writeln('D');
else
case c of
true : writeln('E');
false: writeln('F');
end;
end.

Jumlah kesalahan ( bukan jumlah baris kesalahan ) adalah: ..................


(UTS 2008-2009)

8. Terdapat program dibawah ini :


Program APAADANYA;
Const N=3;
Var kata, kiti: string;
i : integer;

Procedure APA(a:integer ;var b:integer);

begin
If (a div b)=1 then b:=1
Else if (a mod b)=0 then b:=2
Else b:=3;
End;
begin
write(‘Masukkan kata ’);
readln(kata);
for i:=1 to N do
begin
APA(i, kata);
writeln(kata);
end;
end.
Jika masukan program diatas adalah 3, maka keluarannya adalah :

(UTS 2008-2009)

9. Syarat agar pemanggilan benar/valid untuk prosedur dengan jenis parameter input/output :

A. Parameter aktual adalah sebuah ………………………………...

B. Tipe parameter...............................................................................

C. Isi parameter aktual..…………………………………..

(UTS 2008-2009)

10. Tulis deklarasi prosedur dalam notasi algoritmik dengan nama Fungsi, dengan parameter A
dan B bertipe integer. Parameter A ketika dipanggil boleh berisi konstanta, parameter B
harus variabel yang boleh tidak terdefinisi.

………………………………………………………………………………..
(UTS 2008-2009)

11. Ada beberapa menu di warung : batagar dengan harga 1000, soto 2000, dan bakso 3000.
Batagor ada 2 macam, kuah dan kering. masukan adalah harga. Jika memilih batagor, ada
masukan tambahan jenisnya, yaitu „kuah‟ atau „kering‟. Tulis notasi algoritma untuk output
pilihan menu yang akan terhidang. Cukup bagian algoritma saja, dan gunakan jenis analisa
kasus yang paling efisien !

(UTS 2008-2009)
12 Buat fungsi dalam pascal dengan nama Fak yang menghasilkan nilai faktorial sebuah
bilangan N.
{ Header / judul untuk deklarasi fungsi }

................................................................................................................................

{Deklarasi variabel, jika perlu}

{Bagian implementasi algoritma/instruksi untuk fungsi }


Begin

............................... { Inisialisasi}

For ……...........................do ……………………………………….; { Perhitungan }

……………………………………. { Pengisian nilai fungsi}


End;

(UTS 2008-2009)

13. Misal diketahui sebuah program sebagai berikut :


Program AnalisaKasus1;
Var x,y:integer;
begin
readln(y); x:=2;
if x<y then begin
y:=y+2; X:=7+y;
end;
if y+1>x then
y:=y+2*x
else
y:=y-2*x;
writeln(y);
End.
Jika input dari program tersebut adalah y = 7, maka nilai y akhir (output) adalah ....

A. 9 B. 41 C. – 41 D. -23 E.Tidak ada jawaban benar

(UTS 2008-2009)

14. Misal diketahui sebuah program sebagai berikut :


Program AnalisaKasus2;
Var x:integer;
begin
readln(x); if x>=80 then x:=x-30;
if x>=70 then x:=x-10
Else if x>=65 then x:=x-5;
if x<=70 then x:=x-10;
writeln(x);
end.
Jika input dari program tersebut adalah x = 82, maka nilai x akhir (output) adalah ....
A. 52 B.-52 C. 42 D. 47 E. Tidak ada yang benar

(UTS 2008-2009)

15. Misal diketahui sebuah program sebagai berikut :


Program AnalisaKasus3;
var
a : real; b :integer; c,d:boolean;
begin
a:= sqrt(10); b:= 3;
c:= false and (10 mod b=0);
d:= a<3;
if ............... then
writeln('hasilnya ini')
else
writeln('hasilnya itu');
end.

Agar output dari program tersebut adalah „hasilnya ini‟, maka statemen kondisi pada
tempat yang bertanda titik-titik (……) seharusnya:

A. d and c B. not(d) and c C. not(d and not(c)) D. d or c


E. Tidak ada yang benar

(UTS 2008-2009)

16. Statement pascal yang benar berikut ini adalah:


A. if a=(c>d) then if a>d then a:=a+1 else a:=a-1 else true;
B. if (x<=y)=true then else if y>x then y:=x-1; else y:=x+1;
C. if x=true then if y=true then if x=y then y:=x else x:=y;
D. if (b<>c)=false then begin a:=b*c; b:=100; end else a:=c else
c:=b;
E. if (v>=c) then v:=false else begin c:=c+1; d:=d+1; end;

(UTS 2008-2009)

17 Case a of, dapat diikuti statement dibawah ini ( hasil tidak error ):
. A. ‘A’ .. ‘Z’: writeln(‘UTS Prokom’); a:=’ch’;
B. ‘1’ .. ‘F’ : writeln(‘UTS Prokom’); ‘A’ .. ‘C’: x:=x+1;end;
C. 1,2,3,4,5,6,7,8,9,a,b,c,d,e,f : writeln(‘hexadesimal’);end;
D. else writeln (‘END of TEXT’); end;

E. c : x:=x*y else end;

(UTS 2008-2009)

18. Berapakah hasil ekspresi : 10 + 40 mod 6 * 5 – 3


A 27 B.7 C.17 D. 23 E.4

(UTS 2008-2009)

19. Jika a,b,c bertipe integer , dengan input sbb : 1 2 3 4 5 6. Hasil dari potongan program di
bawah ini
read(a,b); b:=a-b;
read(a,b,c); c:=a-b;

Maka nilai akhir variabel a,b dan c adalah :


A. Blank B. 1, ,  C. 1, , a D. 1, a, 1 E. a, b,

(UTS 2008-2009)

20. Manakah urutan deklarasi yang benar :


A. const tetap=TE;
type jurusan=(TE,TI,CS);
var a,b,c : integer;

B. type jurusan=(TE,TI,CS);
const tetap=TE;
var a,b,c : integer;

C. const tetap=TE;
var a,b,c : integer;
type jurusan=(TE,TI,CS);

D. var a,b,c : integer;


const tetap=TE;
type jurusan=(TE,TI,CS);

E Tidak ada jawaban yang benar

(UTS 2008-2009)

21. Diketahui program pascal sebagai berikut:


uses crt;
var a,b:integer;
begin
readln(a,b);
case a of
1 : if a=2 then writeln('A');
2 : if a=2 then
case b of
1 : begin
a:=1;
writeln('B');
end;
2 : writeln('C');
else writeln('D');
end;
else writeln('E');
end;
readln;
end.

Jika program dijalankan dua kali, masing-masing dengan menginputkan “1 2“ kemudian


“2 1” (data dipisahkan dengan spasi), maka output string yang dihasilkan oleh masing-
masing eksekusi adalah:
A. „A‟
„B‟
B.
„B‟
C. „A‟

D. „A‟
„D‟
E
„E‟

(UTS 2008-2009)

22. Perhatikan Listing Program Pascal berikut ini :


01: Var i, j, k : Integer;
02: Begin
03: i := 10;
04: j := 13;
05: k := i + 5;
06: If i < j Then
07: Begin
08: j := 10;
09: i := 13;
10: End
11: Else
12: Begin
13: j := k;
14: k := i;
15: i := j;
16: End;
17: End.
Berapakah nilai akhir dari variable i, j, dan k ?
A. 10, 13, dan 15
B. 15, 13, dan 10
C. 10, 15, dan 13
D. 13, 15, dan 10
E 13, 10, dan 15

(UTS 2008-2009)

23. Berapakah hasil ekspresi ; 10 + 40 mod 6 * 5 – 3


A. 27
B. 7
C. 17
D. 23
E 4
(UTS 2005 – 2006)

24. Jika ch1,ch2 dan ch3 bertipe karakter , dengan urutan pembacaan data sbb :
1
ab
1.2

dan data di atas merupakan masukan untuk program di bawah ini


program uts1;
var a,b,c : char;
begin
read(a,b,c);
read(a,b,c);
writeln(a,' - ',b,' - ',c);
readln;
end.

Maka nilai akhir variabel a,b dan c adalah :


A. Blank
B. 1, , 
C. 1, , a
D. 1, a, 1
E a, b,
(UTS 2005 – 2006)

Manakah urutan deklarasi yang benar :


A. const tetap=TE;
25. type jurusan=(TE,TI,CS);
var a,b,c : integer;

B. type jurusan=(TE,TI,CS);
const tetap=TE;
var a,b,c : integer;
C. const tetap=TE;
var a,b,c : integer;
type jurusan=(TE,TI,CS);

D. var a,b,c : integer;


const tetap=TE;
type jurusan=(TE,TI,CS);

E Tidak ada jawaban yang benar


(UTS 2005 – 2006)

26. Jika diberikan inputan a:= 3


program uts1;
var a,c : integer;
begin
readln(a);
a:=abs(a);
while a <> 0 do
begin
a:=a-1;
writeln(1/a);
end;
readln;
end.
Maka pernyataan yang benar adalah :
A. Tidak berhasil di-compile
B. Berhasil di-compile tapi runtime error
C. Akan menghasilkan output : ½, 1
D. Tidak menghasilkan sembarang output
E Tidak ada pernyataan yang benar
(UTS 2005 – 2006)

27. Manakah pernyataan yang benar untuk program dibawah :


program uts4;
uses crt;
var i,j : integer;
begin
clrscr;
for i:=1 to 3 do
for j:=1 to i do
write('*');
readln;
end.

A. *
**
***

B. ***
**
*
C. *
*
*
D. ***
***
***
E ******
(UTS 2005 – 2006)

28. Diketahui program pascal sebagai berikut:


uses crt;
var a,b:integer;
begin
readln(a,b);
case a of
1 : if a=2 then writeln('A');
2 : if a=2 then
case b of
1 : begin
a:=1;
writeln('B');
end;
2 : writeln('C');
else writeln('D');
end;
else writeln('E');
end;
readln;
end.

Jika program dijalankan dua kali, masing-masing dengan menginputkan “1 2“ kemudian


“2 1” (data dipisahkan dengan spasi), maka output string yang dihasilkan oleh masing-
masing eksekusi adalah:
A. „A‟
„B‟
B.
„B‟
C. „A‟

D. „A‟
„D‟
E
„E‟
(UTS 2005 – 2006)
29. Teliti dengan cermat potongan program pascal berikut:
1 var a: integer;
2 b: real;
3 c: boolean;
4 begin
5 if a then
6 case b of
7 10..20 : writeln('A');
8 1..9 : writeln('B');
9 else if c then writeln ('C');
10 end;
11 else
12 if b>10 then
13 if a and c then writeln('D');
14 else
15 case c of
16 true : writeln('E');
17 false: writeln('F');
18 end;
19 end.
Berdasarkan analisis anda, jumlah baris perintah yang salah adalah:
A. 8
B. 7
C. 6
D. 5
E 4
(UTS 2005 – 2006)

30. Berikut penulisan case .. of yang benar adalah


A. case X of
begin
1: if Y then Y:=Z;
else Y:=X;
end;

B. case X of
case Y of
1: if Y then Y:=Z; else Y:=X;
end;
end;

C. Case X of
1: case Y of
100:writeln(‘X’);
end;
else end;

D. case X of
case Y of end;
if Y then end;
end;

E case beginX of 1:case Y of else end;


2: writeln(‘D’);
End;
(UTS 2005 – 2006)

31. Notasi Pengulangan yang menghasilkan keluaran sejumlah N:


A. For i := 1 to N
write(i);

B. Repeat
write(i);
until n<I;
C. Repeat
write(i);
until I >N;

D. While I<=N do
write(i);

E I:=1
while I<=N do
write(i);

(UTS 2005 – 2006)

32. Terdapat program dibawah ini:


Program APAADANYA;

Procedure APA(a:string ;var b:string);

begin
If a=’Satu’ then b=’APA’
Else if a=’dua’ then b=’APA-APAAN’
Else b=’APAADANYA’;
End;

{Variabel GLOBAL}
Const N=3;
Var kata, kiti: string;
i : integer;

begin
write(‘Masukkan kata satu, dua atau yang lain:’);
readln(kata);
for i:=1 to N do
begin
APA(kata, kiti);
write(kiti);
end;

end.

Berdasar program di atas, pilih yang jawaban sesuai:


A. Jika kata=‟satu‟ maka keluaran= satusatusatu
B. Jika kiti=‟APA‟ maka Keluaran=APAADANYAAPAADANYAAPAADANYA
C. Jika kata=‟dua‟ maka keluaran=APA-APAANAPA-APAANAPA-APAAN
D. Jika kata=‟dua‟ maka keluaran=duaduadua;
E Jika kata=‟APA‟ maka keluaran=APA-APAANAPA-APAANAPA-APAAN
(UTS 2005 – 2006)

33. Berdasarkan program APAADANYA pada soal di atas (sebelumnya), bila write(kiti)
diubah write(kata) dalam bagian looping , maka jawaban yang sesuai adalah:
A. Jika kata=‟satu‟ maka keluaran= satusatusatu
B. Jika kiti=‟APA‟ maka Keluaran=APAADANYAAPAADANYAAPAADANYA
C. Jika kata=‟dua‟ maka keluaran=APA-APAANAPA-APAANAPA-APAAN
D. Jika kata=‟tiga‟ maka keluaran=APAADANYAAPAADANYAAPAADANYA;
E Jika kata=‟APA‟ maka keluaran=APA-APAANAPA-APAANAPA-APAAN
(UTS 2005 – 2006)

34. Perhatikan Listing Program Pascal berikut ini :


01: Var a, b, c : Integer;
02: Begin
03: c = 42;
04: a := 90;
05: b := Z;
06: If a := b Then
07: Begin
08: Writeln(‘Sama’);
09: a := ‘Z’;
10: End;
11: Else
12: Begin
13: Writeln(‘Tidak Sama);
14: a := ‘A’;
15: End;
16: End;

Pada baris keberapakah terjadi kesalahan penulisan statement ?


A. 15, 13, 01, 03, 08, 02, 06, 14, dan 10
B. 16, 09, 14, 06, 04, 03, 13, 05, dan 10
C. 11, 03, 01, 08, 04, 02, 06, 15, dan 16
D. 13, 16, 08, 03, 09, 05, 06, 07, dan 10
E 05, 13, 07, 02, 08, 06, 09, 16, dan 11
(UTS 2005 – 2006)

35. Terdapat Bagian suatu program pascal sebagai berikut:


………
I:=4;
while I<=4 do
begin
for j:=1 to I do
write(i);
writeln;
I:=I+1;
end;
……….
Dari potongan program tersebut Tampilan yang mungkin adalah:
A. 4444
B. 1234
C. 1
12
123
1234
D. 1
22
333
4444
E 4
44
444
4444
(UTS 2005 – 2006)

36. Yang sesuai dengan “Parameter Passing By Reference”, ada pada penulisan Heading
program Prosedur/Fungsi:
A. Procedure A(s: string, a:integer)
B. Function C(s: string, a:integer) : integer
C. Procedure B(var s: string, a:integer)
D. Procedure (s: string, a:integer)
E Function E(s: string, a:integer) : integer
(UTS 2005 – 2006)

37. Berikut adalah deklarasi fungsi/prosedur yang benar..


A. PROCEDURE <nama>(daftar_parameter);
Bagian_deklarasi;
Bagian_penyataan;

B. FUNCTION<nama>(daftar_parameter);
Bagian_deklarasi;
Bagian_penyataan;

C. PROCEDURE<nama>(daftar_parameter):tipe;
Bagian_deklarasi;
Bagian_penyataan;

D. PROSEDUR<nama>(daftar_parameter);
Bagian_deklarasi;
Bagian_penyataan;

E FUNGSI<nama>(daftar_parameter):tipe;
Bagian_deklarasi;
Bagian_penyataan;
(UTS 2005 – 2006)
38. Telusuri program di bawah ini
VAR
A: integer;
Function X (D : integer, P: integer): integer;
VAR
A : integer ; B : integer;
BEGIN
B := 1
For A := 1 to P do
B := B * D;
X:=B;
END;
Procedure Y (I: integer, J: integer, var K: integer);
BEGIN
K:= X(I,J) * X(J,I);
END;
BEGIN
Y(5,3,A);
Write (‘A = ’,A);
END.

Keluaran dari program di atas adalah:


A. A = 25243
B. K = 30537
C. A = 30375
D. K = 12545
E Program error

(UTS 2005 – 2006)

39. Perhatikan Listing Program Pascal berikut ini :


18: Var i, j, k : Integer;
19: Begin
20: i := 10;
21: j := 13;
22: k := i + 5;
23: If i < j Then
24: Begin
25: j := 10;
26: i := 13;
27: End
28: Else
29: Begin
30: j := k;
31: k := i;
32: i := j;
33: End;
34: End.

Berapakah nilai akhir dari variable i, j, dan k ?


A. 10, 13, dan 15
B. 15, 13, dan 10
C. 10, 15, dan 13
D. 13, 15, dan 10
E 13, 10, dan 15
(UTS 2005 – 2006)

40. Perhatikan potongan program berikut ini :


01: {X dan Y adalah variable Integer}
02: X := 50;
03: Y := 25;
04: if (X > 25) And (Y < 25) then
05: if (X > 25) then
06: begin
07: Temporary := X;
08: X := Y;
09: Y := Temporary;
10: End;
11:
12: X := Y;
13: Y := X + Y;

Berapakah nilai akhir dari variable X, dan Y ?


A. 50, dan 25
B. 50, dan 50
C. 50, dan 100
D. 25, dan 50
E 25, dan 100
(UTS 2005 – 2006)

41. Terdapat program Pascal sebagai berikut:


Program XXX;
Var n:integer;

Procedure ANI(var a:integer);


Var I : integer;
Begin
For I:=1 to 3 do
A:=I;
A:=A+1;
End;

Begin
n:=1;
ANI(n);
End.

Dari Program XXX di atas, dengan melihat pemakaian procedure ANI, maka keluaran nilai
A akan muncul:
A. 4
B. 6
C. 3
D. 5
E 7
(UTS 2005 – 2006)

42. Dalam Program XXX (pada soal sebelumnya), bila heading Procedure ANI(var
a:integer) diubah Procedure ANI(a:integer), maka nilai n =

A. 1
B. 2
C. 3
D. 4
E 5
(UTS 2005 – 2006)

Algoritma di bawah ini untuk menjawab soal nomor 43 dan 44


Program cek1
Kamus
x,y : integer
Algoritma
input (x,y,x)
depend on (x,y)
x=1 : output(‘1’)
2<=x<=4 : depend on (y)
y=3 : output(‘2’)
x<y : output(‘3’)
x=y : output(‘4’)
y>x : output(‘5’)

43. Jika pengguna menginputkan x=3, y=3, dan x=5 maka output algoritma tersebut adalah:
A. 1 B. 2 C. 3 D. 4 E. 5 F. Semua jawaban salah
(UTS SP 2006 – 2007)

44. Jika pengguna menginputkan x=4,y=5, dan x=5 maka output algoritma tersebut adalah:
A. 1 B. 2 C. 3 D. 4 E. 5 F. Semua jawaban salah
(UTS SP 2006 – 2007)

45. Berkenaan dengan sejarah generasi komputer, manakah pernyataan yang salah :
A. Generasi pertama telah menggunakan bahasa mesin
B. Generasi kedua telah menggunakan bahasa assembly.
C. Generasi ketiga telah muncul mini komputer
D. Generasi keempat masih menggunakan integrated circuit
E Generasi kelima tidak lagi menggunakan bahasa tingkat tinggi
F. Semua pernyataan di atas adalah benar
(UTS SP 2006 – 2007)
46. Pernyataan yang benar berkenaan dengan paradigma pemrograman :
A. Procedural: A sequence of detailed instructions is provided to the computer
B. Procedural : Each object is an example drawn from a class of similar objects
C. OOP : no use of temporary variables to store intermediate results
D. Functional : A series of logical deductions from known facts
E A,B,C,D tidak ada yang benar
F. A,B,C,D tidak ada yang salah
(UTS SP 2006 – 2007)

47. Hal-hal yang benar berkenaan dengan pendefinisian type adalah sebagai berikut, kecuali :
A. Mendefinisikan nama type dalam judul ( harusnya kamus ! )
B. Mendefinisikan domain harga
C. Menentukan konvensi penulisan konstanta dengan type tersebut
D. Menentukan operator terhadap objek dengan type tersebut
E Semua pernyataan A,B,C,D benar
F. Semua pernyataan A,B,C,D salah
(UTS SP 2006 – 2007)

48. Statement yang di bawah ini akan menghasilkan nilai „Sum‟ yang sama untuk masukan
yang sama, jika nilai i sebelum pengulangan adalah 1 dan x=10, kecuali :
A. repeat D. while (i <= x) do
Sum  Sum+x i=i+1
i=i+1 Sum ← Sum + x
until (x=i)
B. i traversal [1..x] E Repeat x times
Sum  Sum+x Input (i)
Sum ← Sum + x
C. iterate F Tidak ada jawaban yang
Sum  Sum+x benar
stop (i=x)
i=i+1
(UTS SP 2006 – 2007)

49. Perhatikan program yang belum lengkap di bawah ini


Program JumlahBilX
{Menjumlahkan nilai-nilai x yang dibaca dari piranti keluaran)
Kamus
sum,i: integer
x : integer {bil integer yang dibaca, diakhiri dengan 9999}
Algoritma :
sum  0
input(x)
......
......
output(sum)
Program di atas membaca sekumpulan nilai integer lewat piranti masukan, dan
menjumlahkan nilainya. Pemasukan nilai integer diakhiri dengan 9999, dan jumlah bilangan
untuk kasus kosong = 0. Statement yang benar untuk melengkapi program di atas
(program juga benar untuk menangani kasus kosong) adalah
A. repeat D. while (X = 9999) do
sum  sum+x input(X)
input(x) Sum ← Sum + x
until (x=9999)
B. i traversal [1..x] E A,B,C,D tidak ada yang
sum  sum+x benar
input(x)
C. iterate F A,B,C,D tidak ada
sum  sum+x jawaban yang salah
stop (x=9999)
input(x)
(UTS SP 2006 – 2007)
50. Diberikan potongan program sebagai berikut :
Program ZZZ
Kamus
a,b,c:integer
Algoritma
a  5; b  10; c  1
while c < a do
c  a; a  b ; b  c
{akhir pengulangan}
output(a,b,c)
Dari notasi algoritma diatas maka harga yang disimpan oleh a,b,c adalah:
A. a = 5 ; b = 10 ; c = 1 D. a = 10 ; b = 5 ; c = 5
B. a = 10 ; b = 5 ; c = 10 E a = 5 ; b = 10 ; c = 5
C. a = 10 ; b = 5 ; c = 1 F. Tidak ada jawaban yang benar (10,5,10)
(UTS SP 2006 – 2007)

51. Di bawah ini yang merupakan program yang benar untuk menjumlahkan bilangan 2 + 4 + 6
+ 8 + 10 + …+ (n*2) adalah
A. Program Deret C. Program Deret
Kamus Kamus
i,sum : integer i,sum : integer
Algoritma Algoritma
input (n); i0 input(n); i0
sum0 sum0
while i<=(n*2) do while i<=(n*2) do
ii+2 ii+2
sum  sum+i if i mod 2=0 then
output(sum) sum  sum+i
output(sum)
B. Program Deret D. Program Deret
Kamus Kamus
i,sum : integer i,sum : integer
Algoritma Algoritma
Input(n);i1 i0
sum0 sum0
while i<(n*2)+1 do while i<n do
if i mod 2=0 then ii+1
sum  sum+i sum  sum+i*2
ii+1 output(sum)
output(sum)
E A,B,C,D tidak ada yang benar F. A,B,C,D tidak ada yang salah

(UTS SP 2006 – 2007)

52. Berikut adalah pernyataan yang benar mengenai variabel lokal dan global.
A. Variabel global adalah variabel yang terdapat pada deklarasi fungsi atau prosedur.
B. Variabel lokal diakui di seluruh bagian program.
C. Parameter yang terdapat pada pendeklarasian subprogram termasuk variable global.
D. Variabel yang ada pada deklarasi prosedur dapat diolah pada program utama.
E. Variabel global yang memiliki nama yang sama dengan variabel lokal tidak dapat
diolah pada fungsi yang mendeklarasikan variabel lokal tersebut.
F. Semua pernyataan salah
(UTS SP 2006 – 2007)

53. Perhatikan Program di bawah ini


Program Misteri
Kamus
x,n,m:integer;
Algoritma
m  0
n  0
repeat
input(x)
if x mod 2 <> 0 then
m  m+1
x  x+1
until x=6
output(m)

Jika nilai-nilai x yang akan diinputkan adalah 2,3,5,7,10,1. Maka nilai yang dicetak oleh
program di atas adalah :
A. 16 B. 12 C. 4 D. 6 E. 2 F. Tdk ada yg benar
(UTS SP 2006 – 2007)

54. Manakah pernyataan yang benar mengenai notasi pengulangan


A. Proses pengulangan pada repeat-until akan dihentikan bila kondisi pengecekan
bernilai false
B. Proses pengulangan pada iterate-stop akan tetap dijalankan bila kondisi
pengecekan bernilai false
C. Proses pengulangan pada while-do akan dihentikan bila kondisi pengecekan
bernilai true
D. Proses pengulangan pada repeat x times akan dihentikan bila kondisi
pengulangan telah dilakukan sebanyak n kali.
E. Proses pengulangan pada n traversal [1..x] akan dihentikan bila kondisi
pengulangan telah dilakukan sebanyak n kali.
F Semua jawaban di atas salah
(UTS SP 2006 – 2007)

55. Berikut adalah pernyataan yang benar mengenai parameter, kecuali:.


A. Parameter aktual adalah nama atau nilai yang dipakai ketika prosedur dipanggil
B. Parameter formal adalah list nama variabel pada saat mendefinisikan prosedur.
C. Parameter aktual harus berupa nama jika tipe parameter output yang digunakan
D. Saat pemanggilan, parameter aktual yg bersifat output tak perlu didefinisikan nilainya
E. Parameter formal harus dideklarasikan dalam 2 jenis, sebagai input atau output.
F Semua pernyataan di atas benar
(UTS SP 2006 – 2007)

56. Telusuri algoritma program di bawah ini


PROGRAM UTS_gitu_loh

KAMUS:
A: integer
Function X (D,P:integer) integer
Function Y(I,J:integer)integer
ALGORITMA:
A2
Output(A,’=’,Y(A,3))

Function X (P,D:integer) integer


{Pre-condition: D dan P terdefinisi}
KAMUS LOKAL
A, B : integer

Algoritma:
B  0
A traversal[0..D]
B  B + P
 B
Function Y(I,J:integer)integer
{Pre-condition: I dan J terdefinisi}
Kamus Lokal

Algoritma:
 X(I,J) + X(J,I)

Keluaran dari program di atas adalah:


A. A = 16 B. 2 = 17 C. A = 18 D. Y = 19 E. A = 20 F. Tdk ada yg benar

(UTS SP 2006 – 2007)


57. Perhatikan program berikut ini :

Program undefined
Kamus
one,two,three : integer

Procedure defined (Input one : integer;


Input/output two : Integer;
output three : integer)

Algoritma
one  5; two  10; three  5
defined(three,two,one)

Procedure defined (Input one : integer;


Input/output two : Integer;
output three : integer)
Kamus Lokal
Algoritma
one  2 * one + two
two  one + two * 2
three  one + two

Berapakah nilai one,two,three sebelum dan setelah memanggil procedure


defined ?
A. 5, 10, 5 & 10, 20, 60 D 5,10, 0 & 60, 40, 20
B. 5,10,5 & 5, 60, 40 E 5,10, 5 & 60, 40, 5
C. 5, 10,0 & 20, 40, 60 F Semua Jawaban Salah

(UTS SP 2006 – 2007)

Algoritma di bawah ini untuk menjawab soal nomor 58-59


1 Program cari_maks
2 { I.S : menerima masukan 4 buah bilangan
3 F.S : Menampilkan bilangan terbesar dari keempat bilangan tersebut}
4 Kamus
5 dat1,dat2,dat3,dat4,big : integer
6 Algoritma
7 Input(dat1,dat2,dat3,dat4)
8 if (dat1>dat2)and (dat1>dat3) and (dat1>dat4) then
9 bigdat1
10 Else
11 if (dat2>dat1)and (dat2>dat3) and (dat2>dat4) then
12 bigdat2
13 else if (dat3>dat1)and (dat3>dat2) and (dat3>dat4) then
14 bigdat3
15 else
16 bigdat4
17 output big
58. Jika program diberikan input dat1=7, dat2=10, dat3=6, dat4=9 , maka urutan proses eksekusi
program menjadi :
A. 7-8-10-11-13-14-17 D. 7-8-10-11-13-15-16-17
B. 7-8-10-11-12-17 E. 7-8-10-13-14-17
C. 7-8-10-11-13-14-17 F. Tidak ada yg benar

(UTS SP 2006 – 2007)

59 Jika program diberikan input dat1=2, dat2=3, dat3=4, dat4=5 , maka nilai big setelah
eksekusi program menjadi :
A. 2 D. 5
B. 3 E. 0
C. 4 F. Tidak ada yg benar
(UTS SP 2006 – 2007)

60. Perhatikan program di bawah ini


Program allAboutBoolean
Kamus
X, Y, Z : Boolean
A : integer
Algoritma
Input(a)
X  False
Z  ( (3 + (5 div 2) ) = 5)
Y  a <= 0
If (X and Y or Y xor Z) then
Output (‘Terpenuhi’)
Else If (X and Y or Y and not Z)
Output (‘Tidak Terpenuhi’)
Output (‘ Ya’)
Jika nilai input a= -1, apa yang akan dioutputkan oleh program di atas?
A. Terpenuhi D. Tidak Terpenuhi Ya
B. Terpenuhi Ya E. Ya
C. Tidak Terpenuhi F. Tidak ada jawaban yang benar.
(UTS SP 2006 – 2007)

61. Perhatikan program di bawah ini


Program Apaapaan
Kamus
X, Y, Z : integer
A : integer
Algoritma
Input(X)
Y  1; Z  1
While Z <=X do
Y Y*Z
Z Z+1
Output (Y)

A. Program tersebut untuk menghitung deret 1 2 3 4…


B. Program tersebut untuk menghitung deret 1 -2 3 -4…
C. Program tersebut untuk menghitung deret 1 1 2 3 5…
D. Program tersebut untuk menghitung nilai faktorial
E. Program tersebut untuk menghitung deret nilai sinus
F Tidak ada jawaban yang benar.
(UTS SP 2006 – 2007)

62. Ekspresi berikut akan menghasilan nilai yang sama, kecuali :.


A. A  ( 15 div 2 mod 5 ) + ( 10 / 2 )
B. A  ( 15 div 2 mod 5 / 2 > 2,5 )
C. A  ( 15 div 2 mod 5 / 2 ) or ( true EQ true )
D. A  ( 1,5 div 1,5 * 5 = 5 ) or ( true xor true )
E. A  ( 15 div 2 mod 5 / 2 div 2 )
F Semua pernyataan di atas benar
(UTS SP 2006 – 2007)

Algoritma di bawah ini untuk menjawab soal nomor 63 dan 64


Program cek1
Kamus
x,y : integer
Algoritma
input (x,y)
depend on (x,y)
x=1 : output(‘1’)
2<=x<=4 : depend on (y)
y=3 : output(‘2’)
x<y : output(‘3’)
x=y : output(‘4’)
y>=x : output(‘5’)

63. Jika pengguna menginputkan x=3 dan y=3, maka output algoritma tersebut adalah:
A. 1 B. 2 C. 3 D. 4 E 5
(UTS 2006 – 2007)

64. Jika pengguna menginputkan x=4 dan y=5, maka output algoritma tersebut adalah:
A. 1 B. 2 C. 3 D. 4 E 5
(UTS 2006 – 2007)

Algoritma di bawah ini untuk menjawab soal nomor 65 dan 66


Program cek2
Kamus
a,b,c : integer
Algoritma
input (a,b,c)
depend on (a,b)
a=1 : output(‘abc’)
a<=10 : if a<b then
depend on (c)
c=<3 : output(‘bac’)
c>b : output(‘cab’)
b=10 : output(‘acb’)
a>c : if a<b then if c=5 then output(‘cba’)
else output(‘acb’)
else output(‘abc’)

65. Jika pengguna menginputkan a=2, b=5 dan c=6, maka output algoritma tersebut adalah:
A. abc B. bac C. cab D. cba E. acb
(UTS 2006 – 2007)

66 Jika pengguna menginputkan a=2, b=1 dan c=1, maka output algoritma tersebut adalah:
A. abc B. bac C. cab D. cba E. acb
(UTS 2006 – 2007)

67. Berdasarkan algoritma dibawah ini: (BONUS)


Program cek3
Kamus
a,b,c : integer
Algoritma
input (a,b,c)
depend on (a,b)
a=1 : depend on (a,b)
b=1 :output(‘1’)
a<=10 : depend on (a,b)
b<=10 :output(‘2’)
a>10 : depend on (a,b)
b>10 :output(‘3’)
Maka analisis yang paling tepat untuk algoritma tersebut adalah:
A. Algoritma sudah tepat
B. Algoritma tidak mempunyai kesalahan, hanya variabel c dapat dihapus
C. Algoritma perlu disederhanakan, cukup dilakukan depend on satu kali
D. Algoritma benar, cukup menggunakan 1 variabel
E Algoritma tidak salah, hanya perlu dipikirkan pemanfaatan variabel c
(UTS 2006 – 2007)

68. Perhatikan program yang belum lengkap di bawah ini


Program JumlahBilX
{Menjumlahkan nilai-nilai x yang dibaca dari piranti keluaran)
Kamus
i: integer
x : integer {sekumpulan bilangan integer yang dibaca,
diakhiri dengan 9999}
sum : integer
Algoritma :
sum  0
input(x)
......
......
output(sum)

Program di atas membaca sekumpulan nilai integer yang diketikkan lewat piranti masukan,
dan menjumlahkan nilainya. Pemasukan nilai integer diakhiri dengan 9999
Dengan spesifikasi tambahan :
- jumlah bilangan untuk kasus kosong = 0

Statement yang benar untuk melengkapi program di atas (program juga benar untuk
menangani kasus kosong) adalah
A. repeat D. while (X ≠ 9999) do
sum  sum+x Sum ← Sum + x
input(x) input(X)
until (x=9999)
B. repeat E while (X ≠ 9999) do
sum  sum+i Sum ← Sum + x
input(x)
until (x=9999)
C. repeat
sum  sum+1
input(x)
until (x=9999)
(UTS 2006 – 2007)

69. Diberikan potongan program sebagai berikut :


Program ZZZ
Kamus
a,b,c:integer
Algoritma
a  5
b  10
c  1
while c < b do
c  a
a  b
b  c
{akhir pengulangan}
output(a,b,c)
Dari notasi algoritma diatas maka harga yang disimpan oleh a,b,c adalah:
A. a = 5 ; b = 10 ; c = 1
B. a = 5 ; b = 10 ; c = 10
C. a = 10 ; b = 5 ; c = 1
D. a = 10 ; b = 5 ; c = 5
E a = 5 ; b = 10 ; c = 5
(UTS 2006 – 2007)

70. Di bawah ini yang merupakan program yang benar untuk menjumlahkan bilangan 2 + 4 + 6
+ 8 + 10 adalah
A. Program Deret C. Program Deret
Kamus Kamus
i,sum : integer i,sum : integer
Algoritma Algoritma
i0 i1
sum0 sum0
while i<=10 do while i<=10 do
ii+2 if i mod 2=0 then
sum  sum+1 sum  sum+i
output(sum) ii+2
output(sum)

B. Program Deret D. Program Deret


Kamus Kamus
i,sum : integer i,sum : integer
Algoritma Algoritma
i0 i0
sum0 sum0
while i<=11 do while i<10 do
if i mod 2=0 then ii+2
sum  sum+i sum  sum+i
ii+1 output(sum)
output(sum)
E Tidak ada jawaban yang benar (UTS 2006 – 2007)

71. Perhatikan Program di bawah ini


Program Misteri
Kamus
x,n,m:integer;
Algoritma
m  0
n  0
repeat
input(x)
if x mod 2 <> 0 then
m  m+1
n  n+1
until n=6
output(m)

Jika nilai-nilai x yang diinputkan adalah 2,3,5,7,10,1. Maka nilai yang dicetak oleh program
di atas adalah :
A. 16 B. 12 C. 4 D. 6 E. 2
(UTS 2006 – 2007)

72. Manakah pernyataan yang salah mengenai notasi pengulangan


A. Proses pengulang pada repeat-until akan dihentikan bila kondisi pengecekan
bernilai false
B. Proses pengulang pada iterate-stop akan tetap dijalankan bila kondisi
pengecekan bernilai false
C. Proses pengulang pada while-do akan dihentikan bila kondisi pengecekan bernilai
true
D. Proses pengulang pada iterate-stop akan dihentikan bila kondisi pengecekan
bernilai true
E Semua jawaban di atas salah
(UTS 2006 – 2007)

73. Telusuri algoritma program di bawah ini


PROGRAM UTS_gitu_loh
{I.S: sembarang
F.S: menampilkan suatu bilangan hasil perhitungan}
KAMUS:
A: integer
Function X (D,P:integer) integer
Function Y(I,J:integer)integer

ALGORITMA:
Output(‘A=’,Y(2,3))
{Definisi function dan procedure}
Function X (D,P:integer) integer
{Pre-condition: D dan P terdefinisi}
KAMUS LOKAL
A, B : integer

Algoritma:
B  0
A traversal[1..P]
B  B + D
 B

Function Y(I,J:integer)integer
{Pre-condition: I dan J terdefinisi}
Kamus Lokal

Algoritma:
 X(I,J) * X(J,I)

Keluaran dari program di atas adalah:


A. A = 32 B. Y = 36 C. A = 36 D. Y = 216 E. A = 216

(UTS 2006 – 2007)

74. Berikut adalah pernyataan yang benar mengenai parameter formal dan aktual..
A. Parameter formal adalah parameter yang terdapat pada pada pemanggilan fungsi atau
prosedur, sedangkan parameter aktual adalah parameter pendeklarasian judul
subprogram.
B. Parameter formal diakui di seluruh bagian program, sedangkan parameter aktual hanya
berlaku di subprogram saja.
C. Parameter formal adalah parameter yang terdapat pada pendeklarasian judul
subprogram, sedangkan parameter aktual adalah parameter pada pemanggilan fungsi
atau prosedur.
D. Parameter formal dapat bertindak sebagai variabel input dan output, sedangkan
parameter aktual hanya bertindak sebagai variabel input saja
E Semua jawaban salah
(UTS 2006 – 2007)

75. Telusuri algoritma program di bawah ini


PROGRAM UTS_kaleee
{IS: meminta inputan bilangan
FS: menampilkan hasil berupa bilangan dan string}
KAMUS:
X,Y: integer
Z : string
Function inttostr(angka:integer)  string
{mengkonversi nilai integer menjadi string}
Procedure doy(input I,J:integer,output K:string)
Procedure dyo(input I,J:integer,output K:integer)
Function test (X:integer) boolean
Function text (X,Y:integer) string

ALGORITMA:
Input(X,Y);
If test(Y) then
Doy(X,Y,Z)
Else
Z  Text(Y,X)
Output(Z,Y,X)

{Definisi function dan procedure}


Function test (X:integer) boolean

KAMUS LOKAL

Algoritma:
If ((X+1) mod 3=0) then
 true
else
 false

Procedure dyo(input I,J:integer,output K:integer)

KAMUS LOKAL

Algoritma:
K  I*J-I
Procedure doy(input I,J:integer,output K:string)

KAMUS LOKAL

Algoritma:
Depend on (I,J)
I = J : K  ‘xxaxx’
I < J : K  ‘xaaxx’
I > J : K  ‘xxaax’

Function text (X,Y:integer) string

KAMUS LOKAL
Z:integer
Algoritma:
Dyo(X,Y,Z)
 inttostr(Z*2)

Keluaran dari program di atas jika input X = 5 dan Y=4 adalah:


A. „32‟ 4 5 D. ‟30‟ 4 5
B. ‟xxaax‟ 4 5 E. „32‟ 5 4
C. ‟ xxaax‟ 5 4 (UTS 2006 – 2007)

76. Perhatikan Program berikut ini :


Program mumet1

Kamus
const bingung : Integer = 5

yyy : integer

Procedure PindahBaris
{I.S : Sembarang}
{F.S : cursor berpindah ke baris berikutnya}

Procedure pusing(Input xxx:integer)


{I. S : nilai xxx terdefinisi }
{F. S : nilai xxx tampil di layar}

Algoritma
yyy traversal [bingung-4..bingung]
pusing(yyy)
Pindahbaris

procedure pusing(input xxx:integer)


{I. S : nilai xxx terdefinisi }
{F. S : nilai xxx tampil di layar}

Kamus lokal
yyy : integer

Algoritma
yyy traversal [1..xxx]
output(xxx)

A. 1 D. 11111
2 2222
3 333
4 44
5 5
B. 1 E. 55555
22 4444
333 333
4444 22
55555 1

C. 11111
22222
33333
44444
55555
(UTS 2006 – 2007)

77. Perhatikan program berikut ini :


Program undefined
Kamus
one,two,three : integer

Procedure defined (Input one : integer;


Input/output two : Integer;
output three : integer)
{I. S : nilai one dan two terdefinisi }
{F. S : menghasilkan nilai two dan three }

Algoritma
one  10
two  5
defined(one,two,three)

Procedure defined (Input one : integer;


Input/output two : Integer;
output three : integer)
Kamus Lokal
Algoritma
one  2 * one + two
two  one + two * 2
three  one + two

Berapakah nilai one,two,three sebelum dan setelah memanggil procedure


defined ?
A. 10, 5, 0 & 10, 35, 60
B. 10, 5, 0 & 25, 60, 85
C. 10, 5, 0 & 25, 35, 60
D. 10, 5, 0 & 10, 35, 85
E Semua Jawaban Salah
(UTS 2006 – 2007)

Algoritma di bawah ini untuk menjawab soal nomor 78 – 79


1 Program cari_maks
2 { I.S : menerima masukan 4 buah bilangan
3 F.S : Menampilkan bilangan terbesar dari keempat bilangan tersebut}
4 Kamus
5 dat1,dat2,dat3,dat4,big : integer
6 Algoritma
7 Input(dat1,dat2,dat3,dat4)
8 if (dat1>dat2)and (dat1>dat3) and (dat1>dat4) then
9 bigdat1
10 Else
11 if (dat2>dat1)and (dat2>dat3) and (dat2>dat4) then
12 bigdat2
13 else if (dat3>dat1)and (dat3>dat2) and (dat3>dat4) then
14 bigdat3
15 else
16 bigdat4
17 output big

78. Terdapat satu buah bug pada program diatas yang menyebabkan program tidak berjalan
dengan semestinya, yaitu pada baris ke
A. 7 B. 10 C. 11 D. 13 E. 16
(UTS 2006 – 2007)

79. Koreksi untuk kesalahan tersebut seharusnya adalah


A. dat1input, dat2input, dat3input,dat4input
B. tanpa else
C. if (dat2>dat1 >dat3 >dat4) then
D. elseif (dat3>dat1)and (dat3>dat2) and (dat3>dat4) then
E berikan indentasi di baris 16
(UTS 2006 – 2007)

80. Jika program sudah diperbaiki dan dat1=7, dat2=6, dat3=10, dat4=9 , maka urutan proses
eksekusi program menjadi :
A. 7-8-10-11-13-14-17 D. 7-13-14-16-17
B. 7-8-10-11-13-14-15-16-17 E. 7-8-10-13-14-17
C. 7-8-10-11-13-14-16-17
(UTS 2006 – 2007)

81. Jika terdapat 3 variabel bertipe string sebagai berikut: (BONUS)


str, has : string
cc : character
……
str’Hell’
cc’o’
has  Str • cc
Jika has berisi „Hello‟, maka operasi pada has adalah :
A. o D. Hello
B. Hell E. Tidak bisa ditentukan
C. oHell
(UTS 2006 – 2007)

82. Perhatikan program di bawah ini


Program allAboutBoolean
Kamus
X, Y, Z : Boolean
A : integer
Algoritma
Input(a)
X  True
Z  ( (4 + (5 div 2) ) = 5)
Y  a >= 0
If (X and Y) Xor (Y and Z) then
Output (‘Terpenuhi’)
Else
Output (‘Tidak Terpenuhi’)
Output (‘ Ya’)
Apa yang akan dioutputkan oleh program di atas?
A. Terpenuhi
B. Terpenuhi Ya
C. Tidak Terpenuhi
D. Tidak Terpenuhi Ya
E Tidak ada jawaban yang benar, karena nilai variable a belum dapat ditentukan
nilainya (tergantung dengan inputan user)
(UTS 2006 – 2007)

Algoritma di bawah ini untuk menjawab soal nomor 83 dan 84


Program cek1
Kamus
x,y : integer
Algoritma
input (y,x,x)
depend on (x,y)
x=y : output(‘1’)
xy : depend on (y)
y>x : output(‘2’)
x<y : output(‘3’)
x>y : output(‘4’)
y<x : output(‘5’)

83. Jika pengguna menginputkan 5,3,1 maka output algoritma tersebut adalah:
(UTS 2008 – 2009)

84. Perhatikan program yang belum lengkap di bawah ini


Program JumlahBilX
{Menjumlahkan nilai-nilai x yang dibaca dari piranti keluaran)
Kamus
i: integer
x : integer {sekumpulan bilangan integer yang dibaca,
diakhiri dengan 9999}
sum : integer
Algoritma :
sum  0
input(x)
......
......
......
output(sum)

Program di atas membaca sekumpulan nilai integer yang diketikkan lewat piranti masukan,
dan menjumlahkan nilainya. Pemasukan nilai integer diakhiri dengan 9999
Dengan spesifikasi tambahan : - jumlah bilangan untuk kasus kosong = 0

Statement yang benar untuk melengkapi program di atas (program juga benar untuk
menangani kasus kosong) adalah
A. repeat D. while (X ≠ 9999) do
sum  sum+x Sum ← Sum + x
input(x) input(X)
until (x=9999)
B. repeat E while (X ≠ 9999) do
sum  sum+i Sum ← Sum + x
input(x)
until (x=9999)
C. repeat
sum  sum+1
input(x)
until (x=9999)
(UTS 2008 – 2009)

85. Diberikan potongan program sebagai berikut :


Program ZZZ
Kamus
a,b,c:integer
Algoritma
a  5
b  10
c  1
while c < b do
c  a
b  a
a  c
output(a,b,c)
Dari notasi algoritma diatas maka harga yang disimpan oleh a,b,c adalah:
(UTS 2008 – 2009)

86. Di bawah ini yang merupakan program yang benar untuk menjumlahkan bilangan 2 + 4 + 6
+ 8 + 10 adalah
A. Program Deret C. Program Deret
Kamus Kamus
i,sum : integer i,sum : integer
Algoritma Algoritma
i0 i1
sum0 sum0
while i<=10 do while i<=10 do
ii+2 if i mod 2=0 then
sum  sum+1 sum  sum+i
output(sum) ii+2
output(sum)

B. Program Deret D. Program Deret


Kamus Kamus
i,sum : integer i,sum : integer
Algoritma Algoritma
i0 i0
sum0 sum0
while i<=11 do while i<10 do
if i mod 2=0 then ii+2
sum  sum+i sum  sum+i
ii+1 output(sum)
output(sum)
E Tidak ada jawaban yang benar

(UTS 2008 – 2009)

87. Perhatikan Program di bawah ini


Program Misteri
Kamus
x,n,m:integer;
Algoritma
m  0
n  0
repeat
input(x)
if x mod 2 <> 0 then
m  m+1
n  n+1
until n=6
output(m)

Jika nilai-nilai x yang diinputkan adalah 2,3,5,7,10,1. Maka nilai yang dicetak oleh program
di atas adalah :
A. 16 B. 12 C. 4 D. 6 E. 2
(UTS 2008 – 2009)

88. Manakah pernyataan yang salah mengenai notasi pengulangan


A. Proses pengulang pada repeat-until akan dihentikan bila kondisi pengecekan
bernilai false
B. Proses pengulang pada iterate-stop akan tetap dijalankan bila kondisi
pengecekan bernilai false
C. Proses pengulang pada while-do akan dihentikan bila kondisi pengecekan bernilai
true
D. Proses pengulang pada iterate-stop akan dihentikan bila kondisi pengecekan
bernilai true
E Semua jawaban di atas salah
(UTS 2008 – 2009)

89. Telusuri algoritma program di bawah ini


PROGRAM UTS_gitu_loh
{I.S: sembarang
F.S: menampilkan suatu bilangan hasil perhitungan}
KAMUS:
A: integer
Function X (D,P:integer) integer
Function Y(I,J:integer)integer

ALGORITMA:
Output(‘A=’,Y(2,3))
{Definisi function dan procedure}
Function X (D,P:integer) integer
{Pre-condition: D dan P terdefinisi}
KAMUS LOKAL
A, B : integer

Algoritma:
B  0
A traversal[1..P]
B  B + D
 B

Function Y(I,J:integer)integer
{Pre-condition: I dan J terdefinisi}
Kamus Lokal

Algoritma:
 X(I,J) * X(J,I)

Keluaran dari program di atas adalah:


A. A = 32 B. Y = 36 C. A = 36 D. Y = 216 E. A = 216
(UTS 2008 – 2009)

90. Berikut adalah pernyataan yang benar mengenai parameter formal dan aktual..
A. Parameter formal adalah parameter yang terdapat pada pada pemanggilan fungsi atau
prosedur, sedangkan parameter aktual adalah parameter pendeklarasian judul
subprogram.
B. Parameter formal diakui di seluruh bagian program, sedangkan parameter aktual hanya
berlaku di subprogram saja.
C. Parameter formal adalah parameter yang terdapat pada pendeklarasian judul
subprogram, sedangkan parameter aktual adalah parameter pada pemanggilan fungsi
atau prosedur.
D. Parameter formal dapat bertindak sebagai variabel input dan output, sedangkan
parameter aktual hanya bertindak sebagai variabel input saja
E Semua jawaban salah
(UTS 2008 – 2009)

91. Telusuri algoritma program di bawah ini


PROGRAM UTS_kaleee
{IS: meminta inputan bilangan
FS: menampilkan hasil berupa bilangan dan string}
KAMUS:
X,Y: integer
Z : string
Function inttostr(angka:integer)  string
{mengkonversi nilai integer menjadi string}
Procedure doy(input I,J:integer,output K:string)
Procedure dyo(input I,J:integer,output K:integer)
Function test (X:integer) boolean
Function text (X,Y:integer) string

ALGORITMA:
Input(X,Y);
If test(Y) then
Doy(X,Y,Z)
Else
Z  Text(Y,X)
Output(Z,Y,X)

{Definisi function dan procedure}


Function test (X:integer) boolean

KAMUS LOKAL

Algoritma:
If ((X+1) mod 3=0) then
 true
else
 false

Procedure dyo(input I,J:integer,output K:integer)

KAMUS LOKAL

Algoritma:
K  I*J-I
Procedure doy(input I,J:integer,output K:string)

KAMUS LOKAL

Algoritma:
Depend on (I,J)
I = J : K  ‘xxaxx’
I < J : K  ‘xaaxx’
I > J : K  ‘xxaax’

Function text (X,Y:integer) string

KAMUS LOKAL
Z:integer
Algoritma:
Dyo(X,Y,Z)
 inttostr(Z*2)

Keluaran dari program di atas jika input X = 5 dan Y=4 adalah:


A. „32‟ 4 5 D. ‟30‟ 4 5
B. ‟xxaax‟ 4 5 E. „32‟ 5 4
C. ‟ xxaax‟ 5 4
(UTS 2008 – 2009)

92. Perhatikan Program berikut ini :


Program mumet1

Kamus
const bingung : Integer = 5

yyy : integer

Procedure PindahBaris
{I.S : Sembarang}
{F.S : cursor berpindah ke baris berikutnya}

Procedure pusing(Input xxx:integer)


{I. S : nilai xxx terdefinisi }
{F. S : nilai xxx tampil di layar}

Algoritma
yyy traversal [bingung-4..bingung]
pusing(yyy)
Pindahbaris

procedure pusing(input xxx:integer)


{I. S : nilai xxx terdefinisi }
{F. S : nilai xxx tampil di layar}

Kamus lokal
yyy : integer
Algoritma
yyy traversal [1..xxx]
output(xxx)

A. 1 D. 11111
2 2222
3 333
4 44
5 5
B. 1 E. 55555
22 4444
333 333
4444 22
55555 1

C. 11111
22222
33333
44444
55555
(UTS 2008 – 2009)

93. Perhatikan program berikut ini :


Program undefined
Kamus
one,two,three : integer

Procedure defined (Input one : integer;


Input/output two : Integer;
output three : integer)
{I. S : nilai one dan two terdefinisi }
{F. S : menghasilkan nilai two dan three }

Algoritma
one  10
two  5
defined(one,two,three)

Procedure defined (Input one : integer;


Input/output two : Integer;
output three : integer)
Kamus Lokal
Algoritma
one  2 * one + two
two  one + two * 2
three  one + two

Berapakah nilai one,two,three sebelum dan setelah memanggil procedure


defined ?
A. 10, 5, 0 & 10, 35, 60
B. 10, 5, 0 & 25, 60, 85
C. 10, 5, 0 & 25, 35, 60
D. 10, 5, 0 & 10, 35, 85
E Semua Jawaban Salah
(UTS 2008 – 2009)

Algoritma di bawah ini untuk menjawab soal nomor 94 – 95


1 Program cari_maks
2 { I.S : menerima masukan 4 buah bilangan
3 F.S : Menampilkan bilangan terbesar dari keempat bilangan tersebut}
4 Kamus
5 dat1,dat2,dat3,dat4,big : integer
6 Algoritma
7 Input(dat1,dat2,dat3,dat4)
8 if (dat1>dat2)and (dat1>dat3) and (dat1>dat4) then
9 bigdat1
10 Else
11 if (dat2>dat1)and (dat2>dat3) and (dat2>dat4) then
12 bigdat2
13 else if (dat3>dat1)and (dat3>dat2) and (dat3>dat4) then
14 bigdat3
15 else
16 bigdat4
17 output big

94. Terdapat satu buah bug pada program diatas yang menyebabkan program tidak berjalan
dengan semestinya, yaitu pada baris ke
A. 7 B. 10 C. 11 D. 13 E. 16
(UTS 2008 – 2009)

95. Koreksi untuk kesalahan tersebut seharusnya adalah


A. dat1input, dat2input, dat3input,dat4input
B. tanpa else
C. if (dat2>dat1 >dat3 >dat4) then
D. elseif (dat3>dat1)and (dat3>dat2) and (dat3>dat4) then
E berikan indentasi di baris 16
(UTS 2008 – 2009)

96. Jika program sudah diperbaiki dan dat1=7, dat2=6, dat3=10, dat4=9 , maka urutan proses
eksekusi program menjadi :
A. 7-8-10-11-13-14-17 D. 7-13-14-16-17
B. 7-8-10-11-13-14-15-16-17 E. 7-8-10-13-14-17
C. 7-8-10-11-13-14-16-17
(UTS 2008 – 2009)
97. Jika terdapat 3 variabel bertipe string sebagai berikut:
str, has : string
cc : character
……
str’Hell’
cc’o’
has  Str • cc

Jika has berisi „Hello‟, maka operasi pada has adalah :


A. o D. Hello
B. Hell E. Tidak bisa ditentukan
C. oHell
(UTS 2008 – 2009)

98. Perhatikan program di bawah ini


Program allAboutBoolean
Kamus
X, Y, Z : Boolean
A : integer
Algoritma
Input(a)
X  True
Z  ( (4 + (5 div 2) ) = 5)
Y  a >= 0
If (X and Y) Xor (Y and Z) then
Output (‘Terpenuhi’)
Else
Output (‘Tidak Terpenuhi’)
Output (‘ Ya’)
Apa yang akan dioutputkan oleh program di atas?
A. Terpenuhi
B. Terpenuhi Ya
C. Tidak Terpenuhi
D. Tidak Terpenuhi Ya
E Tidak ada jawaban yang benar, karena nilai variable a belum dapat ditentukan
nilainya (tergantung dengan inputan user)
(UTS 2008 – 2009)

99. Telusuri program di bawah ini.


Program analisakasus1
Kamus
x,y : integer
Algoritma
input (x,y,z)
Depend on (x,y)
x<y : depend on (y,z)
y<z : output (‘aku’)
y>z : depend on (x,z)
x<z : output (‘prokom’)
x>z : output (‘latihan’)
x>y : depend on (y,z)
y>z : output (‘fine’)
y<z : depend on (x,z)
x<z : output (‘good’)
x>z : output (‘tired’)

Jika pada program analisakasus1 tersebut pengguna memasukkan x=3, y=8, dan z=5
dimana x≠y≠z, maka output algoritma tersebut adalah:
A. latihan B. prokom C. aku D. Fine E good
(UTS 2007 – 2008)

100. Telusuri program di bawah ini


Program analisakasus2
Kamus
x,y,z : integer
Algoritma
input (x,y)
z x+y
if z >=80 then
zz-30
if z>=70 then
zz-10
else
if z>= 65 then
zz-5
yx
if x<=70 then
zz-10
yx
output (x,y,z)

Jika input dari program analisakasus2 tersebut untuk x= 32 dan y=50,maka nilai x,y,z
akhir (output) adalah :
A. x = 32 B. x=32 C. x=50 D. x=50 E x=42
y =50 y=32 y=32 y=50 y=50
z = 52 z=42 z=-52 z=42 z=32
(UTS 2007 – 2008)

101. Perhatikan MENU PROGRAM di bawah ini:


Tekanlah salah satu angka untuk memilih menu berikut
1. Menghitung luas persegi panjang
2. Menghitung keliling persegi panjang
3. Keluar program

Untuk membuat daftar menu seperti diatas sebaiknya menggunakan notasi algoritma
A. if B. If..then C. If..then…else D. If..then..else..if E. Depend on
(UTS 2007 – 2008)

102. Perhatikan penggalan algoritma di bawah ini

……………………
x : real
……………………
x = 10 / 3
if (x = 3.3333) then
output(‘Sama Nilainya’)
else
output(‘Tidak Sama Nilainya’)
……………………

Apakah output dari penggalan algoritma di atas ?


A. Sama Nilainya
B. Tidak sama nilainya
C. Sama nilainya
D. Tidak Sama Nilainya
E. Error, karena bilangan bertipe real tidak bisa digunakan dalam if-then-else
(UTS 2007 – 2008)

103. IF (a = 10 AND b = 5) THEN c = 50 ELSE c = 15


Pada sintaks di atas jika ternyata variabel „a‟ diberikan input 5 maka nilai variabel „c‟
adalah…
A. 5 B. 10 C. 15 D. 25 E. 50
(UTS 2007 – 2008)

104. Perhatikan program di bawah ini.


Program Fungsi

Kamus
i,j,k:integer
procedure prosedur1 (input i:integer;input/output j,k:integer)

Algoritma
i←0;j←1;k←2
input(i,j,k)
prosedur1(j,k,i)
output(j,k,i)

Procedure prosedur1 (input i:integer; input/output j,k:integer)

Kamus lokal

Algoritma
k ← i + j
j ← k mod i
i ← j mod k

Jika algoritma tersebut dieksekusi dengan input dari user secara berurutan adalah 2, 5 dan
10, maka output yang ditampilkan adalah:
A. 0, 0, 12 D. 0, 15, 5
B. 0, 0, 15 E. 2, 0, 12
C. 5, 0, 15
(UTS 2007 – 2008)

105. Di bawah ini merupakan penulisan fungsi yang benar, adalah :


A. Function cobalagi (i,j : integer)  integer
Kamus
Algoritma
Cobalagi  i + j

B. Function cobalagi (i,j : integer)  integer


Kamus
X : integer
Algoritma
X  i + j

C. Function cobalagi (input i,j : integer output x : integer)


Kamus
Algoritma
X  i + j

D. Function cobalagi (i,j : integer)  integer


Kamus
Algoritma
Cobalagi  i + j

E. Semua benar
(UTS 2007 – 2008)

106. Berdasarkan penulisan fungsi yang benar pada soal no 7, maka untuk mengambil nilai dari
sebuah fungsi, dapat dilakukan dengan perintah sebagai berikut :
A. a  cobalagi (2,5) D. cobalagi (2,5)  a
B. cobalagi (2,5) E. cobalagi (2,5)  a
C. x  cobalagi (2,5)
(UTS 2007 – 2008)

107. Terdapat sebuah fungsi yang akan menghasilkan nilai konversi sebuah mata uang menjadi
mata uang negara lainnya. Header fungsi sebagai berikut :
function KonversiUang(jumlah,kurs:real)->real

Algoritma yang paling tepat untuk function KonversiUang tersebut adalah


A. -> output jumlah/kurs
B. output jumlah/kurs
C. <- jumlah/kurs
D. -> jumlah/kurs
E. <- output jumlah/kurs
(UTS 2007 – 2008)

108. Berikut adalah program yang di dalamnya terdapat pemanggilan function


KonversiUang (soal no 9) dengan benar, KECUALI ...
A. Program TentangUang
Kamus
asal : real {jumlah uang yang akan dikonversi}
hasil : real (jumlah uang setelah dikonversi)
kurs : real
Algoritma
input(asal)
input (kurs)
output(KonversiUang(asal,kurs))

B. Program TentangUang
Kamus
jumlah : real {jumlah uang yang akan dikonversi}
hasil : real (jumlah uang setelah dikonversi)
kurs : real
Algoritma
input(asal)
input (kurs)
hasil <- (KonversiUang(asal,kurs))

C. Program TentangUang
Kamus
asal : real {jumlah uang yang akan dikonversi}
hasil : real (jumlah uang setelah dikonversi)
kurs : real
Algoritma
input(asal)
input (kurs)
hasil <- (KonversiUang(asal,kurs))
output (hasil)

D. Program TentangUang
Kamus
jumlah : real {jumlah uang yang akan dikonversi}
hasil : real (jumlah uang setelah dikonversi)
kurs : real
Algoritma
input(asal,kurs)
hasil <- (KonversiUang(asal,kurs))
output (hasil)

E. Program TentangUang
Kamus
jumlah : real {jumlah uang yang akan dikonversi}
hasil : real (jumlah uang setelah dikonversi)
kurs : real
Algoritma
input(asal)
input (kurs)
KonversiUang(asal,kurs)

(UTS 2007 – 2008)

109 Perhatikan pola berikut ini:


. 1 5
2 4
3
2 4
1 5
Telah didefinisikan prosedure GantiBaris untuk pindah ke baris berikutnya
Pola diatas dapat dihasilkan dengan notasi algoritma:
A. N  5 D. N  5
i  N i traversal [1..N]
j  N j traversal [N..1]
Repeat N times If (i=j) then
Repeat N times Output(N-j+1)
If (i=j) then Else
Output(j) If (j=N+1-i) then
Else Output (i)
Output(‘ ‘) else
{end if} Output(‘ ‘)
j  j+1 {end if}
{end repeat} {end if}
i  i+1 {end traversal}
gantibaris GantiBaris
{end repeat} {end traversal}

B. N  5 E. Tidak ada jawaban yang benar


i  1
j  1
Repeat N times
Repeat N times
If (i=j) and (i=N+1-j) then
Output(j)
Else
Output(‘ ‘)
{end if}
j  j+1
{end repeat}
i  i+1
gantibaris
{end repeat}

C. N  5
i traversal [1..N]
j traversal [N..1]
If (i=j) and (j=N+1-i) then
Output(j)
Else
Output(‘ ‘)
{end if}
{end traversal}
GantiBaris
{end traversal}

(UTS 2007 – 2008)

110. Diketahui penggalan algoritma sebagai berikut:


Program apaini
Kamus
Algoritma
Input(x)
bx
While x <> 9999 do
Input(x)
If x > b then
bx
{x=9999}
Output(b)
Jika inputnya :
12
14
2
9999

Maka nilai yang dicetak adalah


A. 12 B. 2 C. 9999 D. 12 14 2 E. 14
(UTS 2007 – 2008)

111. Diketahui algoritma sebagai berikut:


Program hayoapa
Kamus
Algoritma
Input(x)
apahayo  true
While (x<10) and apahayo do
Output('hidup prokom')

Jika x = 6, maka
A. Akan tercetak 'hidup prokom' 1 kali
B. Akan tercetak 'hidup prokom' 10 kali
C. Akan tercetak 'hidup prokom' 9 kali
D. Tidak ada nilai yg dicetak
E. Akan tercetak 'hidup prokom' tak berhingga kali
(UTS 2007 – 2008)

112. Berikut ini adalah nama variabel yang dapat dipergunakan (valid), KECUALI
A. data_pertama
B. Data1
C. Data 1
D. Data_ke_satu
E. Luas_A1
(UTS 2007 – 2008)

113. Perhatikan program berikut ini:


Program MenghitungRata2
{Program untuk menampilkan hasil perhitungan rata-rata}
Kamus :
Angka1, Angka2,Angka3 : Integer
Contstant Pembagi : Integer = 3
Function Rata2(Nilai1,Nilai2,Nilai3,JmlNilai:integer) real

Algoritma :
input(Rata2(Angka1,Angka2,Angka3,Pembagi))
output(Rata2(Angka1,Angka2,Angka3,Pembagi))

Berdasarkan program untuk menghitung rata-rata di atas, bagian mana yang salah sesuai
tujuan program di atas :
A. Integer = 3
Keterangan : seharusnya Integer  3

B. Function Rata2(Nilai1,Nilai2,Nilai3,JmlNilai:integer) real


Keterangan : seharusnya
function Rata2(input : Nilai1,Nilai2,Nilai3,JmlNilai:integer) real

C. input(Rata2(Angka1,Angka2,Angka3,Pembagi))
Keterangan : yang ada di dalam kurung tidak boleh diisi pemanggilan fungsi

D. output(Rata2(Angka1,Angka2,Angka3,Pembagi))
Keterangan : yang ada di dalam kurung tidak boleh diisi pemanggilan fungsi kecuali
yang dipanggil prosedur

E. C dan D salah
(UTS 2007 – 2008)

114. Perhatikan program berikut ini


Program PerkalianDuaAngka
{Program untuk menampilkan hasil perkalian dua angka yang dimasukkan
oleh penguna}
Kamus :
Angka1, Angka2 : Integer
HasilPerkalian : Integer

Algoritma :
input(Angka1); input(Angka2)
HasilPerkalian  Angka1 * Angka2
output(”HasilPerkalian”)

Berdasarkan program untuk menghitung perkalian dua angka di atas, bagian mana yang salah
sesuai tujuan program di atas :
A. HasilPerkalian : Integer
Keterangan : harusnya dijadikan satu dengan perintah di atasnya

B. Algoritma :
Keterangan : harusnya ada garis bawahnya

C. input(Angka1); input(Angka2)
Keterangan : harusnya tidak ada tanda ;

D. output(”HasilPerkalian”)
Keterangan : harusnya tidak ada tanda ” di antara HasilPerkalian

E. HasilPerkalian : Integer
Keterangan : harusnya tipe data real
(UTS 2007 – 2008)

115. Cara deklarasikan konstanta PI didalam algoritma adalah :


A. constant PI=3.14
B. constant PI=real=3.14
C. constant PI<-- 3.14 : real
D. constant PI : 3.14 : real
E. constant PI : real = 3.14
(UTS 2007 – 2008)

116. Bentuk logika matematika berikut akan menghasilkan:


NOT (TRUE AND (FALSE XOR TRUE)) AND (TRUE XOR TRUE)

A. TRUE
B. FALSE
C. MIGHT BE TRUE
D. MIGHT BE FALSE
E. IF NOT TRUE THEN FALSE
(UTS 2007 – 2008)

117. Dari algoritma dibawah ini manakah algoritma yang tidak menghasilkan deret bilangan ganjil
pada perangkat keluaran (inputan user selalu bilangan bulat positif, 0 dianggap genap positif)

A. input (N)
i traversal [1..N]
if (i mod 2 = 0 ) then
output(i+1)
else
output(i)
{end if}
{end traversal}

B. input (N)
if (N mod 2 = 0 ) then
N  N+1
else
N  N+2
i  1
While i < N do
output (i+2)
i  i +2
{end while}

C. input (N)
i  0
repeat N times
output (i+1)
i  i +1
{end repeat}
D. input (N)
i traversal [1..N]
output(i)
i  i+1
{end traversal}
E. Tidak ada jawaban yang benar
(UTS 2007 – 2008)

118. Manakah dari pernyataan berikut ini yang salah mengenai notasi pengulangan ?
A. Proses pengulang pada repeat until akan dihentikan bila kondisi pengecekan bernilai
true
B. Proses pengulang pada iterate stop akan tetap dijalankan bila kondisi pengecekan
bernilai false
C. Proses pengulang pada iterate stop akan dihentikan bila kondisi pengecekan bernilai
true
D. Proses pengulang pada while do akan dihentikan bila kondisi pengecekan bernilai true
E. Tidak ada jawaban yang benar
(UTS 2007 – 2008)
Essay UTS SP 2006 - 2007
1. Tuliskan program dengan ketentuan sebagai berikut:
a. Program melakukan pengecekan, apakah seorang mahasiswa dapat dinyatakan lulus
TPB atau tidak.
spesifikasi
input : 3 record matakuliah dari seorang mahasiswa (untuk menyederhanakan
permasalahan, anggap saja matakuliah TPB cuma ada 3)
proses : melakukan menghitung IPK mahasiswa, mengecek apakah ada nilai E,
kemudian menentukan apakah mahasiswa tersebut lulus TPB

Syarat kelulusan TPB (ini hanya simulasi, bukan syarat yang sebenarnya) :
 IPK mahasiswa >= 2 dan tidak ada nilai E (asumsikan tidak pernah ada
nilai T)

output : mencetak IPK, dan mencetak hasil pengecekan kelulusan TPB

Contoh :
input :
<‟CS 1023‟, „3‟, „B‟>
<‟MA1114‟, „4‟, „A‟>
<‟MA 2333‟, „3‟, „E‟>
Output :
IPK = 2,5
mahasiswa tersebut tidak lulus TPB

b. Program tersebut direalisasikan dalam tiga modul, yaitu:


i. Fungsi IsAdaE
ii. Fungsi konversi
iii. Fungsi IsLulus

c. Kerjakan program di atas pada lembar yang sudah disediakan.

Program KelulusanTPB {Program Utama}


Kamus :
type matakuliah : <kodemk:string, sks:integer, nilai_huruf:char>
matkul1,matkul2,matkul3 : matakuliah
ada_E : ............
IPK : real
sks_total : integer
Algoritma :
.................................
{ada_E bernilai true jika mahasiswa punya nilai E, dan false jika sebaliknya}
ada_E  IsAdaE(matkul11) ..... IsAdaE(matkul2)..... IsAdaE(matkul3)
sks_total  .....................................
IPK  ( (matkul1.sks * konversi(matkul1.nilai_huruf))+
(matkul2.sks * konversi(matkul2.nilai_huruf))+
(matkul3.sks * konversi(matkul3.nilai_huruf)) )/sks_total
Output(‘IPK= ‘,........)
{Memeriksa apakah mahasiswa memenuhi persyaratan lulus TPB,manfaatkan fungsi yang telah
anda buat }
if ........................ then
output (‘Mahasiswa tersebut lulus TPB’)
else
output (‘Mahasiswa tersebut tidak lulus TPB’)

function IsAdaE(k:matakuliah)boolean
{menerima sebuah record matakuliah dan mengembalikan nilai true jika ada nilai E dan false jika
sebaliknya}
kamus lokal :
algoritma

if ............... then
.............
else
.............

function konversi(nil_huruf:char) integer


{menerima sebuah nilai huruf , dan mengkonversikannya ke nilai angka}
kamus lokal :
algoritma :
depend on .............
............
............
............
............
............

function IsLulus(IPK: real, ada_E:............) boolean


{melakukan pengecekan apakah seorang mahasiswa dapat dinyatakan lulus TPB atau tidak,
berdasarkan syarat kelulusan yang telah ditetapkan}
kamus lokal :
algoritma
if .......................... then
...........
else
...........

2. Tuliskan program dengan ketentuan sebagai berikut:


a. Spesifikasi program
input : jumlah bilangan yang dimasukkan (n), asumsikan n >0,
proses : dari n bilangan yang dimasukkan, program mengecek berapa banyak (cacah)
dan jumlah (total penjumlahan) dari bilangan yang merupakan kelipatan 3 dan
kurang dari 20
Jika banyaknya (cacah bilangan) adalah genap, maka dihitung rata-
ratanya dengan rumus :

Rata = jumlah dari bilangan yang merupakan kelipatan 3 dan kurang dari 20
cacah dari bilangan yang merupakan kelipatan 3 dan kurang dari 20

output : - mencetak cacah dari bilangan yang merupakan kelipatan 3 dan


kurang dari 20
- mencetak jumlah dari bilangan yang merupakan kelipatan 3 dan
kurang dari 20
- mencetak rata-rata (jika dipenuhi syarat seperti pada spesifikasi
program)

Contoh :
N=5
Bilangan ke-1 : 1
Bilangan ke-2 : 3
Bilangan ke-3 : 6
Bilangan ke-4 : 21
Bilangan ke-5 : 34
Cacah bilangan kelipatan 3 dan kurang dari 20 = 2 (3 dan 6)
Jumlah bilangan kelipatan 3 dan kurang dari 20 = 9 (3+6)
Rata-rata: 4.5 (lihat kembali pesyaratan mencari nilai rata-rata seperti pada spesifikasi
program di atas)

b. Program tersebut direalisasikan dalam tiga modul, yaitu:


i. Procedure CekJumlahDanCacahBilangan
ii. Procedure CekCacahBilDanHitungRata
Program UTS2 {Program Utama}
Kamus
n :integer {jumlah bilangan yang dimasukkan}
bil : integer {bilangan yang dimasukkan}
jum : integer {variabel untuk menyimpan nilai jumlah bilangan}
cacah:integer {variabel untuk menyimpan nilai cacah bilangan}
...................................................................

...................................................................

Algoritma
input(n)
{Pemanggilan procedure CekJumlahDanCacahBilangan}
...............................................
output(‘Cacah bilangan kelipatan 3 dan kurang dari 20 =’,.......)
output(‘Jumlah bilangan kelipatan 3 dan kurang dari 20 =’,.......)
if ................. then
{Pemanggilan prosedur CekJumlahDanCacahBilangan}
......................
else
output('Penyebut nol, jadi tidak bisa dicari rata-rata')

Procedure CekJumlahDanCacahBilangan(input n:integer,


output jumbil,cacahbil:integer)
{Menerima sebuah nilai yang menyatakan banyaknya bilangan
dan menghasilkan cacah dan jumlah dari bilangan-bilangan kelipatan 3}
{IS : terdefinisi banyaknya bilangan yang dimasukkan (n)
FS : menghasilkan cacah dan jumlah dari bilangan-bilangan kelipatan 3}
Kamus lokal
i,bil: integer
Algoritma
{Assignment awal}
................
................
................
while (i<=n) do
output(‘Bilangan ke -,i,’=’)
...............
{Memeriksa apakah bilangan yang dimasukkan habis dibagi 3 dan
kurang dari 20}
if ........................ then
.......................
.......................

{agar pengulangan dapat berhenti, perlu statemen di bawah ini}


.............
{i=n}

Procedure CekCacahBilDanHitungRata(input cacahbil,jumbil:integer)


{Memeriksa apakah cacah bilangan adalah genap.Jika genap, hitung rata-ratanya dan dicetak}
{IS: terdefinisi cacah bilangan dan jumlah bilangan
FS:didapatkan nilai rata-rata dan mencetak nilai rata-rata}
kamus lokal
ratabil:real {variabel untuk menyimpan nilai rata-rata}
Algoritma
...........................
....................
....................

Essay UTS 2006 - 2007


[20] II.1 PENGHITUNGAN GAJI KARYAWAN
Pada suatu perusahaan terdapat lima (5) golongan karyawan. Gaji karyawan ditentukan
berdasarkan gaji tetap dan juga dari lamanya bekerja. Gaji tetap dan gaji per jam tersebut
tergantung kepada golongan karyawan sesuai dengan tabel berikut :

Golongan Gaji tetap( Rp ) Upah lembur per jam( Rp )


1 500.000 5000
2 300.000 3000
3 250.000 2000
4 100.000 1500
5 50.000 1000

Lengkapilah algoritma di bawah ini untuk menghitung jumlah total gaji karyawan yang
diterima berdasarkan jam lemburnya.
Input: golongan karyawan, nama karyawan, jam lembur sebulan.
Output: menampilkan jumlah total gaji seluruh karyawan dalam susunan terurut membesar
(ascending)

Catatan : gunakan type bentukan( record ). Tidak boleh menggunakan tabel(array).


Program adaDiSlide

Kamus
type : karyawan = <nama:string, gol:integer, lembur:integer,
gaji:integer>
k1,k2,k3:karyawan
procedure baca_data(output kt:karyawan)
procedure hitung_gaji(input/output kd:karyawan)
procedure urut(input : ku1,ku2,ku3:karyawan)
Algoritma
baca_data(k1)
baca_data(k2)
baca_data(k2)
hitung_gaji(k1)
hitung_gaji(k2)
hitung_gaji(k3)
urut(k1,k2,k3)

procedure baca_data(output kt:karyawan)


Kamus lokal
Input (kt.nama, kt.gol, kt.lembur)

procedure hitung_gaji(input/output kd:karyawan)


Kamus lokal
Algoritma
depend on (kd.gol)
1 : kd.gaji500.000+kd.lembur*5000
2 : kd.gaji300.000+kd.lembur*3000
3 : kd.gaji250.000+kd.lembur*2000
4 : kd.gaji100.000+kd.lembur*1500
5 : kd.gaji50.000+kd.lembur*1000

procedure urut(input : ku1,ku2,ku3:karyawan)


Kamus lokal
depend on (ku1.gaji, ku2.gaji, ku3.gaji)
ku1.gaji>ku2.gaji>ku3.gaji:ouput(ku3.gaji, ku2.gaji, ku1.gaji)
ku1.gaji>ku3.gaji>ku2.gaji:ouput(ku2.gaji, ku3.gaji, ku1.gaji)
ku2.gaji>ku1.gaji>ku3.gaji:ouput(ku3.gaji, ku1.gaji, ku2.gaji)
ku2.gaji>ku3.gaji>ku1.gaji:ouput(ku1.gaji, ku3.gaji, ku2.gaji)
ku3.gaji>ku1.gaji>ku2.gaji:ouput(ku2.gaji, ku1.gaji, ku3.gaji)
ku3.gaji>ku2.gaji>ku1.gaji:ouput(ku1.gaji, ku2.gaji, ku3.gaji)

[20] II.2 PERMAINAN TEBAK ANGKA


Tuliskan algoritma Permainan menebak angka, yang dilakukan antara 2 orang. Aturan
mainnya adalah sebagai berikut :
1. Pemain A diminta untuk memasukkan angka antara 1 sampai 100.
2. Pemain B diberi kesempatan 6x untuk menebak angka yang dimasukkan
pemain A.
3. Setiap tebakan yang dilakukan B, program anda akan menginformasikan pada
B, apakah lebih besar, lebih kecil, atau sama dengan angka yang dimasukkan
A.
4. Jika setelah 6x kesempatan pemain B gagal menebak angka yang dimasukkan
A, maka pesan akan tampil “Coba kembali” dan proses diulang kembali.
5. Jika B berhasil menebak dengan benar, maka pemain A dan B diminta untuk
menukar posisi, dan permainan diulang kembali.
6. Program akan terus berlangsung selama pemain A tidak memasukkan nilai -1.

Contoh tampilan di layar terhadap persoalan di atas sebagai berikut: (data yang diinputkan
user dalam bold style)
Player A enter number (between 1..100) to be guessed (-1) to end: 12
(Program will clear screen at this point)
Player B you have 6 chances to guess the number.
Chance 1: 50
Guess is greater than number !
Chance 2: 25
Guess is greater than number !
Chance 3: 13
Guess is greater than number !
Chance 4: 5
Guess is less than number !
Chance 5: 12
------------------ Player B Wins ------------------
Please swap roles and play again.
Player A enter number (between 1..100) to be guessed (-1) to end: -1
PROGRAM ENDED !

Lengkapilah algoritma di bawah ini untuk menjawab persoalan tebak angka tersebut yang
akan menghasilkan tampilan di layar seperti contoh di atas !

Program Game

Kamus
Number, Guess : integer
Count : integer
Change : boolean

Function InputNumber  integer


{fungsi untuk mengembalikan nilai berupa angka yang akan ditebak}

Function InputGuess  integer


{fungsi untuk mengembalikan angka tebakan yang sudah dimasukkan user}

Function GreaterThan (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess lebih besar
daripada Number}
Function LessThan (Number,Guess : integer)  boolean
{fungsi untuk mengembalikan nilai benar jika Guess lebih kecil
daripada Number}

Function Equal (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess sama dengan Number,
yaitu angka yang ditebak}

Algoritma

Output (‘Player A enter number (between 1..100) to be guessed


(-1) to end : ’)
Number  InputNumber
While (Number <> -1) and (number > 0) and (number < 101) do
Output (‘Player B You have 6 change to guess the number’)
Change  False
Count  0
Repeat
Count  Count + 1
Guess  InputGuess
If (GreaterThan (Number,Guess)= True) then
Output (‘Guess is greater than number’)
If (LessThan (Number,Guess)= True) then
Output (‘Guess is less than number’)
If (Equal (Number,Guess)= True) then
Output (‘Thats the number !!!’)
Change  True
Until (Count = 6) or (change = True)
Output (‘Please swap roles and play again’)
Number  InputNumber

Function InputNumber  integer


{fungsi untuk mengembalikan nilai berupa angka yang akan ditebak}
Kamus Lokal
Algoritma
Input (InputNumber)
 InputNumber

Function InputGuess  integer


{fungsi untuk mengembalikan angka tebakan yang sudah dimasukkan user}
Kamus Lokal
Algoritma
Input (InputGuess)
 InputGuess

Function GreaterThan (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess lebih besar
daripada Number}
Kamus Lokal
Algoritma
GreaterThan  False
If (Guess > Number) then
GreaterThan  True
 GreaterThan
Function LessThan (Number,Guess : integer)  boolean
{fungsi untuk mengembalikan nilai benar jika Guess lebih kecil
daripada Number}
Kamus Lokal
Algoritma
LessThan  False
If (Guess < Number) then
LessThan  True
 LessThan

Function Equal (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess sama dengan Number,
yaitu angka yang ditebak}
Kamus Lokal
Algoritma
Equal  False
If (Guess = Number) then
Equal  True
 Equal

Essay UTS 2008 - 2009

[20] II.1 PENGHITUNGAN GAJI KARYAWAN


Pada suatu perusahaan terdapat lima (5) golongan karyawan. Gaji karyawan ditentukan
berdasarkan gaji tetap dan juga dari lamanya bekerja. Gaji tetap dan gaji per jam tersebut
tergantung kepada golongan karyawan sesuai dengan tabel berikut :

Golongan Gaji tetap( Rp ) Upah lembur per jam( Rp )


1 500.000 5000
2 300.000 3000
3 250.000 2000
4 100.000 1500
5 50.000 1000

Lengkapilah algoritma di bawah ini untuk menghitung jumlah total gaji karyawan yang
diterima berdasarkan jam lemburnya.
Input: golongan karyawan, nama karyawan, jam lembur sebulan.
Output: menampilkan jumlah total gaji seluruh karyawan dalam susunan terurut membesar
(ascending)

Catatan : gunakan type bentukan( record ). Tidak boleh menggunakan tabel(array).


Program adaDiSlide

Kamus
type : karyawan = <nama:string, gol:integer, lembur:integer,
gaji:integer>
k1,k2,k3:karyawan
procedure baca_data(output kt:karyawan)
procedure hitung_gaji(input/output kd:karyawan)
procedure urut(input : ku1,ku2,ku3:karyawan)
Algoritma
baca_data(k1)
baca_data(k2)
baca_data(k2)
hitung_gaji(k1)
hitung_gaji(k2)
hitung_gaji(k3)
urut(k1,k2,k3)

procedure baca_data(output kt:karyawan)


Kamus lokal
Input (kt.nama, kt.gol, kt.lembur)

procedure hitung_gaji(input/output kd:karyawan)


Kamus lokal
Algoritma
depend on (kd.gol)
1 : kd.gaji500.000+kd.lembur*5000
2 : kd.gaji300.000+kd.lembur*3000
3 : kd.gaji250.000+kd.lembur*2000
4 : kd.gaji100.000+kd.lembur*1500
5 : kd.gaji50.000+kd.lembur*1000

procedure urut(input : ku1,ku2,ku3:karyawan)


Kamus lokal
depend on (ku1.gaji, ku2.gaji, ku3.gaji)
ku1.gaji>ku2.gaji>ku3.gaji:ouput(ku3.gaji, ku2.gaji, ku1.gaji)
ku1.gaji>ku3.gaji>ku2.gaji:ouput(ku2.gaji, ku3.gaji, ku1.gaji)
ku2.gaji>ku1.gaji>ku3.gaji:ouput(ku3.gaji, ku1.gaji, ku2.gaji)
ku2.gaji>ku3.gaji>ku1.gaji:ouput(ku1.gaji, ku3.gaji, ku2.gaji)
ku3.gaji>ku1.gaji>ku2.gaji:ouput(ku2.gaji, ku1.gaji, ku3.gaji)
ku3.gaji>ku2.gaji>ku1.gaji:ouput(ku1.gaji, ku2.gaji, ku3.gaji)

[20] II.2 PERMAINAN TEBAK ANGKA


Tuliskan algoritma Permainan menebak angka, yang dilakukan antara 2 orang. Aturan
mainnya adalah sebagai berikut :
7. Pemain A diminta untuk memasukkan angka antara 1 sampai 100.
8. Pemain B diberi kesempatan 6x untuk menebak angka yang dimasukkan
pemain A.
9. Setiap tebakan yang dilakukan B, program anda akan menginformasikan pada
B, apakah lebih besar, lebih kecil, atau sama dengan angka yang dimasukkan
A.
10. Jika setelah 6x kesempatan pemain B gagal menebak angka yang dimasukkan
A, maka pesan akan tampil “Coba kembali” dan proses diulang kembali.
11. Jika B berhasil menebak dengan benar, maka pemain A dan B diminta untuk
menukar posisi, dan permainan diulang kembali.
12. Program akan terus berlangsung selama pemain A tidak memasukkan nilai -1.
Contoh tampilan di layar terhadap persoalan di atas sebagai berikut: (data yang diinputkan
user dalam bold style)
Player A enter number (between 1..100) to be guessed (-1) to end: 12
(Program will clear screen at this point)
Player B you have 6 chances to guess the number.
Chance 1: 50
Guess is greater than number !
Chance 2: 25
Guess is greater than number !
Chance 3: 13
Guess is greater than number !
Chance 4: 5
Guess is less than number !
Chance 5: 12
------------------ Player B Wins ------------------
Please swap roles and play again.
Player A enter number (between 1..100) to be guessed (-1) to end: -1
PROGRAM ENDED !

Lengkapilah algoritma di bawah ini untuk menjawab persoalan tebak angka tersebut yang
akan menghasilkan tampilan di layar seperti contoh di atas !

Program Game

Kamus
Number, Guess : integer
Count : integer
Change : boolean

Function InputNumber  integer


{fungsi untuk mengembalikan nilai berupa angka yang akan ditebak}

Function InputGuess  integer


{fungsi untuk mengembalikan angka tebakan yang sudah dimasukkan user}

Function GreaterThan (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess lebih besar
daripada Number}

Function LessThan (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess lebih kecil
daripada Number}

Function Equal (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess sama dengan Number,
yaitu angka yang ditebak}

Algoritma

Output (‘Player A enter number (between 1..100) to be guessed


(-1) to end : ’)
Number  InputNumber
While (Number <> -1) and (number > 0) and (number < 101) do
Output (‘Player B You have 6 change to guess the number’)
Change  False
Count  0
Repeat
Count  Count + 1
Guess  InputGuess
If (GreaterThan (Number,Guess)= True) then
Output (‘Guess is greater than number’)
If (LessThan (Number,Guess)= True) then
Output (‘Guess is less than number’)
If (Equal (Number,Guess)= True) then
Output (‘Thats the number !!!’)
Change  True
Until (Count = 6) or (change = True)
Output (‘Please swap roles and play again’)
Number  InputNumber

Function InputNumber  integer


{fungsi untuk mengembalikan nilai berupa angka yang akan ditebak}
Kamus Lokal
Algoritma
Input (InputNumber)
 InputNumber

Function InputGuess  integer


{fungsi untuk mengembalikan angka tebakan yang sudah dimasukkan user}
Kamus Lokal
Algoritma
Input (InputGuess)
 InputGuess

Function GreaterThan (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess lebih besar
daripada Number}
Kamus Lokal
Algoritma
GreaterThan  False
If (Guess > Number) then
GreaterThan  True
 GreaterThan

Function LessThan (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess lebih kecil
daripada Number}
Kamus Lokal
Algoritma
LessThan  False
If (Guess < Number) then
LessThan  True
 LessThan

Function Equal (Number,Guess : integer)  boolean


{fungsi untuk mengembalikan nilai benar jika Guess sama dengan Number,
yaitu angka yang ditebak}
Kamus Lokal
Algoritma
Equal  False
If (Guess = Number) then
Equal  True
 Equal

Essay UTS 2007-2008

1 POLINOM [10]
. Buatlah Agoritma untuk menghitung hasil evaluasi polinom
P(x) = xn + xn-1 + xn-2 + …+ x

Function Evaluasi_Polinom (n:integer,x:integer)integer


{menerima input n dan x bertipe integer. n merupakan pangkat tertinggi
n n-1 n-2
dari polinom, n>=1. Fungsi mengembalikan nilai deret x + x + x + …+ x
}

Kamus
Pangkat : integer {hasil eksponensial tiap suku}
sum : integer {hasil penjumlahan suku-suku polinom}
i : integer {pencacah}
Algoritma
Pangkat  1
Sum  0
i traversal [1..n]
pangkat  pangkat * x
sum  sum + pangkat
Sum

ATAU Solusi lain

Function Evaluasi_Polinom (n:integer,x:integer)integer


{menerima input n dan x bertipe integer. n merupakan pangkat tertinggi
n n-1 n-2
dari polinom, n>=1. Fungsi mengembalikan nilai deret x + x + x + …+
x }
Kamus
Pangkat : integer {hasil eksponensial tiap suku}
sum : integer {hasil penjumlahan suku-suku polinom}
i,j : integer {pencacah}
Algoritma
Sum  0
i traversal [n..1]
pangkat  1
j traversal [1..i]
pangkat  pangkat * x
sum sum + pangkat
Sum

2. PEMBACAAN KARAKTER [10]


a) Tuliskan sebuah fungsi yang mengembalikan nilai TRUE jika karakter pertama sama
nilainya dengan karakter kedua.
b) Tuliskan program utama berisikan pengulangan pembacaan karakter pertama dan
karakter kedua dengan kondisi berhenti jika karakter pertama nilainya berbeda dengan
karakter kedua. Catatan: gunakan notasi pengulangan dimana badan program
dieksekusi/dijalankan minimal satu kali.

function cek(a,b : character) boolean


{mengembalikan nilai TRUE jika karakter pertama = karakter kedua dan FALSE jika
sebaliknya }
Kamus lokal
if a = b then
cek  true
else
cek  false

Program utama
{program berisi pengulangan membaca dua karakter hingga dua karakter tersebut
berbeda. Pengecekan karakter dilakukan dengan pemanggilan fungsi cek() }
Kamus
c1,c2: character
function cek(a,b: character) boolean

repeat
read(c1)
read(c2)
until not(cek(c1,c2))

3. PENGHITUNGAN GAJI KARYAWAN [20]


Pada suatu perusahaan terdapat lima (5) golongan karyawan. Gaji karyawan ditentukan
berdasarkan gaji tetap dan juga dari lamanya bekerja. Gaji tetap dan gaji per jam tersebut
tergantung kepada golongan karyawan sesuai dengan tabel berikut :

Golongan Gaji tetap( Rp ) Upah lembur per jam( Rp )


1 500.000 5000
2 300.000 3000
3 250.000 2000
4 100.000 1500
5 50.000 1000

Lengkapilah algoritma di bawah ini untuk menghitung jumlah total gaji karyawan yang
diterima berdasarkan jam lemburnya.
Input: golongan karyawan, nama karyawan, jam lembur sebulan.
Output: menampilkan jumlah total gaji seluruh karyawan dalam susunan terurut membesar
(ascending)

Catatan : gunakan type bentukan( record ). Tidak boleh menggunakan tabel(array).


Program adaDiSlide
Kamus
type : karyawan = <nama:string, gol:integer, lembur:integer,
gaji:integer>
k1,k2,k3:karyawan
procedure baca_data(output kt:karyawan)
procedure hitung_gaji(input/output kd:karyawan)
procedure urut(input : ku1,ku2,ku3:karyawan)
Algoritma
baca_data(k1)
baca_data(k2)
baca_data(k2)
hitung_gaji(k1)
hitung_gaji(k2)
hitung_gaji(k3)
urut(k1,k2,k3)

procedure baca_data(output kt:karyawan)


Kamus lokal
Input (kt.nama, kt.gol, kt.lembur)

procedure hitung_gaji(input/output kd:karyawan)


Kamus lokal
Algoritma
depend on (kd.gol)
1 : kt.gaji<-500.000+kt.lembur*5000
2 : kt.gaji<-300.000+kt.lembur*3000
3 : kt.gaji<-250.000+kt.lembur*2000
4 : kt.gaji<-100.000+kt.lembur*1500
5 : kt.gaji<-50.000+kt.lembur*1000

procedure urut(input : ku1,ku2,ku3:karyawan)


Kamus lokal
depend on (ku1.gaji, ku2.gaji, ku3.gaji)
ku1>ku2>ku3:ouput(ku3.gaji, ku2.gaji, ku1.gaji)
ku1>ku3>ku2:ouput(ku2.gaji, ku3.gaji, ku1.gaji)
ku2>ku1>ku3:ouput(ku3.gaji, ku1.gaji, ku2.gaji)
ku2>ku3>ku1:ouput(ku1.gaji, ku3.gaji, ku2.gaji)
ku3>ku1>ku2:ouput(ku2.gaji, ku1.gaji, ku3.gaji)
ku3>ku2>ku1:ouput(ku1.gaji, ku2.gaji, ku3.gaji)

Anda mungkin juga menyukai