OberonCore
https://forum.oberoncore.ru/

HALT-стопор при отсутствующем ELSE
https://forum.oberoncore.ru/viewtopic.php?f=82&t=3484
Страница 2 из 2

Автор:  Comdiv [ Четверг, 08 Март, 2018 20:33 ]
Заголовок сообщения:  Re: HALT-стопор при отсутствующем ELSE

Евгений Темиргалеев писал(а):
Когда идёт последовательный отбор всех предполагаемых вариантов IF ... ELSIF ... и ветка ELSE в них не входит, нужно вручную ставить стопор, типа HALT(100).
Код:
ASSERT((a IN {0..1}) & (b IN {0..1}), 20);
IF (a = 1) & (b = 1) THEN
  ...
ELSIF (a = 0) & (b = 1) THEN
  ...
ELSIF (a = 1) & (b = 0) THEN
  ...
ELSE (* прочие варианты не предполагаются по логике программы *)
  HALT(100)
END

Я предпочитаю такой вариант, хотя не утверждаю, что он лучше в любых случаях.
Код:
ASSERT((a IN {0..1}) & (b IN {0..1}), 20);
IF (a = 1) & (b = 1) THEN
  ...
ELSIF (a = 0) & (b = 1) THEN
  ...
ELSE ASSERT((a = 1) & (b = 0));
  ...
END

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/