Anda di halaman 1dari 18

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; {Judul}


var A,B,hasil : 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; (*nilai bilangan pertama*)
b : real; {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 Keterangan
NasiBungkus Benar
Belajar_Pascal Benar
NO2 Benar
1_dua Salah, karakter pertama harus huruf
Andi&tono Salah, tidak boleh mengandung simbol khusus
Penjuanglan bar 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=74=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 {nilai awal}
while x <= 5 do {kondisi yang menentukan perulangan}
begin
x := x + 1; {untuk menaikan nilai x}
writeln (x);
end;
end.

Hasil
1
2
3
4
5

CONTOH SOAL OLIMPIADE KOMPUTER MATERI for to do


Untuk soal 1 & 2
y := 10;
x := 0;
for i := 0 to y-1 do
begin
x:=x+ 2 * i;
end;
writeln (x);

1. Berapakah output dari program diatas?


a. 112
b. 110
c. 90
d. 72
e. 45

Pembahasan:
Program diatas akan mengulang pernyataan x:=x +2*i sebanyak 10 kali dari i = 0 sampai 9.
0 = 0 + 2*0
2 = 0 + 2*1
6 = 2 + 2*2
12 = 6 + 2*3
20 = 12 + 2*4
30 = 20 + 2*5
42 = 30 + 2*6
56 = 42 + 2*7
72 = 56 + 2*8
90 = 76 + 2*9
jadi nilai x yang akan dimunculkan adalah 90.

2. Jika baris kelima (x:=x+2*i) diganti dengan x:= x + i


Berapakah output program tersebut?
a. 112
b. 110
c. 90
d. 72
e. 45

Pembahasan:
0=0+0
1=0+1
3=1+2
6=3+3
10 = 6 + 4
15 = 10 + 5
21 = 15 + 6
28 = 21 + 7
36 = 28 + 8
45 = 36 + 9
jadi outputnya adalah 45.

Utuk soal no 3
program x;
var
i,j,k,l : integer;
begin
for i:= 1 to 2 do
for j:= 1 to 2 do
write (i*j);
end.

3. output program diatas adalah?


a. 4
b. 6
c. 9
d. 123246369
e. 1

Pembahasan:
i * j
1) > 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 KETERANGAN
Cos(x) 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; < JUDUL FUNGSI
par Bagian_deklarasi; <- DEKLARASI FUNGSI
Bagian_pernyataan; <- PERNYATAAN

JUDUL FUNGSI
Untuk pemberian judul fungsi, aturannya sama seperti pemberian pengenal (identifier).

Bentuk parameter berisi sejumlah parameter dengan bentuk


daftar_parameter(parameter_1:tipe_1;parameter_2:tipe_2;.;parameter_n:tipe_n)
tipe parameter menyatakan tipe dari parameter.

Untuk tipe dalam Fungsi menyatkan tipe dari hasil fungsi.

contoh judul fungsi: Function Kali(A : Integer; B:Integer):Integer;

dari contoh fungsi kali mempunyai 2 parameter (A dan B) yang masing-masing bertipe Integer, dengan
hasil fungsi bertipe Integer.

DEKLARASI FUNGSI
Deklarasi fungsi mempunyai bentuk seperti deklarasi program, yang mengandung Variabel, type,
konstanta bahkan prosedur atau fungsi.

PERNYATAAN
Contoh
Function Kali(A,B : Real): Real;
begin
Kali := A * B;
end;
Artinya fungsi kali akan memberikan nilai berupa penjumlahan dari parameter A dan B.

Contoh program menggunakan fungsi:


Program fungsi1;
uses wincrt;
var x, y, z: Real; {Variabel global}
function kali (A,B : Integer) integer; {mulai fungsi kali}
var hasil:integer; {Variabel lokal}
begin
hasil:= A*B;
kali:= Hasil;
end; { akhir fungsi kali}
begin {Program utama}
clrscr;
x:=2;
y:=5;
z :=x+y;
writeln (z);
writeln (kali(2, 5));readln;
end.

Hasil program tersebut adalah


7.0000000E+00
10

Dari program diatas, terdapat dua variabel yaitu Variabel global dan variabel lokal. variabel global
merupakan variabel umum dalam program yang dapat
dipangil oleh program dan oleh fungsi. Sedangkan variabel lokal hanya dapat diakses oleh fungsi. Hasil
7.0000000E+00 (tipe Real) didapat dari Fungsi, sedangkan nilai 10 di proleh dari penjumlahan nilai x
dan y dalam Program Utama.

Materi Olimpiade Komputer


Materi Uji Olimpiade Komputer Tingkat Kabupaten, meliputi non pemrograman dan pemrograman
( Perogram Pascal).
Materi non pemrograman meliputi:
Materi Analitika
Materi Aritmatika
o Pembentukan Model Aritmatika
o Sifat-sifat Bilangan
o Pengkaitan dengan Konteks Masalah
o Formula Rekusif
o Eksplorasi dalam Masalah Kombinatorik
o Model Matematika Sederhana
Materi Algoritmika
o Penggunan Variabel
o Aliran Kendali Proses
o Ekspresi Logika
o Prosedur dan Fungsi
o Aliran Proses Algoritma
o Struktur Arry
Materi Pemrograman meliputi:
Deklarasi
o Tipe data
o Variabel dan Konstanta
Oprasi Assignment
Oprasi Aritmatika
Ekpresi Logika
Strukut Kontrol
o Sequence
begin end
o Analisis Kasus
if then
if then else
case of
o Perulangan
while do
repeat until
o Fungsi/Prosedur
Urutan eksekusi
Parameter
Rekusivitas

Anda mungkin juga menyukai