Konsep Pemrograman 4
OPERASI dan OPERATOR Operasi: proses terhadap data Operator: simbol operasi Operan: data yang dioperasikan Berdasarkan jumlah operan terlibat unary operator, satu operan: ++ -- unary minus binary operator, dua operan: + - * / ternary operator, tiga operan: ? : Berdasarkan jenis operasi Operator aritmetika Operator relasi Operator logika Operator bitwise Operator koma Operator assignment Operator
OPERASI dan OPERATOR Operator Aritmetika Simbol Fungsi Contoh + Penjumlahan y + 6 - Pengurangan 2010 - tahunlahir * Pekalian 3.14 * diameter / Pembagian jumlahdetik / 3600 % Modulus n % 16 ++ Increment x++ ++x -- Decrement z-- --z Operator
OPERASI dan OPERATOR Preincrement dan postincrement # include <stdio.h> int main() { int bulat1 = 10, bulat2 = 25; printf("sebelum = %d\n", bulat1); printf("sedang = %d\n", bulat1++); printf("setelah = %d\n", bulat1); printf("sebelum = %d\n", bulat2); printf("sedang = %d\n", ++bulat2); printf("setelah = %d\n", bulat2); return 0; } sebelum = 10 sedang = 10 setelah = 11 sebelum = 25 sedang = 26 setelah = 26 Operator
OPERATOR RELASI Operator Relasi Simbol Fungsi Contoh == Sama dengan grade == ‘a‘ != Tidak sama dengan pilih != ‘Y‘ < Lebih kecil daripada nilai < 56 > Lebih besar daripada nilai > 79 <= Lebih kecil atau sama usia <= 17 >= Lebih besar atau sama ip >= 2.00 Operator
OPERATOR LOGIKA Operator Logika Simbol Fungsi Contoh ! Not !a && And || Or (n < 0) || (n > 100) A B !A A && B A || B True False Operator
OPERATOR BITWISE Operator Bitwise Simbol Fungsi & Melakukan OR terhadap dua bit | Melakukan AND terhadap dua bit ^ Melakukan XOR terhadap dua bit << Menggeser bit-bit ke kiri >> Menggeser bit-bit ke kanan ~ Melakukan one’s complement Operator
OPERATOR BITWISE Operator Bitwise # include <stdio.h> int main() { unsigned char a = 25, b = 40; printf("%d AND %d = %d\n", a, b, a & b); printf("%d OR %d = %d\n", a, b, a | b); printf("%d XOR %d = %d\n", a, b, a ^ b); return 0; } 25 AND 40 = 8 25 OR 40 = 57 25 XOR 40 = 49 Operator
OPERATOR KOMA Operator Koma menggabungkan sejumlah nama variabel setipe pada deklarasi atau definisi variabel memisahkan argumen function menyatukan dua ekspresi menjadi sebuah pernyataan Inisialisasi dan kontrol pengulangan 1 2 3 4 int cacah, total; printf("Nilai: %f\n", nilai); t = a, a = b, b = t; for (i = 0, j = 1; j <= 100; j++, i++) Operator
OPERATOR ASSIGNMENT Operator Assignment Nilai expression diberikan kepada variabel di kiri varname = expression; # include <stdio.h> int main() { int a, b; /* 1 */ a = 7; /* 2 */ b = 9; /* 3 */ a = a + 8; /* 4 */ b = a % b; /* 5 */ printf("%d %d\n", a, b); return 0; } 15 6 Operator
OPERATOR ASSIGNMENT Operator Assignment /* 1 */ /* 2 */ /* 3 */ int main() { int a, b; /* 1 */ a = 7; /* 2 */ b = 9; /* 3 */ a = a + 8; /* 4 */ b = a % b; /* 5 */ ... } /* 1 */ /* 2 */ /* 3 */ /* 4 */ 15 6 /* 5 */ Operator
OPERATOR ASSIGNMENT L-value dan R-value R-value adalah nilai sebuah ekspresi. R-value dituliskan di kanan = . L-value menyatakan tempat menampung data. L-value dituliskan di kiri =. counter = counter + 1; L-value R-value Nilai variabel counter bertambah satu. Operator
MENUKAR ISI DUA VARIABEL (1) Tukar isi variabel x dan y a = x; b = y; y = a; x = b; Operator
MENUKAR ISI DUA VARIABEL (2) Tukar isi variabel x dan y z = x; x = y; y = z; Operator
COMPOUND OPERATOR Compound operator assignment berbentuk var1 = var1 opr var2 Boleh disingkat menjadi var1 opr= var2 Assignment Disingkat a = a + b; a += b a = a << b; a <<= b a = a – b; a -= b a = a >> b; a >>= b a = a * b; a *= b; a = a & b; a &= b; a = a / b; a /= b; a = a | b; a |= b; a = a % b; a %= b; a = a ^ b; a ^= b; Operator
PRECEDENCE & ASSOCIATIVITY Operator Precedence Tingkat atau prioritas pengerjaan operator a + b * c - d / e (a + (b * c)) - (d / e) Operator Associativity “Arah” pengerjaan operator a - b - c (a - b) - c Operator
PRECEDENCE & ASSOCIATIVITY Operator Asosiativitas Presedensi & Kiri ke kanan 8 ^ 9 | 10 && 11 || 12 ?: 13 = += -= *= /= Kanan ke kiri 14 , 15 Operator
EXPRESSION Expression (ekspresi) Elemen program yang jika dievaluasi (evaluate) akan menghasil nilai (value). sebuah konstanta adalah sebuah ekspresi sebuah variabel adalah sebuah ekspresi sebuah pemanggilan (pengaktifan) function adalah sebuah ekspresi ekspresi yang dioperasikan dengan ekspresi adalah sebuah ekspresi Operator
EXPRESSION # include <stdio.h> int main() { int a = -20, b = 30, c = 70; printf("%c %s %d %f\n", 'A', "algo", 10, 3.14); printf("%d %d\n", a, b); printf("%d\n", abs(a)); printf("%d %d %d\n", a + b); return 0; } 1 2 3 4 A algo 10 3.140000 -20 30 20 30 Operator
STATEMENT (COMMAND) Statement atau command Elemen program yang bila dijalankan (execute) akan menimbulkan side effect, yaitu perubahan isi memori variabel. # include <stdio.h> int main() { int a = 10, b = 25; printf("%d\n", a = b); printf("%d %d\n", a, b); return 0; } 25 25 25 Statement atau expression-kah ASSIGNMENT pada bahasa C? Operator
STATEMENT Vs EXPRESSION Statement atau expression ? a = b menghasilkan nilai, bisa di-print = adalah expression a = b menyebabkan isi variabel a berubah = adalah statement Assignment adalah statement dan juga expression a = b = c + 5; Operator
KONVERSI DATA Tipe data mencakup 2 hal: Tipe data integer (int) value atau nilai data Jenis operasi yang dapat dilakukan terhadap nilai Tipe data integer (int) Value: -10 0 3 123 Operasi: + - * / % Tipe data floating point number (float) Value: -6.0 3.14159 Operasi: + - * / Idealnya kedua data yang dioperasikan adalah setipe, jika tidak demikian maka akan dilakukan konversi secara implisit. Operator
KONVERSI DATA # include <stdio.h> int main() { int a = 10; float b = 2.34; a = a + b; printf("%d\n", a); return 0; } 12 a + b 10 + 2.34 10.00 + 2.34 12.34 Karena a hanya bisa menampung bilangan bulat maka bagian pecahan dibuang Operator
TYPE CASTING Type casting Proses konversi tipe data sehingga data seakan-akan (berperan sebagai) bertipe data tertentu. Dilakukan dengan menuliskan tipe data di dalam tanda kurung dan meletakkannya di kiri data yang akan diproses Operator
TYPE CASTING 3.000000 3.333333 # include <stdio.h> int main() { int bil1, bil2; float bil3; bil1 = 10; bil2 = 3; bil3 = bil1 / bil2; printf("%f", bil3); return 0; } 3.000000 # include <stdio.h> int main() { int bil1, bil2; float bil3; bil1 = 10; bil2 = 3; bil3 = (float) bil1 / bil2; printf("%f", bil3); return 0; } 3.333333 Operator
PREPROCESSOR DIRECTIVE Elemen program yang akan dilaksanakan pada tahap awal proses kompilasi. Diawali dengan simbol # # include untuk menyertakan header file # define memberi nama kepada elemen program mendeklarasi macro mendeklarasi symbolic constant Operator
PREPROCESSOR DIRECTIVE # define symbolicconstant constantvalue # define NILAIMAX 100 # define NILAIMIN 0 # define GARIS "--------------------" Operator
PREPROCESSOR DIRECTIVE # include <stdio.h> # define PI 3.14159 int main() { float radius, luas, kell; printf("radius ? "); scanf("%f", &radius); luas = PI * radius * radius; kell = 2 * PI * radius; printf("luas = %.6f\n", luas); printf("keliling = %.6f\n", kell); return 0; } radius ? 15 luas = 706.857727 keliling = 94.247704 Ingin menggunakan PI yang lebih akurat? Cukup ubah bagian #define Operator
SYMBOLIC CONSTANT Compiler menyediakan sejumlah symbolic constant # include <limits.h> Symbolic Constant Nilai CHAR_MIN -128 CHAR_MAX 127 UCHAR_MAX 255 SHRT_MIN -32768 SHRT_MAX 32767 INT_MIN -2147483648 INT_MAX 2147483647 Operator
SYMBOLIC CONSTANT # include <limits.h> # include <float.h> Nilai UINT_MAX 4294967295 LONG_MIN -2147483648 LONG_MAX 2147483647 ULONG_MAX FLT_MIN 1.175494 x 10–38 FLT_MAX 3.402823 x 1038 DBL_MIN 2.225074 x 10–308 DBL_MAX 1.797693 x 10308 Operator