sebuah tempat menulis pengalaman tentang pemrograman, sebagian besar adalah kritik oto kritik. semoga bermanfaat bagi semua.
15 Oktober 2010
Komentar dalam program
Komentar dalam program seharusnya menjelaskan "apa maksud dari program", bukan "apa yang dilakukan program".
13 Oktober 2010
functor/3 dan arg/3 di prolog
Silahkan coba kode berikut:
$ functor(A,int,1), arg(1,A,N).
A = int(N) ?
yes
$ functor(A,int,1), arg(1,A,N).
A = int(N) ?
yes
15 Mei 2009
Oh switch!
switch adalah perintah yang sangat primitif. Untuk programmer pemula pada setiap case diwajibkan menuliskan breakA demi keselamatan dan kemudahan analogi penulisan sintaks dengan deretan if-then-else.
Namun di dunia nyata, programmer yang sebenarnya akan menggunakan switch pada kemampuan aslinya. Perhatikan kode berikut, dimana break tidak digunakan:
int main(int argc, char** args){
int a=atoi(args[1]);
printf("%s",args[1]);
switch(a){
case 0:
printf("0");
case 1:
printf("1");
case 2:
printf("2");
default:
printf("def");
}
return 0;
}
Untuk mengerti hal ini sedikit diperlukan sedikit "sejarah".
Pada pemograman assembly atau bahasa buruk lainnya(fortran, basic, c juga) ada perintah goto ke suatu label. Inilah sebenarnya yang terjadi terhadap switch dan case. switch adalah goto dan case adalah label. Oleh karena semantik switch yang mirip goto itulah maka semantik ini jarang/tidak diajarkan buat programmer pemula.
Jadi sekali switch menemukan case yang sesuai, kode-kode case dibawahnya akan dieksekusi seperti biasa. Dalam kata lain case yang cocok adalah awal eksekusi program. Karena itu diperlukan break agar setelah satu case selesai dieksekusi program langsung keluar dari switch.
Namun di dunia nyata, programmer yang sebenarnya akan menggunakan switch pada kemampuan aslinya. Perhatikan kode berikut, dimana break tidak digunakan:
int main(int argc, char** args){
int a=atoi(args[1]);
printf("%s",args[1]);
switch(a){
case 0:
printf("0");
case 1:
printf("1");
case 2:
printf("2");
default:
printf("def");
}
return 0;
}
Untuk mengerti hal ini sedikit diperlukan sedikit "sejarah".
Pada pemograman assembly atau bahasa buruk lainnya(fortran, basic, c juga) ada perintah goto ke suatu label. Inilah sebenarnya yang terjadi terhadap switch dan case. switch adalah goto dan case adalah label. Oleh karena semantik switch yang mirip goto itulah maka semantik ini jarang/tidak diajarkan buat programmer pemula.
Jadi sekali switch menemukan case yang sesuai, kode-kode case dibawahnya akan dieksekusi seperti biasa. Dalam kata lain case yang cocok adalah awal eksekusi program. Karena itu diperlukan break agar setelah satu case selesai dieksekusi program langsung keluar dari switch.
06 September 2008
prioritas operator
Ketika menggunakan array dinamik sebagai parameter output seringkali programmer lupa dengan prioritas operator.
void fill(int**a){
...
*a[i]=X
...
}
Prioritas [] lebih tinggi dibandingkan *, sehingga kode yg dihasilkan sebenarnya adalah *(a[i]). Tentulah ini jadi masalah, padahal yang dimaksudkan adalah (*a)[i]=X.
Solusinya tuliskan saja secara eksplisit untuk mengikat operator * pada variable a
void fill(int**a){
...
(*a)[i]=X
...
}
void fill(int**a){
...
*a[i]=X
...
}
Prioritas [] lebih tinggi dibandingkan *, sehingga kode yg dihasilkan sebenarnya adalah *(a[i]). Tentulah ini jadi masalah, padahal yang dimaksudkan adalah (*a)[i]=X.
Solusinya tuliskan saja secara eksplisit untuk mengikat operator * pada variable a
void fill(int**a){
...
(*a)[i]=X
...
}
24 September 2007
Mencetak kode program
Lihat gambar diatas. Kode program ini dihasilkan oleh lgrind dan latex. lgrind digunakan untuk menghasilkan kode latex dari program, selanjutnya dijadikan pdf oleh latex. selanjutnya siap di print.
Dimungkinkan pengaturan penomoran baris, pemunculan nama fungsi/prosedur, dan jenis font. Sangat menarik dan lebih enak dibaca.
Konfigurasi Dev C++
17 September 2007
Setting Visual C+
Ada dua hal penting dalam proses kompilasi dan linking, yaitu lokasi include files dan library files. Pada Visual C++ lokasi tersebut ditentukan pada option.

Selanjutnya file yang diinclude bisa diakses dengan #include, dan file yang diperlukan untuk library bisa diakses dengan menambahkan file library yang diperlukan pada setting project.


Nb: IUDE=Integrated/Unintegrated Development Environment
Selanjutnya file yang diinclude bisa diakses dengan #include, dan file yang diperlukan untuk library bisa diakses dengan menambahkan file library yang diperlukan pada setting project.
Nb: IUDE=Integrated/Unintegrated Development Environment
Langganan:
Postingan (Atom)