Skip to content

Linux Fun

Artikel seputar linux, teknik informatika dan sistem informasi

Menu
  • About
  • Contact
  • Disclaimer
  • Privacy Policy
  • Sitemap
Menu

Operator Aritmatik Pada C++

Posted on November 12, 2012November 14, 2012 by linuxfun

Operator aritmatik yang dipakai dalam C++ adalah :

+          tambah

–          kurang

*           kali

/           bagi

%         modulus

Operator-operator di atas dikenal sebagai binary operators artinya operator-operator ini memerlukan dua operan. Operator +, -, * dan / telah jelas artinya, yang perlu dijelaskan adalah operator modulus (%), operator ini dipakai untuk mencari sisa dan pembagian antar bilangan bulat, misalnya 20 % 8 menghasilkan 4 karena sisa pembagian dari 20 dibagi 8 adalah 4. Operator + dan – dapat dipakai sebagai unary operator, artinya operator-operator  ini hanya memerlukan satu operan saja. Suatu variabel dapat dinyatakan positip atau negatip dengan unary operator + atau -, misalnya:

a = -25;

b = +25;

c = -a+b;    .

Suatu ekpresi dapat mengandung lebih dari satu jenis operator, C++ mengartikannya berdasar order of precedence dari operator-operator tersebut. Order of precedence dari operator menunjukkan hirarki matematis dari suatu operator misalnya:

2 + 3 * 2;

C++ akan menghitung 3*2 dulu karena operator kali (*) hirarkinya lebih tinggi dari operator + sehingga ekpresi di atas hasilnya adalah 8, bukan 10. Untuk operator aritmatik order of precedence-nya yang tinggi adalah kali (*), bagi (/) dan modulus (%) sedang yang rendah adalah tambah (+) dan kurang (-),Jadi C++ selalu melakukan kali, bagi dan modulus lalu diikuti tambah dan kurang. Operator-operator dalam C++ terdistribusi dalam 15 hirarki precedence yang dapat dilihat pada tabel di bawah ini.

Tabel Precedence dari Operator dalam C++

Precedence Level

Symbol

Description

Associativity

1

++

Prefex increment Left to right

—

Prefex decrement

()

Function call and subexpression

[]

Array subscript

->

Structure pointer

.

Structure member
2

!

Logical negation Right to left

~

1’s complement

–

Unary negation

+

Unary plus

(type)

Type cast

*

Pointer  deference

&

Address of

Sizeof

Size of
3

*

Multiplication Left to right

/

Division

%

Modulus
4

+

Addtion Left to right

–

Subtraction
5

<<

Bitwise left shift Left to right

>>

Bitwise right right shift
6

<

Less than Left to right

<=

Less than or equal to

>

Greater than

>=

Greater than or equal to
7

==

Equal test Left to right

!=

Not equal to
8

&

Bitwise AND Left to right
9

^

Bitwise exclusive OR Left to right
10

|

Bitwise inclusive OR Left to right
11

&&

Logical AND Left to right
12

||

Logical inclusive OR Left to right
13

?:

Conditional test Left to right
14

=

Assigment Left to right

+=

Compound add

-=

Compound substract

*=

Compound multiply

/=

Compound divide

%=

Compound modulus

<<=

Compound bitwise left shift

>>=

Compound bitwise right shift

&=

Compound bitwise AND

^=

Compound bitwise exclusive OR

|=

Compound bitwise inclusive OR
15

,

Sequence point Left to right

++

Postfix increment

—

Postfix decrement

Berdasar table of precedence di atas assignment berlipat banyak dapat dimengerti dengan mudah, misalnya :

       A = b = c = d = e = 100;

dalam hal ini assosiativitasnya adalah dari kanan ke kin, jadi 100 dipasangkan di variabel e, lalu dari variabel  e  ke variabel  d  demikian seterusnya sampai akhirnya  n, sehingga setelah selesai dieksekusi variabel-variabel a, b, c, d, e mempunyai nilai 100. Bahkan kita dapat menulis ekpresi sebagai berikut :

       x = 5 + (y = 9 – z);

Order of precedence dari operator dapat di bypass dengan tanda kurung,karena tingkatan precedence dari tanda kurung adalah di atas operator kali, bagi dan modulus sehingga ekpresi tadijika ditulis (2+3)*2 akan menghasilkan 10. Contoh lain adalah :

Contoh program berikut ini menjelaskan pemakaian tanda kurung untuk mencari rata-rata:

//C1_2.CPP

#include <iostream.h>

#include <iomanip.h>

 

main()

{

float nilai_1, nilai_2, nilai_3, rata2;

nilai_1 = 85.0;

nilai_2 = 80.0;

nilai_3 = 75.0;

// rata2 = nilai_1 + nilai_2 + nilai_3 / 3.0;

/* Perhatikan tanda kurung diperlukan untuk mengubah

order of precedence supaya rata-ratanya benar */

rata2 = (nilai_1 + nilai_2 + nilai_3) / 3.0;

cout << “Rata-rata nilai adalah : ” << setprecision(2) << rata2;

return 0;

}

Operator-operator aritmatik ini dapat digabungkan untuk membentuk operator gabungan (compound operator). Dari tabel of precedence tampak bahwa tingkatan precedence dari operator gabungan ini rendah sehingga pada suatu ekpresi yang mengandung banyak operator, operator gabungan ini pada umumnya dievaluasi pada saat-saat akhir.  Contoh pemakaian operator gabungan:

Operator

Contoh

Ekivalen

+= bonus += 500; bonus = bonus + 500;
-= budget -= 50; budget = budget •- 50;
*= gaji *= 1.2; gaji=gaji * 1.2;
/= faktor/= 50; faktor= faktor/.50;
%=  jml_hari %=7; jml_hari =jml_hari % 7;

Contoh program berikut ini akan memperjelas pengertian mengenai operator gabungan dan tingkatan precedence nya.

// C2_2.CPP

#include <iostream.h>

main()

{

int i  = 4;

int j  = 8;

int k = 12;

int jwb;

jwb = I + j;

cout << jwb << “n”;      //12

jwb += k;

cout << jwb << “n”;      //24

jwb /= 3;

cout << jwb << “n”;      //8

jwb -= 5;

cout << jwb << “n”;      //3

jwb *= 2;

cout << jwb << “n”;      //6

jwb %= 4;

cout << jwb << “n”;      //2

//  Order of precedence berpengaruh

jwb *= 5+3;

cout << jwb << “n”;      //16

jwb += 4-2;

cout << jwb << “n”;      //18

return 0;

}

Pada suatu ekpresi dalam C++ tipe data tidak harus sama. Kalau suatu bilangan bulat ditambah dengan suatu bilangan pecahan maka C++ akan mengkonversi tipe yang lebih kecil ke tipe yang lebih besar. Konversi ini, yang hanya bersifat sementara pada saat ekpresi dievalusi saja, pada umumnya akan memberikan hasil yang lebih teliti. Jika konversi dilakukan sebaliknya maka terjadi pemotongan pada tipe data yang lebih besar sehingga mengurangi ketelitian. Konversi yang bersifat otomatis ini dapat di bypass dengan type casting, yaitu kita memaksa compiler untuk mengkonversi menjadi tipe data yang kita inginkan. Tipe data yang di type cast ini berubah menjadi tipe baru hanya pada saat ekpresi dievaluasi, jadi sifatnya sementara. Format dari suatu type cast adalah:

(tipe data) ekspresi

dalam hal ini tipe data adalah tipe data yang ada di C++, dan  ekspresi dapat berupa variabel, konstanta atau kombinasinya. Program berikut ini memakai suatu type cast untuk menghitung bunga pinjaman.

// C3_2.CPP

#include <iostream.h>

#include <iomanip.h>

main ()

{

int      jml_hari =45;

float   jml_pinjaman = 2000000.00;

float    bunga_tahunan =0.155;

float   bunga_harian, bunga_pinjaman;

 

// Type cast jumlah hari dalam 1 tahun menjadi tipe float

bunga_harian = bunga_tahunan / (float)365;

//Karena jml_hari adalah integer, konversikan menjadi float

bunga_pinjaman =jml_pinjaman * bunga_harian * (float)jml_hari;

 

jml_pinjaman += bunga_pinjaman;

 

cout << “Total liutang anda adalah ”

<< setioflags(ios::fixed) << setprecision(2)

<<jml_pinjaman;

return 0;

}

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Sifat-Sifat Benda, Pengenalan Sifat Fisik dan Sifat Kimia
  • Konsep dan Pengertian Teori Keseimbangan Umum
  • Database Oracle
  • Perpajakan, Fungsi, Tujuan, dan Sistem Perpajakan di Indonesia
  • Teori Konsumen, Memahami Perilaku Konsumen dalam Memilih Barang dan Jasa
  • Asimetri Informasi, Perilaku Agen, Moral Hazard, Adverse Selection dan Pasar Asuransi
  • Memahami Konsep Penting dalam Ekonomi Perusahaan dan Industri, Pengambilan Keputusan, Teori Pasar, Investasi, dan Strategi Perusahaan
  • Mempelajari Konsep Keseimbangan Umum, Interaksi Pasar Barang dan Faktor Produksi serta Peran Pemerintah dalam Perekonomian
  • Efisiensi Pasar dan Peran Pemerintah dalam Meningkatkan Kesejahteraan Masyarakat, Memahami Konsep-konsep dalam Ekonomi Kesejahteraan
  • Eksternalitas dan Public Goods, Mempelajari eksternalitas, manfaat publik, biaya dan manfaat sosial, dan peran pemerintah dalam mengatasi pasar yang tidak sempurna
  • Analisis Pasar Monopoli, Memahami Monopoli, Persaingan Monopolistik, Oligopoli, Kartel, dan Pengaruhnya Terhadap Harga dan Kualitas Produk atau Jasa

Categories

  • Adobe
  • Alga
  • Algoritma
  • Algoritma Genetika
  • Android
  • Basis Data
  • Biologi SMA Kelas 10
  • Biometrik
  • Borland Delphi
  • Buku Pelajaran SMA
  • Buku Pelajaran SMK
  • Buku Pelajaran SMP
  • Business Intelligence
  • C++
  • Cacing
  • Citra Digital
  • Clustering
  • Customer Relationship Management
  • Data Flow Diagram
  • Data Mining
  • Data Warehouse
  • Database Terdistribusi
  • Databases
  • Desain Grafis
  • Ekonomi
  • Ekonomi Makro
  • Ekonomi Micro
  • Ekonomi SMA Kelas 12
  • Enterprise Resource Planning
  • Entity Relationship Diagram
  • Financial Management
  • Fuzzy
  • Game
  • Ganggang
  • Globalisasi
  • Hewan
  • Hidden Markov Model
  • Ilmu Pengetahuan Sosial SMP Kelas 9
  • Internet
  • Invertebrata
  • Jamur
  • Java
  • Keanekaragaman Hayati
  • Kebijakan Publik
  • Kecerdasan Buatan
  • Klasifikasi Makhluk Hidup
  • Knowledge Management
  • Komputer
  • Koperasi
  • Kriptografi
  • Logika Informatika
  • Manajemen
  • Manajemen Badan Usaha
  • Manajemen Proyek Sistem Informasi
  • Microsoft Acces
  • Monera
  • Multimedia
  • My SQL
  • Negara Berkembang
  • Negara Maju
  • Network Management
  • Otonomi Daerah
  • Pascal
  • Pelajaran IPA SMP Kelas 1
  • Pembelaan Negara
  • Pendidikan Kewarganegaraan SMP Kelas 9
  • Pengenalan Pola
  • Penutupan Siklus Akuntansi
  • Perang Dunia II
  • Perpajakan
  • PHP
  • PLC
  • Prestasi Diri
  • Protista
  • Prototype
  • Rekayasa Perangkat Lunak
  • Siklus Akuntansi Perusahaan Dagang
  • Sistem Informasi
  • Sistem Informasi Geografis
  • Sistem Kelistrikan
  • Sistem Pakar
  • Sistem Pendukung Keputusan
  • Sistem Pengapian
  • SMS Gateway
  • SQL Server
  • Teknik Sepeda Motor SMK Kelas 11
  • Teori Ekonomi
  • Thyristor
  • Tingkatan Manajemen
  • Tumbuhan
  • UML
  • Uncategorized
  • Vertebrata
  • Video
  • Virus
  • Visual Basic
© 2023 Linux Fun