Kontrol Flow pada MATLAB

Untuk mengatur jalannya eksekusi statement dalam script/M-File, di perlukan adanya kontrol program. Kontrol program sangat berguna karena memungkinkan komputasi-komputasi yang lalu mempengaruhi komputasi yang akan datang. Jika kita pernah menggunakan fasilitas kontrol ini, maka bagian ini bukan hal yang baru bagi Anda. Namun jika kontrol program ini dianggap sebagai sesuatu yang baru, maka materi ini mungkin tampak rumit. Jika hal itu terjadi maka pelajarilah secara pelan-pelan.
MATLAB menyediakan empat struktur kontrol program, yaitu loop for, loop while, kontruksi switch-case, dan kontruksi if-else-end. Konstruksi-kontruksi tersebut seringkali melibatkan banyak perintah MATLAB, yang oleh karenanya, kontruksi ini lebih banyak terdapat dalam M-File.


A. Loop for
Loop for memungkinkan sekelompok perintah diulang sebanyak suatu jumlah tetap. Bentuk umum loop adalah

For x=*array/matriks
statement1;
statement2;
...
end

keterangan: *aturan pembuatan array seperti yang telah dibahas pada bagian sebelumnya.
Perintah antara statement for dan statement end dikerjakan sekali untuk setiap kolom dalam array. Untuk setiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam iterasi ke-n dalam loop.
Contoh:
for i=1:10
X(i)=sin(i*pi/10);
end
x
x=
0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
0.5878 0.3090 0.0000

Statement di atas dapat dijelaskan sebagai berikut:
Untuk n sama dengan satu sampai sepuluh, kerjakan seluruh statement sampai statement end berikut. Pertama kali dieksekusi loop for untuk n=1, lalu n=2, dan seterusnya sampai n=10. setelah n=10, loop for berhenti dan setiap perintah yang ada setelah stateman end akan dikerjakan, yang dalam contoh di atas menampilkan elemen-elemen x.
Loop for tidak dapat dihentikan dengan mengubah nilai n di tengah-tengah loop.
Contoh:
for i=1:10
x(i)=sin(i*pi/10);
n=10;
end
x
x=
0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
0.5878 0.3090 0.0000

Statement 1:10 adalah statement standar pembuatan array. Setiap array MATLAB yang valid dapat digunakan untuk loop for.
Contoh
data=[1 2 3 4;5 6 7 8];
for n=data
x=n(1)-n(2)
end
x =
-4
x =
-4
x =
-4
x =
-4



Biasanya loop for dapat dibuat sehingga berada dalam loop for yang lain sebanyak yang diinginkan.
Contoh
for i=1:10
for j=1:5
U(i,j)=i^2+j^2;
end
end
U
U =
2 5 10 17 26
5 5 13 20 29
10 13 18 25 34
17 20 25 32 41
26 29 34 41 50
37 40 45 52 61
50 53 58 65 74
65 68 73 80 89
82 85 90 97 106
101 104 109 116 125

Dengan cara di atas, kita membuat suatu matriks dimulai dengan membuat elemen matriks baris 1 elemen kolom 1 sampai 5, selanjutnya dengan membuat elemen matriks baris 2 kolom 1 sampai 5 dan seterusnya sampai baris ke 10.

B. Loop While
Loop for mengerjakan sekelompok perintah pengulangan yang diulang sebanyak suatu jumlah yang kita tentukan, tetapi loop while mengerjakan sekelompok perintah yang diulang secara tidak terbatas.
Sintaks dasar dalam MATLAB dari Loop While adalah:

while ekspresi/variabel
Statement1
Statement2
...
end


Biasanya evaluasi ekspresi menghasilkan nilai skalar, tetapi yang berupa array juga dapat diterima. Jika hasilnya array, semua elemen array harus bernilai benar.
Perhatikan contoh berikut.
num=0;eps=1;
while (1+eps)>1
eps=eps/2;
num=num+1;
end
contoh di atas memperagakan suatu cara untuk menghitung EPS (suatu nilai khusus MATLAB), yaitu bilangan terkecil yang dapat ditambahkan pada 1 sedemikian hingga hasilnya lebih besar dari 1 dengan menggunakan presisi hingga. Pada contoh ini EPS dimuai dari 1, selama (1 +eps)>1 adalah besar (tidak nol), perintah yang tedapat pada loop while akan dikerjakan.
Contoh sederhana lainnya adalah loop while yang akan menampilkan bilangan dari 0 sampai 4 di layar sebagai berikut:

function contohwhileloop();
%program sederhana ini menampilkan bilangan
%dari 0 sampai dengan 4 di layar
i=0;
while i<5
disp(i);
i=i+1;
end

Contoh berikutnya akan mengecek berapkah nilai bilangan buat n pertama yang memiliki nilai faktorial terdiri atas 100 digit (n pertama dengan n!> ) dan program di MATLAB dapat dituliskan sebagai berikut:

function checkfactorial();
n=1;
while prod(1:n)<1.e100
n=n+1
end
disp(n)

Keterangan: command prod(1:n) di atas akan menghitung n!.

C. Kontruksi Switch-Else

Bila sederetan perintah harus dikerjakan dengan sederhana pada penggunaan berulang-ulang suatu tes dengan argumen yang sama, kontriksi switch–else akan lebih tepat digunakan. Kontruksi ini mempunyai bentuk:
swich ekspresi
case test ekspresi 1
deret perintah 1 (statement,...,statement)
case {test ekspresi2,test ekspresi3,test ekspresi 4}
deret perintah 2(statement,...,statement)
...
otherwisw
deret perintah 3(statement,...,statement)
end
ekspresi harus berupa skalar atau karakter string. Jika akspresinya dalah skalar, ekspresi= =test_ekspresi dites oleh statement case. Jika ekspresi berupa karakter string maka strcm(ekspresi, test_ekspresi) yang dites.
Pada contoh diatas ekspresi dibandingkan dengan tes ekspresi 1 pada statement case pertama, jika kedunya sama maka deret perintah akan dikerjakan dan deret statement berikutnya yang yang berda sebelum statement end diabaikan. Jika pembanding pertama tidak memberikan nilai benar maka akan diulangkan deret perintah pada statement case yang kedua. Jika semua pembanding dengan case gagal akan dikerjakan deret perintah 3 yang mengikuti statement otherwise. Contoh sederhana dari konstruksi switch-case adalah:

bilangan=5;
x=rem(5,20);
switch x
case1
disp([‘bilangan’,num2str(bilangan),’adalah
bilangan ganjil’])
case 0
disp([‘bilangan’,num2str(bilangan),’adalah
bilangan genap’])
otherwise
disp(‘bilangan ini tidak mungkin ada’)
end

bilangan 5 adalah bilangan ganjil

contoh selanjutnya adalah untuk variabel string

Function tesmethod(METHOD);
Switch lower (METOD)
Case{‘linear’,’biliner’},disp(‘Method is linear’)
Case ‘cubic’,disp(‘Method is cibic’)
Case ‘nearest’, (‘Method is nearest’)
Otherwise, disp (‘Unknown method’)
End

Cara memenggilnya adalah:
TestMethod(‘linear’)
Method is linear


D. Kontruksi If-Else-End

Sering kali sederet perintah harus dikerjakan dengan didasarkan pada hasil tes rasional. Dalam bahasa pemograman, logika ini dikerjakan dengan variasi kontruksi if-else-end. Bentuk paling sederhana kontruksi if-else-end adalah:

if ekspresi
perintah
end

perintah di antara statement if dan end dikerjakan jika semua elemen yang ada dalam ekpresi adalah benar, contoh:

>> mangga=15;
>> harga=mangga*75
Harga=
1125
>> if mangga>7
Harga=(1-20/100)*harga;
End
>> harga
Harga =

900

Jika pada kasus dua pilihan, maka konstruksi if-else-end adalah:
if ekspresi
perintah dikerjakan jika benar
else
perintah dikerjakan jika salah
end

Pada kasus di atas sekelompok perintah yang pertama dikerjakan jika ekspresi bernilai benar, kelompok yang kedua dikerjakan jika ekpresi bernilai salah. Jika terdapat 3 atau lebih pilihan, kontruksi if-else-end mengambil bentuk:

if ekspresi 1
perintah dikerjakan jika ekspresi 1 benar
elseif ekspresi 2
perintah dikerjakan jika ekspresi 2 benar
elseif ekspresi 3
perintah dikerjakan jika ekspresi 3 benar
...
else
perintah dikerjakan jika tidak ada ekspresi yang benar
end

Sekarang setelah kita tahu bagaimana membuat keputusan dengan struktur if-else-end, maka terbukalah jalan untuk menunjukkan cara melompati atau keluar dari loop for dan loop while, sebagai contoh:

eps=1;
for num=1:1000
eps=eps/2;
if (1+eps) <=1
eps=eps*2
break
end
end

eps =
2.2204e-016

num
num =
53

Pada contoh di atas ditunjukkan cara lain untuk mendekati EPS. Dalam cara ini, loop for diikutsertakan untuk berulang sebanyak seribu kali. Kontruksi if tersebut dimaksudkan untuk menguji jika nilai EPS kecil maka break akan menghentikan loop. Lalu nilai EPS dikalikan 1.

0 komentar:

Poskan Komentar

© 2009 - LABKOMMAT 01 FMIPA UNM | Admin: Ilham Syata | Pagenav: Abu Farhan Top