Вот ещё нечитабельная схема:## Код:
```
VAR var: BOOLEAN;
BEGIN
   var := FALSE;
   LOOP
      SomeCode (var); (* нечто многострочное, не содержащее EXIT и RETURN и не меняющее значение var *)
      IF var OR OtherConditions () THEN
         EXIT
      END;
      var := TRUE;
   END;
```
Поди-разгляди, что выполняется этот цикл один - максимум два раза. Цикл не нужен. SomeCode оформляется в отдельную процедуру:## Код:
```
VAR dummy: BOOLEAN;

   PROCEDURE SomeCode (var: BOOLEAN): BOOLEAN;
   BEGIN
      (* нечто многострочное, не содержащее EXIT и RETURN и не меняющее значение var *)
      RETURN var OR OtherConditions ()
   END SomeCode;

BEGIN
   dummy := SomeCode (FALSE) OR SomeCode (TRUE);
```
Значение dummy ингорируется, оно всегда = TRUE. Если не хочется заводить переменную dummy, то можно написать так (дело вкуса):## Код:
```
IF SomeCode (FALSE) OR SomeCode (TRUE) THEN (* do nothing *)
END;
```

Здесь после устранения LOOP объём кода не уменьшается, но, на мой взгляд, повышается ясность.