Proses Sederhana
Pertemuan 04
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
Memahami tentang proses sederhana (simple
process) berupa pemanggilan procedure
(fungsi) dan ekspresi serta dapat
Outline Materi
Proses Sederhana (Simple Statement)
Ekspresi
Operator Penugasan (assignment)
Operator Logika
Operator Aritmetika
Operator Relasional
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
Dalam flow-chart digambarkan sbb.:
Proses
Aliran Masukan
Aliran Keluaran
atau
Proc_name
()
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.:
Var perhitungan A/L
Ekspresi
Contoh:
Artinya (dibaca) nilai data dari variabel c ditambah
dengan 1 hasilnya disimpan ke dalam variabel c.
Tidak boleh:
Ekspresi
c + 1
c c +
1
Dlm bhs pemrograman C dapat ditulis:
c=c+1; atau c+=1; atau ++c; atau c++;
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:
Ekspresi
yz
xy
x
Untuk itu setiap operator memiliki
Presedensi dan Assosiativitas
Operator
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
OPERATOR dengan
Prioritas dan Urutan Pengerjaan
KATEGORI SIMBOL NAMA PRIORITAS PENGERJAANURUTAN
Resolusi Lingkup :: Resolusi Lingkup 1 Kiri-Kanan
Kurung, indeks larik dan elemen struktur data
() Kurung
2
Kiri-Kanan
[] Elemen array Kiri-Kanan
-> Pointer ke anggota struktur atau kelas Kiri-Kanan
. Anggota struktur, union atau kelas Kiri-Kanan
Operator Unary
++ Pre-increment
3
Kanan-Kiri
-- Pre-decrement Kanan-Kiri
! Logika not Kanan-Kiri
~ Komplemen Bitwise Kanan-Kiri
- Unary minus Kanan-Kiri
+ Unary plus Kanan-Kiri
& Alamat Kanan-Kiri
* Indirection Kanan-Kiri
KATEGORI
SIMBOL
NAMA
PRIORITAS
PENGERJAAN
URUTAN
Operator aritmatika perkalian * Perkalian 4 Kiri-Kanan / Pembagian% Sisa Pembagian
Operator penambahan
+ Penambahan 5 Kiri-Kanan
- Pengurangan
Pergeseran bit
<< Geser Kiri
6 Kiri-Kanan
>> Geser Kanan
Operator Relational
< Lebih kecil
7 Kiri-Kanan
<= Lebih kecil sama dg
> Lebih besar
>= Lebih besar sama dg
Operator Relational
== Sama dengan 8 Kiri-Kanan
!= Tidak sama dengan
Operator Bitwise
& Bitwise AND 9
Kiri-Kanan
^ Bitwise XOR 10
| Bitwise OR 11
Operator Logika
&& Logika AND 12
Kiri-Kanan
|| Logika OR 13
Operator Ternary ?: Operator kondisi 14 Kanan-Kiri
Operator Penugasan Majemuk
=, +=, -=,
*=, /=, %= Operator penugasan arithmatika 15 Kanan-Kiri &=, ^=, |=,
<<=, >>= Operator penugasan bitwise
Contoh:
Ditulis dalam bhs pemrograman C:
x = (x * y + y * z)/(x * y – y * z);
OPERATOR dengan
Prioritas dan Urutan Pengerjaan
yz
xy
yz
xy
x
1
2
3
4
5
#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);
}
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,
Operator
Berdasarkan jenis operasinya, operator dalam
bahasa pemrograman C dapat dikelompokkan :
•
Operator Penugasan (assignment operator)
•
Operator Logika
Operator Penugasan
(assignment)
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
Operator Penugasan
Contoh
x = 2;
// konstanta
x = y;
// variabel lain
x = 2 * y;
// ekspresi
a = sin (y);
// fungsi
Tipe hasil operasi disesuaikan dengan tipe
operand sebelah kiri.
int x = 7/2;
/*nilai x sama dgn 3 */
Operator Aritmatika
Digunakan untuk melakukan operasi matematika
Simbol
Fungsi
Contoh
+
Penambahan
x = y + 6;
-
Pengurangan
y = x – 5;
*
Perkalian
y = y * 3;
/
Pembagian
z = x/y;
%
Modulo
A = 10 % 3;
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
Increment dan Decrement:
•
Simbol : ++(increment), --(decrement)
•
Termasuk unary operator
Contoh:
N++; //post increment
++N; //pre increment
N--; //post decrement
--N; //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;
Contoh:
#include <stdio.h>
int main ()
{ int x = 44; int y = 44;
++x;
printf(”x = %d\n”, x);
/* hasilnya 45 */
y++;
printf(”y = %d\n”, y);
/* hasilnya 45 */
}
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;
Operator Aritmatika
Setiap ekspesi yang berbentuk :
<Variabel> = <Variabel> <Operator><Exp>;
dapat diganti dengan :
<Variabel> <Operator> = <Exp>;
Operator ini sering disebut dengan
Combined Operator.
Ekspresi
Dapat diganti dengan
a = a + b;
a += b;
a = a – b;
a -= b;
a = a * b;
a *= b;
a = a / b;
a /= b;
Contoh soal
:
x *= y +1; artinya sama dengan :
A.
x = x * (y + 1);
B.
x = x * y + 1;
C.
x = x + 1 * y;
D.
x = (x + 1) * y;
Operator Relasional
Digunakan untuk membandingkan dua nilai, dan
hasilnya TRUE atau FALSE
Simbol
Fungsi
= =
Sama Dengan
!=
Tidak Sama Dengan
<
Lebih Kecil Dari
>
Lebih Besar Dari
<=
Lebih Kecil atau Sama Dengan
>=
Lebih Besar atau Sama Dengan
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;
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);
}
Conditional Expressions
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;
#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);
}
Conditional Expressions
Operator Logika
Digunakan untuk melakukan operasi logika
Table Kebenaran operator logika:
A
B
!A
A && B
A || B
True
True
False
True
True
Simbol
Fungsi
&&
AND
||
OR
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, a , b;
a = x && y; //error (hasil yg salah)
b = (x > y) && (y>=0);
//ok
Operator Bitwise
Simbol
Fungsi
Contoh
&
AND
A & B
|
OR
A | B;
^
XOR
A ^ B;
~
Complement 1
~A;
Operator Bitwise
Operasinya dilakukan bit per bit
Contoh:
a=24 Binernya: 011000
b=35 Binernya: 100011
(a&b) per bit hasilnya :
000000 desimalnya 0
(a | b) per bit hasilnya :
111011 desimalnya 59
Dua buah bit di-XOR-kan akan menghasilkan 1 jika
kedua bit tersebut berbeda, dan akan
menghasilkan 0 jika kedua bit tersebut sama.
Contoh:
Desimal 45 binernya: 0101101
Desimal 75 binernya: 1001011
Kemudian bit per bit di XOR kan maka
hasilnya: 1100110 atau (102 desimal).
Operator Bitwise
int A,B=45;
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
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
Catatan:
78 binernya: 00100 1110
Operator Pointer
Pointer operator terdiri dari :
•
& (
address of
)
•
* (
value of
)
Latihan
Jika semua variabel bertipe integer, maka
tentukan nilai A sbb:
B=23; C=12; D=32; E=0;
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.
#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
Bagaimanakah hasil keluaran yang ditampilkan di
layar monitor dari program di atas?, Jelaskan?
#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);
}
#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);
}
#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 ?
z = (n > 0) ? f : b;
Perhatikan conditional expression diatas,
bolehkah sekiranya variabel f dan b memiliki
tipe data yang berbeda?