1. Pengertian Sintak, Semantik dan Logika

*      Pengertian Sintak
                Seringkali kita mendengar sintak dalam istilah pemrograman. Namun, terkadang kita tidak mengetahui dengan jelas apa arti sintak sebenarnya.berikut saya coba memaparkan pengertian dari sintak.
                Sintak  sebuah bahasa berhubungan dengan struktur bahasa. Sebagai contoh, untuk membentuk sebuah kalimat yang valid dalam bahasa kita memakai struktur: [subyek] + [kata kerja] + [kata benda]. Dengan memakai struktur ini, kita bisa membentuk kalimat, sebagai contoh: Saya makan nasi. Dalam hubungannya dengan bahasa pemrograman, kita harus memenuhi sintak (baca: aturan struktur bahasa) agar program dapat berjalan. Sebagai contoh, dalam bahasa BASIC, untuk mengassign sebuah variabel dengan sebuah nilai, kita memakai operand ‘=’, tetapi kalau dalam Pascal, kita pakai ‘:=’. Contoh dalam BASIC: a=1, tapi dalam bahasa Pascal, a:=1..
Atau jika lebih spesifik lagi sintak dapat diartikan aturan-aturan peng-code-an struktur suatu bahasa pemograman, ibarat grammar dalam berbahasa Inggris. Setiap jenis bahasa pemograman mempunyai aturan sintak yang berbeda.
*    Pengertian Semantik
                                Semantik sebuah bahasa menggambarkan hubungan antara sintak dan model komputasi. Sederhananya, semantik menjelaskan arti dari program. Analoginya sebagai berikut. Apabila kita memakai sintak [subyek] + [kata kerja] + [kata benda], kita bisa menghasilkan kalimat-kalimat.
Apabila kita mengasilkan kalimat Saya makan nasi, maka kalimat ini memenuhi aturan sintak. Tapi, apabila saya membuat kalimat Saya makan batu, secara sintak kalimat ini sudah benar. Namun, secara semantik, kalimat ini tidak mengandung makna yang berarti.
*      Pengertian Logika
                                Logika pada bahasa pemrograman adalah suatu operasi dengan menggunakan perintah-perintah khusus yang berupa sintak untuk menghasilkan output tertentu. Misalnya pada pemrograman pascal, ada sebuah operasi logika yang disebut operasi not berfungsi untuk membalikan bilangan positif menjadi negatif begitu juga bilangan negatif akan menjadi bilangan positif.
  1. Contoh Kesalahan Sintak, Semantik dan Logika

*      Contoh Kesalahan Sintak
                                Sebuah contoh dari kesalahan sintak pada listing bahasa pemrograman pascal:
program how_long_ur_name; uses wincrt;
var s:real; x:byte;
begin
     write('Nama anda ?'); readln(s);
     x:=length(s);
     writeln('Panjang nama anda ',x,' karakter')
     ;
   end.  
Ketika program ini dijalankan maka program error karena terjadi kesalahan pada penginputan tipe data karena variabel s: real ; seharusnya tipe data variabel s: string ;. Karena tipe data real adalah tipe data yang digunakan  pada tipe data numeric menyangkut bilangan real.
Berikut adalah listing dari bahasa pemrograman pascal yang benar:
program how_long_ur_name; uses wincrt;
var s:string; x:byte;
begin
     write('Nama anda ?'); readln(s);
     x:=length(s);
     writeln('Panjang nama anda ',x,' karakter')
     ;
   end.
*      Contoh Kesalahan Semantik
                                Sangat sulit memang membedakan tiap kesalahan pada sebuah listing program, dan yang ini adalah salah satu contoh kesalahan semantik pada bahasa pemrograman pascal:
program little_down;
uses wincrt;
var s:string; i:integer;
begin
     s:= 'sixiz.com';
     for i:=1 to length(s) do
     begin
          write(s);
          delete(s,10-i,1);
     end;
end.
Sekilas mungkin listing program diatas tidak terlihat jelas kesalahannya. Namun, apabila dicermati dengan teliti nama program diatas adalah little down yang bisa diartikan semakin kebawah semakin kecil. Jika dijalankan listing program ini maka hasil programnya berupa tulisan yang semakin berkurang satu demi satu hurup, tetapi berjejer kesebelah kanan. Tentunya hal ini tidak sesuai dengan jenis programnya.
Hal ini terjadi karena kesalah penulisan write(s); , yang seharusnya writeln(s); Sehingga hasilnya akan sesuai dengan jenis programnya.  
Dan berikut adalah jenis listing bahasa pemrograman pascal yang benar:
program little_down;
uses wincrt;
var s:string; i:integer;
begin
     s:= 'sixiz.com';
     for i:=1 to length(s) do
     begin
          writeln(s);
          delete(s,10-i,1);
     end;
end.

*      Contoh Kesalahan Logika
Dalam hubungannya dengan bahasa pemrograman, kadang ada kalanya seorang programmer tidak bisa mengaitkan sintak dengan model komputasi. Kesalahan logika bisa dengan mudah terjadi.
Sebagi contoh ada bahasa pemrograman sebagai berikut:
if(a=5) {
echo ‘Nilai a=5;
}
Apabila program ini dijalankan, apa yang terjadi? Bergantung bahasa apa yang digunakan. Apabila bahasa yang dipakai adalah bahasa C, maka output yang keluar selalu Nilai a=5, walaupun nilai variabel a sebelumnya selain 5. Kenapa itu bisa terjadi? Itu karena operator ‘=’ dalam bahasa C berarti mengassign sebuah variabel yang ada di sebelah kiri dengan nilai yang ada di sebelah kanan. Dalam bahasa C, secara sintak operasi ini sudah benar.
Tapi, apabila yang dimaksud adalah programmer ingin mengevaluasi nilai variabel a, maka seharusnya memakai operator logika ‘==’. Jadi, program yang sebenarnya menjadi
if(a==5){
echo ‘Nilai a=5;
}