• Tidak ada hasil yang ditemukan

BAB 6 KONTROL ALIRAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 6 KONTROL ALIRAN"

Copied!
20
0
0

Teks penuh

(1)

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.

(2)

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

Bentuk umum struktur kondisi if adalah :

Keterangan

Apabila pernyataan logika berharga benar (true), maka seluruh pernyataan atau perintah yang berada diantara if dan end akan dijalankan.

Gambar 6.1 Diagram alir percabangan if

if (kondisi) Perintah ya tidak if (syarat) pernyataan end

(3)

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 b24 a c b^2-4*a*c==0 b2−4 a c =0 b~=4 b≠4 Contoh 6.1 a=2; if mod(a,2) == 0 disp('Pernyataan benar..!!') end

(4)

macamnya antara lain Operator logika

Lambang Arti

And & Dan

Or | Atau

Not ~ Bukan

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.

(5)

Bentuk umumnya adalah sebagai berikut :

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 if(syarat) pernyataan A else pernyataan B end

Gambar 4.2 Diagram alir percabangan if…else

if (kondisi)

Perintah ya

tidak

(6)

Pernyataan Bersyarat elseif

Penggunaan pernyataan bersyarat else if akan memberikan solusi kepada kita apabila terdapat lebih dari satu syarat yang ada untuk menjalankan masing-masing 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

Contoh Program 6.3

Gambar 6.3 Diagram alir pernyataan elseif

If elseif elseif else Perintah … Perintah .... Perintah … Perintah .... Perintah … Perintah .... Perintah … Perintah .... Tidak Tidak Tidak Ya Ya Ya

(7)

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.

Contoh Program 6.4 a=input('Masukkan a:'); if (syarat) perintah/pernyataan if (syarat) perintah/pernyataan else perintah/pernyataan end else perintah/pernyataan if (syarat) perintah/pernyataan else perintah/pernyataan end end

(8)

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

Gambar 6.4 Diagram Alir Pernyataan If Bersarang

if (kondisi) Perintah ya tidak Perintah if (kondisi) if (kondisi)

Perintah Perintah Perintah Perintah

(9)

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

ax2

bxc=0

akan memiliki akar yang berharga -b/(2a) apabila diskriminan b2−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

switch-case

Pernyataan switch akan mengeksekusi sekelompok perintah/ pernyataan berdasarkan pada harga variabel atau ekspresi. Pernyataan switch bekerja

(10)

dengan cara membandingkan masukan (input) ekspresi dengan harga pada tiap-tiap 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

Dibawah ini diberikan sebuah contoh penggunaan pernyataan switch-case. 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'); 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

(11)

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

Contoh Program 6.7

while (syarat)

pernyataan

(12)

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

(13)

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

(14)

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

atau

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2m ,⋯ hingga

for indeks =i:k

pernyataan/perintah end

for indeks =i:m:k

pernyataan/perintah end

(15)

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 2 1 3− 1 4 1 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;

(16)

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.

(17)

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

(18)

➔ 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)

(19)

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

(20)

dapat dibagi habis dengan bilangan 4. Pada saat tahun kabisat ini, jumlah hari pada bulan Februari ada 29 hari.

Gambar

Gambar 6.1 Diagram alir percabangan if
Gambar 4.2 Diagram alir percabangan if…else
Gambar 6.3 Diagram alir pernyataan elseifIf  elseif elseifelse Perintah …Perintah ....Perintah …Perintah ....Perintah …Perintah ....Perintah …Perintah ....TidakTidakTidakYaYaYa
Gambar 6.4 Diagram Alir Pernyataan If Bersarang
+2

Referensi

Dokumen terkait

Jika hasil dari kondisi sama dengan nilai konstanta tertentu, maka pernyataan pada konstanta tersebut akan dijalankan sampai ditemukan pernyataan break9. Jika

Jika hasil dari kondisi sama dengan nilai konstanta tertentu, maka pernyataan pada konstanta tersebut akan dijalankan sampai ditemukan pernyataan break.. Jika

- Hitunglah daya yang ditransmisikan oleh belt, jika puli yang berdiameter besar berputar dengan kecepatan 200 rpm dan tegangan maksimum yang diizinkan pada sabuk adalah 1

Hasil penelitian menunjukan ada perbedaan yang signifikan berat badan pada kelompok kontrol, sebelum dan sesudah perawatan tanpa terapi massage dengan nilai p value

Penelitian mengenai faktor-faktor kondisi yang mendukung kontinuitas aktivitas budidaya Keramba Jaring Apung (KJA) di Teluk Lampung telah dilakukan pada Bulan Agustus 2009.

berat selulosa terhadap berat asam akrilat dengan kapasitas absorpsi dalam larutan urea Data hasil penelitian polimer superabsorben menunjukkan bahwa penambahan

bahwa untuk melaksanakan ketentuan Pasal 184 ayat (1) Undang-Undang Nomor 32 Tahun 2004 tentang Pemerintahan Daerah sebagaimana telah diubah dengan Undang-Undang

Untuk menghitung kadar dalam cuplikan digunakan metode komparatif, untuk itu diperlukan cuplikan standar yang mengandung unsur yang akan ditentukan, yang jumlah dan komposisi