Dalam pemrograman, kita bisa menampilkan dan menyimpan variabel. Selain itu, kita juga bisa melakukan operasi aritmetika dengan menggunakan variabel-variabel tersebut. Sama dengan dalam matematika, operator aritmetika yang kita gunakan dalam pemrograman juga memiliki hirarki atau urutan pengerjaan. Sebelum membahas hirarkinya, mari kita lihat operator aritmetika apa saja yang bisa kita gunakan dalam bahasa C dan C++.
Supaya kita bisa meminta input dari pengguna, kita bisa menambahkan scanf atau cin. Di bawah ini, saya hanya akan menggunakan scanf. Kalau bahasa pemrograman yang kalian gunakan adalah bahasa C++, kalian bisa juga menggunakan std::cin.
Operator Bitwise dan Bilangan Biner
Berikut ini adalah kode programnya!
Bwt, fungsi trigonometri dalam C atau C++ menggunakan satuan radian / rad, dan bukan derajat. Untuk yang belum tahu tentang radian, berikut ini informasi yang mungkin akan kalian butuhkan.
Urutan Pengerjaan Operator
Bahasa C dan C++ tidak hanya menyediakan operator artimetika dan bitwise. Ada beberapa opertaor lain yang bisa kalian gunakan. Saya tidak akan membahas semua kegunaannya sekarang. Tapi, saya akan memberi tahu kalian tentang urutan pengerjaan dari masing-masing operator dalam bahasa C atau C++.
Saat membuat program, kalian perlu memperhatikan hirarki dalam operasi aritmetika. Perkalian dan pembagian akan selalu lebih didahulukan daripada penjumlahan dan pengurangan. "4+3*5" hasilnya bukan "7x5=35", tetapi hasilnya adalah "4x15=60". Kalau kalian ingin mendapatkan 35 sebagai hasilnya, kalian bisa menggunakan tanda kurung sehingga penulisannya menjadi "(4+3)*5".
Contoh :
Dalam Bahasa C, C++, dan bahasa turunannya, hasil dari operasi pembagian akan ditentukan oleh nilai operand pertamanya atau nilai yang dibagi. Operand adalah bilangan atau variabel yang kalian gunakan dalam operasi hitung dengan menggunakan operator. Untuk lebih jelasnya, kita akan membuktikannya dengan membuat program untuk mencari Luas segitiga.
Modulo atau Sisa hasil bagi
Sisa hasil bagi akan berguna untuk menentukan bilangan yang habis dibagi, genap atau ganjil, FPB, KPK, dll. Operator untuk sisa hasil bagi dalam matematika disebut dengan modulo, atau sering disingkat dengan mod. Dalam algoritma euclidean, hasil dari sisa hasil bagi disebut juga dengan modulus. Sisa hasil bagi adalah pengurangan dari "bilangan yang dibagi" dengan "bilangan terdekat yang habis dibagi". Misalnya :
Operator penugasan
Tanda sama dengan (=), adalah operator yang bisa kalian untuk memberikan nilai dalam bahasa C atau bahasa C++. Operator tersebut disebut juga dengan operator penugasan.
Selain digunakan secara langsung setelah nama variabel, operator-operator aritmetika dan bitwise bisa kalian gabungkan dengan tanda = (sama dengan) jika hanya ada dua operand. Operand adalah variabel, angka, atau nilai tertentu yang digunakan dalam perhitungan menggunakan operator.
- Penjumlahan (+)
- Pengurangan (-)
- Perkalian (*)
- Pembagian (-)
- Operator modulo / modulus (%)
#include <stdio.h>
int main(){
int p=10;
int l=20;
int Luas;
Luas=p*l;
printf("Panjang : %d\n", p);
printf("Lebar : %d\n", l);
printf("Luas : p x l = %d", Luas);
return 0;
}
Pada
contoh di atas, kita menggunakan operator perkalian untuk mengalikan
variabel p dan l sebelum kita menyimpan hasilnya ke dalam variabel Luas. Setelah
penghitungan selesai, kita menampilkan hasil perkaliannya dengan printf.Supaya kita bisa meminta input dari pengguna, kita bisa menambahkan scanf atau cin. Di bawah ini, saya hanya akan menggunakan scanf. Kalau bahasa pemrograman yang kalian gunakan adalah bahasa C++, kalian bisa juga menggunakan std::cin.
#include <stdio.h>
int main(){
int p, l, Luas;
printf("Panjang : ");scanf("%d", &p);
printf("Lebar : ");scanf("%d", &l);
Luas=p*l;
printf("Luas : p x l = %d", Luas);
return 0;
}
Operator Bitwise dan Bilangan Biner
Selain operator aritmatika, ada operator-operator lain. Salah satunya adalah bitwise operator. Bitwise operator digunakan untuk melakukan tertentu perhitungan berdasarkan nilai binernya. Setiap bilangan desimal bisa diubah menjadi bilangan biner yang terdiri dari angka 1 dan 0. Berikut ini adalah aturan hasil dari bitwise operator.
- & (bitwise AND) : Bernilai 1 jika bit yang sama dari kedua operand bernilai 1
- | (bitwise OR) : Bernilai 1 jika bit yang sama dari kedua operand salah satu atau nilainya adalah 1.
- ^ (bitwise XOR) : Bernilai 1 jika bit yang sama dari kedua operand salah satunya bernilai 1.
- << (left shift) : Menggeser semua bit ke kiri. Bit yang berada bagian paling kanan akan bernilai 0. Misalnya, 1111 menjadi 0111.
- >> (right shift) : Menggeser semua bit ke kanan. Bit yang berada bagian paling kiri akan bernilai 0. Misalnya, 1111 menjadi 1110.
- ~ (bitwise NOT) : Mengubah bit yang bernilai 1 menjadi 0, dan yang bernilai 0 menjadi 1.
Desimal
|
Biner (8 bit )
|
0
|
0000 0000
|
1
|
0000 0001
|
2
|
0000 0010 09090909
|
3
|
0000 0011
|
4
|
0000 0100
|
5
|
0000 0101
|
6
|
0000 0110
|
7
|
0000 0111
|
8
|
0000 1000
|
9
|
0000 1001
|
10
|
0000 1010
|
11
|
0000 1011
|
12
|
0000 1100
|
13
|
0000 1101
|
14
|
0000 1110
|
15
|
0000 1111
|
16
|
0001 0000
|
Untuk mengubah bilangan biner menjadi bilangan desimal, kalian perlu memahami bahwa tiap bit dalam bilangan biner bernilai 2n(dua
pangkat n), dan nilai "n" sesuai dengan "posisi dari tiap bit dari
kanan". Misalnya, bilangan biner "101" nilai desimalnya adalah 5 karena
"1 x (2^2) + 0 x (2^1) + 1 x (2^0) = 2 + 0 + 1 = 5". Contoh lainnya bisa kalian lihat di
bawah ini!
Kalian bisa mengubah bilangan desimal menjadi
biner atau sebaliknya dengan membuat programnya. Tentu saja, itu baru bisa kalian lakukan jika kalian sudah paham
tentang cara mengubah bilangan desimal menjadi biner. Saya akan membantu
kalian membuat
program yang merubah
bilangan desimal menjadi bilangan biner dengan C++. Kalau kalian belum paham isinya, abaikan saja dan lihat hasil dari programnya!- 10 => 1 x (2^1)+0 x (2^0)=2+0=2
- 11 => 1 x (2^1)+1 x (2^0)=2+1=3
- 100 => 1 x (2^2)+0 x (2^1)+0 x (2^0) = 4+0+0 =4
- 101 => 1 x (2^2)+0 x (2^1)+1 x (2^0) = 4+0+1 =5
- 110 => 1 x (2^2)+1 x (2^1)+0 x (2^0) = 4+2+0 =6
- 111 => 1 x (2^2)+1 x (2^1)+1 x (2^0) = 4+2+1 =7
- 1000 => 1 x (2^3)+0 x (2^2)+0 x (2^1)+0 x (2^0) = 8+0+0+0 = 8
Berikut ini adalah kode programnya!
#include <iostream>
#include <stdlib.h>
using namespace std;
int biner(int a){
int x = 1;
while(x<=a)x*=2;
do{
x/=2;
if(a>=x){
cout << 1;
a%=x;
}else{
cout<< 0;
}
}while();
return a;
}
int main(){
int bilangan;
cout << "masukkan bilangan desimal yang akan anda ubah : ";
cin >> bilangan;
biner(bilangan);
return 0;
}
Mungkin, kalian yang baru belajar pemrograman
sedang bertanya, "di manakah operator seperti pangkat dan akar
kuadrat?". Kalian bisa menggunakan beberapa operator aritmatika seperti
akar / sqrt, abs, sin cos, tan, ceil, floor, round, atan, dll; dengan
menggunakan fungsi yang ada di dalam header "math.h" untuk bahasa C, atau cmath untuk bahasa C++.
Berikut ini adalah beberapa fungsi yang ada di dalam header "math.h".
- abs(a) atau fabs(a) : mengubah nilai bilangan negatif maupun positif menjadi bilangan positif.
- sqrt(a): akar kuadrat.
- sin(a), cos(a), tan(a) : fungsi trigonometri (sesuai namanya).
- atan(a), asin(a), acos(a) : kebalikan dari sin, cos dan tan.
- pow(a, b) : pemangkatan.
- log (a) : logaritma.
- log10 (a) : log 10.
- floor(a): membulatkan bilangan dengan type data float ke bawah.
- ceil(a) : membulatkan bilangan dengan type data float ke atas.
- round(a) : membulatkan bilangan bulat sesuai dengan aturan matematika.
Fungsi-fungsi di atas menggunakan satu parameter sebagai variabelnya. Selain fungsi-funcsi tersebut, masih ada fungsi lain yang menggunakan lebih dari satu variabel, salah satunya adalah pow(a, b).
Untuk menggunakannya ganti "a" dan “b” dengan variabel yang kalian gunakan dalam program. berikut ini penerapannya :
Untuk menggunakannya ganti "a" dan “b” dengan variabel yang kalian gunakan dalam program. berikut ini penerapannya :
#include <stdio.h>
#include <math.h>
const float pi=3.14159265358979323846;
using namespace std;
int main(){
int a;
float derajat=pi/180;
a=sqrt(9);
printf("sqrt(9) = %d\n", a);
printf("sin(pi radian) = %f\n", sin(pi));
printf("sin(30 derajat) = %f", sin(30*derajat));
return 0;
}
- π => Pi
- π rad = 180 derajat;
- 2Ï€ rad = 360 derajat;
- 1 derajat = (Ï€ / 180)rad
- π = 22/7 = 3.14159265358979323846....
Urutan Pengerjaan Operator
Bahasa C dan C++ tidak hanya menyediakan operator artimetika dan bitwise. Ada beberapa opertaor lain yang bisa kalian gunakan. Saya tidak akan membahas semua kegunaannya sekarang. Tapi, saya akan memberi tahu kalian tentang urutan pengerjaan dari masing-masing operator dalam bahasa C atau C++.
Saat membuat program, kalian perlu memperhatikan hirarki dalam operasi aritmetika. Perkalian dan pembagian akan selalu lebih didahulukan daripada penjumlahan dan pengurangan. "4+3*5" hasilnya bukan "7x5=35", tetapi hasilnya adalah "4x15=60". Kalau kalian ingin mendapatkan 35 sebagai hasilnya, kalian bisa menggunakan tanda kurung sehingga penulisannya menjadi "(4+3)*5".
Prioritas | Operator | Deskripsi | Associativity |
---|---|---|---|
1 | :: | Scope resolution (cuma C++) | Tidak ada |
2 | ++ | Suffix increment | Kiri ke kanan |
-- | Suffix decrement | ||
() | Function call | ||
[] | Array subscripting | ||
. | Element selection by reference | ||
-> | Element selection through pointer | ||
typeid() | Run-time type information (cuma C++) | ||
const_cast | Type cast (cuma C++) | ||
dynamic_cast | Type cast (cuma C++) | ||
reinterpret_cast | Type cast (cuma C++) | ||
static_cast | Type cast (cuma C++) | ||
3 | ++ | Prefix increment | Kanan ke kiri |
-- | Prefix decrement | ||
+ | Unary plus | ||
- | Unary minus | ||
! | Logical NOT | ||
~ | Bitwise NOT | ||
(type) | Type cast | ||
* | dereferensi untuk pointer | ||
& | Alamat pointer | ||
sizeof | Ukuran tipe data | ||
new, new[] | Dynamic memory allocation (cuma C++) | ||
delete, delete[] | Dynamic memory deallocation (cuma C++) | ||
4 | .* | Pointer to member (cuma C++) | Kiri ke kanan |
->* | Pointer to member (cuma C++) | ||
5 | * | Perkalian | Kiri ke kanan |
/ | Pembagian | ||
% | Modulo (sisa hasil bagi) | ||
6 | + | Penjumlahan | Kiri ke kanan |
- | Pengurangan | ||
7 | << | Bitwise, geser kiri | Kiri ke kanan |
>> | Bitwise, geser kanan | ||
8 | < | Kurang dari | Kiri ke kanan |
<= | Kurang dari atau sama dengan | ||
> | Lebih besar dari | ||
>= | Lebih dari atau sama dengan | ||
9 | == | Sama dengan (perbandingan) | Kiri ke kanan |
!= | Tidak sama dengan | ||
10 | & | Bitwise AND | Kiri ke kanan |
11 | ^ | Bitwise XOR (exclusive or) | Kiri ke kanan |
12 | | | Bitwise OR (inclusive or) | Kiri ke kanan |
13 | && | Logical AND | Kiri ke kanan |
14 | || | Logical OR | Kiri ke kanan |
15 | ?: | ?:) | Kanan ke kiri |
16 | = | Penugasan / pemberian nilai | Kanan ke kiri |
+= | Penugasan dengan penjumlahan | ||
-= | Penugasan dengan pengurangan | ||
*= | Penugasan dengan perkalian | ||
/= | Penugasan dengan pembagian | ||
%= | Penugasan dengan sisa hasil bagi | ||
<<= | Penugasan dengan bitwise left shift | ||
>>= | Penugasan dengan bitwise right shift | ||
&= | Penugasan dengan bitwise AND | ||
^= | Penugasan dengan bitwise XOR | ||
|= | Penugasan dengan bitwise OR | ||
17 | throw | Throw operator (exceptions throwing, Cuma C++) | Kanan ke kiri |
18 | , | Koma | Kiri ke kanan |
Contoh :
#include <stdio.h>
int main(){
int a, t, Luas;
printf("2+5*2 = %d\n", 2+5*2);
printf("(2+5)*2 = %d", (2+5)*2);
return 0;
}
Pembagian Bilangan Bulat VS Pembagian Pecahan DesimalDalam Bahasa C, C++, dan bahasa turunannya, hasil dari operasi pembagian akan ditentukan oleh nilai operand pertamanya atau nilai yang dibagi. Operand adalah bilangan atau variabel yang kalian gunakan dalam operasi hitung dengan menggunakan operator. Untuk lebih jelasnya, kita akan membuktikannya dengan membuat program untuk mencari Luas segitiga.
#include <stdio.h>
int main(){
int a, t, Luas;
printf("Alas : ");scanf("%d", &a);
printf("Tinggi : ");scanf("%d", &t);
Luas=a*t/2;
printf("Luas : %d", Luas);
return 0;
}
Contoh
di atas akan memberikan hasil yang tidak tepat jika hasil kali dari variabel a
dan t adalah bilangan ganjil. Hasil bagi dari bilangan ganjil
dibagi 2 seharusnya memang berupa pecahan desimal. Tapi, karena tipe datanya
adalah bilangan bulat, maka hasilnya dibulatkan ke bawah dengan membuang
bagian desimalnya. Supaya hasilnya sesuai dengan keinginan kita, kita
perlu mengubah tipe datanya menjadi float, double, atau tipe pecahan
desimal lainnya.#include <stdio.h>
int main(){
float a, t, Luas;
printf("Alas : ");scanf("%f", &a);
printf("Tinggi : ");scanf("%f", &t);
Luas=a*t/2;
printf("Luas : %f", Luas);
return 0;
}
Ingat! Jika bilangan bulat yang dibagi, maka hasilnya adalah bilangan bulat yang dibulatkan
ke bawah. Jika bilangan yang dibagi adalah pecahan desimal, maka hasilnya adalah pecahan desimal. Selain itu, hasil juga akan berubah kalau tipe data dari variabel yang digunakan untuk menyimpan suatu nilai tidak tepat. Bagian pecahan dari suatu bilangan saja akan hilang kalau kalian menyimpan pecahan desimal ke dalam variabel dengan tipe data bilangan bulat.Modulo atau Sisa hasil bagi
Sisa hasil bagi akan berguna untuk menentukan bilangan yang habis dibagi, genap atau ganjil, FPB, KPK, dll. Operator untuk sisa hasil bagi dalam matematika disebut dengan modulo, atau sering disingkat dengan mod. Dalam algoritma euclidean, hasil dari sisa hasil bagi disebut juga dengan modulus. Sisa hasil bagi adalah pengurangan dari "bilangan yang dibagi" dengan "bilangan terdekat yang habis dibagi". Misalnya :
- 4 mod 2 = 4-(2*2) = 4-4 = 0
- 5 mod 2 = 5-(2*4) = 5-4 = 1
- 8 mod 3 = 8-(3*2) = 8-6 = 2
- 5 mod 7 = 5-(0*5) = 5-0 = 5
Operator penugasan
Tanda sama dengan (=), adalah operator yang bisa kalian untuk memberikan nilai dalam bahasa C atau bahasa C++. Operator tersebut disebut juga dengan operator penugasan.
Selain digunakan secara langsung setelah nama variabel, operator-operator aritmetika dan bitwise bisa kalian gabungkan dengan tanda = (sama dengan) jika hanya ada dua operand. Operand adalah variabel, angka, atau nilai tertentu yang digunakan dalam perhitungan menggunakan operator.
- += (tambah)
- -= (kurang)
- /= (bagi)
- *= (kali)
- %= (sisa hasil bagi)
- &= (and)
- |= (or)
- ^= (xor)
Untuk
tanda tambah (+) dan tanda kurang (-) ada dua operator khusus yaitu
increment(++) dan decrement(--). Increment sama dengan penjumlahan
variabel dengan 1, dan decrement sama dengan pengurangan variabel dengan 1.
Increment dan decrement bisa diletakkan setelah dan sebelum variabel. Misalnya : x++, ++x, x--, atau --x. Perbedaan hasil yang dipengaruhi oleh peletakan increment dan decrement bisa kalian lihat kalau kalian meletakkan operator-operator tersebut di antara operator-operator lainnya dalam perhitungan. Untuk mengetahuinya, kalian bisa mencobanya sendiri dalam kode program yang kalian buat.
Increment dan decrement bisa diletakkan setelah dan sebelum variabel. Misalnya : x++, ++x, x--, atau --x. Perbedaan hasil yang dipengaruhi oleh peletakan increment dan decrement bisa kalian lihat kalau kalian meletakkan operator-operator tersebut di antara operator-operator lainnya dalam perhitungan. Untuk mengetahuinya, kalian bisa mencobanya sendiri dalam kode program yang kalian buat.
Operator lain yang sering
kita gunakan dalam hampir semua bahasa pemrograman adalah operator perbandingan dan operator logika. Operator-operator tersebut akan
kita pelajari secara lebih spesifik dalam percabangan dan perulangan.
Untuk kalian yang malas mengetik, download source code-nya di sini. Project-nya bisa kalian buka dengan menggunakan Code::Block.
Untuk kalian yang malas mengetik, download source code-nya di sini. Project-nya bisa kalian buka dengan menggunakan Code::Block.