http://vitas.matfyz.cz/cv/run-A-bomb.html
Varovný a odstrašující protipříklad na větu "středník najde kompilátor".
procedure run_A_bomb(who:Tperson); begin case who.hodnost in kapitan: writeln('zdechni'); plukovnik: writeln('nemáš nárok'); generalmajor: if who.iq < 20 then writeln('ne, pane generalmajore'); else really_run_A_bomb; end; end; |
Komentář: žádný kapitan ani plukovník nemá právo spustit A-bombu, ale ke každé šarži se chceme chovat různě slušně. (S nižšími hodnostmi se ani nebavím). U generálmajora, který jediný má právo A-bombu spustit se ještě ujistíme, že má dostatečné IQ. Když ne, slušně odmítneme. V opačném případe spusť A-bombu.
Jenže díky středníku (ten červený a podtržený) ono else
nepatří k
if
ale k case
. Takže a A-bombu spustí kterýkoli
vojín-uklízeč. Což asi původně programátor nechtěl.
http://vitas.matfyz.cz/cv/run-A-bomb.html