Anda di halaman 1dari 42

Pertemuan 03

Dasar Pemrograman Komputer [TKL-4002] 2010

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.

Proses Sederhana (Simple Statement)


Ekspresi Operator Penugasan (assignment) Operator Logika Operator Aritmetika Operator Relasional Operator Bitwise

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

Dalam flow-chart digambarkan sbb.:


Aliran Masukan Proc_name() Aliran Keluaran
Pemanggilan procedure/fungsi Aliran Masukan

atau

Proses
Aliran Keluaran

Perhitungan Arithmatika/Logika 4

Ekspresi merupakan proses sederhana dalam pemrogram-an komputer untuk mengolah data. Ekspresi pada umumnya dipergunakan untuk melakukan proses perhitungan matematika maupun logika. Konsep dasar perhitungan matematika maupun logika dalam pemrograman komputer adalah melakukan proses perhitungan arithmatika/logika kemudian hasilnya disimpan dalam variabel tertentu. Dalam flowchart digambarkan sbb.:

Var Ekspresi A/L

Komponen utama dalam ekspresi adalah operand dan operator.

Operand dapat berupa variabel, konstanta, nilai 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 aritmatika/logika tidak boleh bertingkat.


Dalam bahasa pemrograman C proses penyimpanan () ke variabel dimasukkan dalam kelompok operator (Assignment Operators), maka proses perhitungan A/L dalam bahasa pemrograman C hanya memuat ekspresi. Dalam flowchart dapat digambarkan sbb.:

Ekspresi A/L
6

Operator adalah simbol yang mengolah nilai pada operand dan menghasilkan satu nilai baru. Contoh : c=a+b
(Dalam pemrograman C, simbol = dan + adalah termasuk sebagai operator, sedangkan a, b dan c adalah operand)

Operator dapat dibedakan menjadi tiga jenis yang didasarkan atas jumlah operand-nya, yaitu :
Unary operator Binary operator Ternary operator

Unary operator memerlukan satu operand, dan binary operator memerlukan dua operand, sedangkan Ternary operator memerlukan 3 operand.
7

Berdasarkan jenis operasinya, operator dalam bahasa pemrograman C dapat dikelompokkan : Operator Penugasan (assignment operator) Operator Logika Operator Aritmatika Operator Relasional Operator Bitwise Operator Pointer

Termasuk Binary operator

Digunakan untuk memberikan nilai kepada suatu Operand. Sintak sbb: Operand1 = Operand2;
Operand di sebelah kiri (Operand1) harus memiliki address (L-Value) seperti variabel, sedangkan operand disebelah kanan (Operand2) bisa suatu konstanta, variabel lain, ekspresi atau fungsi.

Contoh
x = 2; x = y; x = 2 * y; x = sin (y); // konstanta // variabel lain // ekspresi
// fungsi

Tipe hasil operasi disesuaikan dengan tipe operand sebelah kiri.


int x = 7/2; /*nilai x sama dgn 3 */ float y = 3; /*nilai y sama dengan 3.000 */

10

Digunakan untuk melakukan operasi matematika


Simbol Fungsi Contoh

+
* /

Penambahan
Pengurangan Perkalian Pembagian

x = y + 6;
y = x 5; y = y * 3; z = x/y;

%
++ -()

Modulo
Increment Decrement Menaikan Priority

A = 10 % 3;
x++; z--; x=(2+3)*5
11

Modulo:

Simbol : % Termasuk Binary operator Untuk mencari sisa hasil bagi N % 2, dapat digunakan untuk menguji apakah integer n genap atau ganjil N % 2 = 0 n GENAP N % 2 = 1 n GANJIL

Increment dan Decrement:


Simbol : ++(increment), --(decrement) Termasuk unary operator Menaikkan (++) dan menurunkan (--) nilai variabel dengan nilai 1 Posisinya bisa di depan (pre) atau dibelakang (post) variabel

12

Contoh:
N++; ++N; N--; --N; //post increment //pre increment //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;

13

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 */

14

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); }
15

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;

Dapat diganti dengan


a += b; a -= b;

a = a * b;
a = a / b; a = a % b; a=a^b;

a *= b;
a /= b; a %= b; a ^= b;
16

Contoh soal :
x *= y +1; artinya sama dengan :
A.

B.
C. D.

x = x * (y + 1); x = x * y + 1; x = x + 1 * y; x = (x + 1) * y;

Jawab: A

17

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 Fungsi

18

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.

19

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); }

20

Contoh:

int x; x = (20 > 10); //nilai x sama dgn 1 x = (20 == 10); //nilai x sama dgn 0

21

Conditional expression menggunakan ternary operator ?: Sintak : exp1 ? exp2 : exp3;


Jika exp1 bernilai true, maka exp2 dieksekusi. Sebaliknya jika exp1

bernilai false, maka exp3 dieksekusi.

Contoh yang sama artinya dgn statement diatas: z = (a > b) ? a : b;


Jika (a>b) bernilai benar maka z=a. Sebaliknya jika (a>b) bernilai salah maka z=b.

22

Contoh:
#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 : %d \n\n",abs); system("PAUSE"); return(0); }

23

Digunakan untuk melakukan operasi logika


Simbol && || ! Fungsi AND OR NOT

Table Kebenaran operator logika:


A
True
True False False

B
True
False True False

!A
False
False True True

A && B
True
False False False

A || B
True
True True False
24

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:
int x=5; int y=0; x && y; (x > y) && (y>=0); //error //ok

25

Simbol
& |

Fungsi
AND OR

Contoh
A&B A | B;

^
~ >> <<

XOR
Complement 1 Shift Right Shift Left

A ^ B;
~A; A >> 3; B << 2;

26

Operasinya dilakukan bit per bit

Contoh:
int a=24; int b=35; int c; c = a & b; //nilai c = 0 c = a | b; //nilai c = 59

a=24 Binernya: 011000

b=35 Binernya: 100011


(a&b) per bit hasilnya : 000000 desimalnya 0 (a | b) per bit hasilnya : 111011 desimalnya 59

27

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).

28

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;
Catatan:
Penulisan bilangan hexadesimal pada bhs pemrograman C menggunakan awalan 0x atau 0X (nol-X). 0xC3 binernya: 1100 0011 Di-komplemenkan hasilnya: 0011 1100 atau dlm notasi hexadecimal menjadi 3C

29

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:
int A, B=78; A = B>>3; //nilai A=9 A = B<<2; //nilai A=312
Catatan: 78 binernya: 00100 1110 Geser kekanan 3 bit: 000001001 = 9 Geser kekiri 2 bit : 010011000 = 312

30

Pointer operator terdiri dari : & (address of)

* (value of)

AKAN DIBAHAS PADA TOPIK POINTER

31

Setiap Operator memiliki Presedensi (hirarki) dan assosiativitas. 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.

32

KATEGORI Resolusi Lingkup

SIMBOL :: () [] -> . ++ -! ~ + & * (type) sizeof new delete

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

URUTAN PENGERJAAN Kiri-Kanan Kiri-Kanan Kiri-Kanan

Kurung, indeks larik dan elemen struktur data

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

33

KATEGORI
Operator aritmatika perkalian

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

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

Kiri-Kanan Kiri-Kanan

Kiri-Kanan
Kanan-Kiri Kanan-Kiri Kiri-Kanan

Operator penugasan arithmatika


Operator penugasan bitwise Operator Koma 16

34

#include <stdio.h> #include <iostream.h> int main () { int a, b, z=100; float x, y; printf("Melihat pengaruh prioritas dan urutan pengerjaan\n\n"); printf("Masukkan sebarang nilai integer: "); scanf("%d",&a); x = a/3*3; y = a*3/3; z += b = a; printf("\n\nx = %d/3*3, diperoleh x = %f\n\n",a,x); printf("y = %d*3/3, diperoleh y = %f\n\n",a,y); printf("bila z=100, maka untuk z += b = %d diperoleh z = %d\n\n\n",a,z); system("PAUSE"); return(0); }

35

Jika semua variabel bertipe integer, maka tentukan nilai A sbb:


B=23; C=12; D=32; E=0; 1. A = B && E; 2. A = B & C; 3. A = C || D; 4. A = B | D; 5. A = B > 2; 6. A = B >> 2; 7. A = C < 3; 8. A = C << 3; 9. A = B = C; 10. A = B == C;

36

Sebutkan contoh operator yang termasuk :


1. Unary Operator 2. Binary Operator 3. Ternary Operator

Sebutkan beberapa operator yang bisa berfungsi sebagai unary dan binary operator, dan berikan contohnya.

37

#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 ?

38

#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"); return(0); }

Bagaimanakah hasil keluaran yang ditampilkan di layar monitor dari program di atas?, Jelaskan?
39

#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); y ^= y = x; printf("y = %d\n",y); system("PAUSE"); return(0); }

Apakah keluaran yang akan ditampilkan di layar monitor bila program di atas berhasil dieksekusi ?
40

#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 = %d\n",n); system("PAUSE"); return(0); }

Apakah keluaran yang akan ditampilkan di layar monitor bila program di atas berhasil dieksekusi ?

41

z = (n > 0) ? f : b;
Perhatikan conditional expression diatas, bolehkah sekiranya variabel f dan b memiliki tipe data yang berbeda?

42