Monday 8 June 2015

Deklarasi Pascal

1.    DEKLARASI VARIABEL (VARIABLE DECLARATION)
Deklarasi variabel adalah suatu deklarasi yang nilai nya sudah pasti, dengan kata lain Deklarasi jenis ini tidak dapat dirubah lagi atau konstan. Pada contoh program diatas, deklarasi variabel untuk x, y dan z berjenis longint ( bilangan bulat dari -2147483648 sampai 2147483648 ) maka dalam program tersebut, hanya bisa dimasukan tipe data yang berjenis tersebut. Pada contoh diatas bila anda memasukan nilai selain tipe tersebut, misalkan anda memasukan angka A pada pada pertanyaan masukan nilai x..= maka program akan error, Nah agar tidak terdapat pesan error pada program tersebut, maka program tersebut harus ditambahkan suatu baris perintah yang berjenis logika jadi bila user memasukan nilai-nilai x,y dan z selain dari jenis tersebut maka akan dikeluarkan suatu peringatan yang memberitahukan user agar memasukan nilai untuk x, y dan z hanya bisa dimasukan oleh type variabel tersebut. Silahkan Anda tambahkan baris perintah pada program testprog.pas diatas, agar user tidak salah dalam memasukan type data yang telah ditentukan !.

2.    DEKLARASI KONSTANTA (CONSTANT DECLARATION)
Sama seperti deklarasi variabel, deklarasi konstanta juga bersifat tetap (konstan), bedanya adalah bila dalam deklarasi variabel kita hanya mendeklarasikan jenis dari data yang harus dikerjakan, sedangkan pada deklarasi konstanta kita langsung menyebutkan nilainya. Deklarasi konstanta tidak menggunakan tanda titik dua ( : ) seperti pada deklarasi variabel tetapi menggunakan tanda sama dengan ( = ).
Contoh Program yang menggunakan deklarasi konstanta

{ Progam    : Penggunaan deklarasi konstanta }
uses crt;
const
    nama = 'Amir';
    nip = 'A3110';
    gaji = 1000000;
    lembur = 50000;
begin
 clrscr;
    writeLn('Nama Pegawai : ',nama);
    writeLn('N I P : ',nip);
    writeLn('Gaji Pokok : ',gaji);
    writeLn('Uang Lembur : ',lembur);
    writeLn('--------------------- +');
    writeLn('Total Gaji : ',gaji+lembur);
    writeLn;
    writeLn('spirit');
 readLn;
end.

3.    DEKLARASI TIPE (TYPE DECLARATION)
Deklarasi tipe biasanya digunakan bila kita bekerja dengan ARRAY atau larik. Deklarasi Tipe mempunyai banyak sekali jenis dan type yang ditanganinya, saya tidak bisa menjelaskannya satu persatu kepada Anda dikarenakan terbatasnya space atau ruang yang disediakan pada situs ini, disamping itu pokok bahasan tutorial ini adalah PEMROGRAMAN DELPHI, saya kuatir nantinya pokok bahasan tersebut tidak bisa dimuat karena keterbatasan ini. Untuk itu saya sekali lagi menugaskan kepada Anda untuk mencari dari situs atau media lain mengenai DEKLARASI TYPE ini.
Contoh Program yang menggunakan deklarasi tipe
{ Program   : Contoh penggunaan deklarasi tipe }

uses crt;
type J = array[1..8] of string[20];
const
   Jadwal : J=('joging','ngampus','kerja');
   var
    I : word;
    begin
      clrscr;
      writeLn('agenda');
      writeLn('===============');
      writeLn;
        for I:=1 to 8 do
          writeLn('  ',I,'. ',Jadwal[I]);
          writeLn('spirit');
     readLn;
  end.

4.    DEKLARASI LABEL (LABEL DECLARATION)
Deklarasi label adalah suatu deklarasi yang digunakan untuk memberi tanda (MARK) pada program agar program dapat berpindah atau meloncat pada tanda (MARK) yang ditentukan. Deklarasi ini mirip dengan bahasa PEMROGRAMAN BASIC yang menggunakan NOMOR BARIS untuk berpindah dari baris ke baris. Penulisan Deklarasi label ini harus menggunakan perintah LABEL yang dipisahkan dengan tanda koma ( , ).
Contoh program yang menggunakan deklarasi Label.
{ Program : Memilih dengan deklarasi Label }

uses crt;
label
 1,2,3,4,keluar; {Deklarasi label yang ditentukan}
var
ketik,ulang : char;
begin
1: { label ke - 1 sebagai pokok program }
 clrscr;
 writeLn('Menu Masakan Hari ini');
 writeLn('---------------------');
 writeLn;
 writeLn('a. Nasi Putih + Rendang');
 writeLn('b. Nasi Putih + Telur Dadar');
 writeLn('c. Nasi Putih + Tempe Goreng');
 writeLn;
 writeLn('Masukan Huruf a , b atau c untuk Pesanan Anda.');
 write('Pilihan Anda..? ');readLn(ketik);

{ Jika user memilih pilihan tersebut, maka program akan
  meng-eksekusi program sesuai dengan LABEL yang dituju }

    if ketik='a' then
      begin           
       goto 2;
      end;
       if ketik='b' then
        begin
         goto 3;
        end;
         if ketik='c' then
          begin
           goto 4;
          end

{ User tidak memilih atau salah dalam memasukan pilihan
  selain yang ditentukan maka program akan meng-eksekusi
  program yang lainnya, dalam program ini akan ditampil
  kan kalimat "Anda tidak pesan apa-apa." lalu
  meng-eksekusi LABEL keluar yang mengakhiri program }

          else
          begin
           clrscr;
           writeLn('Anda tidak pesan apa-apa.');
           writeLn('Mungkin Anda tidak Lapar..);
           writeLn;
           writeLn('Tekan Enter untuk keluar..');
           readLn;
           goto keluar;
          end;

2: { label ke - 2 bila user memilih pilihan a }
 clrscr;
 writeLn('Pesanan Anda Nasi Putih + Rendang, Terima Kasih.');
 writeLn;
 write('Pilih Lagi..(y/t) ? ');ReadLn(ulang);
       if (ulang='y') or (ulang='Y') then
          begin
            goto 1;
          end
       else
          begin
            goto keluar;
          end;

3: { label ke - 3 bila user memilih pilihan b }
 clrscr;
 writeLn('Pesanan Anda Nasi Putih + Telur Dadar,Terima Kasih.');
 writeLn;
 write('Pilih Lagi..(y/t) ? ');ReadLn(ulang);
      if (ulang='y') or (ulang='Y') then
         begin
           goto 1;
         end
      else
         begin
           goto keluar;
         end;



4: { label ke - 4 bila user memilih pilihan c }
 clrscr;
 writeLn('Pesanan Anda Nasi Putih + Tempe Goreng,Terima Kasih.');
 writeLn;
 write('Pilih Lagi..(y/t) ? ');ReadLn(ulang);
      if (ulang='y') or (ulang='Y') then
         begin
           goto 1;
         end
      else
         begin
           goto keluar;
         end;

keluar: { label keluar yang mengakhiri program }

end.
Penulisan label bebas sesuai dengan keinginan anda, bisa sebuah kata atau karakter, yang penting nama label tidak boleh sama dengan nama variabel, type, atau konstanta yang anda tetapkan. Bila itu terjadi maka kemungkinan akan terjadi konflik variabel dalam pengeksekuasian program. Contoh diatas akan terus dilakukan selama anda memilih pilihan yang di tetapkan. Ada cara yang lebih praktis ketimbang menggunakan LABEL yaitu dengan printah CASE – OF yang akan dibahas nanti.

5.    DEKLARASI PROSEDUR (PROCEDURE DECLARATION)
Deklarasi prosedur adalah sebuah deklarasi yang dibuat dalam program agar bisa digunakan lagi dalam program, jadi deklarasi prosedur merupakan sebuah SUB PROGRAM yang bisa dipanggil sewaktu-waktu dalam program bila dibutuhkan. Dalam sebuah program yang terstruktur, Deklarasi Prosedur ini sangat dibutuhkan agar program menjadi lebih simpel. Untuk mengerti arti dari PROSEDUR ini saya berikan contoh kasus sebagai berikut : misalkan ada sebuah proses yang yang harus dikerjakan berulang kali untuk menampilkan kata “SURYATEKNO” , maka dalam program yang terstruktur kata tersebut disimpan dalam sebuah prosedur yang dapat dipanggil lagi dimanapun kata tersebut diperlukan.
Contoh program yang menggunakan Deklarasi Prosedur.
uses crt;
{ini adalah prosedur}
Procedure s;
 begin
  write('saipul');
 end;

{akhir prosedur}

{program utama}

 begin
  clrscr;
  s;   { prosedur yang dipanggil }

  WriteLn(' adalah suatu organisasi yang menghimpun');
  writeLn('orang-orang yang mempunyai minat sama.');
  writeLn;

  s;   { prosedur yang dipanggil }
  writeLn(' juga merupakan sebuah kelompok belajar.');
  writeLn;
  writeLn('Tekan Enter untuk keluar...');
  readLn;
end.
{akhir program utama}
Prosedur mempunyai banyak jenisnya, disini saya hanya akan menjelaskan suatu prosedur yang mudah-mudah saja agar anda sebagai pemula mengerti dalam menggunakan prosedur ini.
Prosedur yang paling terkenal adalah Prosedur REKURSI (RECURSION PROCEDURE) . Prosedur ini adalah sebuah prosedur yang menggunakan sendiri prosedurnya, jadi prosedur ini adalah prosedur yang memakan prosedur . Contoh kasus proses rekursi yang rumit adalah sebagai berikut :
Anda diminta untuk memindahkan sebuah piringan yang berbeda satu dengan yang lainnya secara satu persatu dari sebuah tumpukan ke tumpukan yang lainnya, dengan syarat piringan yang lebih kecil tidak boleh berada dibawah piringan yang lebih besar, dan pemindahan nya harus satu persatu tidak boleh sekalian. Lihat gambar.
Rekursi yang rumit, disebut juga sebagai MENARA HANOI
Anda harus memindahkan piringan yang berjumlah 20 buah piringan yang berbeda dari menara A ke menara C, untuk keperluan tersebut Anda diberikan sebuah menara lagi yaitu menara B. Yang menjadi pertanyaan adalah : Berapa kali Anda memindahkan sebuah piringan yang sama, dan berapa langkah yang Anda tempuh serta berapa lama Anda memindahkannya ?. Sebagai bantuan lagi Anda diberikan contoh untuk 2 buah piringan sebagai berikut : Pertama Anda pindahkan piringan yang ke 2 ke menara B lalu pindahkan piringan ke 1 ke menara C setelah itu pindahkan piringan ke 2 yang berada di menara B ke menara C selesai ( Ingat piringan yang lebih kecil tidak boleh berada dibawah piringan yang besar..! ). Sekarang cobalah untuk 20 piringan yang ditugaskan kepada anda !.
Pusing menghitung nya yah..?, kalau pusing berapa langkah yang Anda tempuh untuk tugas itu, dibawah ini saya berikan contoh program yang memakai prinsip REKURSI untuk menghitung langkah yang diperlukan. serta akan diperlihatkan piringan mana saja yang akan dipindahkan terlebih dahulu, Anda bisa saja memasukan 1000 piringan misalnya, tetapi Anda harus sabar menunggunya, sebab bila Anda memasukan waktu yang diinginkan sebesar 1 detik saja untuk setiap piringan, berarti Anda harus sabar menunggu program untuk menghitung dan memperagakan kepada Anda selama 3 Hari. Untuk contoh ini cobalah Anda masukan Tugas memindahkan piringan diatas dengan bantuan program ini..hehehe malas ni yeee .
Uses crt;
{ Awal Prosedur Rekursi }
procedure flashnet(Jumlah      : Integer;
          Sumber,Tujuan,Bantuan   : Char;
          var Langkah,Jumlah_A,
          Jumlah_B,Jumlah_C,Waktu : Integer);
Var
  Baris_Sumber,Kolom_Sumber,
  Baris_Tujuan,Kolom_Tujuan : Integer;
Begin
  if Jumlah > 0 Then
   Begin
    flashnet(Jumlah-1,Sumber,Bantuan,Tujuan,
                Langkah,Jumlah_A,Jumlah_B,Jumlah_C,Waktu);
    Langkah := Langkah+1;
     if Sumber = 'A' Then
      Begin
       Kolom_Sumber := 30;
       Baris_Sumber := 24-Jumlah_A;
       Jumlah_A     := Jumlah_A-1;
     End
     Else
      if Sumber = 'B' Then
       Begin
        Kolom_Sumber := 40;
        Baris_Sumber := 24-Jumlah_B;
        Jumlah_B     := Jumlah_B-1;
       End
     Else
      Begin
       Kolom_Sumber  := 50;
       Baris_Sumber  := 24-Jumlah_C;
       Jumlah_C      := Jumlah_C-1;
      End;

  if Tujuan = 'A' Then
  Begin
   Kolom_Tujuan := 30;
   Jumlah_A     := Jumlah_A+1;
   Baris_Tujuan := 24-Jumlah_A;
  End
  Else
   if Tujuan = 'B' Then
    Begin
     Kolom_Tujuan := 40;
     Jumlah_B     := Jumlah_B+1;
     Baris_Tujuan := 24-Jumlah_B;
    End
    Else
     Begin
      Kolom_Tujuan := 50;
      Jumlah_C     := Jumlah_C+1;
      Baris_Tujuan := 24-Jumlah_C;

     End;

Delay(Waktu*1000);
GotoXY(Kolom_Sumber,Baris_Sumber); Write(' ');
GotoXY(Kolom_Tujuan,Baris_Tujuan); Write(Jumlah);
GotoXY(18,24); Write(Langkah);

flashnet(Jumlah-1,Bantuan,Tujuan,Sumber,
            Langkah,Jumlah_A,Jumlah_B,Jumlah_C,Waktu);
 End;
End;
{Akhir Rekursi}

{Program Utama}
Var
  Jumlah, Langkah            : Integer;
  Sumber,Bantuan,Tujuan      : Char;
  I,Baris                    : Integer;
  Jumlah_A,Jumlah_B,Jumlah_C : Integer;
  Waktu                      : Integer;

  Begin
  ClrScr;
  Write('Berapa Piringan Yang akan dipindah ? ');
  ReadLn(Jumlah);
  Write('Waktu yang Anda inginkan (0-32) detik ? ');
  ReadLn(waktu);
   ClrScr;
   GotoXY(25,24); WriteLn(' Sumber  Bantuan   Tujuan');
   For I:=Jumlah DownTo 1 Do
    Begin
     Baris := 23-(Jumlah-I);
     GotoXY(30,Baris); WriteLn(I);
    End;

  Langkah  := 0;
  Sumber   :='A';
  Bantuan  :='B';
  Tujuan   :='C';
  Jumlah_A := Jumlah;
  Jumlah_B := 0;
  Jumlah_C := 0;

   GotoXY(1,24); Write('Jumlah Langkah = ');
    flashnet(Jumlah,Sumber,Tujuan,Bantuan,
                Langkah,Jumlah_A,Jumlah_B,Jumlah_C,Waktu);
   ReadLn;
  End.
{Akhir Program Utama}

6.    DEKLARASI FUNGSI (FUNCTION DECLARATE)
Deklarasi fungsi adalah deklarasi gabungan antara deklarasi Prosedur, type dan variabel. Kumpulan deklarasi ini disediakan oleh pascal untuk mempermudah dalam penyusunan program sehingga berbentuk sebuah fungsi. Pada sebuah fungsi komponen-komponen dari ketiga deklarasi tersebut dijadikan satu kesatuan yang dapat digunakan pada program yang majemuk. Adapun tata cara penulisan deklarasi fungsi adalah sebagai berikut :
Tata Cara Penulisan Deklarasi Fungsi
Dari gambar diatas terlihat bahwa ketiga deklarasi yang telah diuraikan sebelumnya dijadikan satu kesatuan yang lebih simple dan praktis. Untuk lebih jelasnya cobalah Anda ketik di editor Pascal program dibawah ini, setelah itu Anda jalankan program tersebut dengan perintah RUN.
{ Program contoh Deklarasi fungsi}

Function Hasil(A,B,C : longint) : longint;
  Begin
    Hasil  :=  A*A+B*B+C;
  end;

   Var X,Y,Z : longint;
    Begin
          WriteLn('Hasil dari X^2 + Y^2 + Z adalah..?');
          Write('Jika Nilai  X = ');ReadLn(X);
          Write('Dan Nilai   Y = ');ReadLn(Y);
          Write('Serta Nilai Z = ');ReadLn(Z);
          Write('Maka Hasil dari X^2 + Y^2 + Z');
          WriteLn(' adalah : ',Hasil(X,Y,Z);
          {Hasil - adalah nama fungsi yang dipanggil}
          WriteLn;
          WriteLn('spirit');
          ReadLn;
        end.
Dari contoh program diatas, mungkin sebagian dari Anda ada yang bertanya mengapa fungsi yang dinyatakan dengan variabel-variabel A,B dan C bisa berhubungan dengan Variabel X,Y dan Z ?. Begini..,Fungsi yang dijabarkan dengan variabel A,B,C hanya merupakan operasi yang harus dikerjakan oleh fungsi Hasil := A*A+B*B+C; , jadi Variabel A,B dan C tidak bernilai atau kosong. Sedangkan Variabel X,Y dan Z adalah VariabelIdentifier (Pengenal) yang Ada nilainya dan nilai ini harus dilaksanakan oleh fungsi seperti yang dikehendaki. Untuk lebih jelas lagi Sekarang cobalah Anda rubah baris program WriteLn(‘ adalah :,Hasil(X,Y,Z); dengan mengganti variabelnya dengan A,B dan C kemudian Anda RUN lagi, maka COMPILER PASCAL akan mengeluarkan peringatan bahwa variabel A,B,dan C tidak diketahui identitasnya (Unknow Identifier), sebab A,B dan C tidak bernilai. Bagian inilah yang harus Anda Pahami dan Perhatikan dengan serius tentang Tata Cara membuat Deklarasi Fungsi.
Kalau diterjemahkan dalam konteks bahasa manusia, perintah Hasil(X,Y,Z) adalah : Kerjakan Nilai yang ada dalam kurung, yang nilainya dimasukan melalui input keyboard dengan operasi Hasil , Dimana operasi tersebut adalah A*A+B*B+C dengan A sebesar X, B sebesar Y, dan C sebesar Z.. Paham..!!, Kalau belum paham juga saya menyerah.., tidak bisa menerangkan lagi kepada Anda secara detail mengenai fungsi ini, dan dapat membuat Anda mengerti.


No comments:

Post a Comment