Sebelum membuat program yang lebih kompleks, yang melibatkan ekspresi, struktur kontrol keputusan, atau struktur kontrol perulangan, kalian perlu memahami makna dari berbagai komponen penyusun bahasa C, di antaranya meliputi kata kunci, identier, variabel, tipe data, dan konstanta.
Kata kunci merupakan kata yang telah memiliki makna khusus yang tidak dapat diubah oleh pemrograman. Dengan kata lain, kalian tidak dapat menggunakan sebagai suatu identier. Terdapat 32 kata kunci standar pada bahasa C, yaitu:
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, oat, short, dan unsigned
Bayangkan, dengan hanya 32 kata kunci, kalian bisa menulis program apa saja dalam bahasa C!
Identifier adalah nama unik yang dapat kalian ingat yang diberikan ke dalam entitas program C, seperti variabel dan fungsi. Identier terdiri atas
serangkaian karakter dengan aturan berikut.
a. Tidak boleh sama dengan kata kunci (keyword) dalam bahasa C.
b. Disusun dari kombinasi huruf (besar dan kecil), angka, dan underscore ”_”.
c. Harus dimulai dengan huruf atau underscore.
d. Bersifat case-sensitive, atau sensitif terhadap huruf besar atau kecil (kapitalisasi karakter). Dengan kata lain, sisi dan Sisi akan dianggap sebagai dua identifier yang berbeda.
Praktik Baik Pemrograman
Walaupun dengan aturan di atas kalian dapat membuat identifier dengan sangat bebas, keterbacaan kode program menjadi penting. Beberapa praktik baik yang perlu kalian ketahui untuk menghindari kebingungan dalam membaca dan menulis kode ialah seperti berikut.
Nama yang diawali oleh underscore digunakan untuk keperluan tertentu dan tidak seharusnya digunakan dalam membuat program di unit ini.
Nama variabel dan fungsi harus ditulis dengan huruf non-kapital. Akan tetapi, apabila terdiri atas dua atau lebih kata, kalian dapat menggunakan teknik menulis dengan standar camel case. Huruf awal kata, selain kata pertama, ditulis menggunakan huruf kapital. Contoh: totalHargaBarang, namaMahasiswa.
Hindari menggunakan identifier yang sangat mirip dalam satu kode program. Misalnya, totalHarga dengan . Hindari juga dua atau lebih variabel yang hanya berbeda di kapitalisasi seperti totalharga dan totalHarga.
Hindari identifier yang terlihat mirip, misalnya karakter ‘I’, ‘1’, dan ‘l’terlihat sangat mirip satu sama lain. Catatan: karakter yang disebutkanialah huruf i kapital, angka 1, dan huruf L non-kapital.
Identier haruslah bersifat mnemonic. Untuk variabel, artinya identififier variabel tersebut harus menunjukkan isi dari variabel tersebut. Untuk fungsi, identifier menunjukkan apa yang dilakukan oleh fungsi tersebut
Dalam dunia pemrograman, ada beberapa nama variabel yang menjadi kebiasaan untuk dipakai, misalnya nama variabel untuk mengunjungi elemen tabel, dipakai indeks i, j, dan k.
Konstanta dinamai dengan huruf kapital. Misalnya, PI
Komputer dapat mengolah data yang beragam. Pada dasarnya, data yang diolah oleh komputer, baik berupa numerik ataupun karakter, akan disimpan dalam bentuk biner. Oleh karena itu, nilai yang kalian masukkan dalam komputer pastilah akan disimpan dalam bentuk biner. Program perlu mengetahui bagaimana bilangan biner dibaca sehingga diperlukan suatu mekanisme untuk memberi tahu program tentang data yang kita simpan pada variabel tersebut. Hal ini diakomodir melalui tipe data. Suatu tipe data akan memiliki nama tipe, jenis data yang disimpan, dan rentang yang berbeda. Pada bahasa C, terdapat beberapa tipe data dasar yang dapat digunakan
Perhatikan bahwa rentang yang diberikan memungkinkan nilai negatif hingga positif, atau disebut tipe data signed. Apabila kalian menambahkan kata kunci unsigned di depan tipe data, tipe data tersebut hanya akan menampung bilangan positif dengan rentang dari 0 hingga 2jumlah bit - 1.
Praktik Baik Pemrograman
Gunakan tipe data yang sesuai dengan kebutuhan kalian. Sebagai contoh, saat mengolah data usia manusia dalam satuan tahun, kalian cukup menggunakan tipe data short yang memerlukan memori lebih kecil. Ketika kalian nanti membuat program yang mengolah dan menyimpan data dengan jumlah yang sangat besar, praktik ini dapat membuat program kalian berjalan dengan kebutuhan memori yang lebih efisien.
Pada matematika, kalian mengenal variabel sebagai sebuah wadah untuk menyimpan suatu nilai. Variabel pada program memiliki fungsi yang sama. Nilai yang diberikan pada sebuah variabel akan disimpan di memori komputer. Komputer memberikan alamat pada lokasi memori tersebut yang sulit diingat oleh manusia. Oleh karena itu, variabel diberikan nama simbolik yang mudah untuk diingat oleh kalian dengan menggunakan identifier.
Dalam bahasa C, variabel perlu dideklarasikan dengan memberikan tipe data dan identiers sebelum dapat digunakan. Deklarasi dapat dilakukan dengan menggunakan pernyataan berikut:
<tipe_data><nama_variabel>;
Pada saat deklarasi, variabel juga dapat diberikan nilai awal, misalnya dalam bentuk:
<tipe_data><nama_variabel> = <nilai awal>;
Variabel dengan tipe yang sama dapat dideklarasikan secara ringkas seperti:
<tipe_data><nama_variabel1>, <nama_variabel2>;
Beberapa contoh untuk mendeklarasikan variabel dapat dilihat pada Tabel
Deklarasi secara ringkas misalnya dapat dilakukan seperti berikut:
int panjang = 1, lebar = 2, luas;
oat alas, sisi, volume;
Tempat deklarasi variabel akan berpengaruh pada penggunaan variabel tersebut. Apabila deklarasi variabel dilakukan di dalam sebuah fungsi, variabel tersebut hanya dapat digunakan di dalam fungsi tersebut. Variabel seperti ini disebut variabel lokal. Apabila deklarasi dilakukan di luar fungsi, variabel tersebut akan dapat diakses di bagian program mana pun. Variabel ini disebut variabel global.
Berbeda dengan variabel yang nilainya dapat berubah, konstanta tidak dapat diubah. Saat dideklarasikan, nilai dari konstanta diberikan dan tidak dapat diubah kembali. Apabila kalian memaksa mengubah konstanta, kompilator akan memberikan pesan kepada kalian. Penggunaan konstanta yang lazim ialah untuk menyimpan nilai konstan seperti pi (π), rho (ρ), dan konstanta lainnya yang lazim digunakan.
Konstanta dapat dideklarasikan seperti variabel, dengan menambah kata kunci const di depan tipe data. Nilai awal harus langsung diberikan pada saat deklarasi. Misalnya, deklarasi konstanta pi dapat dilakukan sebagai berikut: const oat PI = 3.14
Untuk dapat membantu manusia, program harus dilengkapi dengan kemampuan berkomunikasi. Ada banyak cara untuk berkomunikasi lewat antarmuka pengguna (user interface), tetapi bentuk komunikasi dasar yang perlu kalian kuasai komunikasi lewat command line interface (CLI). Lewat CLI, kalian dapat
berkomunikasi dengan sebuah program menggunakan teks, dan program pun akan merespons kalian dengan menggunakan teks. Dengan kata lain, interaksi menggunakan CLI sangat bergantung pada kemampuan program untuk membaca data yang diberikan oleh pengguna dan menuliskan hasil pekerjaan.
Agar dapat membaca dan menulis, program yang kalian buat perlu menggunakan header stdio.h yang memuat fungsi masukan-keluaran standar menggunakan CLI. Dua fungsi utama yang dapat digunakan ialah scanf untuk membaca dan printf untuk menulis. Untuk lebih jelasnya, perhatikanlah contoh program berikut. Pada program baca tulis berikut, kalian akan memerintahkan komputer untuk membaca suatu bilangan dan menuliskannya kembali.
/* Program Baca Tulis 3 */
#include<stdio.h>
int main(){
int bilangan;
scanf("%d", &bilangan);
printf("Bilangan yang dibaca bernilai: ");
printf("%d.\n", bilangan);
return 0;
}
Pada baris keempat, program memanggil fungsi scanf untuk membaca masukan dari pengguna. Pada saat baris ini dieksekusi, program akan berhenti hingga pengguna memasukkan suatu bilangan dan menekan tombol enter Perhatikan bahwa pada baris tersebut, fungsi scanf menerima dua buah parameter, yaitu %d yang merupakan spesikasi format (format specifier) dan & bilangan yang merupakan variabel untuk menampung nilai yang dibaca.
Artinya, pada saat kalian menekan enter, program akan membaca nilai 10 yang kalian masukkan sebagai sebuah nilai bertipe data int, dan akan
menyimpannya ke variabel bilangan. Di depan bilangan, terdapat tanda ampersand (&) yang wajib digunakan untuk melakukan pembacaan. Makna dari simbol & akan dijelaskan lebih detail pada kesempatan lain. Setiap tipe data memiliki spesikasi format yang dapat digunakan untuk menjelaskan jenis data kepada program. Ingat, program membaca dan menyimpan semua data sebagai bilangan biner. Spesikasi format yang digunakan untuk tipe data pada bahasa C dapat dilihat pada Tabel
Baris kelima dan keenam adalah pernyataan untuk menulis menggunakan fungsi printf. Pada baris kelima, kalian memerintahkan program untuk mencetak suatu kalimat yang diapit dengan tanda petik ganda. Pada baris keenam, kalian memerintahkan program untuk mencetak nilai dari variabel bilangan. Mirip seperti fungsi scanf, kalian menemukan adanya spesikasi format dan variabel. Bedanya, di depan variabel, tidak perlu ada tanda
ampersand. Saat dipanggil, program akan mencetak nilai dari variabel bilangan dengan format yang diberikan. Hanya saja, ada karakter baru yang muncul, yaitu \n. Ini adalah escape sequence yang digunakan untuk membuat garis baru, persis seperti ketika kalian menekan tombol enter pada aplikasi pengolah kata. Data yang ditulis setelah \n akan dicetak di baris yang baru oleh program. Ada beberapa escape sequence lain yang dapat digunakan, yaitu:
/* Program Baca Tulis 3 */
#include<stdio.h>
int main(){
int bilangan;
scanf("%d", &bilangan);
printf("Bilangan yang dibaca bernilai: ");
printf("%d.\n", bilangan);
return 0;
}
Pada baris keempat, program memanggil fungsi scanf untuk membaca masukan dari pengguna. Pada saat baris ini dieksekusi, program akan berhenti hingga pengguna memasukkan suatu bilangan dan menekan tombol enter. Perhatikan bahwa pada baris tersebut, fungsi scanf menerima dua buah
parameter, yaitu %d yang merupakan spesikasi format (format specifier) dan &bilangan yang merupakan variabel untuk menampung nilai yang dibaca.
Artinya, pada saat kalian menekan enter, program akan membaca nilai 10 yang kalian masukkan sebagai sebuah nilai bertipe data int, dan akan
menyimpannya ke variabel bilangan. Di depan bilangan, terdapat tanda ampersand (&) yang wajib digunakan untuk melakukan pembacaan. Makna dari
simbol & akan dijelaskan lebih detail pada kesempatan lain. Setiap tipe data memiliki spesifikasi format yang dapat digunakan
untuk menjelaskan jenis data kepada program. Ingat, program membaca dan menyimpan semua data sebagai bilangan biner. Spesifikasi format yang
digunakan untuk tipe data pada bahasa C dapat dilihat pada Tabel
Baris kelima dan keenam adalah pernyataan untuk menulis menggunakan fungsi printf. Pada baris kelima, kalian memerintahkan program untuk
mencetak suatu kalimat yang diapit dengan tanda petik ganda. Pada baris keenam, kalian memerintahkan program untuk mencetak nilai dari variabel
bilangan. Mirip seperti fungsi scanf, kalian menemukan adanya spesikasi format dan variabel. Bedanya, di depan variabel, tidak perlu ada tanda
ampersand. Saat dipanggil, program akan mencetak nilai dari variabel bilangan dengan format yang diberikan. Hanya saja, ada karakter baru yang muncul, yaitu \n. Ini adalah escape sequence yang digunakan untuk membuat garis baru, persis seperti ketika kalian menekan tombol enter pada aplikasi pengolah kata. Data yang ditulis setelah \n akan dicetak di baris yang baru oleh program.
Ada beberapa escape sequence lain yang dapat digunakan, yaitu:
\n (newline)
\t (tab)
\v (vertical tab
\f (new page)
\b (backspace)
\r (carriage return)
\n (newline)
\a (beep, bell)
\\ (garis miring)
\" (tanda kutip ganda)
\` (tanda kutip
Tentunya, kalian juga menggunakan fungsi printf untuk mencetak tipe data lain, misalnya bilangan riil. Pada bilangan riil, kalian dapat membatasi jumlah digit di belakang desimal dengan memodikasi spesikasi format. Perhatian kode berikut yang akan menampilkan angka 12.345 ke layar.
/* Program Cetak Desimal */
#include <stdio.h>
int
main ()
{
float x = 12.3456789;
printf ("%.3f\n", x);
return 0;
}
Kalian juga dapat membaca atau menulis dua atau lebih nilai sekaligus seperti pada contoh berikut
/* Program Cetak Bilangan Bulat dan Desimal */
#include <stdio.h>
int main() {
int a, b;
oat c;
scanf("%d %d %f", &a, &b, &c);
printf("%d %d %.3f\n", a, b, c);
return 0;
}
Ketikkan kode tersebut, berikan masukan 10 10 10.1234, dan perhatikan hasilnya.
Praktik Baik Pemrograman
Seiring dengan makin kompleksnya program yang kalian buat, ada beberapa
praktik baik yang dapat kalian lakukan.
Belajar menulis kode program memerlukan kemampuan bereksperimen dan mencoba hal baru. Karena keterbatasan halaman, buku ini tidak mungkin memberikan contoh selengkap mungkin untuk mencoba berbagai kemungkinan dalam menulis kode program. Oleh karena itu, kalian perlu melakukan eksperimen dan mencoba memodikasi kode program yang telah diberikan. Kalian dapat membaca dokumentasi bahasa C yang dapat diakses di devdocs.io/c ketika menemukan suatu konsep ingin kalian pelajari lebih lanjut.
Jangan takut apabila program kalian gagal berjalan karena hal itu sangat wajar ketika belajar menulis kode program. Bahkan, pemrogram senior pun masih bisa melakukan kesalahan. Jadikan hal tersebut sebagai pemacu untuk mencari tahu hal yang membuat program kalian gagal berjalan. Dari situ, kalian akan menambah pengalaman dan di masa depan tidak akan kembali melakukan kesalahan yang sama.
Buat kode program kalian lebih mudah dibaca dengan menggunakan whitespace atau ruang kosong. Whitespace adalah istilah bagi karakter yang tidak tampak di layar (contoh: spasi, tab, dan newline). Whitespace dapat digunakan untuk membuat kode kalian lebih mudah dibaca dengan
memberikan jarak pada kode. Jarak biasanya diberikan antara kumpulan baris kode yang memiliki peran berbeda. Contoh-contoh kode program yang diberikan pada unit ini disajikan dengan menggunakan whitespace yang dapat kalian adopsi.
Semangat terus untuk bereksperimen
Praktik Baik menulis dan memperbaiki program
Problem 1: Belajar Baca Tulis (Tingkat Kesulitan: ⭐⭐)
Deskripsi Soal:
Saatnya kalian berlatih untuk menulis kode program. Kalian akan membuat program untuk membaca tiga jenis bilangan dan mencetaknya kembali ke layar dengan format yang diberikan.
Format Masukan:
Satu baris yang berisi tiga buah bilangan yang dipisahkan oleh spasi. Bilangan pertama merupakan bilangan bulat positif dengan nilai maksimum 10,000.
Bilangan kedua merupakan bilangan riil positif dengan nilai maksimum 10.0000.
Bilangan ketiga merupakan bilangan bulat positif dengan nilai maksimum 100.
Format Keluaran:
Ada tiga baris. Baris pertama berisi bilangan pertama. Baris kedua berisi bilangan kedua dengan dua bilangan di belakang desimal. Baris ketiga berisi bilangan ketiga.
Contoh input dan output:
Input:
123 4.56 78
Output:
123
4.56
78
Catatan : Bilangan pertama kedua dan ketiga pada saat di input dipisahkan dengan spasi
Problem 2: Bantulah Intan! (Tingkat Kesulitan: ⭐⭐⭐ )
Intan ingin membuat program untuk mencetak kalimat berikut ke layer. Andi berkata, "Satu, dua, tiga!". Lalu, Andi pun menendang bola tersebut.
Akan tetapi, Intan tidak berhasil mencetak kalimat tersebut ke layar dengan persis sama. Berikut ini program yang ditulis oleh Intan
#include <stdio.h>
int main(){
printf("Andi berkata, "Satu, dua, tiga!".");
printf("Lalu, Andi pun menendang bola tersebut.\n");
return 0;
}
Perbaikilah program tersebut hingga berhasil mencetak kalimat yang benar!
Problem 3: Salah Baca (Tingkat Kesulitan: ⭐⭐)
Temukanlah kesalahan pada kode program berikut, kemudian perbaikilah kode berikut hingga dapat menghasilkan jawaban yang benar
#include <stdio.h>
int main(){
scanf("%c %c”, a, b);
printf("Bilangan pertama: %c\d", a);
printf("Bilangan kedua: %c\d", b);
return 0;
}