TOKI Smansasoo Goes to OSN 2009          MODUL 01 DASAR PEMROGRAMAN PASCAL1.1 Pengenalan : menulis, menyimpan, run, compil...
TOKI Smansasoo Goes to OSN 2009            Program contoh ;            Uses crt;            Function tambah (x,y: integer)...
TOKI Smansasoo Goes to OSN 20091.4 Pengenal (identifier)    Syarat-syarat penamaan sebuah identifier adalah :    a. Dapat ...
TOKI Smansasoo Goes to OSN 2009    1.5 Reserved word    1.6 Tipe Data        Tipe data menyatakan pola penyajian data dala...
TOKI Smansasoo Goes to OSN 20091.7 Variable         Variabel adalah penampung data yang isinya dapat         diubah-ubah d...
TOKI Smansasoo Goes to OSN 2009              Flagl   : char,              Nama    : array[1..10] of char,           Pember...
TOKI Smansasoo Goes to OSN 20091.10 Menerima masukan dengan read dan readln     Prosedur read dapat digunakan untuk meneri...
TOKI Smansasoo Goes to OSN 2009    1.11    Tentang daftar shortcut pada Free Pascal8 |T i m   Olimpiade Komputer SMAN 1 So...
TOKI Smansasoo Goes to OSN 2009                   MODUL 02 OPERATOR       Operator merupakan suatu simbol yang digunakan u...
TOKI Smansasoo Goes to OSN 2009    Contoh2 Soal OSP 2008    2.3 Operator Unary        Disebut operator unary karena operat...
TOKI Smansasoo Goes to OSN 2009     {File : opr_bit.pas}     Program opr_bit;     Begin        writeln(‘not 0 =’,not 0);  ...
TOKI Smansasoo Goes to OSN 2009    2.6 Operator Logika        Terdapat 4 buah operator logika, yaitu Not, And, Or, Xor. Be...
TOKI Smansasoo Goes to OSN 20092.8 Operator Set    Merupakan operator yang digunakan untuk operasi himpunan.              ...
TOKI Smansasoo Goes to OSN 200914 | T i m   Olimpiade Komputer SMAN 1 Sooko
TOKI Smansasoo Goes to OSN 2009        MODUL 03 STRUKTUR KONTROL PEMILIHAN3.1 Pernyataan if dengan satu aksi             G...
TOKI Smansasoo Goes to OSN 2009    3.2 Pernyataan if dengan dua aksi        Uraian        Pada model pernyataan gambar 3.2...
TOKI Smansasoo Goes to OSN 20093.3 Pernyataan if dengan lebih dari dua aksi    Uraian    Karena pilihan aksi yang dikerjak...
TOKI Smansasoo Goes to OSN 2009    3.4 Pernyataan case            Tangga if-else-if dapat digunakan menguji beberapa      ...
TOKI Smansasoo Goes to OSN 2009     MODUL 04 STRUKTUR KONTROL PENGULANGAN    Struktur kontrol pengulangan dalam bahasa pem...
TOKI Smansasoo Goes to OSN 2009        LATIHAN 2              {File : fornaik.pas}              Program ForNaik;          ...
TOKI Smansasoo Goes to OSN 2009    LATIHAN 6         {File : over.pas}         Var              x : byte;              j :...
TOKI Smansasoo Goes to OSN 2009         LATIHAN 8               {File : while.pas}               Program while;           ...
TOKI Smansasoo Goes to OSN 2009LATIHAN 10     {File : repeatUn.pas}     Program RepeatUntil     Var          i : integer; ...
TOKI Smansasoo Goes to OSN 2009    LATIHAN 13 Soal OSP 2008    LATIHAN 13 Soal OSP 2008 (kombinasi while do – for)24 | T i...
TOKI Smansasoo Goes to OSN 2009                      MODUL 05 ARRAY5.1   Array Satu Dimensi      Array adalah deretan vari...
TOKI Smansasoo Goes to OSN 2009             LATIHAN 2               {File : tab_rata.pas}               Program rata;     ...
TOKI Smansasoo Goes to OSN 2009LATIHAN3      {File : matrik.pas}      Program matrik;      Uses crt;      Var             ...
TOKI Smansasoo Goes to OSN 200928 | T i m   Olimpiade Komputer SMAN 1 Sooko
TOKI Smansasoo Goes to OSN 2009          MODUL 06 PROCEDURE DAN FUNCTION6.1 Procedure    Procedure merupakan blok baris pe...
TOKI Smansasoo Goes to OSN 2009               parameter formal di procedure akan mempengaruhi nilai               paramete...
TOKI Smansasoo Goes to OSN 2009LATIHAN 2   {File : fungsi1.pas}   Program fungsi1;   Uses crt;   Var          a, b, c : In...
TOKI Smansasoo Goes to OSN 200932 | T i m   Olimpiade Komputer SMAN 1 Sooko
TOKI Smansasoo Goes to OSN 2009                        MODUL 07 STRING7.1 Pendeklarasian String         String merupaka sa...
TOKI Smansasoo Goes to OSN 2009    7.4 Menampilkan Isi Variabel String Ke Layar               Untuk menampilkan isi variab...
TOKI Smansasoo Goes to OSN 20097.6 Beberapa Fungsi Mengenai String         Pascal menyediakan fungsi untuk memanipulasi st...
TOKI Smansasoo Goes to OSN 2009    7.7 String Sebagai Parameter Fungsi               String sebagai parameter fungsi pada ...
TOKI Smansasoo Goes to OSN 2009                       MODUL 08 RECORD    Merupakan tipe data terstruktur, dimana beberapa ...
TOKI Smansasoo Goes to OSN 2009         LATIHAN 1             { file : record.pas}             Program record;            ...
TOKI Smansasoo Goes to OSN 2009                     MODUL 09 OPERASI FILEUntuk dapat diolah lebih lanjut, maka data perlu ...
TOKI Smansasoo Goes to OSN 2009    9.2 Melakukan proses terhadap file    Setelah file dapat dibuka atau diciptakan, dapat ...
TOKI Smansasoo Goes to OSN 2009{File : baca.pas}Program baca;Uses crt;Var      F : text;      s : string;begin      clrscr...
TOKI Smansasoo Goes to OSN 200942 | T i m   Olimpiade Komputer SMAN 1 Sooko
Upcoming SlideShare
Loading in …5
×

Modul pemrograman pascal toki smansasoo

940 views
813 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
940
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
132
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Modul pemrograman pascal toki smansasoo

  1. 1. TOKI Smansasoo Goes to OSN 2009 MODUL 01 DASAR PEMROGRAMAN PASCAL1.1 Pengenalan : menulis, menyimpan, run, compile. Run adalah menjalankan program yang diketik pada jendela editor. Compile adalah mengubah bahasa pemrograman tingkat tinggi yang telah diketik ke bahasa mesin dan menyimpannya ke disk dalam bentuk executetable program. 1. Tulis potongan program dibawah { File : first .pas} Program kesan; Begin Writeln(‘Tim olimpiade komputer’); End. 2. Simpan ke dalam file sooko1.pas 3. Compile program ini. 4. Jalankan menu run 5. Jalankan menu  debug  user screen untuk melihat hasilnya1.2 Kerangka Program Pascal Program Pascal merupakan kumpulan fungsi, prosedur, dan variable. Sebuah fungsi merupakan sekumpulan baris program yang mengerjakan tugas tertentu dan mengembalikan hasilnya. Sebuah fungsi terdiri dari sebuah nama fungsi, daftar variable, satu blok kode yang membentuk fungsi tersebut. Sebuah blok dimulai dari kata “begin”, diikuti dengan beberapa statement dan diakhiri dengan kata “end”. PROGRAM namaProgram (File List); CONST { deklarasi Constanta } TYPE { deklarasi Type } VAR { deklarasi Variable} BEGIN { Statement yang akan dijalankan } END. Tim Olimpiade Komputer SMAN 1 Sooko | 1
  2. 2. TOKI Smansasoo Goes to OSN 2009 Program contoh ; Uses crt; Function tambah (x,y: integer): integer; Begin Tambah:=x+y; End; Var hasil : integer ; begin clrscr; hasil := tambah(5,5); writeln(‘5+5 = ’,hasil); readln; end. 1.3 Tanda – tanda baca dalam pascal Berikut beberapa tanda baca yang ada dalam bahasa pascal berikut fungsinya : Tanda Baca Kegunaan . Akhir dari program utama : Deklarasi tipe konstanta, variable dan fungsi ; Akhir dari suatu perintah = Inisialisasi Konstanta .. Menyatakan range dalam array , Pemisah antara nama – nama variabel ^ Tanda control atau tanda penunjuk (pointer) contoh: Program contoh2 ; Uses crt; Const Pi=3.14; Function luas_lingkaran (r : integer): real; Begin Luas_lingkaran:=pi*r*r; End; Var hasil : real ; data_nilai1,data_nilai2 : array [1..44] of integer; p: ^real; begin clrscr; hasil := luas_lingkaran(5); p^:=hasil; writeln(^G,’luas lingkaran dengan r = 5 adalah ‘,hasil); readln; end.2 |T i m Olimpiade Komputer SMAN 1 Sooko
  3. 3. TOKI Smansasoo Goes to OSN 20091.4 Pengenal (identifier) Syarat-syarat penamaan sebuah identifier adalah : a. Dapat sepanjang apapun b. Harus diawali dengan huruf atau underscore(_) c. Karakter ke dua dan selanjutnya dapat berupa huruf, angka , atau underscore d. Tidak boleh ada 2 identifier dalam satu program e. Tidak boleh berupa reserved word. Reserved word adalah kata yang telah dikenal oleh pascal yang telah mempunyai kegunaan tertentu. Contoh penulisan identifier yang benar: - Coba1 - Jari_jari - Programcoba_coba Contoh penulisan identifier yang salah - Coba 1 (mengandung spasi) - Jari-jari (mengandung karakter -) - 2b (diawali dengan angka) - To (reserved word) Contoh penggunaan identifier: Program coba1; Var a,b:byte; type c=word begin …… End. Pada program diatas, terdapat 4 buah identifier, yaitu coba1 sebagai nama program, a,b digunakan sebagai identifier dari deklarasi var, dan c sebagai identifier nama type. Tim Olimpiade Komputer SMAN 1 Sooko | 3
  4. 4. TOKI Smansasoo Goes to OSN 2009 1.5 Reserved word 1.6 Tipe Data Tipe data menyatakan pola penyajian data dalam computer: karakter, bilangan, string, record. Dalam Pascal tipe data digolongkan menjadi 4 yaitu tipe data standart, tipe data di definisikan oleh pemakai, tipe data terstruktur dan tipe data penunjuk. Tabel dibawah menampilkan beberapa tipe data standart dan domainnya yang dikenal dalam pascal. Nama Tipe byte Jangkauan Bilangan Byte 1 0..255 Char 1 -128… 127 Integer 2 -32768..32767 Word 2 0..65535 LongInt 4 -2147483648….2147483647 Real 4 Le-38 … le+ 38 String N+1 Boolean 1 0…14 |T i m Olimpiade Komputer SMAN 1 Sooko
  5. 5. TOKI Smansasoo Goes to OSN 20091.7 Variable Variabel adalah penampung data yang isinya dapat diubah-ubah di dalam program. Data yang dapat disimpan adalah data sesuai dengan tipenya. Nama variabel terdiri dari huruf, angka dan garis bawah, dan hanya dapat didahului oleh huruf atau garis bawah dengan ketentuan : a. Nama variabel tidak dapat disela dengan spasi b. Tidak dapat menggunakan reserved words c. Huruf besar dan huruf kecil sama saja d. Panjang variabel yang dianggap/ dikenal hanya 63 karakter pertama Deklarasi Variable Sebelum bisa digunakan maka variable harus dideklarasikan terlebih dahulu. Pendeklarasian berarti memesan ruang di memori dan menyatakan tipe data yang bisa disimpannya. Bentuk umum Var Daftar_variabel : tipe_data; Contoh Var Incl, bill : integer, Tim Olimpiade Komputer SMAN 1 Sooko | 5
  6. 6. TOKI Smansasoo Goes to OSN 2009 Flagl : char, Nama : array[1..10] of char, Pemberian (assignment) nilai ke variable Pemberian nilai hanya bisa dilakukan setelah sebuah variabel dideklarasikan. Bentuk umum Variable := nilai; Contoh Incl := 0; Bill := 10; 1.8 Konstanta Konstanta berbeda dengan variable, dimana isi dari konstanta tidak bisa diubah dengan cara pemberian (assignment) nilai. Bentuk umum Const Variable=nilai Contoh Const Pi = 3,14; Chl = ’A’; 1.9 Menampilkan Data dengan write dan writeln Fungsi write digunakan untuk mencetak data ke layar tanpa berganti baris setelahnya Fungsi writeln digunakan untuk mencetak data ke layar dengan berganti baris setelahnya String yang dicetak bisa ditambahi karakter khusus (escape sequence) yang didahului dengan tanda “#” misalnya Baris baru (#10), Bel (#7). Mencetak dengan menggunakan format Untuk mencetak pada posisi x, y layar, digunakan perintah GOTO baru setelah itu digunakan perintah write. Untuk dapat menggunakan perintah ini program harus melibatkan unit standar Crt Untuk mengeset warna teks dan background teks digunakan perintah text color dan text background6 |T i m Olimpiade Komputer SMAN 1 Sooko
  7. 7. TOKI Smansasoo Goes to OSN 20091.10 Menerima masukan dengan read dan readln Prosedur read dapat digunakan untuk menerima masukan dari keyboard. Tiap-tiap data yang dimasukkan harus sesuai dengan tipe variabelnya. Prosedur readln untuk memasukkan data perbaris, artinya setelah di tekan maka akan ganti baris, sedangkan prosedur read tidak Bentuk Umum Read (nama_variabel); Contoh Read (bil1); Readln (bil1); Contoh : /* File : write.pas */ Program masukan ; Uses crt; Var Bil1 : integer; Real1 : real ; ch1 : char ; begin write(‘Masukkan bilangan bulat : ’); read(bil1); writeln(‘Bilangan yang dimasukkan adalah’, bil1); writeln(‘Masukkan bilangan real : ’); read(real1); writeln(‘Bilangan yang dimasukkan adalah’,real1:8:3); writeln(‘Masukkan satu karakter : ’); read(ch1); writeln(‘Karakter yang dmasukkan adalah ’,ch1:3); end. Tim Olimpiade Komputer SMAN 1 Sooko | 7
  8. 8. TOKI Smansasoo Goes to OSN 2009 1.11 Tentang daftar shortcut pada Free Pascal8 |T i m Olimpiade Komputer SMAN 1 Sooko
  9. 9. TOKI Smansasoo Goes to OSN 2009 MODUL 02 OPERATOR Operator merupakan suatu simbol yang digunakan untukoperator dan manipulasi data dalam. Dalam bahasa Pascal Operatordikelompokkan dalam 9 kategori.2.1 Operator Assignment Merupakan operator yang berfungsi untuk memberikan suatu nilai ke sebuah variabel. Bentuk umum Variabel := 50,75;2.2 Operator Binary Merupakan Operator yang berfungsi untuk mengoperasikan dua operand. Operand dapat berupa konstanta ataupun variabel. Digunakan untuk operasi aritmatika. Tabel 2.1 Operator Binary Operator Operasi Tipe operand Tipe hasil + Penambahan Integer, real Integer, Real - Pengurangan Integer, Real Integer, Real * Perkalian Integer, Real Real, Real / Pembagian Integer, Real Real, Real DIV Pembagian, Integer Integer bulat MOD Sisa Integer Integercontoh 1: {File : opr_binary.pas} Program binary; begin writeln(‘ 5 + 3 = ’,5+3); writeln(‘ 3 – 5 = ’,3-5); writeln(‘ 5 * 3 = ’,5*3); writeln(‘ 5 / 3 = ’,5/3); writeln(‘ 5 div 3 = ’,5 div 3); writeln(‘ 5 mod 3 = ’,5 mod 3); end. Tim Olimpiade Komputer SMAN 1 Sooko | 9
  10. 10. TOKI Smansasoo Goes to OSN 2009 Contoh2 Soal OSP 2008 2.3 Operator Unary Disebut operator unary karena operator ini hanya menggunakan sebuah operand saja. Operator ini dapat berupa unary plus dan unary minus. Unary plus untuk menunjukkan tanda positif pada suatu bilangan dan unary minus untuk menunjukkan tada negatif. Misal : -25 not 1 +25 not 12 Not(true) 2.4 Operator Bit. Merupakan opetrator yang berfungsi untuk operasi bit per bit pada nilai integer. Tabel 2.2 Operasi Bit Operator Operasi Tipe Operand Hasil operasi NOT Negasi Integer Integer AND And Integer Integer OR Or Integer Integer XOR Xor Integer Integer Shl Shift left Integer Integer Shr Shift right Integer Integer Contoh 2:10 | T i m Olimpiade Komputer SMAN 1 Sooko
  11. 11. TOKI Smansasoo Goes to OSN 2009 {File : opr_bit.pas} Program opr_bit; Begin writeln(‘not 0 =’,not 0); writeln(‘not 1 =’,not 1); writeln(‘1 or 2 =’,1 or 2); writeln(‘1 and 2 =’,1 and 2); writeln(‘1 shr 2 =’,1 sh1 2); end. Contoh 3; {File : decbiner.pas} Program dec_biner; Var dec : integer; Begin writeln(‘Masukkan angka Integer : ’); readln(dec); writeln(‘’); writeln(‘Nilai binernya : ’); writeln(dec shr 7 and 1); writeln(dec shr 6 and 1); writeln(dec shr 5 and 1); writeln(dec shr 4 and 1); writeln(dec shr 3 and 1); writeln(dec shr 2 and 1); writeln(dec shr 1 and 1); writeln(dec shr 0 and 1); readln; End.2.5 Operator Relasi Merupakan operator yang berfungsi untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu true atau false. Tabel 2.3 Operator Relasi Operator Operasi Operator Operasi < Lebih kecil >= Lebih besar atau sama dengan. <= Lebih kecil atau = Sama dengan sama dengan > Lebih besar <> Tidak sama dengan IN Seleksi dari angka himpunan Tim Olimpiade Komputer SMAN 1 Sooko | 11
  12. 12. TOKI Smansasoo Goes to OSN 2009 2.6 Operator Logika Terdapat 4 buah operator logika, yaitu Not, And, Or, Xor. Bentuk operator ini sama dengan operator bit. Namun pengunaannya lain. Operator ini bekerja dengan nilai-nilai logika yaitu true dan false. Tabel 2.4 Kebenaran operasi AND dan OR Operator AND Kondisi 1 Kondisi 2 Hasil Salah Salah Salah Salah Benar Salah Benar Salah Salah Benar Benar Benar Operator OR Kondisi 1 Kondisi 2 Hasil Salah Salah Salah Salah Benar Benar Benar Benar Benar Benar Benar Benar Operator XOR Kondisi 1 Kondisi 2 Hasil Salah Salah Salah Salah Benar Benar Benar Benar Benar Benar Benar Salah 2.7 Operator Alamat Turbo Pascal memberikan dua buah operator khusus yang berhubungan dengan alamat di memori. Tabel 2.5 Operator alamat. Operator Keterangan @ Alamat dari operator akan menghasilkan alamat dari suatu variabel ^ Akan memberikan nilai dari alamat yang ditunjukkan suatu variabel pointer. Penjelasan lebih lanjut akan dibahas pada bab 8.12 | T i m Olimpiade Komputer SMAN 1 Sooko
  13. 13. TOKI Smansasoo Goes to OSN 20092.8 Operator Set Merupakan operator yang digunakan untuk operasi himpunan. Tabel 2.6 Operator set Operator Operasi + Union - Perbedaan Himpunan * Perkalian Himpunan2.9 Operator String Merupakan operator yang digunakan untuk operasi string. String1+String2;{ File : opt_str.pas}Program opt_str;Uses crt;Var Nama1, Nama2, Nama3 : String[15];Begin Clrscr; Nama1 :=’Budi ‘; Nama2 :=’Santosa ‘; Nama3 := Nama1+Nama2; Writeln (Nama3); Readkey;End. Tim Olimpiade Komputer SMAN 1 Sooko | 13
  14. 14. TOKI Smansasoo Goes to OSN 200914 | T i m Olimpiade Komputer SMAN 1 Sooko
  15. 15. TOKI Smansasoo Goes to OSN 2009 MODUL 03 STRUKTUR KONTROL PEMILIHAN3.1 Pernyataan if dengan satu aksi Gambar 3.1 Flowchart pernyataan if dengan satu aksi Pada model pernyataan pada gambar 3.1, sebuah aksi akan dikerjakan jika syarat bernilai benar. Bentuk umum : If (syarat) then aksi1; Aksi bisa terdiri dari satu baris pernyataan atau berupa sekumpulan (blog) baris pertanyaan. LATIHAN 1 {File : ifl.pas} Program ifl; Uses crt; Var a : Integer; Begin Writeln(‘Contoh if satu kasus’); Write(‘Ketikkan suatu nilai integer :’); Readln (a) ; If (a>0) then Begin Writeln (‘Nilai ‘,a,’ adalah nilai positif’); End; Readkey; End. Kode 3.1 program ifl. Tim Olimpiade Komputer SMAN 1 Sooko | 15
  16. 16. TOKI Smansasoo Goes to OSN 2009 3.2 Pernyataan if dengan dua aksi Uraian Pada model pernyataan gambar 3.2, aksi1 akan dikerjakan jika syarat bernilai benar, sedangkan jika salah maka aksi2 yang dikerjakan. Bentuk umum : If (syarat) then Aksi1 Else Aksi2; Gambar 3.2 Flowchart pertanyan if dengan dua aksi. LATIHAN2 { File : if2.pas} Program if2; Uses crt; Var a : Integer; Begin Writeln (‘Contoh if dua kasus ‘); Write (‘Ketikkan suatu nilai positif’); Readln (a); If (a>0) then Begin Writeln (‘Nilai ‘,a,’ adalah nilai positif’); End Else Begin Writeln (‘Nilai ‘,a,’ adalah nilai negatif’); End; Readkey; End.16 | T i m Olimpiade Komputer SMAN 1 Sooko
  17. 17. TOKI Smansasoo Goes to OSN 20093.3 Pernyataan if dengan lebih dari dua aksi Uraian Karena pilihan aksi yang dikerjakan lebih dari dua, maka dapat dibuat model bertingkat/ bersarang/ nested. Gambar 3.3 Flowchart pertanyan if dengan lebih dari dua aksi. LATIHAN 3 {File : if3.pas} Program if3; Uses crt; Var a : Integer; Begin Writeln ‘Contoh if dua kasus ‘); Write (‘Ketikkan suatu nilai integer :’); Readln(a); If (a>0) then Begin Writeln (‘Nilai ‘,a,’ adalah nilai positif’); End Else If(a=0) then Begin Writeln(‘nilai ‘,a,’ adalah nol’); End Else Begin Writeln(‘Nilai ‘,a,’ adalah nilai negatif’); End; Readkey; End. Kode 3.3 Program if3 Tim Olimpiade Komputer SMAN 1 Sooko | 17
  18. 18. TOKI Smansasoo Goes to OSN 2009 3.4 Pernyataan case Tangga if-else-if dapat digunakan menguji beberapa syarat tetapi sulit digunakan pernyataan case of, sebuah variabel dapat secara berturut-turut diuji oleh daftar konstanta (bilangan bulat atau karakter). Jika sesuai dengan sebuah konstanta, maka dikerjakan sesuai dengan pernyataan yang mengikuti konstanta tersebut. Pernyataan setelah else akan dikerjakan bila tidak ada konstanta yang tidak sesuai. Else bersifat optional, bila tidak ada else maka tidak ada yang dikerjakan. Ada beberapa hal yang perlu diperhatikan : a. Case of hanya dapat memeriksa sebuah konstanta atau range dari konstanta yang bukan bertipe real. Sedang if dapat memeriksa syarat-syarat lain(<,<,<>,dsb). b. Tidak ada dua konstanta yang sama dalam sebuah case LATIHAN 4 {File : case – of.pas} Pogram caseof; Var cc:char; Begin Writeln(‘ketikkan sebuah huruf, akhiri dengan Enter : ‘) Read(cc); Case cc of ‘0’..’9’ : writeln (‘yang anda ketik adalah angka ‘); ‘a’,’e’,’I’,’u’,’o’ : writeln(‘yang anda ketik adalah huruf vokal’); ‘b’..’d’,’f’..’h’,’j’..’n’,’p’..’t’,’v’..’z’ :writeln (‘ yang anda ketik adalah huruf konsonan’); Else writeln (‘yang anda ketik adalah karakter’); End; Readln; End.18 | T i m Olimpiade Komputer SMAN 1 Sooko
  19. 19. TOKI Smansasoo Goes to OSN 2009 MODUL 04 STRUKTUR KONTROL PENGULANGAN Struktur kontrol pengulangan dalam bahasa pemrogramandikenal dengan loop. Pengulangan dilakukan terus menerus sampaidipenuhi suatu keadaan tertentu. Dalam pascal dikenal tiga jenispengulangan dan peryataan yang digunakan adalah : • for • while-do • repeat-until4.1 Pengulangan dengan for Perulangan for dapat berbentuk perulangan positif, negatif, dan bersarang. Pada perulangan for diperlukan sebuah variable kontrol, nilai awal untuk inisialisasi, sehingga perulangan bisa dilakukan dan nilai akhir untuk kondisi mengakhiri perulangan. Bentuk Menaik : for variable-kontrol:=nilai-awal to nilai-akhir do pernyataan; Bentuk Menurun : for variable-kontrol:=nilai-awal downto nilai- akhir do pernyataan ; Bentuk loop dalam loop : for variable-kontrol1:=nilai-awal1 to nilai- akhir1 do for variable-kontrol2:=nilai-awal2 to nilai- akhir2 do pernyataan ; LATIHAN 1 {File : writefor.pas} Program Writefor; Var i, N: Integer; Begin Writeln(‘Baca N, print 1 s/d N’); Write(‘N=’); Read(N); for i:=1 to N do Writeln(i); Writeln(‘Akhir Program’); Readln; End. Kode 4.1 Program Writefor Tim Olimpiade Komputer SMAN 1 Sooko | 19
  20. 20. TOKI Smansasoo Goes to OSN 2009 LATIHAN 2 {File : fornaik.pas} Program ForNaik; Var i, awal,akhir: Integer; Begin awal:=1; akhir:=5; for i:=awal to akhir do Writeln(i); read(i); End. Kode 4.2 Program ForNaik LATIHAN 3 Program ForTurun; Var i, bawah,atas: Integer; Begin bawah:=1; atas:=5; for i:=atas to bawah do Writeln(i); read(i); End. Kode 4.3 Program ForTurun LATIHAN 4 Program ForChr; Uses crt; Var ch:char; Begin for ch:=’a’ to ‘z’ do Writeln(ch); ReadKey; End. Kode 4.4 Program ForChr LATIHAN 5 Program Forenum; Uses crt; Type Namahari=(senin,selasa,rabu,kamis,jumat,sabtu); Var Hari : NamaHari; Begin for Hari:=senin to sabtu do Begin Writeln(‘PASCAL’); End; Readln; End. Kode 4.5 Program forenum20 | T i m Olimpiade Komputer SMAN 1 Sooko
  21. 21. TOKI Smansasoo Goes to OSN 2009 LATIHAN 6 {File : over.pas} Var x : byte; j : Integer; Begin J:=265; for x:=0 to j do {nilai batas yang diberikan melibihi jaringan bilangan} Writeln(x); Readln; End. Kode 4.6 Program ForByte LATIHAN 7 {File : srgloop.pas} Program srgloop; Uses crt; Var i, j : integer; Begin clrscr; Writeln(‘Contoh loop dalam loop’); For i:=1 to 3 do begin for j:=1 to 3 do Write{‘*’}; Writeln(‘ ’); End; End. Kode 4.7 Program srgloop4.2 Pengulangan dengan while-do Pada pengulangan jenis ini, pengecekan syarat dilakukan diawal. Pengulangan dengan while-do ini digunakan untuk melakukan proses perulangan suatu pernyataan terus- menerus selama kondisi ungkapan logika pada syarat masih bernilai logika benar. Bentuk Umum : while syarat do perintah; Tim Olimpiade Komputer SMAN 1 Sooko | 21
  22. 22. TOKI Smansasoo Goes to OSN 2009 LATIHAN 8 {File : while.pas} Program while; Uses crt; Var i: Integer; Begin clrscr; i:=1; while i<=5 do begin Writeln(i); i:=i+1; end; ReadKey; End; Kode 4.8 Program while LATIHAN 9 {File : priwhile.pas} Program priwhile; Var N, i : Integer; Begin Writeln(‘Nilai N =’); Read(N); i:=1; while i<=N do begin writeln(i); i:=i+1; end; ReadKey; End; Kode 4.9 Program Priwhile 4.3 Pengulangan dengan repeat-until Berbeda dengan dua jenis perulangan sebelumnya, syarat perulangan pada Repeat...Until dicek pada akhir perulangan. Repeat...Until digunakan untuk mengulang statemen-statemen sampai (until) kondisi yang diseleksi di Until terpenuhi. Bentuk Umum : repeat perintah; ... until syarat;22 | T i m Olimpiade Komputer SMAN 1 Sooko
  23. 23. TOKI Smansasoo Goes to OSN 2009LATIHAN 10 {File : repeatUn.pas} Program RepeatUntil Var i : integer; Begin clrscr; i:=0; Repeat writeln(i); i:=i+1; until i=5; End. Kode 4.10 Program repeat untilLATIHAN 11 {File : whiledo.pas} Program whiledo; Uses crt; Var nama : String[20]; Begin clrscr; Write(‘Ketik nama siswa( X=selesai ):’); Readln(nama); While (nama[1]<>’X’) do Begin write(‘Ketik nama siswa ( X=selesai ): ’); readln (nama); End; End. Kode 4.11 Program whiledoLATIHAN 12 {File : RepForv.pas} Program RepForv; Uses crt; Var x : byte; Begin Repeat x:=x+1; Write(x,’ ‘); If keypressed then break; {keluar paksa dari loop tanpa peduli syarat} Until x>=256; End. Kode 4.12 Program repForv Tim Olimpiade Komputer SMAN 1 Sooko | 23
  24. 24. TOKI Smansasoo Goes to OSN 2009 LATIHAN 13 Soal OSP 2008 LATIHAN 13 Soal OSP 2008 (kombinasi while do – for)24 | T i m Olimpiade Komputer SMAN 1 Sooko
  25. 25. TOKI Smansasoo Goes to OSN 2009 MODUL 05 ARRAY5.1 Array Satu Dimensi Array adalah deretan variabel yang berjenis sama dan mempunyai nama yang sama. Pada bahasa Pascal, array mempunyai lokasi yang bersebelahan, alamat terkecil menunjukkan elemen pertama dan alamat terbesar menunjuk pada elemen terakhir Bentuk umum : Nama_array:array [ukuran] of tipe Tipe = menyatakan tipe data dasar Ukuran = menyatakan banyaknya elemen pada array Contoh : Nilai : array[1..10] of Integer; LATIHAN 1 {File : tabel.pas} Program tabel; Uses crt; Var I,N : Integer; Tab : array[1..10] of Integer; Begin Clrscr; N:=5; Writeln (‘Isi dan print tabel’); For i:=0 to N do Begin Tab[i] := i; End; For i:=0 to N do Begin Writeln(‘Tabel[‘,1,’]=’,tab[i]; End; Readkey; End. Tim Olimpiade Komputer SMAN 1 Sooko | 25
  26. 26. TOKI Smansasoo Goes to OSN 2009 LATIHAN 2 {File : tab_rata.pas} Program rata; Uses crt; Conts MAKS_TES : 5; Var i : Integer; nilai_total, rata-rata : Real; nilai_test : array[1..MAKS_TES] of Real; Begin {Pemasukan nilai}; Writeln (‘Pemasukan 5 buah nilai pada tabel’); For i:=1 to MAKS_TES do Begin Write(‘Nilai tes ke ‘,I,’ : ‘); Readln(nilai_test[i]); End; nilai_total:=0; for i:=1 to MAKS_TES do Begin Nilai_total:=nilai_total+nilai_test[i]; End; {menghitung nilai rata-rata} Rata-rata := total nilai/MAKS_TES; Writeln (‘Nilai rata-rata : ‘,rata_rata:3:2); Readkey; End. 5.2 Array Multi Dimensi Dalam bahasa pascal kita dapat membuat array hingga beberapa dimensi, misalnya array dua dimensi yang pada dasarnya adalah sebuah daftar yang terdiri array-array satu dimensi. Bentuk umum nama array : array[ukuran1] of array [ukuran2] of tipe; nama_array : array[ukuran1, ukuranN] of tipe; tipe = menyatakan tipe data dasar ukuran1 = menyatakn banyaknya element pada array pada dimensi ke-1 ukuranN = menyatakn banyaknya element pada array pada dimensi ke-N26 | T i m Olimpiade Komputer SMAN 1 Sooko
  27. 27. TOKI Smansasoo Goes to OSN 2009LATIHAN3 {File : matrik.pas} Program matrik; Uses crt; Var I,j : Integer; B : array[1..3,1..5] of Integer; Begin clrscr; writeln(‘memasukkan data matrik 3x3 ‘); for I := 1 to 3 do for j:=1 to 3 do begin gotoxy(10+4*I,3+j*2);readln(b[I,j]); end; gotoxy (2,14);textColor(3);write(‘Data matrik yang diinputkan adalah : ‘); textcolor(6); for i:=1 to 3 do for j:=1 to 3 do Begin Gotoxy(10+4*I,15+2*j);write(b[I,j]); End; Readkey; End.5.3 Inisialisasi Array Inisialisasi array dapat dilakukan pada saat pendeklarasiannya. Pada array multidimensi, inisialisasi dimulai dari dimensi yang paling besar. Untuk setiap dimensi dimulai dari indeks yang paling paling kecil . Pada pascal cara proses inisialisasi diletakkan pada bagian deklarasi konstanta. Const I :array[1..10] of Integer = (12,45,67,34,2,5,60,8,19,21); Matrix :array[1..3,1..4] of Integer = (42,47,63,45,6,43,62,8,19,21); Tim Olimpiade Komputer SMAN 1 Sooko | 27
  28. 28. TOKI Smansasoo Goes to OSN 200928 | T i m Olimpiade Komputer SMAN 1 Sooko
  29. 29. TOKI Smansasoo Goes to OSN 2009 MODUL 06 PROCEDURE DAN FUNCTION6.1 Procedure Procedure merupakan blok baris perintah sebagai sebagai satu kesatuan yang mengerjakan tugas khusus Keuntungan menggunakan procedure : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode Procedure dipanggil dan digunakan di dalam blok baris perintah yang lainnya dengan menyebutkan judul procedurnya. Procedure dapat menerima nilai dari luar ataupun mengirimkan nilai keluar yang dilewatkan melalui parameter. Terkait dengan procedure, dikenal dua macam variabel yaitu : 1. Variabel loKal : variabel yang dideklarasikan di dalam procedure, variabel ini tidak dikenal di luar procedure 2. Variabel global : Variabel yang dideklarasikan di luar semua procedure, sehingga akan dikenal di seluruh bagian program. Bentuk umum Procedure nama_procedure(deklarasi parameter); Begin …………………… End; Dalam pascal ada dua jenis pengiriman parameter: 1. Pengiriman parameter secara nilai (by value) Bila parameter dikirim secara nilai, parameter formal, maka perubahan-perubahan yang terjadi pada nilai parameter formal di procedure tidak akan mempengaruhi nilai parameter nyata 2. Pengiriman parameter secara acuan (by reference) Bila parameter dikirim secara nilai, parameter formal, maka perubahan-perubahan yang terjadi pada nilai Tim Olimpiade Komputer SMAN 1 Sooko | 29
  30. 30. TOKI Smansasoo Goes to OSN 2009 parameter formal di procedure akan mempengaruhi nilai parameter nyata LATIHAN 1 {File : procedur.pas} Program procedur; Uses crt; Var a : Integer; {parameter by value} Procedure ubah1(x:integer); Begin writeln(‘parameter by value‘); writeln(‘Nilai akan diubah menjadi 5‘); x:=5; end; {parameter by reference} Procedure ubah2(var x:integer); Begin Writeln(‘parameter by reference’); Writeln(‘Nilai akan diubah menjadi 5’); x:=5; end; begin clrscr; a:=10; writeln(‘Nilai sebelum diubah adalah ‘, a); ubah1 (a); writeln(‘nilai setelah diubah adalah ‘,a); ubah2(a); writeln(‘nilai setelah diubah adalah ‘,a); readln; end. 6.2 Function Function mirip dengan procedure, bedanya function harus mengembalikan suatu nilai. Nilai yang dikembalikan terdapat pada nama function. Bentuk umum Nama function(deklarasi parameter):tipe data; Begin ……………nama function:=nilai; End;30 | T i m Olimpiade Komputer SMAN 1 Sooko
  31. 31. TOKI Smansasoo Goes to OSN 2009LATIHAN 2 {File : fungsi1.pas} Program fungsi1; Uses crt; Var a, b, c : Integer; {funsi memakai parameter by value} Function tambah(a,b:integer): Integer; Begin Tambah:=a+b; end; Begin Clrscr; Write(‘A = ‘); Readln (a); Write (‘B = ‘); Readln (b); c:=jumlah(a,b); writeln (‘Jumlah tersebut adalah : ‘,c); readln; end.LATIHAN 3 SOAL OSP 2008 Tim Olimpiade Komputer SMAN 1 Sooko | 31
  32. 32. TOKI Smansasoo Goes to OSN 200932 | T i m Olimpiade Komputer SMAN 1 Sooko
  33. 33. TOKI Smansasoo Goes to OSN 2009 MODUL 07 STRING7.1 Pendeklarasian String String merupaka salah satu type data bentukan untuk menyatakan data teks kalimat atau serangkaian karakter. Pada bahasa Pascal panjang maksimum string yang diijinkan adalah 255 karakter.Bentuk Umum. Nama_variable : string[panjang string]; Nama_variabel : string;Bila tidak di sebutkan panjang string maka secara defaultpanjangnya adalah 255.Contoh Nama : String[15];Mendeklarasikan variabel string nama dengan panjang karakter 15.7.2 Memasukkan Data String dengan read/readln Pemasukkan data string ke dalam suatu variabel bisa dilakukkan dengan memakai read ataupun readln. Fungsi read/readln akan membaca seluruh karakter yang akan diketik sampai tombol enter ditekan. Dalam hal ini tidak ada pengecekan terhadap batas array. Panjang string dikurangi ukuran array ditambah karakter NULL.Bentuk umum. read(nama_array); readln(nama_array);7.3 Inisialisasi String Inisialisasi string bisa dilakuan dengan assignment karakter per karakter ataupun tidak.Bentuk Umum nama_variabel[]=data_string;ContohConst : Nama1:String = {‘T’,’U’,’R’,’B’,’ ’,’C’,’0’}; Nama2:String = ‘Tim Olimpiade Komputer’; Tim Olimpiade Komputer SMAN 1 Sooko | 33
  34. 34. TOKI Smansasoo Goes to OSN 2009 7.4 Menampilkan Isi Variabel String Ke Layar Untuk menampilkan isi variabel string, pernyataan yang dapat digunakan perintah write atau writeln. Bentuk Umum Writeln(var_string); Write(var_string); {File : str.pas} Program str; Uses crt; Var kompiler : string; Procedure bentuk1; Begin kompiler=’Bentuk 1’; write(kompiler); end; end; pocedure bentuk2; begin kompiler=’Bentuk 2’; writeln(kompiler); end; begin bentuk1(); bentuk2(); readln; end. 7.5 Mengakses Elemen String Variabel string merupakan bentuk khusus dari array bertipe char, oleh karena itu elemen dari variabel string dapat diakses seperti pengaksesan elemen array. {File : hitkar.pas} Program hitkar; Const maks=256; Var teks : string(maks); Jumkar i: Integer; Begin Writeln(‘Masukkan suatu kalimat : ’); Readln(teks); Jumkar := 0; For i:=0 to maks do If teks[i]=’a’ then Jumkar:=jumkar+1; Writeln(‘jumlaah karakter a = ’,jumkar); end;34 | T i m Olimpiade Komputer SMAN 1 Sooko
  35. 35. TOKI Smansasoo Goes to OSN 20097.6 Beberapa Fungsi Mengenai String Pascal menyediakan fungsi untuk memanipulasi string, diantaranya: Tabel 7.1 Fungsi manipulasi string Fungsi/ Bentuk pemakaian Kegunaan procedure Insert Insert( sumber : String , Menyisipi string mulai pada posisi tujuan : String , Indeks : indek dengan string sumber. Integer) Str Str(x:width:decimal, s:string) Mengubah Nilai numerik (x) menjadi string (s) Val Val(NilaiString,NilaiNumerik, Mengkonversi NilaiString menjadi PosisiSalah) nilai Numerik posisiSalah bernilai nol bila tidak terjadi kesalahan dalam proses konversi. Copy Str1:=Copy(str2,index,count) Menyalin karakter sejumlah count mulai posisi index. Concat Str:=concat(s1,s1,...,sn) Merangkai beberapa string, sama dengan operator string ‘+’ Pos Index:=pos(substr,string) Mencari posisi dari suatu substring dalam string Length Panj:=length(str) Menghitung panjang atau jumlah karakter dalam string.contoh : var Var s : string; A,B: String; begin C: String[10]; s := TOKI; Begin insert(KI, s, 2); A:=TOKI MEMANG; writeln(s); B:=HEBAT; end. C:=A+B; if (Pos(B)>0) Then Begin var s : string; Writeln(A); begin end else s:=TOKI GO GET GOLD!; Writeln(B); delete(s, 1, length(s)-12); end. writeln(s): end. Tim Olimpiade Komputer SMAN 1 Sooko | 35
  36. 36. TOKI Smansasoo Goes to OSN 2009 7.7 String Sebagai Parameter Fungsi String sebagai parameter fungsi pada dasarnya sama dengan array sebagai parameter fungsi, karena string dapat dianggap array dari karakter. {File : kiri.pas} Program kiri; Var kalimat : string; I, panj : Integer; Procedure strkiri(strin:string;n : Integer:var strhasil:string); Var i:Integer; Begin Strhasil1:=copy(strin,1,n) End; Begin Panj:=length(); For i=0 to panj do Begin Strkiri(kalimat, panj-1, hasil); End; End.36 | T i m Olimpiade Komputer SMAN 1 Sooko
  37. 37. TOKI Smansasoo Goes to OSN 2009 MODUL 08 RECORD Merupakan tipe data terstruktur, dimana beberapa variabel dengan tipe data berbeda dapat dikumpulkan bersama dan mengacu pada suatu nama yang sama Record dipakai untuk menyatakan informasi yang berhubungan Variabel-variabel yang membentuk sebuah record dinamakan field, record di dalam Pascal sama dengan struktur pada CBentuk umumType Nama_record = Record Tipe_data variabel : tipe – data; . . . Tipe_data variabel N : tipe – data; End;Contoh Type dt_siswa = Record { deklarasi tipe data record } nrp : string [7]; nama : string [20]; alamat : string [40] nilai : real; end; Var Siswa1,siswa2 : dt_siswa; { deklarasi variabel record siswa }Variabel siswa1, siswa2, adalah variabel record yang bertipedt_siswa. 8.1 Operasi Terhadap Field Record Field Record dapat dapat ditunjuk dengan memakai operator titik. Misalnya, variabel siswa1 bertipe record seperti contoh di atas, maka mengisi nilai dengan 72.5 dilakukan dengan : Siswa1.nilai := 72.5; Mencetak isi dari elemen nama Writeln (‘Nama siswa adalah ‘, siswa1.nama); Memberi nilai data alamat Read (siswa1.alamat); Tim Olimpiade Komputer SMAN 1 Sooko | 37
  38. 38. TOKI Smansasoo Goes to OSN 2009 LATIHAN 1 { file : record.pas} Program record; Uses crt; Type dt_siswa = record nrp : string [7]; nama : string [20]; alamat : string [40]; nilai : real; end; Var Siswa1 : dt_siswa; Function index ( nilai : real ) : Char; Begin If (nilai>=90) then Index := ‘A’ Else if nilai>=75 then Index := ‘B’ Else if nilai >=60 then Index := ‘C’ Else if nilai >= 50 then Index := ‘D’ Else Index := ‘E’; End; Begin Clrscr; Write (‘masukkan NRP : ‘); Readln(siswa1.nrp); Write(‘Masukkan Nama : ‘); Readln(siswa1.nama); Write(‘Masukkan Alamat : ‘); Readln(siswa1.alamat); Write(‘Masukkan Nilai : ‘); Readln(siswa1.nilai); Clrscr; Writeln(‘Data yang anda masukkan :’); Writeln(‘NRP : ‘,siswa1.nrp); Writeln(‘Nama : ‘,siswa1.nama); Writeln(‘Alamat : ‘,siswa1.alamat); Writeln(‘Nilai : ‘,siswa1.nilai:3:2); Writeln(‘Index nilai yang diperoleh  ‘, index(siswa1.nilai)); Readkey; End. 8.2 Inisialisasi Record Cara menginisialisasi record sama dengan variabel- variabel lain. Inisialisasi dapat dilakukan tersendiri atau bersama-sama dengan pendefinisian format record.38 | T i m Olimpiade Komputer SMAN 1 Sooko
  39. 39. TOKI Smansasoo Goes to OSN 2009 MODUL 09 OPERASI FILEUntuk dapat diolah lebih lanjut, maka data perlu disimpan dalamsebuah file. Sebuah file terdiri dari kumpulan record yangmempunyai tipe yang sama.Operasi terhadap file umumnya terdiri dari: 1. Operasi untuk membuka dan mencipta file. 2. Melakukan proses terhadap file. 3. Menutup file.9.1 Membuka dan Menciptakan FileSebelum sebuah file dapat diakses, maka file harus dibuka terlebihdahulu. Berikut adalah langkah-langkah yang harus dilakukan ketikamembuka file: 1. Mendeklarasikan variabel bertipe file yang menunjuk ke file. Var File_variabel : file of tipe_file; 2. Menghubungkan variabel ke file. Assign(file_variabel, nama_file); 3. Membuka/menciptakan file. Ada beberapa perintah dalam pascal untuk membuka file, yaitu: a. Membuka file untuk pembacaan. Reset (file_variabel); b. Membuka file untuk penambahan. Append(file_variabel); c. Menciptakan file Rewrite(file_variabel); Catatan : jika file yang diciptakan sudah ada, maka akan menghapus file tersebut dan mencipatakan yang baru dan masih kosong. Tim Olimpiade Komputer SMAN 1 Sooko | 39
  40. 40. TOKI Smansasoo Goes to OSN 2009 9.2 Melakukan proses terhadap file Setelah file dapat dibuka atau diciptakan, dapat dilakukan pemrosesan data dari file, yaitu : 1. Membaca isi file. Read(file_variabel, variabel_data); Readln(file_variabel, variabel_data); 2. Menulis ke file. Write(file_variabel, variabel_data); Writeln(file_variabel, variabel_data); 9.3 Menutup file Setelah file selesai diproses, maka file perlu ditutup. Close(variabel_file); Variabel_file adalah variabel yang menunjuk ke file. 9.4 File Biner dan File Teks 1. File dapat dibedakan menjadi dua jenis yaitu biner dan teks. File biner menyimpan data dalam bentuk biner. Sedangkan file teks menyimpan data dalam bentuk karakter. Data integer 255 dalam file biner akan selalu memerlukan dua byte memory. Disimpan dalam bentuk 11111111. Sedangkan dalam file teks data 255 akan disimpan sebagai karakter 2,5,5. 2. Mode pengaktifan seperti dijelaskan pada modul 13.1 perlu ditambahi t untuk file teks, dan b untuk file biner. Misalnya mode w menjadi wt untuk membuat file teks, atau wb untuk membuat file biner. 9.5 Memakai feof() Fungsi ini dipakai untuk memdeteksi akhir file saat membaca data. Function eof(Fvariabel_file):bool; Hasilnya akan true jika akhir file sudah tercapai.40 | T i m Olimpiade Komputer SMAN 1 Sooko
  41. 41. TOKI Smansasoo Goes to OSN 2009{File : baca.pas}Program baca;Uses crt;Var F : text; s : string;begin clrscr; write(‘masukkan nama file yang akan dibaca : ’); readln(s); assign(F,s); reset(F); while not EOF(F) do begin readln(F,s); writeln(s); end; close(F);end Kode 9.1 Program Ptr.{File : tulis.pas}Program tulis;Uses crt;Var F : text; s : string;Begin clrscr; write(‘Inputkan nama file yang akan di buat’); readln(s); assign(F,s); rewrite(F); writeln(‘Tulis kalimat diikuti dengan enter.’); writeln(‘Untuk keluar : Inputkan baris kosong.’); repeat readln(s); if s=’’then break; writeln(F,s); until true; close(F);end. Kode 9.2 Pogram Tulis Tim Olimpiade Komputer SMAN 1 Sooko | 41
  42. 42. TOKI Smansasoo Goes to OSN 200942 | T i m Olimpiade Komputer SMAN 1 Sooko

×