Operator Operand Pemrograman C
Operator Operand Pemrograman C
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :
Memahami tentang proses sederhana (simple process) berupa pemanggilan procedure (fungsi) dan ekspresi serta dapat menerapkannya dalam algorithma ataupun pemrograman dengan bahasa pemrograman C.
7/14/12
Outline Materi
Proses Sederhana (Simple Statement) Ekspresi Operator Operator Operator Operator Operator Penugasan (assignment) Logika Aritmetika Relasional Bitwise
7/14/12
33
Proses Sederhana
Dikatakan proses sederhana karena dipandang sebagai proses yang hanya mempunyai sebuah aliran masukan dan sebuah aliran keluaran. Proses sederhana dalam pemrograman komputer terdiri dari:
Pemanggilan procedure atau fungsi Perhitungan arithmatika atau logika
Aliran Masukan
ata u
Proses
Pemanggilan procedure/fungsi
44
Ekspresi
Ekspresi merupakan proses sederhana dalam pemrogram-an komputer untuk melakukan proses perhitungan arithmatika dan logika. Prinsip dasar perhitungan arithmatika dan logika dalam pemrograman komputer adalah melakukan perhitungan arithmatika atau logika kemudian hasilnya disimpan dalam variabel tertentu. Dalam flowchart digambarkan sbb.:
Dala mC
Ekspresi
7/14/12
Ekspresi
Contoh:
cc+ 1
c=c+1; atau c+=1; atau Artinya (dibaca) nilai data dari variabel c ditambah ++c; atau c++;
dengan 1 hasilnya disimpan ke dalam variabel c. Tidak boleh:
c+1
Karena tidak ada proses penyimpanan dari hasil perhitungan dari c+1 ke variabel 7/14/12
66
Ekspresi
Komponen utama ekspresi adalah operand dan operator. Operand dapat berupa variabel, konstanta, nilai data konstan maupun fungsi. Setiap operand harus memiliki nilai data.
Operator adalah simbol yang mengolah nilai pada operand dan menghasilkan satu nilai baru.
Dalam pemrograman komputer penulisan perhitungan arithmatika/logika TIDAK BOLEH BERTINGKAT. Contoh: xy + yz x xy yz
Presedensi menentukan urutan pengerjaan operator berdasarkan prioritas. Operator yang memiliki tingkat presedensi lebih tinggi akan dikerjakan lebih dahulu. Assosiativitas menentukan urutan pengerjaan operator berdasarkan lokasinya dalam sebuah ekspresi (apakah dari kiri atau dari kanan). Assosiativitas berlaku untuk operator-operator yang memiliki presedensi yang sama.
7/14/12
88
SIMBOL :: () [] -> .
NAMA Resolusi Lingkup Kurung Elemen array Pointer ke anggota struktur atau kelas Anggota struktur, union atau kelas Pre-increment Pre-decrement Logika not Komplemen Bitwise Unary minus Unary plus Alamat Indirection Type casting Ukuran tipe data Alokasi memori Dealokasi memori
PRIORITAS 1
Resolusi Lingkup
Kiri-Kanan Kiri-Kanan Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri
Operator Unary
7/14/12
99
SIMBOL
NAMA
Perkalian Pembagian Sisa Pembagian Penambahan Pengurangan Geser Kiri Geser Kanan Lebih kecil Lebih kecil sama dg Lebih besar Lebih besar sama dg Sama dengan Tidak sama dengan Bitwise AND Bitwise XOR Bitwise OR Logika AND Logika OR Operator kondisi Operator penugasan arithmatika
PRIORITAS
4 5 6
URUTAN PENGERJAAN
Kiri-Kanan Kiri-Kanan Kiri-Kanan
* / % + Operator penambahan << Pergeseran bit >> < <= Operator Relational > >= == Operator Relational != & Operator Bitwise ^ | && Operator Logika || Operator Ternary ?: =, +=, -=, *=, /=, %= Operator Penugasan Majemuk &=, ^=, |=, <<=, >>= Operator koma ,
Kiri-Kanan
8 9 10 11 12 13 14 15
7/14/12
16
10
Contoh:
xy + yz x xy yz
7/14/12
11
12
Operator
Didasarkan atas jumlah operand, operator dapat dibedakan menjadi tiga jenis, yaitu :
Unary operator Binary operator Ternary operator
Unary operator memerlukan 1 operand, binary operator memerlukan 2 operand, sedangkan ternary operator memerlukan 3 operand.
7/14/12
13
Operator
Berdasarkan jenis operasinya, operator dalam bahasa pemrograman C dapat dikelompokkan : Operator Penugasan (assignment operator) Operator Logika Operator Aritmatika Operator Relasional Operator Bitwise Operator Pointer
7/14/12
14
Termasuk Binary operator Digunakan untuk memberikan nilai kepada suatu Operand. Sintak sbb: operand1 operator operand2; Operand1 harus berupa variabel, sedangkan operand2 dapat sebarang operand termasuk variabel dari operand1. Urutan pengerjaan (assosiativitas) operator penugasan dari kanan ke kiri.
7/14/12
15
Operator Penugasan
Contoh
// konstanta // variabel lain // ekspresi // fungsi
x = 2; x = y; x = 2 * y; a = sin (y);
Operator Aritmatika
Operator Aritmatika
Modulo:
Simbol : % Termasuk Binary operator Untuk menghitung sisa hasil bagi n % 2, dapat digunakan untuk menguji apakah integer n bernilai genap atau ganjil n % 2 = 0 n GENAP n % 2 = 1 n GANJIL
Operator Aritmatika
Contoh:
N++; //post increment ++N; //pre increment N--; --N; //post decrement //pre decrement
Jika statement increment stand alone. Maka N++; atau ++N; sama artinya N=N+1; Jika statement decrement stand alone. Maka N--; atau --N; sama artinya N=N-1;
7/14/12
19
Operator Aritmatika
Contoh:
#include <stdio.h> int main () { int x = 44; int y = 44; ++x; printf(x = %d\n, x); y++; printf(y = %d\n, y); }
/* hasilnya 45 */ /* hasilnya 45 */
7/14/12
20
Operator Aritmatika
Jika ++n dan n++ sebagai statement yang terikat dalam ekspresi lainnya (sub expresi), keduanya mempunyai arti yang berbeda. ++n -> n ditambah 1, baru diproses terhadap ekspresinya n++ -> n langsung diproses terhadap ekspresinya tanpa ditambah 1 terlebih dahulu, pada saat selesai baru n ditambah 1
int main () { int x=44; int y = 44; int z; z = ++x; /* z, x nilainya 45 */ z = y++; /* z nilainya 44 dan y nilainya 45 */ return(0); 7/14/12
21
Operator Aritmatika
Setiap ekspesi yang berbentuk : <Variabel> = <Variabel> <Operator><Exp>; dapat diganti dengan : <Variabel> <Operator> = <Exp>; Operator ini sering disebut dengan Combined Operator. Ekspresi
a = a + b; a = a b; a = a * b; a = a / b; a = a % b; a=a^b;
22
Operator Aritmatika
Contoh soal: x *= y +1; artinya sama dengan :
A. B. C. D.
x x x x
= x * (y + 1); = x * y + 1; = x + 1 * y; = (x + 1) * y; A
Jawab:
7/14/12
23
Operator Relasional
Digunakan untuk membandingkan dua nilai, dan hasilnya TRUE atau FALSE
Simbol == != < > <= >= ?: Sama Dengan Tidak Sama Dengan Lebih Kecil Dari Lebih Besar Dari Lebih Kecil atau Sama Dengan Lebih Besar atau Sama Dengan Conditional assignment
7/14/12
Fungsi
24
Operator Relasional
TRUE dalam bahasa pemrograman C nilainya Tidak sama dengan NOL FALSE dalam bahasa pemrograman C nilainya sama dengan NOL Sedangkan nilai TRUE yang diset oleh program C saat run time nilainya sama dengan 1. Contoh: int x; x = (20 > 10); //nilai x sama dgn 1
7/14/12 25
Operator Relasional
Contoh :
#include<stdio.h> int main() { int x=5,y=6; if ( x == y) printf("%d sama dengan %d\n",x,y); if ( x != y) printf("%d tidak sama dengan %d\n",x,y); if ( x < y) printf("%d lebih kecil daripada %d\n",x,y); if ( x > y) printf("%d lebih besar daripada %d\n",x,y); if ( x <= y) printf("%d lebih kecil atau sama dengan %d\n",x,y); if ( x >= y) printf("%d lebih besar atau sama dengan %d\n",x,y); return(0); }
7/14/12 26
Conditional Expressions
Jika (a>b) bernilai benar maka z=a. Sebaliknya jika (a>b) bernilai salah maka z=b.
7/14/12 27
Conditional Expressions
Conto h: #include <stdio.h> #include <iostream.h> int main () { int bil, abs; printf("Menentukan nilai absolut\n\n"); printf("Masukkan bilangan integer: "); scanf("%d",&bil); abs = (bil >= 0) ? bil : - bil; printf("Nilai absolutnya adalah : 7/14/12 %d \n\n",abs);
28
Operator Logika
B
True False True False
!A
False False True True
A && B
True False False False
A || B
True True True False 29
7/14/12
Operator Logika
Operand pada operator logika harus mempunyai nilai boolean, yaitu TRUE atau FALSE. Meskipun dalam bahasa C/C++ nilai TRUE dinyatakan dalam bentuk nilai integer yang tidak sama dengan nol (0) dan sebaliknya nilai FALSE dinyatakan dalam bentuk nilai integer yang sama dengan nol (0), tetapi nilai data integer tidak dibolehkan sbg operand dari operator logika.
Contoh:
Operator Bitwise
Simbol
& | ^ ~ >> <<
Fungsi
AND OR XOR Complement 1 Shift Right Shift Left
Contoh
A&B A | B; A ^ B; ~A; A >> 3; B << 2;
7/14/12
31
Operator Bitwise
a=24 Binernya: 011000 b=35 Binernya: 100011 (a&b) per bit hasilnya : 000000 desimalnya 0 (a | b) per bit hasilnya : 111011 7/14/12
32
Operator Bitwise
Dua buah bit di-XOR-kan akan menghasilkan 1 jika kedua bit tersebut berbeda, dan akan menghasilkan 0 jika kedua bit tersebut sama. Contoh:
int A,B=45; A=B^75; //Nilai A=102
Desimal 45 binernya: 0101101 Desimal 75 binernya: 1001011 Kemudian bit per bit di XOR kan maka hasilnya: 1100110 atau (102 desimal).
7/14/12 33
Operator Bitwise
Dengan menggunakan operator komplemen (~), maka setiap bit bernilai 0 akan dirubah menjadi 1 dan sebaliknya. Contoh:
int A, B=0xC3; A=~B; //nilai A=0x3C;
0xC3 binernya: 1100 0011 Di-komplemenkan hasilnya: 0011 1100 atau dlm notasi hexadecimal menjadi 3C
7/14/12 34
Catatan: Penulisan bilangan hexadesimal pada bhs pemrograman C menggunakan awalan 0x atau 0X (nol-X).
Operator Bitwise
Operator shift-right (>> n) dapat dipergunakan untuk menggeser n bit ke kanan dan diberi nilai 0 (nol) sejumlah n bit dari paling kiri yang ditinggalkan. Operator shift-left (<< n) dapat dipergunakan untuk menggeser n bit ke kiri dan diberi nilai 0 (nol) sejumlah n bit dari paling kanan yang ditinggalkan.
Contoh:
Catatan: 78 binernya: 00100 1110 Geser kekanan 3 bit: 000001001 = 9 Geser kekiri 2 bit : 7/14/12 010011000 = 312
35
Operator Pointer
* (value of)
7/14/12
36
Latihan
7/14/12
37
Latihan
Sebutkan beberapa operator yang bisa berfungsi sebagai unary dan binary operator, dan berikan contohnya.
7/14/12
38
Latihan
#include <stdio.h> int main() { int x=10, y=6; x *= 5 + y; y += y &= x; printf(x = %d\ny = %d",x,y); return(0); } Apakah keluaran yang akan ditampilkan di layar monitor bila program di atas berhasil dieksekusi ?
7/14/12
39
Latihan
#include <stdio.h> #include <iostream.h> int main () { float x; x = 7/2; printf("x = %f\n",x); x = 7.0/2; printf("x = %f\n",x); x = 7/2.0; printf("x = %f\n",x); x = 7.0/2.0; printf("x = %f\n",x); x = (float)7/2; printf("x = %f\n\n\n",x); system("PAUSE"); Bagaimanakah hasil keluaran yang ditampilkan return(0); di layar monitor dari program di atas?, Jelaskan? }
7/14/12 40
Latihan
#include <stdio.h> #include <iostream.h> int main () { int y=33, x=45; y = y && x; printf("y = %d\n",y); y = y & x; printf("y = %d\n",y); y = y || x; printf("y = %d\n",y); y = y | x; printf("y = %d\n",y); y &= y = x; printf("y = %d\n",y); Apakah keluaran x; printf("y = y ^= yprogram di atasditampilkan di layar ? = yang akan berhasil dieksekusi monitor bila %d\n",y); system("PAUSE"); 7/14/12
41
Latihan
#include <stdio.h> #include <iostream.h> int main () { int y, n; n =10; y=++n; printf("y = %d\n",y); n =10; y=n++ printf("y = %d\n",y); n =10; n++ printf("n = Apakah keluaran yang akan ditampilkan di layar %d\n",n); program di atas berhasil dieksekusi ? monitor bila system("PAUSE"); return(0); } 7/14/12
42
Latihan
z = (n > 0) ? f : b; Perhatikan conditional expression diatas, bolehkah sekiranya variabel f dan b memiliki tipe data yang berbeda?
7/14/12
43