Dapatkan CD MP3 Murottal Al Qur'an dan Terjemahnya. Satu-satunya di Indonesia!!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Pembahasan Soal Olimpiade Komputer Provinsi 2005 #2


February 25th, 2009 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Mumpung ada waktu longgar, posting lagi ah artikel tentang pembahasan soal olimpiade komputer tingkat provinsi tahun 2005. Dalam artikel sebelumnya sudah saya posting artikel yang sama untuk #1.

Soal ke-3

Diketahui program Pascal berikut ini

var s1, s2, s : string; i, ins : integer;
begin
s1 := 'TOKI';
s2 := '2005';
for i:=1 to length(s1) do if (ord(s1) < 10) then ins := 1;
insert(s2, s1, ins);
s := s1 + s2;
writeln(s);
end.
[/sourcecode]

Outputnya adalah:
a. runtime error
b. TOK2005I2005
c. tidak ada output
d. 2005TOKI2005
e. 200TOKI5TOKI

Pembahasan:

Aduh... baru lihat programnya saja sudah pusing. Tapi.. eh, jangan pusing dulu. Coba baca kembali tips dan trik untuk mengerjakan soal olimpiade yang pernah saya posting sebelumnya. "Kalau di option jawabannya ada Runtime Error, maka cek semua rule dan aturan sintaksnya, siapa tahu ada kesalahan sehingga kita tidak perlu merunut semua proses dalam program". Nah... kita cek tips dan trik tersebut karena dalam option terdapat Runtime Error. OK let's check it out !!! :-)

Baris 1... gak ada masalah, baris 2... gak ada masalah, baris 3, 4 juga gak ada masalah. Baris 5... ada masalah gak ya? di situ ada function ord(). Function ord(X) akan mengembalikan bilangan bulat yang menunjukkan ordinalitas dari X yang bertipe data ordinal. Perhatikan perintah ord(s1) pada program. Di situ terlihat bahwa 's1' adalah bertipe data string.

Perlu diketahui bahwa tipe data ordinal adalah tipe data yang terurut valuenya. Tipe data yang termasuk ordinal antara lain integer (dan turunannya: shortint, longint, word, byte), boolean dan juga char.

Eh... btw, kok tipe data real tidak termasuk ordinal ya? Ya.. karena bilangan riil itu kan tidak dapat dinyatakan dalam bentuk urutan. Berapakah bilangan riil setelah 1? apakah 2? apakah 1.5? apakah 1.05 atau apakah 1.000001? tidak bisa bukan? karena di antara dua bilangan riil terdapat bilangan riil yang lain. Dengan demikian bilangan riil tidak bisa disajikan secara terurut. Nah.. di sini string juga bukan termasuk tipe data ordinal sehingga program di atas menimbulkan error.

Soal ke-4

Diberikan program berikut ini

var a, b, c, n, i : integer; bil : array [1..100] of integer;
begin
readln(n);
a := 1;
for i:=1 to n do
begin
c := a + b;
bil[i] := c;
a := b;
b := c;
end;
writeln(n);
end.
[/sourcecode]

Jika diberikan inputnya adalah 5, maka outputnya adalah:

a. 0
b. 13
c. 2 3 5 8 13
d. 5
e. runtime error

Pembahasan:

AWAS... di pilihan jawaban ada runtime error. Coba dicek dulu sintaks dan rulenya. Hmm.... kayaknya gak ada yang salah nih. Wah gawat kalo gak ada yang salah, karena kita harus merunut proses jalannya program. Tapi... perlukah? Tunggu dulu, coba perhatikan program di atas. Apa yang akan dijadikan sebagai output? Yap... tepat sekali yaitu nilai dari variabel 'n'. Di awal program nilai n ini adalah 5, karena berdasarkan soalnya nilai inputnya adalah 5, dalam hal ini 5 akan diberikan kepada n karena ada statement readln(n);

Trus... perhatikan lagi.. coba cek apakah ada kemungkinan nilai n berubah pada proses berikutnya? caranya ngecek gimana? ya... cari saja assignment yang berbentuk n := ...; Ternyata setelah dicek tidak ada. Berarti nilai n ini tidak pernah berubah, alias tetap sama dengan 5. Sehingga jawabannya adalah D.

Mudah bukan ternyata soal-soal olimpiade komputer? OK deh ini dulu yah, tunggu pembahasan berikutnya dari saya. Semoga tetap istiqomah dalam memposting hal-hal beginian :-)

VN:F [1.9.4_1102]
Rating: 10.0/10 (1 vote cast)
Pembahasan Soal Olimpiade Komputer Provinsi 2005 #2, 10.0 out of 10 based on 1 rating
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



Beberapa artikel terkait


Share this article on:

Kata kunci: komputer - olimpiade - pembahasan -


Ada 5 komentar dalam artikel ini.

  1. ivan says:

    waduh pak saya gak ngerti..??

  2. alijaya says:

    hmmm sori pak…
    kayaknya soal nomor 4 ntuh runtime error deh???
    pas dibagian sini
    c:=a+b;
    variable b blom didefinisiin…
    *bener gak ya?

  3. alijaya says:

    hmmm permisi pak :D , saya newbie nih disini…
    cuman mo nanya soal yang nomor 4 itu…
    kalo suatu bilangan integer ntuh gak dikasih value awalnya ntuh bakalan bernilai 0 ya???
    habis di code ada tulisan
    c = a+b;
    kalo b gak diketahui bukannya malahan akan terjadi runtime error?

  4. rosihanari says:

    @alijaya: betul sekali mas, tapi itu setahu saya hanya ada di Pascal. Beda dengan bahasa C/C++

  5. rosihanari says:

    @alijaya: kan sudah ada di bagian var nya mas?



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word