Praktikum
9
Subrutin atau Fungsi
A. T U J U A N 1. Membuat fungsi dan mengetahui cara memanggil fungsi tersebut. 2. Menggunakan
fungsi
untuk
menerima
argumen
yang
dikirim
oleh
pemanggilnya dan memproses argumen tersebut. 3. Menggunakan variabel bersifat global yang dikenal dan dapat diakses oleh semua fungsi dalam script.
B. DASAR TEORI Subrutin atau Fungsi Merupakan bagian script atau program yang berisi kumpulan beberapa statement yang melaksanakan tugas tertentu. Dengan subrutin kode script tentunya akan lebih sederhana dan terstruktur, karena sekali fungsi telah dibuat dan berhasil maka akan dapat digunakan kapan saja bila diinginkan. Beberapa hal mengenai fungsi ini adalah: •
Memungkinkan penyusunan kode script ke dalam bentuk modul-modul kecil yang lebih efisien dengan tugasnya masing-masing.
•
Mencegah penulisan kode yang berulang - ulang.
Di dalam shell fungsi juga bisa didefinisikan interaktif maupun secara script program, dan meskipun didefinisikan secara interaktif, sebuah fungsi juga bisa dipanggil melalui script yang dibuat dalam sebuah file dengan catatan fungsi tersebut sudah di export. Setelah melalui mekanisme export ini sub-shell juga bisa memanggil fungsi tersebut. Jadi fungsi adalah program yang dapat
78
dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr, atau nilai 0 sebagai default. Untuk membuat subrutin shell telah menyediakan keyword function seperti pada bahasa C, akan tetapi ini bersifat optional (artinya boleh digunakan boleh tidak). Bentuk umum dalam mendefinisikan fungsi dalam bash shell adalah sebagai berikut: Sintak: Nama_fungsi () { command; command; } Function nama_fungsi { command; command; } Function nama_fungsi () { command; command; } nama_fungsi adalah pengenal (identifier) yang aturan penamaannya sama seperti pemberian nama variabel, setelah fungsi dideklarasikan atau dibuat dapat dipanggil dengan menyebutkan nama fungsinya. lebih jelasnya lihat contoh script berikut: #!/bin/bash function hai_hello() { echo "Hello, apa kbabar" } #panggil fungsi hai_hello; jika keyword function
disertakan maka boleh tidak menggunakan tanda
kurung (), tetapi jika keyword function tidak disertakan maka tanda kurung harus digunakan, lihat contoh berikut: function hai_hello{ echo "Hello,apa khabar" } balas(){ echo "Baik-baik saja"; echo "Bagaimana dengan anda ?"; }
79
Mengirim argumen sebagai parameter ke fungsi Tentunya suatu fungsi lebih berdaya guna apabila dapat menerima argumen yang dikirim oleh pemanggilnya dan memproses argumen tersebut didalam fungsinya, fungsi yang telah dibuat pada bash shell tentunya harus dapat melakukan hal tersebut, apabila pada pemanggilan fungsi disertakan argumen untuk diproses fungsi tersebut, maka bash akan menyimpan argumen argumen tersebut pada parameter posisi 1,2,3,dan seterusnya..., dengan memanfaatkan parameter posisi tersebut tentunya dapat diambil nilai yang telah dikirim. lebih jelasnya lihat contoh berikut: #!/bin/bash function hello{ if [ -z $1 ]; then echo "Hello, apa khabar anda" else echo "Hello $1, apa khabar"; fi } #masukkan nama anda disini echo -n "Nama anda :"; read nama #panggil fungsi dan kirim isi variabel nama ke fungsi untuk dicetak hello $nama; perhatikan fungsi hello, sebelum mencetak pesan terlebih dahulu melakukan pemeriksaan dengan if terhadap parameter posisi $1 apabila kosong maka pesan "Hello, apa khabar anda" yang akan ditampilkan, tetapi jika ada string yang di inputkan maka string tersebut akan dicetak di dalam blok else pada fungsi. argumen pertama diteruskan ke variabel 1, argumen kedua pada variabel 2, dan seterusnya ... jika argumen yang dikirim lebih dari satu. Cakupan Variabel Secara default variabel - variabel yang digunakan dalam script adalah variabel bersifat global, maksud global adalah bahwa variabel tersebut dikenal dan dapat diakses oleh semua fungsi dalam script, tetapi bash menyediakan keyword local yang berfungsi membatasi cakupan (scope) suatu variabel agar
80
dikenal hanya oleh fungsi yang mendeklarasikannya. Jadi variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama variable yang sama di luar fungsi, sehingga tidak terjadi isi variable berubah. Perhatikan contoh berikut: #!/bin/bash proses(){ echo "Isi variabel a=$a"; } a=2; proses(); proses $a Jika ditambahkan local a pada fungsi proses menjadi proses(){ local a; echo -e "a didalam fungsi, a=$a"; } a=10; proses() echo "a diluar fungsi, a=$a" proses $a Pada contoh diatas jelas perbedaannya jika mendeklarasikan variabel memakai keyword local menyebabkan variabel tersebut hanya berlaku pada fungsi yang mendekalarasikannya.
Pada
contoh
dalam
fungsi
proses
variabel
a
dideklarasikan sebagai variabel local dan tidak diberi nilai.
C. PROSEDUR 1. Masuk ke sistem operasi Linux. 2. Login sebagai stD3XXYYY. 3. Gunakan subrutin atau fungsi pada pemrograman shell. 4. Catatlah hasil dari setiap program pada prosedur no.3 sebagai laporan sementara.
81
D. PERCOBAAN 1. Bentuk umum fungsi dengan keyword function dan tanda kurung ( ) $ function hai_hello() { > echo "Hello, apa kbabar" > } $ hai_hello
;(panggil fungsi)
2. Bentuk umum fungsi tanpa keyword function $ > > >
balas(){ echo "Baik-baik saja"; echo "Bagaimana dengan anda ?"; }
$ balas
;(panggil fungsi)
3. Bentuk umum fungsi dengan keyword function tanpa tanda kurung ( ) $ function cetak_hello { > echo "Hello, apa kbabar" > } $ cetak_hello
;(panggil fungsi)
4. Membuat fungsi dan cara memanggilnya dalam pemrograman $ vi func1.sh #!/bin/bash function hai_hello() { echo "Hello, apa kbabar" } #panggil fungsi hai_hello; #panggil sekali lagi hai_hello; 5. Memanggil beberapa fungsi dalam sebuah program $ vi func2.sh #!/bin/bash function hai_hello{ echo "Hello,apa khabar" } balas(){ echo "Baik-baik saja"; echo "Bagaimana dengan anda ?"; } #panggil fungsi hai_hello hai_hello; #panggil fungsi balas balas; 6. Mengirim argumen sebagai parameter ke fungsi
82
$ vi func3.sh #!/bin/bash function hello{ if [ -z $1 ]; then echo "Hello, apa khabar anda" else echo "Hello $1, apa khabar"; fi } #masukkan nama anda disini echo -n "Nama anda :"; read nama #panggil fungsi dan kirim isi variabel nama ke fungsi #untuk dicetak hello $nama; 7. Exit status ($?) yang dinyatakan dengan return nr, atau nilai 0 sebagai default. $ vi func4.sh #!/bin/sh F1( ) { echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo $? 8. Penggunaan variabel tanpa keyword local pada fungsi $ vi func5.sh #!/bin/sh F1( ) { Honor=10000 echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo “Nilai balik adalah $?” echo “Honor = $Honor” 9. Penggunaan variabel tanpa keyword local pada fungsi $ vi func6.sh #!/bin/bash proses(){
83
echo "Isi variabel a=$a"; } a=2; proses(); proses $a 10. Penggunaan variabel dengan keyword local pada fungsi $ vi func7.sh #!/bin/bash F1( ) { local Honor=10000 echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo “Nilai balik adalah $?” echo “Honor = $Honor” ;(bandingkan dengan no.8) 11. Penggunaan variabel dengan keyword local pada fungsi $ vi func8.sh #!/bin/bash proses(){ local a; echo -e "a didalam fungsi, a=$a"; } a=10; proses() echo "a diluar fungsi, a=$a" proses $a ;(bandingkan dengan no.9) 12. Penggunaan variabel dengan keyword global pada fungsi $ vi func9.sh #!/bin/bash func () { global_var=37 } echo "global_var = $global_var" func echo "global_var = $global_var"
84
E. Latihan 1. Buatlah program bash script yang didalamnya terdapat dua fungsi, fungsi pertama digunakan untuk menampilkan tulisan: Ini adalah fungsi pertama Selanjutnya keluar dari fungsi pertama Sedangkan fungsi kedua digunakan untuk menampilkan tulisan: Sekarang Memulai fungsi kedua ----------FUNCTION INI--------------------ADALAH---------------------FUNGSI KEDUA---------Tulisan yang ditampilkan oleh fungsi kedua ditampilkan dengan selang waktu 3 detik dan diulang-ulang terus hingga mencapai 30 kali akan berhenti. 2. Buatlah program bash script menggunakan fungsi untuk menghitung
factorial bilangan yang dimasukkan lewat penekanan tombol keyboard (standar input) dengan hasil tampilan program sebagai berikut: Enter a number: 2 Factorial of 2 is 2 Enter a number: 4 Factorial of 4 is 24
; dan seterusnya.
Untuk menghentikan program dengan ^c 3. Diketahui nilai sebuah variabel local adalah 23 dan nilai variabel globalnya 999, kedua variabel tersebut terdapat dalam fungsi. Buatlah program bash script-nya
untuk
menampilkan
nilai
dari
kedua
variabel
tersebut
menggunakan fungsi dengan format tampilan sebagai berikut: Loc_var masukkan fungsi = 23 Global_var masukkan fungsi = 999 -------------------------------Loc_var keluaran fungsi = 23 Global_var keluaran fungsi = 999 4. Dengan menggunakan parameter posisi $1 dalam fungsi, buatlah sebuah program bash script untuk menampilkan pesan pada variabel dengan urutan proses sebagai berikut: - tampilkan pesan pada variabel pertama yang berisi pesan Hello - tampilkan pesan selain Hello yang berada pada variabel kedua yaitu pesan
Goodbye
- tampilkan garis "-----------------------------"
85
- tampilkan pesan pada variabel pertama yang berisi pesan Hello - tampilkan pesan selain Hello yang berada pada variabel kedua yaitu pesan
Hello, again!
5. Dengan menggunakan parameter posisi $1 dalam fungsi, buatlah sebuah program bash script untuk menampilkan pesan pada variabel dengan urutan proses sebagai berikut: - tampilkan pesan "Beberapa teks" dari variabel pertama dan ditambah pesan "sebelum pemanggilan fungsi" sehingga hasilnya adalah Beberapa
teks sebelum pemanggilan fungsi
- tampilkan pesan hasil pemangilan fungsi "$pertama pertama = Beberapa
teks"
- tampilkan pesan "Beberapa teks" dari variabel pertama dan ditambah pesan "sesudah pemanggilan fungsi" sehingga hasilnya adalah Beberapa
teks sesudah pemanggilan fungsi
86