Anda di halaman 1dari 10

MODUL 2

OPERASI ARITMATIKA DAN LOGIKA

1. Operasi Aritmatika

Operasi Operator Contoh Ekspresi


Penjumlahan + x+y
Pengurangan - x-y
Perkalian * x*y
Pembagian / x/y
Modulus % X%y

 Untuk x dan y yang bertipe integer, ekspresi x/y memberikan hasil sebuah integer.

Contoh :
15/3 memberikan 5
7/4 memberikan 1
3/6 memberikan 0
 Operator modulus hanya berlaku untuk bilangan bulat. Ekspresi x%y memberikan
sisa dari pembagian x oleh y.

Contoh :
15%3 memberikan 0 (baca : 15 mod 2)
7%4 memberikan 3
3%6 memberikan 3

 Perhatikan bahwa beberapa simbol mempunyai arti yang bergantung pada konteks.
Bandingkan arti-arti simbol % dalam statement :

printf ("Hasil a %% b = %d", a % b);


 Setiap operator mempunyai precedence (presedensi) dan associtivity (asosiativitas),
yang menentukan bagaimana suatu ekspresi dievaluasi.
 Urutan pengevaluasian suatu ekspresi adalah sebagai berikut :
Ekspresi atau bagian ekspresi yang berada dalam tanda kurung ( ) dievaluasi
lebih dulu. Ekspresi dalam tanda kurung yang paling dalam dievaluasi
paling dulu.

Konsep Pemrograman 13
Operator dengan presedensi lebih tinggi terikat lebih kuat dengan operanda-
operandnya, dibandingkan dengan operator dengan presedensi lebih rendah.
Jadi operator dengan presedensi lebih tinggi dievaluasi lebih dulu.
Contoh :
1 + 2 * 3 memberikan 7
(1 + 2) * 3 memberikan 9

Untuk operator-operator dengan presedensi yang sama, urutan evaluasi


ditentukan oleh asosiativitas : left-to-right (dari kiri ke kanan) atau right-to-left
(dari kanan ke kiri).
Contoh :

int a= 1, b=2, c=3;

Ekspresi Ekspresi setara Nilai


a*b/c (a * b ) / c 0
-a*b-c ( (- a ) * b ) – c -5
1+a*b%c 1 + ( ( a * b ) % c) 3

Daftar presedensi dan assosiativitas :

OPERATOR ASOSIATIVITAS
( ) [ ] ->  left to right
! ~ ++ -- + - * & (type) right to left
sizeof
* / % left to right
+ - left to right
<< >> left to right
== != left to right
& left to right
^ left to right
| left to right
&& left to right
|| left to right
? : right to left
= += -= *= /= %= &= ^= |= right to left
<<= >>=
, left to right

Konsep Pemrograman 14
2. Operasi Logika
 Komputer dapat disuruh membuat keputusan berdasarkan kondisi tertentu, melalui if
- statement.
 Ada dua bentuk if - statement :

if (kondisi) statement

if (kondisi) statement1 else statement2


 Semantik (makna) dari :

if (kondisi) statement
adalah : kondisi dievaluasi; jika nilainya true (benar) maka statement dilaksanakan.

 Semantik (makna) dari :

if (kondisi) statement1 else statement2


adalah : kondisi dievaluasi; jika nilainya true (benar) maka statement1 dilaksanakan;
jika tidak , maka statement2 dilaksanakan.

 Dalam bahasa C, kondisi berupa suatu ekspresi yang dapat bernilai NOL atau TIDAK
NOL. Nilai NOL dianggap sama dengan FALSE, sedangkan nilai TIDAK NOL
dianggap sama dengan TRUE.
 Operator-operator yang biasa dipakai untuk membentuk kondisi adalah operator-
operator kesamaan (==, !=) dan operator-operator relasional (<, >, <=, >=).
 Operator kesamaan membentuk ekspresi kesamaan sedangkan operator relasional
membentuk ekspresi relasional.

OPERATOR EKSPRESI MAKNA


== a == b a sama dengan b
!= a != b a tidak sama dengan b
> a > b a lebih besar dari b
< a < b a lebih kecil dari b
>= a >= b a lebih besar dari atau sama dengan b
<= a <= b a lebih kecil dari atau sama dengan b
.

Konsep Pemrograman 15
Contoh :
int a = 10, b=15;

Ekspresi Nilai Numerik Nilai Lojik


a == b 0 false
a != b 1 true
a > b 0 false
a < b 1 true
a >= 10 1 true
90 <= b 0 false
b 15 true

/*
* Contoh pemakaian if - statement, operator kesamaan dan
* operator relasional
*/

#include <stdio.h>
main() {
int bil1, bil2;

printf(" Hai, ketikkan dua bilangan bulat,\n");


printf(" nanti kami beritahu hubungan antara keduanya\n");
scanf ("%d%d", &bil1, &bil2);

if (bil1 == bil2)
printf("%d sama dengan %d\n", bil1, bil2);
if (bil1 != bil2)
printf("%d tidak sama dengan %d\n", bil1, bil2);
if (bil1 < bil2)
printf("%d lebih kecil dari %d\n", bil1, bil2);
if (bil1 > bil2)
printf("%d lebih besar dari %d\n", bil1, bil2);
if (bil1 % 2 == 0)
printf("%d adalah bilangan genap \n", bil1);
else
printf("%d adalah bilangan gasal \n", bil1);

printf ("\n Sampai jumpa lagi! \n");

Konsep Pemrograman 16
return 0; /*program berakhir dengan baik */
}

Contoh hasilnya :

Hai, ketikkan dua bilangan bulat,


nanti kami beritahu hubungan antara keduanya
19 256
19 tidak sama dengan 256
19 adalah bilangan gasal

Sampai jumpa lagi!

 Salah satu keampuhan komputer adalah dapat melaksanakan sejumlah aksi atau
operasi secara berulang-ulangmhingga suatu kondisi terpenuhi.
 Untuk melakukan pengulangan (iterasi), kita dapat mengunakan suatu iteration-
statement (statemen iterasi).
 Salah satu statemen iterasi berbentuk :

while (ekspresi) statement


 Semantik dari bentuk iterasi di atas adalah : ekspresi dievaluasi; jika nilainya tidak
nol (true), maka statement dilaksanakan, dan seterusnya. Siklus ini berlangsung terus
sampai ekspresi bernilai NOL (false), yaitu apabila ekspresi bernilai nol, keseluruhan
while-statement itu langsung selesai.

/* --------------------------------------------*
* Contoh penggunaan while statement *
* --------------------------------------------*/
#include <stdio.h>

main () {
int pangkatDua = 1;

while (pangkatDua <= 100)


pangkatDua = pangkatDua * 2;
printf("Nilai pangkatDua = %d\n", pangkatDua);
return 0;
}

Outputnya :

Nilai pangkatDua = 128

Konsep Pemrograman 17
3. Statemen Majemuk

 Suatu statemen dibagi menjadi dua , yaitu :


1. Statemen TUNGGAL
2. Statemen MAJEMUK (compound-statement atau block)
 Nol atau lebih statemen dalam kurung kurawal disebut sebagai statemen majemuk.
Sesudah kurung buka { dan sebelum statemen boleh ada deklarasi.
 Statemen majemuk dapat ditempatkan dimana saja suatu statemen tunggal dapat
berada.
 Suatu statemen majemuk tidak diakhiri tanda titik koma, tetapi diakhiri dengan
kurung tutup }.

/* Contoh penggunaan statemen majemuk.


* Program ini menghitung nilai rata-rataa dengan
* iterasi yang dikontrol oleh suatu counter
*/
#include <stdio.h>
#define JUMLAH_NILAI 10
main () {
float rata_rata;
int counter, nilai, total;
/* tahap inisialisasi */
printf("**** Penghitungan Nilai Rata-rata"
" Kelas ****\n");
total = 0;
counter = 1;

/* tahap pengolahan */
while (counter <= JUMLAH_NILAI) {
printf("Masukkan nilai : ");
scanf("%d", &nilai);
total = total + nilai;
counter = counter + 1;
}
/* tahap penyelesaian */
rata_rata = (float) total / JUMLAH_NILAI;
printf("Nilai rata-rata kelas : %.2f\n", rata_rata);
return 0;
}

Konsep Pemrograman 18
Contoh hasilnya :

**** Penghitungan Nilai Rata-rata Kelas ****


Masukkan nilai : 76
Masukkan nilai : 71
Masukkan nilai : 98
Masukkan nilai : 87
Masukkan nilai : 83
Masukkan nilai : 90
Masukkan nilai : 57
Masukkan nilai : 79
Masukkan nilai : 94
Masukkan nilai : 82
Nilai rata-rata kelas : 81.70

 Tipe float mencakup bilangan-bilangan yang mengandung pecahan, seperti : 81.70,


0.6, 2.55, dsb.
 Apa yang terjadi kalau kurung kurawal { } setelah while ( ) dihilangkan ?

Yang terjadi adalah statemen :


printf("Masukkan nilai : ");
akan diulang terus tanpa henti, karena kondisi
counter <= JUMLAH_NILAI
tidak pernah menjadi false. D.k.l terjadi pengulangan tak hingga (infinite-loop).

 Supaya pembagian total/JUMLAH_NILAI itu tidak dilakukan secara integer ,


maka kita buat nilai salinan sementara bertipe float dari nilai total. (Isi variabel total
tidak berubah). Caranya adalah dengan menggunakan operator cast (float)
 Penggunaan operator cast seperti ini disebut explicit-conversion (konversi eksplisit).

 Operator cast dapat dibuat dari setiap tipe data, bentuknya :

(nama-tipe)
 Operator cast adalah suatu operator unary.

Konsep Pemrograman 19
 Conversion-specifier %.2f menyatakan bahwa suatu bilangan pecahan
(floating-point number) akan ditayangkan dengan ketelitian 2 angka desimal di kanan
titik desimal.

 Contoh :
printf("%.2f",3.447); /* cetak 3.45 */
printf("%.1f",3.447); /* cetak 3.4 */

%f identik dengan %.6f

4. Operator-operator Assignment dan Ekspresi

= adalah suatu operator biner, oleh karena itu

variabel = pihak_kanan

merupakan suatu ekspresi. Nilai dari pihak_kanan disimpan ke variabel. Nilai dari
pihak_kanan ini juga menjadi nilai dari ekspresi assignment itu secara keseluruhan.

Contoh :

int a = 1, b = 2;

Ekspresi Nilai Ekspresi

a = a + 3 4

b = b - 7 -5

Statemen merupakan satuan terkecil yang dapat dieksekusi. Statemen diakhiri dengan
tanda titik koma. Statemen yang paling sederhana adalah null-statement (statemen
kosong).
;
Suatu ekspresi yang diikuti oleh tanda titik koma merupakan statemen.

Konsep Pemrograman 20
Contoh : a = 3;
b = b +2;

Statemen berikut ini tidak berguna, karena tidak ada efeknya :

a + 1;

Statemen a = b = c = 1; ekivalen dengan a = ( b = ( c = 1));


karena asosiatifitas operator = adalah right-to-left.
Jadi, c diberi nilai 1 dan ekspresi c = 1 mempunyai nilai 1. Kemudian b diberi nilai 1
tersebut dan ekspresi b = (c = 1) mempunyai nilai 1. Akhirnya a diberi nilai 1 tersebut
dan ekspresi a = (b = (c = 1)) mempunyai nilai 1.

Statemen total = total + nilai; dapat disingkat menjadi total += nilai;

+= adalah juga suatu assignmnet-operator.


Semua assignment-operator dalam bahasa C adalah :

= += -= *= /= %= >>= <<= &= ^= |=

Semua operator ini mempunyai presedensi yang sama dan assosiativitas right-to-left.
Makna (semantik) dari :

variabel op= ekspresi

ekivalen dengan makna dari

variabel = variabel op (ekspresi)

kecuali bahwa variabel dalam bentuk yang ringkas itu dievaluasi hanya satu kali. Jadi
waktu eksekusi dari bentuk yang ringkas bisa lebih pendek.

j *= k + 3 ekivalen dengan j = j * (k + 3)
bukan j=j*k+3

Operator increment (tambah 1) ++ dan operator decrement (kurang 1) -- merupakan


operator unary, dapat diterapkan pada variabel.

Keduanya dapat berada pada posisi PREFIX atau POSTFIX, dengan semantik yang
berbeda.

Ekspresi Efek Nilai ekspresi

Konsep Pemrograman 21
++a nilai a bertambah 1 nilai a baru

a++ nilai a bertambah 1 nilai a lama

--a nilai a berkurang 1 nilai a baru

a-- nilai a berkurang 1 nilai a lama

Contoh :

int a, b, c = 0;
a = ++c;
b = c++;
printf("%d %d %d\n", a,b,++c); /* cetak 1 1 3 */

Konsep Pemrograman 22

Anda mungkin juga menyukai