Ekspresi Dalam Bahasa C - AP


Ekspresi merupakan bagian yang tidak terpisahkan dari program. Di dalam matematika, ekspresi terdiri atas kombinasi beberapa operand dan operator yang memiliki makna. Kalian telah terbiasa menulis ekspresi pada matematika, misalnya dalam penjumlahan 10 + 5 yang melibatkan dua buah operand (10 dan 5) dan sebuah operator (+). Ekspresi pada pemrograman mirip dengan ekspresi yang kalian pelajari pada matematika, tetapi diperkaya dengan tambahan operator-operator untuk memudahkan kalian dalam menulis program.

Berdasarkan jumlah operand, suatu ekspresi dapat dibagi menjadi ekspresi:

  1. Unary (satu operand), misalnya –a untuk menegasikan suatu bilangan.
  2. Binary (dua operand), misalnya a+b untuk penjumlahan.
  3. Ternary (tiga operand), misalnya a ? b : c yang akan dijelaskan lebih rinci.

Berdasarkan fungsinya, operator dalam bahasa C dapat dibagi menjadi operator penugasan, operator aritmatika, operator logika, serta increment dan decrement.

Operator Penugasan

Operator penugasan (simbol '=') untuk memberikan suatu nilai konstanta atau nilai yang diperoleh dari suatu ekspresi ke dalam variabel. Operand di sisi kiri akan menerima nilai dari operand di sisi kanan operator penugasan. Contoh penugasan telah kalian lakukan pada saat melakukan deklarasi variabel seperti:

int a = 5;

Perhatikan dan ingat baik-baik bahwa makna dari simbol '=' dalam bahasa C sangat berbeda dengan tanda "sama dengan" dalam matematika! 

Operator Aritmatika

Operator aritmatika digunakan untuk melakukan operasi matematika yang kalian kenal. Ada perbedaan notasi penulisan operator dengan yang kalian pelajari pada mata pelajaran Matematika yang dapat dilihat pada Tabel di bawah ini. 

Tabel Operator Matematika pada Bahasa C

Operasi Matematika Contoh Ekspresi Aljabar Operator Bahasa C Ekspresi Bahasa C
Penjumlahan 1 + 2 + 1 + 2
Pengurangan a - b - 1 - b
Perkalian ab * a * b
Pembagian a/b / a / b
Modulo a mod b % a % b

Penting: Hati-hati dalam melakukan pembagian pada bahasa C. Bahasa C sangat sensitif terhadap tipe data sehingga pembagian dua buah bilangan bulat akan menghasilkan bilangan bulat. Sebagai contoh, 10/3 pada kode program C saat dieksekusi akan menghasilkan nilai 3.

$ads={1}
Seperti pada matematika, suatu ekspresi dapat terdiri atas banyak operator. Agar ekspresi tersebut dieksekusi dengan benar, diperlukan suatu urutan operasi (atau operator precedence). Urutan operasi dari operator pada bahasa C ialah:
  1. Tanda kurung ()
  2. Operator perkalian '*', pembagian '/', dan modulo '%'.

Selain operator-operator matematika tersebut, C juga memiliki operator-operator lain yang akan dipelajari di lain kesempatan. Daftar lengkap semua operator pada C dapat dilihat di https://micro.serbaserbiilmu.com

Hasil ekspresi dapat disimpan dalam suatu variabel menggunakan operator penugasan. Misalnya:

a = 5;
b = a + 1;
b = b + 5;
c = (a + b)*2 + a;
d = c % b;

Ekspresi seperti b = b + 5 mungkin tidak pernah kalian temui pada mata pelajaran Matematika. Akan tetapi, ekspresi ini sangat lazim ditemukan dalam menulis kode program. Makna dari ekspresi ini ialah kalian melakukan perubahan pada nilai suatu variabel berdasarkan nilai variabel pada saat ini. Hal ini telah kalian lakukan pada saat melakukan penelusuran pada Diagram Alir 4 di bagian awal unit ini.

Untuk ekspresi seperti ini, bahasa C menyediakan bentuk yang lebih ringkas yang disebut compound assignment operator atau operator penugasan majemuk. Misalnya, b = b + 5 dapat disingkat menjadi b += 5. Hal ini juga berlaku untuk operator matematika lainnya seperti b *= 2, c /= 3, dan seterusnya.

Operator Increment dan Decrement

Selain operator penugasan majemuk pada bagian sebelumnya, bahasa C juga memberikan operator unary yang lebih khusus untuk menambah (++) atau mengurangi nilai suatu variabel (--) dengan angka 1. Operator ini dapat diletakkan sebelum (prefix) atau setelah (postfix) operand.

Pada penulisan dalam bentuk prefix, perubahan nilai akan langsung dilakukan pada nilai variabel sebelum nilai variabel tersebut digunakan pada ekspresi. Sebagai contoh, setelah dua baris kode berikut dijalankan, nilai x akan bernilai 2 dan y akan bernilai 1.

int x = 1;
int y = ++x;

Sebaliknya, pada penulisan dalam bentuk postfix, nilai variabel akan digunakan terlebih dahulu pada ekspresi, baru perubahan dilakukan. Sebagai contoh, setelah dua baris kode berikut dijalankan, nilai x dan y akan bernilai 1.

int x = 1;
int y = x++;


Operator Logika, Relasional, dan Kesamaan

Di samping operator aritmatika, juga dikenal operator logika, relasional, dan kesamaan. Ekspresi yang menggunakan operator ini akan memiliki nilai benar (true atau dalam bahasa C bernilai tidak sama dengan 0) atau salah (false atau bernilai 0). Operator pada kategori ini memiliki peran yang sama dengan operator logika, relasional, dan kesamaan pada mata pelajaran Matematika. Operator tersebut pada bahasa C dapat dilihat pada Tabel di bawah ini.

Tabel Operator Logika, Relasional, dan Kesamaan Pada Bahasa C

Aljabar Bahasa C Contoh Makna
Operator Kesamaan / Pertidaksamaan
= == a == b Apakah nilai a   sama dengan b?
!= a != b Apakah nilai a   tidak sama dengan b?
Operator Relasional
> > a > b Apakah a lebih   besar dari b?
< < a < b Apakah a lebih   kecil dari b?
>= a >= b Apakah a lebih   besar atau sama dengan b?
<= a <= b Apakah a lebih   kecil atau sama dengan b?
Operator Logika
AND && a > 0   && b > 0 Apakah a dan b   lebih besar daripada 0?
OR || a > 0 || b >   0 Apakah a atau b   lebih besar daripada 0?
NOT ! !(a > 0) Apakah a tidak   lebih besar daripada 0?

Operator Kondisional (Ternary)

Operator kondisional adalah operator ternary yang akan mengembalikan nilai berdasarkan suatu kondisi tertentu. Misalnya, kalian ingin mengembalikan nilai 1 jika suatu ekspresi a < 3 bernilai benar, dan mengembalikan nilai 0 jika sebaliknya. Kalian dapat menuliskannya dalam bentuk

n = ((a<3)?1:0)

Bentuk umum penggunaan operator ini adalah sebagai berikut:

(kondisi ? ekspresi-1 : ekspresi-2 )

Ekspresi 1 akan dikembalikan jika kondisi bernilai benar, sedangkan ekspresi 2 dikembalikan jika kondisi bernilai salah.

Praktik Baik Pemrograman

Pada saat menuliskan suatu ekspresi, gunakanlah pengelompokan dengan tanda kurung untuk membuat ekspresi tidak ambigu dan mudah untuk dibaca. Pastikan ekspresi tersebut ditulis dengan benar sebelum kalian menjalankan program. Biasakan untuk menguji (dalam pikiran kalian) sambil menulis, tidak menunggu program dijalankan.


Ayo, Kita Berlatih 4: Latihan Ekspresi

Problem 1: Menghitung Luas Tanah (Tingkat Kesulitan: ** )

Deskripsi Soal:

Pak Algor memiliki sebidang tanah berbentuk segitiga siku-siku. Ia ingin mengetahui berapa luas tanah yang ia miliki. Bantulah Pak Algor menghitung dengan membuat program untuk menghitung luas tanahnya. 

Format Masukan:

Dua buah bilangan bulat yang merupakan alas dan tinggi segitiga dari tanah Pak Algor.

Format Keluaran:

Sebuah bilangan riil, dengan dua digit di belakang desimal yang merupakan luas tanah Pak Algor. Akhiri keluaran dengan karakter newline

Contoh Kasus Uji

Masukan Keluaran
20 40 400.00

Problem 2: Menghitung Luas persegi (Tingkat Kesulitan: **)

Simak kembali Diagram Alir 1: Menghitung luas persegi pada bagian algoritma di unit ini. Buatlah program berdasarkan diagram alir tersebut. Panjang sisi yang diberikan ialah sebuah bilangan riil dengan nilai maksimum 1000 cm.

Problem 3: Hasil Bagi dan Sisa Pembagian (Tingkat Kesulitan: ***)

Deskripsi Soal:

Buatlah sebuah program untuk menampilkan hasil dan sisa pembagian dari dua buah bilangan bulat positif a dan b.

Format Masukan:

Dua buah bilangan positif a dan b yang dipisahkan oleh karakter spasi. Keduanya bernilai paling besar 10 miliar.

Format Keluaran:

Dua buah bilangan bulat yang ditulis di baris berbeda. Baris pertama adalah hasil pembagian, sedangkan baris kedua adalah sisa pembagian. Hasil pembagian dibulatkan ke bawah.

Contoh Kasus Uji

Masukan Keluaran
1000 3 333 1

Problem 4: Benar atau Salah? (Tingkat Kesulitan: ***)

Ekspresi yang memuat operator logika, relasional, dan kesamaan dapat kalian telusuri tanpa menjalankan program. Berikut ini, diberikan beberapa ekspresi yang perlu kalian cek nilainya, jika diketahui nilai a = 1, b = 2, dan c = 3.

No Ekspresi Hasil
1 (a < b) || (b   > c)
2 (a >= b) || (b   != c)
3 (b == a)   && (c > a)
4 (b >= a)   &&( (b < c) || (c > a) )

Problem 5: Percantik Kode Program Ini! (Tingkat Kesulitan: ****) 

Uh… Kalian baru saja mendapatkan tugas untuk mempelajari sebuah kode program. Akan tetapi, kode program yang kalian terima tidak ditulis dengan menerapkan praktik baik pemrograman yang telah kalian pelajari sehingga sangat sulit untuk dipahami! Apalagi ternyata, saat kalian jalankan, program ini tidak bisa berjalan dengan benar.

#include <studio.h> int main(){ float jr2; float l; float O; scanf("%f", jr2); l = 3.14*jr2*jr2; O = 2*3.14*jr2; printf("%.2f %.2f\n",l, O); return 0; }

Sebagai seorang siswa teladan yang telah mempelajari praktik baik pemrograman, perbaikilah program di atas ke dalam bentuk yang menerapkan praktik baik pemrograman. Kemudian, jika ada, perbaikilah program tersebut sehingga dapat berjalan dengan benar. Setelah itu, apakah kalian dapat menebak apa yang dilakukan oleh program tersebut?

Ayo Renungkan

Jawablah pertanyaan berikut dalam Lembar Refleksi pada Buku Kerja. Jangan lupa mencatat kegiatan dalam Jurnal.

  1. Pada bagian ini, kalian mendapatkan banyak konsep baru tentang program. Seperti apa perasaan kalian saat ini?
  2. Apakah kalian bereksperimen dengan contoh-contoh yang diberikan di buku? Jika ya, pengetahuan paling menarik apa yang kalian temukan dari hasil eksperimen tersebut?
  3. Pada saat mengerjakan Problem 3, apakah kalian menyadari bahwa tipe data int tidak dapat menampung nilai hingga 10 miliar? Tipe data apa yang seharusnya digunakan?
  4. Apa yang kalian rasakan saat memperbaiki program yang diberikan pada Problem 5? Apakah kalian makin menyadari pentingnya menerapkan praktik baik pemrograman?

Apa Komentarmu?

Komentar yang dirasa merugikan situs ini akan dihapus. Terima kasih telah berkunjung

Lebih baru Lebih lama