Ада:
Ну и продублирую, а то мало ли что там с картинкой случится:
-- найти первый комплект без иглы
for i in сундуки'Range loop
заяц := ЗАЯЦ(сундуки(i));
exit when заяц = null;
утка := УТКА(заяц);
exit when утка = null;
яйцо := ЯЙЦО(утка);
exit when яйцо = null;
игла := ИГЛА(яйцо);
exit when игла = null;
end loop;
Еще одно подтверждение тезиса про легион.
Вы поймите, что все разработчики языков шизанулись на
выходе из цикла.
В таких конструкциях получается, что для продолжения цикла нужна
истина в в заголовке цикла и
ложь в условия выхода (exit when). Вот это несовпадение логических знаков и портит всю малину.
Но только тем, у кого есть что портить.
Остальным - пох...