Bahasa C merupakan bahasa yang terstruktur. Beberapa struktur dasar pada program bahasa C telah terlihat pada program yang kalian tulis sebelumnya.
#include<stdio.h>
int main(){
printf("Halo Dunia!\n");
return 0;
}
Baris pertama merupakan suatu pernyataan yang digunakan untuk memasukan sebuah header file yang bernama stdio.h. Header file merupakan kumpulan fungsi-fungsi dasar yang dikelompokkan berdasarkan kegunaannya dan dapat digunakan untuk membantu kalian membuat program. Pada kode di atas, header file yang digunakan ialah stdio.h yang berisi fungsi-fungsi terkait masukan dan keluaran standar (atau standard input output). Dengan menggunakan stdio.h, program yang kalian buat dapat membaca dan menulis data.
Pada baris 2-5, kalian menemukan sebuah blok program yang merupakan implementasi suatu fungsi bernama main. Fungsi ini merupakan fungsi yang akan dijalankan pertama kali pada saat program dijalankan. Isi dari blok fungsi tersebut diapit dengan tanda kurung kurawal. Di dalam fungsi ini, pada baris 3, terdapat pemanggilan sebuah fungsi bernama printf
yang digunakan untuk mencetak suatu data ke layar. Dalam hal ini, data yang ditampilkan ialah sebuah kalimat “Halo Dunia!\n” yang diberikan pada parameter fungsi tersebut. Karakter \n yang ada pada kalimat tersebut akan dicetak oleh program sebagai baris baru (newline), seperti jika kalian menekan tombol enter pada papan ketik kalian.
Pada baris keempat, terdapat sebuah pernyataan return 0
. Penjelasan mengenai fungsi pernyataan ini cukup berat untuk dijelaskan pada bagian ini. Singkatnya, pernyataan ini merupakan tanda bagi sistem operasi untuk mengecek selesainya program dengan benar. Apabila program berjalan dan berhenti dengan benar, sistem operasi akan memperoleh nilai 0. Nilai selain 0 akan menjadi tanda bahwa program tidak berhenti dengan benar. Untuk saat ini, yang perlu kalian ketahui ialah pernyataan ini perlu diletakkan di akhir blok fungsi main pada program yang kalian tulis.
Kalian dapat memodiikasi kode program tersebut dan menjalankannya kembali dengan melakukan beberapa perubahan, misalnya:
- Ubah kalimat Halo Dunia menjadi Hello World!
- Cetak dua baris kalimat di layar, yaitu “Halo Dunia!” dan “Saya siap belajar pemrograman!”
$ads={1}
Komponen Program dalam Bahasa C
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, identifier, variabel, tipe data, dan konstanta.
Kata Kunci (Keyword)
Kata kunci merupakan kata yang telah memiliki makna khusus yang tidak dapat diubah oleh pemrograman. Dengan kata lain, kalian tidak dapat menggunakan sebagai suatu identifier. 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, float, short, dan unsigned.
Bayangkan, dengan hanya 32 kata kunci, kalian bisa menulis program apa saja dalam bahasa C!
Identifier
Identifier adalah nama unik yang dapat kalian ingat yang diberikan ke dalam entitas program C, seperti variabel dan fungsi. Identifier terdiri atas serangkaian karakter dengan aturan berikut.
- Tidak boleh sama dengan kata kunci (keyword) dalam bahasa C.
- Disusun dari kombinasi huruf (besar dan kecil), angka, dan underscore "_".
- Harus dimulai dengan huruf atau underscore.
- 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
dengantotal_harga
. Hindari juga dua atau lebih variabel yang hanya berbeda di kapitalisasi sepertitotalharga
dantotalHarga,
.- Hindari identifier yang terlihat mirip, misalnya karakter ‘I’, ‘1’, dan ‘l’ terlihat sangat mirip satu sama lain. Catatan: karakter yang disebutkan ialah huruf i kapital, angka 1, dan huruf L non-kapital.
- Identifier haruslah bersifat nemonic. Untuk variabel, artinya identifier 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.
Tipe Data
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 Tabel berikut:
Nama Tipe | Jenis Data | Ukuran Memori | Rentang |
---|---|---|---|
int | Bilangan bulat | 4 byte | -2.1x109 hingga 2.1x109 |
short | Bilangan bulat | 2 byte | -32768 hingga 32767 |
long | Bilangan bulat | 8 byte | -9.2x108 hingga 9.2x108 |
float | Bilangan riil | 4 byte | 1.2x1038 hingga 3.4x1038 |
double | Bilangan riil | 8 byte | 2.3x10308 hingga 1.7x10308 |
char | Karakter* | 1 byte | -127 hingga 128 |
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 2 jumlah 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.
Variabel
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.
<tipe_data><nama_variabel>;
<tipe_data><nama_variabel> = <nilai awal>;
<tipe_data><nama_variabel1>, <nama_variabel2>;
Beberapa contoh untuk mendeklarasikan variabel dapat dilihat pada Tabel berikut:
Tipe Data | Identifier | Deklarasi | Deklarasi dengan Nilai Awal |
---|---|---|---|
int | totalHarga | int totalHarga; | int totalHarga = 150000; |
short | usia | short usia; | short usia = 29; |
long | jumlahAtom | long jumlahAtom; | long jumlahAtom = 9123151252214; |
float | jarak | float jarak; | float jarak = 2.28; |
double | galat | double galat; | double galat = 0.0000000001234; |
char | huruf | char huruf; | char huruf = `a`; |
int panjang = 1, lebar = 2, luas;
float 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.
Konstanta
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.
const
di depan tipe data. Nilai awal harus langsung diberikan pada saat deklarasi. Misalnya, deklarasi konstanta pi dapat dilakukan sebagai berikut:const float PI = 3.14;
Membaca dan Menulis
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 untuk dimunculkan di sini: ");
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 spesifikasi 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 berikut:
Nama Tipe | Spesifikasi Format (Signed) | Spesifikasi Format (Unsigned) |
---|---|---|
int | %d | %ud |
short | %d | %ud |
long | %ld | %uld |
float | %d | %ud |
double | %ld | %uld |
char | %c | %uc |
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 spesifikasi 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 memodiikasi spesifikasi format. Perhatikan 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;
float c;
scanf("%d %d %f", &a, &b, &c);
printf("%d %d %.3f\n", a, b, c);
return 0;
}
Ayo Cari Tahu
Ketikkan kode tersebut, diberikan 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 memodifikasi kode program yang telah diberikan. Kalian dapat membaca materi lain tentang bahasa C yang dapat diakses di micro.serbaserbiilmu.com 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!
Belajar Menulis Program Sambil Menyelesaikan Masalah
Pada unit ini, aktivitas Ayo, Kita Berlatih diberikan sebagai bentuk latihan menyelesaikan suatu problem yang diberikan dengan pemrograman. Karena unit ini bersifat pengenalan pada kegiatan menulis kode program (coding), problem yang diberikan pada kalian diberikan dalam bentuk spesifikasi yang telah terstruktur. Pada kenyataannya, ketika kalian membuat program untuk menyelesaikan suatu permasalahan nyata, kalian perlu membuat sendiri spesifikasi dari program yang akan dibuat. Kalian perlu menetapkan sendiri tujuan dari program, format masukan, serta format keluaran dari program. Aktivitas ini akan kalian lakukan di akhir unit, tetapi sekarang kalian dapat fokus membuat program berdasarkan spesifikasi yang telah diberikan. Selain itu, pada unit pratik lintas bidang (PLB), kalian akan diajak untuk membuat sebuah program untuk menyelesaikan permasalahan di lingkungan tempat kalian tinggal.
Pada setiap aktivitas, kalian akan diberikan setidaknya satu permasalahan untuk diselesaikan dengan menggunakan konsep yang telah diberikan pada buku. Bentuk permasalahan tersebut akan diberikan dengan struktur pada Tabel berikut:
Tabel Spesifikasi Program yang Diberikan pada Problem Latihan
Bagian | Penjelasan |
---|---|
Nomor dan Nama Problem | Identitas dari permasalahan. |
Deskripsi Soal | Memberikan konteks permasalahan yang perlu diketahui oleh siswa dalam membuat program. |
Format Masukan | Memberikan susunan data yang diberikan pada program oleh pengguna, beserta ukuran dari data tersebut. |
Format Keluaran | Memberikan susunan informasi yang akan dikeluarkan oleh program kepada pengguna. |
Contoh Masukan | Memberikan contoh data yang dimasukkan. |
Contoh Keluaran | Memberikan contoh informasi yang dikeluarkan program berdasarkan data yang dimasukkan. |
Bagian format keluaran dan format masukan menjadi penting karena autograder (jika kalian menggunakan ini di kelas) akan memeriksa kode program kalian dengan sangat ketat berdasarkan pasangan masukan-keluaran yang telah disiapkan, atau disebut kasus uji (test case). Apabila program kalian membaca atau menulis dengan format yang salah, auto-grader tidak akan menganggap program kalian benar. Untuk membantu kalian memahami format tersebut, satu atau lebih contoh masukan dan keluaran akan diberikan.
Praktik Baik Pemrograman
Problem akan memberikan beberapa kasus uji. Akan tetapi, bukan berarti kalian hanya perlu mengecek program kalian dengan kasus uji yang ada di buku. Kalian perlu menguji program kalian dengan menggunakan berbagai kasus uji, yang kalian buat sendiri. Beberapa problem dirancang dengan adanya jebakan yang dapat membuat program kalian gagal berjalan pada kasus tertentu. Misalnya, ketika masukan yang diberikan memiliki rentang yang besar atau adanya kondisi yang dapat menyebabkan program berhenti.
Ayo, Kita Berlatih 3: 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 Kasus Uji
Masukan | Keluaran |
---|---|
10 20.1235 30 | 10 |
0,841667 | |
30 |
Problem 2: Bantulah Intan! (Tingkat Kesulitan: ***)
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;
}
Ayo Renungkan
Jawablah pertanyaan berikut dalam Lembar Refleksi pada Buku Kerja. Jangan lupa mencatat kegiatan dalam Jurnal.
- Pada bagian ini, kalian mendapatkan banyak konsep baru tentang program. Seperti apa perasaan kalian saat ini?
- Apakah kalian bereksperimen dengan contoh-contoh yang diberikan di buku? Jika ya, pengetahuan paling menarik apa yang kalian temukan dari hasil eksperimen tersebut?
- Pada saat memperbaiki program, apakah kalian dapat menemukan kesalahan pada program dengan mudah? Apakah kalian sebelumnya pernah melakukan kesalahan tersebut pada saat menulis program?
- Bagaimana rencana kalian untuk menulis program setelah pertemuan ini? Apakah kalian sudah menentukan rencana berlatih secara mandiri agar dapat menulis program dengan lebih lancar dan terampil?
Posting Komentar
Komentar yang dirasa merugikan situs ini akan dihapus. Terima kasih telah berkunjung