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