Monday, January 17, 2011

Soal Pascal Olympiade

Contoh soal Struktur Program Pascal
(Seleksi tingkat propinsi TOKI 2004)
87. Layout program dalam Pascal yang benar adalah:
a. program [identifier];
begin
type [identifier];
var [identifier];
[program utama];
end

b. program [identifier]
var [identifier]
begin
[program utama]
end;
procedure [identifier]
begin
end.

c. begin
end.

d. var [identifier]
begin
[program utama]
end;

e. type [identifier]
var [identifier]
begin
program [identifier]
[program utama]
end.

Pembahasan:
Struktur prorgam pascal yang benar adalah:

program [nama_program];
uses [nama_unit];
label [nama_label];
const [nama_konstanta];
type [nama_tipe];
var [nama_variabel];

procedure satu;
begin
... {statemen untuk prosedur satu}
end;

procedure dua;
begin
... {statemen untuk prosedur satu}
end;

function tiga:tipedata;
begin
... {statemen untuk prosedur satu}
end;

begin {awal program utama}

... {statemen-statemen dari program utama}

end. {akhir dari prorgam utama}

Dengan pengetahuan struktur program Pascal di atas, maka dapat disimpulkan struktur program Pascal yang benar adalah opsi c.
Kesalahan untuk opsi d adalah bahwa akhir dari program utama selalu menggunakan
END. (menggunakan titik) bukan END; (bukan titik koma)


Contoh soal deklarasi
(Seleksi tingkat propinsi TOKI 2004)

71. Deklarasi yang salah:
a. const i:integer=100;
b. var x:array[1..100][1..100] of byte
c. type Hari=(Senin,Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu)
d. var
_data=record
nama:string[10];
nis:string[10];
end;
e. var t:array['a'..'z'] of integer

Pembahasan:
Opsi a. BENAR, deklarasi tersebut merupakan deklarasi konstanta bertipe. Untuk mendeklarasikan konstanta bertipe adalah:
const identifier : tipedata = nilai
opsi b. SALAH. Cara mendeklarasikan tipe ada array pada bahasa Pascal adalah:
type identifier = array [tipe_indeks] of tipe_elemen
dimana
tipe_indeks adalah sembarang tipe dan tipe_elemen harus bertipe ordinal.
opsi c. BENAR, deklarasi tersebut adalah cara mendeklarasikan tipe enumerasi
opsi d. BENAR, deklarasi tersebut adalah cara mendeklarasikan tipe record
opsi e. BENAR, deklarasi tersebut adalah cara mendeklarasikan tipe array
Jawab b. var x:array[1..100][1..100] of byte
Contoh soal Tipe data
(Seleksi awal TOKI 2003)
55. Untuk mengimplementasikan matriks dalam bahasa Pascal, kita pasti menggunakan data:
a. record
b. object
c. pointer
d. array
e. set

Pembahasan:
Matriks adalah sekumpulan data numerik yang tersusun dalam bentuk baris dan kolom yang mempunyai tipe data sama.
opsi a.
record adalah sebuah tipe data terstruktur yang dapat menampung data dengan tipe data yang berbeda-beda.
opsi b. object adalah tipe data terstruktur yang dapat terdiri dari tipe data yang berbeda serta header method. Yang dimaksud method dalam sebuah objek adalah kumpulan modul yang dapat mengoperasikan objek tersebut.
opsi c. pointer adalah tipe data yang bersifat dinamis.
opsi d. array adalah sebuah tipe data terstruktur yang mempunyai komponen dalam jumlah yang tetap dan setiap komponen mempunyai tipe data yang sama.
opsi e. set adalah sebuah tipe data terstruktur yang mempunyai tipe data sama dan urutan datanya tidak diperhatikan.
Jawaban: b. array
Contoh soal statemen terstruktur
(Seleksi awal TOKI 1997)
30. Penggalan program sbb:
a:=10;b:=0;
repeat b:=b+1;a:=a-b;until a>b
writeln(a,b);

Berapa harga a yang dicetak?

a. 10
b. 1
c. 9
d. salah semua

Pembahasan:
Statemen repeat - until adalah statemen perulangan dengan pengujian kondisi di bawah. Perulangan dijalankan hingga kondisi pada until terpenuhi.
Dari soal di atas, dapat dibuat tabel untuk mempermudah perhitungan nilai a.

Nilai b Nilai a
0 10
1 9 -- statemen pertama b:=b+1;a:=a-b

dari tabel di atas, kondisi a>b telah terpenuhi, sehingga nilai akhir dari a adalah 9
Jawaban: c. 9
Contoh soal Prosedur dan fungsi
(Seleksi awal TOKI 1998)
13. Manakah yang salah:
a. function Gamma(I:Real):Real;
b. function Gamma(var I:Real):Real;
c. function Gamma(var I):Real;
d. function Gamma(I:Real);
e. semua deklarasi di atas benar

Pembahasan:
Deklarasi function pada Pascal adalah:

function identifier : type;
atau
function identifier (parameters) : type;

Sebuah fungsi harus mempunyai nama fungsi (identifier), formal parameter (parameters) dan harus mempunyai tipe hasil (type). Pada bahasa Pascal, sebuah prosedur atau fungsi dapat terdiri dari daftar formal parameter yang cara penulisannya: (params; params; ... params). Tiap grup formal parameter harus mengikuti cara penulisan di bawah ini:

identifier, identifier: type { value parameters }
var identifier, identifier: type { disebut dengan variable parameters }
var identifier, identifier { variable parameters tak bertipe }

Dengan mengetahui format penulisan di atas, dapat diketahui bahwa opsi d salah, karena tidak mempunyai tipe hasil. Sedangkan opsi c dapat dibenarkan, karena parameter pada fungsi merupakan variabel parameter tak bertipe.
Jawaban: d. function Gamma(I:Real);
Contoh soal Rekursi
(Seleksi awal TOKI 1997)
21. Penggalan program Pascal sbb:
Function fakto(n:byte):longint
begin
if n=0 then fakto:=0
else
fakto:=n*fakto(n-1)
end;

function di atas bila dipanggil dengan statemen y:=fakto(5) ; maka y berharga:
a. 0
b. 5
c. 120
d. salah semua

Pembahasan:
Yang dimaksud dengan rekursi adalah sebuah prosedur atau fungsi yang memanggil dirinya sendiri. Pada fungsi di atas, fungsi fakto dipanggil dengan parameter n-1, sehingga jika dipanggil fakto(5), maka proses akan nampak seperti diagram berikut:


Mula-mula FAKTO(5) dipanggil sehingga menyebabkan statemen n * FAKTO(n-1) dieksekusi, yang bemilai:
5 * FAKTO(4). FAKTO(4) akan mengeksekusi statemen:
4 * FAKTO(3). FAKTO(3) akan mengeksekusi statemen:
3 * FAKTO(2). FAKTO(2) akan mengeksekusi statemen:
2 * FAKTO(1). FAKTO(1) akan mengeksekusi statemen:
1 * FAKTO(0), FAKTO(0) sendiri bemilai 0, sehingga statemen:
1 * FAKTO(0) bemilai 0, yang berarti FAKTO(1) menghasilkan nilai 0 yang dikembalikan pada FAKTO(2),
2 * FAKTO(1) -> 2 * 0 = 0. Hasil 0 ini dikembalikan pada:
3 * FAKTO(2) -> 3 * 0 = 0. Hasil 0 ini dikembalikan pada:
4 * FAKTO(3) -> 4 * 0 = 0. Hasil 0 ini dikembalikan pada:
5 * FAKTO(4) -> 5 * 0 = 0.

Jawaban a. 0

Contoh soal File
(Seleksi Tingkat Propinsi TOKI 2004)
144. Bagaimana cara membuat sebuah file teks baru dengan fungsi standar Pascal?

a. var F : Text;
begin
Assign(F, 'MYTEXT.TXT');
Reset(F);
end.

b. var F: Text;
begin
Assign(F,'MYTEXT.TXT);
Rewrite(F);
end.

c. var F: Text;
begin
Rewrite(F, 'MYTEXT.TXT');
end.

d. var F: Text,
begin
Assign(F, 'MYTEXT.TXT);
Rewrite(F, 128);
end.

e. var F: Text'
begin
Assign(F,'MYTEXT.TXT');
Append(F);
end.

Pembahasan:
Text adalah salah satu dari tipe data file. Sebuah file yang dibuka dengan tipe data text, akan mempunyai karakteristik terdiri dari suatu baris dan setiap baris diakhir dengan tanda akhir baris (end of line). Akhir dari file text adalah tanda End of file (CTRL-Z).
Untuk membuat file pada Turbo Pascal adalah dengan menggunakan statemen: REWRITE, deklarasi untuk perintah REWRITE adalah:

procedure Rewrite(var F: File [; Recsize: Word ] );

di mana F adalah sembarang tipe file, sedangkan Recsize adalah digunakan apabila F adalah file tidak bertipe.

Jawaban: b.

Contoh soal Pointer
(Seleksi Tingkat Propinsi TOKI 2004)
138. Pemyataan manakah yang valid?
a. var A:^Integer;
b. var A:@Integer;
c. var A:Integer^;
d. var A^:Integer;
e. var ^A:Integer;

Pembahasan:
Tipe pointer adalah tipe data khusus yang bersifat dinamis. Bentuk umum dari deklarasi pointer adalah:
type identifier = ^tipedata
Tanda ^ di depan nama tipe data harus ditulis seperti apa adanya, berarti menunjukkan bahwa identifier adalah bertipe pointer. Tipedata yang digunakan bisa berupa sembarang tipe data seperti Integer, Char, Boolean ataupun Record.
Jawaban: a. var A:^Integer;

disadur dari berbagai sumber

No comments:

Post a Comment