Szemantika
Egy kódrészlet szemantikájának (jelentésének) a kódrészlet által végrehajtott feladatot nevezzük. Például a a := b+c; Pascal utasításnak ugyanaz a szemantikája, mint a a = b+c; C utasításnak. Ha egy változót vagy függvényt átnevezünk egy új, még nem használt névre (beleértve az összes hívás helyét), akkor a program szemantikája nem változik.
Szemantikai hibának nevezzük az olyan esetet amikor a programunk írásakor bár betartjuk az adott nyelv szabályait, a programunk mégis helytelen eredményt produkál. (Nem az a jelentése, mint amit szerettünk volna.) Például megírunk egy egyszerű programot, a programunk szintaktikailag helyes, viszont az utasítások sorozata a megoldandó probléma megoldásának szempontjából helytelen.
Például Pascalban töltsünk fel egy rekord típusú változót, majd írassuk ki az eredményt. A rekord típusnak két mezeje legyen név és sorszám. Ebben a példában szándékosan vétünk szemantikai hibát.
Program szemantikai_hiba;
Uses Crt;
Type
newRecordType = Record
name:String;
num:Byte;
End;
Var
person: newRecordType;
Begin
{person feltöltése adatokkal}
With person Do Begin
Write('Give me the name of the person: '); {pl: Móricka}
ReadLn(name);
Write('And last, add a new number to that: '); {pl: 13}
ReadLn(num);
End;
{szemantikai hiba szándékosan}
WriteLn('Name: ', person.num);
WriteLn('Num : ', person.name);
ReadLn;
End.
A program futásának eredménye:
Give me the name of the person: Móricka And last, add a new number to that: 13 Name: 13 Num : Móricka