operasi masukan dan keluaran
DESCRIPTION
pembelajaran program c++TRANSCRIPT
Universitas Gadjah Mada 1
BAB V
OPERASI MASUKAN DAN KELUARAN
I. DASAR TEORI
A. KONSEP STREAM
Operasi masukan dan keluaran (I/O) dalam pemprogaman C++ ditangani dengan
menerapkan konsep aliran (stream). Secara sederhana, stream adalah suatu wadah
yang digunakan untuk menampung keluaran dan menyalurkan masukan
(menampung aliran data). Dalam sistem komputer keluaran dapat diarahkan ke
piranti Iayar, printer maupun file. Sedang masukan dapat diterima dari keyboard,
mouse, joystick dan file. Stream merupakan nama umum untuk semua piranti ini.
Berdasarkan pirantinya, stream dalam C++ dapat digolongkan ke dalam
beberapa golongan berikut :
1. Keluaran standar (stdout) yang ditujukan ke layar dan printer
2. Masukan standar (stdin) yang diterima dan keyboard, mouse dan joystick.
3. Kesalahan standar (stdeRR) yang ditujukan ke layar.
4. Keluaran dan masukan khusus ke dan dari file di disk.
Stream baru dapat diakses setelah dibuka terlebih dahulu dan setelah diakses
harus ditutup : Stream keluaran, masukan dan kesalahan standar melakukan
pembukaan dan penutupan stream sendiri secara otomatis sebelum dipakai. Sedang
Stream masukan dan keluaran dan dan ke file sebelum dipakai harus dibuka dan
ditutup secara eksplisit dalam program.
Suatu stream dapat di-buffer (disimpan ke lokasi memori tertentu) terlebih dahulu
sebelum dipakai untuk mengefisienkan operasi masukan dan keluaran. Operasi
masukan dan keluaran ber-buffer mengandung resiko pembahan data tidak akan
terekam jika tiba-tiba komputer mati sebelum stream ditutup. Masalah ini dapat
diatasi dengan men-flush stream secara konsisten. Pem-flush stream adalah proses
pemindahan isi buffer ke disk tanpa penutupan stream.
Untuk memudahkan pemprogaman, C++ mengelompokkan stream ke dalam
kelas-kelas seperti terlihat pada tabel 5.1.
Tabel 5.1 Kelas stream C++
Kelas File header Keterangan
Constream Constrea.h Mengirim keluaran ke layar
Iostream Iostream.h Menangani I/O ber-buffer
Fstream Fstream.h Menangani stream file
Stsstream Strstream.h Menangani stream string.
Universitas Gadjah Mada 2
B. OPERASI MASUKAN DAN KELUARAN STANDAR
Operasi masukan / keluaran standar meliputi : masukan (dari keyboard, mouse,
joystick), keluaran (ke layar dan printer) dan kesalahan (ke layar). Operasi masukan /
keluaran standar ditangani oleh kelas iostream. Operasi masukan dan keluaran
standar dapat menggunakan operator >> dan operator >> yang dibeban lebihi
(over-loaded) dan kelas iostream.
Operasi keluaran standar ditangani oleh fungsi cout. Fungsi cout diikuti oleh
operator <<.
Pengaturan tampilan atau format data masukan dan keluaran standar dapat
dilakukan dengan dua cara, yakni : menggunakan manipulator dan menggunakan
fungsi —fungsi kelas ios.
Pengaturan Format Misukan / Keluaran dengan Manipulator
Manipulator merupakan penunjuk fungsi yang mana bila dijalankan akan
melakukan pengaturan format tampilan. Untuk menggunakan Manipulator, file header
iomanip.h harus disertakan. Tabel 5.2 berisi semua manipulator yang dikenal oleh
C++.
Tabel 5.2 Manipulator dalam C++
Manipulator Guna
Dec Konversi decimal
Endl Menampilkan baris baru dan mem-flush stream
Ends Menampilkan karakter kosong
Universitas Gadjah Mada 3
Flush Mem-flush stream
Hex Konversi Heksadesimal
Oct Konversi oktal
Resetiosflag (long f) Mematikan flag (sama dengan unsett ())
Setbase (int base) Menset jumlah basis dalam bilangan pecahan
Tetfill (int ch) Menset karakter pengisi (sama dengan fill ())
Setiosflag (long f) Menset flag (sama dengan setf ())
Setprecision (int p) Menset jumlah angka decimal
Setw (int w) Menset lebar tampilan
Ws Menghilangkan karakter spasi lunak
Pemakaian manipulator untuk mengatur format tampilan dapat dilihat dalam contoh –
contoh berikut :
Universitas Gadjah Mada 4
Pengaturan Format Masukan / Keluaran dengan Fungsi Kelas ios
Kelas ios adalah ketas bawaan C++ yang dipakai untuk menangani format
keluaran dan masukan. Fungsi-fungsi yang dipakai untuk menangani performatan
adalah :
1. long flags() dan long flags (long)
Fungsi long flags() dipakai untuk membaca kondisi format saat ini. Sedang
fungsi long flags (long) digunakan untuk menyetel nilai tanda pemformat sebesar
nilai argumen. Fungsi-fungsi ini memberi nilai kembalian fungsi berupa nilai tanda
pemformat sebelumnya.
Tanda pemformat kelas ios dapat dilihat pada tabel berikut :
Tabel 5.3 Tanda Pemformat
Konstanta Nilai Format Keteraganan
ios:: skipws 0x0001 Menghilangkan karakter spasi lunak
Universitas Gadjah Mada 5
ios:: left 0x0002 Merata kiri – kanan tampilan
ios:: right 0x0004 Meratakanankan tampilan
ios:: internal 0x0008 Mengganjal antara tanda dengan bilangan
ios:: dec 0x0010 Konversi desimal
ios:: ct 0x0020 Konversi oktal
ios:: hex 0x0040 Konversi heksadesimal
ios:: showbas 0x0080 Tampilkan bilangan dasar
ios:: showpoint 0x0100 Tampilkan tanda titik
ios:: uppercase 0x0200 Karakter eksponen huruf besar
ios:: showpos 0x0400 Tanda positif ditampilkan
ios:: scientific 0x0800 Notasi ilmiah
ios:: fixed 0x1000 Notasi pecahan
ios:: unitbuf 0x2000 Flush stream setelah operasi <<
ios:: stdio 0x4000 Flush stdio dan stderr setelah operasi <<
2. long setf (long flags) dan long seff (Iong, long)
Fungsi long setf (long) dipakai untuk menset flag tertentu atau
menambahkan tanda format sesuai dengan argumen. Nilai kembalian fungsi
berupa nilai tanda pemformat sebelumnya. Sedang long setf (long, long) dipakai
untuk nilai tanda pemformat, yang mana bit-nya terdapat pada argumen kedua
dengan nilai sesuai dengan argumen pertama. Beberapa konstanta yang tersedia
untuk argumen kedua adalah : ios::adjustfield, ios::basefield dan
ios:floaffleld.
Universitas Gadjah Mada 6
3. long unseff (long flags)
Fungsi unsetf() dipakai untuk mematikan flag tertentu atau menghapus tanda
pemformat khusus yang dtempatkan pada argumen. Nilai kembalian fungsi
berupa nilai tanda pemformat secara keseluruhan.
4. int width (int panjang)
Fungsi int width (int panjang) dipakai untuk menyetel keluaran selebar nilai
argumen. Nilai kembalian fungsi berupa lebar keluaran sebelumnya.
5. char fill (char karakter)
Fungsi char fill (char karakter) digunakan untuk menyetel karakter pemenuh
sesuai argument. Nilai kembalian fungsi ini adalah berupa karakter pemenuh
sebelumnya (normalnya adalah spasi kosong).
Contoh 5.12 :
Universitas Gadjah Mada 7
6. int precision (int jumlah)
Fungsi int precision (int jumlah) dipakai untuk menyetel kepresisian tampilan
bilangan real. Nilai kembalian fungsi ini adalah nilai kepresisian sebelumnya.
C. OPERASI MASUKAN DAN KELUARAN KE FILE
Suatu file adalah sekumpulan data yang disimpan dalam media penyimpanan
luar, seperti cakram magnetik (disket dan harddisk). Dalam C++, file merupakan
sebuah stream yang disimpan dalam media penyimpanan luar. Operasi-operasi
yang berlaku pada stream secara umum berlaku untuk file. Dalam C++, disediakan
kelas khusus untuk menangani operasi file, yakni : kelas fstream. Dan kelas fstream
kemudian diturunkan kelas ifstream yang berfungsi untuk menangani operasi
masukan (pembacaan) dan file dan kelas ofstream yang berIungsi untuk menangani
operasi keluaran (penulisan) ke file. Ketiga kelas diatas dideklarasikan dalam file
header fstream.h, sehingga file header ini mesti didefinisikan pada bagian
praprosessor diawal program.
Sebelum diakses (dibaca atau ditulisi), suatu file harus dibuka terlebih dahulu.
Setelah diakses (dibaca atau dituilsi) ,sutau file juga harus ditutup terlebih dahulu.
Pembukaan File
Sebelum dapat dibuka, suatu file dalam C++ harus didefinisikan objeknya
terlebih dahulu dengan sebuah stream yang menunjukkan kemana suatu isi file akan
dituliskan atau dibaca. Suatu stream file adalah obyek dan salah satu kelas
ifstream, ofstream atau fstream. Kelas ifstream digunakan untuk menciptakan
stream file yang hanya dapat ditulisi (write-only). Kelas ofstream digunakan untuk
menciptakan stream file yang hanya dapat dibaca (read-only). Kelas fstream
digunakan untuk menciptakan stream file yang dapat dibaca dan ditulisi . Bentuk
umum pendefinisian suatu objek file adalah :
Universitas Gadjah Mada 8
dimana nama_file merupakan nama file yang akan dibuka dan boleh disertakan
nama direktori. Stream_file merupakan nama stream yang dibuka. Bila nama file
yang dibuka tidak ditemukan dalam direktori aktif, maka file tersebut akan diciptakan.
Bila proses pembukaan file gagal, maka stream_file akan bernilai salah (0).
Selain bentuk diatas, pendefinisian suatu objek file dapat juga dilaksanakan
dengan memakai bentuk umum dengan dua pernyataan sebagai berikut :
Universitas Gadjah Mada 9
Dimana nama_file menunjukkan nama file yang dibuka. Bagian modus menunjukkan
spesifikasi cara pembukaan file yang dapat beñsi konstanta-konstanta enumerasi
seperti tabel 5.4. Bagian akses menunjukkan spesifikasi hak akses atas file, apakah
hanya dapat dibaca saja atau ditulisi saja atau dapat dibaca dan ditulisi (tabel 5.5).
Tabel 5.4 Modus operasi pembukaan file
Konstanta Arti
ios :: app Membuka file dengan modus keluaran, tetapi memungkinkan
operasi penambahan data.
ios :: ate Membuka file untuk keperluan masukan maupun keluaran dan
secara otomatis menempatkan penunjuk file ke posisi akhir file.
ios :: in Membuka file untuk operasi masukan. Modus ini merupakan
penyetelan bawaan untuk objek bertipe ifstream.
ios :: nocreate Membuka file yang sudah ada. Sekiranya file belum ada,
operasi pembukaan menjadi gagal dilaksanakan.
Tabel 5.4 Modus operasi pembukaan file (lanjutan)
Konstanta Arti
ios :: noreplace Membuka file yang baru. Sekiranya file sudah ada, operasi
pembukaan menjadi gagal dilaksanakan (kecuali kalau ios :: ate
atau ios :: app disertakan).
ios :: out Membuka file untuk operasi keluaran. Modus ini merupakan
penyetelan bawaan untuk objek bertipe ofstream.
ios :: trunc Menghapus file yang sudah ada dan menciptakan file baru.
ios :: binary Membuka file dengan operasi baca tulis secara biner.
Tabel 5.5 Spesifikasi akses pembukaan file
Atribut Arti
0 Akses normal (bawaan)
1 Read – only
2 File hiden
4 File system
8 Bit archive diset
Universitas Gadjah Mada 10
Penutupan File
Setelah suatu stream file diproses, stream tersebut harus ditutup. Jika tidak
ditutup, segala perubahan yang dilakukan terhadap isi file tersebut tidak akan
dituliskan ke file. Bentuk umum penutupan stream file adalah :
Pengaksesan File :
Pengaksesan file dapat berupa proses untuk menulis (merekam) data ke file
atau proses membaca data dan file. Pengaksesan file sangat terkait dengan jenis
file. Bahasa pemprogaman C++ mengenal dua jerils file, yakni file teks dan file biner.
1. File Teks
File teks adalah file dimana karakter ‗\n‘ akan diterjemahkan sebagai
permintaan untuk mengganti garis baru. File teks C++ akan mengabaikan setiap
karakter spasi lunak. File teks dapat diidentikan dengan piranti standar seperti
layar. Sebagaimana piranti standar layar, file teks menampilkan keluaran dan
menerima masukan dengan menggunakan operator << dan operator >>.
Universitas Gadjah Mada 11
2. File Biner
Suatu file biner adalah file yang tidak melakukan penerjemahan karakter
apapun, sehingga karakter ‗\n‘ tetap dibaca sebagai karakter ‗n dan karakter
spasi lunak tetap dibaca sebagal karakter spasi lunak. Operasi file biner secara
eksplisit dinyatakan dengan memberikan argumen kedua pada fungsi open()
berupa ios::binary.
Contoh 5.21 :
Ofstream file_masukan (―data‖, ios:binary) ;
Contoh 5.22 :
ofstream file_masukan;
file_masukan.open (―data‖, ios:binary);
Operasi perekaman atau penulisan data ke file biner dilaksanakan dengan
menggunakan fungsi anggota write (). Bentuk umum operasi penulisan data ke
file biner adalah :
Contoh 5.23 :
Universitas Gadjah Mada 12
Operasi pembacaan data dari file biner dilaksanakan dengan menggunakan
fungsi anggota read().
Pengaksesan File Secara Acak
Selain pengaksesan file secara sekuensial (unit) dan awal file hingga akhir
file seperti dalam contoh diatas, file juga dapat diakses secara acak.
Pengaksesan secara acak dapat dilaksanakan dengan menggunakan penunjuk
file. Terdapat dua jenis penunjuk file, yakni penunjuk file untuk keperluan
pembacaan data dari file dan penunjuk untuk keperluan penulisan data ke file.
Penunjuk file untuk keperluan operasi pembacaan data dan file menggunakan
fungsi anggota seekg(). Sedang Penunjuk file untuk keperluan operasi penulisan
atau perekaman data ke file menggunakan fungsi anggota seekp(). Bentuk
umum kedua fungsi ini adalah :
Universitas Gadjah Mada 13
Bagian ofset menyatakan ofset dalam satuan byte berdasarkan posisi
acuan. Bagian posisi_acuan menunjukkan posisi penunjuk sesuai dengan
konstantakonstanta pada tabel 5.6 berikut :
Tabel 5.6 Konstanta penunjuk posisi acuan file
Nilai Keterangan
ios :: beg Posisi dari awal file
ios :: beg Posisi berdasarkan letak penunjuk file sekarang
ios :: beg Posisi dari akhir file
Informasi mengenai posisi file untuk operasi penulisan atau perekaman
data ke file dan pembacaan data ke file dapat dilaksanakan
denganmenggunakan fungsi anggota tellp() dan tellg().
Contoh 5.28 :
II. STUDI KASUS
STUDI KASUS 1
Berikut ini ditunjukkan program untuk menampilkan tabel hasil perhitungan
kwadrat, pangkat tiga dan seperti suatu nilai ke layar.
Universitas Gadjah Mada 14
STUDI KASUS 2
Berikut ini ditunjukkan program untuk menampilkan string yang dimasukkan dati
keyboard ke Iayar.
Universitas Gadjah Mada 15
STUDI KASUS 3
Berikut ini ditunjukkan program untuk menghitung penjumlahan mata uang
dengan masukan dari keyboard.
STUDI KASUS 4
Berikut ini ditunjukkan program untuk menunjukkan pemakaian manipulator
tampilan ke layar.
Universitas Gadjah Mada 16
STUDI KASUS 5
Berikut ini ditunjukkan program untuk menulis data ke file teks.
Universitas Gadjah Mada 17
STUDI KASUS 6
Berikut ini ditunjukkan program untuk merekam data tabel kanversi suhu dari
celcius -fahrenheit ke file KonvSuhu.txt. File hasil perekaman dapat dibuka dengan
program pengolah data yang lain, mis : notepad, MS Word atau Excel.
Universitas Gadjah Mada 18
STUDI KASUS 7
Berikut ini ditunjukkan program untuk menyalin file teks, dari satu file ke file yang
lain.
Universitas Gadjah Mada 19
III. LATIHAN
LATIHAN 1
Buatlah program untuk menampILkan tabel data nilai mahasiswa peserta kuliah
metode komputasi ke Iayar. Data dimasukkan lewat keyboard.
LATIHAN 2
Buatlah program untuk menyimpan tabel data nhlai mahasiswa ke file teks atau
biner dan membacanya kembali dan file untuk ditampilkan ke layar.
LATIHAN 3
Buatlah program untuk menampilkan data suhu badan, jumlah denyut nadi,
panjang nafas Anda ke layar yang direkam selama tiga han berturutturut. Buatlah
format tampilan data dalam bentuk tabel. Data dimasukkan lewat keyboard.
LATIHAN 4
Buatlah program untuk merekam data suhu badan, jumlah denyut nadi, panjang
nafas Anda ke dalam file teks dan membacanya kembali dan file untuk ditampilkan
dilayar.
LATIHAN 5
Buatlah program untuk menambahkan data nilai anda yang sudah tersimpan
dalam file. Jika file belum ada buat file baru. Buat juga program untuk membaca file
Anda ini dan memprosesnya untuk mencari nilai rata - rata, median, modus, deviasi
standar dan variansi data.
Universitas Gadjah Mada 20
DISKUSI I
ANALISIS SIFAT STATISTIK DATA GEOFISIKA
Pengantar
Geofisika merupakan salah satu cabang ilmu pengetahuan yang sangat terkait.
dengan aktivitas observasi. Hasil obsevasi geofisika dapat berupa data analog maupun data
digital. Data digital hasil observasi geofisika dapat berupa data runtun waktu (time series)
dan data spasial. Data runtun waktu geofisika memiliki harga tertentu sebagai fungsi waktu,
sedang data spasial geofisika memiliki harga tertentu sebagai fungsi posisi (x,y,z).
Data — data runtun waktu maupun spasial dan hasil observasi geofisika memiliki
sifat-sifat statistik yang unik. Sifat-sifat statistik ini sangat terkait dengan kondisi data itu
sendiri maupun terkait dengan dinamika sistem fisis yang diobservasi. Diskusi ini hendak
mengekplorasi sifat-sifat statistic data runtun waktu geofisika, antara lain: nilai rata-rata,
modus, median, deviasi standar, distribusi dan variansi.
Tujuan
- Mahasis mampu memahami dan menjelaskan sifat —sifat statistik data runtun waktu
geofisika
- Mahasiswa mampu menghitung, menampilkan dan menjelaskan sifat-sifat statistik data
geofisika
Permasalahan
- Belum tersedia data runtun waktu geofisika
- Belum tersedia program untuk menampilkan data runtun waktu geofisika, serta untuk
menghitung sifat-sifat statistiknya
- Belum terdapat analisis yang memadai tentang sifat-sifat statistik data runtun waktu
geofisika
Universitas Gadjah Mada 21
Tugas kelompok
- Cari beberapa jenis data runtun waktu geofisika (suhu, kecepatan angin, curah hujan
atau seismik dll.
- Buat pogram untuk menampilkan data anda.
- Buat program untuk menghitung nilai rata-rata, modus, median, deviasi standar,.
distribusi dan variansi dari data anda.
- Buatlah analisis dan hasil pengolahan data anda.
DISKUSI II
ANALISIS DATA DALAM GEOFISIKA KAWASAN WAKTU-FREKUENSI
Pengantar
Data runtun waktu geofisika dapat dianalisis dalam dua kasan (domain), yakni dalam
kawasan waktu atau ruang dan dalam kawasan frekuensi atau bilangan gelombang.
Transformasi dan kawasan waktu ke kawasan frekuensi dapat dilakukan dengan
menggunakan Transformasi Fourier (Fourier Transform), sedang transformasi dan kawasan
frekuensi ke kawasan waktu dilaksanakan menggunakan Transformasi Fourier Balik (Invers
Fourier Transform). Algoritma cepat untuk transformasi ini sering disebut sebagai Fast
Fourier Transform (FFT) dan Invers Fast Fourier Transform (IFFT). Analisis data runtun
waktu geofiika dalam kawasan waktu maupun frekuensi akan dilaksanakan dalam diskusi ini.
Tujuan
- Mahasiswa mampu memahami fungsi tranformasi fourier.
- Mahasiswa mampu memahami, mengolah dan menampilkan data geofisika dalam
kawasan Waktu dan Frekuensi.
- Mahasiswa mampu menyajikan dan menjelaskan hasil pengolahan data geofisika dalam
kawasan Waktu dan Frekuensi.
Permasalahan
- Sudah tersedia data runtun waktu geofisika
- Belum tersedia program untuk menampilkan data runtun waktu dalam kawan waktu dan
frekuensi
- Belum tersedia program untuk melakukan transformasi fourier dan transformasi fourier
balik
Universitas Gadjah Mada 22
Tugas
- Siapkan beberapa jenis data runtun waktu geofisika (suhu, kecepatan angin, curah hujan
atau seismik dll.
- Buat program untuk menampilkan data runtun waktu geofisika dalam kawasan dan
frekuensi.
- Buatlah program melakukan transformasi fourier dan transformasi fourier balik dan data
runtun waktu geofisika
- Buatlah analisis terhadap data anda dalam kawasan waktu dan frekuensi
DISKUSI III
PENTAPISAN DATA GEOFISIKA
Pengantar
Pentapisan atau filtering data adalah suatu upaya untuk menyaring data yang
memenuhi kriteria tertentu. Pentapisan data dapat dilaksanakan dalam kasan aktu maupun
frekuensi. Pentapisan dalam kawasan frekuensi lebih mudah dilaksanakan daripada dalam
kawasan waktu. Pentapisan dapat dilakukan terhadap data runtun waktu maupun data
spasial. Dalam diskusi ini, akan dilaksanakan pentapisan terhadap data runtun waktu
geofisika. Terdapat empat jenis tapis yang dapat dipakai, yakni : tapis lolos bawah (low
pass), lolos atas (high pass), lolos pita (band pass) dan stop pita (band stop).
Tujuan
- Mahasiswa mampu memahami konsep pentapisan data runtun waktu geofisika
- Mahasiswa mampu melakukan proses pentapisan data geofisika
- Mampu menyajikan dan menjelaskan proses dan hasil pentapisan data runtun waktu
geofisika.
Permasalahan
- Sudah tersedia data runtun waktu geofisika
- Belum tersedia program untuk melakukan penapisan data runtun waktu geofisika
Universitas Gadjah Mada 23
Tugas
- Siapkan beberapa jenis data runtun waktu geofisika (suhu, kecepatan angin, curah hujan
atau seismik dll).
- Buatlah program untuk menampilkan data runtun waktu geofisika sebelum dan setelah
pentapisan.
- Buatlah program untuk melakukan pentapisan (lolos atas, lolos bawah, lolos pita, stop
pita) data runtun waktu geofisika.
- Buatlah analisis terhadap hasil pentapisan data anda
DISKUSI IV
Analisis Data Spasial
Pengantar
Survei geofisika sering menghasilkan data spasial, yang merupakan harga-harga
parameter fisis tertentu sebagai fungsi posisi (x,y,z). Data-data ini dapat ditampilkan dalam
bentuk kontur 2-D atau sayatan volume 3-D. Data-data ini juga dapat dianalisis dan diolah
dalam kawasan ruang maupun dalam kawasan bilangan gelombang. Dengan demikian data
spasial juga dapat dikenai operasi pentapisan.
Dalam diskusi ini akan dilakukan suatu proses pengkonturan data spasial dan
penyayatan data spasial.
Tujuan
- Mampu memahami, mengolah dan menampilkan data data spasial
- Mampu menyajikan dan menjelaskan hasil pengolahan data spasial
Permasalahan
- Belum tersedia data spasial
- Sudah tersedia program uinuk mengolah, menampilkan dan mengkontur data spasial
(Surfer 7.)
Tugas
- Carilah data spasial (topografi, gravitasi, magnetik dll)
- Buatlah kontur dan data anda dan tampilkan
- Buatlah sayatan terhadap hasil kontur data anda
- Buatlah analisis terhadap hasil pengkonturan dan sayatan kontur anda