2. Materi Tujuan
Pengertian Operator Logika , Relasional
Kasus pengambilan keputusan dengan menggunakan IF
maupun switch. Berbagai kondisi yang digunakan untuk
pengambilan keputusan sederhana maupun yang kompleks
(melibatkan “dan” (&&) dengan “atau” (||).
3. Operator Logika
Operator logika digunakan untuk membandingkan logika hasil dari operator-
operator relasi atau digunakan untuk mengoperasikan operand (konstanta,
variabel, atau suatu ekspresi) secara logis. Operator logika ada tiga macam
yaitu operator AND, OR dan operator NOT. Untuk lebih jelasnya perhatikan
dalam tabel berikut:
5. Operator Relasional
Operator relasi digunakan untuk membandingkan hubungan
antara dua buah operand (sebuah nilai atau variable) atau
digunakan untuk mewakili sebuah nilai logika (nilai boolean),
dari suatu persamaan atau nilai. Jenis-jenis operator relasi,
seperti terlihat pada tabel dibawah ini:
7. Operator Logika AND (&&)
Operator logika AND digunakan untuk mengevaluasi dua ekspresi relasi sebagai operand
untuk mendapatkan rasional tunggal. Operasi akan menghasilkan nilai 1 (true) jika kedua
operand bernilai 1 (true) tapi jika salah satu atau keduanya bernilai (false) maka akan
menghasilkan nilai (false).
int main ()
{
bool a = 1, b = 0;
cout<< (a && b) <<endl;
return 0;
}
8. Ekspresi Relasi 1 : 4 < 10
Ekspresi Relasi 2 : 7 == 6
Ekspresi Relasi 3 : 9 >= 4
Penggabungan ketiga ekspresi relasi diatas menjadi :
4 < 10 && 7==6 && 9 >= 4
Maka ketiga ekspresi tersebut mempunyai nilai :
Ekspresi Relasi-1 : 4 < 10 (BENAR/1)
Ekspresi Relasi-2 : 7 == 6 (SALAH/0)
Ekspresi Relasi-3 : 9 >= 4 (BENAR/1)
Dari ekspresi relasi tersebut mempunyai 2 nilai BENAR dan 1 nilai SALAH, maka akan
menghasilkan:
4 < 10 && 7==6 && 9 >= 4 //(SALAH = 0)
Contoh:
Buatlah
Program dari
Ekspresi ini.....
9. int main( ){
int a, b, c, hasil1, hasil2, hasil3, hasilAkhir;
cout<<"Masukan Nilai A = ";cin>>a;
cout<<"Masukan Nilai B = ";cin>>b;
cout<<"Masukan Nilai C = ";cin>>c;
hasil1 = a + 4 < 10;
hasil2 = b > a + 5;
hasil3 = c - 3 >= 4;
hasilAkhir = hasil1 && hasil2 && hasil3;
cout<<"= Program Ekspresi AND ="<<endl;
cout<<"=========================="<<endl;
cout<<"Hasil dari Hasil1 = a + 4 < 10 adalah "<<hasil1<<endl;
cout<<"Hasil dari Hasil2 = b > a + 5 adalah "<<hasil2<<endl;
cout<<"Hasil dari Hasil3 = c - 3 >= 4 adalah "<<hasil3<<endl;
cout<<"Hasil dari Hasil Akhir = d && e && f adalah "<<hasilAkhir<<endl;
return 0;
}
Program AND
10. Operator logika OR ||
Operator logika OR digunakan untuk menghubungkan dua atau lebih ekspresi relasi untuk
mendapatkan hasil rasional tunggal, Operator || dibaca sebagai OR, akan dianggap 1
(true), bila salah satu ekspresi relasi yang dibandingkan bernilai 1 (true) dan bila semua
ekspresi relasi yang dibandingkan bernilai 0 (false), maka akan bernilai 0 (false).
#include <iostream>
using namespace std;
int main ()
{
bool a = 1, b = 0;
cout<< (a || b) <<endl;
return 0;
}
11. Ekspresi Relasi 1 : 4 < 10
Ekspresi Relasi 2 : 7 == 6
Ekspresi Relasi 3 : 9 >= 4
Penggabungan ketiga ekspresi relasi diatas menjadi :
4 < 10 && 7==6 && 9 >= 4
Maka ketiga ekspresi tersebut mempunyai nilai :
Ekspresi Relasi-1 : 4 < 10 (BENAR/1)
Ekspresi Relasi-2 : 7 == 6 (SALAH/0)
Ekspresi Relasi-3 : 9 >= 4 (BENAR/1)
Dari ekspresi relasi tersebut mempunyai 2 nilai BENAR dan 1 nilai SALAH, maka akan
menghasilkan:
4 < 10 && 7==6 && 9 >= 4 //(BENAR= 1)
Contoh:
Buatlah
Program dari
Ekspresi ini.....
12. int main( ){
int a, b, c, hasil1, hasil2, hasil3, hasilAkhir;
cout<<"Masukan Nilai A = ";cin>>a;
cout<<"Masukan Nilai B = ";cin>>b;
cout<<"Masukan Nilai C = ";cin>>c;
hasil1 = a + 4 < 10;
hasil2 = b > a + 5;
hasil3 = c - 3 >= 4;
hasilAkhir = hasil1 && hasil2 && hasil3;
cout<<"= Program Ekspresi AND ="<<endl;
cout<<"=========================="<<endl;
cout<<"Hasil dari Hasil1 = a + 4 < 10 adalah "<<hasil1<<endl;
cout<<"Hasil dari Hasil2 = b > a + 5 adalah "<<hasil2<<endl;
cout<<"Hasil dari Hasil3 = c - 3 >= 4 adalah "<<hasil3<<endl;
cout<<"Hasil dari Hasil Akhir = d && e && f adalah "<<hasilAkhir<<endl;
return 0;
}
Program OR
13. Cara Kerja operator AND dan OR pada Compiler :
Berdasarkan pernyataan-pernyataan di atas, C++ dalam mengevaluasi hal ini akan
menggunakan cara Arus pendek (Short-circuit) yang berarti hanya akan mengevaluasi apa
yang diperlukan dari kiri ke kanan. Mendapatkan tujuanya dan mengabaikan sisanya.
Contoh (5==6 && 4>3). C++ akan memproses dan mengevaluasi dari kiri ke kanan apakah
5==6 adalah 0 (false) atau 1 (true) dan jika mempunyai nilai 1 (true) maka akan melanjutkan
pemeriksaan ke ekspresi selanjutnya.
Tapi kenyataanya adalah 0 (false) maka pemeriksaan akan berhenti di situ dan mengabaikan
sisanya. karena sifat operator AND && yaitu, untuk mendapatkan nilai 1 (true) dibutuhkan
semua operand bernilai 1 (true). Sifat tersebut juga akan berlaku ke semua operator logika.
&& : Jika mendapatkan nilai 0 (false) maka langsung menghasikan nilai 0 (False).
|| : Jika mendapatkan nilai 1 (true) maka langsung menghasikan nilai 1 (True).
14. Operator Logika NOT
Operator logika NOT berfungsi membalikan nilai sebenarnya. Jika nilai yang
disebutkan bernilai 1 (true) maka akan menghasilkan nilai 0 (false), begitu pula
sebaliknya.
!true // Pernyataan bernilai 1 (true) dibalikan dengan operator NOT ‘!’ dan menjadi 0 (false)
!false // Pernyataan bernilai 0 (false) dibalikan dengan operator NOT ‘!’ dan menjadi 1 (true)
!(7==7) // Pernyataan bernilai 1 (true) dibalikan dengan operator NOT ‘!’ dan menjadi 0 (false)
!(9<=2) // Pernyataan bernilai 0 (false) dibalikan dengan operator NOT ‘!’ dan menjadi 1 (true)
Ekspresi Relasi : 4 < 10
Penggunaan umum Operator Logika NOT diatas menjadi;
!( 4 < 10) = 0 //(false)
15. Contoh Program Logika NOT
int main(){
int A, hasilSebenarnya, hasilNOT;
cout<<"Masukan Nilai A = "; cin>>a;
hasilSebenarnya = (a + 5 < 15);
hasilNOT = !(a + 5 < 15);
cout<<"= Program Ekspresi NOT ="<<endl;
cout<<"========================"<<endl;
cout<<"Nilai A = "<<a<<endl
cout<<"Nilai hasilSebenarnya = (a + 4 < 10) = "<<hasilSebenarnya<<endl;
cout<<"Nilai hasilNOT = !(hasilSebenarnya) atau !(a + 5 < 15) = "<<hasilNOT;
return 0;
}
17. Contoh
int x, x1, x2, y, y1, y2, z, z1, z2, a, b, c;
a = 125;
b = 100;
c = 25;
x1 = a < b;
x2 = a > b;
y1 = c <= b;
y2 = c >= b;
z1 = a == c;
z2 = a != c;
x = x1 && x2;
y = y1 || y2;
z = !z1;
cout <<"nA = "<< a<< b<< c ;
cout <<"nX1 = " ;
cout <<"n = "<< a<< b ;
cout <<"n = "<< x1 ;
cout <<"nX2 = " ;
cout <<"n = "<< a<< b ;
cout <<"n = "<< x2 ;
cout <<"nY1 = " ;
cout <<"n = "<< c<< b ;
cout <<"n = "<< y1 ;
cout <<"nY2 = " ;
cout <<"n = "<< c<< b ;
cout <<"n = "<< y2 ;
cout <<"nZ1 = " ;
cout <<"n = "<< a<< c ;
cout <<"n = "<< z1 ;
cout <<"nZ2 = " ;
cout <<"n = "<< a<< b ;
cout <<"n = "<< z2 ;
cout <<"nX = " ;
cout <<" n = "<< x1<< x2 ;
cout <<" n = "<< x ;
cout <<"Yn = " ;
cout <<"n = "<< y1<< y2 ;
cout <<"n = "<< y ;
cout <<"Zn = " ;
cout <<"n = "<< z1 ;
cout <<"n = "<< z ;
18. Operator bitwise
Operator bitwise adalah operasi matematika yang mengoprasikan suatu
nilai dalam bilangan biner. Operator bitwise akan bekerja dengan
mengubah bilangan desimal menjadi bilangan biner, setelah itu akan
melakukan operasi berdasarkan operator bitwise yang digunakan dan pada
akhirnya nilai tersebut akan diubah menjadi bilangan desimal kembali.
20. Macam-macam Operator BitwiseShift Left ( << )
Operator Bitwise Shift Left (<<) adalah operator yang akan menggeser nilai dalam
bentuk bilangan biner ke kiri. Operator ini akan mengubah bilangan desimal menjadi bilangan
biner lalu menggeser angka dari bilangan biner tersebut ke kiri dan setelah itu akan
mengubahnya kembali ke bilangan desimal.
0000 0000 1100 1001 = 201
//menggeser 1 bit ke kiri, Dibagian kanan disisipkan 0, sebanyak bit yang digeser
0000 0001 1001 0010 = 402
21. Contoh program BitwiseShift Left ( << )
#include <iostream>
using namespace std;
int main(){
int x;
cout<<"Masukan Nilai X = "; cin>>x;
cout<<"Nilai Awal : "<<x<<endl;
x = x << 1;
cout<<"Hasil dari Geser 1 Bit Ke Kiri = "<<x<<endl;
return 0;
}
22. Operator Bitwise Shift Right ( >> )
Operator Bitwise Shift Right (>>) adalah operator yang akan mengeser
nilai dalam bentuk bilangan biner ke kanan. Operator ini akan mengubah
bilangan desimal menjadi bilangan biner setelah itu menggeser angka dari
bilangan biner tersebut ke kanan dan pada akhirnya akan mengubahnya
kembali ke bilangan desimal.
0000 0000 1100 1001 = 201
//digeser 1 bit ke kanan, Dibagian kanan disisipkan 0, sebanyak bit
yang digeser dan pada bagian paling kiri akan hilang
0000 0000 0110 0100 = 100
23. Contoh Program Bitwise Shift Right ( >> )
int main(){
int x;
cout<<"Masukan Nilai X = "; cin>>x;
cout<<"Nilai Awal : "<<x<<endl;
x = x >> 1;
cout<<"Hasil dari Geser 1 Bit Ke Kanan = "<<x<<endl;
return 0;
}
24. Operator Bitwise AND ( & )
Operator Bitwise AND ( & ) adalah operator yang akan membandingkan dua operand
dalam bentuk bilangan biner. Operator ini akan mengubah bilangan desimal menjadi
bilangan biner lalu membandingkanya dengan operand dari sisi lain, Perbandingan akan
berlangsung dari bit ke bit (angka ke angka), membandingkan berdasarkan sifat dari AND
yaitu untuk menghasilkan nilai 1 (true) kedua operand harus bernilai 1(true) jika tidak akan
menghasilkan nilai 0 (false). Dan setelah perbandingan selesai dilakukan, hasil dari
perbandingan akan diubah ke bentuk bilangan desimal.
1100 1001 = 201
0110 0100 = 100
-------------------------- AND
0100 0000 = 64
26. Contoh Program Bitwise AND ( & )
int main(){
int hasil, x, y;
cout<<"Masukan Nilai X = "; cin>>x;
cout<<"Masukan Nilai Y = "; cin>>y;
hasil = x & y;
cout<<"Hasil dari "<<x<<" & "<<y<<" = "<<hasil<<endl;
return 0;
}
27. Operator Bitwise OR (|)
Operator Bitwise OR (|) adalah operator yang akan membandingkan dua operand dalam
bentuk bilangan biner. Operator ini akan mengubah bilangan desimal menjadi bilangan
biner lalu membandingkanya dengan operand dari sisi lain.
Perbandingan akan berlangsung dari bit ke bit (angka ke angka), membandingkan
berdasarkan sifat dari OR yaitu untuk mendapatkan nilai 1 (true) maka salah satu atau
semua operand harus bernilai 1 (true), jika semua operand bernilai 0 (false) maka akan
mendapatkan nilai 0 (false).
Dan setelah perbandingan selesai dilakukan, hasil dari perbandingan akan diubah ke
bentuk bilangan desimal.
1100 1001 = 201
0110 0100 = 100
------------------------OR
11101101 = 237
29. Contoh Program Bitiwise OR
int main(){
int hasil, x, y;
cout<<"Masukan Nilai X = "; cin>>x;
cout<<"Masukan Nilai Y = "; cin>>y;
hasil = x | y;
cout<<"Hasil dari "<<x<<" | "<<y<<" = "<<hasil<<endl;
return 0;
}
30. Operator Bitwise XOR ( ^ )
Operator Bitwise XOR ( ^ ) merupakan singkatan dari eXclusive OR adalah operator
yang akan membandingkan dua operand dalam bentuk bilangan biner. Operator ini akan
mengubah bilangan desimal menjadi bilangan biner lalu membandingkanya dengan
operand dari sisi lain,
Perbandingan akan berlangsung dari bit ke bit (angka ke angka), membandingkan
berdasarkan sifat dari XOR yaitu untuk mendapatkan nilai 1 (true) maka kedua operand
harus memiliki nilai yang berbeda, jika kedua operand memiliki nilai yang sama maka
akan mendapatkan nilai 0 ( false ).
Dan setelah perbandingan selesai dilakukan, hasil dari perbandingan akan diubah ke
bentuk bilangan desimal.
1100 1001 = 201
0110 0100 = 100
-----------------------XOR
1010 1101 = 137
32. Contoh Program Bitwise XOR ( ^ )
int main( )
{
int a, b, x, y;
cout<<"Masukan Nilai X = "; cin>>x;
cout<<"Masukan Nilai Y = "; cin>>y;
a = x ^ y;
b = x ^ y ^ x;
cout<<"Hasil dari "<<x<<" ^ "<<y<<" = "<<a<<endl;
cout<<"Hasil dari "<<x<<" ^ "<<y<<" ^ "<<x<<" = "<<b<<endl;
return 0;
}
33. Operator Bitwise NOT ( ~ )
Operator Bitwise NOT ( ~ ) adalah operator bersifat unary yang akan
membalikan nilai di dalam bentuk bilangan biner. Operator ini akan
mengubah bilangan desimal menjadi bilangan biner lalu membalikan nilai
dari bit ke bit (angka ke angka), jika bit tersebut memiliki nilai 1 ( true) maka
akan dibalik menjadi 0 (false) begitu pula sebaliknya. setelah operasi
selesai maka hasil akhir akan di kembalikan ke bentuk bilangan decimal.
0000 1000 = 8
//menjadi
1111 0111 = 247
34. Tabel Bitwise NOT ( ~ )
int main(){
int a, x;
cout<<"Masukan Nilai X = "; cin>>x;
a = ~x;
cout<<"Hasil dari ~ "<<x<<" = "<<a<<endl;
return 0;
}
36. Tugas Mandiri
j = m >> 2;
j = K + = m;
j = --m + K+ +;
j = m = = K;
j = K > m - = 5;
j = K ! = 21;
j = -m * 5;
j = m | K;
j = ~ m | K;
Buatlah algoritma dan program
dari soal no 1 diatas
LATIHAN MANDIRI
Carilah nilai J terangkan bagaimana nilai
J ini diperoleh dalam C + + berikut, jika
diketahui
int m = 24, k = 21;
j = m > K;
j = m % K;
j = m && K;
j = m & K;
j = m + + + K;
j = m ---K;
37. Tugas Kelompok
Buatlah algoritma dan program untuk menghitung volume dan luas permukaan
bola apabila masukkannya barupa jari-jari. Jari-jari yang dimasukkan bertipe
float dan output atau keluaran yang dihasilkan adalah luas dan volume
permukaan bola dengan tipenya adalah float.
PETUNJUK:
V = 4/3*pi*r*r*r
L = 4*pi*r*r
Dengan:
V = volume bola
L = luas permukaan bola
R = jari-jari bola
Pi = 3.14
1 Buat Algoritma
dan flowchart
38. Tugas Kelompok
Tuliskan program untuk menampilkan jumlah hari, jam, menit dan detik,
dengan masukkannya adalah detik. Sebagai contoh masukkan adalah
10000 detik. Keluaran yang nantinya akan dihasilkan adalah detik, jam,
menit, hari.
PETUNJUK:
1 hari = 24 jam
1 hari = 60 menit
1 hari = 60 detik
2
Buat Algoritma
dan flowchart