Operator Perbandingan dan Logika
6.6 Operator Perbandingan dan Logika
Seperti yang kita lihat pada subbab 6.5 Control Statement, kita harus bisa menuliskan kondisi dalam bahasa M ATLAB untuk menciptakan percabangan program ataupun loop. Untuk keperluan ini kita mungkin harus membandingkan dua variabel (sama atau tidak, lebih besar atau lebih kecilkah?), mengevaluasi apakah suatu variabel memenuhi satu dari sejumlah syarat, dan sebagainya.
Untuk membandingan dua variabel digunakan operator berikut ini:
Tabel 6. 1
<> lebih kecil, lebih besar <= >= lebih kecil atau sama dengan, lebih besar atau
sama dengan
sama dengan, tidak sama dengan
Sementara untuk mengevaluasi logika, digunakan fungsi dan operator:
Tabel 6. 2 and(A,B) atau A & B
operasi logika AND antara A dan B
or(A,B) atau A | B
operasi logika OR
xor(A,B)
operasi logika XOR
not(A) atau ~A
operasi logika NOT pada A
A dan B di sini bisa berupa skalar, vektor, maupun matriks, asalkan ukuran A dan B sama.
Adapun tabel kebenaran yang digunakan pada setiap operasi logika tersebut ialah sebagai berikut:
M-file dan Pemrograman M ATLAB 83
xor(A,B) ~A
0 1 1 1 bukan nol
bukan nol
0 1 1 0 bukan nol bukan nol
nol
Perlu diperhatikan bahwa operasi logika memiliki prioritas untuk dihitung lebih dahulu, kemudian diikuti operasi aritmatika, lalu operasi perbandingan.
Untuk menambah pemahaman, mari kita praktekkan contoh di bawah ini di command window:
>> A = [1 2 0 -1 -2]; B = [1 0 0 0 5]; >> C = and(A,B) C=
>> D=A|B|C D=
>> E = xor(~A,B) E=
Sekarang, mari kita mencoba membuat fungsi untuk menentukan suatu tahun termasuk kabisat atau tidak. Jangkauan tahun yang bisa dihitung ialah 1900 hingga 2500. Kita ketahui bahwa tahun kabisat terjadi pada tahun-tahun berkelipatan 4, kecuali tahun akhir abad; namun untuk tahun akhir abad berkelipatan 400 termasuk kabisat pula.
% Fungsi untuk mengetahui tahun kabisat atau tidak % iskabisat.m
function hasil = iskabisat(thn)
% thn : merupakan masukan bilangan bulat positif % hasil = 1 jika kabisat, 0 jika tidak
if thn<1900 | thn>2500 disp('Tahun yang valid: 1900 - 2500'); hasil=[]; return
end
84 M-file dan Pemrograman M ATLAB
if rem(thn,4)==0 & (rem(thn,100)~=0|rem(thn,400)==0) hasil=1; else hasil=0; end
Pada fungsi tersebut, terdapat dua control statement “ if ”: •
if thn<1900 | thn>2500 Berarti jika variabel thn kurang dari 1900 ATAU lebih dari 2500, command di dalam “ if ” tersebut akan dijalankan.
• if rem(thn,4)==0 & ... (rem(thn,100)~=0|rem(thn,400)==0)
Berarti jika variabel thn habis dibagi 4 DAN logika (rem(thn,100)~=0|rem(thn,400)==0) bernilai 1 (true), maka command setelah “ if “ akan dijalankan.
Perlu diperhatikan bahwa logika (rem(thn,100)~=0|rem(thn,400)==0) akan bernilai 1 bila thn bukan tahun abad (kelipatan 100); ataupun kalau tahun abad haruslah kelipatan 400.
Sekarang kita bisa coba:
>> iskabisat(2005), iskabisat(1972) ans =
ans = 1
Fungsi ini hanya bisa mengolah masukan skalar. Lalu bagaimana kalau diinginkan masukan berupa vektor atau matriks? Kita bisa ubah fungsinya menjadi berikut ini:
% Fungsi untuk mengetahui tahun kabisat atau tidak % iskabisat.m
function hasil = iskabisat(thn)
% thn : merupakan masukan bilangan bulat positif % hasil = 1 jika kabisat, 0 jika tidak
if sum(sum(thn<1900 | thn>2500))~=0 disp('Tahun yang valid: 1900 - 2500'); hasil=[]; return
end
M-file dan Pemrograman M ATLAB 85
hasil = rem(thn,4)==0 & ... (rem(thn,100)~=0|rem(thn,400)==0);
Sekarang kita bisa coba untuk menentukan tahun kabisat antara 1980 hingga 1990.
>> iskabisat(1980:1990) ans =
86 M-file dan Pemrograman M ATLAB
Soal Latihan
1. Buatlah program dengan M-file untuk menghitung volume dan
luas permukaan balok bila diketahui: panjang = 5, lebar = 3, tinggi = 6,5. Beri nama program ini dengan prog_balok.m
2. Buatlah suatu fungsi dengan M-file untuk menghitung volume
dan luas permukaan balok dengan spesifikasi: masukan fungsi : panjang, lebar, dan tinggi balok keluaran fungsi : volume, dan luas permukaan balok.
Beri nama fungsi ini dengan hitung_balok.m
3. Buatlah suatu fungsi dengan M-file untuk menghitung volume
dan luas permukaan dari suatu prisma segiempat dengan spesifikasi:
masukan fungsi : panjang dan lebar alas prisma, serta
tinggi prisma keluaran fungsi : volume, dan luas permukaan prisma Beri nama fungsi ini dengan hitung_prisma.m
4. Buatlah suatu program untuk menampilkan segitiga Pascal. Pengguna harus memasukkan jumlah level segitiga yang ingin ditampilkan melalui command input. Apabila pengguna menginginkan segitiga 4 level maka akan tampil keluaran:
1 3 3 1 Beri nama program ini dengan prog_pascal.m
5. Buatlah sebuah fungsi untuk menghitung jumlah hari di antara
dua tanggal. Spesifikasi dari fungsi tersebut ialah: masukan : tanggal, bulan, dan tahun awal, serta tanggal,
bulan, dan tahun akhir. keluaran : jumlah hari di antara dua tanggal tersebut. Beri nama fungsi ini dengan hitung_hari.m. Misalkan kita ingin menghitung jumlah hari antara 2 Januari 2004 hingga 5 November 2006, maka ketikkan:
>> jml_hari = hitung_hari(2,1,2004,5,11,2006) jml_hari =