оператор if

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

оператор if

Сообщение absdjfh » 03.06.2012 16:52:14

Это не относится именно к 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;

Но это делает код непонятным. Вопрос: как исправить код правильно?
absdjfh
новенький
 
Сообщения: 60
Зарегистрирован: 21.01.2012 13:59:00

Re: оператор if

Сообщение Максим » 03.06.2012 16:54:49

Пользоваться волшебными операторными скобками begin и end.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: оператор if

Сообщение absdjfh » 03.06.2012 16:57:19

да, все верно, спасибо!
absdjfh
новенький
 
Сообщения: 60
Зарегистрирован: 21.01.2012 13:59:00

Re: оператор if

Сообщение Ism » 03.06.2012 17:30:26

Там еще фигня, если условий больше одного , то нужно заключать в скобки , иначе глюки
if (A=1) or (b=1) then
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: оператор if

Сообщение vada » 04.06.2012 14:13:20

Предположим, что условие A не выполнятся. Тогда, как это видно из структуры кода, должна выполняться процедура proc3.

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

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

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


Как уже сказал Максим begin и end вас спасет.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru