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