diff --git a/Tasks.md b/Tasks.md index c59315f..a103aa3 100644 --- a/Tasks.md +++ b/Tasks.md @@ -160,3 +160,29 @@ output a*b; // {x-1, x>0} отобразить полученные интервалы значений на интервалы разрядностей в битах, а потом и на решётку из 6 типов из задания. Для каждого из них необходимо указать интервалы значений и в этом случае при помощи widening можно будет свести решётку к тому, что требуется по заданию + +## Lec #6 + +### Напишите вариант программы, для которой анализ открытости-закрытости файлов не показывает корректный результат + +``` + var flag; + flag = input(); + + if (flag) { + open(); + } + // ... + if (flag) { + close(); + } +``` + +С точки зрения семантики TIP, `0 = false`, все другие значения — `true`. А с точки зрения наших +правил `flag` может быть только `0` или `1`. Тут же `flag` может быть произвольным числом. +По этому, анализ из лекции не сработает в этом случае + +### Предложите, каким образом можно решить описанные в лекции проблемы в этой ситуации + +Можно расширить правила, чтобы учесть там два случая: `flag = 0` и `!(flag = 0)`. В этом случае +всё должно заработать правильно