11 KiB
---LESSON_INFO--- Learning Objectives:
- Memahami berbagai jenis operator dalam bahasa C
- Belajar menggunakan operator aritmatika, penugasan, perbandingan, dan logika
- Mengenal operator bitwise dan operator khusus lainnya
- Memahami urutan prioritas operator dalam ekspresi
Prerequisites:
- Pemahaman tentang variabel dan tipe data
- Pemahaman dasar tentang program C
---END_LESSON_INFO---
Operator dalam C
Operator dalam bahasa C adalah simbol-simbol khusus yang digunakan untuk melakukan operasi tertentu pada satu atau lebih operand (nilai atau variabel). Operator sangat penting dalam pemrograman karena mereka memungkinkan kita untuk melakukan perhitungan matematika, perbandingan, dan operasi logika.
Jenis-Jenis Operator dalam C
C menyediakan berbagai jenis operator:
- Operator Aritmatika - untuk operasi matematika
- Operator Penugasan - untuk menetapkan nilai ke variabel
- Operator Perbandingan - untuk membandingkan nilai
- Operator Logika - untuk operasi logika
- Operator Bitwise - untuk operasi pada bit
- Operator Lainnya - seperti increment/decrement, conditional, dll.
Operator Aritmatika
Operator aritmatika digunakan untuk operasi matematika dasar:
| Operator | Deskripsi | Contoh |
|---|---|---|
+ |
Penjumlahan | a + b |
- |
Pengurangan | a - b |
* |
Perkalian | a * b |
/ |
Pembagian | a / b |
% |
Modulo (sisa bagi) | a % b |
++ |
Increment (menaikkan nilai) | a++ atau ++a |
-- |
Decrement (menurunkan nilai) | a-- atau --a |
Contoh:
#include <stdio.h>
int main() {
int a = 10, b = 3;
printf("a + b = %d\\n", a + b); // 13
printf("a - b = %d\\n", a - b); // 7
printf("a * b = %d\\n", a * b); // 30
printf("a / b = %d\\n", a / b); // 3 (pembagian integer)
printf("a %% b = %d\\n", a % b); // 1 (sisa bagi)
a++; // a sekarang menjadi 11
printf("a++ = %d\\n", a); // 11
b--; // b sekarang menjadi 2
printf("b-- = %d\\n", b); // 2
return 0;
}
Operator Penugasan
Operator penugasan digunakan untuk menetapkan nilai ke variabel:
| Operator | Contoh | Sama Dengan | Deskripsi |
|---|---|---|---|
= |
x = 5 |
x = 5 |
Menetapkan nilai |
+= |
x += 3 |
x = x + 3 |
Menambah dan menetapkan |
-= |
x -= 3 |
x = x - 3 |
Mengurangi dan menetapkan |
*= |
x *= 3 |
x = x * 3 |
Mengalikan dan menetapkan |
/= |
x /= 3 |
x = x / 3 |
Membagi dan menetapkan |
%= |
x %= 3 |
x = x % 3 |
Modulo dan menetapkan |
Contoh:
#include <stdio.h>
int main() {
int x = 10;
printf("x awal: %d\\n", x); // 10
x += 5; // Sama dengan x = x + 5
printf("x += 5: %d\\n", x); // 15
x -= 3; // Sama dengan x = x - 3
printf("x -= 3: %d\\n", x); // 12
x *= 2; // Sama dengan x = x * 2
printf("x *= 2: %d\\n", x); // 24
return 0;
}
Operator Perbandingan
Operator perbandingan digunakan untuk membandingkan dua nilai dan mengembalikan nilai 1 (benar) atau 0 (salah):
| Operator | Deskripsi | Contoh | Hasil |
|---|---|---|---|
== |
Sama dengan | x == y |
0 jika tidak sama, 1 jika sama |
!= |
Tidak sama dengan | x != y |
1 jika tidak sama, 0 jika sama |
> |
Lebih besar dari | x > y |
1 jika x lebih besar dari y |
< |
Lebih kecil dari | x < y |
1 jika x lebih kecil dari y |
>= |
Lebih besar atau sama dengan | x >= y |
1 jika x lebih besar atau sama |
<= |
Lebih kecil atau sama dengan | x <= y |
1 jika x lebih kecil atau sama |
Contoh:
#include <stdio.h>
int main() {
int a = 5, b = 10;
printf("a == b: %d\\n", a == b); // 0 (salah)
printf("a != b: %d\\n", a != b); // 1 (benar)
printf("a > b: %d\\n", a > b); // 0 (salah)
printf("a < b: %d\\n", a < b); // 1 (benar)
printf("a >= b: %d\\n", a >= b); // 0 (salah)
printf("a <= b: %d\\n", a <= b); // 1 (benar)
return 0;
}
Operator Logika
Operator logika digunakan untuk menentukan logika antara variabel atau nilai:
| Operator | Deskripsi | Contoh | Keterangan |
|---|---|---|---|
&& |
Logical AND | (x < 5) && (y > 10) |
Benar jika kedua kondisi benar |
| ` | ` | Logical OR | |
! |
Logical NOT | !(x == y) |
Membalikkan hasil (benar menjadi salah, salah menjadi benar) |
Contoh:
#include <stdio.h>
int main() {
int x = 5, y = 10;
// AND: Benar jika kedua kondisi benar
if (x > 0 && y > 0) {
printf("Kedua angka positif\\n"); // Ditampilkan
}
// OR: Benar jika salah satu kondisi benar
if (x > 10 || y > 5) {
printf("Setidaknya satu angka lebih besar\\n"); // Ditampilkan
}
// NOT: Membalikkan kondisi
if (!(x == y)) {
printf("x tidak sama dengan y\\n"); // Ditampilkan
}
return 0;
}
Operator Bitwise
Operator bitwise bekerja pada bit dan melakukan operasi bit per bit:
| Operator | Nama | Deskripsi |
|---|---|---|
& |
AND | Mengembalikan 1 jika kedua bit adalah 1 |
| ` | ` | OR |
^ |
XOR | Mengembalikan 1 jika kedua bit berbeda |
~ |
NOT | Membalikkan semua bit |
<< |
Zero fill left shift | Menggeser bit ke kiri dan mengisi dengan 0 |
>> |
Signed right shift | Menggeser bit ke kanan dan mengisi dengan bit tanda |
Contoh:
#include <stdio.h>
int main() {
unsigned char a = 5; // 00000101
unsigned char b = 3; // 00000011
printf("a & b = %d\\n", a & b); // 1 (00000001)
printf("a | b = %d\\n", a | b); // 7 (00000111)
printf("a ^ b = %d\\n", a ^ b); // 6 (00000110)
printf("~a = %d\\n", ~a); // 250 (11111010 dalam 8-bit)
return 0;
}
Operator Lainnya
Beberapa operator penting lainnya:
Operator Increment/Decrement
int x = 5;
int y = ++x; // Pre-increment: x ditambah dulu baru digunakan (x=6, y=6)
int z = x++; // Post-increment: x digunakan dulu baru ditambah (x=7, z=6)
Operator Conditional (Ternary)
int a = 10, b = 20;
int max = (a > b) ? a : b; // Jika a > b maka max = a, jika tidak max = b
Operator sizeof
int num;
printf("Ukuran int: %zu byte\\n", sizeof(num)); // Ukuran dalam byte
Operator Alamat (&) dan Pointer (*)
int x = 5;
int *ptr = &x; // ptr menyimpan alamat dari x
printf("Nilai x: %d\\n", *ptr); // Mengakses nilai melalui pointer
Urutan Prioritas Operator
Dalam ekspresi kompleks, operator memiliki urutan prioritas yang menentukan urutan evaluasi:
| Kategori | Operator | Arah |
|---|---|---|
| Postfix | () [] -> . ++ -- |
Kiri ke kanan |
| Unary | + - ! ~ ++ -- (type)* & sizeof |
Kanan ke kiri |
| Multiplicative | * / % |
Kiri ke kanan |
| Additive | + - |
Kiri ke kanan |
| Shift | << >> |
Kiri ke kanan |
| Relational | < <= > >= |
Kiri ke kanan |
| Equality | == != |
Kiri ke kanan |
| Bitwise AND | & |
Kiri ke kanan |
| Bitwise XOR | ^ |
Kiri ke kanan |
| Bitwise OR | ` | ` |
| Logical AND | && |
Kiri ke kanan |
| Logical OR | ` | |
| Conditional | ?: |
Kanan ke kiri |
| Assignment | `= += -= *= /= %= &= ^= | = <<= >>=` |
| Comma | , |
Kiri ke kanan |
Contoh:
#include <stdio.h>
int main() {
int a = 5, b = 10, c = 3;
int result;
// Perkalian dilakukan dulu karena prioritas lebih tinggi
result = a + b * c; // Sama dengan a + (b * c) = 5 + 30 = 35
printf("a + b * c = %d\\n", result);
// Gunakan kurung untuk mengganti urutan prioritas
result = (a + b) * c; // Sama dengan (a + b) * c = 15 * 3 = 45
printf("(a + b) * c = %d\\n", result);
return 0;
}
Contoh Nyata Penggunaan Operator
Berikut adalah contoh penggunaan berbagai operator dalam situasi nyata:
#include <stdio.h>
int main() {
int age = 20;
int has_license = 1;
int score = 85;
int bonus = 10;
// Menggunakan operator logika dan perbandingan
if (age >= 18 && has_license) {
printf("Anda bisa mengemudi\\n");
}
// Menggunakan operator aritmatika dan penugasan
score += bonus; // Menambahkan bonus ke skor
printf("Skor akhir: %d\\n", score);
// Menggunakan operator conditional
char *status = (score >= 75) ? "Lulus" : "Tidak Lulus";
printf("Status: %s\\n", status);
// Menggunakan operator modulo untuk mengecek genap/ganjil
if (score % 2 == 0) {
printf("Skor adalah bilangan genap\\n");
} else {
printf("Skor adalah bilangan ganjil\\n");
}
return 0;
}
Tips:
- Gunakan kurung untuk membuat ekspresi lebih jelas dan menghindari kesalahan karena urutan prioritas
- Gunakan operator penugasan campuran (+=, -=, dll.) untuk membuat kode lebih ringkas
- Pahami perbedaan antara pre dan post increment/decrement
- Gunakan operator conditional untuk penugasan sederhana berdasarkan kondisi
Referensi:
- https://www.w3schools.com/c/c_operators.php
- https://www.w3schools.com/c/c_operators_arithmetic.php
- https://www.w3schools.com/c/c_operators_assignment.php
- https://www.w3schools.com/c/c_operators_comparison.php
- https://www.w3schools.com/c/c_operators_logical.php
- https://www.w3schools.com/c/c_operators_precedence.php
---EXERCISE---
Latihan: Kalkulator Sederhana
Dalam latihan ini, Anda akan membuat program kalkulator sederhana yang menggunakan berbagai operator aritmatika.
Requirements:
- Gunakan operator aritmatika (+, -, *, /, %) untuk melakukan perhitungan
- Program harus dapat melakukan penjumlahan, pengurangan, perkalian, pembagian, dan modulo
- Gunakan variabel untuk menyimpan angka dan hasil perhitungan
- Tampilkan hasil perhitungan dengan format yang jelas
Expected Output:
Hasil penjumlahan: 15
Hasil pengurangan: 5
Hasil perkalian: 50
Hasil pembagian: 2
Sisa hasil bagi: 0
Try writing your solution in the code editor below!
---KEY_TEXT--- +
/ % printf ---END_KEY_TEXT---
---EXPECTED_OUTPUT--- Hasil penjumlahan: 15 Hasil pengurangan: 5 Hasil perkalian: 50 Hasil pembagian: 2 Sisa hasil bagi: 0 ---END_EXPECTED_OUTPUT---
---INITIAL_CODE--- #include <stdio.h>
int main() { int a = 10; int b = 5; int hasil;
// TODO: Gunakan operator aritmatika untuk melakukan perhitungan
// Simpan hasil dalam variabel dan cetak dengan format yang sesuai
return 0;
} ---END_INITIAL_CODE---
---SOLUTION_CODE--- #include <stdio.h>
int main() { int a = 10; int b = 5; int hasil;
// Penjumlahan
hasil = a + b;
printf("Hasil penjumlahan: %d\\n", hasil);
// Pengurangan
hasil = a - b;
printf("Hasil pengurangan: %d\\n", hasil);
// Perkalian
hasil = a * b;
printf("Hasil perkalian: %d\\n", hasil);
// Pembagian
hasil = a / b;
printf("Hasil pembagian: %d\\n", hasil);
// Modulo
hasil = a % b;
printf("Sisa hasil bagi: %d\\n", hasil);
return 0;
} ---END_SOLUTION_CODE---