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) ... end beserta 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:

matlab
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;
end

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (function luas = hitungLuas(panjang, lebar)): deklarasi fungsi bernama hitungLuas dengan satu output (luas) dan dua input (panjang, lebar); beberapa output ditulis [a, b], beberapa input dipisah koma.
  2. Baris 2-5 (blok % ...): help text — blok komentar pertama tepat di bawah baris function menjadi dokumentasi resmi fungsi (kita pakai di bawah).
  3. Baris 7 (luas = panjang * lebar;): isi fungsi; variabel luas bernilai hasil perkalian, lalu dikembalikan ke pemanggil saat fungsi selesai.
  4. Baris 8 (end): penutup blok fungsi.

Tabel berikut merangkum peran tiap bagian baris deklarasi:

BagianContohPeran
functionfunctionkata kunci wajib, huruf kecil
outputluas / [a, b]variabel yang dikembalikan; boleh kosong
nama fungsihitungLuasaturan 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:

matlab
luas = hitungLuas(6, 4)

Output yang Dihasilkan:

text
luas =

    24

Nilai 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:

matlab
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:

text
luas 6 x 4    = 24
luas 7.5 x 2  = 15.00
luas 3 x 3    = 9

Help 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')):

text
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 #

AspekSkripBerkas fungsi
Baris pertamaperintah/komentar apa punfunction ...
Cara berjalandieksekusi langsung dari atas ke bawahhanya saat dipanggil dengan input
Variabelmasuk base workspacehidup di function workspace sendiri
Input/outputtidak ada mekanisme khususdideklarasikan di baris function
Dipakai ulangmenyalin seluruh berkascukup 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.