Membuat Efek Cahaya Lampu Mobil Dengan Photoshop

Lama gk posting, sembari perut lapar akhirnya saya pengen membuat artikel menggunakan phitishop yaitu menggunakan efek cahaya. Berikut langkah-langkahnya
1. Pertama-tama tentukan foto/gambar mobil yang mau di edit bias nyari dengan bantuan eyang google.
2. Setelah ada foto yang akan di edit, selanjutnya buka photoshop kemudian buka foto tersebut.
3. Setelah foto di buka, buka menu Filter > Render >LensFlare
4. Kemudian atus cahaya, cahaya bias di pindah dengan sambil menekan geser kiri atau kekanan.

Cukup segini artikel, untuk lebih jelasnya bias di download versi videonya

Related Posts:

Tutorial EXCEL

Saya rasa excel merupakan aplikasi yang sangat familiar dengan kita, karena fasilitas yang ada sangat membantu daam menyelesaikan tugas, mulai dari yang sederhana membuat ketikan sampai menyelesaikan masalah yang berhubungan dengan keuangan yang begitu banyak menggunakan data. Kali ini saya meberikan sedikit tutorial, tutorial ini di tujukan bagi yang baru mengenal komputer dan masih awam dengan aplikasi exel, tutorial inin saya sajikan berbeda dengan yang lain dimana tutorial menggunakan media text. Pada kali ini saya menggunakan media video yaitu ideo tutorial excel. Untuk lebih jelasnya silahkan download semoga bermanfaat bagi kita semua

Related Posts:

Instalasi Webmin Redhat 9 Server

B. Pendahuluan

Menginstal Webmin sama halnya dengan menginstal paket lainnya. Terdapat tiga jenis versi webmin, yaitu versi rpm, tarbal (tar.gz) dan pkg. Hampir semua turunan unix mendukung versi tarbal asalkan Perl terinstal dengan benar. RPM didukung setidaknya oleh distro Mandrake, Redhat (Fedora), SuSE dan Caldera.


C. Instalasi Webmin Paket RPM

Pastikan paket rpm untuk webmin telah kita siapkan (bisa didapatkan dari CD/DVD Distro Linux atau dapat juga men-download di http://www.webmin.com). Disini kita akan menyalin paket rpm webmin terlebih dahulu ke direktori /home. Selanjutnya untuk menginstal paket rpm, kita masuk ke direktori /home dengan mengetikkan perintah di shell :

# cd /home
# rpm -ivh webmin-1.340-1.noarch.rpm
Preparing... ########################################### [100%]
Operating system is Redhat Linux
1:webmin ########################################### [100%]
Webmin install complete. You can now login to
http://nic.poltektugu.net:10000/
as root with your root password.

Pada keterangan tersebut webmin sudah terinstal dengan benar dan dapat digunakan melalui browser client (misal : mozilla, konqueror, opera dan lain sebagainya) dengan mengisikan pada bagian URL http://nic.poltektugu.net:10000/ dan isikan Username dengan root dan password dari root komputer linux tersebut. Pada gambar dibawah ini webmin dibuka di browser client pada komputer windows.


Gambar 1.1 Login Webmin

Related Posts:

C++ Bagian 8C

Pointer


Pointer adalah suatu variabel yang mempunyai harga alamat dari variabel lain atau elemen array. Pointer banyak digunakan dalam pemrograman C++, misalkan untuk mengirimkan informasi dari dan ke fungsi. Terutama pointer sangat berguna untuk mengirimkan data yang terdiri lebih dari satu harga dari dan ke fungsi. Untuk memahami pointer kita perlu pengetahuan tentang bagaimana komputer menyimpan informasi di dalam memori. Memori di dalam PC yang dikenal sebagai RAM (Random Access Memory) terdiri dari sederetan sel memori dan setiap sel memori mempunyai alamat tersendiri.

Sewaktu kita mendefinisikan variabel, C++ akan memberikan sel memori dengan address tertentu yang tak terpakai untuk menyimpan variabel itu. Bila program kita menggunakan nama variabel tersebut, otomatis akan menggunakan alamat dari sel memori yang berhubungan dengan variabel tersebut. Suatu misal ketika kita mendefinisikan variabel lebar dengan harga awal 25 dan dimisalkan C++ memberikan alamat 1004 untuk variabel lebar, hal ini dapat digambarkan sebagai berikut :

Alamat Memori Variabel
1001
1002
1003
1004 25 lebar


Jika kita mengetahui alamat dari suatu variabel, maka kita dapat menciptakan variabel kedua yang menyimpan alamat dari variabel pertama. Misalkan kita mendefinisikan variabel kedua plebar yang menyimpan alamat dari variabel pertama lebar. Karena plebar memuat alamat dari lebar, ini berarti plebar menunjukkan lokasi penyimpanan di dalam memori. Dalam pergertian ini berarti plebar menunjuk ke lebar atau sebagai pointer ke lebar. Misalkan plebar mempunyai alamat 1001, hal ini dapat digambarkan sebagai berikut :

Alamat Memori Variabel
1001 1004 Plebar
1002
1003
1004 25 Lebar

Kesimpulan : suatu pointer adalah suatu variabel yang memuat atau menyimpan alamat dari variabel lain, termasuk elemen array.

Deklarasi Pointer
Variabel pointer sma seperti variabel yang lain harus dideklarasikan sebelum digunakan didalam program C++. Nama variabel pointer mengikutim atuaran yang sama seperti variabel lain. Variabel pointer dideklarasikan dengan membubuhi tanda asteriks ( * ) didepan nama variabel pointer. Tipe data yang dituliskan pada deklarasi pointer menunjukkan tipe data dari data yang alamatnya disimpan di dalam pointer dan bukan tipe data dari pointer itu sendiri. Bentuk umum deklarasi variabel pointer adalah :
tipe data *variabel_pointer ;

Berikut ini beberapa contoh deklarasi pointer :

int *radius; atau int * radius; atau int* radius;
float *volume; atau float * volume; atau float* volume;

Operator Alamat ( & )
Dari gambar penjelasan sebelumnya, alamat dari lokasi memori variabel lebar dapat ditentukan dengan ekspresi &lebar, dimana & adalah operator unary yang disebut juga sebagai operator alamat. Disini &lebar adalah alamat dari variabel lebar yaitu 1004. Jadi plebar adalah sama dengan &lebar.

Operator Dereferensi ( * )
Data yang disimpan di dalam variabel lebar dari penjelasan sebelumnya, dapat dibaca dari variabel pointer plebar dengan menggunakan ekspresi *plebar, dimana tanda asterik ( * ) adalah operator unary, yang disebut operator dereferensi. Operator dereferensi ( * ) ini hanya digunakan untuk variabel pointer. Jadi *plebar dan lebar adalah sama, yakni menunjukkan harga variabel lebar 25.

Contoh 8.1 :

#include
#include

void main()
{
int panjang, lebar, luas;
int *p_panjang, *p_lebar, *p_luas;

p_panjang = &panjang;
p_lebar = &lebar;
p_luas = &luas;

cout << "Panjang : "; cin >> panjang;
cout << "Lebar : "; cin >> lebar;

luas = panjang * lebar;

cout << endl << endl;
cout << "Data yang diinputkan ke panjang : " << panjang <<
endl;
cout << "Data yang diinputkan ke lebar : " << lebar << endl;
cout << "Data yang dihasilkan oleh luas : " << luas << endl
<< endl;
cout << "Data yang disimpan oleh *p_panjang : " << *p_panjang
<< endl;
cout << "Data yang disimpan oleh *p_lebar : " << *p_lebar <<
endl;
cout << "Data yang disimpan oleh *p_luas : " << *p_luas <<
endl << endl;
cout << "Data alamat variabel panjang : " << &panjang << endl;
cout << "Data alamat variabel lebar : " << &lebar << endl;
cout << "Data alamat variabel luas : " << &luas << endl <<
endl;
cout << "Data alamat variabel p_panjang : " << p_panjang <<
endl;
cout << "Data alamat variabel p_lebar : " << p_lebar <<
endl;
cout << "Data alamat variabel p_luas : " << p_luas << endl
<< endl;
getch();
}

Keluaran programnya :

Panjang : 8
Lebar : 6

Data yang diinputkan ke panjang : 8
Data yang diinputkan ke lebar : 6
Data yang dihasilkan oleh luas : 48

Data yang disimpan oleh *p_panjang : 8
Data yang disimpan oleh *p_lebar : 6
Data yang disimpan oleh *p_luas : 48


Data alamat variabel panjang : 0x8f5efff4
Data alamat variabel lebar : 0x8f5efff2
Data alamat variabel luas : 0x8f5efff0

Data alamat variabel p_panjang : 0x8f5efff4
Data alamat variabel p_lebar : 0x8f5efff2
Data alamat variabel p_luas : 0x8f5efff0

Perhatikan bahwa p_panjang adalah pointer ke variabel panjang, p_lebar adalah pointer ke variabel lebar dan p_luas adalah pointer ke variabel luas. Isi dari p_panjang adalah alamat dari variabel panjang, isi dari p_lebar adalah alamat dari variabel lebar dan isi dari p_luas adalah alamat dari variabel luas.

Mengirimkan Pointer ke Fungsi
Pointer sering digunakan sebagai argumen dari suatu fungsi. Hal ini memungkinkan pertukaran informasi atau data dari fungsi yang satu ke fungsi yang lain. Bila digunakan pointer, maka alamat dari variabel dikirimkan ke fungsi, sedangkan bila digunakan variabel biasa, maka informasi atau data disalin ke fungsi yang dipanggil.

Jadi perubahan suatu data di dalam fungsi tidak berpengaruh terhadap fungsi lain, karena yang diubah hanyalah salinan dari informasi atau data. Bila yang dikirimkan adalah alamat dari suatu variabel pointer, maka perubahan harga dari variabel yang alamatnya dikirimkan tersebut akan berpengaruh terhadap fungsi lain yang menggunakan alamat tersebut.

Contoh 8.2 :

#include
#include

void input_data (float *pr1, float *pr2, float *pr3, float *pi);
void hitung_data (float *pr1, float *pr2, float *pr3,
float *pi,float *prs, float *prp, float *pvs, float *pvp);
void tampilkan (float *prs, float *prp, float *pi, float *pvs,
float *pvp);
void main()
{
float i, r1, r2, r3;
float rs, rp, vs, vp;
float *pi, *pr1, *pr2, *pr3;
float *prs, *prp, *pvs, *pvp;
clrscr();

input_data (&r1, &r2, &r3, &i);
hitung_data (&r1, &r2, &r3, &i, &rs, &rp, &vs, &vp);
tampilkan (&rs, &rp, &i, &vs, &vp);
getch();
}

void input_data (float *pr1, float *pr2, float *pr3, float *pi)
{
cout << "Masukkan Data Tegangan dan Arusnya :" << endl;
cout << "Data R1 : ";
cin >> *pr1;
cout << "Data R2 : ";
cin >> *pr2;
cout << "Data R3 : ";
cin >> *pr3;
cout << "Data i : ";
cin >> *pi;
cout << endl;
}

void hitung_data (float *pr1, float *pr2, float *pr3, float *pi, float *prs, float *prp, float *pvs, float *pvp)
{
float paralel;

*prs = *pr1 + *pr2 + *pr3;
paralel = (1 / *pr1)+(1 / *pr2)+(1 / *pr3);
*prp = 1/paralel;
*pvs = *pi * *prs;
*pvp = *pi * *prp;
}

void tampilkan (float *prs, float *prp, float *pi, float *pvs,
float *pvp)
{
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << "Data total hambatan dan tegangan (seri/paralel) serta
arusnya :" << endl;
cout << "Total hambatan seri (Rs) : " << *prs << endl;
cout << "Total hambatan paralel (Rp) : " << *prp << endl;
cout << "Arus yang melaluinya (i) : " << *pi << endl;
cout << "Tegangan Seri (Vs) : " << *pvs << endl;
cout << "Tegangan paralel (Vp) : " << *pvp << endl;
}

Keluaran programnya :

Masukkan Data Tegangan dan Arusnya :
Data R1 : 1.5
Data R2 : 3.7
Data R3 : 6.3
Data i : 0.45

Data total hambatan dan tegangan (seri/paralel) serta arusnya :
Total hambatan seri (Rs) : 11.50
Total hambatan paralel (Rp) : 0.91
Arus yang melaluinya (i) : 0.45
Tegangan Seri (Vs) : 5.17
Tegangan paralel (Vp) : 0.41

Pada Contoh 8.2 fungsi main hanya berfungsi sebagai pengendali terhadap tiga fungsi buatan yaitu input_data, hitung_data dan tampilkan. Ketiga fungsi tersebut memiliki parameter formal berupa pointer yang mengambil dan mengirimkan nilai dari alamat yang diberikan oleh parameter aktual yang ada di fungsi main.

Pada fungsi input_data terdapat variabel pointer yang nantinya akan menerima data yang diinput dari keyboard. Karena fungsi main memanggil fungsi input_data dengan alamat maka nilai atau data yang ada pada fungsi tersebut bisa diakses oleh fungsi main. Dengan demikian fungsi main sekarang memiliki nilai atau data r1, r2, r3 dan i yang sama dengan nilai atau data yang ada di fungsi input_data.

Selanjutnya fungsi main memanggil fungsi hitung_data agar menghitung jumlah hambatan dan tegangan seri-paralel. Fungsi hitung_data akan mengerjakan proses tersebut sesuai dengan nilai r1, r2, r3 dan i yang dikirimkan oleh fungsi main dan juga mengembalikan hasilnya rs, rp, vs dan vp kepada fungsi tersebut.

Sedangkan fungsi tampilkan yang dipanggil oleh fungsi main akan menampilkan nilai yang didapat oleh fungsi main dari fungsi input_data yaitu : i dan fungsi hitung_data yaitu : rs, rp, vs dan vp.

Contoh 8.3 :
Program berikut ini adalah modifikasi dari contoh program sebelumnya yaitu dengan menghilangkan fungsi tampilkan dan isi program fungsi tersebut diletakan pada fungsi main.

#include
#include

void input_data (float *pr1, float *pr2, float *pr3, float *pi);
void hitung_data (float *pr1, float *pr2, float *pr3,
float *pi,float *prs, float *prp, float *pvs, float *pvp);

void main()
{
float i, r1, r2, r3;
float rs, rp, vs, vp;
float *pi, *pr1, *pr2, *pr3;
float *prs, *prp, *pvs, *pvp;
clrscr();

prs = &rs;
prp = &rp;
pi = &i;
pvs = &vs;
pvp = &vp;

input_data (&r1, &r2, &r3, &i);
hitung_data (&r1, &r2, &r3, &i, &rs, &rp, &vs, &vp);
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << "Data total hambatan dan tegangan (seri/paralel) serta
arusnya :" << endl;
cout << "Total hambatan seri (Rs) : " << *prs << endl;
cout << "Total hambatan paralel (Rp) : " << *prp << endl;
cout << "Arus yang melaluinya (i) : " << *pi << endl;
cout << "Tegangan Seri (Vs) : " << *pvs << endl;
cout << "Tegangan paralel (Vp) : " << *pvp << endl;
getch();
}

void input_data (float *pr1, float *pr2, float *pr3, float *pi)
{
cout << "Masukkan Data Tegangan dan Arusnya :" << endl;
cout << "Data R1 : ";
cin >> *pr1;
cout << "Data R2 : ";
cin >> *pr2;
cout << "Data R3 : ";
cin >> *pr3;
cout << "Data i : ";
cin >> *pi;
cout << endl;
}

void hitung_data (float *pr1, float *pr2, float *pr3, float *pi,
float *prs, float *prp, float *pvs, float *pvp)
{
float paralel;

*prs = *pr1 + *pr2 + *pr3;
paralel = (1 / *pr1)+(1 / *pr2)+(1 / *pr3);
*prp = 1/paralel;
*pvs = *pi * *prs;
*pvp = *pi * *prp;
}

Keluaran programnya :

Masukkan Data Tegangan dan Arusnya :
Data R1 : 1.5
Data R2 : 3.7
Data R3 : 6.3
Data i : 0.45

Data total hambatan dan tegangan (seri/paralel) serta arusnya :
Total hambatan seri (Rs) : 11.50
Total hambatan paralel (Rp) : 0.91
Arus yang melaluinya (i) : 0.45
Tegangan Seri (Vs) : 5.17
Tegangan paralel (Vp) : 0.41

Pada contoh program diatas hampir sama dengan contoh program sebelumnya yaitu dengan menambahkan pernyataan prs = &rs, prp = &rp, pi = &i, pvs = &vs dan pvp = &vp sebagai penunjuk alamat bagi variabel pointer *prs, *prp, *pvs, *pvp dan *pi yang akan menampilkan nilainya.

Dengan demikian dari contoh program 8.2 dan 8.3 diperoleh kesimpulan bahwa pengiriman nilai melalui fungsi dengan menggunakan pointer maka perubahan nilai atau data yang terjadi pada fungsi tersebut akan berpengaruh terhadap fungsi lainnya.

Array dan Pointer
Hingga saat ini array dianggap sebagai daftar nilai. Ini merupakan pengertian array secara konsep. Secara internal nama array adalah pointer ke elemen pertama dalam array. Sewaktu kita mendefinisikan array seperti ini :

int umur[] = { 32, 45, 42, 19, 67 }

Misalkan ingin menampilkan elemen pertama dan kedua array tersebut.

cout << “Nilai elemen kesatu : “ << umur[0];
cout << “Nilai elemen kedua : “ << umur[1];

Berikut ini juga akan menampilkan nilai elemen pertama dan kedua dengan menggunakan pointer.

cout << “Nilai elemen kesatu : “ << *(umur + 0);
cout << “Nilai elemen kedua : “ << *(umur + 1);

Kedua pernyataan cout tersebut akan menghasilkan nilai yang sama yaitu angka 32 dan 45. Perhatikan bahwa bentuk berikut ini adalah ekuivalen :

umur[3], *(umur + 3), *(umur + 0)[3], *(umur + 1)[2], *(umur + 2)[1] dan *(umur + 3)[0]

Contoh 8.4 :

#include
#include

void main()
{
int i;
float nilai[3] = { 11.1, 22.2, 33.3 };
clrscr();

cout.precision(1);
cout.setf(ios::showpoint);
cout.setf(ios::fixed);

cout << "Bentuk array yang menggunakan subscript :" << endl;
for (i = 0; i < 3; i++)
{ cout << nilai[i] << ' '; }

cout << endl << endl;
cout << "Bentuk array yang menggunakan pointer:" << endl;
for (i = 0; i < 3; i++)
{ cout << *(nilai + i) << ' '; }

cout << endl << endl;
cout << "Bentuk array kombinasi:" << endl;
cout << (nilai + 0)[0] << ' ';
cout << (nilai + 1)[0] << ' ';
cout << (nilai + 0)[1] << ' ';
cout << (nilai + 1)[1] << ' ';
cout << (nilai + 2)[1] << ' ';
cout << (nilai + 1)[2] << ' ';
getch();
}

Keluaran programnya :

Bentuk array yang menggunakan subscript :
11.1 22.2 33.3

Bentuk array yang menggunakan pointers:
11.1 22.2 33.3

Bentuk array kombinasi:
11.1 22.2 22.2 33.3 33.3 33.3

Array Pointer
Anda dapat mendefenisikan sebuah array yang menampung tipe data apa saja, termasuk pointer. Berikut merupakan cara menginisialisasi array semacam itu :

char *kota[5] = { “Jakarta”, “Bandung”, “Semarang” };

Ingatlah bahwa C++ memperlakukan literal string sebagai sebuah alamat. Dengan kata lain C++ menyimpan tiga nama kota pada suatu tempat dalam memori yang bebas. Kemudian C++ menugaskan alamat masing-masing literal string itu ke masing-masing elemen array kota.

Contoh 8.5 :

#include
#include

void main()
{
int i;
clrscr();

char *kota[5] = { "Jakarta", "Bandung", "Semarang" };

//Menampilkan tiga nama kota yang diisikan pada program
cout << "Berikut ini adalah kota tersebut"<< endl;
for (i = 0; i < 3; i++)
{ cout << kota[i] << “, “; }
cout << endl;

//Mengganti nama kota diatas dengan yang lainnya
kota[0] = "Yogyakarta";
kota[1] = "Surabaya";
kota[2] = "Bali";

//Menampilkan nama kota dengan notasi pointer
cout << endl << "Berikut ini adalah kota tersebut" << endl;
for (i = 0; i < 3; i++)
{ cout << *(kota + i) << “, “; }
cout << endl;
getch();
}
Keluaran programnya :

Berikut ini adalah kota tersebut
Jakarta, Bandung, Semarang,

Berikut ini adalah kota tersebut
Yogyakarta, Surabaya, Bali,

Setelah menugaskan pointer ke nama-nama kota, loop for pertama pada contoh program diatas akan menampilkan 3 kota menggunakan notasi subscribt. Kemudian variabel kota diisikan dengan data string yang baru melalui masing-masing elemen array. Fungsi strcpy() tidak akan berkerja dengan baik pada penugasan kalau literal string baru lebih panjang daripada string yang akan ditunjuk. Loop for kedua menampilkan nama ketiga kota yang baru memakai dereferensi pointer.

Contoh 8.6 :

#include
#include
#include

void menu_tampilan();
int informasi();
void tampilan_properti(char *kode[], float harga[],
char *alamat[], float komisi[]);
void pencarian_properti(char *kode[], float harga[],
char *alamat[], float komisi[]);

void main()
{
int hasil;
char *kode[3] = { "11A", "22B", "33C" };
float harga[3] = { 15000, 25000, 50000};
char *alamat[3] = { "Jl. Akses UI Depok 12264",
"Jl. Pondok Indah Jakarta 12223",
"Jl. Ciputat Raya Jakarta 12241" };
float komisi[3] = { 0.15, 0.20, 0.30 };
clrscr();

do
{
clrscr();
menu_tampilan();
hasil = informasi();

switch (hasil)
{
case (1) :
{ tampilan_properti(kode, harga, alamat, komisi);
break; }
case (2) :
{ pencarian_properti(kode, harga, alamat, komisi);
break; }
case (3) :
{ return;
break; }
}
} while (hasil != 3);
}
void menu_tampilan()
{
cout << endl << endl;
cout << "** Property Menu Database **" << endl << endl;
cout << "Menu yang bisa dipilih:" << endl << endl;
cout << "1. Melihat data properti" << endl;
cout << "2. Mencari data dengan indeks kode" << endl;
cout << "3. Keluar program" << endl;
cout << endl << "Anda memilih menu (1/2/3) ? ";
}

int informasi()
{
int pilih;
cin >> pilih;
cin.ignore(30,'\n');
return (pilih);
}

void tampilan_properti(char *kode[], float harga[],
char *alamat[], float komisi[])
{
int i;

cout.precision(2);
cout.setf(ios::showpoint);
cout.setf(ios::fixed);

for (i = 0; i < 3; i++)
{
cout << endl ;
cout << "Kode : " << kode[i] << endl;
cout << "Harga : Rp " << harga[i] << endl;
cout << "Alamat : " << alamat[i] << endl;
cout << "Persen komisi : "<< komisi[i] * 100.0 << "%"
<< endl << endl;
}
cout << "Tekan tombol enter untuk lanjut...";
cin.ignore(30,'\n');
}

void pencarian_properti(char *kode[], float harga[],
char *alamat[], float komisi[])
{
int i;
int ketemu = 0;
char buf[6];

cout.precision(2);
cout.setf(ios::showpoint);
cout.setf(ios::fixed);

cout << endl << "Saya akan mencari data yang kita inginkan"
<< endl;
cout << "Tuliskan kode properti dari data yang diinginkan : ";
cin.getline(buf, 6);
for (i = 0; i < 3; i++)
{
if (!strcmp(kode[i], buf))
{
cout << endl ;
cout << "Kode : " << kode[i] << endl;
cout << "Harga : Rp " << harga[i] << endl;
cout << "Alamat : " << alamat[i] << endl;
cout << "Persen komisi : " << komisi[i]*100.0 << "%"
<< endl << endl;
ketemu = 1;
cout << "Tekan sembarang tombol untuk kembali ke
menu......" << endl;
getch();
break;
}
}

if (!ketemu)
{
cout << endl << "Data dengan kode : " << buf << " tidak
ditemukan" << endl << endl;
cout << "Tekan sembarang tombol untuk kembali ke
menu......" << endl;
getch();
}
}

Keluaran programnya :

** Property Menu Database **

Menu yang bisa dipilih:

1. Melihat data properti
2. Mencari data dengan indeks kode
3. Keluar program

Anda memilih menu (1/2/3) ? 1

Kode : 11A
Harga : Rp 15000.00
Alamat : Jl. Akses UI Depok 12264
Persen komisi : 15.00%

Kode : 22B
Harga : Rp 25000.00
Alamat : Jl. Pondok Indah Jakarta 12223
Persen komisi : 20.00%

Kode : 33C
Harga : Rp 50000.00
Alamat : Jl. Ciputat Raya Jakarta 12241
Persen komisi : 30.00%

Tekan tombol enter untuk lanjut...

Pada contoh program diatas dengan menggunakan variabel pointer, maka kita dapat mengakses data dengan alamatnya dan bukan melalui nama variabel. Prototipe string.h digunakan untuk fungsi strcmp (membandingkan isi string). Empat fungsi yang dideklarasikan diatas, dua fungsi tanpa parameter dan dua lagi menggunakan parameter.

Variabel kode dan alamat pada parameter fungsi tampilan_properti serta pencarian_properti dideklarasikan sebagai array pointer agar dapat menangani data yang berisi string. Pada fungsi main variabel kode, harga, alamat dan komisi diisikan langsung pada kode program. Untuk memilih menu dilakukan dengan menggunakan pernyataan do-while yang mana pernyataan ini akan selalu berulang-ulang apabila kita memberikan nilai tidak sama dengan 3. Sedangkan untuk mengakhiri tampilan menu ini kita dapat memberikan input dengan menekan tombol angka 3.

Didalam pernyataan do-while, untuk memilih menu yang memanggil salah satu fungsi digunakan pernyataan switch(). Jadi pemanggilan fungsi yang dilakukan didalam pernyataan switch() membuat agar fungsi-fungsi tersebut tidak harus dijalankan secara serentak seperti pada contoh program 8.2 tetapi hanya fungsi yang ditunjuk oleh pernyataan switch() yang akan bekerja. Fungsi menu_tampilan berfungsi sebagai tampilan yang memandu kita untuk bisa melanjutkan proses berikutnya apabila kita mengisikan data yang sesuai dengan keterangan yang diberikan dalam menu tersebut. Fungsi ini akan dijalankan pertama kali oleh fungsi main yang terdapat pada pernyataan do-while.

Fungsi informasi berfungsi sebagai kelanjutan proses berikutnya yaitu menuju salah satu case yang sesuai pada pernyataan switch(). Pada fungsi ini pilihan angka yang tersedia agar dapat menuju salah satu case yang terdapat pada fungsi switch() adalah 1, 2 dan 3. Bila kita menginputkan dengan menekan tombol angka 1, 2 atau 3 maka data tersebut disimpan kedalam variabel hasil yang mana data tersebut dikembalikan ke fungsi pemanggil yaitu fungsi main menggunakan pernyataan return.

Jadi fungsi informasi mengembalikan nilai yang disimpannya untuk diisikan ke dalam pernyataan pemanggil fungsi pada variabel hasil dan nilai yang ada pada variabel ini selanjutnya akan menuju ke case yang cocok. Kalau cocok maka akan memanggil salah satu fungsi yang berada pada case tersebut. Bila tidak maka pernyataan yang ada didalam do-while akan diulang kembali. Pernyataan cin.ignore (30. ‘\n’) berfungsi sebagai penunggu tombol yang akan ditekan oleh pemakai. Sedangkan pernyataan break berfungsi sebagai pencegah agar C++ tidak mengeksekusi kode program berikutnya.

Fungsi tampilan_properti berfungsi menampilkan data-data yang sudah diisikan pada kode program yang berada di fungsi main. Perhatikan bahwa parameter yang ada di fungsi ini kebetulan namanya dibuat sama dengan parameter yang ada di pernyataan pemanggil fungsi. Pemanggilan fungsi disini sebenarnya hanya melewatkan nilai bukan dengan referensi atau pointer. Sedangkan parameter yang terlihat pada fungsi tampilan_properti atau pencarian_properti bertanda asterik (*) adalah data yang dilewatkan berupa string. Anda tak dapat melewatkan data string pada variabel array biasa, jadi variabel berjenis array pointer-lah yang harus kita gunakan.

Fungsi pencarian_properti berfungsi sebagai fungsi yang menangani proses pencarian sekelompok data pada elemen array yang berbeda tetapi bernomor indeks sama. Melalui peryataan strcmp() inilah maka variabel buf yang diinputkan berupa kode akan dibandingkan dengan kode yang tersimpan pada setiap elemen array.Bila hasil dari pernyataan strcmp() ini sesuai yaitu string pada variabel buf sama dengan string kode[i] maka pernyataan ini akan dijalankan dan akan menampilkan data yang ada di elemen array yang sama pada variabel yang berbeda. Bila data string yang dibandingkan tadi berbeda atau tidak ada yang cocok maka akan menjalankan pernyataan berikutnya yaitu if ( !ketemu ) maksudnya jika tidak ketemu bernilai benar maka peryataan inilah yang akan dieksekusi.

Related Posts:

C++ Bagian 7

Array

Suatu array adalah suatu identifier yang mewakili sekelompok data yang mempunyai nama sama. Setiap data harus mempunyai tipe data yang sama (misalkan semua integer atau semua float). Setiap elemen array dibedakan dari yang lain dengan menggunakan nama array yang diikuti dengan subscript. Subscript array dalam C/C++ selalu dimulai dari nol, bukan satu.

Setiap subscript diletakan diantara tanda kurung siku ([]). Subscript sering disebut juga index. Harga dari setiap subscript dapat berupa suatu konstanta integer, variabel integer atau suatu expression. Banyaknya subscript menentukan dimensi dari array contoh array a[15] adalah array satu dimensi, b[3][5] adalah array dua dimensi dan c[4][2][5] adalah array tiga dimensi.

Bentuk umum dari array :

data_type nama_array [expression-1]... ... [expression-n];

untuk array kita hanya boleh menggunakan storage class automatic, external dan static sedangkan storage class register tidak bisa digunakan untuk array, karena array memerlukan jumlah memori yang besar sementara jumlah register pada CPU terbatas. Bila storage class tidak dituliskan, maka array dianggap mempunyai storage class automatic untuk array yang diletakan di dalam fungsi dan mempunyai storage class external untuk array yang diletakan di luar fungsi.

Berikut ini diberikan contoh mendefinisikan sebuah array charakter :

char nama[5];

Kita juga dapat menginisialisasi sebuah array langsung pada saat kita mendefinisikannya :

char nama[5] = “Budi”;

Sintaks C++ untuk menginisialisasi string pada array karakter pada definisi char nama[5] tak dapat diterapkan pada array numeris. Sedangkan pada akhir karakter akan terdapat null untuk mengakhiri string tersebut hanyalah berlaku pada data berjenis string. Berikut ini adalah cara menginisialisasi nama[5] satu persatu tiap elemen :

char nama[5] = { ‘B’,‘u’,’d’,’i’,’\0’ };

Pendefinisian ini identik dengan yang sebelumnya. C++ secara otomatis akan menambahkan nol untuk pengakhir dibelakang sebuah string pada saat kita memasukan sebuah nilai awal string. Bila kita mendefinisikan dan menginisialisasi sebuah array pada saat bersamaan, kita tak perlu menyertakan subscript awalnya. Definisi ini identik dengan sebelumnya :

char nama[] = { ‘B’, ‘u’, ‘d’, ‘i’, ‘\0’ };

C++ akan menghitung jumlah elemennya untuk kita. Bila kita memesan array lima elemen di C++, maka jangan kita memasukan enam atau lebih dari 5 pada array. Bila hal ini kita lakukan maka akan menimpa memori yang mungkin berisi variabel lain. Berikut ini contoh definisi array numerik :
int nilai[5] = { 15, 25, 35, 45, 55 };

Statemen ini memberi harga :
nilai[0]=15, nilai[1]=25, nilai[2]=35, nilai[3]=45, nilai[4]=55

Berikut ini akan diberikan contoh pemberian harga awal untuk array dengan dimensi lebih dari satu :

int matrik[2][3] = { 1, 7, 5, -2, 3, -4 };

Array matrik[2][3] adalah array dua dimensi. Hasil dari pemberian harga awal ini adalah:

matrik[0][0]=1
matrik[0][1]=7
matrik[0][2]=5
matrik[1][0]=-2
matrik[1][1]=3
matrik[1][2]=-4

Bila digunakan tanda kurung kurawal ({ }) tambahan untuk mengelompokan elemen-elemen dari harga awal dari array, maka pemberian harga awal array matrik[2][3] diatas dapat dituliskan sebagai berikut :

int matrik[2][3] = {{1, 7, 5}, {-2, 3, -4}};

hasil dari pemberian harga awal array matrik[2][3] ini sama seperti contoh sebelumnya.

Contoh 7.1 :
Program berikut ini akan menampilkan data yang tersimpan pada sebuah variabel bukan array :

#include
#include

void main()
{
int n;
float data;
clrscr();

cout << "Banyaknya data : ";
cin >> n;

cout << endl << "Pada bagian ini adalah data yang kita ketikan"
<< endl;
for ( int i=0; i {
cout << "Data ke-" << i << " : ";
cin >> data;
}

cout << endl;
cout << "Berikut ini adalah data yang tersimpan di variabel
bukan array" << endl;
for ( i=0; i {
cout << "Nilai ke-" << i << " : " << data << endl;
}
getch();
}

Keluaran programnya :

Banyaknya data : 3

Pada bagian ini adalah data yang kita ketikan
Data ke-0 : 1000
Data ke-1 : 2000
Data ke-2 : 3000

Berikut ini adalah data yang tersimpan di variabel bukan array
Nilai ke-0 : 3000
Nilai ke-1 : 3000
Nilai ke-2 : 3000

Bandingkan program Contoh 7.1 dengan Contoh 7.2 berikut ini :

Contoh 7.2 :
Program berikut ini akan menampilkan data yang tersimpan pada sebuah variabel array :

#include
#include

void main()
{
int n;
float data[100];
clrscr();

cout << "Banyaknya data : ";
cin >> n;

cout << endl << "Pada bagian ini adalah data yang kita ketikan"
<< endl;
for ( int i=0; i {
cout << "Data ke-" << i << " : ";
cin >> data[i];
}

cout << endl;
cout << "Berikut ini adalah data yang tersimpan di variabel
array" << endl;
for ( i=0; i {
cout << "Nilai ke-" << i << " : " << data[i] << endl;
}
getch();
}

Keluaran programnya :

Banyaknya data : 3

Pada bagian ini adalah data yang kita ketikan
Data ke-0 : 1000
Data ke-1 : 2000
Data ke-2 : 3000

Berikut ini adalah data yang tersimpan di variabel array
Nilai ke-0 : 1000
Nilai ke-1 : 2000
Nilai ke-2 : 3000

Dari program Contoh 7.1 dan Contoh 7.2 terlihat bahwa data yang tersimpan di variabel bukan array ketika diisikan dengan nilai maka nilai yang tersimpan adalah nilai yang terakhir. Sedangkan variabel berjenis array, datanya tersimpan dalam setiap elemen sehingga ketika diisikan dengan nilai maka nilai tersebut tersimpan sesuai dengan nilai yang diisikannya.

Array dan Fungsi
Suatu array dapat digunakan sebagai argumen terhadap suatu fungsi. Hal ini memungkinkan seluruh array dikirim ke fungsi. Untuk mengirim suatu array ke suatu fungsi, nama (parameter aktual) dari array tersebut harus dituliskan tanpa tanda kurung siku ( [] ) atau subscript sebagai argumen untuk memanggil fungsi itu.
Parameter formal yang berbentuk array di dalam definisi fungsi cukup dituliskan nama array diikuti tanda kurung siku kosong ( [] ). Berikut ini merupakan contoh fungsi yang menggunakan nama array.

Contoh 7.3 :

#include
#include

const int maks = 5;
int maksimum (int x[], int y);

void main()
{
int n, data[maks], hasil;
clrscr();

cout << "Banyaknya data yang kita inginkan : ";
cin >> n;
for (int i=0; i {
cout << "Masukan bilangan bulat ke[" << i+1 << "] : ";
cin >> data[i];
}

hasil = maksimum (data, n);

cout << endl << "Nilai terbesarnya adalah : " << hasil << endl;
getch();
}

int maksimum (int x[], int y)
{
int besar=-32000;
for (int j=0; j {
if ( x[j] > besar )
{ besar = x[j]; }
}
return besar;
}

Keluaran programnya :

Banyaknya data yang kita inginkan : 5
Masukan bilangan bulat ke[1] : 6
Masukan bilangan bulat ke[2] : -10
Masukan bilangan bulat ke[3] : 2
Masukan bilangan bulat ke[4] : -1
Masukan bilangan bulat ke[5] : 4

Nilai terbesarnya adalah : 6


Perhatikan cara penulisan argumen yang berbentuk array untuk memanggil fungsi maksimum() di dalam main() :

hasil = maksimum (data, n);

dan penulisan definisi fungsi yang menggunakan argumen berbentuk array :

int maksimum (int x[], int y)

data adalah array data [maks] yang merupakan parameter aktual untuk memanggil fungsi maksimum(). Meskipun berbentuk array, data[maks] hanya dituliskan nama saja tanpa subscript atau tanda kurung siku ( [] ). Sedangkan x[] adalah array yang digunakan sebagai parameter formal dari definisi fungsi maksimum(). Meskipun berbentuk array, x[] hanya dituliskan namanya saja diikuti tanda kurung siku kosong ([]), bila digunakan sebagai argumen untuk mendefinisikan fungsi.

Contoh 7.4 :

#include
#include

void input_data ( int &n, float &total, float data[]);
void hitung_data (int n, float total, float &rerata);
void tampilkan (int n, float data[], float rerata);

void main()
{
int banyak;
float suhu[100], jumlah, rata_rata;
clrscr();

input_data (banyak, jumlah, suhu);
hitung_data (banyak, jumlah, rata_rata);
tampilkan (banyak, suhu, rata_rata);

getch();
}

void input_data ( int &n, float &total, float data[])
{
int i=0;
cout << "Berapa data yang kita inginkan : ";
cin >> n;
while ( i {
cout << "Data ke[" << i+1 << "] : ";
cin >> data[i];
total += data[i];
i++;
}
}

void hitung_data (int n, float total, float &rerata)
{
rerata=total/n;
}

void tampilkan (int n, float data[], float rerata)
{
clrscr();
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
for (int i=0; i {
cout << "Data temperatur hari ke[" << i+1 << "] : "
<< data[i] << endl;
}
cout << "Rata-rata temperatur selama " << n
<< " hari adalah : " << rerata << endl << endl;
}

Keluaran programnya :

Berapa data yang kita inginkan : 3
Data ke[1] : 26
Data ke[2] : 28
Data ke[3] : 31

Tekan tombol enter setelah memasukan data yang terakhir sehingga muncul :

Data temperatur hari ke[1] : 26.00
Data temperatur hari ke[2] : 28.00
Data temperatur hari ke[3] : 31.00
Rata-rata temperatur selama 3 hari adalah : 28.33

Contoh program diatas adalah menggunakan array yang dilewatkan ke fungsi. Supaya memudahkan perpindahan data antar fungsi maka digunakan pemanggilan fungsi dengan referensi, hal ini dimaksudkan agar data yang mengalami perubahan di sebuah fungsi berdampak pada fungsi yang lainnya.

Kita tak akan bisa memprogram seperti ini tanpa menggunakan array. Array memberi kita kemungkinan untuk mengambil semua data kita dengan menggunakan sebuah pengulangan yang bisa kita lihat pada fungsi diatas yaitu fungsi tampilkan() yang memuat sebuah pernyataan pengulangan (loop) for dan memproses semua data tadi sekaligus.

Fungsi main() adalah sebagai pengendali, yaitu memanggil fungsi input_data(), hitung_data() dan tampilkan().


Related Posts:

C++ Bagian 6

Fungsi


Bagaimana program dalam bahasa C/C++ tersusun ? bahasa C/C++ menggunakan function (fungsi) sebagai dasar program. Seperti yang telah anda kenal pada library function dari bahasa C++ antara lain : cout, cin dan lain-lain. Apakah fungsi itu ? suatu fungsi adalah sebuah unit program yang berdiri sendiri yang dibuat untuk melaksanakan suatu tugas tertentu. Suatu fungsi dalam bahasa C/C++ berperan sama dengan function, subroutine dan procedure dalam bahasa komputer lain.

Tujuan dari fungsi dalam bahasa C/C++ adalah pertama untuk mencegah pengulangan pembuatan suatu program. Kedua menggunakan fungsi akan menyebabkan program lebih modular, sehingga mudah dibaca dan dianalisa. Salah satu fungsi ini disebut main. Program selalu dilaksanakan mulai dari main. Suatu fungsi terdiri dari dua bagian, yaitu :
1. Baris pertama adalah header dari fungsi yang mempunyai tiga komponen yaitu : return type, nama fungsi dan argumen ( atau disebut juga parameter ).
2. Badan dari fungsi terdiri dari compound statement dan dituliskan langsung dibawah header dari fungsi.

Bentuk umum dari fungsi :

return_type nama_fungsi(type_1 argumen_1, ... , type_n argumen_n)
{
// badan dari fungsi ( satu atau lebih pernyataan C++ )
}

Return type
Adalah untuk menentukan tipe data yang akan dikembalikan ke program yang memanggil. Tipe data dapat berupa : char, int, long, float dan double. Anda juga dapat mendefinisikan fungsi yang tidak mempunyai return type dengan menggunakan void.

Nama fungsi
Anda dapat menggunakan nama apa saja untuk nama suatu fungsi. Nama fungsi tidak boleh ada yang sama (harus unik). Sebaiknya nama fungsi mencerminkan tujuan atau tugas dari fungsi tersebut.

Argumen atau parameter
Kebanyakan fungsi menggunakan argumen. Argumen ini digunakan untuk mengirimkan informasi ke fungsi. Kadang-kadang tidak mempunyai argumen, dalam hal ini anda menuliskan void sebagai parameter atau tidak menuliskan apa-apa diantara tanda kurung biasa.

Badan fungsi
Badan fungsi dituliskan diantara tanda kurung kurawal dibawah header dari fungsi. Bila fungsi dipanggil, pelaksanaan dimulai dari awal badan fungsi dan berakhir pada statemen return (yang mengembalikan ke program pemanggil) atau pada tanda kurung kurawal tutup. Didalam badan fungsi anda dapat mendefinisikan variabel baru yang bersifat lokal. Arti lokal disini adalah bahwa variabel yang didefinisikan di dalam badan fungsi tidak mempunyai hubungan apa-apa dengan variabel diluar fungsi, meskipun mempunyai nama yang sama.


Statemen return
Fungsi akan mengembalikan informasi ke program yang memanggil dengan statemen return. Hanya satu nilai yang dapat dikembalikan dengan statemen return. Bentuk umum dari statemen return adalah :

return expression;

Nilai dari expression akan dikembalikan ke program yang memanggil fungsi. Statemen return hanya boleh mempunyai satu expression. Jadi, suatu fungsi hanya bisa mengembalikan satu harga ke program yang memanggil. Tetapi suatu fungsi boleh mempunyai lebih dari satu statemen return yang masing-masing mempunyai expression yang berbeda.

Memanggil fungsi
Fungsi dipanggil dengan cara menuliskan nama dari fungsi, diikuti dengan argumen yang diletakan diantara tanda kurung biasa. Antara argumen yang satu dengan yang lain dipisahkkan dengan tanda koma. Argumen dapat berbentuk constant, variabel atau expression. Tipe data dari argumen harus sama dengan yang didefinisikan pada fungsi.

Contoh 6.1 :

#include

void main()
{
clrscr();
void bintang(); // prototipe fungsi bintang
bintang(); // memanggil fungsi bintang

cout << "Saya sedang belajar fungsi" << endl;
cout << "pada bahasa C++" << endl;

bintang(); // memanggil fungsi bintang
}

void bintang() // header atau definisi fungsi bintang
{
for ( int i=1; i<=30; i++ )
{
cout << "*";
}
cout << endl;
}

Keluaran programnya :

******************************
Saya sedang belajar fungsi
pada bahasa C++
******************************

Urutan jalannya program ini adalah :
1. Fungsi bintang() dipanggil, maka kontrol program berpindah ke fungsi bintang() yang akan mencetak asterik (*) sebanyak 30 buah, setelah selesai kontrol program kembali berpindah ke main() ke tempat tepat dibawah fungsi bintang() dipanggil.
2. Kedua cout didalam main() dilaksanakan yakni mencetak :
Saya sedang belajar fungsi
pada bahasa C++
3. Kemudian fungsi bintang() dipanggil lagi, kontrol program berpindah lagi ke fungsi bintang(), untuk mencetak asterik (*). Selesai mencetak, kontrol program berpindah ke main(), dimana pernyataan tidak ada lagi dan pelaksanaan program selesai.

Prototipe fungsi
Setiap fungsi harus dideklarasikan sebelum digunakan. Tujuan dari deklarasi fungsi adalah memberitahukan compiler tentang tipe data fungsi, nama fungsi dan argumen atau parameter dari fungsi. Dari contoh program diatas anda dapat melihat bahwa prototipe fungsi identik dengan definisi dari fungsi, tetapi dibelakang dari prototipe fungsi ditambah titik koma.

Contoh 6.2 :
Contoh fungsi untuk mengubah huruf kecil menjadi huruf besar.

#include

void main()
{
char kecil, besar; // variabel lokal pada main
char kecil_besar(char ch); // prototipe fungsi kecil_besar

cout << "Masukan sebuah huruf kecil ? ";
cin >> kecil;

besar = kecil_besar(kecil); // memanggil fungsi kecil_besar

cout << "Huruf besar dari " << kecil << endl;
cout << "adalah : " << besar << endl;
}

char kecil_besar(char ch)
{
if (ch>=97 && ch<=122)
{
ch = ch - 32;
}
return(ch);
}

Keluaran programnya :

Masukan sebuah huruf kecil ? h
Huruf besar dari h
adalah : H

Perhatikan bahwa return type dari fungsi kecil_besar adalah karakter (char) dan tipe data dari argumen fungsi kecil_besar adalah juga karakter. Pada program ini untuk mengubah huruf kecil menjadi huruf besar digunakan harga dari kode ASCII huruf tersebut. Dari tabel karakter ASCII diketahui bahwa huruh kecil a mempunyai kode ASCII 97 dan huruf kecil z mempunyai kode ASCII 122, sedangkan huruf besar A mempunyai kode ASCII 65 dan huruf besar Z mempunyai kode ASCII 90. Jadi antara huruf besar dengan huruf kecil kode ASCII-nya berselisih 32, sehingga untuk mengubah huruf kecil menjadi huruf besar cukup dikurangi 32.

Parameter Formal dan Aktual
Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Pada contoh program diatas fungsi kecil_besar (char ch) variabel ch didalam tanda kurung fungsi kecil_besar dinamakan sebagai parameter formal. Adapun parameter aktual adalah parameter (tidak mesti variabel) yang dipakai dalam pemanggilan fungsi. Pada contoh program diatas kecil_besar (kecil) variabel kecil didalam tanda kurung pemanggil fungsi kecil_besar dinamakan sebagai parameter aktual.

Cara Melewatkan Parameter
Ada tiga cara melewatkan parameter kedalam fungsi yaitu : pemanggilan dengan nilai (call by value), pemanggilan dengan alamat (call by address) dan pemanggilan dengan referensi (call by reference).

Pemanggilan dengan Nilai
Pada pemanggilan dengan nilai, nilai dari parameter aktual akan disalin ke parameter formal. Dengan cara ini nilai parameter aktual tak bisa berubah sekalipun nilai parameter formal berubah.

Contoh 6.3 :
Program untuk menukar dua data dan melihat pengaruh pemanggilan nilai pada fungsi.

#include

void main()
{
int a, b;
void tukar(int x, int y);

cout << "Nilai sebelum pemanggilan fungsi" << endl;
cout << "Nilai a : ";
cin >> a;
cout << "Nilai b : ";
cin >> b;

cout << endl;
tukar(a, b);

cout << "Nilai sesudah pemanggilan fungsi" << endl;
cout << "Nilai a : " << a << endl;
cout << "Nilai b : " << b << endl;
}

void tukar (int x, int y)
{
int z;
z=x;
x=y;
y=z;
cout << "Nilai didalam fungsi" << endl;
cout << "Nilai a : " << x << endl;
cout << "Nilai b : " << y << endl << endl;
}

Keluaran programnya :

Nilai sebelum pemanggilan fungsi
Nilai a : 100
Nilai b : 500

Nilai didalam fungsi
Nilai a : 500
Nilai b : 100

Nilai sesudah pemanggilan fungsi
Nilai a : 100
Nilai b : 500

Tampak bahwa sekeluarnya dari pemanggilan fungsi tukar(), variabel a dan b (yang dilewatkan ke fungsi tukar()) tidak berubah, walaupun pada fungsi tukar telah terjadi penukaran antara parameter x dan y. Mengapa hal ini terjadi ? sebab x hanyalah salinan dari a dan y salinan dari b.

Pemanggilan dengan Alamat
Merupakan cara melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan didalam fungsi. Sebagai contoh dapat dilihat pada program berikut ini yang merupakan modifikasi dari program sebelumnya. Perubahan yang pertama terletak pada definisi fungsi, yang kini berupa :

void tukar (int *px, int *py)
{
int z;
z=*px;
*px=*py;
*py=z;
------
}

Adapun perubahan dalam parameter aktual :

tukar(&a, &b);

Kemudian pada pendeklarasian fungsi yaitu parameternya menjadi :

void tukar (int *px, int *py);

px dan py adalah suatu variabel pointer. Variabel pointer adalah variabel yang menunjuk alamat variabel lain. Adapun pada pemanggilan fungsi, &a dan &b masing-masing berarti “alamat a“ dan “alamat b“.

Contoh 6.4 :

#include

void main()
{
int a, b;
void tukar(int *px, int *py);

cout << "Nilai sebelum pemanggilan fungsi" << endl;
cout << "Nilai a : ";
cin >> a;
cout << "Nilai b : ";
cin >> b;

cout << endl;
tukar(&a, &b);

cout << "Nilai sesudah pemanggilan fungsi" << endl;
cout << "Nilai a : " << a << endl;
cout << "Nilai b : " << b << endl;
}

void tukar (int *px, int *py)
{
int z;
z=*px;
*px=*py;
*py=z;

cout << "Nilai didalam fungsi" << endl;
cout << "Nilai a : " << *px << endl;
cout << "Nilai b : " << *py << endl << endl;
}

Keluaran programnya :

Nilai sebelum pemanggilan fungsi
Nilai a : 100
Nilai b : 500

Nilai didalam fungsi
Nilai a : 500
Nilai b : 100

Nilai sesudah pemanggilan fungsi
Nilai a : 500
Nilai b : 100

Setelah px menunjuk a dan py menunjuk b, proses penukaran isi a dan b dilakukan dengan cara sebagai berikut :
1. Variabel z diisi dengan nilai yang ditunjuk oleh px.
2. Yang ditunjuk oleh px diisi dengan yang ditunjuk oleh py ( berarti a diisi dengan b ).
3. Yang ditunjuk oleh py diberi nilai z.
Dengan melalui tiga pernyataan tersebut, nilai a dan b dapat diubah di dalam fungsi.

Pemanggilan dengan Referensi
C++ menyediakan cara ketiga untuk melewatkan data antara fungsi-fungsi yang tidak tersedia pada pendahulunya, bahasa C. Ketika anda melewatkan data dengan referensi, jika fungsi yang dipanggil mengubah data tersebut, C++ menggunakan perubahan yang sama ke data fungsi pemanggil. Hasil akhir pelewatan dengan referensi identik dengan pelewatan menggunakan alamat tetapi dengan satu pengecualian : anda tidak perlu bekerja dengan sintaks yang aneh ketika melewatkan variabel non-array dengan referensi. Jika anda melewatkan variabel dengan referensi, anda hanya perlu mengawali parameter penerima dengan tanda &.

Contoh 6.5 :

#include
#include
#include
void input_nilai(float &v, float &x, float &g);
void hitung_jarak(float v, float x, float g, float &r);
void tampilkan(float r);

void main()
{
float kecepatan, sudut;
float gravitasi, jarak;
clrscr();

input_nilai(kecepatan, sudut, gravitasi);
hitung_jarak(kecepatan, sudut, gravitasi, jarak);
tampilkan(jarak);
getch();
}

void input_nilai(float &v, float &x, float &g)
{
cout << "Kecepatan peluru (m/det) : ";
cin >> v;
cout << "Sudut tembakan (derajat) : ";
cin >> x;
cout << "Gravitasi bumi (m/det^2) : ";
cin >> g;
}

void hitung_jarak(float v, float x, float g, float &r)
{
r = pow(v, 2) * sin (2*x*22/7/180) / g;
}

void tampilkan(float r)
{
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << "Jarak tembak peluru : " << r << " meter";
}

Keluaran programnya :

Kecepatan peluru (m/det) : 100
Sudut tembakan (derajat) : 30
Gravitasi bumi (m/det^2) : 10
Jarak tembak peluru : 866.24 meter

Fungsi main() dari program diatas tak lebih daripada fungsi pengontrol pemanggilan fungsi. Meskipun demikian main() mendeklarasikan 4 buah variabel bertipe float untuk digunakan pada perhitungan yang berturutan, memanggil fungsi input_nilai(), fungsi hitung_jarak() dan fungsi tampilkan(). Tugas dari fungsi input_nilai() adalah mengumpulkan tiga buah nilai main() yang diinputkan dari keyboard. Fungsi main() melewatkan tiga buah argumen melalui referensi. Ketika input_nilai() mengubah parameter melalui masukan keyboard, maka nilai-nilai itu juga mengubah nilai variabel pada main(). Tugas dari fungsi hitung_jarak() adalah menghitung jarak tembak peluru. Pada fungsi ini satu-satunya nilai yang dibutuhkan untuk diperbaharui adalah hasil perhitungan yaitu : r. Sedangkan argumen lainnya dilewatkan dengan nilai. Tugas dari fungsi tampilkan() adalah untuk mencetak keluaran jarak tembak peluru yang mana argumennya dilewatkan dengan ni

Related Posts:

C++ Bagian 5

Pengulangan


Pernyataan while

while adalah sebuah perintah sebagaimana halnya if dan else. while bukanlah fungsi pustaka, karenanya while tidak menggunakan file header. Seperti if, while adalah pernyataan berganda dan tanda kurung muncul di dekat ekspresi relasional. Ekspresi relasional dapat berisi satu atau beberapa operator relasional. Jika anda menggunakan lebih dari satu operator relasional di dalam ekspresi relasional, gunakanlah operator nalar ( && dan || ) untuk mengkombinasikan pengujian relasional tersebut. Berikut adalah bentuk umum dari pernyataan while :

while ( ekspresi penguji )
{
// satu atau lebih pernyataan C++
}

pengujian relasional muncul di bagian atas blok while. Lokasi dari penguji tersebut penting. Jika ekspresi while bernilai salah saat yang pertama kali, kalang tersebut tidak akan dieksekusi satu kali pun dan program berlanjut ke pernyataan berikutnya di bawah blok while jika masih ada. Blok while akan akan dieksekusi hanya jika pengujian relasional bernilai benar.

Contoh 5.1 :
Program berikut menampilkan kalimat “Belajar pemrograman C++” sebanyak lima kali pada layar.

#include < iostream.h >

void main()
{
int cacah=1;
while ( cacah <= 5 )
{ cout << “Belajar pemrograman C++” << endl;
cacah++; }
}

Keluaran programnya :

Belajar pemrograman C++
Belajar pemrograman C++
Belajar pemrograman C++
Belajar pemrograman C++
Belajar pemrograman C++

Variabel cacah di dalam blok while disebut sebagai variabel pencacah. Setiap kali melalui blok while, program menaikan cacah. Seperti kalau menghitung 1, 2, 3 dan seterusnya, cacah bernilai 1, 2, 3 dan seterusnya, sampai C++ menaikan cacah ke nilai akhir yaitu 5. Pada saat melangkah ke hitungan berikutnya pengujian menjadi salah yaitu pada saat cacah = 6 dan blok while berakhir.

Contoh 5.2 :
Berikut ini contoh program untuk meverifikasi masukan pemakai menggunakan while :

#include

void main()
{
int umur;

cout << "Berapa umur anda : ";
cin >> umur;

while ((umur < 5) || (umur > 80))
{
cout << "Saya tidak yakin umur anda " << umur << " tahun"
<< endl;
cout << "Ulangi kembali dengan benar..." << endl << endl;
cout << "Berapa umur anda : ";
cin >> umur;
}

if (umur < 17)
{
cout << "Anda belum boleh mengendarai mobil" << endl;
cout << "karena umur anda dibawah 17 tahun" << endl;
}
else
{
cout << "Anda boleh mengendarai mobil" << endl;
cout << "Hati-hatilah !!!" << endl;
}
}

Keluaran programnya :

Berapa umur anda : 3
Saya tidak yakin umur anda 3 tahun
Ulangi kembali dengan benar...

Berapa umur anda :

Lainnya :

Berapa umur anda : 10
Anda belum boleh mengendarai mobil
karena umur anda dibawah 17 tahun

lainnya :

Berapa umur anda : 18
Anda boleh mengendarai mobil
Hati-hatilah !!!

Lainnya :

Berapa umur anda : 120
Saya tidak yakin umur anda 120 tahun
Ulangi kembali dengan benar...

Berapa umur anda :


Pernyataan do-while

C++ mempunyai blok while lainnya yaitu do-while, yang pengujian relasionalnya muncul di akhir blok. Berikut adalah format do-while :

do
{
// satu atau lebih pernyataan C++
}
while ( ekspresi relasional );

do-while tidak menguji relasi hingga kalang dieksekusi satu siklus penuh. Setelah blok do-while dieksekusi sekali, pengujian relasional dites untuk melihat perlu tidaknya blok ini dieksekusi lagi atau diakhiri. Hanya setelah pengujian relasional menjadi salah maka program melanjutkan sisa program berikutnya jika masih ada.

Contoh 5.3 :
Berikut ini contoh penggunaan do-while untuk menampilkan “Belajar pemrograman C++” sebanyak 5 kali :

#include

void main()
{
int cacah=1;

do
{
cout << "Belajar pemrograman C++" << endl;
cacah++;
}
while ( cacah <= 5);
}

Keluaran programnya sama dengan contoh 5.1

Contoh 5.4 :

#include

void main()
{
int umur;

do
{
cout << "Berapa umur anda : ";
cin >> umur;

if ((umur < 5) || (umur > 80))
{
cout << "Saya tidak yakin umur anda " << umur << " tahun"
<< endl;
cout << "Ulangi kembali dengan benar..." << endl << endl;
}
}
while ((umur < 5) || (umur > 80));

if (umur < 17)
{
cout << "Anda belum boleh mengendarai mobil" << endl;
cout << "karena umur anda dibawah 17 tahun" << endl;
}
else
{
cout << "Anda boleh mengendarai mobil" << endl;
cout << "Hati-hatilah !!!" << endl;
}
}

Pada contoh program 5.4 penggunaan do-while memerlukan sebuah if tambahan yang tidak diperlukan seperti pada contoh program yang menggunakan while.


Pernyataan for

Pernyataan for tidaklah sulit untuk dipahami. Berikut ini adalah format dari loop for.

for ( ekspresi awal; kondisi; ekspresi pencacah)
{
// satu atau lebih pernyataan C++
}

Pada saat C++ menjumpai pernyataan for, ia akan mengikuti langkah-langkah berikut untuk melaksanakan loop :
1. Melaksanakan ekspresi awal, yang biasanya berupa pernyataan penugasan.
2. Menguji ekspresi kondisi dengan hasil salah atau benar.
3. Melaksanakan blok loop jika kondisi bernilai benar.
4. Melaksanakan ekspresi pencacah, yang biasanya berupa operasi penaikan atau penurunan.
5. Kembali ke langkah 2.

Sewaktu kondisi diuji dan didapatkan bernilai salah, C++ menghentikan loop dan program berlanjut ke pernyataan sesudah loop for jika masih ada.

Contoh 5.5 :
Program berikut akan menampilkan kalimat “Belajar pemrograman C++” sebanyak 5 kali menggunakan pernyataan for.

#include

void main()
{
for (int i=1; i<=5; i++)
{ cout << “Belajar pemrograman C++” << endl; }
}

Keluaran programnya sama dengan contoh 5.1

Loop for bukanlah loop yang bagus untuk melakukan validasi masukan, tetapi loop while baik untuk tujuan ini. Loop for cocok kalau anda tahu terlebih dahulu jumlah yang ingin anda eksekusi terhadap suatu loop. Pada loop for diatas, blok loop dieksekusi secara persis 5 kali dengan ekspresi di dalam pernyataan for mengontrol 5 pengeksekusian.

Jika kondisi bernilai salah di awal, sebagaimana pernyataan for berikut, blok loop tidak pernah dieksekusi :

for ( int i=15; i<=10; i++ )
{ cout << “cout ini tidak pernah dijalankan”; }

Saat loop ini dimulai, C++ menyimpan 15 ke i. Kondisi i<=10, bernilai salah sehingga C++ menghentikan loop dan melanjutkan program tepat sesudah loop tanpa pernah mengeksekusi blok loop.

Contoh 5.6 :

#include

void main()
{
int n;
float data, total=0, rata_rata;

cout << "Berapa banyak datanya : ";
cin >> n;

for ( int i=1; i<=n; i++ )
{
cout << "Data ke-" << i << " : ";
cin >> data;
total += data;
}

rata_rata=total/n;
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << endl << "Nilai rata-rata : " << rata_rata;
}

Satu hal menarik untuk diperhatikan adalah bahwa kurung loop for tidak harus seluruhnya berisi ketiga ungkapan. Sebagai contoh :

for ( bil=2; bil <= 10; bil += 2)

Dapat diubah menjadi :

bil=2;
for ( ; bil <= 10; )
{
// blok loop dimulai dari sini
bil += 2;
}

Menempatkan ekspresi keluar dari pernyataan for kadangkala dibenarkan, terutama kalau pemakai menginisialisasi nilai awal variabel pengontrol dengan cin, bukannya dengan inisialisasi melalui pernyataan. Walaupun demikian untuk kebanyakan pemakai loop for, tempatkan semua ekspresi di dalam kurung for, sehingga semua informasi pengontrol tersedia di dalam satu pernyataan.

Related Posts:

C++ Bagian 4

Pernyataan switch


Para pemrogram telah merancang suatu diagram khusus yang membantu mendemonstrasikan logika bersarang. Namun tak ada yang lebih membantu lagi dibandingkan dengan memperkenalkan sebuah pernyataan baru dalam bahasa C++, seperti switch yang sintaksnya mendukung pemilihan pilihan berganda pada sebuah program. Bentuk umumnya adalah :

switch ( ekspresi )
{
case ( ekspresi-1 ) :
{ satu atau lebih pernyataan ;
break ; }
... ... ...
case ( ekspresi-n ) :
{ satu atau lebih pernyataan ;
break ; }
default :
{ satu atau lebih pernyataan ;
break ; }
}

Perhatikan ekspresi pada pernyataan switch harus berupa nilai int atau char.

Contoh 4.1 :

#include

void main()
{
int channel;

cout << "Menu saluran TV yang tersedia saat ini" << endl <<
endl;
cout << "1. TVRI 2. RCTI 3. TPI" << endl;
cout << "4. SCTV 5. ANTV 6. Indosiar" << endl <<
endl;
cout << "Pilih saluran TV favorit anda : ";
cin >> channel;
cout << endl; // membuat 1 baris kosong

switch (channel)
{
case (1) :
{
cout << "Siaran dari desa ke desa!";
break;
}
case (2) :
{
cout << "Tayangan Planet Football!";
break;
}
case (3) :
{
cout << "Tayangan Kera Sakti!";
break;
}
case (4) :
{
cout << "Tayangan Telenovela!";
break;
}
case (5):
{
cout << "Tayangan MTV Music!";
break;
}
case (6):
{
cout << "Tayangan Kuis Family!";
break;
}
default : // dijalankan bila bukan memilih 1 s/d 6
{
cout << "Channel " << channel
<< " belum dibuat untuk umum.";
break;
}
}
}

Keluaran programnya :

Menu saluran TV yang tersedia saat ini

1. TVRI 2. RCTI 3. TPI
4. SCTV 5. ANTV 6. Indosiar

Pilih saluran TV favorit anda : 3

Tayangan Kera Sakti!

Nilai dari pemakai adalah salah satu dari 1, 2, 3, 4, 5 atau 6 dan hanya satu dari blok pernyataan switch yang dieksekusi saat salah satu dari nilai tadi cocok dengan sebuah ekspresi case. Bila pemakai tidak memasukan sebuah angka yang benar (yaitu yang cocok dengan pernyataan case), maka bagian default-lah yang akan mengambil alih tugas dan memberikan pesan yang sesuai.

Bandingkan program tersebut bila menggunakan pernyataan if-else :

Contoh 4.2 :

#include

void main()
{
int channel;

cout << "Menu saluran TV yang tersedia saat ini" << endl <<
endl;
cout << "1. TVRI 2. RCTI 3. TPI" << endl;
cout << "4. SCTV 5. ANTV 6. Indosiar" << endl <<
endl;
cout << "Pilih saluran TV favorit anda : ";
cin >> channel;
cout << endl; // membuat 1 baris kosong

if ( channel == 1 )
{ cout << "Siaran dari desa ke desa!"; }
else
if ( channel == 2 )
{ cout << "Tayangan Planet Football!"; }
else
if ( channel == 3 )
{ cout << "Tayangan Kera Sakti!"; }
else
if ( channel == 4 )
{ cout << "Tayangan Telenovela!"; }
else
if ( channel == 5 )
{ cout << "Tayangan MTV Music!"; }
else
if ( channel == 6 )
{ cout << "Tayangan Kuis Family!"; }
else
{ cout << "Channel " << channel
<< " belum dibuat untuk umum."; }
}

Keluaran programnya sama dengan contoh 4.1.


Break

Sekalipun pernyataan switch tak selalu harus berisi pernyataan break, namun hampir dipastikan break tetap diperlukan. break memastikan bahwa setiap blok case tak akan lewat dan menjalankan lagi blok case yang terletak pada baris berikutnya. Berikut ini adalah contoh switch yang tak berisi pernyataan break :

Contoh 4.3 :

#include

void main()
{
int angka;

cout << "Angka yang anda pilih (1 s/d 4) : ";
cin >> angka;

switch (angka)
{
case (1) :
{ cout << "Pilihan anda angka 1" << endl; }
case (2) :
{ cout << "Pilihan anda angka 2" << endl; }
case (3) :
{ cout << "Pilihan anda angka 3" << endl; }
case (4) :
{ cout << "Pilihan anda angka 4" << endl; }
default :
{ cout << "Saya tidak tahu angka yang anda mau"; }
}
}
Keluaran programnya :

Angka yang anda pilih (1 s/d 4) : 1
Pilihan anda angka 1
Pilihan anda angka 2
Pilihan anda angka 3
Pilihan anda angka 4
Saya tidak tahu angka yang anda mau

Lainnya :

Angka yang anda pilih (1 s/d 4) : 3
Pilihan anda angka 3
Pilihan anda angka 4
Saya tidak tahu angka yang anda mau

Related Posts:

C++ Bagian 3

Pernyataan if-else
Pernyataan if

Pernyataan if menguji operator relasional dan memutuskan bagian program yang dijalankan dan yang diabaikan. Berikut ini adalah format pernyataan if :

if (tesRelasi)
{ satu pernyataan atau beberapa pernyataan C++ }

Disini pernyataan if memakai tes relasional yang anda berikan didalam tanda kurung, dan pernyataan if akan dijalankan hanya kalau tes relasinya bernilai benar. Contoh baris if :

if ( penjualan < 5000 )

if ( inisial == ‘M’ )

if ( jumlah >= nilai )

Jangan pernah memberikan tanda titik koma sesudah kurung tutup! C++ akan menganggap bahwa pernyataan if berakhir dan akan melanjutkan eksekusi ke blok pernyataan berikutnya tak tergantung tes relasional apakah bernilai benar atau salah.

Contoh 3.1 :
Pada program ini pernyataan berikut mungkin akan dicetak atau barangkali tidak.

#include

void main()
{
int jarak;

cout << “Berapa meter jarak rumah anda dari kampus : “;
cin >> jarak;

if ( jarak >= 250 )
{
cout << “Rumah anda cukup jauh juga dari kampus!” << endl;
}
cout << “Semoga anda tidak telat sampai kampus.”;
}

Keluaran program :

Rumah anda cukup jauh juga dari kampus!
Semoga anda tidak telat sampai kampus.

Atau

Semoga anda tidak telat sampai kampus.

Apakah anda mengetahui bagaimana data mengendalikan program ? ada sebuah baris pada program, cout kedua yang mungkin tidak pernah dijalankan. Eksekusi cout ini didasarkan oleh nilai variabel jarak dan membandingkan nilai tersebut dengan bilangan 250. Jika dan hanya jika jarak berisi nilai yang lebih besar daripada 250, cout kedua akan dieksekusi.

Contoh 3.2 :
Menentukan biaya penginapan pada hotel

#include

void main()
{
char jawab;
int jumlah_hari;
float harga_penuh = 25000;
float harga_khusus = 17500;
float total_biaya = 0.0;

cout << "Berapa lama anda menginap? ";
cin >> jumlah_hari;

cout << "Apakah anda pernah menginap disini sebelumnya (Y/T)?
";
cin >> jawab;

if ( jawab == 'Y')
{ total_biaya = harga_khusus * jumlah_hari; }

if ( jawab == 'T')
{ total_biaya = harga_penuh * jumlah_hari; }

cout.setf(ios::showpoint);
cout.setf(ios::fixed);
cout.precision(2);
cout << "Total biaya menginap : Rp " << total_biaya;
}

Keluaran program :

Berapa lama anda menginap? 5
Apakah anda pernah menginap disini sebelumnya (Y/T)? Y
Total biaya menginap : Rp 87500.00

Lainnya :

Berapa lama anda menginap? 5
Apakah anda pernah menginap disini sebelumnya (Y/T)? T
Total biaya menginap : Rp 125000.00

Program ini akan menganggap bahwa pemakai akan memasukkan huruf kapital Y atau T. nilai awal nol diberikan kepada total_biaya untuk menghindari adanya sampah terhadap variabel itu, dalam hal pemakai tidak memasukkan huruh kapital Y atau T. kalau anda menjalankan program ini dan memperoleh total biaya menginap berupa : Rp 0.00, anda akan tahu bahwa anda harus memasukkan jawaban dalam huruf kapital terhadap pernyataan tersebut.

Pernyataan else

If yang anda ketahui saat ini menentukan suatu blok akan dijalankan atau tidak, tetapi adalah mungkin untuk memperluas tindakan if sehingga ia akan mejalankan suatu blok kode atau yang lain. Untuk membuat if memutuskan antara satu dari dua kemungkinan blok kode, tambahkan pernyataan else setelah kurung kurawal tutup if. Bentuk umumnya adalah :

if ( tesrelasi )
{ satu pernyataan atau lebih C++ }
else
{ satu pernyataan atau lebih C++ }

Dengan pernyataan if-else perhatikan bahwa relasi benar atau salah menentukan blok yang akan dijalankan. Blok if akan dijalankan bila relasi bernilai benar jika tidak atau relasi bernilai salah maka blok else akan dijalankan. Dengan demikian pernyataan if atau else akan dijalankan, tetapi tak pernah kedua-duanya.

Contoh 3.3 :

#include

void main()
{
char jawab;
int jumlah_hari;
float harga_penuh = 25000;
float harga_khusus = 17500;
float total_biaya = 0.0;

cout << "Berapa lama anda menginap? ";
cin >> jumlah_hari;

cout << "Apakah anda pernah menginap disini sebelumnya (Y/T)?
";
cin >> jawab;

if ( jawab == 'Y')
{ total_biaya = harga_khusus * jumlah_hari; }

else
{ total_biaya = harga_penuh * jumlah_hari; }

cout.setf(ios::showpoint);
cout.setf(ios::fixed);
cout.precision(2);
cout << "Total biaya menginap : Rp " << total_biaya;
}

Keluaran programnya sama seperti contoh 3.2


Contoh 3.4 :

#include

void main()
{
int dept;
cout << "Masukan kode departemen : ";
cin >> dept;

if ( dept>=1 && dept<=5 )
{ cout << "Anda termasuk karyawan departemen ini" << endl; }
else
{ cout << "Anda bukan termasuk karyawan departemen ini" <<
endl; }
}

Keluaran program :

Masukan kode departemen : 4
Anda termasuk karyawan departemen ini

Atau lainnya :

Masukan kode departemen : 6
Anda bukan termasuk karyawan departemen ini

Tanda && di dalam pernyataan if memberitahu C++ untuk memeriksa masukan pemakai berada dalam jangkauan 1 sampai dengan 5. Jika dept lebih besar dari atau sama dengan 1 dan kurang dari atau sama dengan 5, jalankan blok if. Jika tidak, jalankan blok else.

Tanpa operator nalar (&&), anda harus memakai if bersarang untuk melaksanakan pemeriksaan yang sama dan if bersarang tidaklah mudah untuk dibaca. Berikut adalah kode yang sama dengan contoh 3.4 tetapi menggunakan if bersarang.

Contoh 3.5 :

#include

void main()
{
int dept;
cout << "Masukan kode departemen : ";
cin >> dept;

if ( dept>=1 )
{
if ( dept<=5 )
{ cout << "Anda termasuk karyawan departemen ini" <<
endl; }
else
{ cout << "Anda bukan termasuk karyawan departemen ini"
<< endl; }
}
else
{ cout << "Anda bukan termasuk karyawan departemen ini" <<
endl; }
}

pada if bersarang, bila if pertama bernilai benar jalankan blok yang ada didalamnya. Apabila if kedua bernilai benar jalankan pernyataan didalamnya jika salah jalankan pernyataan else. Bila if pertama tidak terpenuhi maka jalankan blok else terakhir.

C++ mempunyai kemampuan pengkondisian cepat yang seringkali membawa celaka daripada berguna. Kalau sisi kiri tanda || bernilai benar, maka C++ tidak akan melakukan pengevaluasian terhadap sisi kanannya untuk menghemat waktunya. Dengan kata lain, jika pada if berikut :

if ( amt>70 || amt<100 )

amt bernilai lebih besar dari 70 maka C++ tidak melakukan pengecekan terhadap amt<100. Memang demikianlah kondisinya. Hal ini karena operator || meminta C++ mengevaluasi if berupa benar kalau salah satu sisi || bernilai benar. Kalau bagian kiri bernilai benar, if bernilai benar dan tak peduli dengan nilai sisi kanannya. C++ juga melakukan pengkondisian cepat terhadap operator &&.

Contoh 3.6 :
Menentukan indeks nilai seorang mahasiswa berdasarkan nilai ujiannya. Nama dan nilai diinputkan dari keyboard. Keluaran pada layar berupa nama dan indeks nilainya.

#include

void main()
{
char indeks, nama[15];
float nilai;

cout << "Nama : ";
cin >> nama;
cout << "Nilai : ";
cin >> nilai;

if ( nilai >= 80 )
{
indeks = 'A';
cout << nama << “ ,nilai anda sempurna” << endl;
}
else
if ( nilai >= 70 && nilai < 80 )
{
indeks = 'B';
cout << nama << “ ,nilai anda bagus” << endl;
}
else
if ( nilai >= 60 && nilai < 70 )
{
indeks = 'C';
cout << nama << “ ,nilai anda cukup” << endl;
}
else
if ( nilai >= 30 && nilai < 60 )
{
indeks = 'D';
cout << nama << “ ,nilai anda jelek" << endl;
}
else
{
indeks = 'E';
cout << nama << “ ,nilai anda sangat mengecewakan" <<
endl;
}

cout << “Anda mendapat nilai : " << indeks;
}

Contoh 3.7 :

#include

void main()
{
int pembeli;
float total_penjualan;

cout << "Berapa pembeli hari kemarin ? ";
cin >> pembeli;

cout << "Berapa jumlah penjualannya? ";
cin >> total_penjualan;

if ( pembeli > 25)
{ cout << "Tingkatkan penjualan hari besok." << endl; }

if ( total_penjualan >= 2000.00)
{
cout << "Tambahkan stok barang." << endl;
cout << "Tambahkan juga staf karyawan ." << endl;
}
else
{ cout << "Kurangi staf karyawan." << endl; }

if (( pembeli >= 50) && (total_penjualan >= 5000.00))
{
cout << "Anda dapat bonus berlibur!" << endl;
cout << "Agar dapat meningkatkan produktivitas anda" <<
endl ;
}
}

Keluaran program :

Berapa pembeli hari kemarin ? 13
Berapa jumlah penjualannya? 650.25
Kurangi staf karyawan.

Lainnya :

Berapa pembeli hari kemarin ? 45
Berapa jumlah penjualannya? 1980.50
Tingkatkan penjualan hari besok.
Kurangi staf karyawan.

Lainnya :

Berapa pembeli hari kemarin ? 54
Berapa jumlah penjualannya? 8000
Tingkatkan penjualan hari besok.
Tambahkan stok barang.
Tambahkan juga staf karyawan .
Anda dapat bonus berlibur!
Agar dapat meningkatkan produktivitas anda

Tes relasional adalah sembarang ekspresi C++ yang memakai operator relasional. Gunakan operator kondisional sebagai pengganti pernyataan if-else yang sederhana berikut ini :

if ( a>b )
{ c=17 ; }
else
{ c=23 ; }

pada if ini, tes relasional adalah a>b, kondisi benar adalah menjalankan blok berisi c=17, dan kondisi salah akan menjalankan blok berisi c=23. Berikut adalah logika yang sama yang diungkapkan menjadi pernyataan kondisional :

( a > b ) ? ( c = 17 ) : ( c = 23 ) ;

Tanda tanya membantu pernyataan itu membaca seperti berukut :
“Apakah a lebih besar dari b ? jika ya, letakan 17 ke c. jika tidak, tempatkan 23 ke c”.
atau dalam bentuk umumnya dapat ditulis sebagai :

tesrelasional ? kodebenar : kodesalah ;

Kalau kedua ekspresi benar atau salah menugaskan nilai ke variabel yang sama, seperti diatas, anda dapat meningkatkan efisiensi penugasan variabel dalam satu waktu kesebelah kanan operator kondisional. Dengan kata lain baris

( a > b ) ? ( c = 17 ) : ( c = 23 ) ;

menjadi seperti ini :

c = ( a > b ) ? 17 : 23 ;

Contoh 3.8 :

#include

void main()
{
int val1, val2, hasil1, hasil2;
int val3, val4, hasil3, hasil4;

cout << "Pengujian menggunakan pernyataan if-else" << endl;
cout << "Masukan nilai val1 : ";
cin >> val1;

cout << "Masukan nilai val2 : ";
cin >> val2;

cout << "Pengujian menggunakan operator ?: " << endl;
cout << "Masukan nilai val3 : ";
cin >> val3;

cout << "Masukan nilai val4 : ";
cin >> val4;

if (val1 < val2)
{ hasil1 = val1;
hasil2 = val2; }
else
{ hasil2 = val1;
hasil1 = val2; }

cout << endl << "Menggunakan pernyataan if-else" << endl;
cout << "Nilai minimumnya adalah : " << hasil1 << endl;
cout << "Nilai maksimumnya adalah : " << hasil2 << endl;

hasil3 = (val3 < val4) ? val3 : val4;
hasil4 = (val4 > val3) ? val4 : val3;

cout << endl << "Menggunakan ?:"<< endl;
cout << "Nilai minimumnya adalah : " << hasil3 << endl;
cout << "Nilai maksimumnya adalah : " << hasil4 << endl;
}

Keluaran program :

Pengujian menggunakan pernyataan if-else
Masukan nilai val1 : 54
Masukan nilai val2 : 12
Pengujian menggunakan operator ?:
Masukan nilai val3 : 32
Masukan nilai val4 : 80

Menggunakan pernyataan if-else
Nilai minimumnya adalah : 12
Nilai maksimumnya adalah : 54

Menggunakan ?:
Nilai minimumnya adalah : 32
Nilai maksimumnya adalah : 80

Related Posts:

C++ Bagian 2

Operator
C++ merupakan bahasa yang kaya akan operator. Tak semuanya berkaitan dengan matematika, tetapi cukup banyak yang berkaitan dengannya. Operator dasar yang anda harus ketahui yaitu : +, -, *, /.

Contoh 2.1 :
Menghitung nilai menggunakan operator matematika dan menampilkan hasilnya :

#include

void main()
{
int nilai1, nilai2, nilai3;

nilai1 = 2 * 3 + 3 * 2;
cout << "Nilai kesatu adalah : " << nilai1 << endl;
nilai2 = 20 + 20 / (5 + 5) % 2;
cout << "Nilai kedua adalah : " << nilai2 << endl;
nilai3 = ((2 + 3) + 6 * (3 + (4 - 2))) + 3;
cout << "Nilai ketiga adalah : " << nilai3 << endl;
}

Keluaran program :

Nilai kesatu adalah : 12
Nilai kedua adalah : 20
Nilai ketiga adalah : 38

Pada contoh 2.1 perhatikan pula urutan hirarki dari suatu operator sehingga tidak terjadi kesalahan penghitungan. Untuk tanda % (modulus) atau sisa hasil bagi jangan digunakan untuk nilai bilangan real (pecahan) disebabkan % hanya menghasilkan sisa pembagian integer saja. Pernyataan berikut menyimpan nilai 1 ke hasil :

hasil = 21 % 2; // menyimpan 1 ke hasil

jika anda membagi integer 21 dengan 2, anda akan memperoleh 10 dengan sisa 1. % membuang hasil integer dan memberikan sisanya.

Contoh 2.2 :
Menghitung pembagian integer suatu nilai

#include

void main()
{
int nilai, jumlah;
float rata_rata;

cout << “Berapa nilai yang anda masukan : “ ;
cin >> nilai;
cout << “Berapa jumlah nilainya : “ ;
cin >> jumlah;
cout << “Menampilkan perhitungan pembagian” << endl;

rata_rata = nilai / jumlah; // proses pembagian
cout << “Nilai rata-rata = “ << rata_rata << endl;
}

Keluaran program :

Berapa nilai yang anda masukan : 15
Berapa jumlah nilainya : 5
Menampilkan perhitungan pembagian
Nilai rata-rata = 3

Berapa nilai yang anda masukan : 21
Berapa jumlah nilainya : 5
Menampilkan perhitungan pembagian
Nilai rata-rata = 4

Perhatikan jika variabel , literal integer atau kombinasi keduanya muncul pada kedua sisi slash, maka slash selalu melakukan pembagian integer. Jika noninteger muncul pada satu atau kedua sisi operator pembagian, C++ menghitung pembagian pecahan. Jadi pada contoh 2.2 untuk nilai yang dimasukan 21 dan jumlah nilainya 5 maka nilai rata-rata harusnya 4.2. Untuk dapat hasil tersebut maka baris pada pernyataan berikut

int nilai, jumlah;

harus diubah menjadi :

float nilai, jumlah;

Contoh 2.3 :
Menghitung nilai uang pokok yang disimpan di bank beserta bunganya selama 5 minggu.

#include

void main()
{
float bunga; // bunga rata-rata per minggu
float pokok; // jumlah pokok

cout << "Menghitung jumlah uang anda!" << endl; // judul
cout << "----------------------------" << endl << endl;

cout << "Masukkan nilai pokok uang anda ? ";
cin >> pokok;

cout << "Berapakah persentase bunga per minggu (misal, .03
atau 3%)? ";
cin >> bunga;

cout << "Proses ini menghitung secara manual" << endl;

pokok *= (1 + bunga); // bunga periode pertama
pokok *= (1 + bunga); // bunga periode kedua
pokok *= (1 + bunga); // bunga periode ketiga
pokok *= (1 + bunga); // bunga periode keempat
pokok *= (1 + bunga); // bunga periode kelima

cout.precision(2); // menformat 2 desimal dibelakang koma
cout.setf(ios::fixed); // format hitungan tetap
cout.setf(ios::showpoint);
cout << "Total nilai uang pokok setelah 5 minggu adalah Rp "
<< pokok << endl;
}

Keluaran program :

Menghitung jumlah uang anda!
----------------------------

Masukkan nilai pokok uang anda ? 10000
Berapakah persentase bunga per minggu (misal, .03 atau 3%)? .05
Proses ini menghitung secara manual
Total nilai uang pokok setelah 5 minggu adalah Rp 12762.82

Contoh 2.4 :
Menghitung luas suatu lingkaran dengan jari-jari diinputkan dari keyboard :

#include

const float pi = 3.14;
void main()
{
float luas, jari_jari;

cout << “Masukan nilai jari-jari : “;
cin >> jari_jari;

luas = pi * jari_jari * jari_jari;
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << “Luas lingkaran = “ << luas;
}

Keluaran program :

Masukan nilai jari-jari : 3.5
Luas lingkaran = 38.47

Contoh 2.5 :
Menghitung nilai tahanan total yang dipasang secara seri maupun paralel dengan masing-masing tahanan diinputkan dari keyboard :

#include

void main()
{
float total_seri, total_paralel;
float r1, r2, r3, rp;

cout << “Menghitung total tahanan” << endl;
cout << “yang dipasang seri atau paralel” << endl;
cout << “Masukan nilai tahanan r1 : “;
cin >> r1;
cout << “Masukan nilai tahanan r2 : “;
cin >> r2;
cout << “Masukan nilai tahanan r3 : “;
cin >> r3;

// menghitung total tahanan yang dipasang seri
total_seri = r1 + r2 + r3;

// menghitung total tahanan yang dipasang paralel
rp = (1 / r1) + (1 / r2) + (1 / r3);

total_paralel = 1 / rp;

cout << “Jumlah total tahanan seri adalah : “ << total_seri <<
endl;
cout.precision(2);
cout.setf(ios::fixed);
cout << “Jumlah total tahanan paralel adalah : “ <<
total_paralel << endl;
}

Keluaran program :

Menghitung total tahanan
yang dipasang seri atau paralel
Masukan nilai tahanan r1 : 5
Masukan nilai tahanan r2 : 1
Masukan nilai tahanan r3 : 3
Jumlah total tahanan seri adalah : 9
Jumlah total tahanan paralel adalah : 0.65

Related Posts:

Belajar C++ Bagian 1

Input dan Output di C++
Bahasa C memiliki rutin-rutin untuk proses input/output yang dideklarasikan di header file stdio.h. proses input/output versi C ini masih dapat digunakan di C++. Namun demikian C++ mengenalkan teknik baru untuk proses input/output, yaitu yang dinamakan iostreams atau disingkat menjadi streams saja. Hampir semua fungsi yang terdapat di stdio.h dapat dikonversikan ke dalam bentuk streams. Kelebihan streams dibandingkan input/output C adalah fleksibilitasnya dalam melakukan format input/output dan juga kemampuannya yang mendukung konsep operator berbeban lebih (overloaded operator).


Apa itu Streams ?

Streams adalah suatu abstraksi untuk menangani aliran data dari suatu sumber (producer) ke tujuan (consumer) lain. Baik sumber atau tujuan dapat berupa buffer di memori, string, file atau layar monitor. C++ mendeklarasikan kelas untuk strem di beberapa header file, yaitu;
• iostream.h (I/O umum)
• constrea.h (I/O ke console)
• strstrea.h (I/O ke string)
• fstream.h (I/O ke file)


Stream untuk Output

Untuk melakukan proses keluaran (output) digunakan operator <<. Bentuk umumnya adalah :

objek_stream << data

bentuk dikiri tanda << (objek_stream) adalah salah satu objek dari kelas ostream. Bentuk di kanan << adalah data yang akan dituliskan ke output.

#include

void main()
{
cout << “Belajar pemrograman C++”;
}

pernyataan diatas menuliskan string “Belajar pemrograman C++” ke stream cout. Stream cout adalah stream untuk output ke layar monitor. Operator << juga dapat dibuat bertingkat seperti contoh berikut :

#include

void main()
{
cout << “Belajar” << “ pemrograman C++” << ‘\n’;
}

seperti tipe data skalar yang ada di C++ sudah mendukung stream. Dengan demikian identifier yang memiliki tipe data skalar dapat dituliskan ke output dengan stream.
Contohnya :

#include

void main()
{
int x=10;
float y=20.0;
cout << "x = " << x << “ y = “ << y;
}

keluaran program diatas :
x = 10 y = 20

stream output juga dapat menuliskan alamat suatu identitas, misalnya :

#include

void main()
{
int x;
cout << &x; // menuliskan alamat variabel x
}

keluaran program diatas :
0x8f98fff4


Format pada Output dengan fungsi

Stream output dapat diformat seperti halnya output pada fungsi printf. Untuk mengubah format output, yang harus dilakukan adalah mengubah beberapa bit flag yang ada di kelas ios. Ada beberapa macam flag yang terdapat di kelas ios yaitu :

Tabel Daftar Flag Untuk Format Pada Output

Flag Bit Keterangan
skipws 0 Mengabaikan karakter spasi putih (white space) pada saat proses input
left 1 Mengatur output menjadi rata kiri
right 2 Mengatur output menjadi rata kanan
internal 3 Output disisipi karakter pengisi (padding character) setelah tanda positif atau tanda basis bilangan
dec 4 Menampilkan bilangan dalam basis desimal
oct 5 Manampilkan bilangan dalam basis oktal
hex 6 Manampilkan bilangan dalam basis heksadesimal
showbase 7 Menampilkan basis bilangan saat suatu bilangan ditampilkan (untuk heksadesimal dengan tambahan “0x” dan untuk oktal dengan tambahan “O”)
showpoint 8 Menunjukan tanda titik pada output bilangan real
uppercase 9 Membuat output bilangan heksadesimal menjadi huruf kapital
showpos 10 Menunjukan tanda ‘+’ pada output bila suatu bilangan lebih dari 0
scientific 11 Menggunakan cara penulisan eksponensial untuk bilangan real (format : xxxE()xxx)
fixed 12 Menggunakan format bilangan desimal untuk bilangan real
unitbuf 13 Mengosongkan semua stream
stdio 14 Mencegah masalah yang bisa terjadi bila digunakan stream dan stdio secara bersamaan


Sekilas tentang Flag
Flag merupakan sekumpulan bit-bit yang masing-masing bit melambangkan keadaan tertentu. Contoh yang paling sederhana adalah flag 1 bit yang hanya melambangkan keadaan nyala (“1”) atau padam (“0”).

Format Output yang lain
format pada output dengan fungsi-fungsi yang sering digunakan antara lain :
• int width (int) : fungsi ini digunakan untuk mengubah lebar output yang akan ditampilkan. Contoh :

versi C :
#include
void main()
{
int x=10;
printf(“Bilangan = %4d”, x);
}

versi C++ :
#include
void main()
{
int x=10;
cout.width(4);
cout << “Bilangan = “ << x;
}

keluaran dua program diatas :
Bilangan = 10

• char fill (char) : fungsi ini digunakan untuk mengubah karakter pengisi (padding charakter). Karakter pengisi adalah salah satu karakter ASCII yang dituliskan bila output yang diformat lebih besar daripada lebar yang ditentukan dengan fungsi width. Contoh :

versi C :
#include
void main()
{
int x=10;
printf(“Bilangan = %04d”, x);
}

versi C++ :
#include
void main()
{
int x=10;
cout.fill(‘0’);
cout.width(4);
cout << “Bilangan = “ << x;
}

keluaran dua program diatas :
Bilangan = 0010

Yang menjadi kelebihan I/O versi C++ dibandingkan dengan versi C adalah karakter pengisiannya yang bisa digunakan untuk bermacam-macam, bukan hanya karakter ‘0’. Contoh :

#include
void main()
{
int x=10;
cout.fill(‘x’);
cout.width(4);
cout << “Bilangan = “ << x;
}

keluaran program diatas :
Bilangan = xx10

 int precision (int) : fungsi ini digunakan untuk mengubah derajat ketelitian bilangan real (floating point) yang akan ditampilkan. Contoh :

versi C :
#include
void main()
{
float y=123.45;
printf(“Bilangan = %10.2f\n”, y);
}

versi C++ :
#include
void main()
{
float y=123.45;
cout.width(10);
cout.precision(5);
cout << “Bilangan = “ << y;
}

keluaran dua program diatas :
Bilangan = 123.45

Yang perlu diperhatikan bahwa di C yang dimaksud derajat ketelitian adalah jumlah digit dibelakang koma. Misalnya untuk bilangan 123.45. bila ditampilkan dengan derajat ketelitian satu digit dibelakang koma menjadi 123.5, sedangkan di stream, yang dimaksud derajat ketelitian adalah jumlah keseluruhan digit yang akan ditampilkan. Misalnya untuk bilangan 123.45 bila ditampilkan dengan derajat ketelitian satu menjadi 1e+3, bukan 123.5.

Meskipun demikian, derajat ketelitian stream dapat dibuat seperti bahasa C dengan menambahkan pernyataan :

cout.setf(ios::fixed);

atau

cout.setf(ios::scientific);

Contoh :

#include
void main()
{
float y=123.45;
cout.width(10);
cout.precision(2);
cout.setf(ios::fixed);
cout << “Bilangan = “ << y;
}

keluaran dua program diatas :
Bilangan = 123.45

Output pada String
Ada beberapa format yang dapat dilakukan pada string dengan fasilitas stream, yaitu :
• Lebar output dapat diubah dengan memanggil fungsi width diikuti argumen lebar yang dikehendaki.
• Alignment (rata kiri atau rata kanan) dapat diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::left atau ios::right.
• Karakter pengisi (padding character) dapat diubah dengan memanggil fungsi fill diikuti argumen karakter yang akan digunakan sebagai karakter pengisi.

Contoh output pada string :

#include
#include

void main()
{
char* s="Belajar pemrograman C++";
clrscr();

// contoh penggunaan width
cout << "Menuliskan string dengan lebar berbeda\n";
cout.width(27);
cout << s << endl;
cout.width(29);
cout << s << endl;
cout.width(31);
cout << s << endl;
cout.width(33);
cout << s << endl;

// contoh penggunaan fill
cout << "\nMenuliskan string dengan karakter pengisi .\n";
cout.fill('.');
cout.width(27);
cout << s << endl;
cout.width(29);
cout << s << endl;
cout.width(31);
cout << s << endl;
cout.width(33);
cout << s << endl;

// contoh penggunaan setiosflags
cout.setf(ios::right);
cout.fill('-');
cout << "\n Menuliskan string dengan rata kanan\n";
cout.width(10);
cout << "SATU" << endl;
cout.width(10);
cout << "DUA" << endl;
cout.width(10);
cout << "TIGA" << endl;
cout.width(10);
cout << "EMPAT" << endl;
getch();
}

keluaran programnya :

Menuliskan string dengan lebar berbeda
Belajar pemrograman C++
Belajar pemrograman C++
Belajar pemrograman C++
Belajar pemrograman C++

Menuliskan string dengan karakter pengisi .
....Belajar pemrograman C++
......Belajar pemrograman C++
........Belajar pemrograman C++
..........Belajar pemrograman C++

Menuliskan string dengan rata kanan
------SATU
-------DUA
------TIGA
-----EMPAT


Output pada Bilangan Bulat

Yang dimaksud bilangan bulat disini adalah tipe short int, int, unsigned int, long, unsigned long. Ada beberapa format yang dapat dilakukan pada bilangan bulat dengan fasilitas stream, yaitu :
• Basis bilangan bulat (desimal, heksadesimal atau oktal) dapat diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::dec, ios::hex atau ios::oct.
• Lebar output yang diformat dapat diubah dengan memanggil fungsi width diikuti argumen lebar yang dikehendaki.
• Alignment (rata kiri atau rata kanan) dapat diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::left atau ios::right.
• Karakter pengisi (padding character) dapat diubah dengan memanggil fungsi fill diikuti argumen karakter yang akan digunakan sebagai karakter pengisi.
• Tampilan tanda ‘+’, diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::showpos.
• Tampilan huruf (huruf kapital atau huruf kecil) pada bilangan heksadesimal, diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::uppercase.

Contoh Output pada bilangan bulat :

#include
#include
#include

void main()
{
int x=3210;
clrscr();

// contoh penggunaan dec, hex dan oct
cout << "Menuliskan bilangan bulat dalam berbagai basis";
cout.setf(ios::dec);
cout << "\nDesimal : " << x;
cout.setf(ios::hex);
cout << "\nHeksadesimal (kecil) : " << x;
cout.setf(ios::uppercase);
cout << "\nHeksadesimal (besar) : " << x;
cout.setf(ios::showbase);
cout << "\nHeksadesimal : " << x;
cout.setf(ios::oct, ios::basefield);
cout << "\nOctal : " << x;
cout.unsetf(ios::showbase);

// contoh penggunaan fill
cout.fill('0');
cout.unsetf(ios::oct);
cout << "\n\nMenuliskan bilangan bulat dengan \ karakter pengisi 0";
cout << "\nLebar 5 : ";
cout.width(5);
cout << x;
cout << "\nLebar 6 : ";
cout.width(6);
cout << x;
cout << "\nLebar 7 : ";
cout.width(7);
cout << x;

// contoh penggunaan showpos
cout << "\n\nMenuliskan bilangan bulat showpos\n";
cout.setf(ios::showpos);
cout << "Desimal : " << x;
cout.setf(ios::hex, ios::basefield);
cout << "\nHeksadesimal : " << x;
cout.setf(ios::oct);
cout << "\nOctal : " << x;
getch();
}

keluaran programnya :

Menuliskan bilangan bulat dalam berbagai basis
Desimal : 3210
Heksadesimal (kecil) : c8a
Heksadesimal (besar) : C8A
Heksadesimal : 0XC8A
Octal : 06212

Menuliskan bilangan bulat dengan karakter pengisi 0
Lebar 5 : 03210
Lebar 6 : 003210
Lebar 7 : 0003210

Menuliskan bilangan bulat showpos
Desimal : +3210
Heksadesimal : C8A
Octal : 6212

Perhatikan bahwa flag untuk ios::showpos hanya dapat digunakan bila bilangan yang diformat adalah bilangan desimal. Untuk bilangan heksadesimal maupun oktal, tanda positif dihilangkan meskipun bilangan tersebut adalah bilangan positif.


Output pada Bilangan Real

Yang dimaksud bilangan real disini adalah tipe data float, double dan long double. Ada beberapa format yang dapat dilakukan pada bilangan real dengan fasilitas stream, yaitu :
• Derajat ketelitian (precision) dapat diubah dengan memanggil fungsi precision diikuti argumen jumlah ketelitian angka yang diinginkan.
• Lebar output dapat diubah dengan memanggil fungsi width diikuti argumen lebar yang dikehendaki.
• Format bilangan real (fixed atau scientific) dapat diubah dengan memanggil fungsi setf diikuti argumen ios::fixed atau ios::scientific.
• Alignment (rata kiri atau rata kanan) dapat diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::left atau ios::right.
• Karakter pengisi (padding character) dapat diubah dengan memanggil fungsi fill diikuti argumen karakter yang akan digunakan sebagai karakter pengisi.
• Tampilan tanda ‘+’, diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::showpos.
• Tampilan tanda ‘.’ Bila terdapat angka dibelakang koma, diubah dengan memanggil fungsi setf atau unsetf diikuti argumen ios::showpoint.

Contoh output pada bilangan real :

#include
#include

void main()
{
double y=1234.56789;
clrscr();

// contoh penggunaan setprecision
cout << "Menuliskan bilangan real dengan presisi berbeda";
cout << "\nPresisi 3 : ";
cout.precision(3);
cout.width(10);
cout << y;
cout << "\nPresisi 5 : ";
cout.precision(5);
cout.width(10);
cout << y;
cout << "\nPresisi 7 : ";
cout.precision(7);
cout.width(10);
cout << y;
cout << "\nPresisi 9 : ";
cout.precision(9);
cout.width(10);
cout << y;

// contoh penggunaan fixed/scientific
cout << "\n\nMenggunakan notasi fixed/scientific";
cout.setf(ios::scientific | ios::showpos);
cout << "\nScientific : " << y;
cout.setf(ios::fixed);
cout << "\nFixed : " << y;
cout.unsetf(ios::scientific | ios::fixed | ios::showpos);


// contoh penggunaan showpoint
cout << "\n\nMenggunakan showpoint";
double z=123;
cout.setf(ios::showpoint);
cout << "\nShowpoint aktif : " << z;
cout.unsetf(ios::showpoint);
cout << "\nShowpoint non-aktif : " << z;
getch();
}

keluaran program :

Menuliskan bilangan real dengan presisi berbeda
Presisi 3 : 1234.568
Presisi 5 : 1234.56789
Presisi 7 : 1234.56789
Presisi 9 : 1234.56789

Menggunakan notasi fixed/scientific
Scientific : +1.23456789e+03
Fixed : +1234.56789

Menggunakan showpoint
Showpoint aktif : 123.000000000
Showpoint non-aktif : 123


Stream untuk Input
Penggunaan steram untuk input mirip dengan output tetapi yang digunakan adalah karakter >>. Argumen yang digunakan tetap sama, yaitu di kiri adalah objek stream untuk input dan dikanan adalah data yang akan dikenai operasi input. Pada proses input dikenal istilah spasi putih (white space), yaitu karakter pemisah antara satu identifier dengan identifier yang lain. Deklarasi spasi putih ini terletak di header file ctype.h. untuk mengetahui sebuah karakter merupakan spasi putih atau bukan digunakan fungsi isspace (int). Ada beberapa karakter yang biasanya dikenali sebagai spasi putih, yaitu spasi biasa, tab, carriage return, new line, vertical tab, formfeed (kode ASCII dari 09h sampai dengan 0Dh, 20h).




Contoh versi C :
#include

void main()
{
int x, y;
printf(“Masukan dua buah bilangan bulat : “);
scanf(“%d %d”, &x, &y);
printf(“Bilangan itu adalah : %d dan %d”, x, y);
}

Versi C++ :
#include

void main()
{
int x, y;
cout << “Masukan dua buah bilangan bulat : “;
cin >> x >> y;
cout << “Bilangan itu adalah : “ << x << “dan” << y;
}

Ada satu hal yang perlu diperhatikan dalam melakukan operasi input, yaitu input untuk string. Contoh :

#include
#include

void main()
{
char* s = new char [100];
clrscr();
cout << "Masukan sebuah string : ";
cin >> s;
cout << "String yang anda masukan : " << s;
delete [] s;
getch();
}

Keluaran program :

Masukan sebuah string : Belajar pemrograman C++
String yang anda masukan : Belajar

Pertanyaannya mengapa yang muncul hanya string “Belajar” dan string yang lain tidak muncul? jawabannya karena spasi (ASCII 20h) merupakan karakter spasi putih. Karena merupakan spasi putih, maka spasi tersebut dianggap sebagai akhir string. Ada cara tersendiri mengatasi masalah diatas, yaitu mengganti perintah

cin >> s;
Dengan
cin.getline (s, 100);

sehingga sekarang keluaran programnya :

Masukan sebuah string : Belajar pemrograman C++
String yang anda masukan : Belajar pemrograman C++

Input/Output ke Layar

Untuk melakukan I/O kelayar digunakan kelas conbuf dan constream di header file constrea.h. kelas ini menyediakan fasilitas penanganan layar seperti conio.h tetapi dalam versi C++. Output kelayar ini tidak kompatibel dengan windows. Jangan sekali-sekali menggunakan I/O ke console pada pemrograman windows yang sebenarnya.

Ada beberapa manipulator tambahan untuk melakukan output ke layar yang pada intinya sama dengan conio.h. Cara kerja manipulator ini hampir sama dengan yang di conio.h.

Tabel Daftar manipulator untuk I/O ke console

Manipulator Keterangan
clreol Menghapus sampai dengan akhir baris dari jendela teks
delline Menghapus satu baris di jendela teks
highvideo Memilih karakter dengan intensitas terang
insline Menyisipkan satu baris kosong di jendela teks
lowvideo Memilih karakter dengan intensitas rendah
normvideo Memilih karakter dengan intensitas normal
setattr (int) Memberi nilai atribut layar
setbk (int) Memberi nilai warna latar belakang
setclr (int) Memberi nilai warna karakter
setcrstype (int) Mengubah bentuk kursor
setxy (int, int) Menempatkan kursor di posisi tertentu

Related Posts: