BAHASA PEMROGRAMAN C++
Ayo belajar pemrograman!!
Apa sih bahasa pemrograman
itu? Bahasa pemrograman - Perangkat
lunak bahasa pemrograman (language
software) merupakan program yang digunakan untuk menerjemahkan
perintah-perintah yang ditulis dalam bahasa program ke dalam bahasa mesin (machine languange), sehingga
dapat diterima dan dimengerti oleh komputer. Apabila languange software tidak
tersedia, maka pembuat program harus menulis programnya langsung dengan bahasa
mesin yang berbentuk bilangan-bilangan binary.
Ada
berbagai macam bahasa pemrograman,tapi di sini kita hanya akan membahas tentang
bahasa pemrograman C++. Bahasa pemrograman C++ merupakan superset dari
bahasa pendahulunya yaitu bahasa pemrograman C. Bahasa pemrograman C
dikembangkan oleh Dennis Ritchie pada tahun 1972 di Laboratorium Bell. Bahasa
pemrograman C adalah bahasa pemrograman yang dapat dikatakan berada antara
bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat tinggi (bahasa
berorientase pada manusia). Bahasa pemrograman C berada satu tingkat di atas
bahasa yang berorientasi pada mesin, namun tetap satu tingkat dibawah sebagian
besar bahasa yang berorientasi persoalan. Bahasa pemrograman C cukup dekat
dengan komputer untuk memberikan kendali yang besar terhadap detil implementasi
pemakaian, namun cukup jauh untuk mengabaikan detil hardware. Karena itulah
bahasa pemrograman C suatu ketika dipandang sebagai bahasa high-level dan pada
saat yang lain dilihat sebagai bahasa low-level.
Bahasa pemrograman C merupakan bahasa pemrograman
terstruktur, yang membagi program kedalam bentuk sebuah blok. Tujuannya adalah
untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis
dengan bahasa pemrograman C mudah sekali untuk dipindahkan dari satu jenis
mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa
pemrograman C yaitu berupa standar ANSI (American National Standards Institute)
yang dijadikan acuan oleh para pembuat kompiler C.
ELEMEN
DASAR BAHASA PEMROGRAMAN C++
1.
Identifier (Pengenal) Bahasa C++
Adalah nama yang digunakan untuk
mempresentasikan variabel, konstanta, jenis (type), fungsi, dan nama program.
Identifier dalam pendeklarasian variabel, jenis, atau fungsi pada bahasa
pemrograman C++ dimulai dengan sebuah huruf atau garis bawah. Karakter-karakter
lain dalam sebuah identifier dapat berupa huruf, angka, garis bawah, atau tanda
dollar. Compiler C++ membedakan huruf kecil dan besar. Variabel NAMA_PEGAWAI
dan nama_pegawai dipandang sebagai dua identifier yang menggambarkan variabel
memori yang berbeda. Contoh identifier yang diperkenankan untuk dipakai: a atau
akelas atau kelas$ atau _kelas atau _KELAS$, sedangkan identifier yang tidak
diperbolehkan untuk dipakai: $KELAS atau 7kelas atau kelas! atau ..kelas.
2.
Himpunan Karakter
Himpunan
karakter pada C++ terdiri dari huruf, digit maupun simbol-simbol lainnya
(termasuk spasi, karakter kontrol)
Huruf: A B C D E F G H I J K L M N O P Q R S T U V W X Z Y a b c d e f g h i j k l m n o p q r s t u v w x y z
Digit: 0 1 2 3 4 5 6 7 8 9
Simbol dan lain-lain: _ - + * dan sebagainya.
Huruf: A B C D E F G H I J K L M N O P Q R S T U V W X Z Y a b c d e f g h i j k l m n o p q r s t u v w x y z
Digit: 0 1 2 3 4 5 6 7 8 9
Simbol dan lain-lain: _ - + * dan sebagainya.
3.
Kata-kata Kunci
Kata kunci (keyword) adalah pengenal
sistem yang mempunyai makna khusus bagi kompiler. Kegunaan dari golongan ini
tidak dapat diubah. Karena itu kata kunci tidak dapat digunakan sebagai
pengenal yang dibuat oleh pemrogram.
Kata kunci diusulkan ANSI:
auto, double, int, struct, break, else, loop, switch, case, enum, register, typedef, char, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if, static, while
Sedangkan turbo C memperluasnya dengan menambahkan beberapa kata kunci:
_cs, _ss, far, near, _ds, asm, huge, pascal, _es, cdecl, interrupt
Sementara itu, Microsoft C/C++ menambah beberapa kata kunci:
_asm, _loadds, _cdecl, _huge, _far, _pascal, _export, _interrupt, _fortran, _segname, _near, _saveregs, _segment, _syscall, _self, _stdcall, _fastcall, _based
auto, double, int, struct, break, else, loop, switch, case, enum, register, typedef, char, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if, static, while
Sedangkan turbo C memperluasnya dengan menambahkan beberapa kata kunci:
_cs, _ss, far, near, _ds, asm, huge, pascal, _es, cdecl, interrupt
Sementara itu, Microsoft C/C++ menambah beberapa kata kunci:
_asm, _loadds, _cdecl, _huge, _far, _pascal, _export, _interrupt, _fortran, _segname, _near, _saveregs, _segment, _syscall, _self, _stdcall, _fastcall, _based
4.
Tipe Data Bahasa C++
Tipe
data dasar pada C++, yakni: teks (char), nilai integer (int, short, long),
nilai floating-point (float, double, long double), dan enumerated (enum). Jika
jenis data yang didefinisikan adalah variabel enumerated, maka ini terkait
dengan konstanta integer yang telah diberi nama enumeration set. Dalam bahasa
pemrograman C, jenis enum dianggap ekivalen dengan jenis int, sehingga
memungkinkan sebuah program untuk memberikan nilai integer langsung pada
variabel enumerated. Namun dalam bahasa pemrograman C++, ada mekanisme
pemeriksaan jenis data yang ketat, dan tidak memperkenankan operasi campuran
seperti ini.
Setiap bahasa memakai seperangkat
karakter untuk mengekspresikan pernyataan yang mengandung arti. Bahasa
pemrograman C++ ditulis menggunakan sejumlah karakter yang meliputi: 26 huruf
kecil (a, b, c, ... dstnya) dan 26 huruf besar (A, B, C, ... dstnya); 10 angka
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); dan lambang-lambang (+ - * = / . , : ; ? ' \
" ! @ # $ % ^ & * ( ) { } [ ]).
Ukuran memori yang diperlukan untuk
masing-masing tipe data sangat bergantung pada perangkat keras dari komputer
yang digunakan. Karena itu jangkauan bilangan dari masing-masing tipe data juga
bisa berlainan antara satu jenis mesin dengan mesin lainnya. Nilai yang
tercakup pada tipe data bilangan (bulat maupun pecahan) pada arsitektur PC yang
berbasis DOS, adalah sebagai berikut:
Tipe data Ukuran memori Jangkauan
nilai
char 1 byte -128 s/d +127
int 2 byte -32768 hingga +32767
short 2 byte -32.768 s/d 32.767
long 4 byte -2.147.438.648 s/d 2.147.438.647
float 4 byte 3,4x10-36 s/d 3,4x10+38
double 8 byte 1,7x10-308 s/d 1,7x10+308
long double 10 byte 3,4x10_4932 s/d 1,1x10+4932
enum 2 byte -32.768 s/d 32.767
pointer 2 byte (near, based)
pointer 4 byte (far, huge)
char 1 byte -128 s/d +127
int 2 byte -32768 hingga +32767
short 2 byte -32.768 s/d 32.767
long 4 byte -2.147.438.648 s/d 2.147.438.647
float 4 byte 3,4x10-36 s/d 3,4x10+38
double 8 byte 1,7x10-308 s/d 1,7x10+308
long double 10 byte 3,4x10_4932 s/d 1,1x10+4932
enum 2 byte -32.768 s/d 32.767
pointer 2 byte (near, based)
pointer 4 byte (far, huge)
4.1.
Tipe Data Tertentu
Modifier unsigned:
Yang termasuk jenis data modifier
unsigned yang dapat diterapkan pada char, int, short, long adalah void dan
pointer. Bila salah satu jenis data di atas dimodifikasi menjadi usigned, dapat
dipandang range nilai yang bisa dijangkau mempresentasikan bilangan seperti
pada angka yang ditunjukkan oleh jumlah kilometer yang telah ditempuh pada
mobil atau sepeda motor. Angka tersebut dimulai dari 0000... dan mencapai
maksimum 9999..., dan kembali ke 0000... Jadi dalam unsigned, yang ditampilkan
hanyalah bilangan positif keseluruhan dalam range nol sampai ke bilangan
maksimum yang dapat diprepresentasikannya.
Tipe data Ukuran memori Jangkauan
nilai
unsigned char 1 byte 0 s/d 255
unsigned int 2 byte 0 s/d 32767
unsigned short 2 byte 0 s/d 32.767
unsigned long 4 byte 0 s/d 2.147.438.647
Modifier signed:
Digunakan untuk memperluas tanda yang digunakan integer dan karakter. Cara ini memungkinkan untuk menyimpan suatu nilai dalam bentuk bilangan positif atau negatif.
Tipe data Ukuran memori Jangkauan nilai
signed char 1 byte -128 s/d +127
signed int 2 byte -32768 hingga +32767
signed short 2 byte -32.768 s/d 32.767
signed long 4 byte -2.147.438.648 s/d 2.147.438.647
unsigned char 1 byte 0 s/d 255
unsigned int 2 byte 0 s/d 32767
unsigned short 2 byte 0 s/d 32.767
unsigned long 4 byte 0 s/d 2.147.438.647
Modifier signed:
Digunakan untuk memperluas tanda yang digunakan integer dan karakter. Cara ini memungkinkan untuk menyimpan suatu nilai dalam bentuk bilangan positif atau negatif.
Tipe data Ukuran memori Jangkauan nilai
signed char 1 byte -128 s/d +127
signed int 2 byte -32768 hingga +32767
signed short 2 byte -32.768 s/d 32.767
signed long 4 byte -2.147.438.648 s/d 2.147.438.647
Untuk mengetahui ukuran memori yang
diperlukan oleh semua tipe data, bisa dilihat dengan meng-compiler dan mengeksekusi
contoh program sederhana, berikut:
//* Menentukan ukuran memori *
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout << "Ukuran char : " << sizeof(char) << '\n';
cout << "Ukuran short : " << sizeof(short) << '\n';
cout << "Ukuran int : " << sizeof(int) << '\n';
cout << "Ukuran long : " << sizeof(long) << '\n';
cout << "Ukuran float : " << sizeof(float) << '\n';
cout << "Ukuran double : " << sizeof(double) << '\n';
cout << "Ukuran long double : " << sizeof(long double) << '\n';
}
Penjelasan program:
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout << "Ukuran char : " << sizeof(char) << '\n';
cout << "Ukuran short : " << sizeof(short) << '\n';
cout << "Ukuran int : " << sizeof(int) << '\n';
cout << "Ukuran long : " << sizeof(long) << '\n';
cout << "Ukuran float : " << sizeof(float) << '\n';
cout << "Ukuran double : " << sizeof(double) << '\n';
cout << "Ukuran long double : " << sizeof(long double) << '\n';
}
Penjelasan program:
Pemrograman C++ tidak terlepas dari
fungsi. Sebab fungsi adalah salah satu dasar penyusunan blok pada C++. Sebuah
program C++ minimal mengandung sebuah fungsi main(). Fungsi ini menjadi awal
dan akhir eksekusi program C++. main adalah nama judul fungsi. Sedangkan yang
dimulai dari tanda { hingga tanda } disebut tubuh fungsi. Semua yang terletak
di dalam tanda {} disebut blok. Tanda () digunakan untuk mengapit argumen
fungsi, yaitu nilai yang akan dilewatkan ke fungsi. Kata void yang mendahului
main() dipakai untuk menyetakan bahwa fungsi ini tidak memiliki nilai balik.
Pengenal cout merupakan sebuah obyek
di dalam C++. Obyek ini disediakan oleh C++ untuk mengarahkan data ke standard
output (normalnya adalah layar), sebagai contoh tambahan misalnya:
cout << "Hallo! Selamat datang di website ideelok \n";
Tanda << merupakan sebuah
operator yang disebut operator penyisipan/peletakan. Operator ini akan
mengarahkan operand (data) yang terletak di sebelah kanan obyeknya ke obyek
yang terletak di sebelah kiri. Pada pernyataan di atas, konstanta string
"Hallo! Selamat datang di website ideelok \n" diarahkan ke cout, yang
memberikan hasil berupa tampilan string tersebut ke layar. Didalam sebuah
string, karakter \ diikuti dengan karakter tertentu menyatakan sebuah karakter
tunggal. Pada contoh \n adalah karakter pindah baris (newline).
Pada baris #include
<iosterm.h>, baris ini menginstruksikan kepada kompiler untuk menyiapkan
file lain pada saat program dikompolasi. Dalam hal ini file-file yang berakhiran
dengan .h disebut file header, yaitu file-file yang berisi berbagai deklarasi,
seperti fungsi, variabel dan sebagainya. #include <iostream.h> perlu
disertakan pada program yang melibatkan obyek cout. Tanpa kehadiran baris
tersebut akan terjadi kesalahan program sewaktu program dikompilasi. Sebab file
iostream.h berisi deklarasi yang diperlukan oleh cout dan berbagai obyek yang
berhubungan dengan operasi masukan-keluaran pada stream.
Pada baris clrscr(); adalah perintah
untuk menghapus layar. Apabila pernyataan di atas digunakan, baris #include
<conio.h> perlu disertakan dalam program.
5.
Variabel dan Konstanta Bahasa C++
Data
pada C++ tersusun dari variabel dan konstanta. Variabel merupakan komponen
penting pada pemrograman. Variabel digunakan dalam program untuk menyimpan
suatu nilai, dengan nilai yang ada padanya dapat diubah selama eksekusi program
berlangsung. Adapun konstanta menyatakan nilai yang tetap. Misalnya 234 adalah
sebuah konstanta bilangan bulat.
5.1.
Mendeklarasikan dan Mendefinisikan Variabel
Variabel
yang akan digunakan dalam program haruslah dideklarasikan terlebih dahulu,
maksudnya mengenalkan sebuah pengenal ke program dan menentukan jenis data yang
bisa disimpan di dalamnya. Apabila suatu pendeklarasian menyebabkan
pengalokasian memori, maka pendeklarasian tersebut dinamakan pendefinisian.
Yang jelas pendefinisian berarti pula pendeklarasian, tetapi tidak semua
pendeklarasian berarti pendefinisian.
bentuk pendefinisian variabel:
tipe daftar_variabel;
Pada pendefinisian variabel, daftar_variabel dapat berupa sebuah variabel atau beberapa variabel yang dipisahkan dengan koma.
bentuk pendefinisian variabel:
tipe daftar_variabel;
Pada pendefinisian variabel, daftar_variabel dapat berupa sebuah variabel atau beberapa variabel yang dipisahkan dengan koma.
5.2.
Memberikan Nilai ke Variabel
Bentuk
pernyataan yang digunakan untuk memberikan nilai ke variabel adalah:
variabel = nilai;
Contoh:
jumlah = 10;
harga_barang = 1500;
variabel = nilai;
Contoh:
jumlah = 10;
harga_barang = 1500;
5.3.
Variabel dan Konstanta Bertipe char
Bentuk
pernyataan variabel bertipe char:
char karakter;
Dalam hal ini variabel karakter bertipe char. Variabel ini dapat menampung data sebuah karakter. Untuk menuliskan sebuah konstanta bertipe char, karakter perlu ditulis di dalam tanda petik tunggal, contoh: 'A' karakter berupa huruf A.
Karakter yang ditulis dengan bentuk \karakter mempunyai arti tersendiri (karakter khusus) dan biasa disebut escape sequence characters.
Karakter-karakter khusus tersebut antara lain:
\0 artinya karakter ber-ASCII nol (karakter nul)
\a artinya karakter bel
\b artinya karakter backspace
\f artinya karakter formfeed (ganti halaman)
\n artinya karakter newline (pindah baris)
\r artinya karakter carriage return (ke awal baris) tanpa linefeed
\t artinya karakter tab horizontal
\v artinya karakter tab vertikal
\\ artinya karakter \
\' artinya karakter '
\" artinya karakter "
\? artinya karakter ?
\ooo artinya karakter yang nilai oktalnya adalah ooo (tiga digit oktal)
\xhh artinya karakter yang nilai heksadesimalnya adalah hh (dua digit heksadesimal)
char karakter;
Dalam hal ini variabel karakter bertipe char. Variabel ini dapat menampung data sebuah karakter. Untuk menuliskan sebuah konstanta bertipe char, karakter perlu ditulis di dalam tanda petik tunggal, contoh: 'A' karakter berupa huruf A.
Karakter yang ditulis dengan bentuk \karakter mempunyai arti tersendiri (karakter khusus) dan biasa disebut escape sequence characters.
Karakter-karakter khusus tersebut antara lain:
\0 artinya karakter ber-ASCII nol (karakter nul)
\a artinya karakter bel
\b artinya karakter backspace
\f artinya karakter formfeed (ganti halaman)
\n artinya karakter newline (pindah baris)
\r artinya karakter carriage return (ke awal baris) tanpa linefeed
\t artinya karakter tab horizontal
\v artinya karakter tab vertikal
\\ artinya karakter \
\' artinya karakter '
\" artinya karakter "
\? artinya karakter ?
\ooo artinya karakter yang nilai oktalnya adalah ooo (tiga digit oktal)
\xhh artinya karakter yang nilai heksadesimalnya adalah hh (dua digit heksadesimal)
5.4.
Variabel dan Konstanta Bertipe int
Variabel
bertipe int didefinisikan dengan bentuk:
int bilangan;
int bilangan;
Setelah pendefinisian seperti itu,
variabel ini dapat digunakan untuk menampung nilai bertipe int. Sebuah
konstanta bertipe int adalah bilangan bulat yang terletak antara minus 32768
hingga plus 32767 (pada PC berbasis DOS) dan tidak mengandung titik desimal.
5.5.
Variabel dan Konstanta Bertipe long
Apabila
diinginkan untuk memproses bilangan bulat yang nilainya lebih besar daripada
tipe int, Anda dapat menggunakan tipe long. Suatu variabel bertipe long
didefinisikan dengan cara seperti di bawah ini:
long jumlah_penduduk;
Pada contoh ini, jumlah_penduduk didefinisikan bertipe long. Dengan demikian variabel ini dapat menampung nilai ratusan juta. Adapun konstanta bertipe long biasa ditulis dengan akhiran L. Sebagai contoh: 1543267635435L
long jumlah_penduduk;
Pada contoh ini, jumlah_penduduk didefinisikan bertipe long. Dengan demikian variabel ini dapat menampung nilai ratusan juta. Adapun konstanta bertipe long biasa ditulis dengan akhiran L. Sebagai contoh: 1543267635435L
5.6.
Variabel dan Konstanta Bertipe float, double dan long double
Tipe-tipe
data yang telah dibahas di depan (char, int dan long) berhubungan dengan
bilangan bulat. Seandainya diinginkan untuk memproses bilangan yang mengandung
nilai pecahan, bisa menggunakan tipe float, double atau long double. Ketiga
tipe yang berhubungan dengan bilangan pecahan ini mempunyai perbedaan dalam
hal: kepresisian data, dan jangkauan nilai yang dicakup.
Contoh pendefinisian variabel untuk
menampung bilangan pecahan:
float panjang;
double phi;
long double tetapan;
float panjang;
double phi;
long double tetapan;
5.7.
Inisialisasi Variabel
Adakalanya
dalam penulisan program, variabel langsung diberi nilai awal setelah
didefinisikan. Sebagai contoh:
int jumlah;
jumlah = 80;
Dua pernyataan seperti di atas sebenarnya dapat diangkat melalui pendefinisian yang disertai penugasan nilai, seperti berikut:
int jumlah = 80;
int jumlah;
jumlah = 80;
Dua pernyataan seperti di atas sebenarnya dapat diangkat melalui pendefinisian yang disertai penugasan nilai, seperti berikut:
int jumlah = 80;
OPERATOR
BAHASA PEMROGRAMAN C++
Operator
merupakan simbol yang biasa dilibatkan dalam program untuk melakukan sesuatu
operasi atau manipulasi, misalnya untuk menjumlahkan dua buah nilai, memberikan
nilai pada suatu variabel, ataupun membandingkan kesamaan dua buah nilai.
Bahasa pemrograman C++ mempunyai banyak operator yang tidak didapat dalam
bahasa pemrograman lain, antara lain: operator bitwise, operator inkremen dan
dekremen, operator kondisional, operator koma, operator aritmatika dan
lain-lain.
a)
Operator bitwise
Operator
bitwise pada bahasa pemrograman C++ memperlakukan variabel sebagai gabungan
dari bit-bit dan bukan sebagai bilangan. Operator ini berguna untuk mengakses
bit-bit individual dalam memori, seperti memori screen untuk display grafik,
informasi CapsLock (on atau off). Operator bitwise ini hanya dapat beroperasi
pada jenis data integral, bukan bilangan floating-point. Tiga operator bitwise
berkelakuan seperti operator logika, namun ini terjadi pada setiap bit dalam
sebuah integer, yakni: AND (&), OR(I), dan XOR (^), komplemen (~) membalik
(menginversi) setiap bit, operator shift kiri (<<), dan operator shift
kanan (>>).
AND
Simbol operator: &, dengan bentuk penggunaan : operand1 & operand2
Operasi AND bitwise membandingkan dua bit; jika kedua bit tersebut adalah 1, maka hasilnya 1, selain itu hasilnya 0.
Logika AND:
Bit 0 Bit 1 Hasil
0 0 0
0 1 0
1 0 1
1 1 1
OR
Simbol operator I, dengan bentuk pemakaian : operand1 I opeand2
Operasi OR bitwise membandingkan dua bit dan memberikan hasil 1 jika kedua bit yang dibandingkan itu salah satu atau keduanya 1.
Logika OR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 1
XOR
Simbul operator: ^, dengan bentuk penggunaan : operand1 ^ operand2
Operasi EXCLUSIVE OR (XOR) bitwise membandingkan dua bit dan memberikan hasil 1 bila kedua bit merupakan komplementer satu sama lain.
Logika XOR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 0
Contoh program operasi I, & dan ^:
//* Efek operator I, & dan ^ *
#include <iostream.h>
#include <conio.h>
void main()
{
unsigned char angka1 = 81;
unsigned char angka2 = 99;
unsigned char a, b, c;
clrscr();
a = angka1 I angka2; //operasi OR
b = angka1 & angka2; //operasi AND
c = angka1 ^ angka2; //operasi XOR
cout << "a= " << a << '\n';
cout << "b= " << b << '\n';
cout << "c= " << c << '\n';
}
Hasil eksekusi program di atas, adalah:
a= 115
b= 65
c= 50
Penjelasan hasil program:
Operasi OR pada a:
0000 0000 0101 0001 <- 81
0000 0000 0110 0011 <- 99
-------------------------------
0000 0000 0 1 1 0011 <- 115
Operasi AND pada b:
0000 0000 0101 0001 <- 81
0000 0000 0110 0011 <- 99
-------------------------------
0000 0000 0100 0001 <- 65
Operasi XOR pada c:
0000 0000 0101 0001 <- 81
0000 0000 0110 0011 <- 99
-------------------------------
0000 0000 0011 0010 <- 50
Simbol operator: &, dengan bentuk penggunaan : operand1 & operand2
Operasi AND bitwise membandingkan dua bit; jika kedua bit tersebut adalah 1, maka hasilnya 1, selain itu hasilnya 0.
Logika AND:
Bit 0 Bit 1 Hasil
0 0 0
0 1 0
1 0 1
1 1 1
OR
Simbol operator I, dengan bentuk pemakaian : operand1 I opeand2
Operasi OR bitwise membandingkan dua bit dan memberikan hasil 1 jika kedua bit yang dibandingkan itu salah satu atau keduanya 1.
Logika OR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 1
XOR
Simbul operator: ^, dengan bentuk penggunaan : operand1 ^ operand2
Operasi EXCLUSIVE OR (XOR) bitwise membandingkan dua bit dan memberikan hasil 1 bila kedua bit merupakan komplementer satu sama lain.
Logika XOR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 0
Contoh program operasi I, & dan ^:
//* Efek operator I, & dan ^ *
#include <iostream.h>
#include <conio.h>
void main()
{
unsigned char angka1 = 81;
unsigned char angka2 = 99;
unsigned char a, b, c;
clrscr();
a = angka1 I angka2; //operasi OR
b = angka1 & angka2; //operasi AND
c = angka1 ^ angka2; //operasi XOR
cout << "a= " << a << '\n';
cout << "b= " << b << '\n';
cout << "c= " << c << '\n';
}
Hasil eksekusi program di atas, adalah:
a= 115
b= 65
c= 50
Penjelasan hasil program:
Operasi OR pada a:
0000 0000 0101 0001 <- 81
0000 0000 0110 0011 <- 99
-------------------------------
0000 0000 0 1 1 0011 <- 115
Operasi AND pada b:
0000 0000 0101 0001 <- 81
0000 0000 0110 0011 <- 99
-------------------------------
0000 0000 0100 0001 <- 65
Operasi XOR pada c:
0000 0000 0101 0001 <- 81
0000 0000 0110 0011 <- 99
-------------------------------
0000 0000 0011 0010 <- 50
b)
Operator Shift
Operator >> dan << pada bahasa pemrograman C++ berguna untuk menggeser bit-bit dalam suatu bilangan bulat ke kiri atau ke kanan. Shift kiri menggerakkan bit-bit ke kiri dan mengatur bit paling kanan (yang tidak signifikan) menjadi nol. Sedangkan bit paling kiri (paling signifikan) yang ter-shift keluar akan dibuang. Sementara itu, operator shift kanan menggerakkan bit-bit ke kanan. Bit-bit dengan orde lebih rendah yang ter-shift keluar akan dibuang. Pergeseran bit ke kiri mempunyai efek seperti perkalian, sedangkan pergeseran ke kanan memberikan efek seperti pembagian.
b.1) Operastor shift kiri
Bentuk umum dipakai: nilai << jumlah bit digeser ke kiri
Setiap pergeseran sebuah bit akan memberikan pengaruh seperti halnya perkalian dengan bilangan dua. Untuk lebih jelasnya perhatikan contoh berikut beserta hasilnya:
//* Operator SHIFT KIRI *
#include <iostream.h>
#include <conio.h>
main()
{
unsigned char x = 93;
clrscr();
cout << "Nilai x semula = " << x << '\n';
x = x << 1; // geser ke kiri 1 bit
cout << "Nilai x kini = " << x << '\n';
}
Hasil eksekusi program:
Nilai x semula = 93
Nilai x kini = 186
Penjelasan hasil program:
0000 0000 0101 1101 <- 93
digeser ke kiri 1 bit
0000 0000 1011 1010 <- 186
di bagian kanan selalu disisipi dengan nol sebanyak bit yang digeser.
b.2) Operator shift kanan
Bentuk umum dipakai: nilai >> jumlah bit digeser ke kanan
Setiap pergeseran sebuah bit akan memberikan pengaruh seperti halnya pembagian dengan bilangan dua. Untuk lebih jelasnya perhatikan contoh berikut beserta hasilnya:
//* OPERATOR SHIFT KANAN *
#include <iostream.h>
#include <conio.h>
void main()
{
unsigned char x = 93;
clrscr();
cout << "Nilai x semula = " << x << '\n';
x = x >> 1; // geser kekanan 1 bit
cout << "Nilai x kini = " << x << '/n';
}
Hasil eksekusi program:
Nilai x semula = 93
Nilai x kini = 46
Penjelasan hasil program:
0000 0000 0101 1101 <- 93
digeser
ke ke kanan 1 bit
0000 0000 0010 1110 <- 186
di bagian kiri selalu disisipi dengan nol sebanyak bit yang digeser.
c) Operator Komplemen
Operator ini mempunyai sifat membalik (menginversi) nilai setiap bit. Jika bit operand bernilai 1 hasilnya 0, dan bila bit operand bernilai 0 hasilnya 1.
Contoh pemakaian operator komplemen:
//* Operator komplemen *
#include <iostream.h>
#include <conio.h>
main()
{
unsigned char nilai = 81;
unsigned char a;
clrscr();
a = ~nilai; // komplemen dari nilai
cout << "a = " << a << '\n';
}
Hasil eksekusi program:
a = 65454
Penjelasan hasil program:
0000 0000 0101 0001 <- 81
inversinya menjadi
1111 1111 1010 1110 <- 6554
d) Operator Aritmatika
Bahasa C++ melibatkan operator aritmatika standar untuk penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), dan modulus (%). Operator aritmatika tersebut tergolong sebagai operator binary. Adapun operator yang tergolong sebagai operator unary yaitu tanda minus (-), dan tanda plus (+).
Prioritas operator :
Operator dengan prioritas tinggi akan diutamakan dalam hal pengerjaan dibandingkan dengan operator yang memiliki prioritas lebih rendah.
Prioritas 1: + --
Prioritas 2: - (unary minus)
Prioritas 3: * / %
Prioritas 4: + -
Apabila operastor memiliki prioritas yang sama, operator yang terletak disebelah kiri dalam suatu ungkapan yang akan diutamakan untuk dikerjakan terlebih dahulu.
Tanda kurung biasa digunakan untuk urutan mengerjakan, misalnya x = (2 + 3) * 2;
(2 + 3 akan dikerjakan terlebih dahulu baru dikalikan dengan 2)
Contoh program:
//* Operasi aritmatika dengan menggunakan tanda kurung) *
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int x;
x = 2 + 3 * 2;
cout << "x= " << x << '\n';
x = (2 + 3) * 2;
cout << "x= " << x << '\n';
}
Hasil eksekusi program:
x= 8
x= 12
Operator seperti penjumlahan, pengurangan, perkalian dan pembagian merupakan hal yang umum. Adapun operator sisa pembagian (operator modulus) yang berupa % ada baiknya untuk diterangkan lebih lanjut. Operator ini diterapkan pada operan bertipe integer. Untuk lebih jelasnya perhatikan beberapa contoh berikut:
7 % 2 -> 1 sisa pembagian bilangan 7 dengan 2 adalah 1
9 % 5 -> 4 sisa pembagian bilangan 9 dengan 5 adalah 4
Contoh program
//* sisa pembagian (modulus) *
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout << 9 % 5 << '\n';
cout << 13 % 5 << '\n';
}
Hasil eksekusi program:
4
3
e) Operator Assigenment
Operator assigenment dalam bahasa pemrograman C/C++ berbeda dengan statement assigenment dalam bahasa yang lain. Assigenment dilakukan oleh operator assigenment dan bukan oleh staement assigenment. Seperti operator bahasa pemrograman C++ yang lain, hasil operator assigenment merupakan nilai yang diberikan. Misalnya :
nilai = 4 * (bilangan = 3)
Disini bilangan diberikan nilai 3. Nilai 3 ini dikali dengan 4, sehingga nilai mendapatkan hasil akhir 12.
0000 0000 0010 1110 <- 186
di bagian kiri selalu disisipi dengan nol sebanyak bit yang digeser.
c) Operator Komplemen
Operator ini mempunyai sifat membalik (menginversi) nilai setiap bit. Jika bit operand bernilai 1 hasilnya 0, dan bila bit operand bernilai 0 hasilnya 1.
Contoh pemakaian operator komplemen:
//* Operator komplemen *
#include <iostream.h>
#include <conio.h>
main()
{
unsigned char nilai = 81;
unsigned char a;
clrscr();
a = ~nilai; // komplemen dari nilai
cout << "a = " << a << '\n';
}
Hasil eksekusi program:
a = 65454
Penjelasan hasil program:
0000 0000 0101 0001 <- 81
inversinya menjadi
1111 1111 1010 1110 <- 6554
d) Operator Aritmatika
Bahasa C++ melibatkan operator aritmatika standar untuk penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), dan modulus (%). Operator aritmatika tersebut tergolong sebagai operator binary. Adapun operator yang tergolong sebagai operator unary yaitu tanda minus (-), dan tanda plus (+).
Prioritas operator :
Operator dengan prioritas tinggi akan diutamakan dalam hal pengerjaan dibandingkan dengan operator yang memiliki prioritas lebih rendah.
Prioritas 1: + --
Prioritas 2: - (unary minus)
Prioritas 3: * / %
Prioritas 4: + -
Apabila operastor memiliki prioritas yang sama, operator yang terletak disebelah kiri dalam suatu ungkapan yang akan diutamakan untuk dikerjakan terlebih dahulu.
Tanda kurung biasa digunakan untuk urutan mengerjakan, misalnya x = (2 + 3) * 2;
(2 + 3 akan dikerjakan terlebih dahulu baru dikalikan dengan 2)
Contoh program:
//* Operasi aritmatika dengan menggunakan tanda kurung) *
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int x;
x = 2 + 3 * 2;
cout << "x= " << x << '\n';
x = (2 + 3) * 2;
cout << "x= " << x << '\n';
}
Hasil eksekusi program:
x= 8
x= 12
Operator seperti penjumlahan, pengurangan, perkalian dan pembagian merupakan hal yang umum. Adapun operator sisa pembagian (operator modulus) yang berupa % ada baiknya untuk diterangkan lebih lanjut. Operator ini diterapkan pada operan bertipe integer. Untuk lebih jelasnya perhatikan beberapa contoh berikut:
7 % 2 -> 1 sisa pembagian bilangan 7 dengan 2 adalah 1
9 % 5 -> 4 sisa pembagian bilangan 9 dengan 5 adalah 4
Contoh program
//* sisa pembagian (modulus) *
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout << 9 % 5 << '\n';
cout << 13 % 5 << '\n';
}
Hasil eksekusi program:
4
3
e) Operator Assigenment
Operator assigenment dalam bahasa pemrograman C/C++ berbeda dengan statement assigenment dalam bahasa yang lain. Assigenment dilakukan oleh operator assigenment dan bukan oleh staement assigenment. Seperti operator bahasa pemrograman C++ yang lain, hasil operator assigenment merupakan nilai yang diberikan. Misalnya :
nilai = 4 * (bilangan = 3)
Disini bilangan diberikan nilai 3. Nilai 3 ini dikali dengan 4, sehingga nilai mendapatkan hasil akhir 12.
Sumber:
Tidak ada komentar:
Posting Komentar