Sabtu, 17 Januari 2015

LATIHAN PROCEDURE DAN FUNCTION PADA PASCAL

Program untuk melakukan perhitungan penjumlahan, pembagian dan perkalian.
Langsung saja ketikkan listing dibawah ini di pascalnya ya..


   program Sub_Program;
   uses crt;
   var hasil, nilai1, nilai2 : integer;
      hbagi : real;
   procedure Tambah;
   begin
      hasil := nilai1+nilai2;
      writeln('Nilai X + Y = ',hasil);
   end;
   procedure Kurang(p, q : integer);
   begin
      hasil := nilai1 - nilai2;
      writeln('Nilai X - Y = ',hasil);
   end;function Kali : integer;
   begin
      Kali := nilai1 * nilai2;
   end;
   function Bagi(p,q : integer) : real;
   begin
      bagi := p/q;
   end;
   procedure tukar(var p, q : integer);
   var r : integer;
   begin
      r := p;
      p := q;
      q := r;
   end;
   var pilih : integer;
   begin
      clrscr;
      pilih := 0;
      while (pilih <> 5) do
      begin
        writeln;
        writeln(' Masukkan Pilihan Proses ');
        writeln('-------------------------');
        writeln(' 1. Penjumlahan');
        writeln(' 2. Pengurangan');
        writeln(' 3. Perkalian');
        writeln(' 4. Pembagian');
        writeln(' 5. Selesai');
        writeln('-------------------------');
        repeat
          write('Masukkan Pilihan Anda : ');
          readln(pilih);
        until pilih in [1,2,3,4,5];
        if pilih = 5 then exit;
        write('Masukkan Nilai X : ');readln(nilai1);
        write('Masukkan Nilai Y : ');readln(nilai2);
        case pilih of
           1 : tambah;
           2 : begin
                if nilai1 < nilai2 then
                  tukar (nilai1, nilai2);
                kurang (nilai1, nilai2);
               end;
           3 : writeln('Hasil X * Y = ',Kali);
           4 : begin
                 hbagi := bagi (nilai1,nilai2);
                 writeln('hasil X / Y = ',hbagi:10:4);
               end;
        end;
      end;
   end.

   Jika sudah diketik maka gambarnya akan seperti dibawah ini


         Dan hasilnya akan seperti di bawah ini

Keterangan:
       Jika kita ingin melakukan perhitungan lagi maka masukkan pilihan dan jika tidak pilih pilihan 5

PROCEDURE DAN FUNCTION PADA PASCAL

Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama. 

PROCEDURE
    Procedure adalah suatu program yang terpisah dalam blok tersendiri yang berfungsi sebagai subprogram. Penggunaan prosedur diawali dengan kata cadangan procedure dalam bagian deklarasi prosedur. Pemanggilan prosedur dapat dilakukan dengan menggunakan judul prosedur.
Pada program terstruktur banyak menggunakan prosedur karena :

  • Sebagai penerapan program yang modular yaitu memecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur.
  • Untuk beberapa perintah yang sering digunakan berulang, cukup dituliskan sekali dalam prosedur dan dipanggil sewaktu-waktu.
Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block.
Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.
Bentuk Umum header suatu procedure adalah :

  PROCEDURE nama; 
    atau 
  PROCEDURE nama (formal parameter : jenis); 

Contoh :Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara
tiga bulangan bulat, maka procedure tersebut adalah sebagai berikut :

PROCEDURE maksimum;
VAR max : integer;
BEGIN
 IF a > b THEN max := a ELSE max := b;
 IF c > max THEN max := c;
 WRITELN(max);
END.

Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan

sebagai berikut :

Contoh 1
 PROGRAM contoh_1; 
 VAR a,b,c : integer; 
  PROCEDURE maksimum; 
  VAR max : integer; 
  BEGIN 
   IF a>b THEN max := a ELSE max := b; 
   IF c>max THEN max := c;
   WRITELN(max); 
  END; 
  BEGIN 
   READLN(a,b,c); 

  Maksimum
  End.

Contoh 2
  PROGRAM CONTOH_2; 
  VAR p,l,t,vol,panj : real; 
  PROCEDURE kotak; 
  VAR v,pl : real; 
  BEGIN 
   v := p * l * t ; 
   pl := p + 2.0 * t; 
   writeln(v,pl); 
  END; 
  BEGIN 
   writeln(‘panjang’ : 10,’lebar’ : 10,’tinggi’ : 10); 
   readln(p,l,t); 
   kotak; 

  END. 


Procedure dan Parameter
    Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.


Contoh : 
Prosedur Tanya_hitung; 
Var X,Y :real; 
Begin 
 Write (‘Nilai X ?’); 
 Readln(X); 
 Y:=X*X; 
 Writeln(‘Nilai Y = ‘,Y:6:2); 
End; 
Begin 
 Tanya_Hitung; 
End. 

Hasilnya : 
 Nilai X ? 5
 Nilai Y = 25.00 

Keterangan : 
Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh : 
Prosedur Tanya_hitung; 
Var X,Y :real; 
Begin 
 Write (‘Nilai X ?’); 
 Readln(X); 
 Y:=X*X; 
End; 
Begin 
 Tanya_Hitung; 
 Writeln(‘Nilai Y = ‘,Y:6:2); 

End. 

Hasilnya : 

 Error 31: Unknown identifier 

Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara : 
1. Dibuat bersifat global
2. Dikirimkan sebagai parameter ke modul yang membutuhkannya. 

Prosedur Standar 
Prosedur yang disediakan oleh Turbo Pascal : 
1. Prosedur standar EXIT :Digunakan untuk keluar dari suatu blok. 
2. Prosedur standar HALT :Digunakan untuk menghentikan proses program baik     di program bagian maupun di program utama. 
3. Prosedur standar MOVE {Bentuk umum : MOVE (Var source,dest; count :           word);} : Digunakan untuk menyalin suatu blok sebanyak count byte memori     dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest. 
4. Prosedur standar FILLCHAR :Digunakan untuk mengisi sejumlah byte nilai ke     dalam suatu variabel, sebagai berikut FillChar(x;count :word;ch); 


X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch sebanyak count byte. 


FUNCTION
Blok pada function hampir sama dengan blok pada procedure, hanya pada function harus dideklarasikan dengan tipe dari function tersebut yang merupakan tipe hasil dari function itu sendiri. Sehingga dikatakan function dapat mengembalikan nilai. Secara umum bentuk header suatu function adalah : 

 FUNCTION nama : jenis hasil; 
 Atau 
 FUNCTION nama (formal parameter : jenis ) : jenis_hasil; 

Contoh 1
Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di 
antara dua integer. 
Function MAX (x,y : integer) : integer; 
Begin 
 If x < y then MAX := y ; 
 Else MAX := x; 
End; 
Selanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan 
menyatakan sebagai berikut : 
 P := MAX(a,b);
 Z := MAX(a+b,a*b);
 Q := MAX(MAX(a,b),c);
 …………………………
dsb.
Perbedaan fungsi dengan prosedur adalah:
  • Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya(kalau pada prosedur parameter yang dikirimkan secara acuan).
  • Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya. Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel yang lainnya.
  • Pada prosedur, nama prosedur tidak dapat digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.

Fungsi Standar 
1. Fungsi standar arutmatika 
    • Fungsi standar ABS 
      Bentuk umum : ABS(x); Digunakan untuk memutlakkan suatu nilai yang     
      ditunjukkan oleh argumen x. 
       Contoh : 
        Begin 
          X:=-2.3; 
          Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1); 
        End. 
    • Fungsi standar EXP 
          Bentuk Umum : EXP(x:):real; Digunakan untuk menghitung nilai pangkat       dari bilangan e yaitu sebesar ex. Hasilnya berupa nilai real. 

    • Fungsi standar LN
          Bentuk umum : LN(x):real; Digunakan untuk menghitung nilai logaritma 
      alam (natural logarithm) dari nilai x. Hasilnya berupa nilai real. 
    • Fungsi standar INT 
           Bentuk umum : INT(x:real):real; Digunakan untuk menghasilkan nilai 
      integer dari x. hasil dari fungsi adalah tipe real dengan nilai yang berupa           pembulatan ke bawah (nilai pecahan dibuang) dari nilai x. 
      Contoh : 
        Begin 
           X:=9.99; 
          Write(‘Nilai yang akan dibulatkan = ‘,X); 
          Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2); 
        End. 
        Hasil : 
        Nilai yang akan dibulatkan = 9.99 
        Nilai pembulatannya = 9.00 

    • Fungsi standar FRAC 
      Bentuk umum : FRAC(x:):real; Digunakan untuk mendapatkan nilai
      pecahan dari argumen x. Argumen x dapat bernilai real maupun integer dan
      hasil dari fungsi adalah real. 
      Contoh : 
     Begin 
       X:=9.99; 
       Write(‘Nilai X = ‘,X,’ Nilai pecahannya = ‘,Frac(X):4:3); 
     End. 
    Hasilnya : Nilai X = 9.99 Nilai pecahannya = 0.990 

    • Fungsi standar SQR 
      Bentuk umum : SQR(x); Digunakan untuk menghitung nilai pangkat
      kuadrat dari argumen x. 
      Contoh : 
     Begin 
       X :=2; 
       Write(‘Nilai X = ‘,X,’ Nilai kuadratnya = ‘,sqr(x)); 
     End. 
       Hasilnya : Nilai X = 2 Nilai kuadratnya = 4
    • Fungsi standar SQRT 
      Bentuk umum : SQRT(x) : real;Digunakan untuk menghitung nilai akar dari       argumen x, hasilnya berupa real. 
    • Fungsi standar PI, SIN, COS, ARCTAN 

2. Fungsi Standar Transfer 
    Digunakan untuk merubah suatu nilai ke bentuk nilai lain. 
    • Fungsi standar CHR 
      Bentuk umum : CHR(x:byte):char; Digunakan untuk merubah nilai dari byte       x ke bentuk karakter yang sesuai dengan kode ASCII. 
       Contoh : 
          X := 66; 
      Write(‘Nilai X = ‘,x,’ Nilai karakternya = ‘,CHR(X)); 
       Hasilnya Nilai X = 66 Nilai karakternya = B 
    • Fungsi standar ORD
           Bentuk umum : ORD(x):longint; Digunakan untuk merubah nilai x ke 
       bentuk nilai longint yang sesuai dengan kode  ASCII, merupakan kebalikan        dari fungsi CHR. 
    • Fungsi standar ROUND
           Bentuk umum : ROUND(x:real):longint; Digunakan untuk membulatkan
      nilai dari real x ke nilai longint yang terdekat.Bila nilai pecahan sama dgn           atau lebih besar dari 0.5 akan dibulatkan ke atas, sedang kalau lebih kecil  
      dari 0.5 akan dibulatkan ke bawah. 
      Contoh : 
       Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Round(10/3)); 
       Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah                ‘,Round(20/3); 
        Hasilnya : 
      10 dibagi 3 hasil pembulatan terdekat adalah 3 
      20 dibagi 3 hasil pembulatan terdekat adalah 7 
   • Fungsi standar TRUNC 
      Bentuk umum : TRUNC(x:real):longint; Digunakan untuk membulatkan nilai
      dari real x ke nilai longint terkecil. Atau dengan kata lain membulatkan ke 
      bawah. 
      Contoh : 
      Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Trunc(10/3)); 
      Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah               ‘,Trunc(20/3); 
      Hasilnya : 
      10 dibagi 3 hasil pembulatan terdekat adalah 3 
      20 dibagi 3 hasil pembulatan terdekat adalah 6 

3. Fungsi Standar Lainnya 
    Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas :          • Fungsi standar Hi, Lo, Swap
   • Fungsi standar Random 
        Bentuk umum : Random [(range :word)]; Digunakan untuk menghasilkan 
      angka random berkisar dari nilai lebih besar atau sama dengan nol dan
      lebih kecil dari satu. Bila range tidak disebutkan, hasil dari fungsi ini adalah
      real, bila range disebutkan, hasilnya adalah word. 
   • Fungsi standar SizeOf 
        Bentuk umum : SizeOf(x):word; Digunakan untuk menunjukkan besarnya 
      byte yang digunakan oleh suatu variabel x, hasilnya berupa nilai word. 
   • Fungsi standar UPCASE 
     Bentuk umum : UpCase(Ch:char):char; Digunakan untuk merubah argumen 
     suatu karakter yang ditunjukkan oleh Ch 
     menjadi bentuk karakter huruf besar (upper case).