> -- Сергей Губанов писал(а):
> Кстати, большинство вложенных IF можно раскрутить в линейную цепочку с использованием ELSIF если сначала проверять "противное" условие.О! Спасибо за подсказку!
Пример:## Код:
```
IF A THEN
   IF B THEN
      a;
   ELSE
      b;
   END;
ELSE
   c;
END;
```
Превращаем в:## Код:
```
IF ~A THEN
   c;
ELSIF ~B THEN
   b;
ELSE
   a;
END;
```
Жаль, что не получится между проверкой A и проверкой B вставить какое-то действие, например, присваивание. Например, если B = (item = NIL), и item можно присвоить только если A = TRUE:## Код:
```
IF list # NIL THEN
   item := list.first;
   IF item # NIL THEN
      a;
   ELSE
      b;
   END;
ELSE
   c;
END;
```
Не преобразуется.

Разве что завести процедуру GetItem (list: List; VAR res: Item): BOOLEAN, но это редко стоит выигранного отступа.