Szemantika

A Programozás Wiki wikiből

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