SlideShare a Scribd company logo
1 of 13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
Petunjuk Pengerjaan Soal
1. Baca dan kerjakan setiap soal dengan hati-hati dan seteliti mungkin.
2. Setiap soal memiliki bobot yang sama—sebab itu jangan terpaku pada satu soal yang Anda rasa sulit. Kerjakan soal yang
Anda rasa paling mudah dahulu.
3. Setiap soal hanya memiliki satu jawab yang paling benar. Pada beberapa soal Anda mungkin menjumpai beberapa pilihan
yang menurut Anda sama-sama benar. Anda harus memikirkan baik-baik, jawaban manakah yang paling tepat.
4. Beberapa soal mengacu pada baris tertentu dalam program. Baris yang dimaksud akan ditunjukkan oleh komentar
program, seperti: {baris-16}. Gunakan pemandu ini untuk mengacu pada baris yang dimaksud dalam soal.
5. Jangan risau dengan soal yang salah—soal yang salah akan dianulir (dihapuskan). Bila Anda menemukan kesalahan,
laporkan hal tersebut pada akhir sesi, bukan pada saat mengerjakan soal. Walaupun demikian, pengetikan soal ini sudah
diusahakan seteliti mungkin, jadi jangan terburu-buru menganggap setiap keanehan sebagai kesalahan soal!!
6. Berikut ini adalah set karakter yang digunakan dalam semua listing program. Gunakan daftar ini untuk menghilangkan
keragu-raguan untuk huruf yang mirip:
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6
7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d
e f g h i j k l m n o p q r s t u v w x y z {
| } ~
7. Berikut ini adalah beberapa istilah yang akan muncul dalam soal-soal:
• Runtime error: kesalahan (error) yang terjadi pada saat program dijalankan. Bila runtime error terjadi, akan tampil
pesan seperti “Runtime error 100 at 0000:03D5” dan program tersebut segera dihentikan.
• Compile error: kesalahan yang terjadi dalam penerjemahan program Pascal (sebelum program tersebut bisa
dijalankan).
• Ekspresi: bagian dari sebuah perintah Pascal, yang menghasilkan nilai tertentu. Misalnya, di dalam perintah
Writeln(I * 2 + 5), maka I * 2 + 5 adalah ekspresi. Bila Anda tidak pernah mendengar istilah ekspresi
sebelumnya, pandanglah ekspresi sebagai “rumus” yang ditulis dalam bahasa Pascal.
• Parameter (di dalam fungsi/prosedur): ekspresi yang disertakan di dalam tanda kurung di dalam pemanggilan fungsi
atau prosedur tersebut. Misalnya, dalam perintah Writeln('Jumlah = ', J); ekspresi 'Jumlah = ' dan J
adalah parameter dari prosedur Writeln.
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 1/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
1. Manakah yang boleh digunakan sebagai nama
variabel?
a. Baris_25
b. 25Baris
c. Tgl.Lahir
d. Rata-Rata
e. Tempat&Tanggal
2. Cara yang benar untuk mendeklarasikan string
adalah
a. var a: string of Char;
b. var a: string[1..255];
c. var a: string[0..255];
d. var a: string[255];
e. var a: string[255] of Char;
3. Perintah manakah yang mendeklarasikan sebuah
tipe enumerasi:
a. type a = Integer;
b. type a = 1..540;
c. type a = (Buruk, Sedang, Bagus);
d. type a = set of (Buruk, Sedang, Bagus);
e. type a = [Buruk, Sedang, Bagus];
4. Bagaimana cara mendefinisikan sebuah record?
a. type a = record of
s: String;
d: Integer;
b: Boolean;
end;
b. type a: record
s: String;
d: Integer;
b: Boolean;
end;
c. record a = (s: String; d: Integer;
b: Boolean);
d. type a = record
s: String;
d: Integer;
b: Boolean;
end;
e. type a = record of (s: String; d: Integer;
b: Boolean);
5. Tipe data apa yang tidak boleh menjadi anggota
(field) dari sebuah record?
a. pointer
b. array
c. pointer dari record yang bertipe sama dengan record
tersebut
d. record yang bertipe lain dari record tersebut
e. salah semua
6. Bagaimana cara mendefinisikan pointer yang
menunjuk data bertipe Integer?
a. pointer of Integer
b. @Integer
c. ^Integer
d. Integer^
e. *Integer
7. Deklarasi prosedur manakah yang tidak dibenarkan:
a. procedure Hapus;
b. procedure Hapus(Nama: String);
c. procedure Hapus(var Nama: String);
d. procedure Hapus(Ukuran: Integer; var
Data);
e. procedure Hapus(Ukuran: Integer): Boolean;
8. Deklarasi fungsi manakah yang salah?
a. function Density(X: Real): Real;
b. function Density(X: Real): var;
c. function Density(X: Real): Pointer;
d. function Density(X: Real): Strij ng;
e. function Density(var X): Boolean;
9. Manakah yang mendeklarasikan A sebagai
konstanta bertipe (typed constant) dengan tepat?
a. const A = 350;
b. const B = 35;
A = B * 10;
c. const A: Real = 350;
d. const A = Integer(350);
e. const B: Integer = 35;
A = B * 10;
10. Bagaimana cara mendefinisikan konstanta yang
berupa array berukuran 3×3?
a. const A[3,3] = ((1,2,3), (2,3,4),
(3,4,5));
b. const A: array[3, 3] =
(1,2,3, 2,3,4, 3,4,5);
c. const A: array[1..3, 1..3] of Byte =
((1,2,3), (2,3,4), (3,4,5));
d. const A: array[1..3, 1..3] of Byte =
(1, 2, 3,
2, 3, 4,
3, 4, 5);
e. const array[3,3] A = (1,2,3, 2,3,4,
3,4,5);
11. Dengan bantuan deklarasi berikut:
type P = (Magenta, Kuning, Sian);
R = array[1..3] of Byte;
S = set of Char;
Tentukan manakah yang tidak benar:
a. type A = array[True..False] of String;
b. type B = array[P] of String;
c. type C = array[Magenta..Sian] of
String[7];
d. type D = array[-6..6] of R;
e. type E = array[1..20] of S;
12. Deklarasi manakah yang tidak benar?
a. type T = record A, B, C: Integer end;
var V: T;
b. type T = record A, B, C: Integer end;
P = ^T;
var V: ^P;
c. type T = record A, B, C: Integer end;
P = ^T;
A = array[1..32] of P;
var V: A;
d. type T = record A, B, C: Integer end;
A = array[1..32] of T;
var ^V: ^A;
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 2/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
e. type T = record A, B, C: ^Integer end;
A = array[1..32] of T;
var V: A;
13. Misalkan Menu adalah sebuah variabel bertipe record
dengan anggota (field) sebagai berikut:
- Nama bertipe string
- Harga bertipe Real
- PPN bertipe Boolean
Perintah manakah yang tidak dibenarkan?
a. with Menu do Nama := 'Opor ayam';
b. Menu.Harga := Menu.Harga * 1.20;
c. Menu.PPN := Menu.Harga > 15000;
d. with Menu do if PPN then
Harga := Harga * 1.15;
e. if Menu.PPN then
Menu.Harga := Harga * 1.15;
14. Daftar kata manakah yang hanya berisi operator
dalam bahasa Pascal?
a. mod, div, or, in
b. not, and, mod, for
c. Read, EOF, Write, Writeln
d. array, record, set, object
e. Char, Integer, Pointer, Real
15. Deklarasi manakah yang tidak benar?
a. var E: set of Char;
b. var E: set of (Sapi, Kelinci, Domba,
Ayam);
c. var E: set of Byte;
d. var E: set of String;
e. var E: set of 1..15;
16. Dengan deklarasi sebagai berikut,
type Warna = (Merah, Kuning, Hijau, Biru);
var W: Warna;
perintah manakah yang tidak benar?
a. if W in [Warna] then Writeln('Ada');
b. W := Merah;
W := W + Kuning;
c. W := [Merah];
d. W := Hijau;
Dec(W);
e. W := "Merah";
17. Program manakah yang ditulis dengan benar?
a. uses Crt;
program Sederhana;
var I, J: Integer;
begin
for I := 1 to 3 do
for J := I+1 to 4 do
Writeln(I, J);
end.
b. program Matematika;
var R: Real;
begin
R := 0;
while (R <= 1) do
begin
Writeln(R, ' ', Sqrt(R));
R := R + 0.1;
end;
end.
c. uses Crt;
var A: String;
program Utama;
begin
Readln(A);
Writeln('Halo, ', A);
end.
d. var B: Byte;
begin
B := 3;
repeat
Writeln(B);
B := B + 10;
while B < 100;
end.
e. var A: Integer;
B, C: Real;
begin
B := 0;
for A := 1 to 15 do
Readln(C);
B := B + C;
end;
Writeln(B / 15);
end.
Gunakan deklarasi variabel berikut untuk menjawab soal-
soal di bawah ini:
type Nilai = 0..10;
var I: Integer;
P: Pointer;
A: ^I;
B: ^Integer;
C: ^Nilai;
D: ^String;
E: ^Pointer;
18. Deklarasi variabel manakah yang salah?
a. A
b. B
c. C
d. D
e. E
19. Perintah manakah yang benar?
a. P := @B;
b. @I := B;
c. E := ^nil;
d. B := ^I;
e. @C := nil;
20. Perintah mana yang menunjukkan cara
mengalokasikan memori dengan tepat?
a. B^ := 100;
b. New(P);
c. New(B);
d. New(B^);
e. GetMem(B);
21. Bagaimana cara mengakhiri penggunaan variabel
dinamis dengan benar (mendealokasikan memori yang
ditempati oleh variabel dinamis)?
a. Dispose(E);
b. E := nil;
c. FreeMem(E);
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 3/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
d. E^ := nil;
e. @E := nil;
22. Bagaimana cara memberi nilai pada variabel
dinamis?
a. New(B) := 100;
b. ^B := 100;
c. B^ := 100;
d. New(B);
e. GetMem(B);
23. Dengan tetap menggunakan deklarasi variabel di
atas, perhatikan potongan program berikut ini:
I := 31;
B := @I;
B^ := I * 10 + B^;
berapakah nilai akhir I setelah tiga baris program tersebut
dijalankan?
a. 310
b. 341
c. 620
d. 31
e. semua jawaban salah
24. Dengan deklarasi sebagai berikut,
var S: String;
I, J: Integer;
C: Char;
maka penggunaan perintah case yang benar adalah:
a. case Upcase(C) of
'L': S := 'Large'; I := 40;
'M': S := 'Medium'; I := 38;
'S': S := 'Small'; I := 36;
end;
b. case C of
'L', 'l': S := 'Large';
'M', 'm': S := 'Medium';
'S', 's': S := 'Small';
end;
c. case I of
< 100: S := 'Too small';
100..300: S := 'Normal';
> 300: S := 'Too large';
end;
d. case J / I of
2: S := 'Double';
3: S := 'Triple';
4: S := 'Quadruple';
end;
e. case S of
'Open': I := 1;
'Save': I := 2;
'Quit': I := 3;
end;
25. Bagaimana cara menuliskan konstanta bertipe
record?
a. Turbo Pascal tidak mengizinkan konstanta yang bertipe
record.
b. type Rec = record
A: String; B: Integer;
end;
const R: Rec = (A: 'Kata'; B: 135);
c. type Rec = record
A: String; B: Integer;
end;
const R: Rec = (R.A: 'Kata'; R.B: 135);
d. type Rec = record
A: String; B: Integer;
end;
const R: Rec = ('Kata', 135);
e. type Rec = record
A: String; B: Integer;
end;
const Rec R = (.A = 'Kata', .B = 135);
Gunakan deklarasi berikut untuk soal-soal di bawah ini:
var C: Char;
S: String;
I: Integer;
R: Real;
L: LongInt;
W: Word;
begin
C := 'a';
S := 'Kata ';
I := 5;
R := 2.50;
L := 25;
end.
26. Perintah manakah yang diizinkan dalam bahasa
Pascal?
a. S := S + C;
b. S := 'Jumlahnya ' + I + S;
c. S := I;
d. I := I + R;
e. C := C + #1;
27. Perintah mana yang tidak diizinkan dalam bahasa
Pascal?
a. S := C + S;
b. I := Ord(C);
c. Inc(R);
d. I := I * 3 + L * 2;
e. R := I * 3 + 4;
28. Pada bagian awal program di atas, setiap variabel
diberi nilai awal (misalnya, I diisi 5, R diisi 2.50). Dengan
nilai-nilai awal tersebut, berapakah hasil dari ekspresi
I + L / R * I
a. 60
b. 55
c. 75
d. 7
e. 2.4
29. Bila ekspresi pada soal sebelumnya diganti menjadi
I + (L / R) * I
berapakah hasil dari ekspresi ini?
a. 60
b. 55
c. 75
d. 7
e. 2.4
30. Perintah mana yang tidak valid dalam bahasa
Pascal?
a. R := Ord(C);
b. L := Ord(C);
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 4/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
c. I := Ord(S[1]);
d. I := Ord(S);
e. C := S[1];
31. Perintah mana yang tidak valid dalam bahasa
Pascal?
a. R := 10;
b. I := 42000;
c. S := #130;
d. L := 65536;
e. S := #13; S := S + #10;
32. Ekspresi atau perintah mana yang tidak
diperbolehkan?
a. Dec(L, I);
b. Pred(S[0]);
c. Inc(C);
d. Succ(R);
e. Ord(I);
33. Ekspresi mana yang diperbolehkan dalam bahasa
Pascal, tetapi selalu bernilai False?
a. W > 0
b. C = ''
c. S <> ''
d. S[0] < 0
e. S[0] = #0
34. Ekspresi manakah yang tidak diizinkan dalam
Pascal?
a. if I = R then Writeln(R);
b. if R = I then Writeln(R);
c. if I = Round(R) then Writeln(R);
d. if I = 3 and R = 4.5 then Writeln(R);
e. if R = Round(I / 3) then Writeln(R);
35. Ekspresi manakah yang tidak dapat dipakai sebagai
syarat (kondisi) dalam perintah if?
a. R = I and 5
b. not (I = 5)
c. L or I and 3
d. (R = I) and (L and 5 = 4)
e. semua ekspresi bisa dipakai
Perhatikan program berikut:
var I, J, K: Integer;
L: Byte;
begin
I := 3;
J := 4; {baris-5}
K := 32;
L := 0;
{ if-1: }
if I + J and K = 0 then
Writeln('Betul')
else
Writeln('Salah');
{ if-2: }
if (I = 2) and (J < I) or (K > I) then
Writeln('Betul')
else
Writeln('Salah');
{ if-3: }
if not L in [1..120] then
Writeln('Betul')
else
Writeln('Salah');
end.
Program ini berisi tiga perintah if-then-else yang tidak
saling berkaitan, yang masing-masing kita namai if-1, if-
2, dan if-3. Jawablah tiga pertanyaan berikut
menggunakan program di atas.
36. Perintah if manakah yang penulisannya tidak
benar?
a. if-1
b. if-2
c. if-3
d. if-1 dan if-3
e. tidak ada perintah if yang salah
37. Perintah if mana sajakah yang akan menghasilkan
output berupa tulisan “Betul”?
a. if-1
b. if-2
c. if-3
d. if-1 dan if-2
e. if-2 dan if-3
38. Masih sehubungan dengan tiga “if” di atas,
pernyataan manakah yang benar? Asumsikan bahwa nilai-
nilai variabel I, J, K, dan L masih sama seperti program di
atas.
a. Ekspresi not L in [1..120] ekuivalen dengan
L in [0, 121..255]
b. Ekspresi I + J and K = 0 dalam if-1 ekuivalen
dengan (I + J <> 0) and (K = 0)
c. Tulisan yang dicetak oleh perintah if-1 akan berbeda
dari semula bila kondisi if-1 diubah menjadi
(I + J) and K = 0
d. Tulisan yang dicetak oleh perintah if-2 akan berbeda
dari semula bila kondisi if-2 diubah menjadi
((I = 2) and (J < 1)) or (K > I)
e. Semua pernyataan salah
39. Dengan deklarasi sebagai berikut, maka pernyataan
manakah yang benar?
type Drink = (Coke, Tea, Coffee, Juice);
var D1, D2: set of Drink;
begin
D1 := [Coke, Tea];
D2 := [Tea, Coffee];
end.
a. Ekspresi D1 * D2 menghasilkan set yang berisi
[Coke, Tea, Coffee]
b. Ekspresi D1 + D2 menghasilkan set yang berisi
[Coke, Tea, Tea, Coffee], dengan dua elemen
bernilai Tea.
c. Ekspresi D1 - D2 menghasilkan set yang berisi
[Coke, Coffee]
d. Ekspresi D1 - D2 + [Coke..Juice] menghasilkan
[] (set kosong)
e. Ekspresi (D1 - D2) + (D2 - D1) menghasilkan set
yang berisi [Coke, Coffee]
40. Bila fungsi ABC didefinisikan sebagai:
function ABC(I: Integer): Integer;
var J: Integer;
begin
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 5/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
J := 0;
while I > 0 do
begin
Dec(I);
J := J + I mod 5; {baris-8}
I := I shr 1;
end;
ABC := J;
end;
berapakah hasil dari ABC(25)?
a. 10
b. 0
c. 7
d. 40
e. Salah semua
41. Berapa nilai ABC(25) pada soal di atas, bila baris 8
pada fungsi ABC diubah menjadi:
J := J + I mod 5 shl 1;
a. 10
b. 5
c. 20
d. 14
e. 0
42. Apakah tampilan program berikut:
var A, B: Integer;
begin
A := 100;
B := 3;
Dec(A, Pred(B)); {baris-5}
Writeln(A, ' ', B);
end.
a. 96 3
b. 98 2
c. 98 3
d. 102 3
e. 14 3
43. Lihat kembali soal sebelumnya. Bagaimana output
program bila baris 5 dan 6 diubah menjadi:
Dec(A, Pred(A));
Writeln(A);
a. 0
b. -1
c. 1
d. 99
e. 101
44. Apakah output dari program berikut?
var S: string[12];
begin
S := 'setia';
Writeln('#', S, '#');
S := S + ' sampai akhir';
Writeln('#', S, '#');
end.
a. #setia#
(Kemudian terjadi runtime error)
b. #setia #
#setia sampai#
c. #setia#
#setia sampai akhir#
d. #setia#
#setia sampai#
e. #setia#
#sampai akhir#
45. Fungsi manakah yang bisa menghasilkan nilai
bertipe Integer ataupun Real?
a. Sqrt
b. Int
c. Frac
d. Sqr
e. Salah semua
46. Pernyataan manakah yang salah?
a. Ord(True) bernilai –1.
b. Ord(False) bernilai 0.
c. Bila C bertipe Char, maka Ord(C) bisa bernilai dari 0
sampai dengan 255.
d. Ord(Succ(False)) adalah 1.
e. Tidak ada pernyataan yang salah.
47. Pernyataan manakah yang benar?
a. Bila W adalah variabel bertipe Word, maka Abs(W) selalu
bernilai sama dengan W.
b. Bila I adalah variabel bertipe Integer, maka Abs(I)
selalu bernilai sama dengan I.
c. Bila R adalah variabel bertipe Real, maka Abs(R) selalu
bernilai sama dengan R.
d. Bila R adalah variabel bertipe Real, maka Round(R)
selalu bernilai sama dengan Int(R).
e. Pernyataan di atas benar semua.
48. Bila R adalah variabel bertipe Real, maka nilai yang
mungkin untuk Round(Frac(R) * 10) adalah:
a. bilangan bulat dari 1 sampai dengan 10
b. bilangan bulat dari 0 sampai dengan 10
c. bilangan bulat dari 0 sampai dengan 9
d. sembarang bilangan real dari 0 sampai dengan 9
e. sembarang bilangan real dari 0 sampai dengan 10
49. Dengan bantuandeklarasi berikut,
var S: String;
K, L: String;
begin
S := 'Go TOKI 99 for Gold!';
K := 'Go';
L := 'go';
end.
tentukan pernyataan manakah yang benar.
a. ekspresi Pos(K, S) bernilai 1
b. ekspresi Pos(L, S) bernilai 1
c. ekspresi
Copy(S, 3, Length(S)-3) + Copy(S, 1, 2)
menghasilkan string
'TOKI 99 for Gold! Go'
d. perintah Insert('toki', S, 4) menyebabkan S
bernilai 'Go toki 99 for Gold!'
e. perintah Insert(' Medal', S, Pos('Gold', S))
menyebabkan S bernilai
'Go TOKI 99 for Gold Medal!'
50. Ekspresi manakah yang bernilai False dalam
Turbo Pascal? Gunakan deklarasi berikut ini bila diperlukan:
type PInteger = ^Integer;
var P: PInteger;
a. SizeOf(String) = 255
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 6/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
b. SizeOf(PInteger) = 4
c. SizeOf(P^) = 2
d. SizeOf(Char) = SizeOf(Byte)
e. SizeOf(Integer) > SizeOf(Byte)
51. Apakah output program di bawah ini?
uses Crt;
var I, J: Integer;
begin
I := 0;
while I < 5 do
for J := 1 to 8 do
I := I + J;
Writeln(I, '-', J);
end.
a. 5-3
b. 5-8
c. 6-3
d. 3-3
e. 36-8
52. Bagaimana keluaran program berikut ini?
var I: Integer;
begin
I := 2;
case I of
1, 3, 5, 7, 9: Writeln('Ganjil');
2: Writeln('Prima genap');
0..10: Writeln('Normal');
else Writeln('Tidak normal');
end;
end;
a. Prima genap
b. Normal
c. Prima genap
Normal
d. Normal
Prima genap
e. Prima genap
Tidak normal
Gunakan program berikut untuk menjawab dua soal di
bawah ini:
uses Crt;
var I, J: Integer;
A: array[1..3, 1..3] of Integer;
begin
for I := 1 to 3 do for J := 1 to 3 do
A[I, J] := 0;
for I := 1 to 3 do
begin
for J := 1 to 3 do A[J, I] := I * J;
if I > 1 then
for J := 1 to 3 do
Inc(A[J, I - 1], A[J, I]); {baris-
12}
end;
for I := 1 to 3 do
begin
for J := 1 to 3 do
Write(A[I, J], ' ');
Writeln;
end;
end.
53. Bagaimana keluaran dari program tersebut?
a. 1 2 3
2 4 6
3 6 9
b. 3 5 3
6 10 6
9 15 9
c. 3 6 9
5 10 15
3 6 9
d. 1 3 6
2 6 12
3 9 18
e. 1 2 3
3 6 9
6 12 18
54. Bagaimana keluaran program di atas bila perintah
pada baris 12 diubah menjadi:
Inc(A[I - 1, J], A[J, I]);
a. 3 6 3
5 10 15
3 6 9
b. 3 6 9
5 10 15
3 6 9
c. 3 5 3
6 10 6
9 15 9
d. 3 5 3
6 10 6
3 15 9
e. Salah semua
Perhatikan contoh program berikut:
var I, J, K: Integer;
begin
I := 0;
J := I - 1;
K := 3;
repeat {baris-6}
I := J - 1;
repeat
Dec(K);
Write('*');
until K = I;
J := J + 1;
K := J;
Write('#');
until I = 0; {baris-15}
end.
55. Apakah keluaran program di atas?
a. ******#*#*#
b. *****#*#*#
c. ###
d. *****#****#***#
e. Tidak ada output sama sekali
56. Bila “repeat…until I = 0;” pada baris 6 dan
15 pada program di atas diganti menjadi “while I <> 0
do begin…end;”, bagaimana keluaran program sekarang?
a. ******#*#*#
b. *****#*#*#
c. ###
d. *****#****#***#
e. Tidak ada output sama sekali
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 7/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
Gunakan program berikut ini untuk menjawab beberapa
pertanyaan selanjutnya:
uses Crt;
const Z1: set of Char =
['A','E','I','O','U'];
const Z2: set of Char =
['a','e','i','o','u'];
var UV, LV, UC, LC, OC: Integer;
S: String;
i: Integer;
begin
UV := 0; LV := 0;
UC := 0; LC := 0;
OC := 0;
S := 'Tim Olimpiade Komputer
Indonesia.';
for i := 1 to Length(S) do
begin
if S[i] in ['A'..'Z', 'a'..'z'] then
if Upcase(S[i]) = S[i] then
if S[i] in Z1 then
Inc(UV) {baris-19}
else
Inc(UC) {baris-21}
else
if S[i] in Z2 then
Inc(LV) {baris-24}
else
Inc(LC) {baris-26}
else
Inc(OC); {baris-28}
end;
Writeln(UV, ' ', UC, ' ',
LV, ' ', LC, ' ', OC);
end.
57. Apakah output dari program di atas?
a. 12 13 2 2 4
b. 2 2 12 13 4
c. 2 2 13 12 4
d. 13 12 2 2 4
e. Salah semua
58. Pernyataan mana yang salah sehubungan dengan
program di atas?
a. Perintah pada baris 19 dikerjakan ketika S[i] bernilai
'I'
b. Perintah pada baris 28 tidak dikerjakan ketika S[i]
bernilai 'u'
c. Perintah pada baris 21 dikerjakan ketika S[i] bernilai
'r'
d. Perintah pada baris 24 tidak dikerjakan ketika S[i]
bernilai 'T'
e. Perintah pada baris 28 dikerjakan ketika S[i] bernilai
'.'
59. Apakah output dari program berikut ini:
var I, J, K: Integer;
begin
J := 3;
K := 1;
repeat
Dec(J);
for I := 1 to J do K := I + 5 * K;
Dec(J);
until J < 0;
Writeln(K);
end.
a. 32
b. 42
c. 161
d. 1
e. Salah semua
60. Berapakah output dari program berikut ini:
var I, J, K: Integer;
begin
K := 0;
for I := 3 downto 1 do
begin
for J := 0 to I-1 do K := K + I;
K := K - J;
end;
Writeln(K);
end.
a. 1
b. 11
c. 8
d. 10
e. Salah semua
Perhatikan program berikut ini:
var Z: array[0..19] of Char;
C: Integer;
I: Integer;
S1, S2: String;
procedure ZP(E: Char);
begin
if C < 20 then
begin
Z[C] := E;
Inc(C);
end;
end;
function ZG: Char;
begin
if C > 0 then
begin
Dec(C);
ZG := Z[C];
end;
end;
begin
C := 0;
S1 := 'PERGI';
S2 := 'LIBUR';
for I := 1 to Length(S1) do
begin
ZP(S1[I]);
ZP(S2[I]);
end;
S1 := '';
S2 := '';
while C > 0 do S1 := S1 + ZG; {baris-
32}
Writeln(S1+S2);
end.
61. Bagaimanakah output dari program di atas?
a. PERGILIBUR
b. LIBURPERGI
c. RIUGBRIELP
d. RUBILIGREP
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 8/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
e. PLEIRBGUIR
62. Tetap menggunakan program di atas,
bagaimanakah outputnya bila perintah pada baris 32 di atas
diganti dengan baris-baris sebagai berikut:
while C > 0 do
begin
S1 := S1 + ZG;
S2 := ZG + S2;
end;
a. LIBURPERGI
b. RUBILIGREP
c. IGREPRUBIL
d. PERGILIBUR
e. RUBILPERGI
Gunakan program di bawah ini untuk menjawab dua soal
berikutnya:
type DatRec = record
Nama: String[15];
Lanjut: Integer;
end;
var Data: array[1..4] of DatRec;
procedure Tukar(P1, P2: Integer);
var T: DatRec;
begin
T := Data[P1];
Data[P1] := Data[P2];
Data[P2] := T;
end;
procedure Tampil;
var I: Integer;
begin
I := 1;
repeat
Write(Data[I].Nama, ' ');
I := Data[I].Lanjut;
until I = 0;
Writeln;
end;
begin
Data[1].Nama := 'Andi';
Data[1].Lanjut := 3;
Data[2].Nama := 'Budi';
Data[2].Lanjut := 0;
Data[3].Nama := 'Rahmat';
Data[3].Lanjut := 4;
Data[4].Nama := 'Gunadi';
Data[4].Lanjut := 2;
Tampil; {baris-32}
end.
63. Bagaimana keluaran program di atas?
a. Andi Budi Rahmat Gunadi
b. Gunadi Rahmat Budi Andi
c. Andi Rahmat Gunadi Budi
d. Andi Budi
e. Gunadi Andi Rahmat Budi
64. Kita selipkan perintah
Tukar(2, 3)
sebelum baris 32 pada program di atas. Bagaimana keluaran
program sekarang?
a. Andi Rahmat Gunadi Budi
b. Andi Budi
c. Andi Gunadi Rahmat Budi
d. Andi Budi Gunadi Rahmat
e. Andi Rahmat
Program berikut digunakan untuk beberapa soal di bawah
ini:
program Testing;
uses Crt; {baris-2}
var Kata: String;
Bil: Integer;
procedure Cek(var S: String;
var I: Integer);
var J: Integer;
begin
J := I;
while (J < Length(S)) and
(S[J] = ' ') do Inc(J);
Delete(S, I, J - I);
I := J - I;
end;
begin
Kata := 'saya terpisah'; {baris-16}
Bil := 5;
Cek(Kata, Bil);
Writeln('#', Kata, '#');
end.
65. Apa keluaran program di atas?
a. #saya terpisah#
b. #saya terpisah#
c. #sayaterpisah#
d. #saya#
e. #terpisah#
66. Berapakah nilai Bil pada akhir eksekusi program?
a. 5
b. 1
c. 2
d. 0
e. 12
67. Bila baris 16 dan 17 (lihat program di atas) diubah
menjadi
Kata := ' TOKI 1999 ';
Bil := 12;
maka keluaran program menjadi:
a. #TOKI 1999#
b. # TOKI 1999#
c. # TOKI 1999 #
d. # TOKI 1999 #
e. #TOKI1999#
68. Apa keluaran program tersebut bila deklarasi
prosedur di atas diubah menjadi
procedure Cek(S: String; I: Integer);
a. #saya terpisah#
b. #saya terpisah#
c. #sayaterpisah#
d. #saya#
e. #terpisah#
69. Apa yang terjadi bila klausa “uses Crt;” pada
baris kedua di atas dihilangkan, kemudian program
dijalankan?
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 9/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
a. tidak ada keluaran apa pun yang dihasilkan
b. program tetap berjalan seperti biasanya, dan tidak ada
perubahan apa-apa
c. semua output program tidak keluar di layar, tetapi di
printer
d. terjadi compile error
e. terjadi runtime error
Gunakan program berikut untuk menjawab pertanyaan-
pertanyaan di bawah ini:
uses Crt;
var I, J: Integer;
function Jumlah(N: Integer): Integer;
var J, K: Integer; {baris-4}
begin
J := 0;
for K := 1 to N do J := J + K;
Jumlah := K;
end;
begin
J := 12;
for I := 1 to 3 do J := J + Jumlah(I);
Writeln(J);
end.
70. Apakah keluaran dari program tersebut?
a. 9
b. 18
c. 12
d. 6
e. 3
71. Bila baris keempat program tersebut diganti menjadi
var K: Integer;
bagaimanakah keluaran program itu sekarang?
a. 9
b. 18
c. 12
d. 6
e. 3
Perhatikan program ini untuk menjawab tiga pertanyaan
berikutnya:
var A: array[1..10] of Integer;
J: Integer;
function Sigma(I: Integer): Integer;
begin
if I <= 0 then
Sigma := 0
else if Odd(I) then
Sigma := Sigma(I-1) - A[I] {baris-
8}
else
Sigma := Sigma(I-1) + A[I]; {baris-
10}
end;
begin
for J := 1 to 10 do Read(A[J]);
Writeln(Sigma(10));
end.
72. Bagaimana keluaran program tersebut bila data
yang diinputkan adalah:
1 2 3 4 5 6 7 8 9 10
a. 5
b. 55
c. 11
d. -5
e. Salah semua
73. Fungsi manakah yang 100% ekuivalen dengan fungsi
Sigma(I) di atas?
a. function Sigma(I: Integer): Integer;
var K: Integer;
begin
K := 0;
while I > 0 do
begin
K := K + A[I];
if Odd(I) then K := K - A[I];
Dec(I);
end;
Sigma := K;
end;
b. function Sigma(I: Integer): Integer;
var K: Integer;
B: Boolean;
begin
K := 0;
while I > 0 do
begin
K := K + A[I];
if Odd(I) then K := -K;
Dec(I);
end;
Sigma := K;
end;
c. function Sigma(I: Integer): Integer;
var K: Integer;
B: Boolean;
begin
K := 0;
B := True;
while I > 0 do
begin
if B then K := K - A[I]
else K := K + A[I];
B := not B;
Dec(I);
end;
Sigma := K;
end;
d. function Sigma(I: Integer): Integer;
var K: Integer;
begin
K := 0;
repeat
if Odd(I) then Dec(K, A[I])
else Inc(K, A[I]);
Dec(I);
until I = 0;
Sigma := K;
end;
e. function Sigma(I: Integer): Integer;
var K: Integer;
begin
K := 0;
while I > 0 do
begin
if Odd(I) then Dec(K, A[I])
else Inc(K, A[I]);
Dec(I);
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 10/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
end;
Sigma := K;
end;
74. Kita ubah baris 8 dan 10 dari program di atas
menjadi
Sigma := A[I] - Sigma(I-1) {baris-8}
dan
Sigma := A[I] + Sigma(I-1); {baris-10}
Bagaimanakah keluaran program bila data yang diinputkan
masih sama seperti sebelumnya (1 2 3 4 5 6 7 8 9
10)?
a. -5
b. 55
c. 5
d. 11
e. Salah semua
Gunakan program berikut ini untuk menjawab dua soal di
bawah ini:
program Uji;
var T: Text;
i, j, k: Integer;
begin
Assign(T, 'INPUT.TXT');
Reset(T);
Readln(T, i, j, k);
Writeln(i, ' ', j, ' ', k);
Readln(T, i);
Readln(T, j);
Writeln(i, ' ', j);
Close(T);
end.
75. Misalkan file INPUT.TXT berisi baris-baris sebagai
berikut:
3 1 4 9
5 2 6
8 7
0
Bagaimanakah output dari program tersebut?
a. 3 1 4 9
5 2 6
8 7
b. 3 1 4
9 5
c. 3 1 4
5 2
d. 3 1 4
5 8
e. Terjadi runtime error karena isi file INPUT.TXT tidak
sesuai untuk program ini.
76. Bila isi file INPUT.TXT adalah sebagai berikut,
1
3
2
4
5
6
bagaimana output program ini?
a. 2 3 1
4 5
b. 1 0 0
3 2
c. 1 3 2
4 5
d. 1 3 2
5 6
e. Terjadi runtime error karena isi file INPUT.TXT tidak
sesuai untuk program ini.
Baris pertama dari sebuah file teks berisi tulisan sebagai
berikut:
Surabaya 35 195 232
Baris tersebut berisi empat data yang berbeda jenisnya. Data
pertama berupa string yang boleh terdiri dari sembarang
karakter kecuali spasi. Panjang string ini minimum 1 dan
maksimum 20 karakter. Tiga data selanjutnya adalah bilang-
an bulat yang masing-masing boleh bernilai 0 sampai dengan
1000. Di antara dua data yang berurutan diberikan pemisah
berupa satu karakter spasi, dan tidak ada spasi di kiri data
pertama maupun di kanan data terakhir. Gunakan definisi
teks ini untuk menjawab tiga soal berikut ini:
77. Pilihlah tipe data terkecil yang dapat menampung
data pertama dengan tepat!
a. type Kata = string;
b. type Kata = string[];
c. type Kata = string[19];
d. type Kata = string[20];
e. type Kata = string[21];
78. Pilihlah tipe data terkecil yang dapat menampung
data kedua, ketiga, atau keempat dengan tepat!
a. type Bil = Integer;
b. type Bil = ShortInt;
c. type Bil = LongInt;
d. type Bil = Byte;
e. type Bil = Real;
79. Potongan program manakah yang benar dan paling
efisien untuk membaca data dengan spesifikasi di atas?
Asumsikan deklarasi berikut bila diperlukan:
var D1: Kata;
D2, D3, D4: Bil;
F: Text;
H: Char;
I: Integer;
Asumsikan juga bahwa file teks F sudah dibuka.
a. Readln(F, D1, D2, D3, D4);
b. Readln(F, D1);
Readln(F, D2);
Readln(F, D3);
Readln(F, D4);
c. Read(F, D1);
Readln(F, D2, D3, D4);
d. D1 := '';
repeat
Read(F, H);
if H <> ' ' then D1 := D1 + H;
until H = ' ';
Readln(F, D2, D3, D4);
e. D1 := '';
for I := 1 to 20 do
begin
Read(F, H);
if H <> ' ' then D1 := D1 + H;
end;
Readln(F, D2, D3, D4);
80. Bagaimana baris pertama dari output program ini?
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 11/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
var I, J, K: Integer;
begin
J := 115;
K := 2;
Writeln('ABC->' :1, J:5, '<-');
for I := 1 to 3 do
begin
Inc(J, 10);
Inc(K);
Writeln('->', J:K, '<-');
end;
end.
a. ABC-> 115<-
b. A-> 115<-
c. ABC->115 <-
d. ABC-> 115 115 115 115 115<-
e. ABC->23<-
81. Lihat kembali program dalam soal sebelumnya.
Bagaimana baris selanjutnya dari output program tersebut?
a. ->125<-
->135 <-
->145 <-
b. ->12<-
->135<-
-> 145<-
c. ->125<-
-> 135<-
-> 145<-
d. ->125125125<-
-> 135 135 135 135<-
-> 145 145 145 145 145<-
e. ->41<-
->33<-
->29<-
82. Untuk mengimplementasikan matriks dalam bahasa
Pascal, kita pasti akan menggunakan data bertipe:
a. record
b. object
c. pointer
d. array
e. set
Gunakan program berikut ini untuk menjawab beberapa soal
selanjutnya:
uses Crt;
var J: array['A'..'Z'] of Byte;
c: Char;
Kal: String;
procedure HH(S: String);
var i: Integer; {baris-
6}
m: Char;
begin
for i := 1 to Length(S) do
begin
m := S[i]; {baris-
11}
if m in ['A'..'Z'] then {baris-
12}
Inc(J[i]); {baris-
13}
end;
end;
begin
for c := 'A' to 'Z' do J[c] := 0;
Kal := 'PASAR';
HH(Kal); {baris-
19}
for c := 'A' to 'Z' do
if J[c] > 0 then Write(c, J[c], ' ');
Writeln;
Kal := 'RAYA';
HH(Kal);
for c := 'Z' downto 'A' do
if J[c] > 0 then Write(c, J[c], ' ');
Writeln;
end.
83. Bila terdapat kesalahan yang menyebabkan program
sama sekali tidak dapat dijalankan, sebutkan pada baris
berapa, dan bagaimana perbaikannya!
a. Kesalahan semacam itu tidak ada
b. Baris 12, seharusnya ditulis:
if [m] in ['A'..'Z'] then
c. Baris 6, seharusnya ditulis:
var i: Char;
d. Baris 13, seharusnya ditulis:
Inc(J[m]);
e. Indeks array hanya boleh berupa angka. Jadi deklarasi
variabel seharusnya ditulis:
const A = 1; Z = 26;
var J: array[A..Z] of Byte;
c: Byte;
Kal: String;
dan semua konstanta karakter dalam perintah for harus
diganti, misalnya:
for c := A to Z do
dan seterusnya.
84. Dengan perbaikan seperti nomor sebelumnya (kalau
ada), maka program bisa dijalankan. Apakah hasil dari
program tersebut?
a. A2 P1 R1 S1
A4 P1 R2 S1 Y1
c. A2 P1 R1 S1
Y1 R1 A2
c. A2 P1 R1 S1
Y1 R2 A4
d. P1 A2 S1 R1
Y1 A4 R2
e. A2 P1 R1 S1
Y1 S1 R2 P1 A4
85. Tindakan apakah yang dilakukan oleh subrutin HH
ketika dipanggil oleh baris 19 program di atas, dengan string
S berisi kata 'PASAR'?
a. menghitung frekuensi kemunculan huruf-huruf alfabet
dan menyimpannya dalam array J.
b. mengumpulkan huruf-huruf alfabet yang muncul lebih
dari satu kali ke dalam array J.
c. mencatat letak setiap huruf alfabet ke dalam array J.
d. menentukan huruf yang paling sering dan paling jarang
muncul dan menyimpannya dalam array J.
e. mengurutkan huruf-huruf menurut urutan alfabet, dari
yang terkecil sampai yang terbesar.
86. Perintah manakah yang bisa menggantikan baris 12
dari program di atas tanpa mengubah arti program sama
sekali?
a. if UpCase(m) in ['A'..'Z'] then
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 12/13
Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________
b. if (m > 'A') and (m < 'Z') then
c. if (m >= 'A') and (m <= 'Z') then
d. if (m > 'A') or (m < 'Z') then
e. if (m >= 'A') or (m <= 'Z') then
87. Perbaikan apa yang perlu ditambahkan lagi agar
huruf kecil juga diperhitungkan?
a. Baris 12 diubah menjadi
if UpCase(m) in ['A'..'Z'] then
b. Baris 12 diubah menjadi
if m in ['A'..'z'] then
c. Baris 12 diubah menjadi
if m in ['A'..'Z', 'a'..'z'] then
d. Baris 11 diubah menjadi
m := UpCase(S[i]);
e. Baris 13 diubah menjadi
Inc(J[Upcase(m)]);
88. Deklarasi manakah yang tidak diizinkan oleh
compiler Turbo Pascal?
a. type X = string[1];
b. type X = array[1..50000] of Char;
c. type X = array[-1000..1000] of LongInt;
d. type X = array[0..30000] of LongInt;
e. type X = array[-20000..-10000] of LongInt;
89. Misalkan A dan B bertipe Integer dan masing-
masing bernilai 10 dan 4. Ekspresi mana yang menghasilkan
nilai 5?
a. A div 7 * B
b. B div 7 * A
c. A * B div 7
d. A * B / 7
e. semua benar
90. I dan J masing-masing adalah Integer yang
masing-masing bernilai 13000 dan 5, dan L adalah variabel
bertipe LongInt. Ekspresi manakah yang bisa menghasilkan
nilai 65000 dengan tepat dalam bahasa Pascal?
a. L := I * J;
b. L := LongInt(I * J);
c. L := LongInt(J * I);
d. L := LongInt(I) * J;
e. semua sama benarnya
~ Selamat Mengerjakan ~
Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 13/13

More Related Content

What's hot

Algo temu 4 struktur dasar algoritma
Algo temu 4 struktur dasar algoritmaAlgo temu 4 struktur dasar algoritma
Algo temu 4 struktur dasar algoritmaSenna Hendrian
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antaraGunawan Manalu
 
Algoritma dan pemrograman 1
Algoritma dan pemrograman 1Algoritma dan pemrograman 1
Algoritma dan pemrograman 1Javra Ketoprak
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantikyuster92
 
Looping Algoritma
Looping AlgoritmaLooping Algoritma
Looping AlgoritmaFirdaus1212
 
Logika algoritma
Logika algoritmaLogika algoritma
Logika algoritmairwanhs
 
Analisis Semantik - P6
Analisis Semantik - P6Analisis Semantik - P6
Analisis Semantik - P6ahmad haidaroh
 
Algo temu 6 & 7 - PENGULANGAN
Algo temu 6 & 7 - PENGULANGANAlgo temu 6 & 7 - PENGULANGAN
Algo temu 6 & 7 - PENGULANGANSenna Hendrian
 
Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Damun Setiaji
 

What's hot (18)

Algo temu 4 struktur dasar algoritma
Algo temu 4 struktur dasar algoritmaAlgo temu 4 struktur dasar algoritma
Algo temu 4 struktur dasar algoritma
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
Topik 8 Perulangan
Topik 8 PerulanganTopik 8 Perulangan
Topik 8 Perulangan
 
Algoritma dan pemrograman 1
Algoritma dan pemrograman 1Algoritma dan pemrograman 1
Algoritma dan pemrograman 1
 
modul algoritma Bab 2
modul algoritma Bab 2modul algoritma Bab 2
modul algoritma Bab 2
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
 
Looping Algoritma
Looping AlgoritmaLooping Algoritma
Looping Algoritma
 
Kompilasi13 ka p (2)
Kompilasi13 ka p (2)Kompilasi13 ka p (2)
Kompilasi13 ka p (2)
 
Kompilasi13 ka p (1)
Kompilasi13 ka p (1)Kompilasi13 ka p (1)
Kompilasi13 ka p (1)
 
Logika algoritma
Logika algoritmaLogika algoritma
Logika algoritma
 
Latihan latihan logika algoritma
Latihan latihan logika algoritmaLatihan latihan logika algoritma
Latihan latihan logika algoritma
 
02 notasi algoritma
02   notasi algoritma02   notasi algoritma
02 notasi algoritma
 
notasi algoritma
notasi algoritmanotasi algoritma
notasi algoritma
 
Analisis Semantik - P6
Analisis Semantik - P6Analisis Semantik - P6
Analisis Semantik - P6
 
Pemrograman Komputer - Pertemuan 1
Pemrograman Komputer - Pertemuan 1Pemrograman Komputer - Pertemuan 1
Pemrograman Komputer - Pertemuan 1
 
Algo temu 6 & 7 - PENGULANGAN
Algo temu 6 & 7 - PENGULANGANAlgo temu 6 & 7 - PENGULANGAN
Algo temu 6 & 7 - PENGULANGAN
 
Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1
 
Algoritma flowchart
Algoritma flowchartAlgoritma flowchart
Algoritma flowchart
 

Viewers also liked

Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...drsolapurkar
 
Corruption Shriniwas Kashalikar
Corruption Shriniwas KashalikarCorruption Shriniwas Kashalikar
Corruption Shriniwas Kashalikardrsolapurkar
 
Sinus And Other Troubles Dr
Sinus And  Other  Troubles      DrSinus And  Other  Troubles      Dr
Sinus And Other Troubles Drdrsolapurkar
 
Concept Of Healthy Aging Dr. Shriniwas Kashalikar
Concept Of Healthy Aging  Dr. Shriniwas KashalikarConcept Of Healthy Aging  Dr. Shriniwas Kashalikar
Concept Of Healthy Aging Dr. Shriniwas Kashalikardrsolapurkar
 
Accidents Holistic Solutons Dr
Accidents  Holistic  Solutons  DrAccidents  Holistic  Solutons  Dr
Accidents Holistic Solutons Drdrsolapurkar
 
Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...
Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...
Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...Torben Haagh
 
La logisitca del Software OSS
La logisitca del Software OSSLa logisitca del Software OSS
La logisitca del Software OSSStefano La Gona
 
La logisitca del software oss
La logisitca del software ossLa logisitca del software oss
La logisitca del software ossStefano La Gona
 
E-Rate PowerPoint Presentation
E-Rate PowerPoint PresentationE-Rate PowerPoint Presentation
E-Rate PowerPoint Presentationblocheed
 
Research into institutions that distribute
Research into institutions that distributeResearch into institutions that distribute
Research into institutions that distributeebainbridge
 

Viewers also liked (16)

Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
 
Corruption Shriniwas Kashalikar
Corruption Shriniwas KashalikarCorruption Shriniwas Kashalikar
Corruption Shriniwas Kashalikar
 
P R O B L E M Dr
P R O B L E M  DrP R O B L E M  Dr
P R O B L E M Dr
 
Sinus And Other Troubles Dr
Sinus And  Other  Troubles      DrSinus And  Other  Troubles      Dr
Sinus And Other Troubles Dr
 
Concept Of Healthy Aging Dr. Shriniwas Kashalikar
Concept Of Healthy Aging  Dr. Shriniwas KashalikarConcept Of Healthy Aging  Dr. Shriniwas Kashalikar
Concept Of Healthy Aging Dr. Shriniwas Kashalikar
 
Accidents Holistic Solutons Dr
Accidents  Holistic  Solutons  DrAccidents  Holistic  Solutons  Dr
Accidents Holistic Solutons Dr
 
Corporat.93
Corporat.93Corporat.93
Corporat.93
 
Tugas DKKMN
Tugas DKKMNTugas DKKMN
Tugas DKKMN
 
Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...
Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...
Artursson, Matsson, and Karlgren study in vitro models used for predicting DD...
 
La logisitca del Software OSS
La logisitca del Software OSSLa logisitca del Software OSS
La logisitca del Software OSS
 
Forms of the implementation of a democracy in Ukraine
Forms of the implementation of a democracy in UkraineForms of the implementation of a democracy in Ukraine
Forms of the implementation of a democracy in Ukraine
 
La logisitca del software oss
La logisitca del software ossLa logisitca del software oss
La logisitca del software oss
 
E-Rate PowerPoint Presentation
E-Rate PowerPoint PresentationE-Rate PowerPoint Presentation
E-Rate PowerPoint Presentation
 
543 1968-1-pb
543 1968-1-pb543 1968-1-pb
543 1968-1-pb
 
Research into institutions that distribute
Research into institutions that distributeResearch into institutions that distribute
Research into institutions that distribute
 
Trzy uwz
Trzy uwzTrzy uwz
Trzy uwz
 

Similar to TOKI 1999 NUS: 99

Soal Pascal OSN Komputer
Soal Pascal OSN KomputerSoal Pascal OSN Komputer
Soal Pascal OSN KomputerLabieb Maududi
 
Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015
Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015
Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015Saprudin Eskom
 
Algoritma & Pemograman - 02. Variabel dan Tipe Data
Algoritma & Pemograman - 02. Variabel dan Tipe DataAlgoritma & Pemograman - 02. Variabel dan Tipe Data
Algoritma & Pemograman - 02. Variabel dan Tipe DataFakhrian Fadlia Adiwijaya
 
Logika pemrograman hand out
Logika pemrograman hand outLogika pemrograman hand out
Logika pemrograman hand outgivaro igfar
 
Modul praktikum-algo-pemro
Modul praktikum-algo-pemroModul praktikum-algo-pemro
Modul praktikum-algo-pemroFaisal Amir
 
Modul pascal lengkap
Modul pascal lengkapModul pascal lengkap
Modul pascal lengkapsmk2kuripan
 
Modul Pascal.pdf
Modul Pascal.pdfModul Pascal.pdf
Modul Pascal.pdfsylaaulia
 
Modul Pascal Mengenal Flowchart
Modul Pascal Mengenal FlowchartModul Pascal Mengenal Flowchart
Modul Pascal Mengenal FlowchartIrwien Andriyanto
 
Modul pascal
Modul pascalModul pascal
Modul pascaldanver98
 
Modul pascal
Modul pascalModul pascal
Modul pascalshediazz
 
Pascal 4-aturan-penulisan-pascal
Pascal 4-aturan-penulisan-pascalPascal 4-aturan-penulisan-pascal
Pascal 4-aturan-penulisan-pascaladealfarisi
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahBraga Rezpect
 
Minggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxMinggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxAnnaUrnika1
 

Similar to TOKI 1999 NUS: 99 (20)

Soal Pascal OSN Komputer
Soal Pascal OSN KomputerSoal Pascal OSN Komputer
Soal Pascal OSN Komputer
 
Alpro referensi
Alpro referensiAlpro referensi
Alpro referensi
 
Pseudocode
PseudocodePseudocode
Pseudocode
 
modul algoritma Bab 1
modul algoritma Bab 1modul algoritma Bab 1
modul algoritma Bab 1
 
Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015
Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015
Soal UAS Pemrograman Dasar Kelas 11 SMK semester ganjil tahun ajaran 2014-2015
 
Soalprogdasx
SoalprogdasxSoalprogdasx
Soalprogdasx
 
Algoritma & Pemograman - 02. Variabel dan Tipe Data
Algoritma & Pemograman - 02. Variabel dan Tipe DataAlgoritma & Pemograman - 02. Variabel dan Tipe Data
Algoritma & Pemograman - 02. Variabel dan Tipe Data
 
Tugas alogaritma
Tugas alogaritmaTugas alogaritma
Tugas alogaritma
 
Logika pemrograman hand out
Logika pemrograman hand outLogika pemrograman hand out
Logika pemrograman hand out
 
Modul praktikum-algo-pemro
Modul praktikum-algo-pemroModul praktikum-algo-pemro
Modul praktikum-algo-pemro
 
Uts alpro ii
Uts alpro iiUts alpro ii
Uts alpro ii
 
Modul pascal lengkap
Modul pascal lengkapModul pascal lengkap
Modul pascal lengkap
 
Modul Pascal.pdf
Modul Pascal.pdfModul Pascal.pdf
Modul Pascal.pdf
 
Modul Pascal Mengenal Flowchart
Modul Pascal Mengenal FlowchartModul Pascal Mengenal Flowchart
Modul Pascal Mengenal Flowchart
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
Pascal 4-aturan-penulisan-pascal
Pascal 4-aturan-penulisan-pascalPascal 4-aturan-penulisan-pascal
Pascal 4-aturan-penulisan-pascal
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
6 lanjutan perulangan
6 lanjutan perulangan6 lanjutan perulangan
6 lanjutan perulangan
 
Minggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxMinggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptx
 

TOKI 1999 NUS: 99

  • 1. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ Petunjuk Pengerjaan Soal 1. Baca dan kerjakan setiap soal dengan hati-hati dan seteliti mungkin. 2. Setiap soal memiliki bobot yang sama—sebab itu jangan terpaku pada satu soal yang Anda rasa sulit. Kerjakan soal yang Anda rasa paling mudah dahulu. 3. Setiap soal hanya memiliki satu jawab yang paling benar. Pada beberapa soal Anda mungkin menjumpai beberapa pilihan yang menurut Anda sama-sama benar. Anda harus memikirkan baik-baik, jawaban manakah yang paling tepat. 4. Beberapa soal mengacu pada baris tertentu dalam program. Baris yang dimaksud akan ditunjukkan oleh komentar program, seperti: {baris-16}. Gunakan pemandu ini untuk mengacu pada baris yang dimaksud dalam soal. 5. Jangan risau dengan soal yang salah—soal yang salah akan dianulir (dihapuskan). Bila Anda menemukan kesalahan, laporkan hal tersebut pada akhir sesi, bukan pada saat mengerjakan soal. Walaupun demikian, pengetikan soal ini sudah diusahakan seteliti mungkin, jadi jangan terburu-buru menganggap setiap keanehan sebagai kesalahan soal!! 6. Berikut ini adalah set karakter yang digunakan dalam semua listing program. Gunakan daftar ini untuk menghilangkan keragu-raguan untuk huruf yang mirip: ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 7. Berikut ini adalah beberapa istilah yang akan muncul dalam soal-soal: • Runtime error: kesalahan (error) yang terjadi pada saat program dijalankan. Bila runtime error terjadi, akan tampil pesan seperti “Runtime error 100 at 0000:03D5” dan program tersebut segera dihentikan. • Compile error: kesalahan yang terjadi dalam penerjemahan program Pascal (sebelum program tersebut bisa dijalankan). • Ekspresi: bagian dari sebuah perintah Pascal, yang menghasilkan nilai tertentu. Misalnya, di dalam perintah Writeln(I * 2 + 5), maka I * 2 + 5 adalah ekspresi. Bila Anda tidak pernah mendengar istilah ekspresi sebelumnya, pandanglah ekspresi sebagai “rumus” yang ditulis dalam bahasa Pascal. • Parameter (di dalam fungsi/prosedur): ekspresi yang disertakan di dalam tanda kurung di dalam pemanggilan fungsi atau prosedur tersebut. Misalnya, dalam perintah Writeln('Jumlah = ', J); ekspresi 'Jumlah = ' dan J adalah parameter dari prosedur Writeln. Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 1/13
  • 2. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ 1. Manakah yang boleh digunakan sebagai nama variabel? a. Baris_25 b. 25Baris c. Tgl.Lahir d. Rata-Rata e. Tempat&Tanggal 2. Cara yang benar untuk mendeklarasikan string adalah a. var a: string of Char; b. var a: string[1..255]; c. var a: string[0..255]; d. var a: string[255]; e. var a: string[255] of Char; 3. Perintah manakah yang mendeklarasikan sebuah tipe enumerasi: a. type a = Integer; b. type a = 1..540; c. type a = (Buruk, Sedang, Bagus); d. type a = set of (Buruk, Sedang, Bagus); e. type a = [Buruk, Sedang, Bagus]; 4. Bagaimana cara mendefinisikan sebuah record? a. type a = record of s: String; d: Integer; b: Boolean; end; b. type a: record s: String; d: Integer; b: Boolean; end; c. record a = (s: String; d: Integer; b: Boolean); d. type a = record s: String; d: Integer; b: Boolean; end; e. type a = record of (s: String; d: Integer; b: Boolean); 5. Tipe data apa yang tidak boleh menjadi anggota (field) dari sebuah record? a. pointer b. array c. pointer dari record yang bertipe sama dengan record tersebut d. record yang bertipe lain dari record tersebut e. salah semua 6. Bagaimana cara mendefinisikan pointer yang menunjuk data bertipe Integer? a. pointer of Integer b. @Integer c. ^Integer d. Integer^ e. *Integer 7. Deklarasi prosedur manakah yang tidak dibenarkan: a. procedure Hapus; b. procedure Hapus(Nama: String); c. procedure Hapus(var Nama: String); d. procedure Hapus(Ukuran: Integer; var Data); e. procedure Hapus(Ukuran: Integer): Boolean; 8. Deklarasi fungsi manakah yang salah? a. function Density(X: Real): Real; b. function Density(X: Real): var; c. function Density(X: Real): Pointer; d. function Density(X: Real): Strij ng; e. function Density(var X): Boolean; 9. Manakah yang mendeklarasikan A sebagai konstanta bertipe (typed constant) dengan tepat? a. const A = 350; b. const B = 35; A = B * 10; c. const A: Real = 350; d. const A = Integer(350); e. const B: Integer = 35; A = B * 10; 10. Bagaimana cara mendefinisikan konstanta yang berupa array berukuran 3×3? a. const A[3,3] = ((1,2,3), (2,3,4), (3,4,5)); b. const A: array[3, 3] = (1,2,3, 2,3,4, 3,4,5); c. const A: array[1..3, 1..3] of Byte = ((1,2,3), (2,3,4), (3,4,5)); d. const A: array[1..3, 1..3] of Byte = (1, 2, 3, 2, 3, 4, 3, 4, 5); e. const array[3,3] A = (1,2,3, 2,3,4, 3,4,5); 11. Dengan bantuan deklarasi berikut: type P = (Magenta, Kuning, Sian); R = array[1..3] of Byte; S = set of Char; Tentukan manakah yang tidak benar: a. type A = array[True..False] of String; b. type B = array[P] of String; c. type C = array[Magenta..Sian] of String[7]; d. type D = array[-6..6] of R; e. type E = array[1..20] of S; 12. Deklarasi manakah yang tidak benar? a. type T = record A, B, C: Integer end; var V: T; b. type T = record A, B, C: Integer end; P = ^T; var V: ^P; c. type T = record A, B, C: Integer end; P = ^T; A = array[1..32] of P; var V: A; d. type T = record A, B, C: Integer end; A = array[1..32] of T; var ^V: ^A; Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 2/13
  • 3. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ e. type T = record A, B, C: ^Integer end; A = array[1..32] of T; var V: A; 13. Misalkan Menu adalah sebuah variabel bertipe record dengan anggota (field) sebagai berikut: - Nama bertipe string - Harga bertipe Real - PPN bertipe Boolean Perintah manakah yang tidak dibenarkan? a. with Menu do Nama := 'Opor ayam'; b. Menu.Harga := Menu.Harga * 1.20; c. Menu.PPN := Menu.Harga > 15000; d. with Menu do if PPN then Harga := Harga * 1.15; e. if Menu.PPN then Menu.Harga := Harga * 1.15; 14. Daftar kata manakah yang hanya berisi operator dalam bahasa Pascal? a. mod, div, or, in b. not, and, mod, for c. Read, EOF, Write, Writeln d. array, record, set, object e. Char, Integer, Pointer, Real 15. Deklarasi manakah yang tidak benar? a. var E: set of Char; b. var E: set of (Sapi, Kelinci, Domba, Ayam); c. var E: set of Byte; d. var E: set of String; e. var E: set of 1..15; 16. Dengan deklarasi sebagai berikut, type Warna = (Merah, Kuning, Hijau, Biru); var W: Warna; perintah manakah yang tidak benar? a. if W in [Warna] then Writeln('Ada'); b. W := Merah; W := W + Kuning; c. W := [Merah]; d. W := Hijau; Dec(W); e. W := "Merah"; 17. Program manakah yang ditulis dengan benar? a. uses Crt; program Sederhana; var I, J: Integer; begin for I := 1 to 3 do for J := I+1 to 4 do Writeln(I, J); end. b. program Matematika; var R: Real; begin R := 0; while (R <= 1) do begin Writeln(R, ' ', Sqrt(R)); R := R + 0.1; end; end. c. uses Crt; var A: String; program Utama; begin Readln(A); Writeln('Halo, ', A); end. d. var B: Byte; begin B := 3; repeat Writeln(B); B := B + 10; while B < 100; end. e. var A: Integer; B, C: Real; begin B := 0; for A := 1 to 15 do Readln(C); B := B + C; end; Writeln(B / 15); end. Gunakan deklarasi variabel berikut untuk menjawab soal- soal di bawah ini: type Nilai = 0..10; var I: Integer; P: Pointer; A: ^I; B: ^Integer; C: ^Nilai; D: ^String; E: ^Pointer; 18. Deklarasi variabel manakah yang salah? a. A b. B c. C d. D e. E 19. Perintah manakah yang benar? a. P := @B; b. @I := B; c. E := ^nil; d. B := ^I; e. @C := nil; 20. Perintah mana yang menunjukkan cara mengalokasikan memori dengan tepat? a. B^ := 100; b. New(P); c. New(B); d. New(B^); e. GetMem(B); 21. Bagaimana cara mengakhiri penggunaan variabel dinamis dengan benar (mendealokasikan memori yang ditempati oleh variabel dinamis)? a. Dispose(E); b. E := nil; c. FreeMem(E); Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 3/13
  • 4. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ d. E^ := nil; e. @E := nil; 22. Bagaimana cara memberi nilai pada variabel dinamis? a. New(B) := 100; b. ^B := 100; c. B^ := 100; d. New(B); e. GetMem(B); 23. Dengan tetap menggunakan deklarasi variabel di atas, perhatikan potongan program berikut ini: I := 31; B := @I; B^ := I * 10 + B^; berapakah nilai akhir I setelah tiga baris program tersebut dijalankan? a. 310 b. 341 c. 620 d. 31 e. semua jawaban salah 24. Dengan deklarasi sebagai berikut, var S: String; I, J: Integer; C: Char; maka penggunaan perintah case yang benar adalah: a. case Upcase(C) of 'L': S := 'Large'; I := 40; 'M': S := 'Medium'; I := 38; 'S': S := 'Small'; I := 36; end; b. case C of 'L', 'l': S := 'Large'; 'M', 'm': S := 'Medium'; 'S', 's': S := 'Small'; end; c. case I of < 100: S := 'Too small'; 100..300: S := 'Normal'; > 300: S := 'Too large'; end; d. case J / I of 2: S := 'Double'; 3: S := 'Triple'; 4: S := 'Quadruple'; end; e. case S of 'Open': I := 1; 'Save': I := 2; 'Quit': I := 3; end; 25. Bagaimana cara menuliskan konstanta bertipe record? a. Turbo Pascal tidak mengizinkan konstanta yang bertipe record. b. type Rec = record A: String; B: Integer; end; const R: Rec = (A: 'Kata'; B: 135); c. type Rec = record A: String; B: Integer; end; const R: Rec = (R.A: 'Kata'; R.B: 135); d. type Rec = record A: String; B: Integer; end; const R: Rec = ('Kata', 135); e. type Rec = record A: String; B: Integer; end; const Rec R = (.A = 'Kata', .B = 135); Gunakan deklarasi berikut untuk soal-soal di bawah ini: var C: Char; S: String; I: Integer; R: Real; L: LongInt; W: Word; begin C := 'a'; S := 'Kata '; I := 5; R := 2.50; L := 25; end. 26. Perintah manakah yang diizinkan dalam bahasa Pascal? a. S := S + C; b. S := 'Jumlahnya ' + I + S; c. S := I; d. I := I + R; e. C := C + #1; 27. Perintah mana yang tidak diizinkan dalam bahasa Pascal? a. S := C + S; b. I := Ord(C); c. Inc(R); d. I := I * 3 + L * 2; e. R := I * 3 + 4; 28. Pada bagian awal program di atas, setiap variabel diberi nilai awal (misalnya, I diisi 5, R diisi 2.50). Dengan nilai-nilai awal tersebut, berapakah hasil dari ekspresi I + L / R * I a. 60 b. 55 c. 75 d. 7 e. 2.4 29. Bila ekspresi pada soal sebelumnya diganti menjadi I + (L / R) * I berapakah hasil dari ekspresi ini? a. 60 b. 55 c. 75 d. 7 e. 2.4 30. Perintah mana yang tidak valid dalam bahasa Pascal? a. R := Ord(C); b. L := Ord(C); Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 4/13
  • 5. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ c. I := Ord(S[1]); d. I := Ord(S); e. C := S[1]; 31. Perintah mana yang tidak valid dalam bahasa Pascal? a. R := 10; b. I := 42000; c. S := #130; d. L := 65536; e. S := #13; S := S + #10; 32. Ekspresi atau perintah mana yang tidak diperbolehkan? a. Dec(L, I); b. Pred(S[0]); c. Inc(C); d. Succ(R); e. Ord(I); 33. Ekspresi mana yang diperbolehkan dalam bahasa Pascal, tetapi selalu bernilai False? a. W > 0 b. C = '' c. S <> '' d. S[0] < 0 e. S[0] = #0 34. Ekspresi manakah yang tidak diizinkan dalam Pascal? a. if I = R then Writeln(R); b. if R = I then Writeln(R); c. if I = Round(R) then Writeln(R); d. if I = 3 and R = 4.5 then Writeln(R); e. if R = Round(I / 3) then Writeln(R); 35. Ekspresi manakah yang tidak dapat dipakai sebagai syarat (kondisi) dalam perintah if? a. R = I and 5 b. not (I = 5) c. L or I and 3 d. (R = I) and (L and 5 = 4) e. semua ekspresi bisa dipakai Perhatikan program berikut: var I, J, K: Integer; L: Byte; begin I := 3; J := 4; {baris-5} K := 32; L := 0; { if-1: } if I + J and K = 0 then Writeln('Betul') else Writeln('Salah'); { if-2: } if (I = 2) and (J < I) or (K > I) then Writeln('Betul') else Writeln('Salah'); { if-3: } if not L in [1..120] then Writeln('Betul') else Writeln('Salah'); end. Program ini berisi tiga perintah if-then-else yang tidak saling berkaitan, yang masing-masing kita namai if-1, if- 2, dan if-3. Jawablah tiga pertanyaan berikut menggunakan program di atas. 36. Perintah if manakah yang penulisannya tidak benar? a. if-1 b. if-2 c. if-3 d. if-1 dan if-3 e. tidak ada perintah if yang salah 37. Perintah if mana sajakah yang akan menghasilkan output berupa tulisan “Betul”? a. if-1 b. if-2 c. if-3 d. if-1 dan if-2 e. if-2 dan if-3 38. Masih sehubungan dengan tiga “if” di atas, pernyataan manakah yang benar? Asumsikan bahwa nilai- nilai variabel I, J, K, dan L masih sama seperti program di atas. a. Ekspresi not L in [1..120] ekuivalen dengan L in [0, 121..255] b. Ekspresi I + J and K = 0 dalam if-1 ekuivalen dengan (I + J <> 0) and (K = 0) c. Tulisan yang dicetak oleh perintah if-1 akan berbeda dari semula bila kondisi if-1 diubah menjadi (I + J) and K = 0 d. Tulisan yang dicetak oleh perintah if-2 akan berbeda dari semula bila kondisi if-2 diubah menjadi ((I = 2) and (J < 1)) or (K > I) e. Semua pernyataan salah 39. Dengan deklarasi sebagai berikut, maka pernyataan manakah yang benar? type Drink = (Coke, Tea, Coffee, Juice); var D1, D2: set of Drink; begin D1 := [Coke, Tea]; D2 := [Tea, Coffee]; end. a. Ekspresi D1 * D2 menghasilkan set yang berisi [Coke, Tea, Coffee] b. Ekspresi D1 + D2 menghasilkan set yang berisi [Coke, Tea, Tea, Coffee], dengan dua elemen bernilai Tea. c. Ekspresi D1 - D2 menghasilkan set yang berisi [Coke, Coffee] d. Ekspresi D1 - D2 + [Coke..Juice] menghasilkan [] (set kosong) e. Ekspresi (D1 - D2) + (D2 - D1) menghasilkan set yang berisi [Coke, Coffee] 40. Bila fungsi ABC didefinisikan sebagai: function ABC(I: Integer): Integer; var J: Integer; begin Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 5/13
  • 6. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ J := 0; while I > 0 do begin Dec(I); J := J + I mod 5; {baris-8} I := I shr 1; end; ABC := J; end; berapakah hasil dari ABC(25)? a. 10 b. 0 c. 7 d. 40 e. Salah semua 41. Berapa nilai ABC(25) pada soal di atas, bila baris 8 pada fungsi ABC diubah menjadi: J := J + I mod 5 shl 1; a. 10 b. 5 c. 20 d. 14 e. 0 42. Apakah tampilan program berikut: var A, B: Integer; begin A := 100; B := 3; Dec(A, Pred(B)); {baris-5} Writeln(A, ' ', B); end. a. 96 3 b. 98 2 c. 98 3 d. 102 3 e. 14 3 43. Lihat kembali soal sebelumnya. Bagaimana output program bila baris 5 dan 6 diubah menjadi: Dec(A, Pred(A)); Writeln(A); a. 0 b. -1 c. 1 d. 99 e. 101 44. Apakah output dari program berikut? var S: string[12]; begin S := 'setia'; Writeln('#', S, '#'); S := S + ' sampai akhir'; Writeln('#', S, '#'); end. a. #setia# (Kemudian terjadi runtime error) b. #setia # #setia sampai# c. #setia# #setia sampai akhir# d. #setia# #setia sampai# e. #setia# #sampai akhir# 45. Fungsi manakah yang bisa menghasilkan nilai bertipe Integer ataupun Real? a. Sqrt b. Int c. Frac d. Sqr e. Salah semua 46. Pernyataan manakah yang salah? a. Ord(True) bernilai –1. b. Ord(False) bernilai 0. c. Bila C bertipe Char, maka Ord(C) bisa bernilai dari 0 sampai dengan 255. d. Ord(Succ(False)) adalah 1. e. Tidak ada pernyataan yang salah. 47. Pernyataan manakah yang benar? a. Bila W adalah variabel bertipe Word, maka Abs(W) selalu bernilai sama dengan W. b. Bila I adalah variabel bertipe Integer, maka Abs(I) selalu bernilai sama dengan I. c. Bila R adalah variabel bertipe Real, maka Abs(R) selalu bernilai sama dengan R. d. Bila R adalah variabel bertipe Real, maka Round(R) selalu bernilai sama dengan Int(R). e. Pernyataan di atas benar semua. 48. Bila R adalah variabel bertipe Real, maka nilai yang mungkin untuk Round(Frac(R) * 10) adalah: a. bilangan bulat dari 1 sampai dengan 10 b. bilangan bulat dari 0 sampai dengan 10 c. bilangan bulat dari 0 sampai dengan 9 d. sembarang bilangan real dari 0 sampai dengan 9 e. sembarang bilangan real dari 0 sampai dengan 10 49. Dengan bantuandeklarasi berikut, var S: String; K, L: String; begin S := 'Go TOKI 99 for Gold!'; K := 'Go'; L := 'go'; end. tentukan pernyataan manakah yang benar. a. ekspresi Pos(K, S) bernilai 1 b. ekspresi Pos(L, S) bernilai 1 c. ekspresi Copy(S, 3, Length(S)-3) + Copy(S, 1, 2) menghasilkan string 'TOKI 99 for Gold! Go' d. perintah Insert('toki', S, 4) menyebabkan S bernilai 'Go toki 99 for Gold!' e. perintah Insert(' Medal', S, Pos('Gold', S)) menyebabkan S bernilai 'Go TOKI 99 for Gold Medal!' 50. Ekspresi manakah yang bernilai False dalam Turbo Pascal? Gunakan deklarasi berikut ini bila diperlukan: type PInteger = ^Integer; var P: PInteger; a. SizeOf(String) = 255 Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 6/13
  • 7. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ b. SizeOf(PInteger) = 4 c. SizeOf(P^) = 2 d. SizeOf(Char) = SizeOf(Byte) e. SizeOf(Integer) > SizeOf(Byte) 51. Apakah output program di bawah ini? uses Crt; var I, J: Integer; begin I := 0; while I < 5 do for J := 1 to 8 do I := I + J; Writeln(I, '-', J); end. a. 5-3 b. 5-8 c. 6-3 d. 3-3 e. 36-8 52. Bagaimana keluaran program berikut ini? var I: Integer; begin I := 2; case I of 1, 3, 5, 7, 9: Writeln('Ganjil'); 2: Writeln('Prima genap'); 0..10: Writeln('Normal'); else Writeln('Tidak normal'); end; end; a. Prima genap b. Normal c. Prima genap Normal d. Normal Prima genap e. Prima genap Tidak normal Gunakan program berikut untuk menjawab dua soal di bawah ini: uses Crt; var I, J: Integer; A: array[1..3, 1..3] of Integer; begin for I := 1 to 3 do for J := 1 to 3 do A[I, J] := 0; for I := 1 to 3 do begin for J := 1 to 3 do A[J, I] := I * J; if I > 1 then for J := 1 to 3 do Inc(A[J, I - 1], A[J, I]); {baris- 12} end; for I := 1 to 3 do begin for J := 1 to 3 do Write(A[I, J], ' '); Writeln; end; end. 53. Bagaimana keluaran dari program tersebut? a. 1 2 3 2 4 6 3 6 9 b. 3 5 3 6 10 6 9 15 9 c. 3 6 9 5 10 15 3 6 9 d. 1 3 6 2 6 12 3 9 18 e. 1 2 3 3 6 9 6 12 18 54. Bagaimana keluaran program di atas bila perintah pada baris 12 diubah menjadi: Inc(A[I - 1, J], A[J, I]); a. 3 6 3 5 10 15 3 6 9 b. 3 6 9 5 10 15 3 6 9 c. 3 5 3 6 10 6 9 15 9 d. 3 5 3 6 10 6 3 15 9 e. Salah semua Perhatikan contoh program berikut: var I, J, K: Integer; begin I := 0; J := I - 1; K := 3; repeat {baris-6} I := J - 1; repeat Dec(K); Write('*'); until K = I; J := J + 1; K := J; Write('#'); until I = 0; {baris-15} end. 55. Apakah keluaran program di atas? a. ******#*#*# b. *****#*#*# c. ### d. *****#****#***# e. Tidak ada output sama sekali 56. Bila “repeat…until I = 0;” pada baris 6 dan 15 pada program di atas diganti menjadi “while I <> 0 do begin…end;”, bagaimana keluaran program sekarang? a. ******#*#*# b. *****#*#*# c. ### d. *****#****#***# e. Tidak ada output sama sekali Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 7/13
  • 8. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ Gunakan program berikut ini untuk menjawab beberapa pertanyaan selanjutnya: uses Crt; const Z1: set of Char = ['A','E','I','O','U']; const Z2: set of Char = ['a','e','i','o','u']; var UV, LV, UC, LC, OC: Integer; S: String; i: Integer; begin UV := 0; LV := 0; UC := 0; LC := 0; OC := 0; S := 'Tim Olimpiade Komputer Indonesia.'; for i := 1 to Length(S) do begin if S[i] in ['A'..'Z', 'a'..'z'] then if Upcase(S[i]) = S[i] then if S[i] in Z1 then Inc(UV) {baris-19} else Inc(UC) {baris-21} else if S[i] in Z2 then Inc(LV) {baris-24} else Inc(LC) {baris-26} else Inc(OC); {baris-28} end; Writeln(UV, ' ', UC, ' ', LV, ' ', LC, ' ', OC); end. 57. Apakah output dari program di atas? a. 12 13 2 2 4 b. 2 2 12 13 4 c. 2 2 13 12 4 d. 13 12 2 2 4 e. Salah semua 58. Pernyataan mana yang salah sehubungan dengan program di atas? a. Perintah pada baris 19 dikerjakan ketika S[i] bernilai 'I' b. Perintah pada baris 28 tidak dikerjakan ketika S[i] bernilai 'u' c. Perintah pada baris 21 dikerjakan ketika S[i] bernilai 'r' d. Perintah pada baris 24 tidak dikerjakan ketika S[i] bernilai 'T' e. Perintah pada baris 28 dikerjakan ketika S[i] bernilai '.' 59. Apakah output dari program berikut ini: var I, J, K: Integer; begin J := 3; K := 1; repeat Dec(J); for I := 1 to J do K := I + 5 * K; Dec(J); until J < 0; Writeln(K); end. a. 32 b. 42 c. 161 d. 1 e. Salah semua 60. Berapakah output dari program berikut ini: var I, J, K: Integer; begin K := 0; for I := 3 downto 1 do begin for J := 0 to I-1 do K := K + I; K := K - J; end; Writeln(K); end. a. 1 b. 11 c. 8 d. 10 e. Salah semua Perhatikan program berikut ini: var Z: array[0..19] of Char; C: Integer; I: Integer; S1, S2: String; procedure ZP(E: Char); begin if C < 20 then begin Z[C] := E; Inc(C); end; end; function ZG: Char; begin if C > 0 then begin Dec(C); ZG := Z[C]; end; end; begin C := 0; S1 := 'PERGI'; S2 := 'LIBUR'; for I := 1 to Length(S1) do begin ZP(S1[I]); ZP(S2[I]); end; S1 := ''; S2 := ''; while C > 0 do S1 := S1 + ZG; {baris- 32} Writeln(S1+S2); end. 61. Bagaimanakah output dari program di atas? a. PERGILIBUR b. LIBURPERGI c. RIUGBRIELP d. RUBILIGREP Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 8/13
  • 9. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ e. PLEIRBGUIR 62. Tetap menggunakan program di atas, bagaimanakah outputnya bila perintah pada baris 32 di atas diganti dengan baris-baris sebagai berikut: while C > 0 do begin S1 := S1 + ZG; S2 := ZG + S2; end; a. LIBURPERGI b. RUBILIGREP c. IGREPRUBIL d. PERGILIBUR e. RUBILPERGI Gunakan program di bawah ini untuk menjawab dua soal berikutnya: type DatRec = record Nama: String[15]; Lanjut: Integer; end; var Data: array[1..4] of DatRec; procedure Tukar(P1, P2: Integer); var T: DatRec; begin T := Data[P1]; Data[P1] := Data[P2]; Data[P2] := T; end; procedure Tampil; var I: Integer; begin I := 1; repeat Write(Data[I].Nama, ' '); I := Data[I].Lanjut; until I = 0; Writeln; end; begin Data[1].Nama := 'Andi'; Data[1].Lanjut := 3; Data[2].Nama := 'Budi'; Data[2].Lanjut := 0; Data[3].Nama := 'Rahmat'; Data[3].Lanjut := 4; Data[4].Nama := 'Gunadi'; Data[4].Lanjut := 2; Tampil; {baris-32} end. 63. Bagaimana keluaran program di atas? a. Andi Budi Rahmat Gunadi b. Gunadi Rahmat Budi Andi c. Andi Rahmat Gunadi Budi d. Andi Budi e. Gunadi Andi Rahmat Budi 64. Kita selipkan perintah Tukar(2, 3) sebelum baris 32 pada program di atas. Bagaimana keluaran program sekarang? a. Andi Rahmat Gunadi Budi b. Andi Budi c. Andi Gunadi Rahmat Budi d. Andi Budi Gunadi Rahmat e. Andi Rahmat Program berikut digunakan untuk beberapa soal di bawah ini: program Testing; uses Crt; {baris-2} var Kata: String; Bil: Integer; procedure Cek(var S: String; var I: Integer); var J: Integer; begin J := I; while (J < Length(S)) and (S[J] = ' ') do Inc(J); Delete(S, I, J - I); I := J - I; end; begin Kata := 'saya terpisah'; {baris-16} Bil := 5; Cek(Kata, Bil); Writeln('#', Kata, '#'); end. 65. Apa keluaran program di atas? a. #saya terpisah# b. #saya terpisah# c. #sayaterpisah# d. #saya# e. #terpisah# 66. Berapakah nilai Bil pada akhir eksekusi program? a. 5 b. 1 c. 2 d. 0 e. 12 67. Bila baris 16 dan 17 (lihat program di atas) diubah menjadi Kata := ' TOKI 1999 '; Bil := 12; maka keluaran program menjadi: a. #TOKI 1999# b. # TOKI 1999# c. # TOKI 1999 # d. # TOKI 1999 # e. #TOKI1999# 68. Apa keluaran program tersebut bila deklarasi prosedur di atas diubah menjadi procedure Cek(S: String; I: Integer); a. #saya terpisah# b. #saya terpisah# c. #sayaterpisah# d. #saya# e. #terpisah# 69. Apa yang terjadi bila klausa “uses Crt;” pada baris kedua di atas dihilangkan, kemudian program dijalankan? Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 9/13
  • 10. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ a. tidak ada keluaran apa pun yang dihasilkan b. program tetap berjalan seperti biasanya, dan tidak ada perubahan apa-apa c. semua output program tidak keluar di layar, tetapi di printer d. terjadi compile error e. terjadi runtime error Gunakan program berikut untuk menjawab pertanyaan- pertanyaan di bawah ini: uses Crt; var I, J: Integer; function Jumlah(N: Integer): Integer; var J, K: Integer; {baris-4} begin J := 0; for K := 1 to N do J := J + K; Jumlah := K; end; begin J := 12; for I := 1 to 3 do J := J + Jumlah(I); Writeln(J); end. 70. Apakah keluaran dari program tersebut? a. 9 b. 18 c. 12 d. 6 e. 3 71. Bila baris keempat program tersebut diganti menjadi var K: Integer; bagaimanakah keluaran program itu sekarang? a. 9 b. 18 c. 12 d. 6 e. 3 Perhatikan program ini untuk menjawab tiga pertanyaan berikutnya: var A: array[1..10] of Integer; J: Integer; function Sigma(I: Integer): Integer; begin if I <= 0 then Sigma := 0 else if Odd(I) then Sigma := Sigma(I-1) - A[I] {baris- 8} else Sigma := Sigma(I-1) + A[I]; {baris- 10} end; begin for J := 1 to 10 do Read(A[J]); Writeln(Sigma(10)); end. 72. Bagaimana keluaran program tersebut bila data yang diinputkan adalah: 1 2 3 4 5 6 7 8 9 10 a. 5 b. 55 c. 11 d. -5 e. Salah semua 73. Fungsi manakah yang 100% ekuivalen dengan fungsi Sigma(I) di atas? a. function Sigma(I: Integer): Integer; var K: Integer; begin K := 0; while I > 0 do begin K := K + A[I]; if Odd(I) then K := K - A[I]; Dec(I); end; Sigma := K; end; b. function Sigma(I: Integer): Integer; var K: Integer; B: Boolean; begin K := 0; while I > 0 do begin K := K + A[I]; if Odd(I) then K := -K; Dec(I); end; Sigma := K; end; c. function Sigma(I: Integer): Integer; var K: Integer; B: Boolean; begin K := 0; B := True; while I > 0 do begin if B then K := K - A[I] else K := K + A[I]; B := not B; Dec(I); end; Sigma := K; end; d. function Sigma(I: Integer): Integer; var K: Integer; begin K := 0; repeat if Odd(I) then Dec(K, A[I]) else Inc(K, A[I]); Dec(I); until I = 0; Sigma := K; end; e. function Sigma(I: Integer): Integer; var K: Integer; begin K := 0; while I > 0 do begin if Odd(I) then Dec(K, A[I]) else Inc(K, A[I]); Dec(I); Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 10/13
  • 11. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ end; Sigma := K; end; 74. Kita ubah baris 8 dan 10 dari program di atas menjadi Sigma := A[I] - Sigma(I-1) {baris-8} dan Sigma := A[I] + Sigma(I-1); {baris-10} Bagaimanakah keluaran program bila data yang diinputkan masih sama seperti sebelumnya (1 2 3 4 5 6 7 8 9 10)? a. -5 b. 55 c. 5 d. 11 e. Salah semua Gunakan program berikut ini untuk menjawab dua soal di bawah ini: program Uji; var T: Text; i, j, k: Integer; begin Assign(T, 'INPUT.TXT'); Reset(T); Readln(T, i, j, k); Writeln(i, ' ', j, ' ', k); Readln(T, i); Readln(T, j); Writeln(i, ' ', j); Close(T); end. 75. Misalkan file INPUT.TXT berisi baris-baris sebagai berikut: 3 1 4 9 5 2 6 8 7 0 Bagaimanakah output dari program tersebut? a. 3 1 4 9 5 2 6 8 7 b. 3 1 4 9 5 c. 3 1 4 5 2 d. 3 1 4 5 8 e. Terjadi runtime error karena isi file INPUT.TXT tidak sesuai untuk program ini. 76. Bila isi file INPUT.TXT adalah sebagai berikut, 1 3 2 4 5 6 bagaimana output program ini? a. 2 3 1 4 5 b. 1 0 0 3 2 c. 1 3 2 4 5 d. 1 3 2 5 6 e. Terjadi runtime error karena isi file INPUT.TXT tidak sesuai untuk program ini. Baris pertama dari sebuah file teks berisi tulisan sebagai berikut: Surabaya 35 195 232 Baris tersebut berisi empat data yang berbeda jenisnya. Data pertama berupa string yang boleh terdiri dari sembarang karakter kecuali spasi. Panjang string ini minimum 1 dan maksimum 20 karakter. Tiga data selanjutnya adalah bilang- an bulat yang masing-masing boleh bernilai 0 sampai dengan 1000. Di antara dua data yang berurutan diberikan pemisah berupa satu karakter spasi, dan tidak ada spasi di kiri data pertama maupun di kanan data terakhir. Gunakan definisi teks ini untuk menjawab tiga soal berikut ini: 77. Pilihlah tipe data terkecil yang dapat menampung data pertama dengan tepat! a. type Kata = string; b. type Kata = string[]; c. type Kata = string[19]; d. type Kata = string[20]; e. type Kata = string[21]; 78. Pilihlah tipe data terkecil yang dapat menampung data kedua, ketiga, atau keempat dengan tepat! a. type Bil = Integer; b. type Bil = ShortInt; c. type Bil = LongInt; d. type Bil = Byte; e. type Bil = Real; 79. Potongan program manakah yang benar dan paling efisien untuk membaca data dengan spesifikasi di atas? Asumsikan deklarasi berikut bila diperlukan: var D1: Kata; D2, D3, D4: Bil; F: Text; H: Char; I: Integer; Asumsikan juga bahwa file teks F sudah dibuka. a. Readln(F, D1, D2, D3, D4); b. Readln(F, D1); Readln(F, D2); Readln(F, D3); Readln(F, D4); c. Read(F, D1); Readln(F, D2, D3, D4); d. D1 := ''; repeat Read(F, H); if H <> ' ' then D1 := D1 + H; until H = ' '; Readln(F, D2, D3, D4); e. D1 := ''; for I := 1 to 20 do begin Read(F, H); if H <> ' ' then D1 := D1 + H; end; Readln(F, D2, D3, D4); 80. Bagaimana baris pertama dari output program ini? Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 11/13
  • 12. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ var I, J, K: Integer; begin J := 115; K := 2; Writeln('ABC->' :1, J:5, '<-'); for I := 1 to 3 do begin Inc(J, 10); Inc(K); Writeln('->', J:K, '<-'); end; end. a. ABC-> 115<- b. A-> 115<- c. ABC->115 <- d. ABC-> 115 115 115 115 115<- e. ABC->23<- 81. Lihat kembali program dalam soal sebelumnya. Bagaimana baris selanjutnya dari output program tersebut? a. ->125<- ->135 <- ->145 <- b. ->12<- ->135<- -> 145<- c. ->125<- -> 135<- -> 145<- d. ->125125125<- -> 135 135 135 135<- -> 145 145 145 145 145<- e. ->41<- ->33<- ->29<- 82. Untuk mengimplementasikan matriks dalam bahasa Pascal, kita pasti akan menggunakan data bertipe: a. record b. object c. pointer d. array e. set Gunakan program berikut ini untuk menjawab beberapa soal selanjutnya: uses Crt; var J: array['A'..'Z'] of Byte; c: Char; Kal: String; procedure HH(S: String); var i: Integer; {baris- 6} m: Char; begin for i := 1 to Length(S) do begin m := S[i]; {baris- 11} if m in ['A'..'Z'] then {baris- 12} Inc(J[i]); {baris- 13} end; end; begin for c := 'A' to 'Z' do J[c] := 0; Kal := 'PASAR'; HH(Kal); {baris- 19} for c := 'A' to 'Z' do if J[c] > 0 then Write(c, J[c], ' '); Writeln; Kal := 'RAYA'; HH(Kal); for c := 'Z' downto 'A' do if J[c] > 0 then Write(c, J[c], ' '); Writeln; end. 83. Bila terdapat kesalahan yang menyebabkan program sama sekali tidak dapat dijalankan, sebutkan pada baris berapa, dan bagaimana perbaikannya! a. Kesalahan semacam itu tidak ada b. Baris 12, seharusnya ditulis: if [m] in ['A'..'Z'] then c. Baris 6, seharusnya ditulis: var i: Char; d. Baris 13, seharusnya ditulis: Inc(J[m]); e. Indeks array hanya boleh berupa angka. Jadi deklarasi variabel seharusnya ditulis: const A = 1; Z = 26; var J: array[A..Z] of Byte; c: Byte; Kal: String; dan semua konstanta karakter dalam perintah for harus diganti, misalnya: for c := A to Z do dan seterusnya. 84. Dengan perbaikan seperti nomor sebelumnya (kalau ada), maka program bisa dijalankan. Apakah hasil dari program tersebut? a. A2 P1 R1 S1 A4 P1 R2 S1 Y1 c. A2 P1 R1 S1 Y1 R1 A2 c. A2 P1 R1 S1 Y1 R2 A4 d. P1 A2 S1 R1 Y1 A4 R2 e. A2 P1 R1 S1 Y1 S1 R2 P1 A4 85. Tindakan apakah yang dilakukan oleh subrutin HH ketika dipanggil oleh baris 19 program di atas, dengan string S berisi kata 'PASAR'? a. menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J. b. mengumpulkan huruf-huruf alfabet yang muncul lebih dari satu kali ke dalam array J. c. mencatat letak setiap huruf alfabet ke dalam array J. d. menentukan huruf yang paling sering dan paling jarang muncul dan menyimpannya dalam array J. e. mengurutkan huruf-huruf menurut urutan alfabet, dari yang terkecil sampai yang terbesar. 86. Perintah manakah yang bisa menggantikan baris 12 dari program di atas tanpa mengubah arti program sama sekali? a. if UpCase(m) in ['A'..'Z'] then Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 12/13
  • 13. Tim Olimpiade Komputer Indonesia 1999 NUS: 99___________ b. if (m > 'A') and (m < 'Z') then c. if (m >= 'A') and (m <= 'Z') then d. if (m > 'A') or (m < 'Z') then e. if (m >= 'A') or (m <= 'Z') then 87. Perbaikan apa yang perlu ditambahkan lagi agar huruf kecil juga diperhitungkan? a. Baris 12 diubah menjadi if UpCase(m) in ['A'..'Z'] then b. Baris 12 diubah menjadi if m in ['A'..'z'] then c. Baris 12 diubah menjadi if m in ['A'..'Z', 'a'..'z'] then d. Baris 11 diubah menjadi m := UpCase(S[i]); e. Baris 13 diubah menjadi Inc(J[Upcase(m)]); 88. Deklarasi manakah yang tidak diizinkan oleh compiler Turbo Pascal? a. type X = string[1]; b. type X = array[1..50000] of Char; c. type X = array[-1000..1000] of LongInt; d. type X = array[0..30000] of LongInt; e. type X = array[-20000..-10000] of LongInt; 89. Misalkan A dan B bertipe Integer dan masing- masing bernilai 10 dan 4. Ekspresi mana yang menghasilkan nilai 5? a. A div 7 * B b. B div 7 * A c. A * B div 7 d. A * B / 7 e. semua benar 90. I dan J masing-masing adalah Integer yang masing-masing bernilai 13000 dan 5, dan L adalah variabel bertipe LongInt. Ekspresi manakah yang bisa menghasilkan nilai 65000 dengan tepat dalam bahasa Pascal? a. L := I * J; b. L := LongInt(I * J); c. L := LongInt(J * I); d. L := LongInt(I) * J; e. semua sama benarnya ~ Selamat Mengerjakan ~ Seleksi Prakualifikasi TOKI 1999—Ujian Dasar Pemrograman Pascal Halaman 13/13