Dasar-dasar Pemrograman C: Logika Boolean dan Aliran Kontrol

10

Kebanyakan orang mengira pengkodean adalah tentang algoritma yang kompleks. Tidak. Ini sebagian besar tentang membuat pilihan sederhana. Di C, pilihan tersebut bermuara pada satu hal: ekspresi Boolean.

Anda pernah melihatnya di pernyataan if dan loop sementara. Mereka adalah lampu lalu lintas program Anda. Hijau pergi. Berhenti merah.

Ambil contoh dasar ini.

Ia meminta nomor. Ia memeriksa apakah angka itu kurang dari nol. Jika ya, program akan berbicara. Jika tidak? Kesunyian.

Bagian (b < 0) adalah ekspresi Boolean. C mengevaluasinya. Benar berarti mengeksekusi baris berikutnya. Salah berarti melewatkannya. Sederhana.

Namun apa jadinya jika Anda membutuhkan lebih banyak nuansa?

Menangani Nilai Nol dan Positif

Pemeriksaan tunggal di atas meninggalkan celah. Bagaimana jika pengguna memasukkan angka nol? Atau bilangan bulat positif? Program ini mengabaikannya.

Berikut adalah struktur yang sedikit lebih kompleks.

Sekarang Anda memiliki logika untuk nilai negatif, nol, dan positif. Bagian else if dan else menangkap kasus lainnya. Ini masih mendasar, tetapi mencakup semua dasar.

Kondisi Kompleks dan Kesalahan Umum

Logika dunia nyata jarang sekali sederhana. Terkadang Anda membutuhkan dua kondisi agar menjadi kenyataan sekaligus.

Pertimbangkan baris ini:

Bacalah seperti bahasa Inggris. Jika x sama dengan y DAN j lebih besar dari k, setel z ke 1. Jika tidak, setel q ke 10.

Perhatikan operatornya.

C menggunakan == untuk menguji kesetaraan. Ia menggunakan satu = untuk menetapkan nilai.

Ini adalah jebakan klasik. Jika Anda menulis if (x = y), Anda tidak memeriksa apakah keduanya sama. Anda menugaskan y ke x, lalu memeriksa apakah hasilnya bukan nol. Logika Anda rusak. Selalu gunakan persamaan ganda untuk perbandingan.

Simbol && mewakili operasi Boolean AND. Kedua belah pihak harus benar.

Perangkat Operator Boolean Lengkap

Anda tidak perlu menghafalnya, tapi Anda harus tahu seperti apa bentuknya. Mereka muncul di mana-mana dalam kode C.

  • Kesetaraan : ==
  • Ketimpangan : !=
  • Kurang dari : <
  • Lebih besar dari : >
  • Kurang dari atau sama dengan : <=
  • Lebih besar dari atau sama dengan : >=
  • DAN : &&
  • ATAU : ||
  • TIDAK : !

Mengapa Ini Penting bagi Pengguna Sehari-hari

Logika perulangan di C: while, do- while, dan struktur for

Anda dapat menggunakan perulangan sementara dengan kemudahan yang sama seperti pernyataan dasar if. Perhatikan contoh sederhana:

Kode ini mengulangi kedua baris tersebut hingga a lebih besar atau sama dengan b. Strukturnya mudah. C juga menawarkan konstruksi do- while, yang menjamin blok kode berjalan setidaknya sekali sebelum memeriksa kondisi. Berikut cuplikan yang menunjukkan pemeriksaan masukan dasar:

Bagaimana perulangan for menyederhanakan iterasi

Perulangan for pada dasarnya adalah singkatan dari perulangan sementara. Jika Anda memiliki kode seperti ini:

Anda dapat mengompresnya menjadi satu pernyataan untuk :

Perulangan sementara memiliki tiga bagian berbeda: inisialisasi (x=1 ), pengujian (x<10 ), dan kenaikan (x++ ). Perulangan for mengemasnya ke dalam satu baris. Namun Anda tidak terbatas pada variabel sederhana. Lihatlah skenario yang lebih kompleks ini:

Anda dapat menulis ulang ini menggunakan loop for :

Kelihatannya berantakan. Ini membingungkan. Tapi itu berhasil. Operator koma memungkinkan Anda merangkai beberapa pernyataan di bagian inisialisasi dan kenaikan dari perulangan for. Namun, Anda tidak dapat memberi tanda koma pada bagian tes.

Banyak programmer C suka mengemas logika ke dalam satu baris. Yang lain berpendapat bahwa hal itu merusak keterbacaan. Tidak ada konsensus universal. Anda hanya perlu memutuskan apakah Anda menghargai keringkasan dibandingkan kejelasan.

Bahaya = vs == dalam ekspresi Boolean

Tanda sama dengan ganda == adalah sumber bug yang sering terjadi di C. Pengembang sering kali salah mengetikkan satu tanda sama dengan =. Kompiler menerima keduanya, tetapi perilakunya sangat berbeda.

Di C, ekspresi Boolean dievaluasi menjadi bilangan bulat. Nol berarti Salah. Bilangan bulat bukan nol berarti Benar. Ini berarti Anda dapat menulis secara legal:

Namun apa yang terjadi jika Anda menulis if (a=b)?

Ini bukan perbandingan. Ini adalah sebuah tugas. Pernyataan if (a=b) memberikan nilai b ke a, lalu menguji nilai a yang dihasilkan untuk mengetahui kebenaran Boolean-nya. Jika a menjadi nol, kondisinya False. Jika menjadi hal lain, itu Benar.

Variabel Anda a mengubah nilai selama proses ini. Hal ini jarang terjadi saat Anda ingin membandingkan nilai. Meskipun fitur penugasan dalam kondisional ini dapat berguna dalam konteks tertentu, fitur ini merupakan jebakan bagi mereka yang tidak waspada. Hati-hati dengan penggunaan = dan == Anda. Satu kesalahan ketik mengubah segalanya.