Wonderwall

Just another Binusian blog site

Bab 4, Expression and Assignment Statements

December14

Ekspresi dalam bahasa C

Pada dasarnya, ekspresi adalah gabungan antara operator dan operand. Dari penggabungan operator dan operand ini dapat dibangun ekspresi-ekspresi yang lebih rumit. Namun demikian, bisa saja dalam bentuk paling sederhana, sebuah ekspresi hanya terdiri dari sebuah operand.

  1. Operator & Operand

Operator adalah karakter khusus yang berupa symbol atau tanda yang digunakan untuk mengoprasikan (memproses) dua operand atau lebih untuk mendapatkan hasil.

Operand adalah suatu variabel (angka atau karakter) yang akan dioprasikan (diproses) oleh operator untuk mengetahui hasil.

  • Operator Aritmatika

Operator adalah simbol-simbol yang digunakan untuk melaksanakan suatu pengolahan data, baik berupa bilangan maupun teks. Operator aritmatika adalah sekelompok operator yang digunakan untuk mengolah aritmatik.

Tabel 1.1 Daftar operator aritmatika

Operator Nama Contoh Penjelasan
* Perkalian x * y Kalikan x dengan y
/ Pembagian x / y Bagi x dengan y
% Modulo x % y Sisa pembagian x oleh y
+ Penjumlahan x + y Tambahkan x dengan y
Pengurangan x – y Kurangkan x dengan y
++ Postfix Inkremen

Prefix Inkremen

++x

x++

Inkremen x setelah digunakan

Inkremen x sebelum digunakan

Postfix Dekremen

Prefix Dekremen

–x

x–

Dekremen x sebelum digunakan

Dekremen x sesudah digunakan

Negasi -x Negasikan nilai x
+ Unary plus +x Nilai positif x

Operator-operator *, /, %, +, dan – merupakan operator dyadic ataubinary operator, yakni operator yang membutuhkan dua operand: kiri dan kanan. Sedangkan operator yang hanya membutuhkan satu operand, disebutmonadic atau operator unary. Yang termasuk golongan operator ini adalah:inkremen (++) dekremen (–), unary minus (-), unary plus (+).

Operasi unary inkremen dan dekremen masing-masing berfungsi untuk menambah nilai variabel dengan satu dan mengurangi nilai variabel dengan satu. Operator unary minus dan unary plus berturut-turut digunakan untuk mengambil nilai negatif dan nilai positif dari suatu bilangan.

Tabel 1.2 Presedensi operator aritmatika

Operator Asosiatifias Presedensi
++ — Kanan ke kiri Tertinggi
Kiri ke kanan
* / % Kiri ke kanan
+ – Kiri ke kanan Terendah
  • Operator Relasional

Operator relasional adalah binary operator yang digunakan untuk membandingkan suatu nilai. Dalam C, ada enam jenis operator relasional: lebih besar, lebih besar atau sama dengan, lebih kecil, lebih kecil atau sama dengan, sama dengan, dan tidak sama dengan.

Tabel 1.3 Daftar operasi relasional

Operator Nama Contoh Penjelasan
< Lebih kecil dari x > y 1 jika x lebih besar y, 0 jika tidak
<= Lebih kecil atau sama dengan x >=y 1 jika x lebih besar atau sama dengan y, 0 jika tidak
> Lebih besar dari x < y 1 jika x lebih kecil y, 0 jika tidak
>= Lebih besar atau sama dengan x <=y 1 jika x lebih kecil atau sama dengan y, 0 jika tidak
== Sama dengan x == y 1 jika x sama dengan y, 0 jika tidak
!= Tidak samadengan x != y 1 jika x dan y tidak sama, 0 jika tidak
  • Operator Unary ‘++’ dan operator unary ‘- -‘ merupakan operator khusus yang ada pada bahasa C dan jarang dijumpai di Bahasa yang lain. Operator ‘++’ akan menambah nilai numerik 1  ke pengenal yang menggunakannya dan operator ‘- – ‘ akan mengurangi dengan nilai numerik 1 untuk pengenal yang menggunakannya. Misalnya bentuk X=X+1 dapat dituliskan sebagai X++. Sedangkan bentuk X=X-1 dapat dituliskan sebagai X–. Operator ini banyak dijumpai di statement for yang berbentuk sebagai berikut
    • for(I=1; I<10;I=I+1)
    • Dapat ditulis dengan operator ‘++’ sebagai berikut
    • for(I=1;I<10;I++)

Contoh 1:

Nilai A adalah 5, nilai B adalah 7, dan nilai C adalah “a”. Beberapa ungkapan hubungan yang menggunakan variable-variebel ini dan hasilnya tampak sebagai berikut :

  • #include <stdio.h>
  • main()
  • {
  • int A=5,B=7;
  • printf(“%d < %d hasilnya adalah %d \n”, A,B,A<B);
  • printf(“%d<=%d hasilnya adalah %d \n”, A,B,A<=B);
  • printf(“%d>%d hasilnya adalah %d \n”,A,B,A>B);
  • printf(“%d>=%d hasilnya adalah %d \n”,A,B,A>=B);
  • printf(“%d==%d hasilnya adalah %d \n”,A,B,A==B);
  • printf(“%d !=%d hasilnya adalah %d \n”,A,B,A!=B);
  • }

Jika program ini dijalankan akan didapatkan hasil :

5 <   7 hasilnya adalah 1

5 <= 7 hasilnya adalah 1

5 >    7 hasilnya adalah 0

5 >= 7 hasilnya adalah 0

5 == 7 hasilnya adalah 0

5 != 7 hasilnya adalah 1

Operator hubungan banyak digunakan untuk penyeleksian kondisi dengan statement if, do-while

1.3  Operator Logika

Operator logika adalah operator-operator yang berkaitan dengan operasi logika, seperti negasi, (ingkaran), konjungsi (dan), dan disjungsi (atau).

Tabel 1.4 Daftar operator logika

Operator Nama Contoh Penjelasan
! NOT logika !x 1jika x nol, 0 jika tidak
&& AND logika x && y 1 jika x dan y keduanya 1
|| OR logika x ll y 0 jika x dan y keduanya 0

Misalnya nilai A adalah 5, B adalah 7, dan C adalah ‘ a’, maka ungkapan logika berikut ini akan mempunyai hasil akhir benar. Hasil akhir benar dari ungkapan logika tersebut didapat dari langkah-langkah sebagai berikut ini.

  • Jenjang operator hubungan lebih tinggi dibandingkan dengan jenjang operator logika, sehingga ungkapan-ungkapan hubungan dikerjakan terlebih dahulu. Ungkapan hubungan A < B adalah benar, maka akan bernilai 1. Ungkapan hubungan B == 7 adalah benar dan bernilai 1. Ungkapan hubungan C > ‘ z ‘ adalah salah maka bernilai 0.
  • Operator logika ‘ && ‘ mempunyai jenjang yang lebih tinggi dibandingkan dengan operator logika ‘ || ‘ , sehingga ungkapan logika 1 && 0 dikerjakan terlebih dahulu dengan hasil logikanya adalah 0.
  • Ungkapan logika 1 || 0 selanjutnya dikerjakan dengan memberikan hasil akhir bernilai logika benar atau 1.

1.4  Operator Bitwise Logika

Operator bitwise logika memperlakukan operan-operand-nya sebagai sebuah kuntitas yeng terdiri dari bit-bit. Operasi dilakukan terhadap masing-masing bittersebut satu demi satu. Operator &&, ||, dan ! memperlakukan seluruhoperand-nya sebagai sebuah nilai benar atau salah yang tunggal. Sedangkan operator bitwise logika dikenakan secara parallel terhadap posisi bit secara individu.

Tabel 1.5 Operator bitwise logika

Operator Nama Contoh Penjelasan
~ Bit-NOT ~x Mengubah bit 1 menjadi 0 dan bit 0 menjadi 1
& Bit-AND x & y AND bitwise dari x dan y
| Bit-OR x / y OR bitwise dari x dan y
^ Eksklusif-OR x ^ y Bernilai 1 bila bit-bit x dan y berbeda
<< Left Shift x << 4 x digeser ke kiri sebanyak 4 posisi bit
>> Right Shift x >> 4 x digeser ke kanan sebanyak 4 posisi bit

1.5  Operator-operator Khusus

Disamping operator-operator yang telah dibahas sebelumnya, C memiliki beberapa operator lain yang bersifat khusus dan digunakan untuk maksud-maksud tertentu. Beberapa diantaranya adalah sebagai berikut

  1. Operator sizeof

Operator sizeof adalah sebuah operator unary yang digunakan pada perhitungan jumlah byte yang dibutuhkan untuk menyimpan sebuah objek atau jenis data. Penentuan ini diperlukan karena sebagian besar jenis data dan variabel membutuhkan tempat penyimpanan internal yang berbeda antara satu komputer dengan komputer yang lain. Dengan penentuan ini, konsistensi data yang digunakan pada program dapat dipertahankan.

  • Contoh :
    #include <stdio.h>
  • main()
    {
    char C;
    int I;
    long int LI;
    float F;
    double D;
    long double LD;
  •      printf (“ukuran karakter = %d byte \n”, sizeof C);
    printf (“ukuran integer= %d byte\n”, sizeof I);
    printf(“ukuran long integer= %d byte \n”,sizeof LI);
    printf (“ukuran float= %d byte \n”,sizeof F);
    printf (“ukuran double= %d byte \n”,sizeof D);
    printf (“ukuran long double= %d byte \n”,sizeof LD);
    }

Jika program ini dijalankan maka akan didapatkan hasil:
ukuran karakter= 1 byte

ukuran integer= 2 byte

ukuran long integer= 4 byte

ukuran float= 4 byte

ukuran double= 8 byte

ukuran long double= 10 byteB.

  1. Operator penugasan

Operator penugasan (assignment operator) adalah operator yang digunakan untuk memberikan nilai pada suatu variabel. Operator ini adalah binaryoperator, dengan sisi sebelah kirinya berupa lvalue, yaitu sebuah variabel tunggal yang mengacu ke memori komputer, sementara sisi sebelah kanannya dapat berupa lvalue atau rvalue. Rvalue adalah sebuah ekspresi yang bukan lvlaue, contohnya paling sederhana adalah konstanta. Selain itu operator penugasan juga dapat digabungkan dengan operator aritmatika dan operatorbitwise logika.

Tabel 1.6 Daftar operator gabungan

Operator Contoh Ekspresi ekivalen Penjelasan
+= x += n x = x + n Tambah x dengan n
-= x -= n x = – n Kurangi x dengan n
*= x *= n x = * n Kalikan x dengan n
/= x /= n x = / n Bagi x dengan n
%= x %= n x = % n Pembagian sisa x dengan n
<<= x <<= n x = << n x digeser ke kiri sebanyak n posisi bit
>>= x >>= n x = >> n x digeser ke kanan banyak n posisi bit
&= x &= n x = & n Setiap bit x di-AND kan dengan setiap bit n
|= x |= n x = | n Setiap bit x di-OR kan dengan setiap bit n
^= x ^= n x = ^ n Setiap bit x di-XOR kan dengan setiap bit n

Contoh :

Misal “=” adalah operator pengerjaan yang akan memberikan nilai dari ungkapan  kepada variabel.

Contoh :

Misalnya variabel I dan J adalah variable-variabel tipe interger dengan nilai awal keduanya adalah 10. Statement-statement berikut ini menggunakan variable-variabel I dan J dan hasil  ungkapannya.

tabel 5 Contoh Operator Pengerjaan

Statement Ekuivalen dengan Hasil ungkapan
I += 3; I = I + 3; I = 10+3 = 13
I -= 2; I = I – 2; I = 10-2 = 8
I *= J/2; I = I*(J/2); I=10* (10/2)=50
I /= J-8; I = I/(J-8); I= 10/ (10-8)= 5
  1. Operator koma

Operator koma digunakan untuk memisahkan sederetan nama variabel dalam sebuah deklarasi, memisahkan argument fungsi, menyatukan dua ekspresi menjadi sebuah pernyataan, memungkinkan pemberian lebih besar dari satu ekspresi pada harga awal, dan perbaikan harga pada struktur pengulangan.

Misalnya Statement berikut ini:

X= ( B= 5, B*2);

Akan dihasilkan nilai X adalah 10, karena B= 5 akan diproses terlebih dahulu dan kemudian nilai B di kalikan dengan nilai 2. Hasil akhir ini yaitu nilai 10 diberikan ke variabel X. Nilai B terakhir adalah 5, sedangkan operasi B*2 tidak merubah nilai B karena operasi ini hasilnya tidak disimpan di variabel B.

  • Operator bertingkat

Operator bertingkat (nested operator) adalah beberapa operator yang dikenakan di dalam sebuah ekspresi. Masing-masing operator di dalam ekspresi tersebut memberikan sebuah nilai yang kemudian dapat digunakan didalam ekspresi yang lebih besar.

  • Operator alamat

Operator alamat adalah operator yang memberikan alamat dari operand­-nya, misalnya &x memberikan alamat dari x. Operand yang dikenakan pada & haruslah merupakan lvalue¸yang memiliki tempat penyimpanan di dalam memori.

  • Operator bersyarat

Operator yang satu-satunya bersifat triadic (ternary operator) yang membutuhkan tiga buah operand dan dikenal juga sebagai ekspresi bersyarat. Ketiga buah operand yang dibutuhkan pada operator ini terdiri dari: satu ekspresi yang akan diuji dan dua ekspresi pilihan.

  • Operator cast

Dalam sebuah program, pengkonversian jenis data secara otomatis sedapat mungkin hendaklah dihindarkan, khususnya pada kasus demosi, karena hal ini akan dapat menimbulkan hal-hal yan tidak diinginkan, misalnya terjadi pemotongan nilai (truncation).

Adakalanya pengkonversian jenis data malah berguna dan perlu dilakukan. Dalam hal ini, C berprinsip untuk tidak memberikan batasan apapun dan melimpahkan tanggung jawab ke pemrogram untuk tidak menyalahgunakan kebebasan ini. Jadi, hendaklah pengkonversian dilakukan dengan dangat hati-hati sekali, sehingga jenis data yang dikonversi dapat dilakukan dengan tepat. Metode melakukan hal itu disebut casting, menggunakan operator berupa sepasang tanda kurung biasa.

  1. Assignment Statement
  1. The Assignment Operator (=)

Dalam bahasa Indonesia assignment ini adalah penugasan. Saya rasa arti kata ini akan membingungkan kita, dalam bahasa saya arti yang lebih cocok dengan yang dilakukan oleh Assignment operator (=) ini dapat diartikan dengan “diisi. untuk lebih jelasnya mari kita lihat contoh dibawah ini :

  •  variable = expression;
  • <target_var> <assign_operator> <expression>
  • A == 7;   ==>variable  A diisi dengan 7.

=  can be bad when it is overloaded for the relational operator for equality (that’s why the C-based languages use == as the relational operator)

B = 1 + 1; ===> variable B diisi dengan hasil 1+1 yaitu 2.

C = A + 1; ===> variable C diisi dengan hasil varaibel A ditambah 1 yaitu 7 +1 = 8.

 2.Assignment Statement : Conditional Target

Statement yang akan ditampilkan bergantung pada kondisi yang telah kita deklarasi kan

Contoh:

  • if (x%2==0) {
  •      printf(“genap”);
  • }
  • Else {
  •      printf(“ganjil”);
  • }

Jika kita memasukkan angka yang akan habis dibagi 2 maka output yang dikeluarkan adalah “GENAP”, Sebalik-nya jika angka yang dimasukkan tidak habis dibagi 2 maka output yang dikeluarkan adalah “GANJIL”.

  1. Assignment Statements: Compound Assignment Operators

Cara sederhana untuk mendeklarasikan sebuah form

Contoh :

  • i = i*2
  • dapat ditulis lebih singkat menjadi : i*=2
  1. Assignment Statements: Unary Assignment Operators

Operator penetapan Unary dalam C-bahasa berbasis menggabungkan pertambahan dan pengurangan operasional perusahaan dengan contoh-contoh penetapan:

sum     =  x++ (x ditulis dahulu, baru ditambah)
sum     = ++x  (ditambah dulu x nya, baru ditulis x nya)
sum     = x– (x ditulis dahulu, baru dikurangi)
sum     = –x (x dikurang dahulu, baru ditulis)
count++ (count incremented)
-count++ (count incremented then negated)

  1. Assignment as an Expression

Dalam bahasa c, assignment statement menghasilkan hasil dan dapat digunakan sebagai operand

  • int c;
  • while((c=10)>0)
  1. Multiple Assignments

Untuk mendeklarasi kan hal hal yang bernilai sama dalam suatu variabel

sample1 = sample2 = 0;

sama seperti

sample1 = (sample2 = 0);

yang berarti sama dengan

sample2 = 0;

sample1 = sample2;

yang berarti sample1 dan sample2 sebenarnya bernilai sama yaitu 0.

  1. Assignment in Functional Languages

Identifiers dalam functional languages hanya nama dari nilai

Names are bound to values with val

     val fruit = apples + oranges;

Jika satu lagi val untuk buah-buahan dibuat, ia adalah sebuah nama yang berbeda dan baru

  1. Mixed-Mode Assignment

Dalam C , setiap nilai numerik dapat ditetapkan untuk setiap variabel scalar angka; hal-hal yang penting adalah konversi dilakukan.

  • int a, b;
  • float c;
  • c = a / b;

karena c adalah float, nilai-nilai a dan b dapat dipaksa untuk di hasilkan dalam bentuk float sebelum divisi, yang dapat menghasilkan nilai yang berbeda untuk c jika dibanding dengan cara-cara pemaksaan ditunda (misalnya, jika a adalah 2 dan b adalah 3).

Email will not be published

Website example

Your Comment: