Bahasa C adalah salah satu bahasa pemrograman paling fundamental dan kuat. Memahami cara kerja dasar struktur kontrol dan input/output (I/O) sangat krusial sebelum melangkah ke bahasa yang lebih kompleks. Salah satu proyek klasik yang sangat baik untuk pemula adalah membuat program kalkulator sederhana.
Proyek kalkulator ini akan membantu kita mengaplikasikan konsep switch-case, penggunaan operator aritmatika dasar, serta penanganan input dari pengguna menggunakan fungsi seperti scanf(). Meskipun terlihat sederhana, program ini menguji logika pemrograman inti.
Untuk membangun kalkulator yang dapat melakukan penjumlahan, pengurangan, perkalian, dan pembagian, kita memerlukan tiga variabel utama: dua untuk menyimpan angka (operand) dan satu untuk menyimpan operator yang dipilih. Kita akan menggunakan tipe data double agar kalkulator bisa menangani bilangan desimal.
Langkah pertama adalah mendeklarasikan variabel dan menampilkan menu pilihan kepada pengguna:
#include <stdio.h>
int main() {
char operator;
double num1, num2, hasil;
printf("=== Kalkulator Sederhana Bahasa C ===\n");
printf("Pilih Operasi (+, -, *, /): ");
scanf(" %c", &operator); // Perhatikan spasi sebelum %c untuk membersihkan newline
printf("Masukkan angka pertama: ");
scanf("%lf", &num1);
printf("Masukkan angka kedua: ");
scanf("%lf", &num2);
// ... Lanjutan logika switch-case ...
return 0;
}
Bagian terpenting adalah penggunaan struktur switch-case. Struktur ini memungkinkan program untuk mengeksekusi blok kode yang berbeda berdasarkan nilai variabel operator yang dimasukkan pengguna.
Di dalam blok switch, kita akan mendefinisikan setiap operasi. Sangat penting untuk menyertakan break; setelah setiap kasus selesai dieksekusi. Jika tidak ada break, program akan terus menjalankan kasus berikutnya (fall-through), yang akan menghasilkan output yang salah.
Kita juga harus menangani kasus pembagian dengan nol, karena ini akan menyebabkan kesalahan fatal (runtime error) pada program.
switch(operator) {
case '+':
hasil = num1 + num2;
printf("%.2lf + %.2lf = %.2lf\n", num1, num2, hasil);
break;
case '-':
hasil = num1 - num2;
printf("%.2lf - %.2lf = %.2lf\n", num1, num2, hasil);
break;
case '*':
hasil = num1 * num2;
printf("%.2lf * %.2lf = %.2lf\n", num1, num2, hasil);
break;
case '/':
if (num2 != 0) {
hasil = num1 / num2;
printf("%.2lf / %.2lf = %.2lf\n", num1, num2, hasil);
} else {
printf("Error: Pembagian dengan nol tidak diizinkan!\n");
}
break;
default:
printf("Error: Operator tidak valid.\n");
break;
}
Salah satu tantangan umum saat menggunakan scanf() adalah sisa karakter (newline atau spasi) yang tertinggal di buffer input. Ketika meminta input operator menggunakan scanf(" %c", &operator);, penambahan spasi sebelum %c berfungsi untuk mengabaikan spasi atau karakter newline yang mungkin tersisa dari input sebelumnya. Ini memastikan bahwa input operator berikutnya bekerja sebagaimana mestinya.
Untuk meningkatkan kegunaan program, kita bisa menambahkan loop (misalnya, do-while) di sekeliling logika utama. Dengan loop, setelah kalkulasi selesai, program akan menanyakan apakah pengguna ingin melakukan perhitungan lain tanpa perlu menjalankan program dari awal.
Meskipun bahasa tingkat tinggi seperti Python atau JavaScript memiliki sintaks yang lebih ringkas, membangun kalkulator di Bahasa C memaksa pengembang untuk memperhatikan detail manajemen memori dasar (meskipun tidak eksplisit dalam kasus ini) dan cara kerja konversi tipe data (misalnya, dari integer ke double saat perhitungan). Pemahaman mendalam tentang bagaimana switch-case bekerja dalam kompilasi juga menjadi pelajaran berharga. Program kalkulator C adalah gerbang yang solid menuju pemrograman sistem.
Penggunaan %.2lf dalam fungsi printf memastikan bahwa output hasil perhitungan ditampilkan hanya dengan dua angka di belakang koma, memberikan tampilan yang lebih rapi dan terstruktur, sesuai dengan harapan pengguna pada sebuah aplikasi kalkulator modern.