Artikel ini menunjukkan bagaimana operator-operator C digunakan untuk memanipulasi data dalam sebuah program C. Show
Catatan: Silahkan Anda mengeklik icon menu untuk berpindah sub bagian.
4.1. Melakukan Operasi Aritmetika 4.2. Menyematkan Nilai-nilai 4.3. Membandingkan Nilai-nilai 4.5. Memeriksa Kondisi-kondisi 4.7. Membandingkan Nilai-nilai Bit 4.9. Memahami Pengutamaan 4.1. Melakukan Operasi AritmetikaOperator-operator yang biasa digunakan dalam program-program C ditampilkan dalam tabel di bawah ini dengan penjelasan operasi yang mereka lakukan.
Operator untuk penambahan, pengurangan, perkalian, dan pembagian tentunya akan bekerja seperti yang Anda harapkan untuk operasi yang bersesuaian. Untuk diperhatikan, penggunaan tanda kurung pada sebuah operasi dengan lebih dari satu operator akan sangat berguna untuk memperjelas operasinya: a = b * c - d % e / f ; /* ini tidak jelas */ a = ( b * c ) - ( ( d % e ) / f ) ; /* ini lebih jelas */ Operator modulus % membagi bilangan pertama dengan bilangan kedua dan memberikan keluaran berupa nilai sisa operasi. Hal tersebut berguna untuk menentukan jika sebuah bilangan nilainya berupa ganjil atau genap. Operator penambah cacah ++ dan operator pengurang cacah -- mengubah nilai bilangan satu satuan dan keluarannya berupa nilai yang baru. Ini sangat sering digunakan untuk mencacah iterasi dalam sebuah perulangan. Operator penambah cacah akan menambah nilai satu satuan dan operator pengurang cacah akan mengurangi nilai satu satuan juga. Operator penambah dan pengurang cacah dapat diletakkan sebelum atau sesudah operand 1 untuk memberikan efek yang berbeda. Jika ditempatkan sebelum operand (prefiks) maka nilainya diubah seketika, namun jika ditempatkan setelah operand (posfiks) maka nilainya dikenali dulu baru kemudian diubah.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam video berikut (Video 4.1): Video 4.1. Melakukan Operasi Aritmetika dalam Bahasa C.4.2. Menyematkan Nilai-nilaiOperator-operator yang digunakan dalam bahasa C untuk menyematkan nilai-nilai ditampilkan dalam tabel di bawah ini. Semua kecuali operator penyemat sederhana = merupakan bentuk ringkas dari ekspresi yang lebih panjang.
Hal yang perlu digarisbawahi, operator “=” memiliki makna “menyematkan” dan bukannya “sama dengan” agar tidak keliru makna dengan operator persamaan “==“. Dalam contoh di atas, variabel bernama a disematkan nilai yang terkandung di dalam variabel bernama b sehingga menjadi nilai baru yang disimpan di variabel a. Operator += berguna untuk menambah sebuah nilai ke dalam nilai terkini yang disimpan di variabel a. Dalam contoh tabel, operator += pertama-tama menambahkan nilai yang tersimpan di variabel a ke nilai yang tersimpan di variabel b. Kemudian, operasi tersebut menghasilkan nilai untuk menjadi nilai baru yang disimpan di variabel a. Semua operator lain dalam tabel berkerja dengan cara yang sama dengan membuat operasi aritmetis di antara dua nilai pertama, kemudian memberikan hasilnya ke variabel pertama untuk menjadi nilai baru yang disimpan. Untuk operator %=, operand pertama a dibagi dengan operand kedua b kemudian sisa operasi tersebut disematkan ke variabel a.
4.3. Membandingkan Nilai-nilaiOperator-operator yang biasa digunakan dalam pemrograman C untuk membandingkan dua nilai numeris disajikan dalam tabel di bawah ini:
Operator persamaan == membandingkan dua operand dan akan memberikan nilai 1 (benar) jika keduanya bernilai sama, sebaliknya akan memberikan nilai 0 (salah). Apabila keduanya adalah angka yang sama maka mereka dianggap sama, atau apabila keduanya merupakan karakter maka nilai kode ASCII-nya yang dibandingkan secara numeris. Sebaliknya dengan menggunakan aturan seperti pada operator persamaan ==, untuk operator pertidaksamaan != maka akan memberikan nilai 1 (benar) jika dua operand tidak sama, dan mengembalikan nilai 0 (salah) jika nilainya sama. Operator persamaan dan pertidaksamaan berguna dalam menguji keadaan dua variabel untuk melakukan pencabangan kondisional dalam sebuah program. Operator “lebih besar dari” > membandingkan dua operand dan akan memberikan nilai 1 (benar) jika nilai pertama lebih besar dari nilai kedua, atau memberikan nilai 0 (salah) jika yang pertama nilainya sama atau kurang dari yang kedua. Operator “lebih besar dari” > sering digunakan untuk menguji nilai sebuah cacah mundur (countdown) dalam sebuah perulangan. Operator “kurang dari” < membuat perbandingan yang sama namun memberikan nilai 1 (benar) jika operand pertama memiliki nilai kurang dari nilai kedua, sebaliknya akan memberikan nilai 0 (salah). Menambahkan operator = setelah operator “lebih besar dari” > atau “kurang dari” < akan memberikan nilai 1 (benar) saat dua operand nilainya tepat sama.
4.4. Menilai LogikaOperator logika paling banyak digunakan dalam sebuah pemrograman bahasa C dan ditampilkan dalam tabel berikut:
Operator-operator logika digunakan bersama dengan operand yang memiliki nilai boolean benar (true) atau salah (false), atau sebuah ungkapan yang bisa mengubah menjadi nilai yang benar atau salah. Logika operator && AND akan mengevaluasi dua operand dan memberikan nilai benar hanya jika kedua operand tersebut bernilai benar. Sebaliknya, operator && AND akan memberikan nilai salah (false). Hal tersebut digunakan dalam pencabangan kondisional tempat arah sebuah program C ditentukan dengan menguji dua kondisi. Apabila kedua kondisi terpenuhi maka program akan berjalan ke arah tertentu, sebaliknya ia akan mengambil arah yang berbeda. Tidak seperti operator && AND yang membutuhkan kedua operand bernilai benar, operator || OR akan menilai dua operand dan memberikan nilai benar apabila salah satu operator bernilai benar. Apabila kedua operand tidak bernilai benar maka operator || OR akan memberikan nilai salah. Hal ini berguna dalam pemrograman C untuk melakukan sebuah aksi tertentu jika salah satu atau kedua kondisi yang diuji telah sesuai dengan apa yang diinginkan. Logika ketiga, yaitu operator ! NOT merupakan sebuah operator “unary” yang digunakan sebelum operand tunggal. Ia memberikan nilai kebalikan untuk operand yang digunakan, sehingga apabila variabel v__var bernilai benar maka !v__var akan memberikan sebuah nilai salah. Operator ! NOT berguna untuk mengganti nilai sebuah variabel dalam iterasi-iterasi perulangan berurut dengan menggunakan pernyataan v__var = !v__var. Hal tersebut menjamin pada setiap iterasi nilainya dibalik, seperti halnya mematikan dan menyalakan sebuah lampu listrik dengan menggunakan sakelar kontak. Dalam pemrograman C, sebuah bilangan nol mewakili niai boolean yang salah dan nilai apa saja yang tidak bernilai nol, seperti misalnya 1 mewakili nilai boolean yang benar.
4.5. Memeriksa Kondisi-kondisiKemungkinan, operator uji yang paling disukai para pemrogram C adalah operator kondisional ?:, dikenal juga sebagai operator “ternary“. Operator tersebut pertama kali akan menilai sebuah ekspresi untuk nilai boolean benar atau salah kemudian mengeksekusi satu dari dua pernyataan tergantung pada hasil evaluasi. Operator kondisional memiliki sintaks sebagai berikut: ( ekspresi-uji ) ? jika-benar-lakukan-ini : jika-salah-lakukan-ini ; Operator ini dapat digunakan untuk mengevaluasi apakah sebuah bilangan yang diberikan merupakan bilangan ganjil ataukah genap dengan memeriksa jika ada sisa setelah melakukan pembagian dengan bilangan dua, kemudian mengeluarkan kalimat yang sesuai seperti berikut: ( 5 % 2 != 0 ) ? printf( "Bilangan ganjil." ) : printf( "Bilangan genap." ) ; Dalam kasus tersebut, dengan membagi bilangan lima terhadap dua tidak akan meninggalkan sisa nol sehingga ungkapan tersebut bernilai benar. Selanjutnya, pernyataan pertamalah yang akan dieksekusi, menjelaskan dengan tepat bahwa bilangan tersebut sebagai sebuah bilangan ganjil. Operator kondisional juga berguna untuk menjamin tata bahasa yang tepat dalam bahasa Inggris untuk mengeluarkan satuan tunggal dan jamak sehingga menghindari frase yang aneh seperti “There is 5“. Evaluasi dapat dibuat secara sederhana di dalam pernyataan printf(): printf( "There %s %d" , ( v__bilangan == 1) ? "is" : "are" , v__bilangan ) ; Dalam kasus tersebut, saat variabel v__bilangan bernilai benar maka versi yang digunakan adalah “is”, sebaliknya yang digunakan adalah “are”. Operator kondisional juga dapat digunakan untuk menyematkan nilai yang sesuai ke sebuah variabel bergantung pada hasil sebuah evaluasi. Apabila demikian maka sintaksnya berupa: variabel = ( ekspresi-uji ) ? bila-benar-sematkan-ini : bila-salah-sematkan-ini ; Operator tersebut, sebagai contoh, digunakan untuk mengevaluasi apakah sebuah nilai yang diberikan memiliki nilai lebih besar daripada lainnya kemudian menyematkan nilai yang lebih besar ke sebuah variabel, seperti berikut: int v__bilangan , v__a = 5 , v__b = 2 ; v__bilangan = ( v__a > v__b ) ? v__a : v__b ; Dalam kasus tersebut, nilai variabel v__a lebih besar daripada variabel v__b, sehingga variabel v__bilangan disematkan nilai yang lebih besar, yaitu 5.
4.6. Menera UkuranDalam pemrograman C, operator sizeof mengeluarkan nilai sebuah bilangan bulat, yang merupakan banyak bytes yang dibutuhkan untuk menyimpan isi operand dalam memori. Saat operand dikenakan operator sizeof yang berupa nama tipe data maka operand tersebut harus berada di dalam tanda kurung. Sebagai alternatif, apabila operand berupa sebuah nama objek data, misalnya nama sebuah variabel, maka tanda kurung tersebut bisa ditiadakan. Dalam praktiknya, banyak pemrogram akan selalu mengurung operand yang dikenakan operator sizeof dalam tanda kurung untuk menghindari mengingat-ingat perbedaan tersebut. Unit penyimpanan dasar dalam C didefinisikan oleh tipe data char yang menyimpan karakter tunggal dalam byte tunggal memori. Itu maknanya bahwa sizeof( char ) akan selalu mengeluarkan nilai 1 (satu byte). Secara umum, tipe data int dan float akan masing-masing mengalokasikan 4 bytes dalam memori mesin, sedangkan tipe data double akan mengalokasikan 8 bytes untuk menampung rentang nilainya yang mungkin. Ukuran tersebut tidak dijelaskan secara standar sehingga nilainya bisa beragam. Oleh karena itu, merupakan sebuah praktik yang baik untuk menggunakan operator sizeof() guna mengukur alokasi memori aktual daripada mengasumsikan ukuran umum tersebut. Ruang memori yang dialokasikan untuk variabel larik merupakan banyak byte yang dialokasikan untuk tipe data variabel tersebut dikalikan banyaknya anggota dalam larik tersebut. Jadi, sebagai contoh, untuk ungkapan sizeof( int[3] ) maka umumnya akan memberikan nilai 12 (3 × 4 bytes). Operator sizeof() sangat penting digunakan untuk menemukan secara akurat banyak memori yang dialokasikan untuk struktur yang didefinisikan sendiri oleh pemrogram yang memiliki anggota dengan tipe data yang berbeda, mengingat “spasi” sering ditambahkan secara otomatis. Itu artinya bahwa alokasi memori total bisa jadi melampaui jumlahan alokasi untuk masing-masing anggota. Kelihatannya masuk akal untuk menganggap sebuah struktur yang beranggotakan variabel int v__skor dan char v__peringkat akan dialokasikan memori total sebanyak 5 bytes, namun alokasi totalnya akan sebanyak 8 bytes. Itu karena sistem komputer (32-bit) melakukan operasi membaca dan menulis data dalam kepingan ukuran “word” yang masing-masing sebanyak 4 bytes. Oleh karenanya, spasi ditambahkan untuk membuat alokasi memori menjadi sebuah kelipatan empat.
4.7. Membandingkan Nilai-nilai BitSebuah byte terdiri dari delapan bit dengan masing-masingnya berisi angka 1 atau 0 untuk menyimpan sebuah bilangan biner yang mewakili nilai desimal dari 0 sampai 255. Setiap bit menyumbang sebuah komponen desimal hanya saat bit tersebut mengandung angka 1. Komponen-komponen dirancang dari kanan ke kiri, dari “Least Significant Bit” (LSB) ke “Most Significant Bit” (MSB). Bilangan biner dalam pola bit di bawah mewakili 50 desimal.
Walaupun tipe data char merupakan unit penyimpanan dasar 1-byte dalam pemrograman C, adalah mungkin untuk memanipulasi bagian-bagian individu sebuah byte menggunakan operator-operator “bitwise“.
Terkecuali pemrograman untuk sebuah perangkat dengan sumberdaya terbatas maka biasanya operator-operator bitwise akan jarang digunakan, namun mereka bisa sangat berguna. Misalnya, operator XOR (eXclusive OR) mengizinkan pemrogram untuk menukar nilai antar dua variabel tanpa membutuhkan variabel ketiga.
4.8. Menandai Bit-bit (adsbygoogle = window.adsbygoogle || []).push({});Sejauh ini, penggunaan operator-operator bitwise yang paling umum adalah untuk memanipulasi sebuah “medan bit” kompak yang mengandung sehimpunan “tanda” boolean. Hal tersebut dapat menggunakan memori lebih efisien dibandingkan menyimpan nilai-nilai tanda boolean dalam variabel yang berbeda — sebuah tipe data char yang terdiri dari hanya satu byte dapat menangani sebuah medan bit delapan tanda, satu per bit, sedangkan delapan variabel char yang terpisah membutuhkan seluruh memori bytes. Tanda bit awal dapat dibangun dengan menyematkan sebuah nilai desimal ke variabel yang setara binernya memiliki sebuah angka 1 untuk setiap bit yang akan “dinyalakan” sebagai sebuah tanda boolean. Sebagai contoh, 8 desimal memiliki padanan biner 1000 (1×8 0×4 0×2 0×1) sehingga hanya “menyalakan” tanda keempat, dibaca dari kanan ke kiri dari bit signifikan terkecil. Secara berurut, nilai tanda bit dapat dibalikkan menggunakan operator bitwise NOT ~ namun harus diperhatikan untuk menutupi angka nol sebelum menandai bit, alih-alih semuanya akan diubah sebagai angka 1. Sebagai contoh, untuk membalikkan sebuah medan bit empat tanda dalam empat digit terkanan sebuah byte maka empat bit terkini harus ditutupi. 15 desimal merupakan 00001111 (0×128 0×64 0×32 0×16 1×8 1×4 1×2 1×1) biner dan penutupan tersebut dapat diterapkan dengan dengan operator AND &. Pola tanda bit dapat juga dimanipulasi dengan menggeser tanda-tanda tersebut yang dinyalakan oleh sebuah bilangan bit tertentu menggunakan operator bitwise Geser kiri (Shift left) << dan Geser kanan (Shift right) >>.
4.9. Memahami PengutamaanOperator pengutamaan (precedence) menjelaskan urutan ketika bahasa C mengevaluasi ungkapan-ungkapan. Sebagai contoh, dalam ungkapan a = 6 + b * 3 maka urutan pengutamaan menentukan apakah penjumlahan atau perkalian yang diselesaikan terlebih dahulu. Tabel di bawah ini memberi daftar operator pengutamaan dalam urutan yang menurun, dengan mana operator-operator pada baris yang lebih atas memiliki pengutamaan yang lebih daripada baris di bawahnya, jadi operasi-operasinya diselesaikan terlebih dahulu. Operator-operator pada baris yang sama memiliki pengutamaan yang sama namun urutan penyelesaian ditentukan berdasarkan arah pengelompokannya (asosiatifitas). Sebagai contoh, untuk pengelompokan “Kiri ke kanan” (Left to right) maka operasi pada bagian kiri diselesaikan terlebih dahulu.
4.10. Ringkasan
1) Operand adalah objek sebuah operasi matematika atau dengan kata lain merupakan suatu variabel (data) yang dikenai operasi matematika (perkalian, pengurangan, dsb.). Daftar Pustaka |