Anda di halaman 1dari 3

9/7/2009

Ekspresi dan
Operator
Algoritme dan
Pemrograman † Contoh ekspresi: a+b, a*b, -x , 5, a<b, a==b, dsb.
† Ekspresi dapat berupa operand (misalnya x, 5, …),
dapat pula terdiri atas operand dan operator
(misalnya –x, a+5, …).
† Dua jenis operator berdasarkan operand:
„ U
Unary (satu
( t operand),
d) misal:
i l –a
Kuliah #4
„ Binary (dua operand), misal: a+b
• Ekspresi † Setiap ekspresi mempunyai nilai
• Operator
operator

a+b
operand
DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR

Jenis Operator C Operator Aritmatika

† Aritmatika Ekspresi
Operasi Operator Ekspresi C
† Logika Aljabar
† Penugasan Penjumlahan + f+7 f+7
† Increment decrement
Increment,
† If Pengurangan - p-c p-c

Perkalian * bm b*m

Pembagian / x:y x/y

Modulo % r mod s r%s

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Hasil ekspresi logika:


– TRUE, int bernilai tidak NOL (≠0) Operator Penugasan
Operator LOGIKA – FALSE, int bernilai NOL Assignment operator
Aljabar C Contoh Arti † Tanda =
= == (x == y) x sama dengan y ?
† Ada dua bagian yang dipisahkan =
≠ != (x != y) x tidak sama dengan y ? „ L-Value : alamat lokasi memori tempat nilai disimpan
> > (x > y) x lebih besar dari y ? „ R-Value : nilai yang disimpan
< < (x < y) x lebih kecil dari y ? † Contoh:
≥ >= (x >= y) x lebih besar or samadengan y ? „ a = 5;
≤ <= (x <= y) x lebih kecil or samadengan y ? „ b = a = 10;
∩ && ((x>0) && (x<3)) x > 0 dan x < 3
„ c = c + 5;

∪ || ((x<0) || (x>3)) x < 0 atau x > 3


~ ! ! (x < 0) x tidak lebih kecil dari 0

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

ILKOM IPB 1
9/7/2009

Compound Assignment
Operator Increment & Decrement

† Menggabungkan operator penugasan dengan † Increment : ++


operator aritmatika. † Decrement : --
† Contoh: † Ada dua tipe:
„ c=c+1 dapat ditulis Æ c += 1 „ Prefix, misalnya ++c, --d
Nilai ekspresi adalah nilai setelah dilakukan operasi
„ x=x*2 dapat ditulis Æ x *= 2 increment/decrement
† Operator yang dapat menggunakan compound „ Postfix, misalnya c++, d—
adalah +, -, *, /, dan % Nilai ekspresi adalah nilai sebelum dilakukan operasi
increment/decrement
† Contoh (misal nilai awal a=5, b=8)
„ Nilai a++ adalah 5, tetapi nilai a setelah itu adalah 6
„ Nilai ++b adalah 9, dan nilai b setelah itu adalah 9

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Operator if Precedence dan Associativity

† Sintaks: ( kondisi ? eks1 : eks2 ) PRECEDENCE


† Artinya jika kondisi bernilai benar (true) maka † Menentukan urutan operasi dari operator-
ekspresi tersebut bernilai eks1. Selainnya, operator dalam ekspresi majemuk.
bernilai eks2. † Operator dengan tingkat precedence lebih
† Contoh:
C t h ti
tinggi
i akan
k di
diproses l bih dahulu.
lebih d h l
n1 += ( (nilai < 10) ? 1 : 0 )
setara dengan: ASSOCIATIVITY
if (nilai<10)
† Menentukan arah evaluasi bila ada dua atau
n1=1;
lebih operator dengan tingkat precedence yang
else
sama.
n1=0;
† Dilambangkan dengan LR atau RL.
DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Operator Precedence Chart (http://www.swansontec.com/sopc.html)


Operator Type Operator Associativity
Primary Expression Operators () [] . -> expr++ expr-- left-to-right

Unary Operators
* & + - ! ~ ++expr --expr
right-to-left
Kasus #1
(typecast) sizeof()
*/% † Deskripsi:
+- Air bersih LAYAK diminum jika memenuhi dua
>> << syarat, yaitu kadar besi kurang dari p, dan kadar
< > <= >= bakteri coli kurang dari q. Jika tidak memenuhi
== != kedua syarat
y tersebut,, air dikatakan TIDAK LAYAK
Binary Operators left-to-right untuk diminum.
&
^
† Implementasi dalam program:
|
if ((besi>p) && (coli>q))
&&
printf("TIDAK LAYAK"); BENARKAH
||
else ??
Ternary Operator ?: right-to-left
printf("LAYAK");
= += -= *= /= %= >>= <<= &=
Assignment Operators right-to-left
^= |=
Comma , left-to-right

ILKOM IPB 2
9/7/2009

Latihan Soal #1
Kasus #2 Apa output program berikut?
#include <stdio.h> #include <stdio.h>
main() { main()
int n; {
int a = 5;
scanf("%d", &n); printf("\n%d", a += 3);
if (n=0) printf("\n%d", a -= 3);
printf( NOL );
printf("NOL"); printf("\n%d",
printf( \n%d , a *= 3);
else printf("\n%d", a /= 3);
printf("\n%d", a %= 3);
printf("TIDAK NOL");
return 0; printf("\n%d", a); printf("\n%d", ++a);
} printf("\n%d", a); printf("\n%d", a++);
printf("\n%d", a); printf("\n%d", --a);
printf("\n%d", a); printf("\n%d", a--);
† Apa outputnya jika diberikan input data 0? printf("\n%d", a);
† Apa outputnya jika diberikan input data 5? return 0;
† Apa yang dapat disimpulkan dari kasus ini? }

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Latihan Soal Latihan Soal


#2 #3
Variabel gaji memiliki kisaran nilai 1,000,000 sampai dengan
Mana di antara penamaan variabel berikut yang 2,000,000 rupiah dengan satuan terkecil adalah satu rupiah,
benar? Mengapa yang lain salah? variabel bulan memiliki kisaran nilai 1-12 yang menunjukkan
nomor bulan Januari hingga Desember, dan variabel potongan
a. 3n+1 adalah nilai persen dari gaji. Cara membuat deklarasi yang
paling tepat ketiga variabel tersebut adalah .....
b. n+1 a int gaji
a. gaji, bulan
bulan, potongan;
c. 3n1 b. long int bulan, gaji, potongan;
c. int bulan;
d. 3n_1 long int gaji;
e. n_31 float potongan;
d. int bulan;
float potongan, gaji;
e. double gaji, potongan;
int bulan;

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Latihan Soal Latihan Soal


#4 #5
Di antara deklarasi variabel berikut mana yang SALAH? Misalkan terdapat tiga variabel bertipe int, yaitu
Mengapa?
a=-15, b=-10, c=-5.
a. int a, d. int a=b=1;
b; float c=0.5; p nilai ekspresi
† Berapa p a<b<c ? True/False
/ ?
† Berapa nilai (++b+c--) ?
b. int a=0; e. int b,a=0;
int b=0; float c=0.5;

c. int a=0;
int b;
float c;

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

ILKOM IPB 3

Anda mungkin juga menyukai