Operator, Tipe Casting dan Pengaturan Desimal Yuli Astuti, Jurusan Sistem Informasi, STMIK AMIKOM Yogyakarta, Jl. Ring Road Utara, Condong Catur, Sleman, Yogyakarta, Indonesia 3.1. Operator Dalam dunia pemrograman operator sering di gunakan untuk mendefinisikan operasioperasi di dalamnya, baik itu operasi perhitungan, perbandingan maupun operasi-operasi yang lainnya. Operator-operator yang sering digunakan yaitu : a. Operator Aritmatik Operator Jenis Operasi Contoh + Penjumlahan 2 + 3 = 5 - Pengurangan 6 3 = 3 * Perkalian 2 * 4 = 8 / Pembagian 5 / 2 = 2.5 % Modulo 5 % 2 = 1 Contoh program 3.1 : int a,b,plus,min,kali,bagi,mod; cout<<"contoh penggunaan operator aritmatik\n"; cout<<"masukkan angka pertama (a) = ";cin>>a; cout<<"masukkan angka kedua (b) = ";cin>>b; plus=a+b; min=a-b; kali=a*b; bagi=a/b; mod=a%b; cout<<"\njumlah = "<<plus; cout<<"\nkurang = "<<min; cout<<"\nkali = "<<kali; cout<<"\nbagi = "<<bagi; cout<<"\nmodulo = "<<mod;
Output dari contoh program 3.1 sebagai berikut : b. 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 3.2 : main(){ int i = 4; int j = 8; int k = 12; int jwb; jwb = i + j; jwb += k; jwb /= 3; jwb -= 5; jwb *= 2; jwb %= 4; jwb *= 5+3; jwb += 4-2; Output dari contoh program 3.2 sebagai berikut :
c. Operator Logika Adalah operator yang digunakan untuk melakukan operasi dimana nilai yang dihasilkan dari operasi tersebut hanya berupa nilai benar (true) dan salah (false), atau sering disebut dengan nilai boolean. Operator Jenis Operator Contoh && AND (dan) 1 && 1 = 1 OR (atau) 1 0 = 0! NOT (negasi)!0 = 1 Contoh program 3.3 : cout<< 1 && 1 = <<(1 && 1)<<endl; cout<< 1 && 0 = <<(1 && 0)<<endl; cout<< 0 && 0 = <<(0 && 0)<<endl; cout<< 0 && 1 = <<(0 && 1)<<endl; cout<< 1 1 = <<(1 1)<<endl; cout<< 1 0 = <<(1 0)<<endl; cout<< 0 0 = <<(0 0)<<endl; cout<< 0 1 = <<(0 1)<<endl; cout<<!1 = <<!1<<endl; cout<<!0 = <<!0<<endl; Output dari contoh program 3.3 sebagai berikut : 3.2. Increase dan Decrease Increase atau incremen adalah proses penambahan satu (menaikkan satu), dalam bahasa C++ ada dua jenis increase yaitu pre-increase (prefix) dan post-increase (posfix). Pre-increase
yaitu akan melakukan penambahan nilai sebelum suatu variabel tersebut diproses, sedangkan post-increase merupakan kebalikannya yaitu melakukan proses terlebih dahulu sebelum dilakukan penambahan nilai. Sedangkan decrease atau descremen adalah proses pengurangan satu (menurunkan satu), untuk decrease juga mempunyai dua jenis yaitu pre-decrease (prefix) dan post-decrease (posfix). Pre-decrease yaitu akan melakukan pengurangan nilai sebelum suatu variabel tersebut diproses, sedangkan post-decrease merupakan kebalikannya yaitu melakukan proses terlebih dahulu sebelum dilakukan pengurangan nilai. Operator Contoh Deskripsi Pernyataan yang ekivalen ++ J++; posfix j = j + 1; j += 1; ++ ++j; prefix j = j + 1; j += 1; -- j--; postfix j = j - 1; j -= 1; -- --j; prefix j = j - 1; j -= 1; Contoh program 3.4 : // increase dan decrease main() { int i1=4,i2=4; int j1=8,j2=8; int a,b,c,d; a=++i1; b=i2++; c=--j1; d=j2--; cout<<"\nnilai a = "<<a; cout<<"\nnilai i1 = "<<i1; cout<<"\n\nnilai b = "<<b; cout<<"\nnilai i2 = "<<i2; cout<<"\n\nnilai c = "<<c; cout<<"\nnilai j1 = "<<j1; cout<<"\n\nnilai d = "<<d; cout<<"\nnilai j2 = "<<j2; Output dari contoh program 3.4 sebagai berikut :
3.3. Type Casting Tipe casting yaitu tipe data sementara, artinya mengubah tipe data suatu variabel hanya dalam operasi aritmatika. Setelah operasi aritmatika, tipe data variabel tersebut tetap sesuai deklarasi awalnya. Contoh program 3.5 : int a,b,mod; float hasil; cout<<"contoh penggunaan / dan %\n\n"; cout<<"masukkan angka pertama (a) = ";cin>>a; cout<<"masukkan angka kedua (b) = ";cin>>b; hasil=a/b; mod=a%b; cout<<"\nhasil pembagian = "<<hasil; cout<<"\nsisa hasil bagi = "<<mod; Output dari contoh program 3.5 sebagai berikut : Untuk hasil pembagian seharusnya 2,5 karena dari 5 di bagi 2 adalah 2,5. Mengapa demikian? Karena variabel a dan b bertipe integer. Tetapi jika variabel a dan b dirubah menjadi tipe data float maka akan error sehingga muncul pesan : Apa arti dari pesan error tersebut? Arti pesan error tersebut yaitu, untuk dua variabel a dan b yang bertipe integer tersebut tidak bisa digunakan untuk operasi aritmatik modulo (mod atau %), sedangkan untuk operasi aritmatik pembagian (/), syaratnya untuk variabel hasil (variabel yang digunakan sebagai penampung hasil pembagian) dan salah satu variabel yang akan dibagi harus bertipe float. Jadi artinya dengan adanya dua operasi aritmatik tersebut dalam
satu program dan dengan variabel yang sama ini tidak bisa dikerjakan. Dengan demikian, agar kedua operasi tersebut bisa berjalan bersama dalam satu program maka dibutuhkan type casting (tipe data sementara), sehingga menjadi sebagai berikut : Contoh program 3.6 : int a,b,mod; float hasil; cout<<"contoh penggunaan / dan %\n\n"; cout<<"masukkan angka pertama (a) = ";cin>>a; cout<<"masukkan angka kedua (b) = ";cin>>b; hasil=float(a)/b; atau hasil=a/folat(b); mod=a%b; cout<<"\nhasil pembagian = "<<hasil; cout<<"\nsisa hasil bagi = "<<mod; Untuk rumushasil=float(a)/b ini yang disebut dengan tipe casting, pada rumus hasil variabel a sudah berubah tipe data menjadi float dan ini hanya sementara atau hanya berlaku pada rumus hasil atau pada operasi pembagian saja. Ketika pada operasi modulo atau pada rumus mod variabel a sudah kembali lagi ke tipe data integer yang sudah dideklarasikan di awal program. Sehingga aoutput dari contoh program 3.6 adalah : 3.4. Pengaturan Desimal dan Non Desimal Ada dua metode pengaturan desimal dan non desimal yaitu: menggunakan instruksi setprecision(n) menggunakan instruksi setiosflag(ios::fixed) Kedua perintah tersebut memerlukan header file iomanip.h
Contoh program 3.7 : int a,b,mod; float bagi; cout<<"\n\tcontoh penggunaan / dan %\n\n"; cout<<"\tmasukkan angka pertama (a) = ";cin>>a; cout<<"\tmasukkan angka kedua (b) = ";cin>>b; bagi=float(a)/b; mod=a%b; cout<<"\n\thasil pembagian = "<<bagi; cout<<"\n\tsisa hasil bagi = "<<mod; Output dari contoh program 3.7 adalah : 3.33333 ada 1 angka di depan koma dan 5 angka di belakang koma (,) Contoh program 3.8 adalah : #include <iomanip.h> int a,b,mod; float bagi; cout<<"\n\tcontoh penggunaan / dan %\n\n"; cout<<"\tmasukkan angka pertama (a) = ";cin>>a; cout<<"\tmasukkan angka kedua (b) = ";cin>>b; bagi=float(a)/b; mod=a%b; cout<<"\n\thasil pembagian = "<<setprecision(3) <<bagi; cout<<"\n\tsisa hasil bagi = "<<mod; Output dari contoh program 3.8 adalah : ada 1 angka di depan koma dan 2 angka di belakang koma (,)
Jika inputan di rubah angkanya : ada 2 angka di depan koma dan 1 angka di belakang koma (,) Perintah setprecision(n) artinya n adalah ketelitian/presisi untuk desimal dan bilangan bulat, atau bisa dikatakan pesan space (tempat) untuk angka didepan dan di belakang koma. Pada contoh 3.8 terdapat perinah : cout<<"\n\thasil pembagian ="<<setprecision(3)<<bagi; artinya : pada variabel bagi hanya akan menampilkan angka 3 digit saja untuk bilangan bulat dan desimalnya. Contoh program 3.9 adalah : #include <iomanip.h> int a,b,mod; float bagi; cout<<"\n\tcontoh penggunaan / dan %\n\n"; cout<<"\tmasukkan angka pertama (a) = ";cin>>a; cout<<"\tmasukkan angka kedua (b) = ";cin>>b; bagi=float(a)/b; mod=a%b; cout<<"\n\thasil pembagian cout<<"\n\tsisa hasil bagi Output dari contoh program 3.9 adalah : = <<setiosflags(ios::fixed) <<setprecision(3) <<bagi; = "<<mod; ada 1 angka di depan koma dan 3 angka di belakang koma (,) Jika inputan di rubah angkanya : ada 2 angka di depan koma dan 3 angka di belakang koma (,)
Perintah setiosflags(ios::fixed)<<setprecision(n) artinya n adalah ketelitian/presisi untuk desimalnya saja, atau bisa dikatakan pesan space (tempat) untuk angka di belakang koma. Jadi n yang pada awalnya untuk pengaturan bilangan bulat dan desimal, sekarang dengan tambahan perintah <<setiosflags(ios::fixed)sebelum perintah <<setprecision(3) sudah berubah fungi menjadi pengaturan bilangan desimal saja. Pada contoh 3.9 terdapat perinah : cout<<"\n\thasil pembagian ="<<setiosflags(ios::fixed) <<setprecision(3)<<bagi; artinya : pada variabel bagi hanya akan menampilkan 3 digit saja untuk bilangan desimalnya. 3.5. Fungsi Built-in Fungsi-fungsi tersebut antara lain: Fungsi sqrt(x) digunakan untuk mencari akar ( x). Fungsi pow(x,y) digunakan untuk mencari pangkat (x y). Kedua fungsi tersebut harus menggunakan header file math.h Contoh program 3.10 adalah : //penggunaan sqrt dan pow #include <math.h> float a,b,c,d; a=5; b=7; c=sqrt(a); d=pow(a,b); cout<<"\nakar "<<a<<" = "<<c; cout<<"\n"<<a<<" pangkat "<<b<<" = "<<d; Output dari contoh program 3.10 adalah :
Keterangan : c=sqrt(a); Perintah diatas artinya, variabel c berisi akar dari variabel a yang nilainya 5,artinya sama dengan c= a. d=pow(a,b); Sedangkan perintah pow digunakan untuk pangkat, artinya variabel d berisi angka dari variabelapangkatbartinya sama dengand=a b. Daftar Pustaka Budi raharjo, Pemrograman C++ mudah dan cepat menjadi master C++, Informatika, 2007 Indra Yatini B, Pemrograman terstruktur, J & J Learning, 2001 Armadyah Amborowati, Pengantar pemrograman terstruktur, Andi, 2007 www.ilmukomputer.com www.cplusplus.com