В одном месте согласился на REPEAT..UNTIL. Первоначальный код:## Код:
```
LOOP IF (Files.IsDirectory * dp.attr = {}) OR ((dp.res # '.') & (dp.res # '..')) THEN RETURN FALSE ELSIF ~FindNext (dp) THEN EXIT END END;
RETURN TRUE
```
(Да-да, LOOP в одну строчку.)
Схема:## Код:
```
LOOP
   IF Condition () THEN
      RETURN FALSE
   ELSIF ~Next () THEN
      EXIT
   END
END;
RETURN TRUE
```
Добавил переменную результата res: BOOLEAN и получил:## Код:
```
REPEAT
   res := Condition ();
UNTIL res OR ~Next ();
RETURN ~res
```
В принципе, можно было через WHILE, но не захотелось Condition дублировать или выносить в отдельную процедуру. Вот как мог бы выглядеть WHILE:## Код:
```
res := Condition ();
WHILE ~res & Next () DO
   res := Condition ();
END;
RETURN ~res
```
