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
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
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).
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
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 :
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
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
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