Hasil perhitungan yang akurat tetap percuma bila ditampilkan berantakan: angka desimal 16 digit di tabel laporan, atau label yang tidak tersusun rapi. MATLAB menyediakan dua lapis pengendalian tampilan: perintah format yang mengatur gaya tampilan Command Window secara global, dan keluarga disp/fprintf/sprintf yang memformat output baris demi baris. Chapter ini menuntaskan keduanya — dari memilih jumlah digit hingga menyusun laporan yang rapi.

Perintah format di Command Window #

Secara default, Command Window menampilkan bilangan double dengan format short — sekitar 5 digit signifikan. Perintah format mengubah gaya tampilan ini untuk seluruh sesi:

matlab
>> format short
>> pi

ans =

    3.1416

Tabel berikut merangkum varian yang paling sering dipakai, dengan tampilan nilai pi sebagai pembanding:

PerintahTampilan piKegunaan
format short3.1416default, 5 digit signifikan
format long3.14159265358979315 digit, pemeriksaan presisi
format shortE3.1416e+00notasi ilmiah ringkas
format longE3.141592653589793e+00notasi ilmiah lengkap
format bank3.14dua desimal, gaya keuangan
format rat355/113pendekatan pecahan rasional

Dua varian favorit praktisi: format bank untuk laporan uang (selalu dua digit desimal) dan format rat yang memperlihatkan pi sebagai 355/113 — pendekatan pecahan yang sudah dikenal sejak Archimedes. Varian shortE/longE paling berguna saat bekerja dengan nilai yang sangat besar atau sangat kecil.

disp dan fprintf: Dua Cara Menampilkan #

Fungsi disp() menampilkan satu nilai apa adanya — tanpa format, tanpa argumen tambahan. Untuk teks, disp mencetak isinya bersih tanpa tanda kutip; untuk matriks, disp menampilkan barisnya secara rapi:

matlab
disp('Halo, MATLAB!');
disp([1 2; 3 4]);

Output yang Dihasilkan:

text
Halo, MATLAB!
     1     2
     3     4

disp cepat ditulis, tetapi kendalinya nol: kita tidak bisa mencampur teks dengan angka atau mengatur jumlah desimal. Untuk itu ada fprintf(), pewarisan gaya bahasa C yang menerima format string berisi penanda tempat (format specifier) diikuti nilai-nilai yang mengisinya:

SpecifierMenampilkanContohHasil
%dnilai bulatfprintf('%d\n', 42)42
%fdesimal tetap (default 6)fprintf('%f\n', pi)3.141593
%.2fdesimal 2 digitfprintf('%.2f\n', pi)3.14
%enotasi eksponenfprintf('%e\n', pi)3.141593e+00
%gpaling ringkasfprintf('%g\n', pi)3.14159
%steksfprintf('%s\n', 'MATLAB')MATLAB
%%tanda persen literalfprintf('100%%\n')100%
\npindah baris (escape)fprintf('A\nB\n')dua baris

Mari kita lihat seluruh specifier bekerja dalam satu script:

matlab
disp('Laporan Penjualan Toko Budi');

fprintf('%%d (integer)      : %d\n', 42);
fprintf('%%f (default)      : %f\n', pi);
fprintf('%%.2f (2 desimal)  : %.2f\n', pi);
fprintf('%%e (eksponen)     : %e\n', pi);
fprintf('%%g (ringkas)      : %g\n', pi);
fprintf('%%s (teks)         : %s\n', 'MATLAB');
fprintf('Persen literal     : 100%%\n');

Output yang Dihasilkan:

text
Laporan Penjualan Toko Budi
%d (integer)      : 42
%f (default)      : 3.141593
%.2f (2 desimal)  : 3.14
%e (eksponen)     : 3.141593e+00
%g (ringkas)      : 3.14159
%s (teks)         : MATLAB
Persen literal     : 100%

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (disp('...')): disp mencetak teks apa adanya tanpa perlu \n — pergantian baris otomatis.
  2. Baris 3 (%d): spesifikasi %d menampilkan nilai bulat; tanda %%d di awal teks mencetak %d literal.
  3. Baris 4-5 (%f, %.2f): %f memakai enam digit desimal secara default; %.2f memaksa dua digit — format paling sering dipakai untuk laporan.
  4. Baris 6-7 (%e, %g): %e selalu memakai notasi ilmiah; %g memilih representasi terpendek antara desimal dan eksponen.
  5. Baris 9 (100%%): dua tanda persen mencetak satu tanda persen, karena % tunggal selalu dibaca sebagai awal specifier.

Lebar Field, Perataan, dan sprintf #

Format specifier menerima field width dan perataan di antara % dan tipenya: %8.2f berarti lebar minimum 8 karakter dengan 2 desimal (rata kanan), sedangkan %-8s berarti lebar 8 rata kiri. Angka di kiri titik mengatur lebar total, angka di kanan titik mengatur jumlah desimal:

matlab
fprintf('[%8.2f] rata kanan, lebar 8\n', pi);
fprintf('[%-8s] rata kiri, lebar 8\n', 'kiri');

Output yang Dihasilkan:

text
[    3.14] rata kanan, lebar 8
[kiri    ] rata kiri, lebar 8

Lebar field adalah kunci menyusun tabel yang rapi: seluruh kolom sejajar karena setiap nilai menempati jumlah karakter yang sama.

Saudara dari fprintf adalah sprintf(): sintaksnya identik, tetapi hasilnya dikembalikan sebagai teks alih-alih dicetak. Gunakan sprintf ketika teks akan disimpan, digabung, atau dipakai ulang:

matlab
baris = sprintf('Total: Rp%d', 4500);
fprintf('%s (panjang %d)\n', baris, length(baris));

Output yang Dihasilkan:

text
Total: Rp4500 (panjang 13)

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (sprintf): teks 'Total: Rp4500' dibentuk dan disimpan ke variabel baris bertipe char — tidak ada yang tercetak pada baris ini.
  2. Baris 2 (fprintf): teks tersebut dicetak bersama panjangnya; hasilnya identik dengan yang sprintf bentuk.

fprintf pada Array: Urutan Kolom-demi-Kolom #

Satu kejutan menanti kita ketika argumen fprintf berupa array: MATLAB mengisi specifier dari elemen array kolom demi kolom (column-major), bukan baris demi baris. Matriks [1 2; 3 4] dikonsumsi urutan 1, 3, 2, 4. Solusinya sederhana — transposkan matriksnya agar konsumsi kolom demi kolom berjalan sesuai baris yang kita maksud:

matlab
matriks = [1 2; 3 4];
fprintf('Elemen matriks baris demi baris:\n');
fprintf('%d %d\n', matriks');   % transpose agar tercetak per baris

Output yang Dihasilkan:

text
Elemen matriks baris demi baris:
1 2
3 4

Mari kita bedah baris-baris kode di atas:

  1. Baris 3 (matriks'): transpose menukar baris dan kolom, sehingga urutan konsumsi kolon-major menjadi 1, 2, 3, 4 — pasangan (1,2) lalu (3,4).
  2. Specifier berulang: format '%d %d\n' diulang otomatis sampai seluruh elemen terpakai; tanpa transpose, hasilnya akan tercetak “1 3” dan “2 4”.

Berkas contoh.m pada bagian bawah halaman menguji seluruh specifier, lebar field, sprintf, dan pola transpose dalam satu script dengan output yang deterministik.

Ringkasan #

Perintah format mengatur gaya tampilan Command Window tanpa menyentuh nilai tersimpan; disp menampilkan nilai mentah; fprintf memberi kendali penuh lewat specifier %d, %f, %.2f, %e, %g, %s, escape \n, dan lebar field untuk perataan. sprintf menyimpan hasil format sebagai teks, dan argumen array fprintf dikonsumsi kolom demi kolom — transposkan bila perlu. Dengan perangkat ini, laporan dan hasil eksekusi program kita tampil seprofesional isinya.