Tampilkan postingan dengan label codes. Tampilkan semua postingan
Tampilkan postingan dengan label codes. Tampilkan semua postingan

Selasa, 06 November 2012

Membaca Isi File (Full Version)

Baiklah, berhubung banyak yang menagih janji yang pernah saya utarakan pada buku saya yang pertama, kali ini saya akan membahas tentang bagaimana cara untuk membaca seluruh isi file dan menampilkannya ke std::output.

Untuk kode lengkap, Anda dapat mengunduh langsung pada tautan yang disertakan pada akhir post ini. Jadi pada post ini, kita hanya akan membahas bagian penting dari aplikasi ini. Di bawah ini adalah potongan kode (snippet) dari aplikasi kita.

while ( (karakter = fgetc(inFile)) != -1)
{
    cout << karakter;
}

Pada snippet diatas, karakter adalah variable bertipe char dan inFile adalah pointer dari FILE. Disini, hal yang perlu diperhatikan adalah fungsi fgetc(). Fungsi fgetc() ini merupakan fungsi yang mengambil karakter yang ditunjuk oleh penunjuk karakter pada file yang dibuka oleh fungsi fopen(). Pada saat dibuka pertama kali, penunjuk karakter ini menunjuk karakter pertama atau ke-0.

Keunikan dari fungsi fgetc() ini, setelah fungsi ini mengambil karakter yang ditunjuk dan me-return-kannya, fungsi ini akan menggeser penunjuk ke karakter selanjutnya. Jadi semisal ada kata “jaipong” dan pointer saat itu menunjuk ke karakter ‘i’, setelah fungsi fgetc() dipanggil dan mengembalikan nilai ‘i’, pointer akan digeser untuk menunjuk karakter ‘p’.

 Jika penunjuk menunjuk akhir dari file (end of file) maka fungsi fgetc() ini akan mengembalikan nilai -1. Untuk mengatur posisi dari penunjuk, Anda dapat menggunakan fungsi fseek(). Berikut adalah penampakan dari hasil eksekusi program.


Saya menggunakan contoh lirik lagu noah – separuh aku karena sepertinya lagu tersebut memang sedang ngetrend haha.

Oh ya, kalau memang ada masukan atau saran tentang apa yang harus saya tulis atau apa yang harus saya perbaiki kedepannya, kirim saja email ke rdiearth@yahoo.com. Saya sering bingung mau nulis apa jadinya saya anggurin blog ini dalam waktu yang cukup lama.

Oke sekian dari saya, semoga dapat membantu.

Link dowload.

Minggu, 11 Maret 2012

Time To Die

Ini adalah sebuah aplikasi yang digunakan untuk melakukan count down to shut down. Jadi Anda tinggal memasukkan berapa jam : menit : detik sebelum komputer Anda melakukan shut down secara otomatis.

Aplikasi ini saya buat secara iseng, karena saya malas menghapal syntax dari perintah shutdown di MS-Windows. Alasan lainnya, saya sering mendengar lagu sebelum tidur sementara komputer saya masih menyala. Karena itu, saya membuat aplikasi ini.

Jika Anda tertarik, Anda dapat mengunduh source code dari aplikasi ini disini. Silakan jika Anda ingin mengembangkan atau memodifikasinya.

Semoga bermanfaat : )

Minggu, 11 September 2011

Class String

Dalam dunia pemrograman C/C++, masalah string merupakan salah satu momok yang cukup menakutkan. Tidak jarang programmer yang menyerah sebelum 'berperang' menaklukan medan algorithma sebuah aplikasi yang hendak dibuat. Kebanyakan dari para surrender adalah para programmer yang hendak membuat aplikasi-aplikasi yang membutuhkan pengolahan string.

Di dalam C/C++, string direpresentasikan dalam dua bentuk yaitu: array of char dan class string. Untuk kesederhanaan (sederhana tidak selalu mudah) dan kompatibilitas dengan bahasa C, para hacker biasanya menggunakan string dalam bentuk array of char. Selain karena mereka tidak perlu terlalu khawatir dengan masalah buffer overflow, mereka juga tidak banyak melakukan pengolahan string.

Lain halnya dengan para programmer yang membut aplikasi yang dapat digunakan sehari-hari. Kebanyakan dari mereka harus berurusan dengan pengolahan string. Selain itu, masalah buffer overflow juga menjadi momok yang sangat menakutkan bagi mereka karena apabila aplikasi yang mereka buat berhasil di hack, maka hilanglah kepercayaan user yang berarti turunnya profit mereka.

Nah untuk mengatasi masalah tersebut, sudah sejak lama pengembang bahasa C++ mengembangkan suatu class yang dapat digunakan secara fleksibel untuk melakukan pengolahan string yaitu class string.

Karena pembahasan tentang class string ini terlalu panjang-lebar, maka saya sengaja membuat tutorial tersebut menjadi sebuah e-book yang dapat Anda download disini.

Oke, selamat membaca dan jangan lupa tinggalkan komentar jika terdapat kesalahan dan keburukan dalam tulisan tersebut.

NS.

Jumat, 12 Agustus 2011

Simple Encryption Menggunakan XOR

XOR adalah operasi logika per-bit (bitwise) yang membandingkan dua buah bit yang apabila salah satunya bernilai benar, maka hasil akhir operasi XOR ini adalah benar. Namun apabila kedua bit yang dibandingkan bernilai salah atau keduanya bernilai benar, maka hasil akhirnya adalah salah.

Untuk lebih jelasnya perhatikan tabel kebenaran berikut:

XYX^Y
110
101
011
000


Keunikan dari perintah ini adalah, apabila kita melakukan operasi XOR dua kali terhadap suati bit (dengan operand yang sama), maka hasil akhirnya akan kembali ke bit semula.

XYX^Y(X^Y)^Y
1101
1011
0110
0000


Terlihat, pada contoh di atas, ketika bit X di XOR-kan dengan Y, kemudian hasilnya di XOR-kan lagi dengan Y maka akan menghasilkan bit X. Nah sifat inilah yang dapat digunakan untuk melakukan enkripsi sederhana.

Misal terdapat karakter A = 01000001 di XOR kan dengan 10000000 maka hasilnya akan menjadi 11000001 atau karakter dan jika di XOR kan lagi, maka akan kembali menjadi 01000001 atau A lagi.

Oke daripada bingung, kita lihat contoh nyatanya saja. Perhatikan kode berikut.

// ED-Xor - Melakukan enkripsi-dekripsi dengan menggunakan
//          operasi bitwise dengan operator XOR (^)
#include <iostream>
using namespace std;

void EncDecXOR(char*, int);
const int key = 199; // Key untuk enkripsi

int main()
{
  char buffer[1024]; // Penampung input. maximum 1024 karakter

  cout << "Masukan string yang akan di Enkripsi: ";

  // Masukan input string dari standar output ke buffer[]
  cin.getline(buffer, 1024-1);

  EncDecXOR(buffer, key); // Enkripsi string di buffer[]

  cout << "Hasil Enkripsi : " << buffer << endl;

  EncDecXOR(buffer, key); // Dekripsi string di buffer[]

  cout << "Hasil Deksripsi : " << buffer << endl;

  system("PAUSE");
  return 0;
}

// EncDecXOR() - Melakukan enkripsi-dekripsi dengan menggunakan XOR
//               berdasarkan key yang ditentukan oleh user
void EncDecXOR(char* szString, int nKey)
{
  for(int i=0; szString[i]; i++)
  {
    szString[i] = szString[i] ^ nKey;
  }
}


Perhatian langsung kita fokuskan saja pada fungsi EncDecXOR(). Pada fungsi tersebut, terdapat looping yang akan menjelajahi setiap karakter dari string yang ditunjuk oleh pointer szString. Nah pada setiap karakter, akan dilakukan operasi XOR dengan nilai nKey dan kemudian hasilnya akan dimasukan lagi ke variabel yang ditunjuk oleh pointer szString.

Jadi pada contoh diatas, nilai dari buffer, setelah fungsi ini dipanggil, akan berubah menjadi string dalam bentuk terenkripsi. Ketika fungsi EncDecXOR() dipanggil lagi dengan parameter yang sama, baru nilai buffer akan kembali seperti semula.

Jika kode di atas dieksekusi, maka tampilannya adalah sebagai berikut:

Masukan string yang akan di Enkripsi: Muhammad Nazaruddin
Hasil Enkripsi                      : è▓»ª¬¬ªúτëª╜ª╡▓úú«⌐
Hasil Deksripsi                     : Muhammad Nazaruddin
Press any key to continue . . .

Demikian tutorial singkat dari saya, Anda dapat memberikan komentar apabila terdapat kesalahan atau jika Anda kurang paham terhadap penjelasan saya diatas. Oke, sampai jumpa di artikel berikutnya .

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | belt buckles