PENGGUNAAN SCILAB DALAM FUNGSI-FUNGSI OPERASI MATEMATIKA DAN PERULANGAN KONDISONAL
NAMA : MARWAN AKTORITHO WUISANG
NIM : 411421041
KELAS : B / PENIDIDKAN MATEMATIKA
FUNGSI-FUNGSI LOGIKA
1. And
Contoh Penggunaan Fungsi and, yaitu
2. Or
Contoh Penggunaan fungsi Or, yaitu
FUNGSI-FUNGSI PENGJIAN
Contoh ilustrasi penggunaan dari fungsi-fungsi pengujian,
Informasi yang dihasilkan oleh suatu fungsi pengujian kadangkala diperlukan sebagai kondisi yang diuji di dalam sebuah statemen kondisional, seperti yang ditunjukan pada contoh dibawah ini.
Fungsi my_abs pada contoh ini adalah emulasi dari fungsi abs yang telah terpasang di dalam Scilab.
OPERASI LOGIKA
Berikut adalah contoh operasi logika yang terdapat di dalam suatu statemen kondisional if.
Contoh suatu operasi logika yang terdapat dalam suatu statemen perulangan while sebagai berikut.
Suatu operasi logika juga dapat diterapkan terhadap obyek-obyek numerik. Pada kasus ini, angka nol akan dianggap sebagai konstanta boolean salah (F) dan sembarang angka lainnya selain angka nol akan dianggap sebagai konstanta boolean benar (T). Berikut ini contoh operasi logika terhadap obyek-obyek numerik.
PERULANGAN DAN KONDISIONAL
Scilab menyediakan beberapa statemen yang dapat digunakan untuk mengontrol alur eksekusi terhadap serangkaian statemen. Statemen-statemen tersebut yaitu for, while, if– else dan select–case, break dan continue.
For
Statemen for digunakan untuk melakukan eksekusi secara berulang (iterasi) dalam jumlah tertentu terhadap suatu blok-statemen. Bentuk umum statemen ini adalah sebagai berikut:
for var = exp
Blok-statemen
end
Dimana var adalah variabel perulangan dan exp adalah ekspresi yang digunakan untuk mengontrol suatu perulangan for. Ekspesi perulangan biasanya berupa sebuah vektor inkremental, j:k atau j:d:k.
Contoh perulangan for yang menggunakan vektor inkremental i:j sebagai ekspresi yang digunakan untuk mengontrol suatu perulangannya adalah sebagai berikut :
Contoh perulangan for yang menggunakan vektor inkremental i:j:k sebagai ekspresi perulangannya adalah sebagai berikut :
Selain berupa suatu vektor inkremental, ekspresi yang digunakan untuk mengontrol suatu perulangan for juga dapat berupa sebuah vektor atau matrik sembarang. Misalkan V adalah sebuah vektor atau matrik yang digunakan sebagai ekspresi perulangan maka statemen perulangannya secara umum dapat dinyatakan sebagai berikut:
for var = V
blok-statemen
end
Pada sebuah perulangan yang menggunakan suatu vektor sebagai ekspresi perulangannya maka jumlah perulangannya adalah sebanyak jumlah elemen vektor dimana pada setiap langkah perulangan ke-i nilai variabel iterasinya adalah nilai elemen ke-i, seperti yang diperlihatkan pada contoh di bawah ini.
Kemudian pada suatu perulangan yang menggunakan suatu matrik sebagai ekspresi perulangannya maka jumlah perulangannya adalah sebanyak jumlah kolom matrik dan pada setiap langkah perulangan ke-i nilai variabel iterasinya adalah vektor kolom ke-i, seperti yang diperlihatkan pada contoh berikut ini.
-->N = [458, 367, 1082, 619; 913, 1075, 843, 1249]
N =
458. 367. 1082. 619.
913. 1075. 843. 1249.
-->jumlah = zeros(1,4);
-->i = 0;
-->for j = N
--> i = i + 1;
--> jumlah(i) = sum(j);
-->end
-->jumlah
Jumlah =
1371. 1442. 1925. 1868.
Statemen perulangan for juga dapat diletakkan di dalam sebuah statemen perulangan yang lain, seperti pada contoh di bawah ini.
-->for i=1:3
--> for j=1:3
--> H(i,j) = 1/(i+j-1);
--> end
-->end
-->H
H =
1. 0.5 0.3333333 0.25
0.5 0.3333333 0.25 0.2
0.3333333 0.25 0.2 0.1666667
0.25 0.2 0.1666667 0.1428571
Penggunaan statemen for pada sebagian besar contoh-contoh yang telah diberikan hanya sebagai ilustrasi saja untuk memperjelas penggunaan statemen for. Pada beberapa contoh di atas, statemen for dapat diganti dengan statemen lain yang bebasis vektor.
Penggunaan statemen for sebaliknya hanya digunakan ketika statemen yang berbasis vektor sulit atau tidak dapat digunakan, seperti pada perhitungan dibawah ini,
function y = sin_taylor(x,n)
tnd = 1;
y = 0;
for i = 1:2:n
y = y + tnd*x.^i/factorial(i);
tnd = -tnd;
end
endfunction
pada perhitungan ini penggunaan statemen for tidak dapat dihindari dan digantikan dengan statemen lain yang berbasis vektor.
While
Statemen perulangan while digunakan untuk menangani suatu proses perulangan yang jumlah perulangannya tidak dapat ditentukan secara pasti. Bentuk umum dari statemen perulangan while adalah sebagai berikut:
while ekspresi then
blok-statemenakan
end
Blok statemen yang terdapat di dalam sebuah blok pengulangan while akan dieksekusi secara berulang selama ekspresi yang diuji masih bernilai benar, proses perulangan akan dihentikan jika ekspresi yang diuji bernilai salah. Kata-kunci then dapat diganti dengan ENTER,do,simbol koma (,) atau simbol titik-koma(;).
Berikut ini sebuah contoh operasi perulangan dengan statemen while.
-->eps = 1;
-->while (eps + 1) > 1
--> eps = eps/2;
-->end
-->eps = 2*eps
eps =
2.220D-16
Contoh berikutnya yang menggambarkan penggunaan statemen perulangan while adalah sebagai berikut:
-->// Penentuan akar kaudrat suatu bilangan dengan metode Newton
-->a = 12.34; // bilangan yang akan dicari akar kuadratnya
-->x = a/2; // nilai awal
-->tol = 1e-6;
-->while abs(a-x^2) > tol
--> x = (x + a/x)/2;
-->end
-->x
x =
3.5128336
Break
Statemen break digunakan untuk menghentikan suatu proses perulangan secara paksa. Pada suatu perulangan yang bersarang, statemen break hanya akan menghentikan proses perulangan dimana statemen break berada.
Berikut ini contoh penggunaan statemen break:
-->function y = my_sqrt(x)
-->// Penentuan akar kuadrat suatu bilangan x
-->
-->y = x/2; // nilai awal
-->while %t
-->y = (y + x/y)/2;
-->if abs(x – y^2) < 1e-6 then break end
-->end
-->endfunction
-->my_sqrt(12.34)
ans =
3.5128336
Pada contoh ini, ekspresi logika yang diuji pada statemen while nilainya selalu benar (%t) sehingga statemen break digunakan untuk menghentikan proses perulangannya jika suatu kondisi tertentu telah dipenuhi.
Continue
Di dalam suatu blok perulangan, penggunaan statemen continue akan menyebabkan statemen-statemen yang terletak di bawahnya tidak akan dieksekusi dan prosesnya dilanjutkan ke langkah perulangan berikutnya. Statemen continue yang terletak di dalam suatu perulangan yang bertingkat hanya akan berpengaruh terhadap blok perulangan yang melingkupinya saja.
Contoh penggunaan statemen continue adalah sebagai berikut.
-->n = 5;
-->x_even = [ ];
-->while (length(x_even) < n)
-->x = round(rand( )*100);
-->if (modulo (x, 2) ~= 0)
-->continue
-->end
-->x_even($+1) = x;
-->end
-->end
Seperti yang terlihat pada contoh ini, blok statemen yang tidak menggunakan statemen continue lebih ringkas dan lebih mudah dibaca daripada blok statemen yang menggunakan statemen continue.
If-else
Statemen if–else digunakan untuk mengontrol apakah suatu blok statemen akan dieksekusi atau tidak. Bentuk paling sederhana dari statemen ini adalah sebagai berikut:
If ekspresi then
Blok-statemen
End
Blok statemen yang terletak di dalam blok if hanya akan dieksekusi jika ekspresi yang diuji bernilai benar. Kata-kunci then dalam blok kondisional if-else dapat diganti dengan ENTER, tanda koma (,) atau tanda titik-koma (;).
Berikut ini adalah contoh penggunaan statemen if:
-->function y = my_clean(x,tol)
-->y = x
-->for i = 1:length(x)
-->if abs(y(i)) < tol then
-->y(i) = 0
-->end
-->end
-->endfunction
-->x = [9.99 -1.d-12];
-->my_clean(x, 1.d-6)
ans =
9.99 0.
Contoh lain penggunaan statemen if adalah sebagai berikut:
-->function y = my_sort(x)
-->n = length(x)
-->for i = 1:n
-->for j = (i+1):n
-->if x(j) < x(i)
-->temp = x(j)
-->x(j) = x(i)
-->x(i) = temp
-->end
-->end
-->end
-->y = x
-->endfunction
-->x = [10 2 3 0 5];
-->my_sort(x)
ans =
0. 2. 3. 5. 10.
Apabila terdapat dua alternatif pilihan untuk ekspresi yang diuji dalam blok kondisional maka blok kondisional if-else cocok untuk digunakan.
If ekspresi then
Blok-statemen pertama
Else
Blok-statemen kedua
End
Pada blok kondisional if-else jika ekspresi yang diuji mempunyai nilai benar maka blok[1]statemen pertama yang akan dieksekusi namun jika ekspresi yang diuji bernilai salah maka blok-statemen kedua yang akan dieksekusi.
Contoh penggunaan statemen if - else adalah sebagai berikut:
-->function [k,e] = simulasi_koin(n)
-->// Simulasi pelemparan koin sejumlah n percobaan
-->for i = 1:n
-->if rand( ) > 0.5
-->y(i) = “K”; // kepala
-->else
-->y(i) = “E”; // ekor
-->end
-->end
-->k = size(y(y == “K”),’*’);
-->e = n – k;
-->endfunction
-->[kepala, ekor] = simulasi_koin(10000)
ekor =
5107.
kepala =
4893.
Apabila ekspresi yang diuji dalam suatu blok kondisional yang mempunyai lebih dari dua macam pilihan maka bentuk kondisional yang sesuai adalah if-elseif-else yang mempunyai bentuk umum sebagai berikut:
if ekspresi_1 then
blok-statemen pertama
elseif ekspresi_2 then
blok-statemen kedua
. . .
else
blok-statemen ke-n
end
Pada blok kondisional if-elseif-else, suatu blok-statemen akan dieksekusi jika ekspresi yang diuji untuk blok-statemen tersebut mempunyai nilai benar. Apabila semua ekspresi yang diuji tidak ada yang mempunyai nilai logika benar maka blok-statemen yang terdapat pada blok else yang akan dieksekusi. Blok else bersifat opsional dan dapat diabaikan apabila tidak diperlukan.
Berikut ini adalah contoh penggunaan statemen if-elseif-else:
-->function sgn = signum(a)
-->if a > 0
-->sgn = 1;
-->elseif a < 0
-->sgn = -1;
-->else
-->sgn = 0
-->end
-->endfunction
-->signum(-3.45)
ans =
-1.
-->signum(10)
ans =
1.
Statemen kondisional juga dapat dibuat bersarang atau berada di dalam statemen kondisional yang lainnya, seperti yang ditunjukkan pada contoh di bawah ini.
-->function uji(x,y)
-->// Fungsi untuk membandingkan nilai dari argumen x dan y
-->
-->if x == y
-->disp(string(x) + “ dan “ + string(y) + “ adalah sama”)
-->else
-->if x < y
-->disp(string(x) + “ lebih kecil daripada “ + string(y))
-->else
-->disp(string(x) + “ lebih besar daripada “ + string(y))
-->end
-->end
-->endfunction
-->uji(%pi, %e)
3.1415927 lebih besar daripada 2.7182818
Select-Case
Statemen kondisional select-case cocok untuk digunakan jika ekspresi yang diuji dalam blok kondisional mempunyai nilai diskrit, baik berupa suatu data integer maupun string. Bentuk umum dari statemen select-case adalah sebagai berikut:
select ekspresi
case ekspresi_1 then
blok-statemen pertama
case ekspresi_2
blok-statemen kedua
. . .
else
blok-statemen ke-n
end
Pada blok kondisional select-case, jika ekspresi yang diuji mempunyai nilai yang sama dengan nilai ekspresi dari suatu case maka blok-statemen pada case tersebut yang akan dieksekusi. Namun jika nilai dari ekspresi yang diuji tidak ada yang sama dengan salah satu dari nilai ekspresi pada suatu case maka blok statemen yang terdapat pada blok else yang akan dieksekusi. Blok else bersifat opsional dan dapat tidak digunakan jika tidak diperlukan.
Berikut ini contoh penggunaan statemen select-case.
-->function my_sign(x)
-->select sign(x)
-->case -1
-->disp(string(x) = ‘ adalah bilangan negatif’ )
-->case 1
-->disp(string(x) + ‘ adalah bilangan positif’ )
-->else
-->disp(string(x) + ‘ adalah bilangan nol’ )
-->end
-->endfunction
-->my_sign(-20.8)
-20.8 adalah bilangan negatif
Contoh lain penggunaan statemen select-case adalah sebagai berikut.
-->function n = nilai(z)
-->select convstr(z, “u”)
-->case “A” then n = 4
-->case “B” then n = 3
-->case “C” then n = 2
-->case “D” then n = 1
-->else n = 0
-->end
-->endfunction
-->nilai(“c”)
ans =
2.
Dalam suatu operasi kondisional, jika ekspresi yang diuji mempunyai nilai diskrit maka penggunaan statemen select-case adalah lebih cocok dibandingkan dengan statemen if[1]elseif-else. Hal ini karena blok statemen kondisional yang dibuat dengan statemen select-case lebih mudah untuk dibaca dan mempunyai bentuk yang lebih elegan.
Bab 14
Fungsi
File-FungsiFile-fungsi adalah sebuah file teks yang di dalamnya terdapat statemen-statemen Scilab dimana statemen-statemen tersebut harus diitulis dengan sintaks sebagai berikut. function [out1, out2, ...] = func_name(in1, in2, ...) statemen-statemen endfunction Diman func_name adalah nama fungsi, in1, in2 adalah argumen-argumen input kemudian out1, out2 adalah argumen-argumen output. Pada fungsi yang tidak mempunyai argumen input penggunaan tanda kurung kiri dan kurung kanan, ( ), bersifat opsional. Pada fungsifungsi yang mempunyai argumen output tunggal penggunaan kurung-siku kiri dan kurungsiku kanan, [ ], bersifat opsional. Aturan penamaan fungsi adalah sama seperti aturan penamaan suatu variabel.
Berikut ini beberapa hal yang sebaiknya dilakukan pada saat pembuatan sebuah fungsi.
- Pada bagian awal sebuah fungsi, dimasukkan beberapa baris komentar yang berisi tentang tujuan komputasi dari fungsi.
- Variabel-variabel yang terdapat di dalam suatu fungsi harus mudah dimengerti.
- Terdapat penjelasan singkat tentang variabel-variabel yang digunakan.
- Menuliskan baris komentar pada bagian awal dari suatu blok statemen yang cukup
- panjang maupun pada blok-statemen untuk perhitungan yang cukup sulit.
- Menggunakan baris kosong untuk memisahkan suatu blok-statemen dengan blokstatemen lainnya.
- Menggunakan indentasi pada blok-statemen perulangan dan kondisional.
- Menggunakan spasi dan tanda kurung dalam penulisan suatu ekspresi matematikasehingga ekspresinya mudah dibaca dan dipahami.
Sebuah fungsi yang ditulis dengan gaya penulisan yang baik akan mudah untuk dibaca dand imengerti. Manfaat lainnya yaitu proses pengecekan atau perbaikan jika ada kesalahand alam fungsi yang telah dibuat dapat dilakukan dengan mudah. Sebuah file-fungsi yang telah selesai dibuat dengan teks editor SciNotes dapat disimpan kedalam sebuah file tertentu melalui menu File Save. Meskipun dapat digunakan
sembarang ekstensi namun sebaiknya suatu file fungsi disimpan dengan ekstensi sci. Pada sebuah file-fungsi di dalamnya dapat terdiri dari sebuah fungsi saja maupun beberapa fungsi seperti yang ditunjukkan pada contoh-contoh di bawah ini.
Contoh 1. (Deret Fibonacci). N Suku-suku awal dari deret Fibonacci [Fibonacci.sci]
Contoh 2. Beberapa fungsi trigonometri dengan argumen sudut dalam satuan derajat [trig_derajat.sci]
Contoh 3. (Metode Secant). Metode Secant adalah salah satu metode yang dapatd igunakan untuk menyelesaikan sebuah persamaan nonlinier f(x) = 0. BerBerikut ini adalah
fungsi yang merupakan implementasi dari metode secant [secant.sci].