next up previous contents
Next: Neinicializované proměnné Up: Obecné programátorské chyby Previous: Obecné programátorské chyby   Obsah

Nesprávné používání logických výrazů

Pro logické výrazy existuje v Pascalu datový typ boolean. Tento datový typ má pouze dvě hodnoty - true a false. Hodnoty tohoto typu lze získat pomocí logických operátorů and, or a not. Dále pomocí porovnávacích operátorů <, >, =, <>, <=, >=.

Častou chybou je zneužívání příkazu if pro přiřazení logické hodnoty do proměnné.

if znak = #27 then konec := true else konec := false;
Toto jde mnohem efektivněji přepsat takto:
konec := znak = #27;
nebo ještě přehledněji takto:
konec := (znak = #27);

Další chybou je porovnávání logických proměnných s konstantami true a false v podmíněných příkazech.

if konec = true then halt(0);
Touto konstrukcí nutíte překladač, aby vygeneroval zbytečný kód, protože bude logický výraz vyhodnocovat dvakrát. Správně je to takto:
if konec then halt(0);

Samozřejmě můžete namítnout, že moderní překladače si s podobným kódem poradí a výsledek bude stejně efektivní v obou případech. To je pravda, pokud používáte optimalizující překladač. Obecně ale platí, že byste se měli snažit vytvářet rozumně efektivní zdrojový kód. Ve výše uvedených příkladech vás to nestojí téměř žádné úsilí.

Mimochodem - podle takovýchto drobností se spolehlivě pozná začátečník od programátora.



David Martinek 2002-10-01