BAB 6 KONTROL ALIRAN

advertisement
BAB 6
KONTROL ALIRAN
Pendahuluan
Ada delapan pernyataan kontrol kendali yang disediakan di dalam
Matlab. Kedelapan pernyataan tersebut antara lain
1. if, termasuk di dalamnya pernyataan else dan elseif. Pernyataan ini
menjalankan kelompok pernyataan berdasarkan pada syarat logika.
2. switch, termasuk di dalamnya adalah case dan otherwise. Statement ini
mengeksekusi kelompok pernyataan berbeda bergantung pada harga
syarat kondisi.
3. while, menjalankan group pernyataan dengan jumlah iterasi tak terbatas
berdasarkan pada syarat logika.
4. for menjalankan group pernyataan dengan jumlah iterasi telah ditentukan.
5. continue melewatkan kendali ke iterasi berikutnya untuk loop for atau
while.
6. break berfungsi menghentikan eksekusi looping for atau while.
7. try...catch mengubah kendali aliran apabila ditemukan kesalahan selama
proses eksekusi.
8. return menyebabkan eksekusi kembali ke fungsi invoking. Semua aliran
membangun pemnggunaan end untuk menunjukkan akhir dari blok
kontrol aliran.
Pernyataan Bersyarat if, else, dan elseif
1
Pernyataan
if
digunakan
untuk
menyeleksi
suatu
kondisi
yang
memungkinkan dua atau lebih pilihan. Bila proses yang diseleksi terpenuhi atau
bernilai benar, maka pernyataan yang ada di dalam blok if akan diproses dan
dikerjakan. Sedangkan jika syarat tidak dipenuhi maka program akan diakhiri.
Dalam bentuk diagram alir percabangan if dapat digambarkan seperti pada
gambar 6.1
if (kondisi)
tidak
ya
Perintah
Gambar 6.1 Diagram alir percabangan if
Bentuk umum struktur kondisi if adalah :
if (syarat)
pernyataan
end
Keterangan
Apabila pernyataan logika berharga benar (true), maka seluruh
pernyataan atau perintah yang berada diantara if dan end akan dijalankan.
2
Sebaliknya, jika pernyataan logika berharga salah (false), maka seluruh
perintah/pernyataan yang berada diantara if dan end tidak akan dijalankan
karena Matlab akan langsung menuju end.
Syarat biasanya merupakan pernyataan logika, yakni pernyataan yang
mengandung operator relational yang berharga benar atau salah. Dibawah ini
disajikan operator relasi.
Operator relasi Arti
<
Kurang dari
<=
Kurang dari atau sama dengan
>
Lebih dari
>=
Lebih dari atau sama dengan
==
Sama dengan
~=
Tidak sama dengan
Beberapa contoh untuk pernyataan logika yang menggunakan operator
relasi beserta artinya.
b^2-4*a*c<0
b2 −4 a c0
b^2>4*a*c
b 4 a c
b^2-4*a*c==0
b −4 a c =0
b~=4
b≠4
2
2
Contoh 6.1
a=2;
if mod(a,2) == 0
disp('Pernyataan benar..!!')
end
Disamping operator relasi akan dibutuhkan pula operator logika yang
3
macamnya antara lain
Operator
Lambang
Arti
And
&
Dan
Or
|
Atau
Not
~
Bukan
logika
Xor
Eksklusiv Or
Di bawah ini disajikan tabel harga dari pernyataan dengan operator logika
a
b
a&b
a|b
~a
~b
a xor b
TRUE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
Contoh
Akan diberikan beberapa contoh berkaitan dengan penggunaan operator
logika seperti di bawah ini
Pernyataan Bersyarat if-else
Dalam pernyataan bersyarat if-else setidaknya terdapat dua pernyataan.
Jika syarat yang diperiksa bernilai benar atau terpenuhi maka pernyataan
pertamalah yang akan dijalankan, tetapi apabila syarat yang diperiksa tidak
memenuhi atay bernilai salah maka pernyataan yang kedualah yang akan
dijalankan.
4
Bentuk umumnya adalah sebagai berikut :
if(syarat)
pernyataan A
else
pernyataan B
end
if (kondisi)
tidak
ya
Perintah
Perintah
Gambar 4.2 Diagram alir percabangan if…else
Contoh Program 6.2
x=input('Masukkan harga x:');
if (x>3)
disp('Pernyataan benar.');
disp('Pernyataan benar sekali..');
else
disp('Pernyataan salah.');
disp('Pernyataan salah sekali..');
end
5
Pernyataan Bersyarat elseif
Penggunaan pernyataan bersyarat else if akan memberikan solusi kepada
kita apabila terdapat lebih dari satu syarat yang ada untuk menjalankan masingmasing pernyataan apabila syarat yang diberikan terpenuhi.
Pernyaan else if akan dieksekusi apabila syarat yang dberikan pada if
sebelumnya (atau elseif sebelumnya) berharga salah (0). Pernyaaan ini
selanjutnya akan mengeksekusi perintah/pernyataan di dalamnya apabila syarat
logikanya berharga benar (1). Bentuk umum dari pernyataan bersyarat elseif
maka adalah
Ya
If
Perintah …
Perintah ....
Tidak
Ya
elseif
Perintah …
Perintah ....
Tidak
Ya
elseif
Perintah …
Perintah ....
Tidak
else
Perintah …
Perintah ....
Gambar 6.3 Diagram alir pernyataan elseif
Contoh Program 6.3
6
n=input('Masukkan harga n:')
if n < 0
% jika n negatif, ada pesan salah.
disp('Masukan harus bilangan positif');
elseif rem(n,2) == 0 % jika n posisif dan bulat,
% kemudian bagi dengan 2
A = n/2;
else
A = (n+1)/2;
% jika n positif dan ganjil
% tambahkan 1,kemudian bagi dengan 2.
end
Pernyataan bersyarat if bersarang
Pernyataan ini sangat penting untuk masalah-masalah yang memiliki
lebih dari dua cabang. Mengapa pernyataan ini disebut pernyataan bersarang,
karena di dalam pernyataan if ada pernyataan if lagi. If yang kedua ini dapat
berada di dalam if sendiri atau berada di dalam else.
if (syarat)
perintah/pernyataan
if (syarat)
perintah/pernyataan
else
perintah/pernyataan
end
else
perintah/pernyataan
if (syarat)
perintah/pernyataan
else
perintah/pernyataan
end
end
Contoh Program 6.4
a=input('Masukkan a:');
7
if mod(a,2)==0
fprintf('%i adalah bilangan genap\n',a);
if (a>5)
fprintf('%i lebih besar 5',a);
else
fprintf('%i kurang dari 5',a);
end
else
fprintf('%i adalah bilangan ganjil\n',a);
if (a<5)
fprintf('%i kurang dari 5',a);
else
fprintf('%i lebih besar dari 5',a);
end
end
if (kondisi)
tidak
ya
Perintah
Perintah
if (kondisi)
if (kondisi)
Perintah
Perintah
Perintah
Perintah
Perintah
Perintah
Gambar 6.4 Diagram Alir Pernyataan If Bersarang
8
Operator Logika
Pernyataan logika yang lebih rumit dapat disusun dari tiga operator
logika yaitu and (&), or (|) dan not (~). Sebagai contoh dalam penyelesaian
persamaan kuadrat berbentuk
ax 2bxc=0
akan memiliki akar yang berharga -b/(2a) apabila diskriminan b 2−4 a c=0 dan
a≠0 . Jika dinyatakan dalam Matlab
if (b^2-4*a*c)==0 & (a~=0)
x=-b/(2*a);
end
Gambar 6.5 Grafik fungsi kuadrat dengan dua akar yang sama
switch-case
Pernyataan switch akan mengeksekusi sekelompok perintah/ pernyataan
berdasarkan pada harga variabel atau ekspresi. Pernyataan switch bekerja
9
dengan cara membandingkan masukan (input) ekspresi dengan harga pada tiaptiap peryataan case. Untuk ekspresi numerik, pernyataan case bernilai benar
apabila (nilai=ekspresi). Untuk ekspresi string, pernyataan case bernilai benar
apabila strcmp(nilai,ekspresi).
Bentuk dasar dari switch adalah
switch ekspresi (skalar atau string)
case nilai1
pernyataan % dieksekusi jika ekspresi adalah nilai1
case nilai2
pernyataan % dieksekusi jika ekspresi adalah nilai2
..... .
......
otherwise
pernyataan % dieksekusi jika ekspresi tidak cocok
% dengan case manapun
end
Dibawah ini diberikan sebuah contoh penggunaan pernyataan switchcase. Pernyataan switch akan mengecek variabel masukan untuk nilai tertentu.
Apabila variabel masukan adalah 1, 2 atau 3 , maka pernyataan case akan
menampilkan luas masing-masing untuk kubus, persegi panjang dan lingkaran.
Sedangkan, apabila variabel masukan bukan 1,2 atau 3, maka switch akan
langsung menuju ke otherwise.
% Contoh Program 6.5
disp('Pilih salah satu program..\n');
disp('1: menghitung luas bujur sangkar: \n');
disp('2: menghitung luas persegi panjang: \n');
disp('3: menghitung luas lingkaran: ');
no=input('\n Anda ingin menghitung luas 1,2 atau 3 \n');
10
switch no
case 1
a=input('masukkan panjang sisi bujur sangkar:');
luas=a^2;
fprintf('Luas bujur sangkar adalah %f \n',luas);
case 2
a=input('masukkan panjang persegi panjang: ');
b=input('masukkan lebar persegi panjang: ');
luas=a*b;
fprintf('Luas persegi panjang adalah %f',luas);
case 3
a=input('masukkan jari-jari lingkaran :');
luas=pi*r^2;
fprintf('Luas lingkaran adalah %f ',luas);
otherwise
fprintf('Ulangi pilihan yang ada...!!')
end
while
Pernyataan while akan menjalankan pernyataan atau sekelompok
pernyataan secara berulang-ulang selama kontrol perulangan berharga benar (1).
Secara umum, bentuk dari perulangan while adalah
while (syarat)
pernyataan
end
Contoh Program 6.7
11
Program di bawah ini akan mencari n bilangan pertama perjumlahan
bilangan interger yang berharga <100. Algoritma untuk membuat program ini
adalah

inisialiasi untuk jum

inisialisai untuk n

ulang hingga syarat sum(1:n)< jum terpenuhi

cetak n

gantikan n dengan n+1

akhiri perulangan
%program mencetak bilangan
jum=100;
n = 1;
while sum(1:n) < jum
disp(n)
n = n + 1;
end
Jika dijalankan hasilnya adalah
1
2
3
4
5
Contoh Program 6.8
Sekarang kita akan mencetak pola-pola bilangan dengan yang hasilnya
seperti gambar di bawah ini
1
12
1
2
1
2
3
1
2
3
4
1
2
3
4
5
1
2
3
4
5
6
Penyelesaian
Marilah kita membuat algortima untuk mencetak pola bilangan tersebut

inisialiasasi I

perulangan pertama hingga i<=6

inisialisasi x

perulangan kedua hingga x<=i

cetak x

gantikan x dengan x+1

akhiri perulangan kedua

lompat ke baris berikutnya

gantikan i dengan i+1

akhiri perulangan pertama
%Program mencetak pola bilangan
i=1;
while(i<=6)
x=1;
while(x<=i)
fprintf('%i',x);
x=x+1;
end
13
fprintf('\n');
i=i+1;
end
Perulangan for
Struktur perulangan for biasa digunakan untuk mengulang suatu proses
yang telah diketahui jumlah perulangannya. Dari segi penulisannya, struktur
perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan
sederhana. Secara default, penambahan indeks adalah 1, tetapi kita dapat
mengeset sendiri misalnya penambahannya 2, 3 atau berapapun bahkan dapat
pula negatif. Untuk penambahan positif, perulangan akan berakhir manakala
indeks sudah lebih dari yang tentukan. Sedangkan untuk penambahan negatif,
perulangan berakhir saat indeks lebih kecil dari yang ditentukan. Secara umum,
sintaks for adalah sebagai berikut
for indeks =i:k
pernyataan/perintah
end
atau
for indeks =i:m:k
pernyataan/perintah
end
Keterangan
✔
✔
i:k merupakan vektor dengan elemen-elemen i ,i1,i2,⋯, k
i :m: k adalah vektor dengan elemen-elemen
i ,im ,i2 m ,⋯ hingga
14
elemen terakhir tidak lebih dari k jika m>0 dan elemen terakhir tidak
kurang dari k jika m<0.
✔
Indeks merupakan bentu variabel.
Contoh program di bawah ini akan mencetak sebuah kalimat berbunyi
“Aku mahasiswa semester 5” sebanyak lima kali dengan mengunakan
pernyataan perulangan for.
%Contoh Program 6.9
%contoh perulangan for
N=5;
for i=1:N
fprintf('%i. Aku mahasiswa semester 5 \n',i);
end
LATIHAN
Buatlah sebuah program dengan koefisien berselang seling tanda seperti
di bawah ini
1 1 1 1
1−  −  −⋯
2 3 4 5
Penyelesaian
Untuk menyelesaikan bentuk jumlah yang bersaling seling ini kita perlu
sedikit pintar. Dalam contoh ini, kita akan menghitung hingga suku yang ke 999.
inilah programnya
N=999;
sum=1;
koef=-1;
15
for n=1:N
if (koef==-1)
koef=1;
end
sum=sum+1/n;
end
disp(sum)
Pernyataan continue
Pernyataan continue berfungsi melewatkan kendali ke iterasi berikutnya
di dalam perulangan for maupun while. Apabila pernyataan continue berada di
dalam loop bersarang, maka pernyataan continue akan melewatkan kendali ke
iterasi berikutnya. Sebagai contoh, perhatikan di bawah ini
N=20;
for i=1:N
if (i<5)
continue;
end
fprintf('%i. Aku mahasiswa semester 5 \n',i);
end
Apabila skrip program di atas dieksekusi, maka yang keluar adalah
tampilan tulisan “Aku mahasiswa semester 5” sebanyak 16 buah mulai dari
nomor 5 hingga nomor 20. Dengan kata lain, kalimat dari nomot 1 hingga 4 tidak
ditampilkan. Hal ini disebabkan perintah continue yang berada di dalam loop
for.
Pernyataan break
16
Pernyataan break berfungsi untuk menghentikan eksekusi loop for
maupun loop while. Apabila break ditemukan di dalam kalang for maupun
while, maka eksekusi akan dihentikan apabila syarat yang diberikan terpenuhi.
N=20;
for i=1:N
if (i>5)
break;
end
fprintf('%i. Aku mahasiswa semester 5 \n',i);
end
Contoh Program ...
Buatlah sebuah program Matlab untuk menghitung jumlahan berikut ini
1−1/31 /5−1/71/9−⋯
hingga suku terkahir kurang dari 10−4
Penyelesaian
Sebelum kita membuat progra Matlab, kita perlu membuat algoritmanya
terlebih dahulu

inisialisasi jum=0

inisialisai tol=10−4

inisialisasi sign=-1

inisialisasi suku=1

inisialisai N=100000000

ulang hingga N kali perulangan dimulai dari k=1
➔
sign=-sign
➔
suku=1/(2*k-1)
17
➔
➔
jika suku<tol
➔
hentikan pencarian
jum=jum+sign*suku

Cetak hasilnya

Selesai
Hasil programya adalah
jum=0;
tol=1e-4;
sign=-1;
N=100000000
suku=1;
for k=1:N
sign=-sign;
suku=1/(2*k-1);
if (suku<tol)
break;
end
jum=jum+sign*suku;
end
disp(jum)
18
TUGAS
1. Buatlah sebuah program komputer untuk memberikan kriteria nilai pada
seorang mahasiswa dengan ketentuan sebagai berikut. Jika nilai < 50 nilai
E, jika berada antara 50 dan 60 nilai D, jika nilai berada antara 60 dan 70
nilai C, jika nilai berada antara 70 dan 80 nilai B, jika nilai >80 nilai A.
2.
3.
4. Buatlah sebuah program komputer dengan switch-case untuk
menyatakan jumlah hari pada suatu bulan pada tahun tertentu. Ingat
bahwa dalam tahun masehi dikenal tahun kabisat, yaitu tahun yang
19
dapat dibagi habis dengan bilangan 4. Pada saat tahun kabisat ini,
jumlah hari pada bulan Februari ada 29 hari.
20
Download