Penulisan Kondisi Kesamaan Variabel dan LiteralEkspresi
- Cont oh ekspresi: a , x , a+b , a*b , -x , 5 , a<b , a==b , 7==c
- Ekspresi dapat melibat kan operat or
- +b
- *b
- -x
- – Cont oh: a
Operasi Logika
Hasil ekspresi logika:
& & ((x>0) & & (x<3)) 0 < x < 3 | | ((x<0) | | (x>3)) x < 0 at au x > 3 ~ ! ! (x < 0) x t idak lebih kecil dari 0 DEPARTEMEN ILMU KOMPUTER INSTITUT
!= (x != y) x t idak sama dengan y ? > > (x > y) x lebih besar dari y ? < < (x < y) x lebih kecil dari y ? >= (x >= y) x lebih besar or samadengan y ? <= (x <= y) x lebih kecil or samadengan y ?
Operat or LOGIKA Aljabar C Cont oh Art i = == (x == y) x sama dengan y ?
Penjum lahan + f + 7 Pengurangan - p - c Perkalian * b * m Pem bagian / x / y M odulo % r % s DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
Operator Arit met ika Operasi Operator Ekspresi C
Jenis Operator C
a + b oper at or oper an d
unt uk menghasilkan suat u nilai DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
dievaluasi
,
7 ==c
==b
, a
<=b
, a
,
, a
Ekspresi dan Operator
- Jenis operat or berdasarkan jumlah operand:
Kuliah #3 Ekspresi, Operat or, dan Condit ional St at em ent
Algorit me dan Pemrograman
- – Unary (sat u operand), misal: –a
- – Binary (dua operand), misal: a+b
- – Ternary (t iga operand), misal x ? y : z
- Set iap ekspresi
- Arit m et ika
- Logika • Penugasan • Increment , decrement
- Select ion cont rol condit ional stat ement
- – if
- – sw it ch..case DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
- – TRUE, int bernilai t idak NOL ( 0)
- – FALSE, int bernilai NOL
- Tabel kebenaran operasi x & & y
- Tabel kebenaran operasi x | | y
- De M organ’s Law
- – ! (x & & y) == (! x | | ! y)
- – ! (x | | y) == (! x & & ! y)
DEPARTEMEN ILMU KOMPUTER Penulisan Kondisi Kesamaan Variabel Lat ihan #1
#include <stdio.h>
dan Literal/ Ekspresi
int main() {
- int n;
Disarankan m enggunakan ungkapan scanf("%d", &n); lit eral == variabel if (n = 0) printf("NOL"); ekspresi == variabel else m isalnya printf("TIDAK NOL"); return 0;
5 == x }
(a + b) == y
- Tentukan output jika diberikan input 0.
agar kesalahan penget ikan “ ==“ m enjadi “ =“ • Tentukan output jika diberikan input 5. t erdet eksi sebagai kesalahan oleh compiler
- Apa yang dapat disimpulkan dari kasus ini? DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
- Tanda =
- Ekspresi (x+5<10 | | y>x+3 & & z-2&g
- Ada dua bagian yang dipisahkan =
- – Jika x = 2, y = 4, z = 2; hasil evaluasi:
- – L-Value : alam at lokasi m em ori t em pat nilai
- x+5<10 → TRUE disim pan y>x+3 → FALSE
- – R-Value : nilai yang disim pan
- Cont oh:
- – (TRUE || FALSE && FALSE)
- – a >– (TRUE || FALSE)
- – b = a =
- – TRUE
- – c = c + 5; DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
- M enggabungkan operat or penugasan dengan Operator Arti Contoh operat or arit m et ika.
- = Bilangan +=2 Bilangan = Bilangan+2
- Cont oh:
- – -= Pengurangan Nilai -=10 Nilai = Nilai - 10
- – x = x * 2 dapat dit ulis x * = 2
- = Perkalian Angka *= 3 Angka = Angka * 3
- Operat or yang dapat digunakan adalah +, -, * ,
- Increment : ++
- Decrement : --
- Ada dua t ipe:
- Jangan lakukan lebih dari sat u perubahan nilai
- c
- d
- – Pre-increment/ decrement , m isalnya
- – Hasil t idak t erdefinisikan dalan st andar C
- Cont oh yang melanggar st andar (t akt erdefinisi):
- – Post-increment/ decrement , m isalnya c++ ,
- Cont oh yang t idak melanggar st andar:
- Cont oh (m isal nilai aw al a = 5 , b = 8 )
- – Nilai ekspresi a++ adalah 5, tetapi nilai a setelahnya m enjadi 6
- – Nilai ekspresi
- b
- Program akan memilih sat u at au lebih st at ement
- – Termasuk percabangan (branching)
- Kondisi dinyat akan sebagai ekspresi yang mengendalikan arah percabangan.
- Pernyat aan yang digunakan disebut condit ional
- Bagaimana jika menggunakan operat or
- – Pernyat aa
- – Pernyat aan sw it ch … case DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
- Sint aks: (kondisi ? ekspr1 : ekspr2 )
- – Jika kondisi bernilai benar, maka hasil evaluasi ekspresi t ersebut adalah ekspr1.
- – Selainnya, hasil evaluasi ekspresi t ersebut adalah
- Cont oh:
- 15 15
- 15 KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU
- Out put program jika input 5 20:
- 1 5
- Out put program jika input 20 5: KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU
- Cont oh, berapa nilai b jika diberikan input 12?
- Struktur dengan banyak kondisi yang berbentuk ekspresi logika kesamaan nilai integer.
- Perhatikan potongan program berikut (apa yang dilakukan?)
- M enent ukan urut an operasi dari operat or-operat or dalam ekspresi m ajem uk.
- Operat or dengan t ingkat precedence lebih t inggi akan diproses lebih dahulu.
- M enent ukan arah evaluasi bila ada dua at au lebih operat or dengan t ingkat precedence yang sa
- Dilam bangkan dengan left -t o-right (LR) at au right -t o-left (RL). DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN
- & + - ! ~ ++expr --expr (typecast) sizeof()
- Y = 2 * 5 * 5 - 3 * 5 + 7;
- Evaluasi:
- / %
- >> << < > <= >= == != & ^
- Deskripsi:
- Implement asi dalam program: if ((besi>p) && (coli>q)) printf("TIDAK LAYAK"); else printf("LAYAK");
- Berapa nilai ekspresi a<b<c ? True/ False ?
- Berapa nilai (++b + c--) ?
Evaluasi Ekspresi Logika Operator Penugasan (Assignment )
z-2>3
→ FALSE
Contoh Penggunaan Compound Assignment Operator Compound Assignment Operator
Penjumlahan
c = c + 1 dapat dit ulis c += 1
/= Jumlah /= 5 Jumlah = Jumlah/5 Pembagian
/ , dan %
Sisa = Sisa % 2 DEPARTEMEN ILMU KOMPUTER INSTITUT %= Sisa hasil bagi Sisa %= 2
increment / decrement lain (pre/ post )? DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
at au
if (kondisi) simple or compound statement;
Bent uk umum:
if (i < 10) n1 += 3; else n1 += 5; DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN Condit ional statement : if
set ara dengan:
ekspr2 .
Ekspresi … ? ... : …
st at ement:
unt uk diproses at au t idak diproses berdasarkan kondisi t ert ent u.
Select ion Cont rol St ruct ure
Lat ihan #2 #include <stdio.h> int main() { int n; scanf("%d", &n); if (n++ = 0) printf("%d", n); return 0;
} • Tent ukan input yang menghasilkan out put .
i = i + 1; a[i] = i; DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
i = ++i + 1; a[i++] = i;
sat u variabel dalam sat u evaluasi
Catatan
DEPARTEMEN ILMU KOMPUTER INSTITUT adalah 9, dan nilai b setelahnya tetap 9 PERTANIAN BOGOR
Nilai ekspresi adalah nilai sebelum dilakukan operasi increm ent/ decrem ent
d--
Nilai ekspresi adalah nilai setelah dilakukan operasi increm ent/ decrem ent
,
Increment & Decrement
if (kondisi) simple or compound statement; else simple or compound statement; DEPARTEMEN ILMU KOMPUTER INSTITUT
Lat ihan #3 Condit ional statement : if
Diagram alir unt uk Diagram alir unt uk if…….. if……..else……. #include <stdio.h> int main(){ int a, b; scanf("%d %d", &a, &b);
FALSE k on d isi
FALSE k on d isi ? if (a<b)
? printf("%d\n", b-a);
TRUE printf("%d\n", a-b);
TRUE return 0; st a t e m e n ts
} st a t e m e n ts st a t e m e n ts
Apa out put program jika diberi input 5 20 ?
Apa out put program jika diberi input 20 5 ? KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU
Lat ihan #5 Lat ihan #4
#include <stdio.h> int main(){ int a, b;
#include <stdio.h>
scanf("%d %d", &a, &b);
int main(){
if (a<b) { printf("%d\n", b-a);
int a, b;
printf ("a lebih kecil");
scanf("%d %d", &a, &b);
}
if (a<b) {
else { printf("%d\n", a-b);
printf("%d\n", b-a);
printf ("a lebih besar");
printf("%d\n", a-b);
}
}
return 0; }
return 0;
1 5
}
a lebih kecil
Apa out put program jika diberi input 20 5 ?
a lebih besar KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU
Struktur else if :
if(syarat) { Condit ional statement : Nested if
…. perintah; …. perintah; } else if(syarat) { • St rukt ur seleksi if yang bercabang dengan banyak kondisi.
…. perintah;
…. perintah; } else if(syarat) scanf("%d", &a);
{ if (a<5)
…. perintah; b = 1;
…. perintah; } else if (a<10) else if(syarat) { else if (a<15)
…. perintah; b = 3;
…. perintah; } else else b = 4;
{ …. perintah; DEPARTEMEN ILMU …. perintah; KOMPUTER INSTITUT }
kondisi dan konst_ekspr berjenis integer (short, int, long, long long) Condit ional statement : switch … case
Berapa hasil evaluasi 4 * 4 + 4 * 4 + 4 – 4 * 4 ? PRECEDENCE
Precedence dan Associat ivit y
Cont oh program dengan swit ch….case….
} return 0; } DEPARTEMEN ILMU KOMPUTER
} DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR #include <stdio.h> int main() { short int hari; printf("Isikan nomor hari (1 = Ahad s/d 7 = Sabtu): "); scanf("%hd", &hari); switch (hari) { case 1: case 7: printf("Akhir pekan!\n"); break; case 2: case 3: case 4: case 5: case 6: printf("Hari kerja!\n"); break; default: printf("Nomor hari tidak valid!\n"); break;
int bil, hasil; scanf("%d", &bil); hasil = bil % 3; switch (hasil) { case 0: printf("NOL\n"); break; case 1: printf("SATU\n");break; default: printf("DUA\n"); break;
M engubah if ke sw itch … case:
} DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
... default: S5; S6; …; break;
Bent uk um um st rukt ur sw it ch … case switch(kondisi){ case (konst_ekspr1): S1; S2; …; break; case (konst_ekspr2): S3; S4; …; break;
Condit ional statement : switch … case
int bil, hasil; scanf("%d", &bil); hasil = bil % 3; if (0 == hasil) printf("NOL\n"); else if (1 == hasil) printf("SATU\n"); else printf("DUA\n"); DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
Condit ional statement : switch … case
Bentuk Nested if dengan banyak perintah : { if(syarat) …. perintah; …. perintah; if(syarat) { …. perintah; …. perintah; } { else …. perintah; …. perintah; } } else { …. perintah; …. perintah; if(syarat) { …. perintah; …. perintah; } else { …. perintah; …. perintah; } }
ASSOCIATIVITY
Contoh Precedence dan Associativity
Air bersih LAYAK diminum jika memenuhi dua syarat , yait u kadar besi kurang dari p, dan kadar bakt eri coli kurang dari q. Jika t idak memenuhi kedua syarat t ersebut , air dikat akan TIDAK LAYAK unt uk diminum.
DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN
M isalkan t erdapat t iga variabel bert ipe int , yait u a= -15 , b= -10 , c= -5 .
Lat ihan #8
} DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR //13 //10 //30 //10 //1 //1 //2 //2 //2 //3 //2 //2 //2 //1
#include <stdio.h> int main() { int a = 10; printf("\n%d", a += 3); printf("\n%d", a -= 3); printf("\n%d", a *= 3); printf("\n%d", a /= 3); printf("\n%d", a %= 3); 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--); printf("\n%d", a); return 0;
Lat ihan #6
Y = 2 * 5 * 5 - 3 * 5 + 7; = 10 * 5 - 3 * 5 + 7; = 50 - 3 * 5 + 7; = 50 - 15 + 7; = 35 + 7; = 42;
Ternary Operator ?: right-to-left Assignment Operators = += -= *= /= %= >>= <<= &= ^= |= right-to-left Comma , left-to-right
| && ||
left-to-right
right-to-left Binary Operators
Ope ra t or Pre ce de nce Cha rt ( ht t p: / / w w w.sw ansont ec.com / sopc.ht m l) Operator Type Operator Associativity Primary Expression Operators () [] . -> expr++ expr-- left-to-right Unary Operators