1 Pengenalan Bahasa C - bielnzar/Dasar-Pemrograman-C GitHub Wiki
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!
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:
- Bagian Include
- Blok Fungsi Main
Mari kita bahas lebih detail:
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() 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.
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.
Blok kode adalah kumpulan statement atau ekspresi. Blok kode pada program C dibungkus dengan kurung kurawal { ... }
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.
Komentar adalah bagian yang tidak akan dieksekusi oleh komputer. Komentar bisanya digunakan untuk membuat keterangan pada kode program.
Contoh Komentar:
// ini adalah komentarKita 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 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 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:
- Identifier bukan merupakan keyword.
- Identifier hanya boleh terdiri dari huruf lowercase, huruf uppercase, digit, dan simbol underscore (
_). - Identifier tidak boleh mengandung whitespace.
- Identifier harus dimulai dengan huruf atau simbol underscore. Tidak boleh dimulai dengan digit/angka.
- Bersifat case-sensitive, artinya identifier
variableberbeda denganvAriaBle.
Variabel adalah sebuah tempat menyimpan sebuah nilai. Sementara tipe data adalah jenis nilai yang akan tersimpan dalam variabel.
Ada beberapa aturan penulisan variabel yang harus kamu ketahui:
- Nama variabel tidak boleh didahului dengan simbol dan angka.
- Nama variabel tidak boleh menggunakan kata kunci yang sudah ada pada bahasa C, contoh:
if,int,void, dll. - Nama variabel bersifat case sensitive, artinya huruf besar dan kecil dibedakan, contoh:
namadanNamaadalah dua variabel yang berbeda. - Disarankan menggunakan underscore untuk nama variabel yang terdiri dari dua suku kata, contoh:
nama_lengkap.
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 xJika ingin mendeklarasikan lebih dari satu variabel dengan tipe yang sama, bisa menggunakan operator koma (,).
<tipe_data> <variabel1>, <variabel2>, ... dst;
int x, y;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.
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;#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;
}Sesuai namanya, tipe data dasar adalah tipe data yang paling dasar dalam bahasa pemrograman C.
- Char: adalah tipe data yang berisi 1 huruf atau 1 karakter;
- Integer: adalah tipe data yang berupa angka;
- Float: adalah tipe data yang berupa bilangan pecahan
- 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 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 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 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.
#include <stdio.h>
int main(){
int usia = 19;
float berat = 65.3;
double tinggi = 178.43;
char jenis_kelamin = 'L';
}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():
"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)
Fungsi scanf()
adalah fungsi untuk mengambil input dari keyboard. Fungsi ini memiliki format seperti fungsi printf().
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:
3Output:
n mempunyai nilai = 3Operator 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 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 = 14Seperti 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 ++ 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 5Di 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 5Di 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;
}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 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 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, 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.
12 = (1100)
5 = (0101)
------------ &
4 = (0100)
12 = (1100)
5 = (0101)
------------ |
13 = (1101)
12 = (1100)
5 = (0101)
------------ ^
9 = (1001)
12 = (1100)
~12 = (0011)
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.
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 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 |
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 |
- “Modul 0: Pengenalan Pemrograman”. github.com/AlproITS/DasarPemrograman/wiki/Modul-0:-Pengenalan-Pemrograman
- “Belajar Pemrograman C #03: Struktur Dasar dan Aturan Penulisan Program C yang Harus dipahami”. www.petanikode.com/c-syntak/
- “Belajar Pemrograman C #04: Mengenal Fungsi Input dan Output pada C”. www.petanikode.com/c-input-output/
- “Belajar Pemrograman C #05: Mengenal Variabel, Tipe Data, Konstanta”. www.petanikode.com/c-variabel/
- “Belajar Pemrograman C #06: Enam Macam Operator yang Harus diketahui pada C”. www.petanikode.com/c-operator/
© 2026 CSSMoRA ITS.