MATERI KULIAH 25 NOVEMBER 2015 10 DESEMBER 2015 Sri Istiyari Uswatun Chasanah G551150341 Selama kita belajar Scilab, kita sudah mengetahui sedikit tentang bahasa pemrograman Scilab, seperti membuat beberapa variabel, menulis beberapa ekspresi dan pernyataan, dan memanggil fungsi. Namun, kita secara interaktif belum menggunakan struktur program kontrol aliran atau bagan (flow) seperti if dan program lainnya. Beberapa hal tambahan yang diperlukan untuk dipelajari, yaitu : 1. Struktur aliran atau bagan program kontrol. 2. Operasi-operasi Boolean, ekspresi dan pernyataan-pernyataannya. 3. Menulis fungsi sendiri dan menggunakannya dalam Scilab. 4. File input (yang dimasukkan) dan output (yang dihasilkan). Hal terbaik tentang pemrograman interaktif seperti Scilab adalah bahwa pernyataan kontrol program dapat dicoba secara interaktif dan hasilnya dapat diamati dengan cepat tanpa harus melalui langkah-langkah kompilasi, menghubungkan, dan mengeksekusi program untuk memahami bagaimana pernyataan kontrol program tersebut bekerja dalam bahasa pemrograman.
1 1.1
Program Flow Control Loops The for Loop
Misalkan kita akan menampilkan bilangan dari 1 sampai 5 menggunakan program loop for. for i = 1:5 // input i adalah untuk bilangan 1-5 disp(i) // perintah dimana output akan dihasilkan end output : 1. 2. 3. 1
4. 5. Misalkan kita akan menampilkan semua bilangan ganjil antara 1 dan 5. for i = 1:2:5 // input i adalah bilangan dari 1-5 disp(i) // perintah dimana output yang akan dihasilkan end output : 1. 3. 5.
1.2
The while Loop
Misalkan kita menghitung epsilon menggunakan program loop while-do e = 1; k = 0; while 1+(e/2) = 1 do e = e / 2; k = k + 1; end e, k e= 2.200D-16 k = 52. dimulai dari e=1, ini memerlukan 52 iterasi sedemikian hingga 1+(e/2) = 1. dan e= 2.220D-16
2 2.1
Program Flow-Percabangan dan Pembuatan Keputusan Percabangan menggunakan if then elseif else
Berikut ini akan ditunjukkan suatu program struktur kontrol dengan menggunakan if-then-elseif-else: >>x = int(rand(1) * 100 50);//membangkitkan bilangan bulat acak sebanyak 100 kali kemudian dikurangi dengan 50 2
>>if x > 0 then // pernyataan pengandaian jika x > 0 >>disp(Positive)//output yang dihasilkan adalah positif >>elseif x == 0 then // pernyataan pengandaian jika x=0 >>disp(Zero) // output yang dihasilkan adalah nol else // pernyataan pengandaian jika selain x > 0 dan x=0 disp(Negative)// output yang dihasilkan adalah negatif end Output dari beberapa pernyataan di atas yaitu Positif, Nol, atau Negatif yang bergantung pada nilai x.
2.2
Percabangan menggunakan select
Percabangan menggunakan select serupa dengan perintah switch dalam program C/C++. Hal ini dapat membandingkan nilai dari suatu variabel terhadap suatu konstanta dan jika ditemukan sama, maka dapat mengeksekusi suatu set dari perintah atau pernyataan. − >x = int(rand(1) * 3); − > selectn − >case 0 then − >disp(Zero) >case 1 then >disp(One) >case 2 then >disp(Two) >else >disp(Too big) >end
3
Operasi Boolean, Ekspresi dan Pernyataannya
Berikut adalah daftar beberapa operator Boolean beserta pernyataannya:
3
Ekspresi dan Pernyataan : • == Sama dengan • > Lebih besar dari • < Lebih kecil dari •
Negasi
• & DAN •
= Tidak sama dengan
• >= Lebih besar sama dengan • <= Lebih kecil sama dengan • <> Tidak sama dengan • | ATAU >a = int(rand(3,4)*20) a= 5. 2. 2. 8. 15. 13. 5. 4. 3.
4
>a > 10, bool2s(a > 10) ans = TFFF FFTT FFFF ans = 0. 0. 0. 0. 1. 1. 0. 0. 0. >a > 10 ans = TFFF FFTT FFFF >bool2s(a > 10) ans = 0. 0. 0. 0. 1. 1. 0. 0. 0. a adalah matriks dari nilai Boolean yang berukuran 34. Anggota a yang lebih besar dari 10 akan bernilai TRUE, selainnya bernilai FALSE. Fungsi bool2s(a ¿ 10) sama seperti a ¿ 10, hanya saja yang membedakan adalah
5
pada output yang dihasilkan. Jika fungsi a ¿ 10 bernilai TRUE, maka keluaran 1, selainnya 0. >a = int(rand(3, 4)*100) a= 82. 57. 55. 92. 81. 12. 56. 5. 72. >x = find(a ¡ 20) x= 9. 11. >a(x) ans = Note: • x dan a(x) berupa vektor • a adalah sebuah matriks. Sebuah pernyataan logika yang majemuk dapat dikonstruksi sebagai berikut: >x = find(a < 20 | a > 70)//logika ATAU x= column 1 to 6 3. 4. 5. 8. 9.
6
column 7 to 8 12. >a(x) ans = >y = find(a > 20 & a < 70) //logika DAN y= 6. 7. 10. >a(y) ans = >and(a > 10) // TRUE jika semua nilai elemen dari a lebih dari 10 ans = F >or(a > 10) // TRUE jika terdapat paling sedikit satu elemen dari a yang lebih dari 10 ans = T
7