Sepanjang Section Struktur Kontrol kita bekerja dengan skrip: daftar perintah yang berjalan dari atas ke bawah dan menaruh semua variabelnya di workspace yang sama. Begitu satu potongan perhitungan dipakai di banyak tempat — diskon, konversi satuan, ringkasan data — menyalin-tempel kode menjadi sumber galat yang sulit dilacak: rumus diperbaiki di satu berkas, berkas lain masih memakai rumus lama. Function menyelesaikan masalah itu: satu blok kode bernama yang menerima input, mengembalikan output, dan menyembunyikan detail perhitungannya dari pemanggil. Section ini membongkar fungsi MATLAB sampai tuntas, dimulai dari berkas fungsi pertama kita. Cakupan chapter ini:
- struktur
function [out] = nama(in) ... endbeserta peran tiap bagian - aturan nama berkas yang wajib sama dengan nama fungsi
- help text — dokumentasi yang terpasang di dalam fungsi
- perbedaan berkas fungsi vs skrip dan cara memanggilnya
Anatomi Berkas Fungsi #
Aturannya: sebuah berkas fungsi diawali function definition statement — baris function yang mendeklarasikan output, nama fungsi, dan input. Mekanisme di balik layar: ketika MATLAB membaca baris function di awal berkas, MATLAB memperlakukan berkas itu sebagai berkas fungsi, bukan skrip. Saat fungsi dipanggil, MATLAB menyalin nilai input ke function workspace milik fungsi (kita bedah di Chapter Scope dan Workspace), menjalankan isi fungsi, lalu mengembalikan nilai output ke pemanggil. Berikut hitungLuas.m utuh:
function luas = hitungLuas(panjang, lebar)
% hitungLuas Menghitung luas persegi panjang.
% luas = hitungLuas(panjang, lebar) mengalikan panjang dengan lebar
% lalu mengembalikan hasilnya sebagai luas persegi panjang.
% Contoh: hitungLuas(6, 4) menghasilkan 24.
luas = panjang * lebar;
endMari kita bedah baris-baris kode di atas:
- Baris 1 (
function luas = hitungLuas(panjang, lebar)): deklarasi fungsi bernamahitungLuasdengan satu output (luas) dan dua input (panjang,lebar); beberapa output ditulis[a, b], beberapa input dipisah koma. - Baris 2-5 (blok
% ...): help text — blok komentar pertama tepat di bawah barisfunctionmenjadi dokumentasi resmi fungsi (kita pakai di bawah). - Baris 7 (
luas = panjang * lebar;): isi fungsi; variabelluasbernilai hasil perkalian, lalu dikembalikan ke pemanggil saat fungsi selesai. - Baris 8 (
end): penutup blok fungsi.
Tabel berikut merangkum peran tiap bagian baris deklarasi:
| Bagian | Contoh | Peran |
|---|---|---|
function | function | kata kunci wajib, huruf kecil |
| output | luas / [a, b] | variabel yang dikembalikan; boleh kosong |
| nama fungsi | hitungLuas | aturan sama seperti nama variabel |
| input | (panjang, lebar) | nilai yang diterima; boleh kosong () |
Nama Berkas Wajib Sama dengan Nama Fungsi #
Aturan penyimpanan: fungsi hitungLuas harus disimpan di berkas bernama hitungLuas.m, di current folder atau di folder pada search path. Mekanisme di baliknya mengikuti urutan pencarian nama yang sudah kita kenal dari Chapter Current Folder dan Path: ketika pemanggil menulis hitungLuas(6, 4), MATLAB mencari berkas hitungLuas.m — MATLAB mengaitkan program dengan nama berkas, bukan nama fungsi di dalam berkas. Nama fungsi yang berbeda dari nama berkasnya membuat pemanggilan dengan nama fungsi gagal ditemukan.
Memanggil Fungsi dari Command Window #
Berbeda dari skrip, berkas fungsi tidak bisa dijalankan langsung baris demi baris — fungsi hanya berjalan ketika dipanggil dengan input yang cukup. Setelah hitungLuas.m tersimpan di current folder, panggil fungsi itu dari Command Window:
luas = hitungLuas(6, 4)Output yang Dihasilkan:
luas =
24Nilai 24 mengalir dari variabel luas di dalam fungsi menuju variabel luas di workspace pemanggil — dua variabel berbeda yang kebetulan senama. Untuk menguji fungsi dari sebuah skrip, kita buat berkas driver (pemanggil uji) — uji_hitungLuas.m pada bagian bawah halaman memanggil hitungLuas dengan tiga kombinasi input:
luas1 = hitungLuas(6, 4);
fprintf('luas 6 x 4 = %d\n', luas1);
luas2 = hitungLuas(7.5, 2);
fprintf('luas 7.5 x 2 = %.2f\n', luas2);Output yang Dihasilkan:
luas 6 x 4 = 24
luas 7.5 x 2 = 15.00
luas 3 x 3 = 9Help Text: Dokumentasi yang Terpasang di Fungsi #
Blok komentar % yang ditulis tepat setelah baris function dibaca MATLAB sebagai help text. Baris pertamanya disebut H1 line — satu baris ringkasan yang ditampilkan fungsi help dan pencarian lookfor. Perintah help hitungLuas menampilkan blok tersebut:
Output yang Dihasilkan (help('hitungLuas')):
hitungLuas Menghitung luas persegi panjang.
luas = hitungLuas(panjang, lebar) mengalikan panjang dengan lebar
lalu mengembalikan hasilnya sebagai luas persegi panjang.
Contoh: hitungLuas(6, 4) menghasilkan 24.end: Opsional tapi Wajib Konsisten #
Pada berkas yang hanya berisi satu fungsi, end penutup boleh dihapus — batas fungsi adalah akhir berkas. Namun end menjadi wajib dalam kasus tertentu: bila berkas memuat nested function, bila fungsi lokal dalam skrip memakai end, dan bila satu fungsi lokal di berkas fungsi memakai end maka semua fungsi di berkas itu harus memakai end juga. Karena bab-bab berikutnya (local functions, nested functions) selalu berada dalam kasus wajib itu, kebiasaan terbaik kita: selalu tulis end — dokumentasi MATLAB sendiri menyarankan end demi keterbacaan kode.
Berkas Fungsi vs Skrip #
| Aspek | Skrip | Berkas fungsi |
|---|---|---|
| Baris pertama | perintah/komentar apa pun | function ... |
| Cara berjalan | dieksekusi langsung dari atas ke bawah | hanya saat dipanggil dengan input |
| Variabel | masuk base workspace | hidup di function workspace sendiri |
| Input/output | tidak ada mekanisme khusus | dideklarasikan di baris function |
| Dipakai ulang | menyalin seluruh berkas | cukup panggil namanya |
Berkas hitungLuas.m dan uji_hitungLuas.m pada bagian bawah halaman menampilkan pasangan fungsi + skrip uji yang bisa dijalankan utuh.
Ringkasan #
Berkas fungsi dibuka dengan function [out] = nama(in), ditutup end, dan wajib bernama sama dengan fungsi pertamanya karena MATLAB mengaitkan program dengan nama berkas. Blok komentar tepat di bawah baris function menjadi help text yang tampil lewat help namaFungsi. Fungsi tidak dijalankan langsung seperti skrip — fungsi dipanggil dari Command Window atau dari skrip uji dengan input yang memenuhi deklarasinya. Kebiasaan menulis end secara konsisten menyiapkan kita untuk local functions dan nested functions di chapter berikutnya.