Selasa, 14 April 2015

REKURSI

Helloooo Guys........
Pada tulisan ratih kali ini, ratih bakal ngeshare buat kalian semua tentang rekursi..
Sebelum ratih aplikasikan dalam program delphi, pasti banyak yang penasaran neh.. sebenarnya rekursi itu apa siiiiih????
Okeh deh, ini ratih kasih penjelasan sedikit tentang rekursi biar kalian gak pada bingung liat postingan ratih..
let's cekidot..:D

Rekursi adalah proses pengulangan sesuatu dengan cara kesamaan-diri. Sebagai contohnya, saat dua cermin berada paralel antara satu dengan yang lain, gambar yang tertangkap adalah suatu bentuk rekursi tak-terbatas. Istilah ini memiliki makna beragam bergantung kepada ragam disiplin mulai dari linguistik sampai logika. Penggunaan paling umum dari rekursi yaitu dalam matematika dan ilmu komputer, yang mengacu kepada suatu metode mendefinisikan fungsi yang mana fungsi tersebut menggunakan definisinya sendiri. Secara spesifik hal ini mendefinisikan suatu instansi tak-terbatas (nilai fungsi), menggunakan ekpresi terbatas dengan beberapa instansi bisa merujuk ke instansi lainnya, tapi dengan suatu cara sehingga tidak ada perulangan atau keterkaitan tak-terbatas dapat terjadi. Istilah ini juga digunakan secara umum untuk menjelaskan suatu proses pengulangan objek dengan cara kesamaan-diri.

Definisi formal dari rekursi

Rekursi dalam program perekaman layar, dengan suatu jendela paling kecil mengandung foto keseluruhan layar.
Dalam matematika dan ilmu komputer, kelas dari objek atau metode memperlihatkan perilaku rekursif bila mereka dapat didefinisikan oleh dua properti berikut:
  1. Sebuah kasus (atau beberapa kasus) dasar sederhana
  2. Sejumlah aturan yang mengurangi kasus-kasus lainnya sampai ke kasus dasarnya.
Sebagai contoh, berikut ini adalah definisi rekursif dari leluhur seseorang:
  • Orang tua seseorang adalah leluhur seseorang (kasus dasar).
  • Orang tua dari suatu leluhur juga merupakan leluhur-nya (langkah rekursi).
Bilangan Fibonacci adalah contoh klasik dari rekursi:
  • Fib(0) adalah 0 [kasus dasar]
  • Fib(1) adalah 1 [kasus dasar]
  • Untuk semua integer n > 1: Fib(n) adalah (Fib(n-1) + Fib(n-2)) [definisi rekursif]
Banyak aksioma matematika berdasarkan aturan-aturan rekursif. Sebagai contohnya, definisi formal dari bilangan asli pada Aksioma Peano dapat dideskripsikan sebagai: 0 adalah bilangan asli, dan setiap bilangan asli memiliki sebuah suksesor, yang juga merupakan bilangan asli. Dengan kasus dasar ini dan aturan rekursif, seseorang dapat membuat himpunan dari semua bilangan asli.
Gambaran humornya berbunyi: "Untuk memahami rekursi, pertama anda harus memahami rekursi." Atau mungkin yang lebih akurat, dari Andrew Plotkin: "Jika anda telah mengetahui apa itu rekursi, cukup ingat jawabannya. Kalau tidak, cari orang yang berdiri paling dekat dengan Douglas Hofstadter selain anda; lalu tanya dia rekursi itu apa."
Objek matematika yang didefinisikan secara rekursif termasuk fungsi, himpunan, dan terutama sekali fraktal.

Oke guys, kalo kalian sekarang udah ngerti apa itu rekursi.. Yuk mari kita coba dalam aplikasi delphi nya..

1. Kalian bisa buka form worksheet kalian seperti biasanya, kek gini neh gambarnyaaa...
 
2. Setelah udah, bisa kalian coba ketikkan teks berikut :
program rekursi;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
  Tipelarik=string[20];
  Larikurut=array[1..1000] of Tipelarik;

Procedure Quicksort(var x:Larikurut;bawah,atas:word);

var
  i,j:word;
  sementara:Tipelarik;

begin
  while atas>bawah do
  begin
    i:=bawah;
    j:=atas;
    sementara:=x[bawah];
    {memecah larik menjadi 2 bagian}
    while i<j do
    begin
      while x[j]>sementara do
      j:=j-1;
      x[i]:=x[j];
      while(i<j) and (x[i]<=sementara) do
      i:=i+1;
      x[j]:=x[i];
    end;
    x[i]:=sementara;
    {urutkan rekursi}
    Quicksort(x,bawah,i-1);
    bawah:=i+1;
  end;
end;

var
  nama:Larikurut;
  n,i:word;

begin
  write('Jumlah data yang akan diurutkan ? ');readln(n);
  writeln;
  writeln('Masukkan data : ');
  for i:=1 to n do
  begin
    write('Data ke ',i,'? ');readln(nama[i]);
  end;
  {urutkan dengan procedure quick sort}
  Quicksort(nama,1,n);
  {tampilkan data yang diurut}
  writeln;
  writeln('Data yang telah diurut : ');
  for i:=1 to n do
    writeln(nama[i]);
    readln;
end.

3. Nah, kalo udah capek ngetik nya.. sekarang yuk kita coba run hasil kerja keras kita..
Taraaaaa.... ini lah hasilnya...

Dan, inilah hasil mata kuliah rekursi dari Bapak Hedi hari ini yang ratih coba guys,..
semoga bermanfaat...

Tidak ada komentar:

Posting Komentar