Archive for 2013
Prestasi 2013
Prestasi 2013
Tahun 2012
- Fitrah Ramadhan
- Ade Surya Ramadhan
- Ade Surya Ramadhan
Materi Olimpiade Komputer SMP
Materi Olimpiade Komputer SMP adalah :
1. Pengetahuan Umum Komputer (37,5 %)
2. Logika dan Analisa (37,5 %)
3. Pengetahuan Dasar Pemrograman Pascal (25 %)
Untuk lebih lengkap atau jika ada pertanyaan hubungi Fitrah (08972060167).
String
Operasi String
Pada latihan ini, program Anda harus membaca sebuah empat buah string yang kita beri nama S1, S2, S3, dan S4. Misalnya program Anda mendapat input seperti ini:
abcdehalofghi
bcd
halo
semua
Dijamin bahwa
string S1 mengandung sebuah string S2 di dalamnya. Buang string S2 yang
ditemukan di string S1 (dijamin ada, dan hanya satu). Kemudian sisipkan string
S4 pada posisi setelah string S3 yang ditemukan di string S1 (dijamin ada, dan
hanya satu). Jadi pada contoh di atas, abcdehalofghi diubah menjadi aehalofghi, lalu
menjadi aehalosemuafghi. Keluarkan string hasil akhir, yang pada contoh ini adalahaehalosemuafghi.
Untuk
menyelesaikan masalah tersebut, kita perlu mengenal berbagai fungsi-fungsi dan
prosedur-prosedur penanganan string yang disediakan oleh library Pascal yang
bisa kita gunakan. (Dapat dilihat di
http://community.freepascal.org:10000/docs-html/rtl/system/stringfunctions.html)
Fungsi-fungsi dan prosedur-prosedur yang akan kita gunakan adalah:
http://community.freepascal.org:10000/docs-html/rtl/system/stringfunctions.html)
Fungsi-fungsi dan prosedur-prosedur yang akan kita gunakan adalah:
function
length(s: string): integer;
function
pos(substr: string; s: string): integer;
procedure
delete(var s: string; index: integer; count: integer);
procedure
insert(s: string; var source: string; index: integer);
Fungsi length
akan mengembalikan panjang dari s.
Jika
string s mengandung string substr, fungsi pos akan mengembalikan index pertama dari
kemunculan pertama substr di dalam s (karakter pertama diberi index 1). Jika tidak ada, fungsi ini akan mengembalikan
0.
Prosedur delete
akan membuang sebanyak count karakter pada string s, dimulai dengan index ke-index. Misalnya, jika s pada mulanya adalah
'Halo', delete(s, 1,
2) akan mengubah isi s menjadi 'lo'.
Prosedur insert
akan memasukkan string s ke dalam string source, dimulai pada posisi index ke-index.
Untuk
menyelesaikan masalah awal, kita dapat membuat program sebagai berikut:
var
S1, S2, S3, S4: string;
begin
readln(S1);
readln(S2);
readln(S3);
readln(S4);
delete(S1, pos(S2, S1), length(S2));
insert(S4, S1, pos(S3, S1) + length(S3));
writeln(S1);
end.
Pada program di
atas, S2 di dalam S1 akan dibuang dari S1, dan selanjutnya S4 akan dimasukkan
ke dalam S1 tepat pada posisi pos(S3, S1) + length(S3), yaitu posisi karakter pertama yang
tidak termasuk S3, setelah kemunculan seluruh karakter S3 di dalam S1.
Namai program
tersebut dengan nama pjj0114 dan simpanlah dengan nama 'pjj0114.PAS'.
Contoh Masukan
abcdehalofghi
bcd halo semua
Contoh Keluaran
aehalosemuafghi
Masih banyak
fungsi-fungsi dan prosedur-prosedur lain yang mungkin berguna, yang bisa
dipelajari di
http://community.freepascal.org:10000/docs-html/rtl/system/index.html
http://community.freepascal.org:10000/docs-html/rtl/system/index.html
Berikut ini
adalah ringkasan dari beberapa fungsi yang mungkin berguna:
procedure
str(x: integer; var s: string);
Prosedur ini
akan mengubah nilai integer x menjadi string, lalu dimasukkan ke dalam
variabel s. Misalnya, jika x bernilai 10, s akan menjadi bernilai '10'.
function
lowerCase(s: string): string;
Fungsi ini akan
menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf kecil.
function
upCase(s: string): string;
Fungsi ini akan
menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf besar.
function
chr(b: byte): char;
Fungsi ini akan
mengembalikan sebuah karakter yang memiliki kode ASCII b. Misalnya chr(65) akan
mengembalikan "A".
function
ord(c: char): longint;
Fungsi ini akan
mengembalikan nilai bilangan bulat dari sebuah tipe ordinal. Biasanya fungsi
ini digunakan untuk menentukan kode ASCII dari karakter c. Misalnya, ord("A") akan
mengembalikan 65.
Kombinasi chr dan ord dapat digunakan untuk mengubah
sebuah karakter dari huruf kecil menjadi huruf besar, atau sebaliknya.
Misalnya,chr(ord("x")
+ (ord("A") - ord("a"))) akan
menghasilkan "X".
function
abs(l: longint): longint;
Fungsi ini akan
mengembalikan nilai absolut dari l. Misalnya, abs(-3) akan mengembalikan 3, dan abs(3) juga mengembalikan 3.
procedure
dec(var x: integer); procedure dec(var x: integer; decrement: integer);
Prosedur ini
akan mengurangi nilai x dengan 1, atau dengan nilai decrement jika
diberikan.
procedure
inc(var x: integer); procedure inc(var x: integer; increment: integer);
Prosedur ini
akan menambah nilai x dengan 1, atau dengan nilai increment jika diberikan.
function
sqr(x: longint): longint; function sqr(x: real): real;
Fungsi ini akan
mengembalikan kuadrat dari x.
function
sqrt(x: real): real;
Fungsi ini akan
mengembalikan akar kuadrat dari x.
function
trunc(x: real): integer;
Fungsi ini akan
mengembalikan bagian bilangan bulat dari sebuah bilangan real x. Misalnya, trunc(3.456) akan menghasilkan
3.
function
round(x: real): integer;
Fungsi ini akan
menghasilkan pembulatan dari sebuah bilangan real x. Pada Pascal, aturan pembulatan
untuk 0.5 adalah ke arah bilangan genap. Jadi, round(1.5) akan
menghasilkan 2, tetapi round(2.5) juga akan menghasilkan 2.
function
pi: real;
Fungsi ini
mengembalikan nilai pi (3.14159...).
String
Operasi String
Pada latihan
ini, program Anda harus membaca sebuah empat buah string yang kita beri nama
S1, S2, S3, dan S4. Misalnya program Anda mendapat input seperti ini:
abcdehalofghi
bcd
halo
semua
Dijamin bahwa
string S1 mengandung sebuah string S2 di dalamnya. Buang string S2 yang
ditemukan di string S1 (dijamin ada, dan hanya satu). Kemudian sisipkan string
S4 pada posisi setelah string S3 yang ditemukan di string S1 (dijamin ada, dan
hanya satu). Jadi pada contoh di atas, abcdehalofghi diubah menjadi aehalofghi, lalu
menjadi aehalosemuafghi. Keluarkan string hasil akhir, yang pada contoh ini adalahaehalosemuafghi.
Untuk
menyelesaikan masalah tersebut, kita perlu mengenal berbagai fungsi-fungsi dan
prosedur-prosedur penanganan string yang disediakan oleh library Pascal yang
bisa kita gunakan. (Dapat dilihat di
http://community.freepascal.org:10000/docs-html/rtl/system/stringfunctions.html)
Fungsi-fungsi dan prosedur-prosedur yang akan kita gunakan adalah:
http://community.freepascal.org:10000/docs-html/rtl/system/stringfunctions.html)
Fungsi-fungsi dan prosedur-prosedur yang akan kita gunakan adalah:
function
length(s: string): integer;
function
pos(substr: string; s: string): integer;
procedure
delete(var s: string; index: integer; count: integer);
procedure
insert(s: string; var source: string; index: integer);
Fungsi length
akan mengembalikan panjang dari s.
Jika
string s mengandung string substr, fungsi pos akan mengembalikan index pertama dari
kemunculan pertama substr di dalam s (karakter pertama diberi index 1). Jika tidak ada, fungsi ini akan mengembalikan
0.
Prosedur delete
akan membuang sebanyak count karakter pada string s, dimulai dengan index ke-index. Misalnya, jika s pada mulanya adalah
'Halo', delete(s, 1,
2) akan mengubah isi s menjadi 'lo'.
Prosedur insert
akan memasukkan string s ke dalam string source, dimulai pada posisi index ke-index.
Untuk
menyelesaikan masalah awal, kita dapat membuat program sebagai berikut:
var
S1, S2, S3, S4: string;
begin
readln(S1);
readln(S2);
readln(S3);
readln(S4);
delete(S1, pos(S2, S1), length(S2));
insert(S4, S1, pos(S3, S1) + length(S3));
writeln(S1);
end.
Pada program di
atas, S2 di dalam S1 akan dibuang dari S1, dan selanjutnya S4 akan dimasukkan
ke dalam S1 tepat pada posisi pos(S3, S1) + length(S3), yaitu posisi karakter pertama yang
tidak termasuk S3, setelah kemunculan seluruh karakter S3 di dalam S1.
Namai program
tersebut dengan nama pjj0114 dan simpanlah dengan nama 'pjj0114.PAS'.
Contoh Masukan
abcdehalofghi
bcd halo semua
Contoh Keluaran
aehalosemuafghi
Masih banyak
fungsi-fungsi dan prosedur-prosedur lain yang mungkin berguna, yang bisa
dipelajari di
http://community.freepascal.org:10000/docs-html/rtl/system/index.html
http://community.freepascal.org:10000/docs-html/rtl/system/index.html
Berikut ini
adalah ringkasan dari beberapa fungsi yang mungkin berguna:
procedure
str(x: integer; var s: string);
Prosedur ini
akan mengubah nilai integer x menjadi string, lalu dimasukkan ke dalam
variabel s. Misalnya, jika x bernilai 10, s akan menjadi bernilai '10'.
function
lowerCase(s: string): string;
Fungsi ini akan
menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf kecil.
function
upCase(s: string): string;
Fungsi ini akan
menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf besar.
function
chr(b: byte): char;
Fungsi ini akan
mengembalikan sebuah karakter yang memiliki kode ASCII b. Misalnya chr(65) akan
mengembalikan "A".
function
ord(c: char): longint;
Fungsi ini akan
mengembalikan nilai bilangan bulat dari sebuah tipe ordinal. Biasanya fungsi
ini digunakan untuk menentukan kode ASCII dari karakter c. Misalnya, ord("A") akan
mengembalikan 65.
Kombinasi chr dan ord dapat digunakan untuk mengubah
sebuah karakter dari huruf kecil menjadi huruf besar, atau sebaliknya.
Misalnya,chr(ord("x")
+ (ord("A") - ord("a"))) akan
menghasilkan "X".
function
abs(l: longint): longint;
Fungsi ini akan
mengembalikan nilai absolut dari l. Misalnya, abs(-3) akan mengembalikan 3, dan abs(3) juga mengembalikan 3.
procedure
dec(var x: integer); procedure dec(var x: integer; decrement: integer);
Prosedur ini
akan mengurangi nilai x dengan 1, atau dengan nilai decrement jika
diberikan.
procedure
inc(var x: integer); procedure inc(var x: integer; increment: integer);
Prosedur ini
akan menambah nilai x dengan 1, atau dengan nilai increment jika diberikan.
function
sqr(x: longint): longint; function sqr(x: real): real;
Fungsi ini akan
mengembalikan kuadrat dari x.
function
sqrt(x: real): real;
Fungsi ini akan
mengembalikan akar kuadrat dari x.
function
trunc(x: real): integer;
Fungsi ini akan
mengembalikan bagian bilangan bulat dari sebuah bilangan real x. Misalnya, trunc(3.456) akan menghasilkan
3.
function
round(x: real): integer;
Fungsi ini akan
menghasilkan pembulatan dari sebuah bilangan real x. Pada Pascal, aturan pembulatan
untuk 0.5 adalah ke arah bilangan genap. Jadi, round(1.5) akan
menghasilkan 2, tetapi round(2.5) juga akan menghasilkan 2.
function
pi: real;
Fungsi ini
mengembalikan nilai pi (3.14159...).