Skip to content

Module 0: Introduction to Programming

James edited this page Oct 8, 2020 · 22 revisions

Table of Contents

IDE (Integrated Development Environment)

Before we start coding, we need an IDE to simplify the coding process. What is an IDE? To put it simply, an IDE or Integrated Development Environment is a code editor application that also provides a compiler. Here are some IDEs for the C language that are commonly used:

Introduction to the C Language

Statement

In a program, a statement is a command that instructs the computer to carry out a certain action, such as displaying something to the computer.

If we were to put it into an analogy, when we speak to someone, we use a language that we both understand, so that we can convey what we want to tell them. That's what a statement is. Conveying a message to someone is akin to a statement in a program.

"Hello, world."

Let's start by creating a simple program, displaying the iconic sentence "Hello, world!" to the screen (console). This is the code for program:

#include <stdio.h>  

int main()
{
    printf("Hello, world!\n");  
    return 0;  
}  

Copy the code above to your IDE, and then compile and run. The compilation process will result the following output.

Hello, world!

Program Structure

To explain how the above program works, let's divide the code into several parts.

Header File

The first line in the code is called the preprocessor directive. The preprocessor used in this case is '#include'

The '#include' preprocessor tells the preprocessor to insert the contents of another file, the header file <stdio.h> into the source code at the point where the #include directive is found. The <stdio.h> header file is a built-in C library that contains important functions needed by the program. In this case, the header file provides the 'printf()' function to display the sentence “Hello, world!”. Without the library, the program can't be compiled.

main() Function

The main() function in the code is used from the 3rd line until the 7th line.

int main()
{
    printf("Hello, world!\n");  
    return 0;  
}

In every C program, the main() function must always be there. This is because the execution of a code starts from the beginning of the main() function.

  • The 3rd line shows the name and the return type of the function. int is the type of return for the function named main(). Then the symbol '{' denotes the start of the main() function
  • Line 4 through 6 contains the body of the main()function
  • Line 8 contains the symbol '}' which denotes the end of the main() function. Essentially, the body of a function will always be in-between the '{}' symbols.

Whitespace

We can see that line 2 and 4 is empty (no characters whatsoever). This is called a whitespace. Whitespace is the empty area in a code, usually used to make the code more readable.

There are three kinds of whitespace, space, tab, and new line. Line 2 and 4 is an example of a new line whitespace.

Statement

In the main() function, there are two statements in line 5 and line 6. Most statements ends with a semicolon (;).

printf("Hello, world!\n");  
return 0;  

The statement in line 5 instructs the program to call the printf() function. The printf() function is a function provided in the library header <stdio.h> and is used to display an output to the console (screen). In this case, the printf() function receives a string argument “Hello, world!\n”. The ‘\n’ in the string is a special character used to print a new line.

While the statement in line 6 is called a return statement. The command return 0 in the function main() is used to end the program and signalizes that the program has been successfully executed.

Komentar

Comments (comment) is the part of a program that will not be executed. Comments provide clarity to the C source code allowing others to better understand what the code was intended to accomplish and greatly helping in debugging the code. Comments are especially important in large projects containing hundreds or thousands of lines of source code or in projects in which many contributors are working on the source code. There are two types of comments in the C language.

Single-Line Comments

As the name says, single-line comments only work in one line. Single-line comments start with the symbol //. All characters (in one line) starting with the symbol // will be ignored.

// This is a single-line comment  
  
// Fungsi untuk mencetak ke layar  
printf("HELLO\n");  

Multi-Line Comments

While multi-line comments can span, well, multiple lines. (It can also just span a single line). A multi-line comment will always start with /* and ends with */. All characters between these two symbols will be ignored.

/* 
This is a multi-line comment
Everything here will be ignored
borgars
*/  

< Table of Contents

Variables

Introduction to Variables

Variable is a place to store modifiable data or value in the memory that can change as the program runs. in C language, variables store data/value with a specific type. An example is a variable that stores an integer type.

Variable can be analogized as a glass. In this case, the glass is what we call a variable. Glasses are commonly used to store liquids. So in this case, the liquids contained is called a data type. Furthermore, Variabel dapat dianalogikan sebagai sebuah gelas. Gelas dalam hal ini disebut sebagai variabel. Pada umumnya, gelas digunakan untuk menampung cairan. Dalam hal ini cairan adalah tipe datanya. Kemudian, contoh dari cairan adalah air, yakni dalam hal ini data yang akan disimpan oleh gelas.

Pada dasarnya program bekerja dengan mengolah data-data. Data-data inilah yang kemudian disimpan pada variabel.

Deklarasi dan Definisi Variabel

Pada bahasa C, variabel harus dideklarasikan terlebih dahulu sebelum bisa digunakan. Seperti halnya gelas tadi, gelas tersebut harus ada terlebih dahulu sebelum bisa digunakan.

Untuk mendeklarasikan sebuah variabel, sintaksnya adalah sebagai berikut.

<tipe_data> <identifier>

Misalkan, potongan kode berikut mendeklarasikan variabel x yang bertipe int.

int x

Jika ingin mendeklarasikan lebih dari satu variabel dengan tipe yang sama, bisa menggunakan operator koma (,).

<tipe_data> <variabel1>, <variabel2>, ... dst;
int x, y;

Pengisian Nilai Pada Variabel

Setelah dideklarasikan, variabel dapat diisi oleh sebuah nilai. Untuk melakukannya, gunakan operator assignment (simbol =).

identifier_variabel = <nilai yang bersesuaian>

Contoh:

int x, y;  
x = 10;  
y = -2; 

Dalam hal ini, variabel x dan y akan mempunyai nilai masing-masing 10 dan -2.

Inisialisasi Variabel

Deklarasi dan pengisian nilai pada variabel dapat dilakukan dalam satu instruksi sekaligus. Hal ini disebut dengan inisialisasi. Dengan melakukan inisialisasi variabel, berarti kita memberikan nilai awal pada variabel tersebut.

tipe_data identifier_variabel = <nilai yang bersesuaian>;

Contoh:

int x = 10;

< Kembali ke Daftar Isi

Konstanta dan Literal

Konstanta dan Literal

Istilah konstanta merujuk pada suatu nilai tetap, tidak dapat berubah/diubah bahkan oleh program itu sendiri. Literal adalah konstanta yang nilainya kita tulis secara eksplisit pada kode. Contohnya:

5       // Literal bilangan bulat  
1.23    // Literal bilangan real  
'S'     // Literal karakter  
"Hai"   // Literal string  

Berikut adalah jenis-jenis literal dalam bahasa C.

Jenis Literal Contoh Tipe Default
Bilangan bulat 10, 0, -1 dll. int
Bilangan real (floating) 202.15, 33.24, -12.45 dll. double
Karakter ‘A’, ‘1’, ‘#’ char
String “Hai” const char[4]

Bilangan Bulat

Terdapat tiga cara untuk menuliskan literal bilangan bulat. Yakni menggunakan basis 10 (desimal), basis 8 (oktal) dan basis 16 (heksadesimal).

  • Desimal - ditulis seperti bilangan pada umumnya. Contohnya 100, -22.
  • Oktal - diawali dengan angka “0”, kemudian diikuti bilangan oktal. Contohnya 077, 033.
  • Heksadesimal - diawali dengan “0x”, kemudian diikuti bilangan heksadesimal. Contohnya 0x7f, 0x521.

Bilangan Real (floating)

Bilangan real (floating) dituliskan dengan menggunakan pemisah tanda titik (.) antara bilangan bulat dan bilangan pecahannya. Contohnya 2.321, -11.22, 0.00012.

Karakter

Literal karakter dituliskan dengan mengapitnya menggunakan tanda petik. Misalnya karakter A ditulis ‘A’. Selain karakter normal, terdapat karakter khusus dalam bahasa C yang mempunyai fungsi-fungsi khusus atau karakter yang tidak bisa begitu saja dituliskan dengan bentuk aslinya. Misalnya, “new line” direpresentasikan dengan ‘\n’, simbol backslash direpresentasikan dengan ‘\’. Karakter-karakter tersebut disebut dengan escape sequence. Berikut adalah escape sequence yang terdapat dalam bahasa C.

Escape Sequence Karakter
\b Backspace
\f Form feed
\n Newline
\r Return
\t Tab horisontal
\v Tab vertikal
\\ Backslash
\’ Tanda petik
\” Tanda petik dua
\? Tanda tanya
\0 Karakter null
\b Backspace

String

String adalah kumpulan dari satu karakter atau lebih. Literal string diapit oleh tanda kutip. Misalnya, “Hello, world.”. Representasi string dalam bahasa C menggunakan array bertipe char. Kita akan mempelajarinya di bagian selanjutnya.

Mendefinisikan Konstanta

Untuk mendefinisikan konstanta, dapat dilakukan dengan cara-cara seperti berikut.

Mendefinisikan Variabel Konstan

Variabel juga dapat dibuat konstan nilainya agar tidak dapat berubah/diubah selama program berjalan. Variabel konstan dibuat dengan menambahkan keyword const saat pendefinisian variabel.

const tipe_data nama_var = <nilai yang bersesuaian>

Perlu diperhatikan bahwa definisi variabel konstan harus disertai inisialisasinya. Contoh:

const int    konstInt = 23;  
const double konstDouble = 23.12;

Segala bentuk perubahan yang dilakukan terhadap variabel konstan akan menghasilkan error.

const int konstInt = 23;  
konsInt = 11; // Error

Menggunakan #define

Cara lainnya adalah menggunakan prepocessor directive #define. Sintaksnya adalah sebagai berikut.

#define nama <nilai yang bersesuaian>

Contoh:

#define konstInt    23  
#define konstDouble 23.11  
  
int main()  
{  
    int    a = konstInt;  
    double b = konstDouble;  
}  

< Kembali ke Daftar Isi

Tipe Data Dasar

Secara sederhana tipe data adalah jenis data dan ukuran data yang akan ditampung dan oleh variabel (atau objek secara umum). Tipe data menentukan tipe dan jenis data seperti apa yang akan dimiliki oleh suatu variabel.

Dalam bahasa C terdapat beberapa jenis tipe data. Di antaranya adalah tipe data dasar, tipe data turunan, dan void. Untuk kali ini kita akan berfokus pada tipe data dasar.

Tipe Bilangan Bulat (integer)

Bilangan Bulat adalah bilangan yang tidak mempunyai nilai pecahan (real). Tipe data bilangan bulat pada bahasa C diantaranya sebagai berikut.

Tipe Data Memori (Byte) Jangkauan Nilai Format Specifier
Min Max
short 2 -215 s.d 215 - 1 %hi
unsigned short 2 - 4 0 s.d 216 - 1 %hu
int 4 -231 s.d 231 - 1 %d
unsigned int 4 0 s.d 232 - 1 %u
long 4 -231 s.d 231 - 1 %ld
unsigned long 4 0 s.d 232 - 1 %lu
long long 8 -263 s.d 263 - 1 %lld
unisgned long long 8 0 s.d 264 - 1 %llu

Seperti namanya, tipe-tipe data di atas adalah tipe data yang digunakan untuk merepresentasikan bilangan bulat (positif dan negatif) dan bilangan 0. Misalnya, 0, -5, 12, -1, 200 dsb. Perlu ditekankan bahwa tipe-tipe data di atas tidak dapat digunakan untuk merepresentasikan bilangan floating-point (bilangan real).

Jika diperhatikan, terdapat dua jenis tipe data antara lain signed dan unsigned. Lalu apa perbedaan dari kedua jenis tersebut? Perbedaannya adalah terletak pada kemampuan untuk menampung bilangan negatif. signed dapat menampung bilangan negatif, sedangkan unsigned tidak.

Tipe Bilangan Real (floating)

Bilangan Real atau floating-point adalah bilangan yang mempunyai nilai pecahan (real). Tipe data bilangan real pada bahasa C di antaranya adalah sebagai berikut.

Tipe Data Memori (Byte) Jangkauan Nilai Format Specifier
float 4 ±3.4 x 10±38 (estimasi) %f
double 8 ±1.7 x 10±308 (estimasi) %lf

Tipe data di atas digunakan untuk menyimpan data berupa bilangan real (floating-point)/bilangan berkoma. Misalnya, 2.35, -12.246, 0.005 dsb.

Tipe Karakter

Karakter dalam bahasa C sebenarnya adalah bilangan bulat. Setiap karakter mempunyai kode tersendiri yang disebut dengan ASCII dan kode tersebut dapat direpresentasikan sebagai sebuah bilangan bulat.

Tipe Data Memori (Byte) Jangkauan Nilai Format Specifier
char 1 -27 s.d 27 - 1 %c
unsigned char 1 0 s.d 28 - 1 %c

Penggunaan paling umum dari tipe data di atas adalah untuk merepresentasikan satu karakter. Misalnya, ‘A’, ‘-‘, dan sebagainya.

< Kembali ke Daftar Isi

Input dan Output Dasar

Program yang kita buat dapat dijadikan program yang interaktif. Kita dapat menginstruksikannya untuk menerima input (dari keyboard) lalu menampilkan hasil output (pada konsol layar). Fungsi-fungsi yang berkaitan dengan input/output ada di dalam library <stdio.h> (standard input output).

Output Dasar

Fungsi printf()

Untuk mencetak output pada konsol, fungsi yang digunakan adalah fungsi printf(). Seperti yang sudah kita ketahui sebelumnya, fungsi printf() dapat menerima string sebagai argumen.

#include <stdio.h>  
  
int main()   
{  
    printf("Ini adalah sebuah string\n");  
    return 0;  
} 

Output

Ini adalah sebuah string

Kita juga dapat menambahkan escape sequence pada string. Misalkan, kita ubah statement printf() di atas menjadi:

printf("Ini adalah sebuah string\nAku adalah new-line\n\tAku adalah karakter \\tab");
Ini adalah sebuah string
Aku adalah new-line
    Aku adalah karakter \tab

Memisahkan dua statement printf() pada baris berbeda bukan berarti mencetak pada baris berbeda juga.

#include <stdio.h>  
  
int main()   
{  
    printf("Pikirmu aku akan");  
    printf("Berpindah baris?");  
    return 0;  
}  

Output

Pikirmu aku akanBerpindah baris?

Potongan-potongan kode di atas adalah contoh untuk mencetak string tetap. Lalu bagaimana jika kita ingin mencetak string bersama dengan nilai dari suatu variabel?

Output Dengan Format Specifier

Untuk mencetak nilai dari suatu variabel, kita perlu menambahkan argumen pada fungsi printf(). Argumen pertama pada fungsi printf() selalu berupa string. Kita dapat memasukkan variabel/nilai pada argumen ke-2, 3, 4 dan seterusnya sesuai kebutuhan. Ingat, pada chapter Tipe Data Dasar, setiap tipe data mempunyai format specifier masing-masing. Nah, format specifier inilah yang akan kita gunakan untuk mencetak nilai dari suatu variabel.

printf(“<format string>”, var1, var2, var3, ... dst);

Misalnya saja, kita mempunyai dua variabel bertipe int dan char yakni a = 2 dan b = ‘X’. Kita hendak mencetak nilai dari a dan b dipisahkan oleh spasi, maka programnya seperti:

#include <stdio.h>  
  
int main()   
{  
    int  a = 2;  
    char b = 'X';  
    printf("%d %c", a, b);  
    return 0;  
}

Output

2 X

Perhatikan ilustrasi di bawah.

Oi ini nanti gambar

Dengan menyertakan format specifier dari tipe data yang bersesuaian, kita dapat mencetak nilai dari variabel tersebut.

  • Fungsi printf() di atas mencetak string dengan nilai dua variabel (dua format specifier yang dipisahkan spasi).
  • Format specifier pertama adalah format specifier tipe data int dan akan merujuk pada variabel pertama yang dimasukkan, yakni a.
  • Format specifier kedua adalah format specifier tipe data char dan akan merujuk pada variabel kedua, yakni b.
  • Dan begitu seterusnya, satu format specifier untuk satu variabel berurutan. Dengan begitu, kita dapat menyertakan format specifier bersamaan dengan string.
printf("Nilai dari a = %d, dan b = '%c'", a, b);    
Nilai dari a = 2, dan b = ‘X’

Input Dasar

Fungsi scanf()

Umumnya kita melakukan input untuk menerima data/nilai dari user. Kemudian, data/nilai tersebut akan dimasukkan pada variabel yang akan diproses kemudian. Untuk melakukan input dari keyboard fungsi yang digunakan adalah fungsi scanf(). Parameter dari fungsi scanf() sama persis dengan fungsi printf(). Kita menggunakan format specifier untuk menentukan jenis tipe data yang kita input, kemudian nilai input tersebut akan di-assign pada variabel.

Contoh:

Program di bawah menerima input berupa bilangan bulat yang disimpan pada variabel n, kemudian mencetak nilai variabel n dengan format “n mempunyai nilai = n”.

#include <stdio.h>  
  
int main()   
{  
    int n;  
    scanf("%d", &n);  
    printf("n mempunyai nilai = %d", n);  
    return 0;  
} 

Input

3

Output

n mempunyai nilai = 3

< Kembali ke Daftar Isi

Operator

Operator dapat dipahami sebagai sesuatu yang dapat melakukan operasi pada operan (variabel/nilai). Contohnya, operator + digunakan untuk operasi penjumlahan.

Dilihat dari jumlah operannya, operator dibagi menjadi tiga jenis, yaitu:

  • Unary – yakni operator yang bekerja pada satu operan, misalnya -5.
  • Binary – yakni operator yang bekerja pada dua operan, misalnya 2 + 3.
  • Ternary – yakni operator yang bekerja pada tiga operan. (Akan dibahas pada bagian selanjutnya).

Dilihat dari kegunaannya, berikut adalah jenis-jenis operator pada bahasa C.

Operator Assignment

Operator Assignment digunakan untuk mengisikan (assign) sebuah nilai ke variabel. Simbol yang biasa digunakan adalah tanda sama dengan =. Contohnya:

int x, y;  
x = 4;  
y = 3;  
x = x + y; // x = 7  
y = x + x; // y = 14 

Operator Aritmatika

Seperti namanya, operator aritmatika melakukan operasi layaknya pada matematika seperti penjumlahan, pengurangan, pembagian dsb. Beberapa operator menggunakan simbol yang sama pada matematika (penjumlahan dengan simbol ‘+’, pengurangan dengan ‘-‘, dst.). Operator-operator aritmatika pada bahasa C adalah sebagai berikut.

Simbol Operasi Contoh
+ Penjumlahan pada dua operan a + b
- Pengurangan pada dua operan a - b
* Perkalian pada dua operan a * b
/ Pembagian pada dua operan a / b
% Menghitung sisa pembagian dua operan (operasi modulo) a % b

Operator Increment dan Decrement

Operator ++ disebut dengan operator increment, sedangkan operator -- merupakan operator decrement. Kedua operator ini digunakan untuk menambah (increment)/mengurangi (decrement) nilai dari suatu variabel sebanyak satu.

Terdapat dua cara untuk menggunakan operator ini.

  • Prefix - yakni dengan meletakkan operator increment/decrement didepan nama variabel.

    int a, b;  
    a = 5;  
    ++a; // Nilai a sekarang adalah 6  
    --a; // Nilai a sekarang adalah 5

    Cara kerja dari operator increment/decrement prefix adalah dengan menambahkan/mengurangi nilai variabel sebanyak satu terlebih dahulu, sebelum operan tersebut digunakan pada operasi lainnya pada sekuens intstruksi yang sama. Untuk lebih jelasnya, perhatikan potongan kode berikut

    int a, b;  
    a = 5;  
    b = ++a; // Nilai b sekarang adalah 6  
    a = --b; // Nilai a sekarang adalah 5 

    Di sini, saat instruksi b = ++a; dieksekusi, yang terjadi pertama kali adalah nilai dari a ditambahkan satu terlebih dahulu, kemudian baru di-assign nilainya ke variabel b.

  • Postfix - yakni dengan meletakkan operator increment/decrement di belakang nama variabel. Cara kerja dari operator increment/decrement postfix berbeda dari prefix. Pada postfix, nilai variabel akan ditambah satu setelah operan digunakan pada operasi lainnya pada sekuens instruksi yang sama. Perhatikan potongan kode berikut.

    int a, b;  
    a = 5;  
    b = a++; // Nilai b sekarang adalah 5  
    a = b--; // Nilai a sekarang adalah 5 

    Di sini, saat instruksi b = a++; dieksekusi, yang terjadi pertama kali adalah nilai dari a akan di-assign terlebih dahulu ke variabel b, kemudian baru ditambahkan satu. Karena itulah variabel b mendapat nilai dari a sebelum terjadi penambahan.

Operator Relasional

Operator Relasional digunakan untuk memeriksa relasi dan membandingkan nilai dari dua operan. Jika benar akan menghasilkan nilai TRUE (direpresentasikan angka 1), jika salah maka akan menghasilkan nilai FALSE (direpresentasikan angka 0).

Berikut adalah operator relasional dalam bahasa C.

Operator Simbol Keterangan Contoh
Sama dengan == Digunakan untuk memeriksa apakah kedua operan memiliki nilai yang sama. 5 == 2 (FALSE)
5 == 5 (TRUE)
Tidak Sama dengan != Digunakan untuk memeriksa apakah kedua operan memiliki nilai yang tidak sama. 5 != 2 (TRUE)
5 != 5 (FALSE)
Lebih besar > Digunakan untuk membandingkan apakah operan pertama lebih besar nilainya dari operan kedua. 5 > 2 (TRUE)
5 > 5 (FALSE)
2 > 4 (FALSE)
Lebih kecil < Digunakan untuk membandingkan apakah operan pertama lebih kecil nilainya dari operan kedua. 5 < 2 (FALSE)
5 < 5 (FALSE)
2 < 4 (TRUE)
Lebih besar sama dengan >= Digunakan untuk membandingkan apakah operan pertama lebih besar atau sama nilainya dari operan kedua. 5 >= 2 (TRUE)
5 >= 5 (TRUE)
2 >= 4 (FALSE)
Lebih kecil sama dengan <= Digunakan untuk membandingkan apakah operan pertama lebih kecil atau sama nilainya dari operan kedua. 5 <= 2 (FALSE)
5 <= 5 (TRUE)
2 <= 4 (TRUE)

Operator Logika

Operator Logika digunakan untuk melakukan tes pada kondisi/ekspresi, apakah kondisi tersebut benar atau salah. Operator logika hanya akan menghasilkan nilai TRUE (jika benar) atau FALSE (jika salah). TRUE direpresentasikan oleh angka 1, sedangkan FALSE oleh angka 0.

Operator-operator logika dalam bahasa C adalah sebagai berikut.

Operator Simbol Keterangan Nilai Kebenaran
Logical NOT ! Operator NOT digunakan untuk membalikkan kondisi, TRUE menjadi FALSE dan FALSE menjadi TRUE. !1 = 0
!0 = 1
Logical AND && Operator AND akan menghasilkan nilai TRUE jika kedua operan mempunyai nilai TRUE. 1 && 1 = 1
0 && 1 = 0
1 && 0 = 0
0 && 0 = 0
Logical OR || Operator OR akan menghasilkan nilai TRUE jika salah satu operan mempunyai nilai TRUE. 1 || 1 = 1
0 || 1 = 1
1 || 0 = 1
0 || 0 = 0

Operator Logika NOT merupakan operator unary yang artinya hanya pada bekerja pada satu operan

Operator logika pada umumnya digunakan bersamaan dengan operator relasional untuk melakukan tes pada ekspresi yang berhubungan dengan kebenaran suatu kondisi. Penggunaan paling umum adalah untuk melakukan percabangan (akan dipelajari di bagian selanjutnya).

Contoh:

int a, b, c, d;  
a = 11;  
b = 24;  
c = 11;  
d = ((a == c) && (b > a));               // 1 (TRUE)  
d = ((a >= b) || (a < c));               // 0 (FALSE)  
d = ((b != b) || (b > c)) && (c == a);   // 1 (TRUE) 

Operator Bitwise

Operator Bitwise, seperti namanya digunakan untuk melakukan operasi pada dua operan dalam skala biner (bilangan basis 2). Sebelum mempelajari lebih lanjut cara kerja operasi bitwise, sebaiknya kamu harus paham terlebih dahulu mengenai bilangan dalam basis biner.

Terdapat 6 jenis operator bitwise, yakni AND, OR, XOR, COMPELEMENT, SHIFT LEFT, dan SHIFT RIGHT. Untuk lebih memahami perbedaan cara kerja operator bitwise, perhatikan tabel berikut.

Operator Simbol Keterangan
Bitwise AND & Mengevaluasi bit dari dua operan. Menghasilkan 1 apabila keduanya 1, jika tidak menghasilkan nilai 0.
Bitwise OR | Mengevaluasi bit dari dua operan. Menghasilkan 1 apabila salah satu nilainya 1, jika keduanya 0, maka menghasilkan nilai 0.
Bitwise XOR ^ Mengevaluasi bit dari dua operan. Menghasilkan 1 apabila bit pada kedua operan nilainya berbeda. Jika sama, maka menghasilkan nilai 0.
Bitwise COMPLEMENT ~ Membalik semua nilai bit, dari 1 menjadi 0 dan 0 menjadi 1 (dalam panjang bit).
Bitwise SHIFT LEFT << Menggeser bit ke kiri sebanyak n (operan kedua).
Bitwise SHIFT RIGHT >> Menggeser bit ke kanan sebanyak n (operan kedua).

Contoh penggunaan operator bitwise:

Misal 12 dan 5. Representasi 12 dan 5 dalam basis biner adalah 12 = (1100) dan 5 = (0101). Maka, operasi bitwise adalah sebagai berikut.

  • Bitwise AND

    12 = (1100)
     5 = (0101)
    ------------ &
     4 = (0100)
    
  • Bitwise OR

    12 = (1100)
     5 = (0101)
    ------------ | 
    13 = (1101)
    
  • Bitwise XOR

    12 = (1100)
     5 = (0101)
    ------------ ^
     9 = (1001)
    
  • Bitwise COMPLEMENT

     12 = (1100)
    ~12 = (0011)
    
  • Bitwise SHIFT LEFT

    Misal kita hendak menggeser bit bilangan 13 ke kiri sebanyak 2, maka 13 << 2.

         13 = (001101)
    13 << 2 = (110100) 
    

    Bisa diperhatikan, bit paling kanan setelah digeser akan diisi oleh 0. Maka hasil dari 13 << 2 = 52.

  • Bitwise SHIFT LEFT

    Misal kita hendak menggeser bit bilangan 13 ke kanan sebanyak 2, maka 13 >> 2.

         13 = (001101)
    13 >> 2 = (000011)
    

    Bisa diperhatikan, bit paling kiri setelah digeser akan diisi oleh 0. Maka hasil dari 13 >> 2 = 3.

Operator Gabungan

Operator Gabungan adalah operator yang terdiri dari gabungan dua operator. Tujuan dari operator gabungan adalah untuk mempersingkat penulisan kode. Berikut adalah operator gabungan dalam bahasa C.

Operator Contoh Ekuivalen Dengan
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
&= a &= b a = a & b
|= a |= b a = a | b
^= a ^= b a = a ^ b
>>= a >>= b a = a >> b
<<= a <<= b a = a << b

Operator Lain

Selain operator-operator yang telah dijelaskan sebelumnya, terdapat beberapa operator lain yang terdapat pada bahasa C. Berikut penjelasannya.

Operator sizeof()

Walaupun mempunyai bentuk seperti sebuah fungsi, namun dalam standardisasi bahasa C menganggap operator sizeof() sebagai operator. Kegunaan dari operator ini adalah untuk mengetahui besarnya alokasi memori sebuah operan (berupa variabel atau tipe data) dalam satuan byte.

Contoh:

sizeof(int);

Operator Address-of (&)

Operator ini mengembalikan alamat memori dari sebuah operan berupa variabel.

Contoh:

int var;
printf("%d\n", &var);

Operator Dereference (*)

Berbeda dari operator address-of (&), operator deference (*) mengembalikan nilai dari variabel pointer (akan dijelaskan pada modul pointer).

Meskipun menggunakan simbol yang sama seperti operator perkalian, operator deference mempunyai fungsi yang benar-benar berbeda dari operator perkalian.

Operator Kondisional (? :)

Operator kondisial merupakan satu-satunya operator ternary (bekerja pada tiga operan) dalam bahasa C. Fungsi dari operator kondisional layaknya percabangan menggunakan if - else (akan dijelaskan pada modul percabangan).

Operator Koma (,)

Tanda koma (,) sebagai operator dalam bahasa C merupakan binary operator yang akan mengevaluasi operan pertama, kemudian akan membuang hasilnya. Lalu mengevaluasi operan kedua dan akan mengembalikan nilainya.

int number = (5, 23);   // number bernilai 23, bukan 5

Selain berfungsi sebagai operator, tanda koma (,) juga berfungsi sebagai separator (pemisah) antar statement. Misalkan saat deklarasi lebih dari satu variabel.

int var1, var2, var3;   
// Menggunakan tanda koma untuk memisahkan deklarasi tiap variabel

Tidak semua statement dapat dipisahkan oleh tanda koma.

Operator Subscript ([])

Penggunaan paling umum operator ini adalah untuk melakukan pengaksesan terhadap elemen suatu array (akan dibahas pada modul array).

Operator lain yang belum ter-cover pada modul ini akan dibahas pada modul-modul selanjutnya.

< Kembali ke Daftar Isi

Clone this wiki locally