BAB 8 FUNGSI. 8.1 Pendahuluan

dokumen-dokumen yang mirip
SL 1201 Materi tentang Fungsi

PEMROGRAMAN BERORIENTASI OBJEK

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

PEMROGRAMAN BERORIENTASI OBJEK. Input / Output. Budhi Irawan, S.Si, M.T

Komentar, Identifier, Konstanta dan Variabel

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Pointer dan Referensi

Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart

PEMROGRAMAN BERORIENTASI OBJEK. Percabangan. Budhi Irawan, S.Si, M.T

OPERASI DASAR MASUKAN DAN KELUARAN

Pengenalan C++ Oleh : Dewi Sartika

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

PEMROGRAMAN BERORIENTASI OBJEK. Pengulangan. Budhi Irawan, S.Si, M.T

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

Keg. Pembelajaran 2 : Mengenal Bahasa C++

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Kurikulum Qt. Chapter 4 Function. Fungsi

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

8.1 FUNGSI, DEKLARASI DAN DEFINISI NYA

Alpro & Strukdat 1 C++ (Sub Program) Dwiny Meidelfi, S.Kom., M.Cs.

Konsep Dasar Pemrograman Dan Pengenalan C++

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Daftar lsi... :;.:;:(:;;::t

Contoh Program C++ Sederhana. Script Program : #include<conio.h> #include<stdio.h> main() { cout<< Selamat Datang Di Lab H <<endl;

PRAKTIKUM 4 PERCABANGAN

Subprogram (dalam Bahasa C++ + Flowchart)

Kurikulum Qt. { Basic OOP } Chapter 4. Function

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

FILE & STREAM Bab FILE

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

Konsep Array dalam PBO

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

MODUL 1 Alur Seleksi dengan C++

Struktur Bahasa C dan C++

Keg. Pembelajaran 3 : Operator dalam Bahasa C++

MODUL V POINTER DAN STRING

Struktur Program C++ Preprocessor directive : perintah dalam bahasa c++ yang akan membuat dan mengkompilasi file perantara dengan program utama

BAB V OPERASI MASUKAN DAN KELUARAN

Dasar-dasar C/C++ Ekohariadi FT Unesa

LAMPIRAN PUSTAKA I/O C++

PROCEDURE DAN FUNCTION

PENGENALAN BAHASA C DAN C++

Bab 2. Dasar-Dasar Pemrograman C

FUNGSI. tipe Tipe nilai yang dihasilkan oleh fungsi. Jika tidak dinyatakan, hasil fungsi dianggap bilangan bulat (int)

Elemen Dasar Dalam Bahasa Java

Basic Input/Output Operator Yoannita

SUB PROGRAM (FUNGSI)

PENGENALAN C++ Bab 1

Algoritma dan Pemrograman. Pertemuan Ke-5 Input dan Output

PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator

ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n.

Tipe Data dan Operator

BAB III Pengenalan Tipe Data dan Bahasa Pemrograman C/C++

BAB 4 PENGENALAN BAHASA C

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Fungsi 2. Ekohariadi FT Unesa

Input dan Output. cout << Hello World\n ; atau. cout << Hello World << \n ;

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

REVIEW ARRAY. Institut Teknologi Sumatera

MODUL IV OPERASI DASAR MASUKAN DAN KELUARAN

Function. Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Format dari function :

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Algoritma Pemrograman 2B (Pemrograman C++)

PENGERTIAN VARIABEL, KONSTANTA DAN TIPE DATA

STRUKTUR DASAR PEMROGRAMAN

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

Identifier dan Tipe Data

Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

FUNGSI II. Variabel Statis. Sifat variabel statis: Sintaks: static tipe_data nama_variabel; Contoh: static int angka;

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Dasar Pemrograman Java

BAB 6 POINTER DAN REFERENCE

ARRAY / LARIK. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

File & Stream. Kegunaan File : file : ini. dengan. iostream.h) suatu. stream, Jika. dapat menghubungkan. mendeklarasikan. kita.

Chapter 1 KONSEP DASAR C

DISUSUN OLEH BAB XI POINTER. alamat. memori. sepenuhnya. pointer. dan Pointer. menggunakan. menyebabkan. Alamat. untuk.

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Baca Tulis File. Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah:

BAB V INPUT DAN OUTPUT

KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B)

Akan diperhatikan tipe data dari masing-masing operand dalam ungkapan dan secara otomatis akan dilakukan.

Tipe Data, Variabel, Input/Output

Fungsi. Fungsi. Dasar Komputer & Pemrograman 1. dipecah Sub Program. Program. Dasar Komputer & Pemrograman TC22052 Kartika Firdausy - UAD

BAB VIII SUB PROGRAM : Fungsi Tanpa Pengembalian Nilai

mengatur jumlah digit pecahan yang diinginkan mengatur atau mengontrol sejumlah tanda format, misalkan rata kiri, kanan, huruf capital dll.

Pengantar Pemrograman

SUMBER BELAJAR PENUNJANG PLPG

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Modul program di dalam C++ disebut fungsi (function)

BAB VII. FUNCTION. A. Pengantar Function. #include <iostream.h> #include <conio.h> { clrscr(); // detail function

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

int fungsi_2() { int main() { fungsi_1(); fungsi_2(); return 0;

Transkripsi:

BAB 8 FUNGSI 8.1 Pendahuluan Dalam C+ +, program merupakan kumpulan dari fungsi-fungsi, baik itu yang didefinisikan langsung dalam program maupun yang disimpan dalah suatu file header. C/C + + sendiri mempunyai fungsi utama yang disebut fungsi main(). Fungsi main () ini selalu ada dalam setiap program C/C + + dan kompiler akan menjalankan program melalui perintah-perintah yang terdapat dalam fungsi ini. Berikut ini gambar yang akan mengilustrasikan keberadaan fungsi dalam sebuah program. Program intmaino { FungsilO' Statement; Fungsil return Fnno«i'7 C\' Statemen2; Fungsil Fungsi3 } Fun si30' return return Pemrograman C++

Fungsi merupakan subprogram dan berguna untuk menjadikan program dapat lebih bersifat modular sehingga akan mudah dipahami dan dapat digunakan kembali, baik untuk program itu sendiri maupun untuk program lain yang memiliki proses yang sama. Dalam C+ +, fungsi dibedakan menjadi dua, yaitu userdefined function dan built-in function. User-defined function adalah fungsi-fungsi yang didefinisikan sendiri, sedangkan built-in function adalah fungsi-fungsi 'siap pakai' yang telah disediakan oleh kompiler. Pada bagian ini kita akan membahas lebih jauh mengenai pembuatan fungsi dalam C++ dan hal-hal yang terkandung di dalamnya. 8.2 Fungsi Tanpa Nilai Balik C++ tidak mengenai istilah prosedur seperti pada saat kita melakukan pemrograman dengan menggunakan bahasa PASCAL. Dalam bahasa PASCAL sendiri, prosedur didefinisikan sebagai suatu proses yang tidak mengembalikan nilai. Untuk melakukan hal ini di dalam C+ +, maka kita harus membuat suatu fungsi dengan tipe void, yang berarti tidak memiliki nilai balik (return value). Adapun bentuk umum dari pembuatan fungsi tanpa nilai balik ini adalah seperti vano terlihat di bawah ini.?id nama_fungs± (parameter!, parameters,...) { Statemen_yang_akan_dilakukan; ;// Membuat fungsi dengan nama TulislOKali void TulislOKali(} { for (int C=0; C<10; C++) { : cout«"aku sangat menyukai C++"«endl; dalam program C++ int maino { // Memanggil fungsi TulislOKali untuk dieksekusi TulislOKaliO ; Hasil yang akan diberikan dari program di atas adalah sebagai berikut : Aku sangat menyukai C+ + Aku sangat menyukai C+ + Aku sangat menyukai C + + Aku sangat menyukai C+ + Aku sangat menyukai C+ + Aku sangat menyukai C + + Aku sangat menyukai C + + Aku sangat menyukai C+ + Aku sangat menyukai C + + Aku sangat menyukai C + + Sedangkan bentuk umum untuk pemanggilan sebuah fungsi yang sebelumnya telah didefinisikan adalah seperti berikut. nama fungsi(nilai_parameterl, nilai_parameter2,,,.) t ' Sebagai contoh penggunaannya, di sini kita akan membuat sebuah fungsi yang dapat menuliskan teks "Aku sangat menyukai C+ + " sebanyak 10 kali. Adapun sintaks programnya adalah sebagai berikut: #include <iostream> using nam Kode Program 8-1 Pemrograman 8.3 Fungsi dengan Nilai Balik Berbeda dengan fungsi yang bertipe void, fungsi ini berguna untuk melakukan suatu proses yang dapat mengembalikan sebuah nilai. Dalam membuat fungsi ini kita harus mendefinisikan tipe data dari nilai yang akan dikembalikan. Berikut ini adalah bentuk umum dari pembuatan fungsi yang memiliki nilai balik. tipe_data nama_fungsi (parairilflrl, parameter2,...) { Statemen_yang_akan_dilakukan; return nilai_yang_akan_dikembalikan;

Sedangkan untuk pemanggilannya sama seperti pada fungsi yang tidak mempunyai nilai balik. Untuk dapat lebih memahami cara pembuatannya, perhatikan contoh-contoh program di bawah ini. 8.3.1 Fungsi yang Mengembalikan Tipe String finclude <iostream> Kode Program 8-2 // Membuat fungsi sederhana yang mengembalikan tipe string char* TestFungsiStringC) { return "Ini adalah nilai dari fungsi";./'/ Fungsi utama // Memanggil dan menampilkan hasil fungsi cout«testfunflsistr inu HH^^H Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Ini adalah nilai dari fungsi 8.3.2 Fungsi yang Mengembalikan Tipe Bilangan #include <iostream> Kode Program 8-3 // Membuat fungsi dengan nilai kembalian bertipe double double TestFungsiBilanganO { return (3.14 * 2) ; int main ( ) { Pemrograman cout«"nilai yang terdapat dalam fungsi : "; cout«testfungsibilangan() ; : Hasil yang akan diberikan oleh program di atas adalah sebagai berikut : Nilai yang terdapat dalam fungsi: 6.28 8.4 Fungsi dengan Parameter Sejauh ini kita masih membuat fungsi yang tidak memiliki parameter sehingga setiap kali pemanggilan fungsi tersebut, hasil yang didapatkan selalu bernilai tetap. Sekarang, kita akan membuat fungsi dengan parameter sehingga hasil yang diberikan dapat bersifat dinamis, tentunya tergantung dari nilai parameter yang dimasukkan. Secara teori, parameter yang terdapat pada pendefinisian sebuah fungsi disebut dengan parameter formal, sedangkan parameter yang terdapat pada saat pemanggilan disebut dengan parameter aktual. Jumlah serta tipe data antara parameter formal dan parameter aktual haruslah sesuai, jika tidak maka kompiler akan menampilkan pesan kesalahan. Sebagai tambahan, sebelum kita melanjutkan ke pembahasan lebih yang lebih jauh, Anda harus mengenal lebih baik jenis-jenis dari parameter itu sendiri. 8.4.1 Jenis Parameter Terdapat tiga buah jenis parameter yang dapat dilewatkan pada sebuah fungsi dalam C+ +, yaitu parameter masukan, keluaran dan masukan/keluaran. a. Parameter Masukan Sesuai dengan namanya, parameter ini akan digunakan sebagai nilai masukan dalam sebuah fungsi. Nilai tersebut

kemudian akan diproses oleh fungsi untuk menghasilkan sebuah nilai kembalian (return value). Berikut ini contoh program yang di dalamnya terdapat sebuah fungsi dengan parameter yang bertipe masukan. liriciude <lostream> Kode Program 8-4 //Membuat fungsi dengan parameter bertipe masukan int TambahSatu(int X) { int hasil}. hasil = X + 1; return hasilj /* Mendeklarasikan variabel yang akan digunakan sei /* nilai parameter pada saat pemanggilan */ int Bilangan, HASIL; cout«"masukkan sebuah bilangan bulat : "«endl; cin»bilangan; HASIL = TambahSatu(Bilangan}; // Menampilk.au nilai setelah diproses di dalam func cout«"nilai akhir : "«HASI1 Contoh hasil yang akan diberikan oleh program di atas adalah Masukkan sebuah bilangan bulat: 10 Nilai akhir : 11 Sebagai catatan, variabel X di atas berfungsi sebagai parameter masukan. Pemrograman C++ b. Parameter Keluaran Parameter keluaran adalah parameter yang berfungsi untuk menampung nilai yang dihasilkan dari proses di dalam fungsi. Parameter keluaran pada umumnya digunakan di dalam fungsi void (fungsi yang tidak mengembalikan nilai). Dengan kata lain, parameter tersebut berguna sebagai nilai keluaran dari sebuah fungsi. Maka dari itu, parameter keluaran ini harus dilewatkan berdasarkan alamat atau referensinya, yaitu dengan menggunakan pointer atau reference. Berikut ini contoh program yang di dalamnya terdapat sebuah fungsi yang mengandung parameter keluaran. #inelude :<iostream> Kode Program 8-5 // Parameter X sebagai masukan //dan parameter hasil sebagai keluaran void TambahSatu{int X, int *hasil) { *hasil = X + 1; } int Bilangan, HASIL; cout«"masukkan sebuah bilangan bulat cin»bilangan; // Menampilkan nilai setelah diproses di dalam fungsi cout«"nilai akhir : "«TambahSatu(Bilangan, &HASIL) return 0 Perhatikan parameter hasil di atas, parameter tersebut adalah parameter formal yang berupa pointer sehingga pada saat pemanggilan fungsi, parameter aktualnya juga harus berupa pointer. Oleh karena kita akan menyimpan hasil perhitungan ke dalam variabel HASIL, maka kita pun harus melewatkan alamat dari variabel HASIL ke dalam fungsi tersebut, yaitu dengan menuliskan &HASIL. Berikut ini contoh hasil yang akan diberikan dari program di atas.

Masukkan sebuah bilangan bulat: 10 Nilai akhir : 11 Parameter Masukan/Keluaran Jenis parameter ini adalah parameter yang digunakan sebagai masukan dan juga keluaran. Artinya, mula-mula nilai dari parameter ini akan digunakan sebagai masukan untuk proses di dalam fungsi, setelah proses selesai maka hasilnya akan disimpan kembali ke dalam parameter tersebut sebagai nilai keluaran. Berikut ini contoh program yang mempunyai sebuah fungsi dengan parameter yang bertipe masukan/ keluaran. #include <iostream> using namespace std; Kode Program 8-6 // Parameter X sebagai masukan dan juga sebagai keluaran 8.4.2 Melewatkan Parameter Berdasarkan Nilai (Pass By Value) Terdapat dua buah cara untuk melewatkan parameter di dalam sebuah fungsi, yaitu berdasarkan nilai (pass by value) dan berdasarkan alamat (pass by reference). Pada bagian ini kita hanya akan membahas mengenai pass by value, sedangkan pass by reference akan kita bahas pada sub bab berikutnya. Sesuai dengan namanya, fungsi ini akan melewatkan nilai parameter ke dalam sebuah fungsi untuk digunakan sesuai proses yang terdapat di dalam fungsi tersebut. Jika kita melewatkan parameter dengan cara ini maka nilai yang dihasilkan oleh fungsi tidak akan mempengaruhi nilai yang terdapat pada program (di luar fungsi tersebut). Hal ini disebabkan karena pada saat pemanggilan fungsi, kompiler hanya akan membuat salinan (copy) dari nilai yang terdapat pada parameter aktual ke parameter formal. Dengan kata lain, yang akan berubah adalah nilai di dalam fungsi saja. Untuk lebih memahaminya, perhatikan program di bawah ini. #include <iostream> Kode Program 8-7 int Bilangan; cout«"masukkan sebuah bilangan bulat : " ; cin»bilangan; // Menampilkan nilai setelah diproses di dalam fungsi cout«"nilai akhir : "«TambahSatu(&Bilangan) ; Contoh hasil yang akan diberikan oleh program di atas adalah Masukkan sebuah bilangan bulat: 10 Nilai akhir : 11 Pemrograman C++ // Membuat fungsi dengan melewatkan nilai X ke dalamnya void Kali2(int X) { X = X * 2; cout«"nilai di dalarn fungsi : "«X«endl; int main(} { int Bilangan; cout«"masukkan sebuah bilangan bulat cin»bilangan; cout«endl; // Menampilkan nilai awal cout«"nilai awal : "«Bilangan«endl; // Memanggil fungsi Kali2 Kali2(Bilangan); // Menampilkan nilai akhir cout«"nilai awal : "«Bilangan«endl;

Contoh hasil yang akan diberikan dari program di atas adalah Masukkan sebuah bilangan bulat: 10 Nilai awal Nilai di dalam fungsi Nilai akhir 10 20 10 Jika kita amati hasil program di atas, maka kasus tersebut dapat diilustrasikan dengan gambar di bawah ini. Nilai awal Bilangan = 10 Bilangan = 10 Nilai akhir dipanggii kembali di-copy ke variabel X :=io dilewatkan ke fungsi Proses di dalam fungsi Kali2 = 20 menghasilkan Nilai di dalam fuiiesi Pada kasus di atas, variabel Bilangan dan variabel X menempati alamat memori yang berbeda sehingga pada saat pemanggilan fungsi, nilai dari keduanya tentu akan berbeda. Di sini, yang berubah hanya nilai dari variabel X, sedangkan variabel Bilangan bernilai tetap karena kita memang tidak melakukan apa-apa terhadap variabel tersebut. Berikut ini contoh lain yang memperlihatkan pengiriman parameter dengan berdasarkan nilai. #ihclude <iostream> // Mendefinisikan fungsi untuk menukarkan dua buah bilangan void TukarBilangan(int X, int. Y)...{. Pemrograman C- // Menampilkan bilangan yang terdapat di dalam fungsi cout«"di dalam fungsi"«endl; cout«"bilangan ke-1 : *«x«endl; cout«"bilangan ke-2 : "«Y«endl; cout«endl ; int main{) { // Mendeklarasikan variabel Bilanganl dan Bilangan2 int Bilanganl, Bilangan2;,cout«"Masukkan bilangan pertama cout«"masukkan bilangan kedua // Menampilkan nilai awal cout«"keadaan awal"«endl; cout«"bilangan ke-1 : "«Bilanganl«endl; cout«"bilangan ke-2 : "«Bilangan2«endl; cout<<endl; // Memanggil fungsi TukarBilangan TukarBilangan(Bilanganl, Bilangan2); cin»bilanganl; cin»bilangan2, // Menampilkan nilai akhir setelah pemanggilan fungsi tukar cout«"keadaan akhir "«endl; cout«"bilangan ke-1 : "«Bilanganl«endl; cout«"bilangan ke-2 : "«Bilangan2«endl; cout«endl; Contoh hasil yang akan diberikan dari program di atas adalah Masukkan bilangan pertama : 21 Masukkan bilangan kedua : 78 Keadaan awal Bilangan ke-1 : 21 Bilangan ke-2 : 78 Di dalam fungsi Bilangan ke-1 : 78 Bilangan ke-2 : 21

Keadaan akhir Bilangan ke-1 : 21 Bilangan ke-2 : 78 Dari hasil di atas dapat disimpulkan bahwa fungsi tersebut tidak dapat mengubah (dalam hal ini menukarkan) bilangan-bilangan yang dimaksud karena nilai yang terdapat di dalam fungsi tidak mempengaruhi nilai luar. 8.4.3 Melewatkan Parameter Berdasarkan Alamat (Pass By Reference) Untuk dapat mempelajari bagian ini, Anda dianggap telah mengetahui arti dari alias atau reference (lihat bab 6, Pointer). Berbeda dengan pass by value, pass by reference adalah melewatkan parameter ke sebuah fungsi berdasarkan alamatnya. Kita tahu bahwa jika kita membuat alias dari sebuah variabel maka alamat dari variabel dan alias tersebut adalah sama. Hal inilah yang menjadi konsep dasar pengiriman parameter berdasarkan alamat. Melewatkan parameter dengan cara seperti ini akan menyebabkan nilai yang terdapat di dalam fungsi akan sama persis dengan nilai yang terdapat pada program (di luar fungsi). Hal ini tentunya disebabkan karena alamat dari variabel yang berperan sebagai parameter formal sama dengan alamat dari variabel yang berperan sebagai parameter aktual. Untuk lebih memahaminya, perhatikan program di bawah ini. # include <iostream> Kode Program 8-9 cout«"masukkan sebuah bilangan bulat : ",- cin»bilang cout«endl ; // Menampilkan nilai awal cout«bilangan«endl ; Kali2(Bilangan); // Menampilkan nilai akhir cout«bilangan«endl ; // Memanggil fungsi Kali2 Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut : Masukkan sebuah bilangan bulat: 10 Nilai awal : 10 Nilai di dalam fungsi: 20 Nilai akhir : 20 Kenapa demikian? Jawabnya adalah karena X bukanlah sebuah variabel melainkan sebuah alias (nama lain) atau reference dari variabel Bilangan. Maka dari itu, alias X dan variabel Bilangan tentu mempunyai alamat yang sama karena keduanya sebenarnya merupakan objek yang sama. Dengan demikian, jika nilai X berubah, maka nilai yang terdapat pada variabel Bilangan pun akan ikut berubah. Berikut ini gambar yang akan mengilustrasikan kasus tersebut. Nilai awal Bilangan v i n I alias X dilewatkan ke fungsi - // Mendefinisikan fungsi yang melewatkan parameternya // berdasarkan alamat void Kali2(int& X) { // Gunakan tanda & // untuk membuat alias atau referen X = X * 2; cout«"nilai di dalam fungsi : "«x«endl; int main ( ) { int Bilangan; Pemrograman C++ dipanggil kembali i r Bilan jan 70 ^... Nilai akhir > rtoses di dalam fungsi Kali2 menghasilkan + X = 20 Nilai di dalam fimesi

Berbeda dengan pass by value, di sini nilai X dan nilai yang terdapat pada variabel Bilangan akan saling mempengaruhi. Berikut ini contoh lain yang menggambarkan penggunaan pass by reference. # include <iostream> Kode Program 8-10 // Mendefinisikan fungsi untuk menukarkan dua buah bilangan void TukarBilangan (int& X, int& Y) { int Z = X; X = Y; Y = Z; / Menampilkan bilangan yang terdapat di dalam fungsi cout«"di dalam fungsi "«endl; cout«"bilangan ke-1 : "«X«endl; cout«"bilangan ke-2 : "«Y«endl; cout«endl; int main ( ) { // Mendeklarasikan variabel Bilanganl dan Bilangan2 int Bilanganl, Bilangan2; cout«"masukkan bilangan pertama cout«"masukkan bilangan kedua // Menampilkan nilai awal cout«"keadaan awal"«endl; cout«"bilangan ke-1 : "«Bilanganl«endl; cout«"bilangan ke-2 : "«Bilangan2«endl; cout«endl; // Memanggil fungsi TukarBilangan TukarBilangan(Bilanganl, Bilangan2); // Menampilkan nilai akhir setelah pemanggilan fungsi tujcaj cout«"keadaan akhir"«endl ; cout«"bilangan ke-1 : "«Bilanganl«endl; cout«"bilangan ke-2 : "«Bilangan2«endl ; cout«endl; return 0 Contoh hasil yang akan diberikan dari program di atas adalah Masukkan bilangan pertama : 21 Masukkan bilangan kedua : 78 Keadaan awal Bilangan ke-1 : 21 Bilangan ke-2 : 78 Di dalam fungsi Bilangan ke-1 : 78 Bilangan ke-2 : 21 Keadaan akhir Bilangan ke-1 : 78 Bilangan ke-2 : 21 Selain menggunakan alias atau reference, kita juga dapat menggunakan pointer untuk melewatkan parameter berdasarkan alamat. Namun perlu untuk diperhatikan, pada saat pemanggilan fungsi tersebut, kita harus memanggil alamat dari parameter aktual, yaitu dengan menggunakan operator &. Sebagai contoh kita akan melakukan modifikasi program di atas dengan menggunakan parameter yang bertipe pointer. Adapun sintaksnya seperti di bawah ini. // Mendefinisikan fungsi dengan parameter bertipe pointer void TukarBilangan (int *X, int *Y) { int Z = *X; *X = *Y; *Y = Z; // Menampilkan bilangan yang terdapat di dalam fungsi cout«"di dalam fungsi"«endl; cout«"bilangan ke~l : "«*X«endl; cout«"bilangan ke-2 : w «*Y«endl; cout«endl? int main{) { Pemrograman

// Mendeklarasikan variabel Bilanganl dan Bilangan2 int Bilanganl, Bilangan2; cout«"masukkan bilangan pertama cin»bilanganl ; cout«"masukkan bilangan kedua cin»bilangan2 // Menampi1kan nilai awal cout«"keadaan awal"«endl; cout«"bilangan ke-1 : "«Bilanganl«endl; cout«"bilangan ke-2 : w «Bilangan2«endl; cout«endl ; // Memanggil fungsi TukarBilangan // Ingat, gunakan operator & TukarBilangan(&Bilanganl, &Bilangan2) ; // MenampiIkan nilai akhir setelah pemanggilan fungsi tuka cout«"keadaan akhir"«endl; cout«"bilangan ke-1 : "«Bilanganl«endl; cout«"bilangan ke-2 : "«Bilangan2«endl; cout«endl ; Hasil yang didapatkan dari program di atas akan sama seperti pada program sebelumnya. 8.4.4 Melewatkan Parameter Bertipe Array Array dapat juga dijadikan sebagai parameter dalam sebuah fungsi. Sebagai contoh, di sini kita akan membuat dua buah fungsi yang memiliki parameter bertipe array. Adapun sintaks programnya adalah seperti yang terlihat di bawah ini. #include <iostream> Kode Program 8-12 // Mendefinisikan fungsi untuk proses input array void InputArray (int A[], int N) { for (int C=0; C<N; C++) { cout«" Masukkan nilai A["«C«"] : "; cin»a[c] // Mendefinisikan fungsi untuk menghitung jumlah (sum) // dari semua el emen array long Jumlah { int : A[ ]/ int N) { Pemrograman long jml = 0; -// Menjumlahkan semua elemen for (int C=0; C<N; C++) { jml += A[C]; return jml; int X[100]; // Elemen maksimal adalah 100 int BanyakElemen; long HASIL; cout«"masukkan banyaknya elemen yang diinginkan cin»banyakelemen; cout«endl ; // Memanggil fungsi InputArray InputArray(X, BanyakElemen); // Memanggil fungsi Jumlah dan menampung hasilny^ // ke variabel HASIL HASIL = JumlahfX, BanyakElemen); // Menampilkasn hasil cout«" \nhasilnya = "«HASIL; retun 0; Contoh hasil yang akan diberikan dari program di atas adalah Masukkan banyaknya elemen array yang diinginkan : 5 Masukkan nilai A[0] : 10 Masukkan nilai A[l] : 20 Masukkan nilai A[2] :30 Masukkan nilai A[3] :40 Masukkan nilai A[4] :50 Hasilnya =150 Pada prakteknya, dalam program C++ parameter yang bertipe array ini sering diganti dengan parameter yang bertipe pointer. Berikut ini contoh program yang memperlihatkan bahwa parameter dengan tipe array dapat diganti dengan tipe pointer. Adapun program ini merupakan program modifikasi dari program sebelumnya.

tinclude <iostream> Kode Program 8-13 // Mendefinisikan fungsi untuk proses input array // dengan parameter A bertipe pointer void InputArray { int *A, int N) { for (int C=Q? C<N; C++) { cout«"masukkan nilai A["«C«"] : "; cin»a[c] // Mendefinisikan fungsi untuk menghitung jumlah (sum) // dari semua elemen array long Jumlah {int *A, int N) { long jml = 0; // Men jumlah kan semua el emen array for {int C=0; C<N; C++) { jml += A[C] ; } return jml; int X[100]; // Elemen maksimal adalah 100 int BanyakElemen; long HASIL; :Cout«"Masukkan banyaknya elemen yang dilnginkan : c in»banyakeleinen ; cout«endl; // Memanggil fungsi InputArray InputArray(X, BanyakE1emen); // Memanggil fungsi Jumlah dan menampung hasilnya // ke varlabel HASIL HASIL = Jumlah{X, BanyakElemen);.-// Menampilkan hasil cout«" \nhasilnya = "«HASIL; Hasil yang akan didapatkan adalah sama seperti program sebelumnya. 8.4.5 Melewatkan Parameter yang Bersifat Konstan Sejauh ini kita hanya membuat fungsi dengan parameter-parameter yang dapat diubah nilainya. Sekarang, kita akan mempelajari bagaimana parameter sebuah fungsi dapat bersifat tetap. Artinya, di dalam fungsi nilai parameter tidak dapat diubah. Untuk melakukan hal ini, kita hanya menambahkan kata kunci const di depan parameter tersebut. Berikut ini contoh penggunaannya di dalam program. #include <iostream> Kode Program 8-14 // Mendefinisikan fungsi untuk menghitung keliling lingkaran double KelilingLingkaran(const float PI, int jari_jari) { return (2*PI*jari_jari); m int main{) { int R; double HASIL; cout«"masukkan panjang jari-jari lingkaran // Memanggil fungsi KelilingLingkaran JHASIL = KelilingLingkaran(3.14, R); // Menampilkan hasil yang didapatkan cout«"kelilingnya = "«HASIL; Contoh hasil yang akan diberikan dari program di atas adalah Masukkan panjang jari-jari lingkaran : 1 Kelilingnya = 6.28 cin»r Untuk membuktikan bahwa parameter konstan tidak dapat diubah nilainya, perhatikan potongan sintaks program di bawah ini. int TambahSatu(const int X) { X *> X + If // SALAH, Compiler tidak akan mengizinkan // karena X bersifat tetap return X/ Pemrograman C-

8.4.6 Mengeset Parameter dengan Nilai Default Nilai dari parameter yang terdapat dalam sebuah fungsi dapat kita set dengan nilai default, artinya jika kita tidak mendefinisikannya pada saat pemanggilan, maka nilai yang akan digunakan oleh fungsi adalah nilai default. Untuk melakukan hal ini kita hanya perlu mengisikan nilai parameter bersangkutan pada saat kita mendefinisikan fungsi. Adapun bentuk umum dari pembuatan fungsi yang menggunakan nilai default pada parameternya adalah seperti yang tampak di bawah ini. tipe_data jnama_fungsi (tlpe_data parameter! «n±lai_default, return nilai kembalian; } Berikut ini contoh program yang di dalamnya terdapat sebuah fungsi dengan nilai default. #include <iostream ising namespac kan fungsi untuk menghitung volume balok long VolumeBalokdnt panjang, int lebai int main( int P = 50; int L = 10; int T = 2; ylong HASIL; Mendeklarasikan variabel P dengan nilai 50 Mendeklarasikan variabel L dengan nilai 10 Mendeklarasikan variabel T dengan nilai 2 ; // Memanggil fungsi dengan tiga parameter HASIL = VolumeBalok(P, L, T); cout«"volume Balok = tt «HASIL<endl; ''/ Memanggil fungsi dengan dua parameter HASIL = VolumeBalok(P, L) ; cout«"volume Balok = "«HASIL<endl; // Memanggil fungsi dengan satu parameter HASIL = VolumeBalok(P); ;:,cout«" Volume Balok = w «HASIL<endl; Pemrograman Hasil yang akan diberikan dari program di atas adalah sebagai berikut : Volume Balok = 1000 Volume Balok = 2500 Volume Balok = 5000 8.5 Pointer Ke Fungsi Meskipun fungsi bukan sebuah variabel, namun fungsi masih merupakan objek yang memiliki lokasi fisik di memori. Hal ini menunjukkan bahwa nilai dari sebuah fungsi dapat kita ambil melalui pointer. Perlu sekali untuk diperhatikan bahwa cara untuk mendapatkan alamat dari sebuah fungsi adalah dengan menyebutkan nama fungsi tersebut tanpa tanda kurung maupun parameter. Sebagai contoh, kita mempunyai pointer P yang menunjuk ke tipe int dan kita juga memilik fungsi Tambah () yang mengembalikan tipe int. Kemudian kita akan memerintahkan pointer P untuk menunjuk ke alamat dari fungsi Tambah (). Maka contoh sintaks yang dapat dituliskan adalah tinclude <iostream> // Mendefinisikan fungsi tambah int Tambah (int X, int Y) { return (X + Y) ; Kode Program 8-16 int main { ) { // Mendeklarasikan pointer ke fungsi Tambah () // dengan parameter (int, int) int (*P) (int, int); int HASIL; int a=20, b =5; // VariaJbel untuk menampung nilai balik // Variabel yang akan digunakan // sebagai parameter // Memanggil fungsi tambah dan menyimpan nilainya // ke variabel HASIL HASIL = Tambah(a, b);

// Memerintahkan P untuk menunjuk alamat dari fungsi Tambah () = Tambah; // Menampilkan hasil melalui pointer P cout«"nilai (*P)(20,5) : "«(*P) (a,b) «endl; // Menampilkan hasil melalui variabel HASIL cout«"nilai HASIL : n «HASIL«endl; // Menampilkan alamat yang ditunjuk oleh pointer cout«"nilai P : "«p«endl; // Menampilkan alamat dari fungsi Tambah cout<<"nilai Tambah : "«Tambah«endl; Contoh hasil yang akan diberikan dari program di atas adalah Nilai (*P)(20,5) Nilai HASIL Nilai P Nilai Tambah :25 :25 :00401150 :00401150 8.6 Penimpaan Fungsi (Function Overloading) Salah satu kelebihan C + + dibandingkan bahasa C adalah karena C++ mendukung fungsi overload. Fungsi overload didefinisikan sebagai fungsi-fungsi dengan nama yang sama tetapi memiliki parameter berbeda. Kata 'berbeda' di sini dapat dilihat dari tiga segi, yaitu dari segi jumlah, tipe data, dan gabungan dari keduanya. Dalam fungsi overload, pada saat kita melakukan pemanggilan fungsi, kompiler akan memilih fungsi yang parameter aktualnya sesuai dengan parameter formalnya. Berikut ini contoh program yang menunjukkan penggunaan fungsi overload. a. Fungsi overload dengan jumlah parameter berbeda #include <iostream> Kode Program 8-17 Pemrograman C++ // Mendefinisikan fungsi Tulis dengan satu parameter void Tulis(char* S) { cout«s«endl ; // Mendefinisikan fungsi Tulis dengan dua parameter void Tulis(char* SI, char* S2) { cout«sl«" "«S2«endl; } // Mendefinisikan fungsi Tulis dengan tiga paramete\ void Tulis(char* SI, char* 52, char* S3) { cout«sl«" "«S2«" "«S3«endl; // Melakukan pemanggilan fungsi Tulis Tulis ("Budi"),- Tulis("Penerbit", "INFORMATIKA"); Tulis("Mengungkap", "Rahasia", "C++") Hasil yang akan diberikan dari program diatas Budi Penerbit INFORMATIKA Mengungkap Rahasia C+ + Fungsi overload dengan tipe data parameter berbeda #include <iostreain> Kode Program 8-18 // Mendefinisikan fungsi Tulis dengan parameter hertipe // char* void Tulis(char* X) { cout«x«endl ; adalah // Mendefinisikan fungsi Tulis dengan parameter bertipej // int void Tulis(int X) { cout«x«endl;

// Mendefinisikan fungsi Tu // double void Tulis(double X) { cout«x«endl ; // Melakukan pemanggilan fungsi Tulis \ Tulis("C++"); I Tulis(lOO); ' Tulis(21.0378); } engan parameter bertipe Hasil yang akan diberikan dari program di atas adalah C+ + 100 21.0378 c. Fungsi overload dengan jumlah dan tipe data parameter berbeda #include <iostream> Kode Program 8-19 // Mendefinisikan fungsi Tulis dengan parameter berjumlah // 1 dan bertipe int void Tulis (int X) { cout«x«endl ; // Mendefinisikan fungsi Tulis dengan parameter berjumlah // 2 dan bertipe char* void Tulis (char* SI, char* S2) { cout«sl«" "«S2«endl; int main ( ) { 1 uli s("penerbi t", 1 INFORMATIKA" Hasil yang akan diberikan dari program di atas adalah 100 Penerbit INFORMATIKA 8.7 Mengembalikan Nilai Bertipe Pointer Dalam C+ +, kita dapat membuat fungsi yang mengembalikan nilai berupa pointer. Untuk melakukan hal ini tentu kita harus mendeklarasikan tipe data dari nilai kembalian dengan pointer. Berikut ini contoh program yang di dalamnya mengandung fungsi yang mengembalikan pointer ke tipe char. finclude <iostream> Kode Program 8-20 // Mendefinisikan fungsi untuk mengembalikan string // dari karakter yang dicari char *CariKarakter(char K, char *S) { I // Selama K tidak sama dengan *S dan *S masih ada while '((K!= *S)'&& (*S)) { S++; // Carl di alamat berikutn return S; char *P; // Pointer untuk menampung nilai kembalian func. char* STRING = "Mengungkap Rahasia C++"; ;char Karakter = X C'; ":// Memanggil fungsi CariKarakter P = CariKarakter(Karakter, STRING); // Melakukan pemanggilan fungsi Tulis Tulis (100) ; : IHHHHJJII Pemrograman C++ if // Jika ditemukan

cout«"karakter n «Karakter«" ditemukan pada "«P; else // Jika tidak ditemukan cout«"karakter "«Karakter«" tidak ditemukan"; return Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Karakter C ditemukan pada C + + 8.8 Membuat Prototype Fungsi Dalam C + +, fungsi-fungsi dapat dideklarasikan terlebih dahulu sebelum dilakukan pendefinisian. Definisi fungsi baru dibuat setelah pembuatan fungsi utama. Hal ini disebut dengan istilah prototype. Prototype akan mempermudah kita dalam mengenali daftar fungsi yang tersedia atau akan didefinisikan di dalam program. Adapun bentuk umum dari pembuatan prototype fungsi adalah seperti tarnpak di bawah ini. r«uneter2,...; Berikut ini contoh program yang di dalamnya terdapat prototype fungsi. tinclude <iostream> using namespace :std; // Membuat prototype (pendeklarasian fungsi) int Kali(int X, int Y) ; // Mendeklarasikan fungsi Kali void Tulis(int:S); // Mendeklarasikan fungsi Tulis // Fungsi Utama ' nt main() { Knt Bilanganl, Bilangan2, HASIL; out«"masukkan bilangan pertama.out«"masukkan bilangan kedua cout«endl ; // Menggunakan fungsi Kali HASIL = Kali(Bilanganl, Bilangan2) cin»bilanganl; cin»bilangan2; Pemrograman C++ // Menggunakan fungsi Tulis Tulis(HASIL); // Membuat definisi fungsi Kali int Kali (int X, int Y) { return (X * Y) ; // Membuat definisi fungsi Tulis void Tulis (int S) { cout«s«endl; Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut : Masukkan bilangan pertama : 10 Masukkan bialngan kedua : 25 250 8.9 Fungsi Inline (Inline Function) Pada saat kita mendefinisikan sebuah fungsi, kompiler akan membuat satu set statemen di dalam memori. Ketika pemanggilan fungsi tersebut, eksekusi program akan meloncat ke statemenstatemen tersebut. Kemudian setelah fungsi mengembalikan nilai, maka eksekusi program akan kembali meloncat ke baris selanjutnya (baris setelah pemanggilan fungsi). Jika kita melakukan pemanggilan fungsi tersebut sebanyak 5 kali, maka kompiler juga akan melakukan proses tersebut sebanyak 5 kali. Apabila fungsi yang kita definisikan hanya terdiri dari sedikit statemen (misalnya satu atau dua baris), hal ini tentu akan mengurangi efisiensi program karena kompiler harus meloncat keluar masuk untuk melakukan proses tersebut. Kata 'efisien' bagi seorang programmer tentu akan dihubungkan dengan masalah 'kecepatan' eksekusi sebuah program. Untuk menghindari hal ini, C++ menyediakan fitur yang disebut dengan fungsi inline (inline function), yaitu dengan menggunakan kata kunci inline.

Konsep dasar dari inline function adalah proses penyalinan (copy) baris yang terdapat pada definisi fungsi ke baris pada saat kita melakukan pemanggilan fungsi tersebut. Artinya, jika kita membuat fungsi inline, kompiler tidak menyimpannya ke dalam memori melainkan hanya akan membuat salinan kode dari fungsi tersebut. Hal ini tentu tidak membutuhkan proses peloncatan statemen seperti pada saat kita membuat fungsi biasa sehingga proses eksekusinya akan lebih cepat. Berikut ini program yang menunjukkan pembuatan fungsi inline. Mnclude <iostrearn> Kode Program 8-22 // Mendefinisikan fungis inline yang mengalikan bilangan dengan // 2 inline int Kali2(int X) { return X * 2; int HASIL; //Melakukan pemanggilan fungsi inline untuk pertama kalil HASIL = Kali2 (10) ; ;" cout«"hasil = "«HASIL«endl; //Melakukan pemanggilan fungsi inline untuk kedua kali HASIL = Kali2 (20) ; ; cout«"hasil = u «HASIL«endl; ; //Melakukan pemanggilan fungsi inline untuk ketiga kali HASIL = Kali2(30); cout«"hasil = "«HASlL«endl; }:.,,:;.;;;:^:si,,:,,,wto -, - - :. : Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Hasil = 20 Hasil = 40 Hasil = 60 Jika kita amati cara kerjanya, sebenarnya kompiler menerjemahkan program di atas seperti sintaks berikut. tinclude <iostream> Kode Program 8-23 // Mendefinisikan fungis inline yang mengalikan bilangan dene // 2 inline int Kali2(int X) { return X * 2; // yang dicetak tebal adalah statemen // yang akan disalin (di-copy) int HASIL; //Melakukan pemanggilan fungsi inline untuk pertama kal jhasil = 10 * 2; // Melakukan penyalinan statemen untuk cout«"hasil = "«HASIL«endl; //Melakukan pemanggilan fungsi inline untuk kedua kali HASIL = 20 * 2; // Melakukan penyalinan statemen untuk X = 20 COUt«"Hasil = "«HASIL«endl; //Melakukan pemanggilan fungsi inline untuk ketiga kali HASIL = 30 * 2; // Melakukan penyalinan statemen untuk X = 30 cout«"hasil = "«HASIL«endl; 8.10 Rekursi akan Rekursi adalah fungsi yang pada saat pendefinisiannya memanggil dirinya sendiri untuk melakukan proses di dalamnya. Contoh paling sederhana untuk menunjukkan proses rekursi adalah pada saat kita membuat program untuk menghitung nilai faktorial dari sebuah bilangan bulat. Adapun sintaks programnya adalah seperti yang tampak di bawah ini. 10 Pemrograman

#include <iostream> Kode Program 8-24 // Mendef-inisikan fungsi Faktorial int Faktorial (int X) { if (x==l) return(l); return X * Faktorial ( X- 1 ); // Memanggil dirinya sendiri BAB 9 INPUT/OUTPUT DALAM C++ int Bilangan, HASIL; cout«"masukkan bilangan yang akan dihitung cin»bilangan; ]// Memanggil fungsi Faktorial HASIL = Faktorial(Bilangan); // Menampilkan hasil cout«bilangan«"! = "«HASIL; return 0 ; Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut : Masukkan bilangan yang akan dihitung : 5 5! = 120 Jika fungsi di atas dituliskan dengan fungsi non-rekursi, maka sintaksnya adalah sebagai berikut. int Faktorial(int X) { hasil = 1; for (int C=l; C<=X; C++) { hasil = hasil * C; } return hasil; 9.1 Pendahuluan Sejauh ini kita telah banyak menggunakan cout (dibaca si out) untuk menuliskan ke layar dan cin (dibaca si in) untuk membaca nilai dari keyboard tanpa membahas lebih detil mengenai kegunaannya. Pada bagian ini kita akan membahasnya secara terinci melalui contoh-contoh program. Selain itu, sebagai tambahan bagi Anda, di sini akan diberikan juga pengenalan mengenai operasi input dan output (I/O) yang terdapat dalam file. Sistem input dan output yang terdapat di dalam C++ sangatlah kompleks, maka dari itu di sini kita hanya akan membahas pengenalan atau dasar-dasarnya saja. Secara umum, hirarki kelas dalam C++ yang digunakan untuk proses input dan output adalah sebagai berikut : Pemrograman C++ Bab 9: Input/ dalam

tinclude <iostream> Kode Program 8-24 // Mendefinisikan fungsi Faktorial int Faktorial(int X) { if (X==l) return(1); return X * Faktorial(X-l); // Memanggil dirinya sendiri BAB 9 INPUT/OUTPUT DALAM C++ int Bilangan, HASIL; cout«"masukkan bilangan yang akan dihitung cin»bilangan; // Memanggil fungsi Faktorial HASIL = Faktorial(Bilangan); // Menampilkan hasil cout«bilangan«"! = "«HASIL return Contoh hasil yang akan diberikan dari program di atas adalah Masukkan bilangan yang akan dihitung : 5 5! = 120 Jika fungsi di atas dituliskan dengan fungsi non-rekursi, maka sintaksnya adalah sebagai berikut. int Faktorial(int X) { hasil = 1; for (int 01; C<=X; C+O { hasil = hasil * C; ret iasil; 9.1 Pendahuluan Sejauh ini kita telah banyak menggunakan cout (dibaca si out) untuk menuliskan ke layar dan cin (dibaca sj in) untuk membaca nilai dari keyboard tanpa membahas lebih detil mengenai kegunaannya. Pada bagian ini kita akan membahasnya secara terinci melalui contoh-contoh program. Selain itu, sebagai tambahan bagi Anda, di sini akan diberikan juga pengenalan mengenai operasi input dan output (I/O) yang terdapat dalam file. Sistem input dan output yang terdapat di dalam C++ sangatlah kompleks, maka dari itu di sini kita hanya akan membahas pengenalan atau dasar-dasarnya saja. Secara umum, hirarki kelas dalam C++ yang digunakan untuk proses input dan output adalah Pemrograman C+^ Bab 9: Input/ dalam C++

Pada gambar di atas dapat kita lihat bahwa ios merupakan kelas dasar (virtual base class) yang berisi fasilitas untuk proses input dan output data. Di dalam kelas ini juga didefinisikan anggotaanggota yang dapat digunakan untuk proses pengesetan format data dalam proses input maupun output. Pembahasan mengenai pengesetan format ini akan kita ungkap lebih detil lagi pada sub bab selanjutnya di dalam buku ini. Kelas ios ini dijadikan sebagai kelas dasar dari kelas 1st ream (singkatan dari input stream) dan ostream (singkatan dari output stream). Kelas istream adalah kelas yang dibuat khusus untuk menangani masalah-masalah input dengan meng-ekstrak fasilitas-fasilitas input yang terdapat pada kelas ios dan tentunya juga melalui penambahan-penambahan yang lainnya. Sedangkan kelas ostream digunakan untuk mengani masalah-masalah output. Dari kedua kelas tersebut, kemudian dibuat lagi sebuah kelas baru yang dinamakan iostream. Oleh karena diturunkan dari dua buah induk, maka kelas iostream ini otomatis dapat menangani masalah-masalah yang bisa ditangani oleh kelas 1st ream dan kelas ostream. Hal inilah yang menyebabkan kita menggunakan iostream sebagai standar untuk melakukan operasi input dan output (I/O) data. 9.2 Stream Stream adalah suatu peralatan logika (logical device) yang berguna untuk mendapatkan atau memberikan informasi. Stream ini akan dihubungkan dengan peralatan fisik (seperti keyboard, screen (layar) maupun printer) melalui sistem I/O. Semua stream Pemrograman C++ mempunyai kelakuan yang sama, sehingga apabila suatu fungsi I/O dapat dioperasikan ke peralatan fisik yang berbeda. Sebagai contoh, jika kita akan melakukan penulisan data, maka cara yang digunakan untuk menuliskan ke layar maupun ke printer adalah sama. Dalam bahasa C, untuk melakukan hal-hal yang berhubungan dengan proses input dan output data digunakan library standar, yaitu stdio. Namun dalam C+ +, library standar yang digunakan adalah iostream. Pada saat program C++ memulai proses eksekusi, terdapat empat buah stream yang secara otomatis akan terbuka, yaitu seperti yang terlihat pada tabel di bawah ini. Nama Stream cin cout cerr clog Kegunaan Input standar standar Kesalahan output standar cerr yang ter-buffer melalui file log Peralatan standar Keyboard Layar (screen) Layar (screen) Layar (screen) Stream cin, cout dan cerr di dalam C++ ini berkoresponden dengan stdin, stdout dan stderr di dalam bahasa C. 9.3 Input Menggunakan cin Seperti yang telah dikemukakan sebelumnya bahwa cin adalah suatu stream yang akan merespon proses input yang dilakukan. Stream ini hanya tersedia jika kita memasukkan file header iostream.h (untuk C + + lama) atau <iostream> (untuk C + + standar) di dalam program yang kita buat. Sebagai contoh, berikut ini contoh program yang menunjukkan penggunaan stream cin. finclude <iostream> int mainf) { Kode Program 9-1 // Mendeklarasikan sebuah variabel yang bertipe int int X; Bab 9: Input/ dalam C++

// Memberikan informasi kepada user untuk melakukan input cout«"masukkan sebuah bilangan bulat : "; // Menggunakan cin untuk merespon input yang akan dilakuka: cin»x; -// Menampilkan nilai X cout«"nilai X : "«X; ' Pada program di atas terdapat penggunaan stream cout, namun untuk sementara ini kita belum perlu mempedulikannya. Di sini, kita hanya akan fokus ke statemen yang melakukan input, yaitu cin»x;. Statemen tersebut akan menyebabkan input yang dilakukan oleh user melalui keyboard akan disimpan ke dalam variabel X. Pada penggunaan stream cin digunakan pula operator». Operator ini telah di-overload sehingga dapat berguna untuk berbagai jenis parameter, seperti int, char, float dan sebagainya. Oleh karena di sini kita menggunakan variabel X yang bertipe int, maka fungsi yang akan dipanggil adalah sebagai berikut : istreait* operator» (int &) Hal inilah yang berarti jika kita memasukkan nilai 12 melalui keyboard, maka nilai tersebut akan disimpan ke dalam variabel X. Sebagai bukti, berikut ini contoh hasil yang diberikan dari program di atas. Masukkan sebuah bilangan bulat: 12 Nilai X : 12 Dengan menggunakan operator», kita dapat melakukan input dengan satu penulisan cin. Maksud dai pernyataan ini adalah kita dapat melakukan penyingkatan penulisan dalam proses input yang akan dilakukan. Sebagai contoh, terdapat sintaks seperti di bawah ini. int X, Y, Z; cout«"masukkan nilai X : "; cin»x, Maka sintaks tersebut dapat disingkat penulisannya dengan menggunakan sintaks berikut : int: X, Y, cout«"masuk cin»x»y»z Hasil yang akan diberikan dari program di atas adalah sama. Artinya, input pertama akan disimpan ke dalam variabel X, input kedua akan disimpan ke dalam variabel Y dan input ketiga akan disimpan ke dalam variabel Z. Untuk membuktikannya, perhatikan dua contoh program berikut. 9.3.1 Menggunakan Cara Pertama Mnclude <iostream> Kode Program 9-2 // Mendeklarasikan variabel X, Y dan Z // yang mas ing-mas ing bertipe int int X, Y, Z; cout«"masukkan nilai X.- cin»x; cout«"masukkan nilai Y cin»y; w ; cout«"masukkan nilai Z : "; cin»z; // Menampilkan nilai X, Y dan Z cout«"nilai X : "«X«endl; cout«"nilai Y : "«Y«endl; cout«"nilai Z : M «z«endl return cout«"masukkan nilai Y : "? cin»y; Masukkan nilai Z I Contoh hasil yang akan diberikan dari program di adalah Pemrograman Bab 9: Input/ dalam C++

Masukkan nilai X : 10 Masukkan nilai Y : 20 Masukkan nilai Z : 30 Nilai X : 10 Nilai Y : 20 Nilai Z : 30 9.3.2 Menggunakan cara Kedua tinclude <iostream> Kode Program 9-3 //. Mendeklarasikan variabel X, Y dan Z // yang masing-masing bertipe int int X, Y, Z; cout«"masukkan nilai X, Y dan Z : "; icin»x»y»z; // Menampilkan nils: cout«"nilai X : "<«cout«"nilai Y : ---"<cout«"nilai Z : "<< 9.4 Menggunakan cout Dalam C + +, untuk melakukan output ke peralatan standar, yaitu layar (screen) adalah dengan cara menggunakan stream cout. Adapun operator yang digunakan adalah operator «. Operator ini juga telah di-overload sehingga dapat digunakan untuk berbagai macam tipe data. Berikut ini contoh penggunaan cout pada variabel tunggal dalam sebuah program. ttinclude <iostream> int X = 100; Kode Program 9-4 // Melakukan output terhadap nilai X cout«x; Sama seperti cin, cout juga dapat melakukan output secara beruntun. Artinya, satu penulisan cout dapat diikuti oleh banyak operator «. Berikut ini contoh program yang menunjukkan hal tersebut. Apabila dijalankan, program di atas akan menyimpan hasil input ke dalam variabel-variabel tersebut (X, Y dan Z) sehingga contoh hasilnya adalah Masukkan nilai X, Y dan Z : 10 20 30 Nilai X : 10 Nilai Y : 20 Nilai Z : 30 Pemrograman #include <iostream> int X = 100, Y = 200, Z = 300; // Melakukan output terhadap nilai X, Y dan Z cout«x«' V «Y«' V «Z; Perlu Anda perhatikan bahwa program di atas menggunakan kutip tunggal (") untuk menuliskan sebuah karakter spasi. Hal ini karena spasi adalah sebuah karakter, bukanlah string. Walaupun demikian Bab 9: Input/ dalam

kita juga dapat menggunakan kutip ganda ("") untuk menuliskan sebuah spasi, namun hal ini berarti kita menganggap spasi tersebut sebagai string, bukan sebagai karakter. Adapun hasil yang akan diberikan dari program di atas adalah 100 200 300 9.5 Mengatur Format Input/ C + + mengizinkan kita untuk mengeset format dari operasi-operasi I/O yang dilakukan. Sebagai contoh, kita dapat mengeset lebar kolom dari data yang akan kita tampilkan ke layar, menentukan berapa digit angka di belakang koma dan yang lainnya. Dalam C+ +, terdapat dua buah cara untuk mengeset operasi I/O. Pertama, kita dapat mengakses secara langsung anggota-anggota dari kelas ios dan yang kedua adalah dengan menggunakan fungsi-fungsi khusus yang disebut dengan manipulator yang dimasukkan sebagai bagian dari ekspresi I/O. Adapun pembahasan mengenai kedua cara tersebut dapat Anda lihat di bawah ini. 9.5.1 Menggunakan Anggota dari Kelas ±IOS Kelas ios mempunyai sebuah tipe enumerasi yang disebut dengan fmtflags dimana nilai-nilainya digunakan untuk melakukan pengesetan format data. Adapun nilai-nilai yang dimaksud adalah seperti yang terlihat di bawah ini. adjustfield fixed left showbase unitbuf basefield floatfield oct showpoint uppercase boolalpha hex right showpos dec internal scientific skipws Ketika flag oct diset, maka output akan ditampilkan dalam bilangan oktal (basis 8). Begitupun apabila flag hex diset, maka output akan ditampilkan dalam bentuk bilangan heksadesimal Pemrograman C++ (basis 16). Sedangkan untuk mengembalikan ke bilangan desimal (basis 10), maka lakukan pengesetan terhadap flag dec. Berdasarkan keadaan default, suatu bilangan akan ditampilkan dalam bentuk bilangan desimal. Pengesetan terhadap flag left akan menyebabkan output ditampilkan rapat kiri, begitupun dengan flag right akan menyebabkan output ditampilkan rapat kanan. Sedangkan flag internal berguna untuk memasukkan sebuah karakter di antara karakter dasarnya. Namun, apabila tidak ada satupun dari flag-flag tersebut (left, right dan internal) yang diset, maka secara default output akan ditampilkan rapat kanan. Apabila flag showbase diset, maka ini akan menyebabkan ditampilkannya basis dari bilangan tersebut. Sebagai contoh, jika terdapat bilangan IF (dalam heksadesimal), maka output yang akan ditampilkan adalah OxlF. Flag uppercase yang terdapat di atas akan menyebabkan karakter-karakter output ditampilkan dalam huruf kapital (besar). Pengesetan flag showpos akan menyebabkan penambahan tanda + (plus) di depan bilangan positif. Sedangkan flag showpoint akan menyebabkan penambahan nol di belakang koma pada setiap bilangan floating-point. Pada saat flag fixed diset, maka bilangan floating-point akan ditampilkan dalam notasi normal. Sedangkan apabila flag scientific diset, maka bilangan floating-point akan ditampilkan dalam notasi scientific. Flag unitbuf akan menyebabkan dibuangnya buffer setiap selesai operasi insert. Sedangkan flag skipws berguna untuk membuang karakter white-space (tab, spasi dan baris baru) ketika menjalankan input ke stream. Flag boolalpha digunakan untuk melakukan input dengan menggunakan tipe boolean, yaitu true dan false. Flag oct, dec dan hex dapat diwakili oleh flag basefield. Begitu juga dengan flag left, right dan internal juga dapat diwakili oleh flag adjustfield. Dan yang terakhir, flag fixed dan scientific juga dapat diwakili oleh flag floatfield. Setelah mengetahui kegunaan masing-masing flag tersebut, maka sekarang kita akan membahas cara umum untuk mengeset flag-flag tersebut, yaitu dengan menggunakan fungsi setf (). Adapun bentuk umum penulisannya adalah sebagai berikut : Bab 9: Input/ dalam

setf(fmtflags flags); Untuk dapat lebih memahaminya, berikut ini satu contoh program yang menunjukkan cara melakukan pengesetan terhadap format data dalam operas! I/O dalam C+ +. #include <iostream> using namespace std? Kode Program 9-6 // Melakukan pengesetan terhadap flag uppercase cout.set f(ios::uppercase} ; cout«"mengungkap Rahasia C++"«endl; // Melakukan pengesetan terhadap flag showpos cout.set f(ios::showpos); cout«12; Apabila program di atas dijalankan, maka akan memberikan hasil seperti yang tampak di bawah ini. MENGUNGKAP RAHASIA C+ + + 12 Seperti yang terlihat di atas bahwa teks "Mengungkap Rahasia C+ + " akan diampilkan dalam huruf kapital. Sedangkan bilangan 12 akan ditampilkan dengan + 12 yang menandakan bahwa bilangan tersebut adalah bilangan positif. 9.5.2 Menggunakan Manipulator Setelah mengetahui pengesetan menggunakan cara pertama, maka sekarang kita akan membahas cara pengesetan dengan menggunakan cara yang lainnya, yaitu dengan menggunakan manipulator. Dalam C+ +, terdapat beberapa manipulator yang merupakan fitur baru yang ditambahkan. Hal ini berarti bahwa kompiler C++ lama tidak mendukung adanya manipulator. Adapun Pemrograman C++ manipulator yang dimaksud di sini adalah seperti pada tabel di bawah ini. Manipulator boolalpha dec endl ends fixed flush hex internal left noboolalpha noshowbase noshowpoint noshowpos noskipws nounitbuf nouppercase oct resetiosf lags (fmtflags f) right scientific setbase(int base) setfilkint oh) setiosf lags (fmtflags f) setprecision ( int P) setw(int w) showbase Bab 9: Input/ dalam C++ Kegunaan Mengaktifkan flag boolalpha Mengaktifkan flag dec Menampilkan baris baru dan membuang stream Menampilkan null Mengaktifkan flag fixed Membuang stream Mengaktifkan flag hex Mengaktifkan flag internal Mengaktifkan flag left Mematikan flag boolalpha Mematikan flag showbase Mematikan flag showpoint Mematikan flag showpos Mematikan flag skipws Mematikan flag unitbuf Mematikan flag uppercase Mengaktifkan flag oct Mematikan flag yang dituliskan (/) Mengaktifkan flag right Mengaktifkan flag scientific Mengeset nomor basis ke base Mengisi karakter dengan ch Mengaktifkan flag yang dituliskan (f) Mengeset presisi digit Mengeset lebar kolom ke w Mengaktifkan flag showbase yang terlihat Operasi Input/ Input/ Input/ Input/ Input Input/ Input/ Input/ Input/

showpoint showpos skipws unitbuf uppercase ws Mengaktifkan flag showpoint Mengaktifkan flag showpos Mengaktifkan flag skipws Mengaktifkan flag unitbuf Mengaktifkan flag uppercase Tidak memperdulikan white-space Input Input Untuk menggunakan manipulator yang tercantum di atas kita harus memasukkan file header iomanip.h. (untuk C + + lama) atau <iomanip> (untuk C++ standar) Berikut ini contoh penggunaan salah satu manipulator di atas adalah sebuah program. #include <iostream> #include <iomanip> int main{) { Kode Program 9-7 // Menggunakan flag set fill, setw dan endl cout«setfill( '*' )«setw(8)«12«endl; V Menggunakan flag oct dan endl :out«oct«64«endl ; / / Menggunakan flag hex :out«hex«16«endl ; Hasil yang akan diberikan dari program di atas adalah sebagai berikut: 100 10 9.6 Input dan pada File Dalam membuat program kadang kala kita sering menjumpai kasus yang berhubungan dengan proses input dan output file. Sebenarnya bentuk ini adalah bentuk penyederhanaan dari sitem I/O general, karena yang diolah hanyalah file. Di dalamnya telah didefinisikan fungsi-fungsi khusus untuk proses pemanipulasiannya. Maka dari itu, pada bagian ini kita akan membahas dasar-dasar yang terkandung di dalamnya. 9.6.1 Kelas yang Berhubungan dengan File Seperti yang telah dikemukakan sebelumnya bahwa untuk menjalankan operasi I/O kita harus memasukkan file header lost ream, h atau <iostream>. Terdapat beberapa buah kelas yang didefinisikan di dalamnya, yaitu if stream, of stream dan f stream. Kelas-kelas ini merupakan turunan dari kelas istream, ostream dan iostream. Seperti yang kita ketahui bahwa 1st ream, ostream dan iostream adalah kelas turunan dari kelas ios. Hal ini tentu akan menyebabkan kelas if stream, of stream dan f stream juga dapat mengakses data-data dan semua operasi yang terdapat pada kelas ios. 9.6.2 Membuka dan Menutup File Di dalam bahasa C + +, kita membuka file dengan menghubungkannya ke sebuah stream. Ini berarti bahwa sebelum kita dapat membuka file, kita harus mendapatkan stream terlebih dahulu. Seperti yang telah kita bahas di atas bahwa terdapat tiga macam stream, yaitu stream untuk proses input (if stream), untuk proses output (of stream) dan untuk proses input/output (f stream). Maka dari itu, jika kita ingin membuat variabel stream untuk proses input, maka harus kita deklarasikan dengan tipe if stream. Begitu juga dengan variabel stream untuk proses output dan input/output, masing-masing harus dideklarasikan sebagai ofstream dan fstream. Berikut ini contoh yang menunjukkan pendeklarasian variabel-variabel stream tersebut. ifstream input; // variabel stream untuk proses input ofstream output; // variabel stream untuk proses output fstream InOut; // variabel stream untuk proses input/output Pemrograman Bab 9: Input/ dalam C++

Setelah mendeklarasikan variabel stream tersebut, maka langkah selanjutnya adalah menghubungkannya ke file yaitu dengan cara memanggil fungsi open (). Fungsi ini merupakan anggota dari masing-masing stream di atas. Berikut ini prototype dari fungsi open () dalam masing-masing stream tersebut. void ifstream::open(const char* filename, ios::openmode mode = ios::in); void ofstream: :open(const char* filename, ios::openmode mode = ios::out ios::trunc); void fstream::open(const char* filename, ios::openmode mode = ios::in Parameter f i 1 ename di atas tidak lain adalah nama file yang akan dibuka, termasuk lokasinya (path-nya). Sedangkan mode adalah menandakan bagaimana file tersebut akan dibuka. Seperti yang kita lihat pada prototype di atas bahwa kita dapat melakukan kombinasi dari nilai-nilai mode tersebut dengan melakukan operasi OR (menggunakan operator ) terhadapnya. Untuk lebih lengkapnya, berikut ini nilai-nilai dari mode di atas. ios::app, yang akan menyebabkan output dari file tersebut menjadi ditambahkan (append) pada bagian akhir baris. ios: : ate, akan menyebabkan pencarian ke akhir file ketika file tersebut dibuka. ios: : in menandakan file tersebut mempunyai kapabilitas untuk input. Sedangkan ios::out adalah untuk output. ios: : binary akan menyebabkan file yang akan dibuka tersebut dalam mode biner. Namun secara default, file yang dibuka berada dalam mode teks. ios: : trunc akan menyebabkan isi file dengan nama yang sama dengan file yang telah dibuka, akan dipotong atau dibuang sehingga lebarnya menjadi nol. Berikut ini contoh sintaks di dalam C++ yang berguna untuk membuka suatu file untuk proses output. // Membuat atau mendeklarasikan variabel stream // untuk proses output ofstream output; // Memanggil fungsi open() output.open( w myf ile", ios s:out)? Pemrograman C++ Kita dapat melakukan pencegahan jika ternyata file yang akan kita buka tidak ada atau terdapat kesalahan lainnya. Maka dari itu sebaiknya kita menambahkan suatu handler pada sintaks di atas dengan menggunakan sintaks di bawah ini. if a output) { MB. JHHHHB, cout«"file tidak dapat dibuka"/ } :i "^^ Setelah mengetahui cara untuk membuka file, maka di dalam program, kita tentu akan menutup file tersebut. Adapun cara yang digunakan untuk melakukan hal tersebut adalah dengan menggunakan fungsi close (). Tidak seperti fungsi open (), fungsi close () ini tidak mempunyai parameter. Sebagai contoh, apabila kita telah menghubungkan file dengan stream yang bernama mystream, maka kita akan menutupnya dengan perintah berikut : mystream.close() 9.6.3 Membaca dan Menuliskan Teks ke File Ol Membaca dan menuliskan teks ke file sama mudahnya v Se melakukan input dan output ke terhadap I/O console, yaififctfengan' menggunakan operator «dan». Perbedaannya di sini kita tidak menggunakan stream cout dan cin, melainkan menggunakan stream yang kita deklarasikan sendiri dan telah terhubung dengan sebuah file. Berikut ini contoh program yang akan membuat sebuah file sebagai output. #include <iostream> #include <fstream> Kode Program 9-8 / Mendeklarasikan stream untuk proses output ofstream output; output.open("d:/coba.txt"); I// Melakukan pencegahan terhadap terjadinya error if (!output) { cout«"file tidak dapat dibuka"«endl; Bab 9: Input/ dalam C+^

return 1; // Menuliskan teks ke dalam file tersebut output«"mengungkap Rahasia C++"«endl; output«"0leh : Budi Raharjo"«endl ; output«"penerbit INFORMATIKA Bandung "«endl // Menutup file output.close(); return. 0; Apabila program di atas dijalankan, maka kita akan melihat terbentuknya sebuah file bam bernama COBA.TXT di dalam drive D. Adapun isi file tersebut adalah Mengungkap Rahasia C+ + Oleh : Budi Raharjo Penerbit INFORMATIKA Bandung Sekarang kita akan melakukan pembuatan program yang melakukan proses input ke dalam sebuah variabel. Adapun sintaks programnya adalah seperti yang terlihat di bawah ini. tinclude <iostream> tinclude <fstream> Kode Program 9-9 // Mendeklarasikan stream untuk proses input ifstream input; // Membuka file yang dibuat pada program di atas input.open{"d:/coba.txt"); if (!input) { cout«"file tidak dapat dibuka"«endl; return 1; char S[100]; input»s; cout«s«endl ; Pemrograman O input»s; ; cout«s«en^l input»s; '?! cout«s«en<h; : // Menutup file input.close ( ) ; Hasil yang akan diberikan dari program di atas adalah sebagai berikut : Mengungkap Rahasia C + + Hasil di atas menunjukkan bahwa kita telah melakukan input terhadap variabel S dengan nilai teks yang pertama kali di dalam file. Selanjutnya S diganti lagi nilainya dengan teks kedua di dalam file, begitu juga untuk nilai S yang ketiga. Hal inilah yang menyebabkan nilai S berubah-ubah pada saat ditampilkan ke layar. 9.7 Fungsi put () dan get () Fungsi put () dan get () dapat juga digunakan untuk proses penulisan dan pembacaan data. Lebih tepatnya, untuk menuliskan data kita menggunakan fungsi put () dan untuk membaca data kita menggunakan fungsi get (). Adapun bentuk umum dari penggunaan kedua buah fungsi ini adalah seperti yang terlihat di bawah ini. ^^ ostream &put(char ch); istream &get(char& ch); Berikut ini contoh program yang menujukkan penggunaan fungsi put(). #include :<iostream> #include <fstream> Bab 9: Input/ dalam Kode Program 9-10

ofstream output output.open("d:/tes.f {!output) { cout«"file tidak dapat dibuka"«endl; return 1; char C; while (input) input.get(c); if (input) COut«C; ama. be1 um int C=65; while (char(c) <= X Z') output.put(char(c)); C++; Apabila program di atas dijalankan, maka akan terbentuk sebuah file baru yang bernama TEST.TXT di dalam drive D. Selanjutnya apabila kita buka file tersebut, maka isinya adalah ABCDEFGHIJKLMNOPQRSTUVWXYZ Setelah mengetahui penggunaan dari fungsi put (), maka selanjutnya kita akan menuliskan program yang akan menunjukkan penggunaan fungsi get (). Di sini, kita akan menggunakan file yang telah dibentuk sebelumnya, yaitu file TEST.TXT. Adapun sintaks programnya dapat dilihat di bawah ini. ttinclude <iostream> #include <fstream> ;.nt main () { ifstream input; input.open("d:/test.txt"); Pemrograman C++ Hasil yang akan ditampilkan di layar adalah sebagai berikut ABCDEFGHIJKLMNOPQRSTUVWXYZ Hasil di atas menunjukkan bahwa data yang tersimpan dalam file TEST.TXT (yang berbentuk karakter-karakter) satu per satu (melalui proses pengulangan) akan disimpan ke dalam variabel C dengan menggunakan fungsi get(). Selanjutnya nilai C tersebut ditampilkan ke layar dengan menggunakan perintah cout. 9.8 Fungsi write (j dan readq Selain cara-cara yang telah disebutkan sebelumnya, terdapat cara lain untuk melakukan proses penulisan dan pembacaan data ke/dari dalam file, yaitu dengan menggunakan fungsi write() dan read (). Fungsi-fungsi ini kebanyakan digunakan untuk file biner. Dari namanya kita tentu telah mengetahui bahwa fungsi write () itu digunakan untuk proses penulisan data. Sedangkan fungsi read () digunakan untuk membaca data. Berikut ini bentuk umum dari penggunaan kedua buah fungsi tersebut. ostream &write(const char **>u, streamsize n)/ istream &read(const char *buf, streamsize n); Di sini, fungsi write() akan menulis n buah karakter untuk dimasukkan ke stream dari buffer yang ditunjuk oleh pointer buf. Sedangkan fungsi read () akan membaca n buah karakter dari stream untuk ditempatkan ke buffer yang ditunjuk oleh pointer buf, Untuk lebih memahaminya, berikut ini contoh program yang menunjukkan penggunaan fungsi write () dan read (). Bab 9: Input/ dalam

Kode Program 9-12 // Membaca dari stream ke buffer INPUT.read((char *) &S, sizeof(s)) // Menampilkan data cout«s. NlM«endl ; cout«s. Nama«endl ; cout«s. Kota«endl ; cout«s. Usia«endl ; INPUT.close( // Mendeklarasikan variabel S bertipe SISNA SISWA S; I// Mengisikan nilai ke dalam variabel S IstrcpyfS.NIM, "DQG96549"); IstrcpyfS.Nama, "Budi Raharjo"); Jstrcpy(S.Kota, "Bandung"); IS.Usia = 25; I w // Mendeklarasikan stream untuk proses output Jofstream OUTPUT;.OUTPUT, open ("D:/DATA", ios:;out [ ios::trunc ios::bin* I if {! OUTPUT) i cout«"fiie uiddk dapat. dibuka"«endl; ceturn 1; Apabila program di atas dijalankan, maka Anda akan melihat hasil DOG96549 Budi Raharjo Bandung 25 Hasil di atas merupakan hasil dari pengambilan data yang terdapat pada file DATA, yaitu file biner yang sebelumnya dibentuk di dalam drive D. Adapun apabila kita lihat isi dari file biner tersebut (dengan memakai program atau aplikasi tertentu), maka contoh hasil yang akan diberikan adalah seperti yang tampak di bawah ini. DOG96549 Budi Raharjo 0yt hoxobbandung A D^A pt I/,- Menuliskan ke s'to^m OUTPUT.write((char «S, sizeof(s)}; j OUTPUT.closeO ; // Mendeklarasikan stream untuk proses input ifstream INPUT; INPUT.open("D:/DATA", ios::in ios::binary); if (!INPUT) { cout«"file tidak dapat dibuka"«endl; return 1; Pemrograman Bab 9: Input/ dalam C++