Thursday, 20 June 2013

subroutine & Perl basic part 1

kemaren di awal2 saya pernah menyinggung-nyinggung tentang subroutine. sekarang saya mau introduce sedikit tentang subroutine, basicnya dan bagaimana cara menggunakannya secara sederhana. pada dasarnya subroutine tidak jauh berbeda dengan macro syntax biasa, hanya saja subroutine bersifat lebih mendasar dan memiliki syntax yang berbeda, yaitu syntax Perl expression. kenapa kita perlu tau tentang subroutine? karena subroutine dapat ditulis dengan bahasa dan syntax dasar openkore. dan tentu saja dapat mengolah data lebih cepat, dan tanpa batasan2 ketersediaan perintah seperti di macro karena dapat mengolah string2 dasar dari server.

basic
ada beberapa aturan dasar pada perl. penulisan perl mirip seperti macro, harus dilakukan berurutan dari atas kebawah, dan perl akan melakukan ekesekusi program satu persatu dari atas kebawah dan selalu dimulai dengan tanda { dan ditutup dengan } untuk 1 kumpulan perintah. namun ada aturan lain disini, untuk mengakhiri suatu baris perintah, bukan enter atau newline yang digunakan untuk menutupnya, tapi tanda ;
contoh :


sub belajar {
my $a = 1;
return $a;
}

adapun cara memanggil subroutine dari dalam macro ialah dengan menggunakan perintah "nama_sub (input)"
input harus memakai tanda " " jika berupa string, dan tidak perlu memakainya jika berupa angka numeric.jika sub memiliki perintah return, maka kata atau variable yang di return dapat diambil dengan perintah "$var = nama_sub (input)"
contoh :

macro panggil {
belajar () #memanggil tanpa input#
belajar ("abc") #memanggil dengan input string#
belajar (123) #memanggil dengan input numeric#
belajar ($angka) #memanggil dengan input variable yang berisi data numeric#
belajar ("$string") #memanggil dengan input variable yang berisi data string #
$a = belajar (123) #memanggil dan memasukan return value ke $a untuk nantinya digunakan di macro#
}

variable
ada 2 tipe data atau variable paling dasar di perl, yaitu scalar yang menyimpan 1 value dan array yang bisa menyimpan banyak value. dan untuk penulisan variable pada subroutine, kita perlu mendeklarasi variablenya sebelum bisa digunakan. tujuan deklarasi ini adalah agar variablenya bersifat local.

declare
tujuan declare adalah agar program mengenali variable sebelum bisa digunakan. variable yang sudah di declare akan di simpan di ram dan akan bersifat local, atau hanya bisa digunakan di satu subroutine saja. sebetulnya declare ini hanya dibutuhkan pada subroutine agar variablenya bersifat local dan bukannya global sehingga hanya bisa terpakai di satu function/subroutine. cara mendeclare cukup menuliskan "my variable;"
contoh :

sub belajar {
my $a;
my $b = 1;
my $c = 'abc';
my @d = ( a, b, c );
}

scalar
variable scalar adalah variable yang bisa menyimpan data numeric dan data string. untuk memakai scalar pada subroutine, kita hanya perlu menggunakan tanda $ mirip seperti pada macro syntax. untuk menuliskan data string kita perlu menggunakan tanda ' ' atau " ". kegunaan tanda itu nanti akan di jelaskan di artikel selanjutnya
contoh :

sub belajar {
my $b = 1; #scalar numeric#
my $c = 'abc'; #scalar string#
}

terkadang kita juga perlu menggunakan scalar kosong atau variable scalar yang belum terdifinisi. untuk variable sejenis itu kita dapat menuliskannya tanpa deklarasi jenisnya, namun berupa namanya saja, atau dengan menuliskan $_ sebagai pengganti isinya. tindakan ini dilakukan seperti untuk membooking nama variable sebelum nanti diisi dengan data agar bisa langsung dipakai tanpa mendeclare kembali.
contoh :

sub belajar {
my $a; #scalar kosong yang belum terdefinisi#
my $b = $_; #scalar kosong yang belum terdefinisi#
}

array
variable array adalah variable yang bisa menyimpan data numeric dan string dengan jumlah yang banyak, dan dapat dipanggil tiap elementnya. tiap 1 element di array dipisah dengan tanda koma. untuk memakai array pada subroutine, kita harus menggunakan tanda @. dan untuk memanggil element array kita hanya perlu menambahkan tanda [index] pada akhir array, angka dimulai dari 0 untuk element pertama.
contoh :

sub belajar {
my @array = ( a, b, c );
my $a = $array[0]; #$a akan sama dengan a#
my $b = $array[1]; #$b akan sama dengan b#
my $c = $array[2]; #$c akan sama dengan c#
}

untuk mengetahui berapa banyak data yang disimpan di array, kita dapat menggunakan 2 cara. yaitu dengan menggunakan tanda $# atau melakukan declare dengan string.
contoh :

sub belajar {
my @array = ( a, b, c );
return $#array; #$#array akan sama dengan angka 3#
}

atau

sub belajar {
my @array = ( a, b, c );
my $long = @array; #$long akan sama dengan angka 3#
}

hash table
variable hash table adalah variable yang mirip seperti array biasa, dan terkadang disebut juga array asosiatif, namun bersifat mengikat antar valuenya. untuk menulis hash table, dapat dituliskan dengan tanda % dan inputnya dengan menggunakan kurung. dan untuk memanggil pasangan tiap skalar di dalamnya harus memakai variable scalar dan kurung kurawal yang berisi pasangan yang ingin kita cari bukannya index.
contoh:

misalkan kita ingin menuliskan job terakir yang bisa diperoleh dari job 2. misal priest nantinya akan menjadi archbishop. maka pasangan priest => archbishop. kita dapat menuliskan hash seperti ini

sub belajar {
my %hash = ("priest","arcbishop","monk","shura","knight","runeknight");
my $a = $hash{'priest'}; #$a akan sama dengan arcbishop#
my $b = $hash{'monk'}; #$b akan sama dengan shura#
my $c = $hash{'knight'}; #$c akan sama dengan runeknight#
}

atau bisa juga ditulis

sub belajar {
my %hash = ("priest" => "arcbishop","monk" => "shura","knight" => "runeknight");
my $a = $hash{'priest'}; #$a akan sama dengan arcbishop#
my $b = $hash{'monk'}; #$b akan sama dengan shura#
my $c = $hash{'knight'}; #$c akan sama dengan runeknight#
}

input data dan return value
seperti dijelaskan di awal, subroutine dapat menerima sebuah inputan data dari pemanggilnya. dan dapat memberi data kepada pemanggilnya menggunakan return value. namun bagaimana cara penggunaannya pada subroutine. disini akan saya jelaskan

input data
untuk mengambil input data pada subroutine kita harus menggunakan tanda $_[index] yang lagi2 seperti biasa dalam perl dimulai dari angka 0 untuk input pertama.
contoh :

macro panggil {
belajar (1,"abc")
}

sub belajar {
my $a = $_[0]; #$a akan sama dengan 1#
my $b = $_[1]; #b akan sama dengan abc#
}

return value
untuk mengembalikan data ke pemanggil, kita harus menggunakan perintah return. untuk mereturn data yg kita inginkan kita harus menuliskannya dengan perintah "return value"
contoh

macro panggil {
$val1 = belajar ()  #$val1 akan sama dengan 1#
$val2 = study () #$val2 akan sama dengan abc#
$val3 = learn () #$val3 akan sama dengan abc#
}

sub belajar {
return 1; #mereturn 1#
}

sub study {
return 'abc'; #$mereturn abc#
}

sub learn {
my $a = abc;
return $a; #mereturn variable#
}

No comments:

Post a Comment