Minggu, 22 September 2013

Keep Calm and FIGHT


CURHAT
     Orang bilang kalo SMA tuh yang paling nakal kelas 2 nya, kayak nya kuliah juga gitu deh, mulai tingkat 2 ini aq ngerasa semakin gak jelas. Beberapa orang menghujat, ngomongin di belakang, mendukung, sampai biasa aja sama tingkahku. But no problem! I'm fine with my life, mungkin bisa dibilang saat ini lagi sibuk cari jati diri part 2. Aku saat ini lagi bener" males kuliah, kangen rumah, pingin terus di zona nyaman, dan gak tertarik sama tantangan hidup. Bahkan sampai saat ini mungkin aq masih berpikir salah jurusan dan sebagainya. Untuk saat ini aq melampiaskannya dengan bertemu setiap hari dengan seseorang yang kita sepakati sebagai pacar. Aku mulai terlena dengan jalan-jalan dan mulai lupa dengan tugas utamaku datang kesini. 

Ada 1 keputusan yang aq ambil dengan mantap tapi sekarang aku jadi tidak komitmen lagi menjalankannya. Aku bukan menyessal tapi hanya saja aku merasa saat ini lagi tidak begitu tertarik dengan keputusan itu lagi karena beberapa pihak. Aku mengambil keputusan itu karena kagum pada beberapa pihak dan ingin berubah, tapi sekarang aq mulai tidak berkomitmen pula karena sikap dari pihak-pihak itu sendiri. In this place, u can meet many people with different characteristic and unstable emotional. The important thing is I didn't allow my life disturbed by others!
Aku Mendengar:
Tapi apakah kau sadar banyak orang yang kau sayangi berharap lebih padamu. Saat kau mendapatkan sebuah peluang yang tidak semua orang dapat menikmatinya sepertimu betapa bangganya orang yang menyayangimu. Mungkin hidupmu adalah hidupmu, hanya kamu yang tahu jalan hidupmu, tapi bagaimana orang yang telah berharap lebih padamu.? Dan di suatu saat apa yang mereka harapkan ternyata tidak dapat mereka rasakan. Apa yang mereka korbankan selama ini menjadi sia-sia. Dan saat mereka telah pergi mungkin hanya sesal yang akan kamu dapat.  Hanay orang yang pernah mengalami kehilangan yang akan mengerti, tapi apakah kamu menunggu sampai saat kamu merasakan kehilangan orang yang kau sayangi.
Just look around, dear. Semua keputusan ada ditanganmu. Keep  Fight J

Dari Sahabat:
sampah yang bisa di daur ulang menjadi cambuk semangat untuk menanjak ke tingkat yang lebih tinggi yaitu KESUKSESAN

kadang orang lain ngomong tanpa tahu apa yang kita rasain dalam hati, mereka cuma melihat dari segala sisi yang negatif.. Jangan ngejudge seseorang tanpa terlebih dahulu anda mendalami dan mencoba merasakan seandainya yang terjadi itu apda diriku, lalu gimana nanti??? #ThinkBig #please hahaha

dan kita juga tidak boleh menyalahkan mereka yang menjatuhkan kita , karena kita membutuhkan orang orang seperti mereka agar kita tahu siapa diri kita sebenarnya
*we need them so that we know who we really are

Orang yang kuat hatinya, Bukan mereka yang tidak pernah menangis atau menerima caci maki orang

Melainkan orang yang tetap tegar ketika banyak Orang yang menjatuhkannya.

Kamis, 12 September 2013

Inaugurasi 2013 HIMMA MI Polman ASTRA

"Friendship" ,dalam HIMMA Manajemen Informatika Politeknik Manufaktur ASTRA 





ENJOY


Kamis, 29 Agustus 2013

Cara Cepat Mengenali Troubleshooting komputer

Komputer sudah merupakan alat bantu yang tergolong penting saat ini, kita ambil salah satu contoh pada kegiatan perkantoran, tentunya dengan adanya komputer maka pekerjaan dapat diselesaikan dengan lebih cepat. Sebagai pengguna atau pemakai komputer tentunya kita juga pernah mengalami masalah dengan komputer. Hal tersebut dapat diakibatkan adanya ketidaksesuaian dari komponen dasar komputer itu sendiri yang biasanya berkaitan dengan Software (perangkat lunak atau aplikasinya), Hardware (perangkat keras) atau Brainware (si pemakai komputer).Pengertian Troubleshooting Komputer
Dalam dunia komputer, segala sesuatu masalah yang berhubungan dengan komputer disebut Troubleshooting dan timbulnya masalah dalam komputer tentu ada sebabnya. Pada kesempatan ini kita akan sedikit belajar untuk mendeteksi masalah pada komputer Anda terutama yang berhubungan dengan Hardware.

Untuk permasalahan dengan Software sebaiknya Anda lakukan pendeteksian sederhana dahulu seperti pemeriksaan file-file yang berhubungan dengan Software atau spesifikasi permintaan (requirement) dari Software. Apabila permasalahannya cukup rumit, sebaiknya Anda install ulang saja Software tersebut, karena akan terlalu rumit untuk memperbaiki sebuah Software, sedangkan untuk permasalahan dengan Brainware, penulis hanya dapat memberikan saran “istirahat dulu deh, he…”.
Teknik dalam Troubleshooting
Terdapat dua macam teknik dalam mendeteksi permasalahan dalam komputer, yaitu teknik Forward dan teknik Backward. Untuk lebih mengenal kedua teknik tersebut, ada baiknya kita bahas terlebih dahulu definisi dari masing-masing teknik tersebut.
1. Teknik Forward
Sesuai dengan namanya, maka dalam teknik ini segala macam permasalahan dideteksi semenjak awal komputer dirakit dan biasanya teknik ini hanya digunakan oleh orang-orang dealer komputer yang sering melakukan perakitan komputer. Pada teknik ini hanya dilakukan pendeteksian masalah secara sederhana dan dilakukan sebelum komputer dinyalakan (dialiri listrik). Untuk mempermudah silakan simak contoh berikut :
§ Setelah komputer selesai dirakit, maka dilakukan pemeriksaan pada semua Hardware yang telah terpasang, misalnya memeriksa hubungan dari kabel Power Supply ke soket power pada Motherboard.
§ Untuk casing ATX, kita periksa apakah kabel Power Switch sudah terpasang dengan benar.
§ dsb.
2. Teknik Backward
Hampir sama dengan teknik sebelumnya, teknik Backward adalah teknik untuk mendeteksi kesalahan pada komputer setelah komputer dinyalakan (dialiri listrik). Teknik lebih banyak digunakan karena pada umumnya permasalahan dalam komputer baru akan timbul setelah “jam terbang” komputernya sudah banyak dan ini sudah merupakan hal yang wajar. Dapat kita ambil beberapa contoh sebagai berikut :
§ Floppy Disk yang tidak dapat membaca disket dengan baik.
§ Komputer tidak mau menyala saat tombol power pada casing ditekan.
§ dsb.
Analisa Pengukuran
Pada tahapan ini, pendeteksian masalah dengan cara mengukur tegangan listrik pada komponen nomor 1 sampai 3. Gunakan alat bantu seperti multitester untuk mengukur tegangan yang diterima atau diberikan komponen tersebut.
Contoh : Mengukur tegangan listrik yang diterima oleh Power Supply, lalu mengukur tegangan yang diberikan oleh Power Supply ke komponen lainnya.
Analisa Suara
Pada tahapan ini pendeteksian masalah menggunakan kode suara (beep) yang dimiliki oleh BIOS dan dapat kita dengar lewat PC Speaker. Pastikan kabel PC Speaker sudah terpasang dengan baik. Kemungkinan letak permasalahan ada di komponen nomor 4 dan 5. Untuk mempermudah pengenalan kode suara tersebut, silakan simak keterangan berikut :

  1. § Bunyi beep pendek satu kali, artinya sistem telah melakukan proses Boot dengan baik.
  2. § Bunyi beep pendek 2 kali, artinya ada masalah pada konfigurasi atau seting pada CMOS.
  3. § Bunyi beep panjang 1 kali dan pendek 1 kali, artinya ada masalah pada Motherboard atau DRAM.
  4. § Bunyi beep panjang 1 kali dan pendek 2 kali, artinya ada masalah pada monitor atau VGA Card.
  5. § Bunyi beep panjang 1 kali dan pendek 3 kali, artinya ada masalah pada Keyboard.
  6. § Bunyi beep panjang 1 kali dan pendek 9 kali, artinya ada masalah pada ROM BIOS.
  7. § Bunyi beep panjang terus-menerus, artinya ada masalah di DRAM.
  8. § Bunyi beep pendek terus-menerus, artinya ada masalah penerimaan tegangan (power).
  9. § Pada beberapa merk Motherboard akan mengeluarkan bunyi beep beberapa kali apabila temperatur processornya terlalu tinggi (panas).
Catatan : kode bunyi beep diatas berlaku pada AWARD BIOS, untuk jenis BIOS yang lain kemungkinan memiliki kode bunyi beep yang berbeda.
Analisa Tampilan
Pada tahapan ini pendeteksian masalah cenderung lebih mudah karena letak permasalahan dapat diketahui berdasarkan pesan error yang ditampilkan di monitor. Kemungkinan letak permasalahan ada di komponen.
Contoh : Pada saat komputer dinyalakan tampil pesan Keyboard Error, maka dapat dipastikan letak permasalahan hanya pada Keyboard.
Cara Cepat Mengenali Troubleshooting
§ Apabila terjadi masalah dan sistem masih memberikan tampilan pesan pada monitor atau disertai dengan bunyi beep 1 atau 2 kali, maka kemungkinan letak permasalahan ada di yaitu pada Keyboard, Card I/O, Disk Drive dan Disket.
§ Apabila terjadi masalah dan sistem memberikan kode bunyi beep lebih dari 2 kali, maka kemungkinan letak permasalahan ada di komponen yaitu RAM, VGA Card dan Monitor.
§ Sedangkan untuk masalah yang tidak disertai pesan pada monitor atau kode bunyi beep, kemungkinan besar letak permasalahan ada di komponen nomor 1 dan 2, yaitu Power Suplly dan Motherboard.
Dengan kedua macam teknik dalam pendeteksian maslah dalam komputer tersebut, tentunya akan lebih memperkaya pengetahuan kita di bidang komputer, jadi jika suatu saat terdapat masalah pada komputer Anda kita dapat melakukan pemeriksaan terlebih dahulu sebelum membawa ke tempat servis, kalaupun harus membawa ke tempat servis kita sudah mengerti letak permasalahannya, jadi kita tidak dibohongi oleh tukang servis.
Dengan pemahaman troubleshooting komputer yang lebih dalam tentunya akan lebih mempermudah kita untuk mengetahui letak permasalahan dalam komputer dan tentunya akan lebih menyenangkan apabila kita dapat memperbaiki sendiri permasalahan tersebut. Semoga pembahasan sederhana tentang troubleshooting ini dapat bermanfaat, aduh capek banget bro, selamat mencoba dan terima kasih.

14 teknik Troubleshooting Pada PC Anda

Teknik Troubleshooting atau teknik menganalisa kerusakan yang terjadi pada sebuah PC, merupakan teknik dasar yang harus dikuasai oleh serang teknisi computer…..
Apabila anda lagi belajar menjadi seorang teknisi PC semoga tutorial ini dapat membantu anda menjadi seorang teknisi yang handal…..
1. Apabila computer anda sering terjadi hang beberapa penyebabya antara lain :
a. Memori tidak cocok, misalnya Motherbord ada hanya mensuppor memori PC 2800 dengan kapasitas maksimal 512 MB lalu anda memasang memori PC 3200 dengan kapasitas 1 GB. Untuk kasus seperti ini hal yang dapat dilakukan yaitu mengganti memori.
b. PC atau Hardisk anda terkena VIRUS sehingga mengganggu kinerja PC anda, hal yang anda dapat lakukan antara lain menscan PC anda dengan Antivirus kepercayaan anda dengan update terbarunya.
c. Terjadi kesalahan over clock pada Motherboard, hal yang dapat anda lakukan yaitu mereset setingan motherboard anda.
d. Adanya bad sector pada hardisk anda, apabila bad sector ini hanya bersifat softwere dapat diatasi dengan mempartisi ulang hardisk anda namun apabila bad sector sudah bersifat hardwere biasanya mempartisi ulang tidak akan bertahan lama, salah satunya cara yaitu dengan mengganti hardisk.
2. Pembacaan data menjadi lambat penyebabnya antara lain :
a. Memori tidak cukup, hal ini terjadi karena banyaknya program yang anda install pada PC anda, hal yang dapat anda lakukan atara lain menghapus program-program yang menggunakan resource memori yang banyak dan program-program yang jarang anda pakai. Kalau anda memang lagi mempunyai keuangan yang lebih baik lagi anda mengupgrade atau menambah kapasitas memori anda.
b. Hardisk penuh atau adanya Virus, untuk masalah virus sudah dibahas pada pembahasan di atas, sedangkan untuk hardisk yang penuh cara satu-satunya yaitu menghapus data-data anda yang tidak terlalu penting atau Kalau anda memang lagi mempunyai keuangan yang lebih baik lagi anda mengupgrade atau menambah kapasitas hardisk anda.
3. CMOS failure atau terjadi kesalahan penyebanya antara lain:
a. Beterai BIOS Rusak atau habis, yang dapat anda lakukan yaitu mengganti Baterai BIOS dengan yang baru.
b. Setingan BIOS berubah, yang dapat anda lakukan yatu mereset kembali setinagn BIOS anda.
4. PC anda tidak dapat booting, penyebabnya antara lain :
a. Cache memori processor anda rusak, hal yang dapat anda lakukan yaitu mendisable cache eksternal processor anda, namun hal ini dapat mengakibatkan PC anda akan berjalan sangat lambat.
b. Memori Tidak cocok, hal yang dapat anda lakukan sama dengan gejala pertama bagian a.
c. Terjadi kerusakan pada Sistem Boot operasi anda atau Boot sactor, hal yang dapat anda lakukan antara lain menginstal ulang oprating system anda atau memasukan oprating system yang baru.
d. Ada bad sactor pada track awal hardisk anda, hal yang dapat anda lakukan yaitu mempartisi ulang hardisk anda (lihat gejala pertama bagian d).
5. Terdengar suara bib panjang berkali-kali pada saat anda menyalakan PC anda, hal ini berarti bahwa terdapat kesalahan atau kerusakan pada memori anda, penyebabnya antara lain :
a. Memori rusak, hal ini dapat diperiksa dengan mencoba memori anda pada PC lain, apabila hal yang sama terjadi pada PC itu kemungkinan besar memori anda rusak, hal yang dapat anda lakukan yaitu mengganti memori anda dengan memori yang bagus.
b. Memori tidak cocok, hal yang dapat anda lakukan yaitu menganti memori (lihat gejala pertama bagian a).
c. Memori tidak masuk slot dengan benar, hal yang dapat anda lakukan yaitu meriksa slot memori lalu memasangnya dengan benar.
6. Computer anda hidup lalu mati pada beberapa menit kemudian, penyebabnya antara lain :
a. Power suplay anda telah kalah atau tidak dapat lagi menanggung kapasitas tenaga yang dibutuhkan PC anda, hal yang dapat anda lakukan yaitu mangganti power suplay anda dengan power suplay yang bagus, dengan kapasitas yang besar
b. Processor terlalu panas, hal dapat terjadi karena fan processor yang anda gunakan tidak berfungsi dengan baik, hal yang dapat anda lakukan yaitu:
i. periksa kabel power fan processor apa terpasang atau tidak, apabila tidak pasang kabel power processor pada slotnya.
ii. Fan atau kipas processor anda tidak berputar dengan baik, hal yang dapat anda lakukan yaitu ganti fan processor anda dengan yang bagus.
iii. Fan processor anda tidak terpasang dengan rapat, hal yang dapat anda lakukan periksa fan processor apabila goyang rapatkan kembali fan processor anda periksa kaki-kaki pengait processor apakah telah terpasang dengan benar.
7. Suara bib bagus tetapi tdak ada tampilan, penyebanya antara lain :
a. VGA card atau VGA onboard anda rusak, hal yang dapat anda lakukan yaitu mengganti VGA card anda dengan yang bagus.
b. Slot VGA tidak terpasang dengan sempurna, hal yang dapat anda lakukan yaitu memeriksa VGA card lalu mamasangnya dengan sempurna.
c. Apabila pada tampilan pada monitor anda baru hilang saat prosses booting selesai masahnya yaitu monitor anda tidak dapat mengangkat resolusi PC anda yang terlalu tinggi, hal yang dapat anda lakukan menggunakan monitor yang dapat mengangkat resolusi tinggi lalu mengebalikannya ke resolusi yang dapat diangkat oleh monitor anda.
8. I/O (input-output) disk error, penyebabnya yaitu system di hardisk rusak, hal yang dapat anda lakukan yaitu memperbaiki system I/O hardisk anda (hal ini hanya dapat dilakukan oleh teknisi ahli)
9. Floppy disk failure atau tida dapat dideteksi, penyebabnya antara lain :
a. I/O floppy disk rusak, hal yang dapat anda lakukan yaitu memperbaiki system I/O floppy disk.
b. Floppy rusak total, hal yang dapat anda lakukan yaitu mengganti Floppy dengan yang bagus.
c. Kabel floppy putus, hal yang dapat anda lakukan yaitu mengganti kabel floppy dengan yang bagus.
d. Tegangan power suplay tidak cukup, hal ini diakibatkan power suplai anda telah AUS, hal yang dapat anda lakukan yaitu mengganti power suplay anda dengan yang baru.
10. Motherboard mereset sendiri atau bahkan tidak bisa booting, penyebanyan antara lain :
a. Power suplay tidak normal, hal yang dapat anda lakukan yaitu mengganti power suplay anda dengan yang bagus, bila perlu dengan daya yang lebih jika anda mencurigai power suplay anda kekurangan daya.
b. Motherboard kotor, hal ini dapat mempengaruhi kinerja PC anda karena debu pada PC anda dapat menghambat pentransferan data pada PC anda, hal yang dapat anda lakukan yaitu membersihkan motherboard anda sebaiknya anda melakukan ini sebanya satu kali dalam sebulan.
11. Kapasitas hardisk anda tidak normal, hal ini dapat diakibatkan oleh setingan jumper I/O anda tidak benar , hal yang dapat anda lakukan yaitu memeriksa settingan jumper I/O anda pastikan sesuai dengan posisi hardisk anda.
12. Beberapa slot onboard tidak dapat berfungsi, penyebabnya natara lain :
a. Slot onboard anda rusak, hal yang dapat anda lakukan yaitu menggati phireperall onboard anda dengan phireperall card.
b. Setingan onboard tidak benar, coba periksa setingan onboard di BIOS PC anda, bila ada kesalahan maka perbaiki, atau bila perlu reset kembali setingan BIOS anda,
13. Tampilan dilayar ada huruf yang berkedip-kedip atau muncul garis, penyebabnya yaitu :
a. VGA card atau onboard anda rusak, hal yang dapat anda lakukan yaitu mengganti VGA card anda dengan yang bagus.
b. Monitor anda rusak, hal yang dapat anda lakukan yaitu mengganti monitor anda dengan monitor yang bagus.
14. Motherboard anda blank atau tidak ada reaksi sama sekali, penyebabnya antara lain :
a. BIOS pada motherboard anda rusak, hal yang dapat anda lakukan yaitu mengupgrade BIOS anda dengan tipe yang sama sebaiknya dengan versi yang terbaru.
b. Processor rusak atau terbakar, hal yang dapat anda lakukan yaitu ganti prosessor dengan processor yang bagus.
c. IC Regulator anda jebol, hal yang dapat anda lakukan yaitu ganti IC Regulator anda dengan yang bagus (sebaiknya dilakukan oleh teknisi ahli karena arsitektur pada motherboard sangatlah rumit bila ditangani oleh orang awam maka motherboard anda dapat rusak total).
d. IC Chipset anda rusak, hal yang dapat anda lakukan yaitu ganti IC Chipset anda dengan yang bagus (sebaiknya dilakukan oleh teknisi ahli karena arsitektur pada motherboard sangatlah rumit bila ditangani oleh orang awam maka motherboard anda dapat rusak total).
e. IC Reset anda rusak, hal yang dapat anda lakukan yaitu ganti IC Reset anda dengan yang bagus (sebaiknya dilakukan oleh teknisi ahli karena arsitektur pada motherboard sangatlah rumit bila ditangani oleh orang awam maka motherboard anda dapat rusak total).
f. IC Clock Processor anda rusak, hal yang dapat anda lakukan yaitu ganti IC clock Processor anda dengan yang bagus (sebaiknya dilakukan oleh teknisi ahli).
g. Terdapat kesalahan pada setingan jumper over clock, hal yang dapat anda lakukan yaitu mensetting ulang clock motherboard anda.
h. Memori rusak, hal ini dapat diperiksa dengan mencoba memori anda pada PC lain, apabila hal yang sama terjadi pada PC itu kemungkinan besar memori anda rusak, hal yang dapat anda lakukan yaitu mengganti memori anda dengan memori yang bagus.
i. Power suplay padam atau rusak total, hal yang dapat anda lakukan yaitu ganti power suplay anda dengan Power suplay yang bagus.
j. Soket power suplay anda longgar atau tidak terpasang, hal yang dapat anda lakukan yaitu periksa soket power suplay dengan benar lalu memasangnya dengan pas.
Demikianlah tutorial kali ini buat teman-teman yang ingin nambahin silahkan aja………..


Jumat, 23 November 2012

Input/Output with files

Input/Output with files

C++ provides the following classes to perform output and input of characters to/from files:

  • ofstream: Stream class to write on files
  • ifstream: Stream class to read from files
  • fstream: Stream class to both read and write from/to files.

These classes are derived directly or indirectly from the classes istream, and ostream. We have already used objects whose types were these classes: cin is an object of class istream and cout is an object of class ostream. Therefore, we have already been using classes that are related to our file streams. And in fact, we can use our file streams the same way we are already used to use cin and cout, with the only difference that we have to associate these streams with physical files. Let's see an example:

1
2
3
4
5
6
7
8
9
10
11
12
// basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}
[file example.txt]
Writing this to a file.


This code creates a file called example.txt and inserts a sentence into it in the same way we are used to do with cout, but using the file stream myfile instead.

But let's go step by step:

Open a file


The first operation generally performed on an object of one of these classes is to associate it to a real file. This procedure is known as to open a file. An open file is represented within a program by a stream object (an instantiation of one of these classes, in the previous example this was myfile) and any input or output operation performed on this stream object will be applied to the physical file associated to it.

In order to open a file with a stream object we use its member function open():

open (filename, mode);

Where filename is a null-terminated character sequence of type const char * (the same type that string literals have) representing the name of the file to be opened, and mode is an optional parameter with a combination of the following flags:

ios::inOpen for input operations.
ios::outOpen for output operations.
ios::binaryOpen in binary mode.
ios::ateSet the initial position at the end of the file.
If this flag is not set to any value, the initial position is the beginning of the file.
ios::appAll output operations are performed at the end of the file, appending the content to the current content of the file. This flag can only be used in streams open for output-only operations.
ios::truncIf the file opened for output operations already existed before, its previous content is deleted and replaced by the new one.

All these flags can be combined using the bitwise operator OR (|). For example, if we want to open the file example.bin in binary mode to add data we could do it by the following call to member function open():

1
2
ofstream myfile;
myfile.open ("example.bin", ios::out | ios::app | ios::binary); 


Each one of the open() member functions of the classes ofstream, ifstream and fstream has a default mode that is used if the file is opened without a second argument:

classdefault mode parameter
ofstreamios::out
ifstreamios::in
fstreamios::in | ios::out

For ifstream and ofstream classes, ios::in and ios::out are automatically and respectively assumed, even if a mode that does not include them is passed as second argument to the open() member function.

The default value is only applied if the function is called without specifying any value for the mode parameter. If the function is called with any value in that parameter the default mode is overridden, not combined.

File streams opened in binary mode perform input and output operations independently of any format considerations. Non-binary files are known as text files, and some translations may occur due to formatting of some special characters (like newline and carriage return characters).

Since the first task that is performed on a file stream object is generally to open a file, these three classes include a constructor that automatically calls the open() member function and has the exact same parameters as this member. Therefore, we could also have declared the previous myfile object and conducted the same opening operation in our previous example by writing:

 
ofstream myfile ("example.bin", ios::out | ios::app | ios::binary);


Combining object construction and stream opening in a single statement. Both forms to open a file are valid and equivalent.

To check if a file stream was successful opening a file, you can do it by calling to member is_open() with no arguments. This member function returns a bool value of true in the case that indeed the stream object is associated with an open file, or false otherwise:

 
if (myfile.is_open()) { /* ok, proceed with output */ }


Closing a file

When we are finished with our input and output operations on a file we shall close it so that its resources become available again. In order to do that we have to call the stream's member function close(). This member function takes no parameters, and what it does is to flush the associated buffers and close the file:

 
myfile.close();


Once this member function is called, the stream object can be used to open another file, and the file is available again to be opened by other processes.

In case that an object is destructed while still associated with an open file, the destructor automatically calls the member function close().

Text files

Text file streams are those where we do not include the ios::binary flag in their opening mode. These files are designed to store text and thus all values that we input or output from/to them can suffer some formatting transformations, which do not necessarily correspond to their literal binary value.

Data output operations on text files are performed in the same way we operated with cout:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// writing on a text file
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream myfile ("example.txt");
  if (myfile.is_open())
  {
    myfile << "This is a line.\n";
    myfile << "This is another line.\n";
    myfile.close();
  }
  else cout << "Unable to open file";
  return 0;
}
[file example.txt]
This is a line.
This is another line.


Data input from a file can also be performed in the same way that we did with cin:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  ifstream myfile ("example.txt");
  if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
      cout << line << endl;
    }
    myfile.close();
  }

  else cout << "Unable to open file"; 

  return 0;
}
This is a line.
This is another line.  


This last example reads a text file and prints out its content on the screen. Notice how we have used a new member function, called good() that returns true in the case that the stream is ready for input/output operations. We have created a while loop that finishes when indeed myfile.good() is no longer true, which will happen either if the end of the file has been reached or if some other error occurred.

Checking state flags

In addition to good(), which checks whether the stream is ready for input/output operations, other member functions exist to check for specific states of a stream (all of them return a bool value):

bad()
Returns true if a reading or writing operation fails. For example in the case that we try to write to a file that is not open for writing or if the device where we try to write has no space left.
fail()
Returns true in the same cases as bad(), but also in the case that a format error happens, like when an alphabetical character is extracted when we are trying to read an integer number.
eof()
Returns true if a file open for reading has reached the end.
good()
It is the most generic state flag: it returns false in the same cases in which calling any of the previous functions would return true.

In order to reset the state flags checked by any of these member functions we have just seen we can use the member function clear(), which takes no parameters.

get and put stream pointers

All i/o streams objects have, at least, one internal stream pointer:

ifstream, like istream, has a pointer known as the get pointer that points to the element to be read in the next input operation.

ofstream, like ostream, has a pointer known as the put pointer that points to the location where the next element has to be written.

Finally, fstream, inherits both, the get and the put pointers, from iostream (which is itself derived from both istream and ostream).

These internal stream pointers that point to the reading or writing locations within a stream can be manipulated using the following member functions:

tellg() and tellp()

These two member functions have no parameters and return a value of the member type pos_type, which is an integer data type representing the current position of the get stream pointer (in the case of tellg) or the put stream pointer (in the case of tellp).

seekg() and seekp()

These functions allow us to change the position of the get and put stream pointers. Both functions are overloaded with two different prototypes. The first prototype is:

seekg ( position );
seekp ( position );

Using this prototype the stream pointer is changed to the absolute position position (counting from the beginning of the file). The type for this parameter is the same as the one returned by functions tellg and tellp: the member type pos_type, which is an integer value.

The other prototype for these functions is:

seekg ( offset, direction );
seekp ( offset, direction );

Using this prototype, the position of the get or put pointer is set to an offset value relative to some specific point determined by the parameter direction. offset is of the member type off_type, which is also an integer type. And direction is of type seekdir, which is an enumerated type (enum) that determines the point from where offset is counted from, and that can take any of the following values:

ios::begoffset counted from the beginning of the stream
ios::curoffset counted from the current position of the stream pointer
ios::endoffset counted from the end of the stream

The following example uses the member functions we have just seen to obtain the size of a file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// obtaining file size
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  long begin,end;
  ifstream myfile ("example.txt");
  begin = myfile.tellg();
  myfile.seekg (0, ios::end);
  end = myfile.tellg();
  myfile.close();
  cout << "size is: " << (end-begin) << " bytes.\n";
  return 0;
}
size is: 40 bytes.


Binary files

In binary files, to input and output data with the extraction and insertion operators (<< and >>) and functions like getline is not efficient, since we do not need to format any data, and data may not use the separation codes used by text files to separate elements (like space, newline, etc...).

File streams include two member functions specifically designed to input and output binary data sequentially: write and read. The first one (write) is a member function of ostream inherited by ofstream. And read is a member function of istream that is inherited by ifstream. Objects of class fstream have both members. Their prototypes are:

write ( memory_block, size );
read ( memory_block, size );

Where memory_block is of type "pointer to char" (char*), and represents the address of an array of bytes where the read data elements are stored or from where the data elements to be written are taken. The size parameter is an integer value that specifies the number of characters to be read or written from/to the memory block.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// reading a complete binary file
#include <iostream>
#include <fstream>
using namespace std;

ifstream::pos_type size;
char * memblock;

int main () {
  ifstream file ("example.bin", ios::in|ios::binary|ios::ate);
  if (file.is_open())
  {
    size = file.tellg();
    memblock = new char [size];
    file.seekg (0, ios::beg);
    file.read (memblock, size);
    file.close();

    cout << "the complete file content is in memory";

    delete[] memblock;
  }
  else cout << "Unable to open file";
  return 0;
}
the complete file content is in memory


In this example the entire file is read and stored in a memory block. Let's examine how this is done:

First, the file is open with the ios::ate flag, which means that the get pointer will be positioned at the end of the file. This way, when we call to member tellg(), we will directly obtain the size of the file. Notice the type we have used to declare variable size:

 
ifstream::pos_type size;


ifstream::pos_type is a specific type used for buffer and file positioning and is the type returned by file.tellg(). This type is defined as an integer type, therefore we can conduct on it the same operations we conduct on any other integer value, and can safely be converted to another integer type large enough to contain the size of the file. For a file with a size under 2GB we could use int:

1
2
int size;
size = (int) file.tellg();


Once we have obtained the size of the file, we request the allocation of a memory block large enough to hold the entire file:

 
memblock = new char[size];


Right after that, we proceed to set the get pointer at the beginning of the file (remember that we opened the file with this pointer at the end), then read the entire file, and finally close it:

1
2
3
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();


At this point we could operate with the data obtained from the file. Our program simply announces that the content of the file is in memory and then terminates.

Buffers and Synchronization


When we operate with file streams, these are associated to an internal buffer of type streambuf. This buffer is a memory block that acts as an intermediary between the stream and the physical file. For example, with an ofstream, each time the member function put (which writes a single character) is called, the character is not written directly to the physical file with which the stream is associated. Instead of that, the character is inserted in that stream's intermediate buffer.

When the buffer is flushed, all the data contained in it is written to the physical medium (if it is an output stream) or simply freed (if it is an input stream). This process is called synchronization and takes place under any of the following circumstances:

  • When the file is closed: before closing a file all buffers that have not yet been flushed are synchronized and all pending data is written or read to the physical medium.
  • When the buffer is full: Buffers have a certain size. When the buffer is full it is automatically synchronized.
  • Explicitly, with manipulators: When certain manipulators are used on streams, an explicit synchronization takes place. These manipulators are: flush and endl.
  • Explicitly, with member function sync(): Calling stream's member function sync(), which takes no parameters, causes an immediate synchronization. This function returns an int value equal to -1 if the stream has no associated buffer or in case of failure. Otherwise (if the stream buffer was successfully synchronized) it returns 0.

Program String Array

// /3 /3 /3 Array /3 /3 /3
#include <iostream>
#include <string>
using namespace std;
void InputData(string (&angka) [3] [2])
{
    string nama;
    for (int a=0;a<3;a++)
    {
        cout << "Masukkan Nama Mahasiswa: "; cin >> angka [a] [0];
        getline (cin, nama);
        cout << "Masukkan Nilai Mahasiswa: "; cin >>angka [a] [1];
        getline (cin,nama);
    }
}
void main ()
{
    string angka [3] [2];
    InputData (angka);
    cout << endl;
    cout << "DATA MAHASISWA";
    cout << endl;
    cout << "\t ******************************** " <<endl;
    cout << "\t|\tNAMA\t|\tNILAI\t|"<<endl;
    cout << "\t ******************************** " <<endl;
    for (int a=0;a<3;a++)
    {
        cout << "\t|\t" << angka [a] [0] << "\t|"<< "\t" << angka [a] [1] << "\t|" << endl;
    }
    cout << "\t ******************************** "<<endl;
    system ("pause");
}

Program Mencari Bilangan Prima

// BILANGAN PRIMA

#include <iostream>
using namespace std;

void main()
{
int n, hitung=0, i=1, a=2;

    cout<<"Enter the n value\t= ";
    cin>>n;
if (a==2)
    {
        cout<<a<<"\n";
        a++;
        i++;
    }
while (i<=n)
    {
   for (int x=2; x<a; x++)
      {

      if (a%x==0)
          {hitung++;}
      }
     
   if (hitung==0)
      {
        cout<<a<<"\n";
        i++;
        a++;
   }
   else if (hitung>0)
      {a++;
      hitung=0;}

   }

return;
}

Senin, 19 November 2012

Motivasi buat yang galau :D

Cinta itu seperti kupu-kupu. Tambah dikejar, tambah lari. Tapi kalau dibiarkan terbang, dia akan datang disaat kamu tidak mengharapkannya. Cinta dapat membuatmu bahagia tapi sering juga bikin sedih, tapi cinta baru berharga kalau diberikan kepada seseorang yang menghargainya. Jadi jangan terburu-buru dan pilih yang terbaik.

Cinta bukan bagaimana menjadi pasangan yang "sempurna" bagi seseorang. Tapi bagaimana menemukan seseorang yang dapat membantumu menjadi dirimu sendiri.

Jangan pernah bilang "I love you" kalau kamu tidak perduli. Jangan pernah membicarakan perasaan yang tidak pernah ada. Jangan pernah menyentuh hidup seseorang kalau hal itu akan menghancurkan hatinya. Jangan pernah menatap matanya kalau semua yang kamu lakukan hanya berbohong.

Hal paling kejam yang seseorang lakukan kepada orang lain adalah membiarkannya jatuh cinta, sementara kamu tidak berniat untuk menangkapnya...

Cinta bukan "Ini salah kamu", tapi "Ma'afkan aku". Bukan "Kamu dimana sih?", tapi "Aku disini". Bukan "Gimana sih kamu?", tapi "Aku ngerti kok". Bukan "Coba kamu gak kayak gini", tapi "Aku cinta kamu seperti kamu apa adanya".

Kompatibilitas yang paling benar bukan diukur berdasarkan berapa lama kalian sudah bersama maupun berapa sering kalian bersama, tapi apakah selama kalian bersama, kalian selalu saling mengisi satu sama lain dan saling membuat hidup yang berkualitas.

Kesedihan dan kerinduan hanya terasa selama yang kamu inginkan dan menyayat sedalam yang kamu ijinkan. Yang berat bukan bagaimana caranya menanggulangi kesedihan dan kerinduan itu, tapi bagaimana belajar darinya.

Caranya jatuh cinta: jatuh tapi jangan terhuyung-huyung, konsisten tapi jangan memaksa, berbagi dan jangan bersikap tidak adil, mengerti dan cobalah untuk tidak banyak menuntut, sedih tapi jangan pernah simpan kesedihan itu.

Memang sakit melihat orang yang kamu cintai sedang berbahagia dengan orang lain tapi lebih sakit lagi kalau orang yang kamu cintai itu tidak berbahagia bersama kamu.

Cinta akan menyakitkan ketika kamu berpisah dengan seseorang lebih menyakitkan apabila kamu dilupakan oleh kekasihMu, tapi cinta akan lebih menyakitkan lagi apabila seseorang yang kamu sayangi tidak tahu apa yang sesungguhnya kamu rasakan.

Yang paling menyedihkan dalam hidup adalah menemukan seseorang dan jatuh cinta, hanya untuk menemukan bahwa dia bukan untuk kamu dan kamu sudah menghabiskan banyak waktu untuk orang yang tidak pernah menghargainya. Kalau dia tidak "worth it" sekarang, dia tidak akan pernah "worth it" setahun lagi ataupun 10 tahun lagi. Biarkan dia pergi...