Home » » Operasi Dasar Masukan dan Keluaran Bahasa Pemrograman C++

Operasi Dasar Masukan dan Keluaran Bahasa Pemrograman C++


Cout

Dengan menggunakan obyek ini, anda dapat meletakkan suatu informasi ke standard output (normalnya berupa layar).
Untuk menampilkan tulisan "coba cout dengan ganti baris" yang diikuti dengan ganti baris (newline), anda bisa menggunakan pernyataan berikut:
cout << "coba cout dengan ganti baris\n";
Untuk menampilkan tulisan "Tanggal : " diikuti dengan isi variabel tgl dan kemudian karakter newline, pernyataan yang diperlukan:
cout "Tanggal : " << tgl << '\n';
Pada contoh di atas terdapat karakter khusus berupa newline yang penulisannya berupa '\n'. Karakter seperti ini dikenal dengan sebutan escape sequence. Pada pemrograman C++ terdapat sejumlah karakter yang tergolong sebagai escape sequence.

Manipulator

Manipulator umumnya digunakan untuk mengatur tampilan data. Misalnya untuk mengatur agar sesuatu nilai ditampilkan dengan sepuluh karakter dan diatur rata kanan terhadap lebar tersebut. Tabel berikut berisikan jumlah manipulator pada bahasa pemrograman C++.
Tabel A. Manipulator
ManipulatorKeterangan
endlMenyisipkan newline dan mengirimkan isi penyangga keluaran ke piranti keluaran
endsMenyiapkan karakter null
flushMengirimkan isi penyangga keluaran ke piranti keluaran
decMengonversi ke bilangan basis sepuluh
hexMengonversi ke bilangan basis 16 (oktal)
octMengonversi ke bilangan basis 8 (oktal)
setbase(int n)Mengonversi ke bilangan basis n (n=8, 10 atau 16)
setw(int n)Mengatur lebar field untuk suatu nilai sebesar n karakter
setfill(int c)Menyetel karakter pemenuhan berupa c
setprecision(int n)Menyetel presisi bilangan pecahan sebesar n digit
setiosflags(long f)Menyetel format yang ditentukan oleh f. f adalah tanda format pada Tabel B
resetiosflags(long f)Menghapus format yang ditentukan oleh f. f adalah tanda format pada Tabel B
a. Manipulator endl
Manipulator endl digunakan untuk menyisipkan karakter newline. Dengan kata lain manipulator ini identik dengan '\n'. Namun endl lebih disukai daripada '\n' karena lebih memberikan kejelasan. Selain itu, manipulator ini menjamin data langsung dikirimkan ke piranti keluaran. Hal ini sangat bermanfaat terutama kalau piranti keluaran berupa file di disk.
Contoh program yang menggunakan manipulator endl:
// barang1.cpp
// program ini menampilkan tiga buah jumlah barang dan
// menggunakan manipulator endl
// Oleh: Benidiktus Sihotang, STP
#include
#include
void main()
{
int jlhbarisa=100,
int jlhbarisb=232,
int jlhbarisc=888;
clrscr;                 // menghapus layar
cout << "Barang A = " << jlhbarisa << endl;
cout << "Barang B = " << jlhbarisb << endl;
cout << "Barang C = " << jlhbarisc << endl;
}
Jika program di atas dikompilasi dan kemudian dijalankan, hasilnya adalah sebagai berikut:
C:\PRG>barang1
Barang A = 100
Barang B = 232
Barang C = 888
C:\PRG>_
b. Manipulator setw()
Manipulator setw() bermanfaat untuk mengatur lebar dari suatu tampilan data. Sebagai contoh data jumlah pada program barang2.cpp dapat ditampilkan rata kanan dengan cara seperti di bawah ini:
// barang2.cpp
// program ini menampilkan tiga buah jumlah barang dan
// menggunakan manipulator setw
// Oleh: Benidiktus Sihotang, STP
#include
#include
#include
void main()
{
int jlhbarisa=10,
int jlhbarisb=232,
int jlhbarisc=1788;
clrscr;                 // menghapus layar
cout << "Barang A = " << setw (5) << jlhbarisa << endl;
cout << "Barang B = " << setw (5) << jlhbarisb << endl;
cout << "Barang C = " << setw (5) << jlhbarisc << endl;
}
Jika program di atas dikompilasi dan kemudian dijalankan, hasilnya adalah sebagai berikut:
C:\PRG>barang2
Barang A =     10
Barang B =    232
Barang C =  1788
C:\PRG>_
c. Manipulator setfill()
Manipulator setfill berguna untuk mengatur karakter yang dipakai memenuhi bagian field yang ditentukan setw(); yang tidak dipakai untuk menampilkan data. Misalnya, jika diberikan perintah:
cout << setw (6) << 234 << endl;
maka 123 akan ditampilkan dengan lebar 6 karakter dan didahului oleh tiga karakter spasi. Apabila sebelum pernyataan di atas terdapat pernyataan:
cout << setfill ('*');
hasilnya berupa: ***123.
d. Manipulator dec, oct dan hex
Manipulator dec, oct dan hex berguna menampilkan suatu data dalam bentuk desimal (bilangan basis 10), oktal (bilangan Basis 8) dan heksadesimal (bilangan basis 16).
// konversi.cpp
// program ini mengonversi ke desimal, oktal
// dan heksadesimal
// Oleh: Benidiktus Sihotang, STP
#include
#include
#include
void main()
{
int nilai=250;
clrscr;                 // menghapus layar
cout << nilai << endl;
cout << oct << nilai << endl;
cout << hex << nilai << endl;
cout << dec << nilai << endl;
}
Hasil eksekusi:
C:\PRG>konversi
250
372
fa
250
C:\PRG>_
Tampak bahwa jika manipulator dec, oct atau hex tidak digunakan, suatu nilai ditampilkan dalam basis sepuluh.
e. Manipulator setbase()
Pengonversian ke oktal, desimal atau heksadesimal juga dapat dilakukan dengan menggunakan manipulator setbase(). Misalnya: setbase(8) identik dengan: oct.
f. Manipulator flush
Pada saat mengeluarkan standar data ke standar output, cout menggunakan suatu penyangga (buffer). Jika penyangga belum penuh, cout tidak mengirimkan ke standard output. Hal ini dilakukan untuk mengidentifikasikan pengiriman ke standard output.
Agar data yang dikirimkan ke cout langsung ditransfer ke stardard output, anda dapat menambahkan manipulator flush di akhir data. Namun perlu diketahui, kalau anda menggunakan endl, sebenarnya manipulator ini identik dengan newline diikuti dengan flush. Dengan demikian, tiga buah pernyataan berikut mempunyai makna yang sama:
cout << "C++\n" << flush;
cout << "C++" << endl;
cout << "C++" << '\n' << flush;
g. Manipulator ends
Berfungsi untuk menambahkan karakter null (ASCII nol) ke deretan suatu karakter. Hal ini kadang-kadang diperlukan, misalnya jika ingin mengirim sejumlah karakter ke file disk atau modem dan mengakhirinya dengan karakter null.
Contoh:
cout << 'c' << 'd' << 'e' << ends;
Pernyataan di atas mengirimkan tiga buah karakter (c, d dan e) serta sebuah karakter nul. Pada layar, ends akan menimbulkan sebuah karakter kosong.
h. Pemakaian setiosflags()
Manipulator setiosflags() merupakan manipulator yang dapat dipakai untuk mengontrol sejumlah tanda format yang tercantum pada Tabel B.
Tabel B. Tanda format untuk setiosflags() dan resetiosflags()
Nama tanda formatKeterangan
ios::leftMenyetel rata kiri terhadap lebar field yang diatur melalui setw()
ios::rightMenyetel rata kanan terhadap lebar field yang diatur melalui setw()
ios::scientificMemformat keluaran dalam notasi eksponensial
ios::fixedMemformat keluaran dalam bentuk notasi desimal
ios::decMemformat keluaran dalam basis 10 (desimal)
ios::octMemformat keluaran dalam basis 8 (oktal)
ios::hexMemformat keluaran dalam basis 16 (heksadesimal)
ios::uppercaseMemformat huruf pada notasi heksadesimal dalam bentuk huruf kapital
ios::showbaseMenampilkan awalan 0x untuk bilangan heksadesimal atau 0 (nol) untuk bilangan oktal
ios::showpointMenampilkan titik desimal pada bilangan pecahan yang tidak memiliki bagian pecahan
ios::showposUntuk menampilkan tanda + pada bilangan  positif
i. Pemakaian resetiosflags()
Adakalanya setelah tanda format tertentu digunakan (misalnya ios::showbase), diinginkan untuk kembali ke keadaan semula. Hal ini sering terjadi pada program yang besar. Untuk menangani kasus seperti ini, pada C++ terdapat manipulator bernama resetiosflags().
Misalnya:
setiosflags(ios::showbase)
telah digunakan. Untuk kembali ke keadaan semula, anda bisa memberikan:
resetiosflags(ios::showbase)
Lebih jelasnya, penggunaan manipulatordi atas dilakukan untuk menghilangkan tanda awalan 0 pada  bilangan oktal atau 0x pada bilangan heksadesimal pada tampilan berikutnya.
j. Manipulator setprecision()
Apabila anda bekerja dengan bilangan pecahan, anda juga bisa mengatur jumlah digit pecahan yang ingin ditampilkan. Hal ini dapat dilakukan dengan menggunakan manipulator setprecision(). Bentuknya:
setprecision(n)
dengan n menyatakan jumlah digit pecahan yang diinginkan.
Sebagai contoh:
cout << setprecision(2) << 123.56789 << endl;
akan menampilkan:
123.57
Bagian pecahan terdiri dari dua digit sesuai dengan argumen pada setprecision().

Cin

Bahasa pemrograman C++ menyediakan suatu obyek bernama cin (baca: C in). Obyek ini bermanfaat untuk membaca data dari standard input (normalnya adalah keyboard).
1. cin dengan Sebuah Variabel
Bentuk pernyataan cin untuk membaca data dari keyboard dan meletakkan ke sebuah variabel bernama var:
cin >> var,
Tanda >> disebut operator "pengambilan dari".
2. cin dengan Lebih dari Satu Variabel
Bentuk cin juga dapat seperti berikut:
cin >> bil_x >> bil_y;
Pernyataan di atas digunakan untuk membaca bil_x dan bil_y.
3. cin untuk Membaca Karakter
cin juga dapat dipakai untuk membaca sebuah karakter:
cin >> karakter
Contoh program cin membaca karakter:
// cinkarakter.cpp
// program ini membaca karakter dengan cin
// Oleh: Benidiktus Sihotang, STP
#include
#include
#include
void main()
{
char karakter;
clrscr();     // menghapus layar
cout << "Masukkan sebuah karakter. ";
cin >> karakter;
cout << "Anda mengetik " << karakter << endl;
}
Hasil eksekusi:
C:\PRG>cinkarakter
Masukkan sebuah karakter. x
Anda mengetik x
C:\PRG>_

Fungsi getch() dan getche()

Fungsi getch() dan getche() berguna untuk membaca sebuah karakter tanpa perlu menekan enter. Selain itu, fungsi ini juga dapat dipakai untuk membaca tombol seperti spasi, tab ataupun enter.
Bentuk pemakaiannya:
karakter = getch();
karakter = getche();
Kode tombol yang ditekan akan diberikan ke variabel karakter yang bertipe char. Perbedaan kedua fungsi di atas yaitu fungsi getch() tidak menampilkan karakter dari tombol yang ditekan, sedangkan fungsi getche() karakter dari tombol yang ditekan akan ditampilkan.
Apabila fungsi getch() atau getche() digunakan, file header bernama conio.h perlu disertakan dalam program.

cerr

Biasanya pesan kesalahan yang ingin ditampilkan dari suatu program C++ tidak dilakukan dengan cout, melainkan dengan cerr. Tujuannya adalah agar pesan dikirim ke piranti yang berbeda dengan dengan informasi yang bukan berupa pesan kesalahan. Dengan demikian jika dikehendaki nantinya kedua jenis informasi tersebut dapat dipilahkan (melalui pengalihan arah / redirection).
Sebagai contoh:
cerr << "Memori penuh. Program tidak dapat dijalankan\n";
akan mengirimkan string:
"Memori penuh. Program tidak dapat dijalankan\n"
ke standard error.