http://emoticongue.blogspot.com -->

.t.h.e. .l.a.m.p. .p.o.s.t.

Tuesday, January 09, 2007

Artikel C# nggak jelas

Kenapa hari ini banyak artikel C#?
Soalnya aku lagi ngerjain TA-ku di C#, dan setiap ada masalah yang aneh nan lucu ya aku posting ke sini. Yah namanya baru belajaran, maklumlah kalau masalahnya sangat sederhana. Kalau pengen yang rumit-rumit ya nggak di sini bozz...
Cari aja di msdn.microsoft.com

Nanti ada waktunya aku posting masalah Frequent Itemset Mining dengan Apriori sama Closed Itemset. Itu masalah TA yang lagi aku kerjakan. Masalahnya lebih asyik lagi loh...
Artikelnya masih diinkubasi, tunggu tanggal mainnya.

Labels: , ,

Cara membuka dan membaca File di C#

Setelah membrowsing untuk mencari cara untuk membaca file pakai C#, aku akhirnya memutuskan untuk mbuat tutorial sendiri tentang itu.

Studi kasusku adalah bisa mbaca file sebaris trus disimpen dalam variabel string, trus diolah stringnya, kalau sudah selesai mbaca baris berikutnya dan mengulang proses yang sama sampai akhir.

Untuk itu aku manfaatin sebuah class di C# yang bernama StreamReader. Sebenernya ada juga class FileReader untuk melakukan hal yang sama, tapi aku lebih familier dengan StreamReader.

Oke caranya gimana?
Pertama kita harus punya path file yang akan dibaca. Untuk mbuka path file, C# sudah punya sebuah class dialog bernama openFile.
Cara makainya gini :
openFile.ShowDialog();
textBox1.Text = openFile.FileName;
path = textBox1.Text;
Nah baris pertama buat mbuka open file dialog, baris kedua buat ngambil path file yang kita pilih (satu aja), baris ketiga ya nyimpen ke variabel namanya path.

Setelah itu kita bisa mbuka filenya dengan perintah:
StreamReader freader = File.OpenText(path);
Nah, abis gitu kita baca filenya dengan perintah:
string nyoba;
while (freader.EndOfStream==false)
{
buffer = freader.ReadLine();
proses(buffer);
isiFile += buffer;
}
Perintah di atas artinya membaca file, trus ditaruh di string nyoba sampai end of stream.
Kelemahan sintax di atas apa hayo?
Kelemahannya karakter "\n" atau ganti baris dalam file nggak dibaca. kalo pengen ya baris isiFile+= buffer jadi gini:
isiFile += buffer + "\n";
Udah jadi.
Nah studi kasus kedua, gimana kalo kita butuh mbaca semua file langsung, nggak perbaris. Lebih gampang lagi. Nggak perlu panjang-panjang, n nggak perlu looping malah. Cukup:
StreamReader freader = File.OpenText(path);
isiFile = freader.ReadToEnd();
Tuh jadi.
Gampang khan?

Labels: , ,

Cara mempassing parameter by reference di C#

Buat yang biasa dengan C++ melakukan passing parameter by reference di C# akan kebingungan.
Masalahnya sintax gini:
private void change(int &d)
nggak bakalan jalan. Trus pointer dan double pointer yang urakan kayak char **d, yang biasanya dipake untuk merefer string tanpa array, nggak bakalan jalan juga.

Trus gimana?
Caranya simpel pake kata kunci ref. Jadi sintaxnya gini:
private void change(ref int d)
Atau kalau array ya tinggal ditambahin:
private void change(ref int[] d)

Simpel kan?

Labels: , ,

Kesalahan Tipe Data dalam C#

Quick Fix.
Misal kita membuat tipe data float dengan nilai 0.07 seperti ini:
private float x = 0.04;

Maka C# akan menampilkan pesan error:
"Literal of type double cannot be implicitly converted to type float."

maksudnya apa?
Ternyata default yang digunakan untuk C# dalam menyimpan data pecahan adalah double. Dan jika kita meng-assign value seperti diatas maka kita dianggap mencoba untuk mengkonvert dari double ke float, dan itu dianggap suatu kesalahan karena akan terjadi data loss (berhubung memory yang dipakai double lebih besar dari float).

Solusinya?
Sederhana... ubah kode anda menjadi:
private float x = 0.04f;

yang menunjukkan pada C# yang baik bahwa 0.04 itu adalah sebuah float.

Bagaimana dengan mengkonvert dari satu tipe data ke tipe data lain.
Ada 2 cara yang saya tahu (kalo ada yang lain tambahin di komen ya...):
1. pake System.Convert.
Contoh kalo pengen mengubah data di atas jadi double pake:
Double d = System.Convert.Double(x);
2. pake casting kayak C++ atau Java.
Contoh
double d = (double) x;
Konvert itu melempar exception jika error, maka pake try-catch ya...

Labels: , ,