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

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.

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
...
}

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++

Seperti halnya IUDE lainnya DevC++ bisa disetting environmentnya. Untuk menentukan folder librari dan include disetting melalui projectoption->directories.



Untuk menentukan file librari yang diinclude disetting melalui projectoption->param

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