MODUL PEMBINAAN ALGORITMIKA OLIMPIADE SA

MODUL PEMBINAAN ALGORITMIKA
OLIMPIADE SAINS NASIONAL
BIDANG INFORMATIKA
TINGKAT SMA

GO GET GOLD
Struktur program :

Judul Program

PROGRAM nama-program;

Blok Program
Bagian deklarasi
deklarasi label

LABEL nama-label;

deklarasi konstanta

CONST…………..;


deklarasi tipe

TYPE …………….;

deklarasi variabel

VAR ………………;

deklarasi prosedur

PROCEDURE nama-prosedur;
……………………………….;

deklarasi fungsi

FUNCTION nama-fungsi;
………………………….;

Bagian Pernyataan

begin
(statement)
…………;
…………;
end.

Contoh : Menghitung perkalian dua bilangan bulat

Program Perkalian;
var A,B,hasil

{Judul}
: integer;

{Deklarasi variabel}

begin
A := 2;

{Statemant}


B := 3;

{Statemant}

Hasil := A*B;

{Statement}

writeln (A,B,Hasil);

{Statement}

end.

Judul program sifatnya adalah optional, dan bila ditulis, harus terletak pada awal dari program dan
diakhiri dengan titik koma.
Bagian deklarasi digunakan bila di dalam program digunakan pengenal ( identifier). Identifier dapat
berupa label, konstanta, tipe, variabel, prosedur dan fungsi. Kalau suatu program menggunakan
identifier, Pascal menuntut supaya identifier tersebut diperkenalkan terlebih dahulu sebelum digunakan,

yaitu dideklarasikan terlebih dahulu pada bagian ini.
Beberapa aturan dalam program Pascal :



Akhir sebuah program Pascal ditandai dengan tanda baca titik ‘ . ‘ setelah END yang paling akhir.



Tanda titik koma ‘ ; ’ merupakan pemisah antar instruksi satu dengan lainnya.



Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma ’ ; ‘



Baris komentar diletakkan diantara tanda ‘(*’ dan ’*)’ atau diantara tanda ‘{’ dan ‘}’
Contoh :


Var

a : real;
b : real;

(*nilai bilangan pertama*)
{nilai bilangan kedua}

Statement (pernyataan)
Adalah instruksi atau gabungan instruksi, yang menyebabkan komputer melakukan aksi.

Type statement dalam Pascal terdiri atas :

1. Sederhana :
- menandai sebuah item data ke sebuah variabel (assigment statement)
contoh : c := b * 4
- pemanggilan procedure dan goto statement

2. Terstruktur:
- Compound Statement

contoh : begin
read (x) ;
y := x * 2;
write (y)
end.

- Repetitive Statement
contoh : for j := 1 to 10 do
write (count);

- Conditional Statement
contoh :

if x > 10 then write (a)
else write (b) ;

Komponen Dasar Program Pascal
Pola susun bahasa Pascal dibentuk dengan menggunakan komponen bahasa pemrograman yang umum,
yaitu :
1.


Simbol Dasar

2.

Reserved Word (kata pasti)

3.

Identifier (penyebut)

1.

Simbol Dasar.
Simbol dasar terdiri atas :
1. Simbol huruf, yaitu huruf A sampai dengan Z atau a sampai dengan z. (huruf besar dan
kecil).
2. Simbol angka atau digit yaitu : 0,1,2,3,4,5,6,7,8,9.
3. Simbol khusus, yaitu { } ( ) [ ]+ - * / ; := , ‘ = < > = :


2.

Reserved Word (kata pasti)
Reserved Word adalah suatu kata yang secara mutlak tidak boleh diartikan lain dan harus
digunakan sebagaimana yang telah didefinisikan atau ditentukan kegunaanya oleh bahasa Pascal.
Reserved word tidak dapat dipergunakan sebagai pengenal (identifier)

3.

Identifier (sebutan/pengenal)
Identifier merupakan sebuah kata yang digunakan sebagai nama atau sebutan terhadap sesuatu
didalam program. Pemakai dapat mendefinisikan sendiri suatu nama sebagai identifier.

Identifier ini terdiri atas :

1. Identifier Standar, yaitu identifier yang telah didefinisikan oleh bahasa pascal.
Contoh dari Identifier standar ini antara lain:
abs

ln


arctan

odb

boolean

pread

char

round

chr

read

cos

readln


eof

sqr

eoln

sqrt

exp

succ

Dan masih banyak lagi.

2. Identifier Non Standar; yaitu identifier yang didefinisikan oleh pemakai bahasa pascal;
misalnya;
Nama suatu program

Nama suatu variabel


Nama suatu konstanta

Nama suatu procedur

Identifier ini bebas, tetapi dengan ketentuan-ketentuan sebagai berikut :

1. terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf.
Huruf besar dan huruf kecil dianggap sama.
2. Tidak boleh mengandung blank.
3. Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah.
4. Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan.

Contoh :

Identifier
NasiBungkus
Belajar_Pascal
NO2
1_dua
Andi&tono
Penjuanglan bar

Keterangan
Benar
Benar
Benar
Salah, karakter pertama harus huruf
Salah, tidak boleh mengandung simbol khusus
Salah, tidak boleh mengandung spasi

Contoh Soal Olimpiade Komputer materi while do

Ppotongan program dibawah untuk soal 1 -2
c := 0
d := 0
while (a>b) do
begin
a := a - b;
c := c + 1;
d := d + b;
end;
write(c,’,',d);

1. jika nilai a = 15, b = 4 maka keluaran dari program diatas adalah..
a. 3 , 12
b. 1 , 4
c. 0 , 0
d. 6 , 23
e. 2 , 8

Pembahasan:
nilai awal a = 15, b = 4, c = 0, d = 0
kondisi a > b
—–>> 15 > 4 (True), maka
a = 15 – 4 = 11
c=0+1=1
d=0+4 =4

—–>> 11 > 4 (True), maka
a = 11 – 4 = 7
c=1+1=2
d=4+4=8

—–>> 7 > 4 (True), maka
a=7–4=3
c=2+1=3
d = 8 + 4 = 12

—–>> 3 > 4 (False), maka perulangan dihentikan.
Jadi nilai c = 3, d = 12

2. Jika nilai a = 34, b = 11 maka keluaran dari program diatas adalah..
a. 3 , 12
b. 1 , 4
c. 0 , 0

d. 6 , 23
e. 2 , 8

Pembahasan:
nilai awal a = 34, b = 11, c = 0, d = 0
kondisi a > b
—–>> 34 > 11 (True), maka
a = 34 – 11 = 23
c=0+1=1
d = 0 + 11 = 11
—–>> 23 > 11 (True), maka
a = 23 - 11 = 12
c=1+1=2
d = 11 + 11 = 22
—–>> 12 > 11 (True), maka
a = 12 - 11 = 1
c = 2 + 1= 3
d = 22 + 11 = 33
—–>> 1 > 11 (False), maka perulangan dihentikan.
Jadi nilai c = 3, d = 33

Pernyatan while do dalam Turbo Pacal
Pernyataan while biasa digunakan untuk melakukan pengulangan yang jumlahnya tidak diketahui
didepan atau selang pencacah tidak sebesar 1 atau -1.
Bentuk pernyataan while

: while kondisi do pernyataan

Pernyataan while, pengulangan terhadap pernyataan dilakukan terus selama kondidi bernilai true,
akhir while terjadi jika kondisi awal bernilai false.perhatikan diagram while dibawah.

Contoh:
Program while;
uses wincrt;

var
x : integer;
begin
x := 1
while x 1 * 1 = 1
2*1=2
3*1=3
2) —> 1 * 2 = 2
2*2=4
3*2=6
3) —> 1 * 3 = 3
2*3=6
3*3=9
karena write jadi hasil yang akan dimunculkan berjejer ke samping 123246369

for to dan for downto dalam Turbo Pacal
PERNYATAAN for to
Pernyataan FOR biasa digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui
sebelumnya, dengan proses mencacah naik.

Bentuk pernyatan for : for variabel := nilai_awal TO nilai akhir do pernyataan;

berdasarkan gambar, variabel bertindak sebagai variabel pengontrol perulangan. variabel akan diisi
dengan nilai, dimulai dari nilai_awal hingga nilai_akhir untuk setiap putaran, dan untuk setiap putaran
pernyataan akan dijalankan. variabel nilai_awal dan nilai_akhir harus bertipe sama dan harus berupa
tipe ordinal dengan nilai_awal harus lebih atau sama dengan nilai_akhir

contoh program:
program for;
uses Crt;
var
x : integer;
begin
for x := 1 to 10 do
writeln (’Saya mencoba pernyataan FOR TO’);
end.

Perogram diatas akan memunculkan dilayar Saya mencoba pernyataan FOR TO sebanyak 10 tulisan.
contoh program lainnya.

Program For2;
uses wincrt;
var

x : integer;
begin
for x := 1 to 10 do
begin
x:=x+1;
x:=x+2;
writeln (x);
end.
HASIL
1
2
3
4
5
6
7
8
9
10
tetapi jika writeln(x) diganti dengan write (x) akan menghasilkan 1 2 3 4 5 6 7 8 9 10
PERNYATAAN for downto
Pernyatan FOR DOWNTO merupakan kebalikan dari pernyataan FOR TO.

Bentuk pernyatan for : for variabel:=nilai_awal downto nilai akhir do pernyataan;
PROGRAM ForDOWNTO1;
uses wincrt;
var
x : integer;
begin
for x := 10 to 1 do
write (x);
end.

HASIL
10 9 8 7 6 5 4 3 2 1

contoh program gabungan FOR TO dengan FOR DOWNTO

Program Lat1;
uses wincrt;
var x,y,z : integer;
begin
for

x := 1 to 4 do
y :=

4

downto x do

write(x);readln;
end.

HASIL 4444333221

Contoh Soal Olimpiade Komputer Materi FUNGSI dalam Turbo Pascal

Untuk soal 1 - 2
function f(x, y: integer):integer;
begin
if y:= 0 then f:= 1
else
f:=x*f(x,y-1);
end;
writeln (fak(5, 3));

1. Apa hasil dari program di atas!
a. 125
b. 8
c. 81
d. 3
e. 15

Pembahasan :
Ini adalah contoh kasus fungsi dengan mempergunakan rekursi (fungsi yang mampu memangil dirinya
sendiri)
Nilai x awal adalah 5, nilai y awal adalah 3 maka
f(5,3) —> 5 * f(5, 3-1) = 5 * 25 = 125
f(5,2) —> 5 * f(5, 2-1) = 5 * 5 = 25
f(5,1) —> 5 * f(5,1-1) = 5 * 1 = 5
f(5,0) (proses selesai karena y =0)
Jadi yang muncul adalah 125

2. Jika writeln (f(5,3)) diganti menjadi writeln (f(4,5)), hasil dimunculkan adalah…
a. 20
b. 9
c. 1024
d. 64
e. 5

Pembahasan:
Kasus ini sama seperti pada soal 1
Nilai x awal adalah 4, nilai y awal adalah 5 maka
f(4,5) —> 4 * f(4, 5-1) dengan mempergunakan hasil f( 4,4) –> 4 * 256 = 1024
f(4,4) —> 4 * f(4, 4-1) dengan mempergunakan hasil f( 4,3) –> 4 * 64 = 256
f(4,3) —> 4 * f(4,3-1) dengan mempergunakan hasil f( 4,2) –> 4 * 16 = 64
f(4,2) —> 4 * f(4,2-1) dengan mempergunakan hasil f( 4,1) –> 4 * 4 = 16

f(4,1) —> 4 * f(4,1-1) = 4 * 1 = 4
fak (4,0) (proses selesai karena y =0)
Jadi yang muncul adalah 1024

3. Manakah yang salah dari deklarasi dibawah ini
a. function info(a:byte):real;
b. function info:byte;
c. function info(a,b:byte) : real;
d. function info(a: real; b:integer):real;
e. function info(a:real);

Pembahasan
Ingat bentuk dekelarasi dari suatu fungsi
FUNCTION nama_fungsi(daftar_fungsi):tipe;
- daftar parameter berisi sejumlah parameter
- tipe menyatakan tipe dari hasil fungsi
- Jika fungsi tidak memiliki parameter, tanda () tidak perlu disertakan.
jadi jawabannya adalah e.function info(a:real);

Materi Olimpiade Komputer tentang FUNGSI dalam Turbo Pascal
Suatu Fungsi mempunyai argumen dan parameter. Parameter ditulis didalam tanda kurung. Namun bisa
saja suatu fungsi tidak memiliki parameter, biasanya untuk fungsi standar.
Dalam Turbo Pascal terdapat fungsi-fungsi standar yang siap dipergunakan. Contohnya fungsi
matematika, seperti dibawah ini:
FUNGSI
Cos(x)

KETERANGAN
Untuk memperoleh nilai cosinus dari sudut x (radian). Parameter dan
hasil bertipe Real.

Sin(x)

Untuk memperoleh nilai sinus dari sudut x (radian).

ArcTan(x)

Memperoleh arctangen dari nilai x. Parameter dan hasilbertipe Real.

Exp(x)

Menghasilkan nilai eksponen dari x. Parameter dan hasil bertipe Real.

Int(x)

Mendapatkan bagian bulat dari argumen x. Hasil bertipe Real.

Sqr(x)

Memperoleh nilai kuadrat dari x. Tipe hasil sesuai dengan parameter.

Sqrt(x)

Memperoleh akar kuadrat dari x. Hasil dan parameter bertipe Real.

Abs(x)

Digunakan untuk memperoleh nilai mutlak. Tipe hasil sesuai dengan
Parameter

Ln(x)

Menghasilkan logaritma alami dair x. Parameter dan hasil bertipe Real.

Odd(bil)

Memberikan hasil berupa True kalau bil (tipe LongInt)

Random(bil)

Memberikan hasil berupa bilangan acak yang nilainya lebih besar
atau sama dengan nol kurang dari bil. Parameter dan hasil bertipe Word.

Pemrograman Turbo Pascal, mampu membuat sendiri suatu fungsi.
Dengan bentuk sebagai berikut:
FUNCTION nama_fungsi(daftar_ ameter):tipe;