1 Pengenalan Bahasa C - bielnzar/Dasar-Pemrograman-C GitHub Wiki

1 - Pengenalan Bahasa C

Program "Hello, world."

Mari kita mulai dengan membuat program sederhana, yakni program untuk menampilkan kalimat “Hello, world!” pada layar (konsol).

Buatlah program baru dengan format penamaan (nama_file).c, ex: hello.c

kemudian isi dengan kode berikut:

#include <stdio.h>

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

Salinlah kode di atas pada IDE, kemudian compile dan jalankan. Proses compilation akan menghasilkan output sebagai berikut:

Hello, world!

Struktur Dasar Program C

Setiap kita ingin membuat program C, kita harus menuliskan struktur seperti berikut ini :

#include <stdio.h>

int main(){
    // kode atau logika program kita di sini
    return 0;
}

Ini adalah struktur dasar yang wajib dipahami.

Kalau kita perhatikan, struktur program tersebut dibagi menjadi dua bagian utama:

  1. Bagian Include
  2. Blok Fungsi Main

Mari kita bahas lebih detail:

Header File

Baris 1 pada kode di atas disebut dengan preprocessor directive. Preprocessor yang digunakan dalam hal ini adalah #include.

Preprocessor #include menjelaskan bahwa program tersebut menyertakan file header <stdio.h>. File header tersebut merupakan library bawaan C yang berisi fungsi-fungsi penting yang dibutuhkan oleh program, misalnya pada kasus diawal modul, program membutuhkan fungsi printf() untuk mencetak kalimat “Hello, world!”. Tanpa adanya library, program tersebut tidak akan bisa di-compile.

Fungsi main()

Fungsi main() pada kode tersebut ditunjukan pada baris ke 3 hingga baris ke 7.

Apa itu Fungsi main()?

Fungsi main() adalah fungsi utama dalam program. Fungsi ini akan dieksekusi pertama kali saat program dijalankan.

Karena itu, kita harus menuliskan logika program di dalam fungsi ini.

Whitespace

Dapat diperhatikan pada kode bahwa baris 2 dan 4 kosong (tidak terdapat karakter apapun). Ini disebut dengan whitespace. Whitespace adalah area kosong pada kode, dan biasanya dtujukan agar kode mudah dibaca.

Terdapat tiga jenis whitespace, yakni space, tab, dan new line. Baris 2 dan 4 adalah contoh dari new line.

Penulisan Blok Kode

Blok kode adalah kumpulan statement atau ekspresi. Blok kode pada program C dibungkus dengan kurung kurawal { ... }

Penulisan Statement

Statemen adalah perintah-perintah atau fungsi untuk melakukan sesuatu.

Contoh:

printf("Hello World!");

Artinya, kita menyuruh komputer untuk mencetak teks Hello World! ke console.

Perhatikan juga, setiap statement di dalam program C wajib diakhiri dengan titik koma (;), kalau tidak maka program akan error.

Penulisan Komentar

Komentar adalah bagian yang tidak akan dieksekusi oleh komputer. Komentar bisanya digunakan untuk membuat keterangan pada kode program.

Contoh Komentar:

// ini adalah komentar

Kita bisa menggunakan garis miring ganda (//) untuk membuat komentar satu baris dan tanda (/**/) untuk membuat komentar beberapa baris.

Contoh:

#include <stdio.h>

int main(){
    // ini adalah komentar satu baris
    printf("Hello World!");

    /*
        ini adalah komentar
        yang lebih
        dari satu baris
    */
    return 0;
}

Keyword dan Identifier

Keyword

Keyword merupakan kata khusus yang telah dipesan (reserved) pada bahasa pemograman. Kata-kata khusus tersebut mempunyai makna tersendiri bagi compiler, dan kata-kata tersebut merupakan bagian dari sintaks dan tidak dapat digunakan sebagai identifier. Berikut adalah daftar keyword pada bahasa C.

auto double int struct
break else long switch
case enum register typedef
char extern return union
continue for signed void
do if static while
default goto sizeof volatile
const float short unsigned

Identifier

Identifier merujuk kepada penamaan sebuah entitas, seperti pada variabel, fungsi, structures dan lain-lain. Karena identifier menamai sebuah entitas, maka nama dari identifier harus unik (dua entitas tidak boleh mempunyai nama identifier yang sama).

Aturan penamaan identifier:

  1. Identifier bukan merupakan keyword.
  2. Identifier hanya boleh terdiri dari huruf lowercase, huruf uppercase, digit, dan simbol underscore (_).
  3. Identifier tidak boleh mengandung whitespace.
  4. Identifier harus dimulai dengan huruf atau simbol underscore. Tidak boleh dimulai dengan digit/angka.
  5. Bersifat case-sensitive, artinya identifier variable berbeda dengan vAriaBle.

Apa itu Variabel dan Tipe Data?

Variabel adalah sebuah tempat menyimpan sebuah nilai. Sementara tipe data adalah jenis nilai yang akan tersimpan dalam variabel.

Analogi Variabel

Variabel

Aturan Penulisan Variabel pada C

Ada beberapa aturan penulisan variabel yang harus kamu ketahui:

  1. Nama variabel tidak boleh didahului dengan simbol dan angka.
  2. Nama variabel tidak boleh menggunakan kata kunci yang sudah ada pada bahasa C, contoh: if, int, void, dll.
  3. Nama variabel bersifat case sensitive, artinya huruf besar dan kecil dibedakan, contoh: nama dan Nama adalah dua variabel yang berbeda.
  4. Disarankan menggunakan underscore untuk nama variabel yang terdiri dari dua suku kata, contoh: nama_lengkap.

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>

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>;

int x = 10;

Contoh Program dengan Variabel

#include <stdio.h>

int main(){
    // membuat variabel dengan tipe data integer
    int berat;
    // membuat variabel dan langsung mengisinya
    int tinggi = 178;
    // mengisi nilai ke variabel
    berat = 54;
    return 0;
}

TIPE DATA

Tipe Data Dasar pada C

Sesuai namanya, tipe data dasar adalah tipe data yang paling dasar dalam bahasa pemrograman C.

Pembagian Tipe Data
  1. Char: adalah tipe data yang berisi 1 huruf atau 1 karakter;
  2. Integer: adalah tipe data yang berupa angka;
  3. Float: adalah tipe data yang berupa bilangan pecahan
  4. Double: adalah tipe data sama seperti float, namun double memiliki ukuran penyimpanan yang lebih besar dibandingkan float.

Tipe data dasar diatas memiliki panjang dan ukuran, perhatikan tabel berikut.

Tipe Data Ukuran Panjang Contoh
char 1 byte -128 — 127 atau 0 — 255 'A', 'a', '3'
int 2 byte -2,147,483,648 — 2,147,483,647 32, 1, 4
float 4 byte 1.2E-38 — 3.4E+38 4.3, 2.2, 6.0
double 8 byte 2.3E-308 — 1.7E+308 4.2, 4.22, 3.2

Format penulisan koma untuk tipe data float dan double menggunakan tanda titik, mengikuti format internasional.

Jika kamu menulis seperti ini 2,5 maka akan salah. Penulisan yang benar adalah 2.5.

Lalu untuk penulisan tipe data char harus diapit dengan tanda petik.

Mengapa?

Karena kalau misalnya karakter itu adalah spasi tanpa tanda petik kita tidak akan bisa mengisinya dengan karakter spasi.

Tipe Bilangan Bulat (integer)

Tipe Data Memori (Byte) Jangkauan Nilai Format Specifier
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.

Tipe Bilangan Real (floating)

Tipe Data Memori (Byte) Jangkauan Nilai Format Specifier
float 4 1.2E-38 — 3.4E+38 %f
double 8 2.3E-308 — 1.7E+308 %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

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.

Contoh Program:

#include <stdio.h>

int main(){
    int usia = 19;
    float berat = 65.3;
    double tinggi = 178.43;
    char jenis_kelamin = 'L';
}

Input dan Output Dasar

Output Dasar

Fungsi printf()

merupakan fungsi untuk menampilkan output ke layar komputer. Fungsi ini terdapat pada library stdio.h.

Oleh sebab itu, ketika kita diharuskan untuk menuliskan #include <stdio.h> di bagian atas program agar bisa menggunakan fungsi ini.

Berikut ini struktur dasar fungsi printf():

Struktur Dasar printf()

"format" adalah sebuah teks (string) untuk ditampilkan. Lalu tanda ... akan berisi sebuah variabel atau nilai untuk ditampilkan berdasarkan format yang diberikan pada teks "format".

Mari kita lihat contohnya:

#include <stdio.h>

int main(){
    int usia = 19;
    float berat = 65.3;
    double tinggi = 178.43;
    char jenis_kelamin = 'L';
    printf("Usia: %i tahun\n", usia);
    printf("Tinggi: %.2f cm\n", tinggi);
    printf("Berat: %.2f Kg\n", berat);
    printf("Jenis kelamin: %c\n", jenis_kelamin);
    return 0;
}

\n adalah simbol untuk membuat baris baru (new line)

Input Dasar

Fungsi scanf()

adalah fungsi untuk mengambil input dari keyboard. Fungsi ini memiliki format seperti fungsi printf().

Struktur Dasar scanf()

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

Operator

Operator adalah sebuah simbol yang digunakan untuk melakukan operasi tertentu.

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.

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.

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.

Untuk lebih jelasnya, perhatikan and cermati code berikut.

#include <stdio.h>

int main() {
    int a = 5;
    int b = 5;
    int c;
    int d;
    // Prefix Increment
    // Pertama, nilai a ditambahkan, kemudian nilai baru dari a digunakan
    c = ++a;
    printf("Prefix Increment: a = %d, c = %d\n", a, c); // a = 6, c = 6
    // Postfix Increment
    // Pertama, nilai b digunakan dalam ekspresi, kemudian b ditambahkan
    d = b++;
    printf("Postfix Increment: b = %d, d = %d\n", b, d); // b = 6, d = 5
    // Resetting values for demonstration
    a = 5;
    b = 5;
    // Prefix Decrement
    // Pertama, nilai a dikurangi, kemudian nilai baru dari a digunakan
    c = --a;
    printf("Prefix Decrement: a = %d, c = %d\n", a, c); // a = 4, c = 4
    // Postfix Decrement
    // Pertama, nilai b digunakan dalam ekspresi, kemudian b dikurangi
    d = b--;
    printf("Postfix Decrement: b = %d, d = %d\n", b, d); // b = 4, d = 5
    return 0;
}

Hasil Output

Menjalankan kode di atas akan menghasilkan output berikut:

Prefix Increment: a = 6, c = 6
Postfix Increment: b = 6, d = 5
Prefix Decrement: a = 4, c = 4
Postfix Decrement: b = 4, d = 5

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).

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, 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).

Agar lebih memahaminya, perhatikan penggunaan Operator Bitwise pada contoh berikut.

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 RIGHT

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

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

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 ^= 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.

Nama Operator Simbol Keterangan
Alamat memori & untuk mengambil alamat memori
Pointer * untuk membuat pointer
Ternary ? : untuk membuat kondisi
Increment ++ untuk menambah 1
Decrement -- untuk mengurangi 1

Referensi


© 2026 CSSMoRA ITS.

⚠️ **GitHub.com Fallback** ⚠️