http://vitas.matfyz.cz/cv/run-A-bomb.html

run-A-bomb.pas

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.


Zpět: http://vitas.matfyz.cz/cv/run-A-bomb.html