Arsip

Archive for the ‘Materi Olimpiade Komputer’ Category

ROSEDUR dan FUNGSI REKURSIF

April 12, 2010 2 komentar

di copy dari http://www.khabib.staff.ugm.ac.id

Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :
Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :

  1. meningkatkan readibility, yaitu mempermudah pembacaan program
  2. meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modul-modul atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga mempermudah pengecekan, testing dan lokalisasi kesalahan.
  3. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah yang semestinya diulang-ulang.

adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :

  1. kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau special condition)
  2. pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)

Secara umum bentuk dari sub program rekursif memiliki statemen kondisional :

if kondisi khusus tak dipenuhi
then panggil diri-sendiri dengan parameter yang sesuai
else lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi

Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori, waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien .
Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam pencarian / searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang).

Contoh sub program rekursif dalam bahasa Pascal.

  1. Contoh sederhana

  2. PROCEDURE TULIS_1(banyak : integer;kata : string);
    begin
    if banyak > 1 then TULIS_1(banyak-1,kata);
    writeln(kata, banyak:5);
    end;

    OUTPUT (misal dipanggil dengan TULIS_1(5,”Cetakan ke “))

    Cetakan ke 1
    Cetakan ke 2
    Cetakan ke 3
    Cetakan ke 4
    Cetakan ke 5

    Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini!PROCEDURE TULIS_2(banyak :

    integer;kata : string);
    begin
    writeln(kata, banyak:5);
    if banyak > 1 then TULIS_1(banyak-1,kata);
    end;

    OUTPUT (misal dipanggil dengan TULIS_2(5,”Cetakan ke “))Cetakan ke 5
    Cetakan ke 4
    Cetakan ke 3
    Cetakan ke 2
    Cetakan ke 1

    Mengapa hasilnya jauh berbeda?

  3. Contoh terapan

Secara matematis, perkalian dua bilangan bulat positif a dengan b (ditulis ab atau a x b) pada hakekatnya merupakan penjumlahan dari a sebanyak b suku, yaitu a + a + a + …. + a sebanyak b suku. Misalnya 2 x 3 dapat diartikan sebagai 2 + 2 + 2 = 6 , yaitu penjumlahan 2 sebanyak 3 suku   Dengan mengingat bahwa suatu bilangan bila dikalikan dengan angka 1 (satu) akan menghasilkan bilangan itu sendiri, maka permasalahan perkalian dengan menyatakannya dalam bentuk penjumlahan di atas dapat diselesaikan dengan komputer secara mudah.

Dengan non rekursif

  1. Dengan prosedur
      Procedure KALI_BIASA_P(a,b : integer; var hasil : longint);
      var i : integer;
      begin
      hasil := 0;
      for i:= 1 to b do hasil := hasil + a;
      end;
  2. Dengan fungsi
    Function KALI_BIASA_F(a,b:integer):longint;
    var hasil : longint; i: integer;
    begin
    hasil := 0;
    for i:= 1 to b do hasil := hasil + a;
    KALI_BIASA_F := hasil;

    end;

Dengan Rekursif

  1. Dengan Prosedur
      Procedure KALI_REK_P(a,b:integer;var hasil:longint)
      begin
      if b>1 then KALI_REK_P(a,b-1,hasil);
      hasil:= hasil+a;
      end;
  2. Dengan Fungsi
    Function KALI_REK_F(a,b:integer):longint;
    begin
    if b>1 then
    KALI_REK_F := KALI_REK_F(a,b-1)+a
    else
    KALI_REK_F := a;
    end;

Untuk lebih memahami materi bisa di download disini

Struktur Dan Komponen Dasar Program Pascal.

April 28, 2008 14 komentar

            Struktur program Pascal terdiri dari sebuah judul program dan  badan program. Badan program dibagi lagi menjadi dua bagian, bagian deklarasi dan bagian pernyataan (statement).

 

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                 PRED

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;

      3.   Nama suatu program

      4.   Nama suatu konstanta

      5.   Nama suatu variabel

      6.   Nama suatu procedure

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

7.   terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Huruf besar dan huruf kecil dianggap sama.

8.      Tidak boleh mengandung blank.

9.      Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah.

10.  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

 

Pernyatan WHILE dalam Turbo Pacal

April 9, 2008 1 komentar

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. untuk lebih jelasnya perhatikan diagram while dibawah.

contoh
Program wile;
Uses Crt;
Var
 X : integer;
Begin
x := 1   {nilai awal}
WHILE X <= 5 DO {kondisi yang menentukan perulangan}
  BEGIN
   writeln (x);
   X := X + 1; {untuk menaikan nilai x}
  END;
end.

Hasil
1
2
3
4
5

Materi Olimpiade Komputer, FOR TO dan FOR DOWNTO dalam Turbo Pacal

April 5, 2008 8 komentar

PERNYATAAN FOR  TO
Pernyataan FOR biasa digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui sebelumnya, dengan proses mencacah naik.

Bentuk pernyatan for  sebagai berikut:
              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 For1;
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 Crt;
Var
     x : integer;
BEGIN
    FOR x := 1 TO 10 DO
         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  sebagai berikut:
              FOR variabel := nilai_awal DOWNTO nilai akhir DO pernyataan;

PROGRAM ForDOWNTO1;
Uses Crt;
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 crt;
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 materi FOR DO segaera di post. Trims

Materi Olimpiade Komputer tentang FUNGSI dalam Turbo Pascal

April 4, 2008 6 komentar

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_parameter):tipe;    <— JUDUL FUNGSI
         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.

Conoth program menggunakan fungsi:

Program fungsi1;
Uses Crt;
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.
Untuk Contoh soal Olimpiade yang memuat fungsi akan di post secepatnya! Trims

untu pdf klik fungsi.pdf

Materi Olimpiade Komputer

April 3, 2008 5 komentar

Materi Uji Olimpiade Komputer Tingkat Kabupaten, meliputi non pemrograman dan pemrograman ( Perogram Pascal).

Materi non pemrograman meliputi:

  • Materi Analitika
  • Materi Aritmatika
    • Pembentukan Model Aritmatika
    • Sifat-sifat Bilangan
    • Pengkaitan dengan Konteks Masalah
    • Formula Rekusif
    • Eksplorasi dalam Masalah Kombinatorik
    • Model Matematika Sederhana
  • Materi Algoritmika
    • Penggunan Variabel
    • Aliran Kendali Proses
    • Ekspresi Logika
    • Prosedur dan Fungsi
    • Aliran Proses Algoritma
    • Struktur Arry

Materi Pemrograman meliputi:

  • Deklarasi
    • Tipe data
    • Variabel dan Konstanta
  • Oprasi Assignment
  • Oprasi Aritmatika
  • Ekpresi Logika
  • Strukut Kontrol
    • Sequence
      • begin    end
    • Analisis Kasus
      • if     then
      • if     then   else
      • case    of
    • Perulangan
      • while    do
      • repeat    until
    • Fungsi/Prosedur
      • Urutan eksekusi
      • Parameter
      • Rekusivitas

lebih lengkap kujungi http://www.toki.or.id