Apa sih, Mengapa, Apa.. Apa.. “PASCAL”

Standar
MARI BERTANYA TENTANG PASCAL
Apa itu Turbo Pascal ?
Pascal  merupakan  suatu  bahasa  komputer  tingkat  tinggi  yang  dibuat  sekitar  tahun
1970  oleh  Niklaus  Wirth  dan  digunakan  untuk  pendidikan  komputer.  Nama  Pascal
diambil  dari  seorang  ahli matematika  yang  bernama  Blaise  Pascal 
yang menemukan mesin  hitung  pertama.  Bahasa  Pascal  dirancang  untuk  menyelesaikan  masalah  dari
berbagai kalangan pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan.
Salah  satu  kompiler  pascal  yang  terkenal  dan  tercepat  adalah  Turbo  PASCAL  yang
dibuat oleh perusahaan Borland (http://www.borland.com).
Adakah versi Turbo Pascal untuk pemrograman Visual ?
Pada  trend  pemrograman  Visual,  perusahaan  Borland  mengeluarkan  Borland  Delphi
yang menggunakan dasar dialek Pascal pada lingkungan pemrograman Visual.
Apa artinya Pascal adalah bahasa pemrogram terstruktur ?
Pascal    adalah  suatu  bahasa  pemrograman  terstruktur.  Hal  tersebut  berarti  semua
program yang anda buat harus  terstruktur dan  teratur, dalam hal  ini ada pemakaian
goto dan jump.
Bagaimana Struktur program pascal yang paling sederhana ?
Struktur program pascal yang paling sederhana adalah :
uses …;
var …;
begin
  …. {Your program is here}
end.
Dapatkah anda memberi  contoh  sebuah program pascal yang
sederhana ?
uses crt;
begin
  Clrscr;
  Writeln(‘Saya sedang belajar Pascal !’);
  Writeln(‘Di PentaCOM’);
end.
Bagaimana Struktur program pascal yang kompleks ?
Adapun struktur dasar suatu program pascal adalah sebagai berikut :
program   … ;   { Program heading }
uses      … ;   { Uses clause }
label     … ;   { Labels }
const     … ;   { Constants }
type      … ;   { Types }
var       … ;   { Variables }
procedure … ;   { Procedures }
function  … ;   { Functions }
begin
  statement;      { Statements }
  …
end.
Program heading
Judul program dalam Turbo Pascal bersifat optional dan tidak ada pengaruhnya dalam
program.  Jika  ditulis  akan memberikan    nama  program  dan  suatu  daftar  parameter
optional    dimana  program    itu  berkomunikasi.  Daftar  itu  terdiri    dari  sederetan
indentifier  yang diakhiri dengan tanda kurung  dan dipisahkan dengan tanda koma.
Contoh :
Program Perhitungan(Input,Output);
Uses Clause
Bagian uses clause digunakan untuk menentukan  library yang dibutuhkan saat proses
program.  LIBRARY  merupakan  file  penyimpan  subroutine  yang  secara  berulang
digunakan  saat  proses  program.  Library  ini  diistilahkan  sebagai  unit  dalam  Turbo
PASCAL  yang  terdiri  dari  SYSTEM,  OVERLAY,  GRAPH,  DOS,  CRT  yang  ditempatkan
dalam file TURBO.TPL.
Contoh :
Uses Crt; (*menggunakan Unit Crt *)
Perhatian :
Unit  system  merupakan  unit  yang  secara  otomatis  akan  disertakan  dalam  setiap
program, unit  inilah mengatur  semua perintah dasar  input dan output pada Pascal  .
Sedangkan unit-unit lain hanya akan disertakan bila kita pilih pada bagian uses.
Declaration
Bagian ini meliputi deklarasi untuk label, const, type, var, procedure dan function.
Syarat terpenting dalam pembentukan suatu program adalah, bahwa setiap variabel,
type non-standard,  label, procedure non-standard,  serta  function non-standard yang
dipakai didalamnya harus nyatakan (deklarasi) terlebih dahulu pada bagian deklarasi.
Setiap deklarasi tersebut harus bersifat unik (tidak boleh serupa satu sama  yang lain).
Penulisan  nama  dalam  deklarasi  tersebut  harus  memenuhi  syarat-syarat  sebagai
berikut :
- panjang nama maximum 63 character, diawali dengan alphabet 
- tidak ada special character kecuali tanda garis bawah (“_”)
- tidak boleh serupa dengan reserved word (kata tercadang)
- tidak boleh serupa dengan indentifier lainnya. 
Variabel Declaration
Setiap  variabel  yang  digunakan  dalam  program  harus  didefinisikan  terlebih  dahulu
sebelum digunakan. Cara penulisan ini adalah :
Var
  <nama var> : <type variable>;
Statement
Bagian  ini merupakan  inti dari program. Seluruh perintah dan urutannya serta proses
Input/Output  dalam  program  perlu  disusun  secara  teratur  oleh  penyusun  program.
Segala yang ada pada bagian uses maupun deklarasi merupakan pendukung  terhadap
isi program.
Bagaimana membuat keterangan ?
Untuk membuat  program  anda menjadi mudah  dibaca  dan  dimengerti, maka  perlu
diberi  keterangan  yang  akan  diabaikan  oleh  kompiler.  Untuk  membuat  keterangan
gunakan tanda kurawal { ini adalah keterangan }, atau (* ini adalah keterangan *).
Type data apa saja yang disediakan Turbo Pascal ?
Adapun type variable yang disediakan pada TURBO PASCAL :
1.Ordinal types 
Type  data yang mempunyai urutan pasti, dan masih terbagi menjadi
- Integer
Type variable yang beguna untuk pengolahan data yang bulat, type  ini masih terbagi
atas berberapa menurut jangkauan data dan ukurannya :
Type                              Jangkuan                               Ukuran
Shortint                         -128..127                                      8 bit
Integer                       -32768..32767                              16 bit
Longint      -2147483648..2147483647      32 bit
Byte            0..255                                                    8 bit
Word          0..65535                                                16 bit
- Char
Type  variabel  yang  berguna  untuk  pengolahan  character  ASCII,  type  character  ini
penulisannya  ditandai  dengan  dua  buah  petik  tunggal  seperti  :  ‘A’,  ‘3’,’*’,#7  untuk
menyatakan ‘ harus ditulis ””
- Boolean
Type  varibale  yang  berguna  untuk  pengolahan  hal  yang  hanya  mempunyai  dua
ketentuan yaitu benar(TRUE) dan salah(FALSE) saja.
2.Real types
Type variable yang beguna untuk pengolahan data yang  tidak bulat, untuk  type  real
ini juga terbagi atas  beberapa :
Type                     Jangkauan                             Ketelitian                Ukuran
Real                      2.9e-39..1.7e38                         11-12 digit                    6 bit
Single                   1.5e-45..3.4e38  ³  7-8            7-8 digit                        4 bit
Double                 5.0e-324..1.7e308                  15-16 digit                     8 bit
Extended           3.4e-4932..1.1e4932               19-20 digit                  10 bit
Comp                  -9.2e18..9.2e18                            19-20 digit                   8 bit
Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator antara lain:
Operator  Integer Type  Real Type
+           Penjumlahan  Penjumlahan
-            Pengurangan  Pengurangan
*           Perkalian  Perkalian
/           Pembagian  Pembagian
DIV     Hasil bagi
MOD    Sisa Bagi
Operator  Integer Type  Boolean Type
NOT        Bitwise Negation  Logical Negation
AND       Bitwise AND  Logical AND
OR           Bitwise inclusive OR  Logical inclusive OR
XOR       Bitwise exclusive OR  Logical exclusive OR
SHL        Bitwise shift-left
SHR        Bitwise shift-right
Operator relasi yang mengembalikan hasil Boolean
Operator  Fungsi
:=           Menyatakan nilai
=            Sama dengan
<>         Tidak sama dengan
<            Lebih kecil
>           Lebih besar
<=        Lebih kecil atau sama dengan
>=        Lebih besar atau sama dengan
Bagaimana menampilkan tulisan ke layar ?
Pascal  menyediakan  perintah  Write  dan  Writeln  yang  dapat  anda  gunakan  untuk
menampilkan tulisan ke layar.
Dapatkah  anda memberi  contoh  program  yang menggunakan
variabel ?
{Deklarasi variabel}
var
  UmurKu    : Byte;
  Keterangan : String;
(*Program anda*)
begin
  UmurKu:=19;
  Keterangan:=’Hi, saya sedang belajar Pascal di PentaCOM';
  Writeln(‘Saya berumur ‘,UmurKu,’ tahun’);
  Writeln(Keterangan);
end.
Bagaimana kalau saya ingin membaca masukan dari pemakai ?
Perintah  Readln  dapat  digunakan  untuk  membaca  masukan  dari  pemakai  dan
menyimpannya ke suatu variabel.
var
  UmurKu    : Byte;
  Keterangan : String;
begin
  Write(‘Berapa umur anda ? ‘); Readln(UmurKu);
  Write(‘Komentar anda: ‘); Readln(Keterangan);
  Writeln;
  Writeln(‘Saya berumur ‘,UmurKu,’ tahun’);
  Writeln(Keterangan);
end.
Bagaimana membatasi pencetakan tempat desimal untuk data
Real type ?
Untuk menentukan  jumlah  tempat sebelum desimal dan  sesudah desimal anda dapat
menggunakan :x:y setelah variabel yang akan dibatasi pencetakan nilainya, dimana x
adalah jumlah tempat sebelum desimal dan y adalah jumlah tempat setelah desimal.
Silahkan coba koding berikut :
var
  Pi    : Real;
Begin
  Pi := 22/7;
  Writeln(‘Bilangan Pi adalah ‘, Pi);
  Writeln(‘Bilangan Pi adalah ‘, Pi:2:3);
end.
Unit apa yang perlu saya cantumkan pada bagian uses, kalau saya ingin melakukan
pengaturan layar ?
Turbo Pascal menyediakan  suatu unit CRT, yang berisi perintah-perintah pengaturan
layar  seperti  membersihkan  layar,  mengatur  warna  tulisan,  warna  background,
memindahkan posisi cursor, mode layar, dan membuat window
Ok, saya sudah tahu perintah Clrscr, apa perintah untuk mengatur warna tulisan ?
Pada  prinsipnya  ada  dua  cara  untuk  mengatur  warna  tulisan  yang  dicetak  dengan
perintah Write dan Writeln, yang pertama adalah perintah :
TextColor(nomor warna);
Dan yang kedua adalah variabel internal dari unit CRT:
Textattr := nomor warna;
Hallo,  anda  belum  memberitahukan  kepada  saya  nomor  warna  yang  dapat  saya
gunakan !
Baiklah,  berikut  ini  adalah  nomor  warna  yang  mewakili  masing-masing  warna:  0
(black), 1 (blue), 2 (green), 3 (cyan), 4 (red), 5 (magenta), 6 (brown), 7 (lightgray), 8
(darkgray),  (9)  lightblue,  10  (lightgreen),  11  (lightcyan),  12  (lightred),  13
(lightmagenta), 14 (yellow), 15 (White).
Saya  pernah  melihat  tulisan  warna  berkedip-kedip,  dapatkah  hal  tersebut
dilakukan ?
Anda dapat saja melakukan hal tersebut dengan menambahkan angka 128 pada nomor
warna yang anda inginkan, misalnya :
TextColor(4 + 128);
Writeln(‘Merah dan berkedip-kedip’);
Atau :
TextColor(Red + Blink);
Writeln(‘Merah dan berkedip-kedip’);
Pada prinsipnya anda dapat menggunakan konstanta dari masing-masing nomor warna
seperti black, blue, green, dll, untuk menggantikan pemakaian nomor.
Ok, saya sudah mengerti, bagaimana pula dengan warna latar belakang ?
Pengaturan warna latarbelakang dapat menggunakan perintah :
TextBackground(nomor warna);
Dalam hal ini nomor warna yang berlaku hanya 0 s/d 7.
Tadi anda ada menyinggung tentang memindahkan posisi cursor, apa gunanya da
apa perintahnya ?
Pada  lingkungan  dos,  posisi  tulisan  dilayar  dicetak  berdasarkan  posisi  cursor  yan
sedang  aktif,  misalnya  sekarang  posisi  cursor  berada  di  kolom  10,  baris  5,  mak
perintah :
Writeln(‘Sedang belajar Pascal di PentaCOM’);
Akan menampilkan tulisan tersebut mulai kolom 10 di baris 5.
Jadi misalnya  anda  ingin mencetak  tulisan  tersebut  pada  kolom  20,  baris  13, mak
anda harus memindahkan  cusor  keposisi  kolom 20, baris 13, diikuti dengan perinta
pencetakan tulisan tersebut, contoh :
GotoXY(20,13);
Writeln(‘Tulisan ini dicetak mulai kolom 20, di baris 13);
Bisakah saya mendapatkan nilai posisi cursor yang sedang aktif ?
Bisa, anda bisa menggunakan variabel internal unit CRT, yaitu WhereX, dan WhereY.
GotoXY(5,5);
Write(‘Turbo’);
GotoXY(WhereX+10,3);
Write(‘Pascal’);
Ngomong-ngomong, berapa sih jumlah kolom dan baris pada layar normal ?
Normalnya 80 kolom, 25 baris.
Saya  pernah melihat  tulisan  layar  komputer  di  bandara   yang  lebih  besar
dari tulisan normal, bagaimana hal tersebut dapat dilakukan ?
Oh, ya. Hal tersebut dapat dilakukan dengan mengatur Mode layar dengan perintah :
TextMode(CO40);
Dan
TextMode(CO80);
Untuk menormalkannya.
Contoh :
Uses CRT;
begin
  TextMode(CO40);
  Writeln(‘A Real BIG Characters on screen !’);
  Readln;
  TextMode(CO80);
  Writeln(‘Back to normal’);
  Readln;
end.
He-he-he, saya sudah mengerti trik yang mereka gunakan.
Tunggu  dulu,  ada  satu  hal  lagi  yang  belum  diberitahu,  yaitu  membatasi  dari
pencetakan  dilayar  berdasarkan  koordinat  kiri  atas  dan  koordinat  kanan  bawah
dengan perintah :
Window(x1, y1, x2, y2);
Dimana x1, y1 adalah koordinat kiri atas dan x2, y2 adalah koordinat kanan bawah.
Contoh :
uses Crt;
begin
  ClrScr;
  WriteLn(‘Creating a window from 30,10 to 50,20′);
  Window(30,10,50,20);
  WriteLn(‘We are now writing in this small window we just created, we’+
          ‘can”t get outside it when writing long lines like this one’);
  Write(‘Press any key to clear the window’);
  ReadKey;
  ClrScr;
  Write(‘The window is cleared, press any key to restore to fullscreen’);
  ReadKey;
{Full Screen is 80×25}
  Window(1,1,80,25);
  Clrscr;
  Writeln(‘Back in Full Screen’);
end.
Ok, apakah anda sudah selesai ?
Belum, sebenarnya masih banyak perintah yang terdapat pada unit CRT, seperti :
Sound(frekuensi);
Delay(milidetik);
NoSound;
Apa pula fungsinya itu ?
Fungsi  perintah  Sound  untuk  membunyikan  speaker  komputer  dengan  frekuensi
tertentu.
Contoh :
Sound(500);
Tolong, bunyinya tidak berhenti, walaupun programnya sudah selesai !
He-he-he, anda  tidak menggunakan perintah NoSound untuk menghentikan efek dari
perintah Sound.
Contoh :
Sound(500);
NoSound;
Kok sekarang speaker komputer tidak berbunyi sama sekali ?
Oh, ya, saya lupa menyisipkan delay diantara Sound dan NoSound.
Contoh :
Sound(500);
Delay(1000);
NoSound;
Sebagai  programer  pemula  pascal,  saya  sering mendapatkan  peringatan  compiler
akan kesalahan Type Mismatch, dapatkah anda menjelaskan hal tersebut ?
Ok,  masalah  ini  sering  saya  dengar  dari  orang  yang  baru  belajar  pascal.  Memang
pascal adalah bahasa yang sangat ketat dalam variabel dan type data. Berikut ini saya
akan menerangkan konvensi perhitungan dan type data yang dihasilkan :
Konvensi Penjumlah (+), Pengurangan (-), dan Perkalian (*) :
integer dengan integer  = integer
integer dengan real        = real
real    dengan real            = real
Konvensi Pembagian (/) :
Selalu menghasilkan real.
Pembagian bulat dengan Div :
Menghasilkan Integer.
 Bagaimana penulisan perintah pengambilan keputusan pada Pascal ?
Salah satu perintah struktur pengambilan keputusan adalah :
If condition Then statement;
Dimana condition adalah sesuatu yang bernilai True atau False, dan statement adalah
perintah yang akan dijalankan.
Dapatkah anda memberikan sebuah contoh pemakaian perintah If ?
Baiklah, misalnya kita akan membuat program menentukan pembayaran berdasarkan
berdasarkan jumlah belanja, jika diatas 100000 (seratus ribu) mendapatkan potongan
3%, maka programnya adalah sebagai berikut :
Uses Crt;
Var
Belanja : Real;
Begin
Clrscr;
Write(‘Jumlah belanja ? ‘); Readln(Belanja);
If Belanja > 100000 Then Belanja := Belanja * 0.97;
Writeln(‘Jumlah yang harus anda bayar ‘,Belanja:10:2);
Readln;
End.
Ok, saya mengerti bahwa pada prinsipnya Statement setelah Then akan dijalankan
kalau condition setelah If menghasilkan nilai True. Bagaimana kalau condition True
Statement1 dijalankan, dan sebaliknya Statement2 dijalankan ?
Untuk  keputusan  seperti  ini,  pascal  menyediakan  struktur  pengambilan  keputusan
berikut:
If condition Then Statement1 Else Statement2;
Atau lebih baik ditulis sebagai
If conditon Then
    Statement1
Else
    Statement2;
Langsung saya buatkan contoh :
Uses Crt;
Var
Bilangan : Integer;
Begin
Clrscr;
Write(‘Masukan Bilangan ? ‘); Readln(Bilangan);
If (Bilangan Mod 2) = 0 Then
    Writeln (‘Genap’)
Else
    Writeln (‘Ganjil’);
Readln;
End.
He-he-he, bagaimana kalau keputusannya lebih dari 2, misalnya 4 Statement yang
harus dijalankan berdasarkan masing-masing condition ?
Oh, hal itu bisa dilakukan dengan merangkai beberapa struktur If, misalnya :
If condition1 Then
   Statement1
Else
   If condition2 Then
       Statement2
   Else
       If condition3 Then
           Statement3
       Else
           Statement4;
Apa itu procedure dan function ?
Procedure  dan  function merupakan  sub-program  yang memiliki bagian  deklarasi  dan
begin-end;  tersendiri  layaknya  suatu  program  pascal.  Tujuan  pemakaian  procedure
maupun  function adalah untuk memecah program kita menjadi kesatuan  logika yang
lebih  kecil  (sub-sub  program)  untuk  menghindari  perulangan  pengetikan  dan
memudahkan pembacaan.
Contoh pemakaian procedure :
uses crt;
begin
  clrscr;
  writeln(‘ABC’);
  writeln(‘Press any key when ready …’);
  readkey;
  writeln(‘Hey, let”s pause !’);
  writeln(‘Press any key when ready …’);
  readkey;
  writeln(‘Pause again !’);
  writeln(‘Press any key when ready …’);
  readkey;
end.
Dengan memecah program kita menjadi kesatuan yang lebih kecil :
uses crt;
procedure pause;
begin
  writeln(‘Press any key when ready …’);
  readkey;
end;
begin
  clrscr;
  writeln(‘ABC’);
  pause;
  writeln(‘Hey, let”s pause !’);
  pause;
  writeln(‘Pause again !’);
  pause;
end.
Contoh pemakaian function :
Var
I : Byte;
Akar,Bagi : Word;
Begin
  Writeln(Upper(‘Bilangan Prima dari 1 s/d 100′);
  Writeln(Replicate(‘-‘,30);
  For I := 1  To 100 do
      If (Bil > 1 And Bil < 4)  Then
         Write(I : 4)
      Else
         Begin
         Akar := Round(Sqrt(Bil));
         Bagi := 3;
         While (Bagi <= Akar) And (Bil  Mod Bagi <> 0) Do
               Bagi := Bagi + 1;
         If Bagi > Akar Then
            Write(I : 4);
         End;
End.
Dan contoh berikut yang menggunakan function :
Function IsPrime (Num  : Longint) : Boolean;
Var
  Sq ,Dv : Word;        (*local variable )
Begin
  If Num < 2 Then
     IsPrime := False
  Else
     If Num < 4  Then
        IsPrime := Bil > 1
     Else
        Begin
        Sq := Round(Sqrt(Num));
        Dv := 3;
        While (Dv <= Sq) And (Num Mod Dv <> 0) Do
              Dv := Dv + 1;
        IsPrime := Dv > Sq;
        End;
End;
(* Main program*)
Var
I : Byte;                 (*local variable*)
Begin
  Writeln(Upper(‘Prime number from 1 to 100′);
  Writeln(Replicate(‘-‘,30);
  For I := 1  To 100 do
      If IsPrima(I) Then
         Write(I : 4);
End.
Tadi saya melihat ada keterangan variabel local, apa maksudnya ?
Pada  program  utama,  procedure  maupun  function  dapat  memiliki  variabel  masing-
masing,  dimana  ruang  lingkup  pemakaiannya  hanya  berlaku  pada  program  utama,
procedure maupun function dimana variabel tersebut dideklarasi.
Contoh :
procedure foo;
var  a : byte;
begin
  a:=10;
  writeln(a);
end;
begin       { main begin…end block }
  foo;
  a:=15;    { This will be an error, since a is only known inside foo }
end.
Kalau begitu berarti ada variabel global dong ?
Ya, benar, global variabel adalah variabel yang ruang lingkup pemakaiannya meliputi
seluruh program, baik program utama, procedure maupun function.
Contoh:
var
  b : byte;    { global variabel }
procedure foo;
var  a : byte;
begin
  a:=10;
  b:=15;       { This is legal }
end;
begin          { main begin…end block }
  foo;
  a:=15;       { This is illegal }
  b:=5;        { This is perfectly legal }
end.
Jadi variabel global harus dideklarasi diatas semua procedure maupun function
Bagaimana kalau ada variabel local dan variabel global yang sama namanya?
Global  variabel  tersebut  akan  di  override.  Pada  suatu  program  yang  teratruktur
dengan baik, usahakan untuk menggunakan variabel Global seminimal mungkin
Contoh :
uses crt;
var
  a : byte;         { This is the global variable }
procedure foo;
var
  a : byte;      { This is local variable }
begin
  a:=15;
  writeln(‘foo is ‘,a);  { Will print 15}
end;
begin
  a:=10;
  writeln(a);      { Will print 10}
  foo;
  writeln(a);      { Still print 10}
end.
Dari tadi anda menyebutkan procedure dan function, apa sih bedanya ?
Pada prinsipnya function mengembalikan nilai.
Syntax untuk procedure :
Procedure namaprocedure (deklarasi parameter);
Deklarasi variabel local
begin
   :
   { commands }
   :
   :
end;
Syntax untuk function :
function namafunction (deklarasi parameter) : returntype;
Deklarasi variabel local
begin
   :
   { commands }
   :
   namafunction := return value;
end;
Coba perhatikan kembali contoh Isprima untuk lebih jelas.
Sebenarnya apa fungsi deklarasi parameter pada procedure maupun function ?
Pada deklarasi bagian deklarasi parameter kita menentukan parameter dan type data
dari  masing-masing  parameter  yang  akan  dikirim  kedalam  procedure  maupun
function.
procedure makewin(x1,y1,x2,y2 : byte);
var
  i,j : byte;
begin
  gotoxy(x1,y1); write(#201);   {top}
  for i:=x1+1 to x2-1 do write(#205);
  write(#187);
  for i:=y1+1 to y2-1 do        {middle}
  begin
    gotoxy(x1,i); write(#186);
    for j:=x1+1 to x2-1 do write(‘ ‘);
    write(#186);
  end;
  gotoxy(x1,y2); write(#200);   {bottom}
  for i:=x1+1 to x2-1 do write(#205);
  write(#188);
end;
begin
  makewin(1,1,30,8);
  makewin(10,10,60,18);
end.
Dan contoh untuk function :
function factorial(n : byte):longint;
var
  i      : byte;
  result : longint;
begin
  result:=1;
  for i:=1 to n do
    result:=result*i;
  factorial:=result;
end;
var
  x : byte;
begin
  writeln(‘Enter a value : ‘); readln(x);
  writeln(x,’! is ‘,factorial(x));
end.
Kalau  kita bisa mengirim nilai  kedalam  procedure maupun  function,  apakah bisa
juga sebaliknya ?
Bolehkan suatu function memanggil dirinya sendiri ?
Boleh,  dan  hal  tersebut  banyak  ditemukan  pada  persamaan  matematika,  misalnya
dalam menghitung faktorial.
5! = 4! * 5
4! = 3! * 4
2! = 1! * 2
1! = 1
Jadi kita secara programming dapat dilakukan dengan :
function factorial (n:byte):factorial;
begin
  if n<2 then     { This is the terminating condition }
    factorial:=1;
  else
    factorial:=n*factorial(n-1); { This is the recursive part }
end;
var
“  x : byte;
begin
  writeln(‘Enter a value : ‘); readln(x);
  writeln(x,’! is ‘,factorial(x));
end.
Sesuatu  hal  yang  perlu  diperhatikan  dalam  pembuatan  fungsi  rekursif  adalah  harus
adanya suatu titik akhir, sehingga rekursif dapat selesai.
sekian dulu buat tanya-tanya, nanti akan saya tambah lebih banyak lagi. Okeh !!
About these ads

Berikan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s