9 Latihan Kode C untuk Melatih Logika Pemrograman

Meja kerja programmer dengan laptop berisi editor kode dan catatan latihan logika pemrograman C

Latihan kode C untuk melatih logika paling efektif kalau soalnya kecil, jelas keluarannya, dan bisa kamu cek sendiri tanpa menunggu siapa pun. Sembilan latihan berikut disusun dari yang paling ringan sampai yang mulai menguras pikiran, dan semuanya cukup ditulis dalam satu file .c. Kerjakan berurutan, jangan lompat ke nomor akhir sebelum nomor awal selesai tanpa error.

Sebelum mulai, pastikan compiler dan editor sudah siap. Kalau masih bingung pilih alat, panduan IDE C untuk pemula bisa jadi titik awal. Setiap latihan di bawah sebaiknya kamu tulis ulang dari nol, bukan menyalin dari tempat lain, karena proses mengetik dan memperbaiki error itulah bagian latihannya.

Aturan main sebelum mengerjakan latihan

Pakai satu folder khusus, misalnya latihan-c, lalu simpan setiap soal sebagai file terpisah seperti soal01.c, soal02.c, dan seterusnya. Compile dengan gcc -Wall -o soal01 soal01.c supaya peringatan dari compiler muncul. Jangan matikan flag -Wall, karena banyak kesalahan logika di C sebenarnya sudah diberi tahu lewat peringatan itu.

Untuk tiap soal, tulis dulu keluaran yang kamu harapkan di atas kode sebagai komentar. Setelah program jalan, bandingkan hasilnya dengan catatan itu. Kalau berbeda, perbaiki satu bagian kecil, compile lagi, jalankan lagi. Siklus pendek seperti ini jauh lebih cepat daripada menulis ratusan baris lalu bingung mencari kesalahannya di mana.

Latihan 1 sampai 3: pemanasan dengan angka

1. Konversi suhu dua arah

Minta pengguna memasukkan suhu Celsius, lalu tampilkan hasil konversi ke Fahrenheit dan Kelvin. Setelah itu tambahkan pilihan supaya pengguna bisa memasukkan Fahrenheit dan mendapat Celsius. Latihan ini melatih urutan operasi aritmetika dan pembacaan input dengan scanf. Perhatikan tipe data: pakai float atau double, bukan int, kalau tidak ingin hasilnya terpotong.

2. Cek bilangan prima

Buat program yang menerima satu bilangan bulat dan menyatakan apakah bilangan itu prima. Mulai dari versi paling lugas: bagi bilangan dengan semua angka dari 2 sampai n-1. Setelah benar, ubah supaya pengecekan berhenti di akar kuadrat n. Bandingkan waktu jalan kedua versi untuk angka besar seperti 1000003, dan kamu akan melihat sendiri kenapa cara kedua lebih masuk akal.

3. Faktorial dengan dan tanpa rekursi

Hitung faktorial dari sebuah bilangan menggunakan loop, lalu tulis ulang versi rekursifnya. Dua versi ini menghasilkan jawaban sama dengan cara berpikir berbeda. Kalau konsep rekursi masih terasa aneh, baca dulu penjelasan di cara menggunakan rekursi dalam bahasa C, lalu kembali ke latihan ini. Ingat bahwa faktorial tumbuh sangat cepat, jadi uji dengan angka kecil saja.

Latihan 4 sampai 6: pola dan teks

4. Segitiga bintang dengan tinggi variabel

Minta pengguna memasukkan tinggi, lalu cetak segitiga bintang dengan tinggi tersebut. Setelah versi rata kiri selesai, buat versi piramida yang bintangnya di tengah. Soal ini memaksa kamu memikirkan dua loop bersarang sekaligus: satu untuk jumlah spasi, satu untuk jumlah bintang. Kalau hasilnya miring, biasanya hitungan spasinya kurang satu.

5. Hitung huruf vokal dan konsonan

Baca satu baris teks dengan fgets, lalu hitung berapa huruf vokal, konsonan, spasi, dan angka di dalamnya. Abaikan beda huruf besar dan kecil dengan mengubah tiap karakter ke huruf kecil lebih dulu. Latihan ini membiasakan kamu memeriksa karakter satu per satu dan berhenti di karakter . Beberapa fungsi bantu untuk kasus seperti ini ada di daftar fungsi library string.h yang sering dipakai.

6. Balik kata dalam sebuah kalimat

Ambil satu baris input, lalu cetak kata-katanya dalam urutan terbalik. Contoh: “saya suka kopi” menjadi “kopi suka saya”. Kamu bisa memecah kalimat per spasi, menyimpannya dalam array dua dimensi, lalu mencetak dari indeks terakhir. Cara lain adalah membalik seluruh string lebih dulu, kemudian membalik tiap kata di dalamnya. Coba kedua pendekatan dan bandingkan mana yang lebih mudah kamu baca ulang.

Latihan 7 sampai 9: struktur data kecil

7. Cari nilai terbesar dan terkecil di array

Isi array berisi sepuluh angka, lalu tampilkan nilai terbesar, terkecil, rata-rata, dan posisi indeks dari nilai terbesar. Kerjakan tanpa fungsi library pengurutan. Setelah versi satu file berjalan, pecah menjadi tiga fungsi: pengisi array, pencari nilai ekstrem, dan penghitung rata-rata. Latihan memecah kode seperti ini penting sebelum kamu menyentuh proyek yang lebih besar.

8. Program inventaris sederhana dengan struct

Buat struct berisi nama barang, jumlah, dan harga satuan. Simpan lima barang dalam array, lalu tampilkan semuanya dalam bentuk tabel rapi memakai printf dengan lebar kolom tetap. Tambahkan fitur mencari barang berdasarkan nama. Kalau kamu ingin melihat kapan sebaiknya memakai struct dan kapan memakai union, ada pembahasan terpisah di perbandingan struct dan union.

9. Hitung frekuensi karakter dari file teks

Buka sebuah file teks, baca isinya karakter demi karakter, lalu cetak sepuluh karakter yang paling sering muncul beserta jumlah kemunculannya. Gunakan array berukuran 256 sebagai penghitung, karena setiap karakter punya kode unik. Latihan ini menggabungkan file I/O, array, dan pengurutan sederhana dalam satu program. Kalau bagian membaca file masih terasa berat, ulangi dulu latihan membaca file sebelum mengerjakan yang ini.

Cara mengecek pekerjaan sendiri

Sebelum menganggap satu latihan selesai, jalankan daftar periksa berikut:

  • Program berhasil di-compile tanpa error dan tanpa peringatan berarti.
  • Keluaran untuk input normal sesuai dengan yang kamu tulis di komentar.
  • Input aneh seperti nol, angka negatif, atau teks kosong tidak membuat program berhenti mendadak.
  • Nama variabel bisa dibaca orang lain tanpa perlu penjelasan tambahan.
  • Setiap fungsi melakukan satu hal dan panjangnya masih wajar.

Uji juga dengan input yang tidak kamu duga, misalnya huruf ketika program meminta angka. Banyak program pemula langsung kacau di situ karena scanf meninggalkan sisa input di buffer. Menemukan sendiri masalah seperti ini jauh lebih berharga daripada sekadar mendapat jawaban benar untuk kasus normal.

Latihan yang kamu kerjakan sampai error-nya hilang sendiri akan lebih lama menempel di ingatan daripada sepuluh contoh yang hanya kamu baca.

Kalau kamu sedang menyiapkan portofolio atau mulai bekerja dengan basis kode orang lain, kebiasaan kecil seperti memberi nama file yang jelas dan mengecek ulang perubahan sebelum dijalankan akan terbawa terus. Prinsip serupa juga dipakai saat merapikan migrasi database di proyek nyata, seperti dijelaskan dalam tips migrasi database Rails tanpa bikin aplikasi down. Untuk antarmuka, cara menata label dan placeholder di formulir juga berpengaruh besar pada pengalaman pengguna, seperti dibahas di tips praktis menata label dan placeholder di formulir.

Ringkasan

Sembilan latihan di atas bergerak dari aritmetika sederhana, pola perulangan, pengolahan teks, sampai struct dan file. Kerjakan satu per satu, uji dengan input aneh, dan simpan setiap versi yang sudah jalan sebagai pembanding. Setelah semua selesai, ulangi dari nomor satu tanpa melihat kode lama. Kalau kali kedua jauh lebih lancar, berarti latihannya benar-benar masuk.

Pertanyaan yang Sering Diajukan

Berapa lama waktu yang wajar untuk menyelesaikan satu latihan?

Untuk pemula, satu soal sederhana biasanya selesai dalam 20 sampai 60 menit termasuk waktu memperbaiki error. Soal seperti frekuensi karakter dari file bisa memakan beberapa jam kalau baru pertama kali memakai file I/O. Jangan memaksakan target waktu, yang penting kodenya jalan dan kamu paham kenapa.

Apakah boleh mencari solusi di internet saat macet?

Boleh, tapi tahan dulu setidaknya 15 menit dan tuliskan di kertas bagian mana yang membingungkan. Setelah melihat solusi, tutup halamannya lalu tulis ulang dari nol tanpa menyalin. Kalau masih bingung, cari penjelasan konsepnya, bukan kode jadinya.

Bagaimana kalau program jalan tapi hasilnya salah?

Cetak nilai antara di beberapa titik dengan printf untuk melihat di mana angkanya mulai melenceng. Periksa juga tipe data, inisialisasi variabel, dan batas perulangan. Kesalahan yang paling sering terjadi di latihan seperti ini adalah variabel yang belum diberi nilai awal dan indeks array yang keluar batas.