next up previous contents
Next: Runtime error v protected módu Up: Ukazatele Previous: Porovnávání ukazatelů, které ukazují   Obsah

Zkrácené vyhodnocování logických výrazů a ukazatele

V Borland Pascalu máte možnost používat zkrácené nebo úplné vyhodnocování logických výrazů. V praxi zkrácené vyhodnocování znamená, že když je jasný výsledek logické operace (např. (true or false or false or false)), tak se s vyhodnocováním takového výrazu přestane. Je jasné, že se tato možnost využívá pro urychlení programu.

Musíme si ale uvědomit, že toto se hodí jenom pro málokterý program. Často totiž mají logické výrazy nějaké vedlejší efekty. Vezměme si jenom možnost, že v takovém výrazu voláme funkce a testujeme jejich výsledky. Tyto funkce mohou měnit nějakým způsobem stav programu - říkáme, že mají vedlejší efekty. Vzhledem k tomu, že často ani není zaručeno pořadí vyhodnocování logických výrazů, je lepší se na zkrácené vyhodnocování výrazů nespoléhat a místo něj používat vyhodnocování úplné.

Je zajímavé, že začínajícím programátorům se zdá zkrácené vyhodnocování přirozenější. Často se na něj spoléhají i při zapnutém úplném vyhodnocování. Zvláště ve spojení s ukazateli vzniká výbušná směs. Prohlédněte si následující příklad:

  if (list <> nil) and (list^.next = list2) then ...

Pokud proměnná list bude nil, pak program skončí v chráněném režimu s runtime error. Je to proto, že při úplném vyhodnocování se vykoná i druhá část logického výrazu. V tomto případě pak bude tento kód šahat do paměti přes nil.


next up previous contents
Next: Runtime error v protected módu Up: Ukazatele Previous: Porovnávání ukazatelů, které ukazují   Obsah
David Martinek 2002-10-01