Страница 1 из 1

оператор if

СообщениеДобавлено: 03.06.2012 16:52:14
absdjfh
Это не относится именно к Free Pascal, скорее, к паскалю вообще.
Рассмотрим такой оператор:
Код: Выделить всё
if A then
  if B then
    proc1
  else
    if C then
      proc2
else
  proc3;

Предположим, что условие A не выполнятся. Тогда, как это видно из структуры кода, должна выполняться процедура proc3.
На самом деле, ничего не выполняется, и вот почему:
Код: Выделить всё
if A then
  if B then
    proc1
  else
    if C then
      proc2
    else
      proc3;

Код - один и тот же, но здесь по структуре кода не должно выполняться ничего (так и происходит).
Проблему можно решить, добавив пустую ветку else:
Код: Выделить всё
if A then
  if B then
    proc1
  else
    if C then
      proc2
    else
else
  proc3;

Но это делает код непонятным. Вопрос: как исправить код правильно?

Re: оператор if

СообщениеДобавлено: 03.06.2012 16:54:49
Максим
Пользоваться волшебными операторными скобками begin и end.

Re: оператор if

СообщениеДобавлено: 03.06.2012 16:57:19
absdjfh
да, все верно, спасибо!

Re: оператор if

СообщениеДобавлено: 03.06.2012 17:30:26
Ism
Там еще фигня, если условий больше одного , то нужно заключать в скобки , иначе глюки
if (A=1) or (b=1) then

Re: оператор if

СообщениеДобавлено: 04.06.2012 14:13:20
vada
Предположим, что условие A не выполнятся. Тогда, как это видно из структуры кода, должна выполняться процедура proc3.

Код: Выделить всё
if C then
      proc2;

; поможет
Код: Выделить всё
if C then
      proc2
    else

Но это делает код непонятным.


Как уже сказал Максим begin и end вас спасет.