Вниз  Реализация "собственного" яп
- 12.04.2016 / 09:02
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
MoteX, на деле, если у тебя будет такая конструкция:
  1. if (false && a == b && a > c)
то остальные сравнения выполнять не надо.
__________________
 let live
- 12.04.2016 / 09:02
MoteX
  Пользователь

MoteX 
Сейчас: Offline
Витаминыч, что там?)
- 12.04.2016 / 09:06
MoteX
  Пользователь

MoteX 
Сейчас: Offline
aNNiMON, вот ты кстати мне напомнил миллионы лет мучавший меня вопрос:
Как понимать такое выражение?
if ( a=0 and b=0 or c=0 ) thenВ каких случаях оно сработает? У меня просто мозг взрывается при попытке его просчитать :hack: Я всегда все в скобки заключал.

Изменено MoteX (12.04 / 09:07) (всего 1 раз)
- 12.04.2016 / 09:17
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
MoteX, есть такое понятие "приоритет операций". У = приоритет выше, чем у and, а у or - низкий приоритет. Это значит, что a = 0 будет парситься раньше и проблем не возникнет.
Что равносильно:
  1. if ( ((a=0) and (b=0)) or (c=0) )

Порядок разбора будет следующий:
  1. // При a = 0, b = 1, c = 0
  2. a = 0 -> true
  3. b = 0 -> false
  4. true and false -> false
  5. c = 0 -> true
  6. false or true -> true
  7.  
  8. // или так
  9. ( a=0 and b=0 or c=0 )
  10. ( true and b=0 or c=0 )
  11. ( true and false or c=0 )
  12. ( false or c=0 )
  13. ( false or true )
  14. ( true )

__________________
 let live

Изменено aNNiMON (12.04 / 09:23) (всего 3 раза)
- 12.04.2016 / 09:26
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
MoteX, есть такая штука, как приоритет операций. A and B or C ничем принципиально не отличается от A * B + C. Представь что ты это выражение преобразуешь в дерево, тогда чем выше приоритет операции тем ближе к корню будет её узел. Вот в C/C++ у сложения и вычитания приоритет - 6, а умножение/деление - 5.
Примерно так:
A and B or C
  1. or
  2. |----and
  3. |    |---A
  4. |    |---B
  5. |-C

Открыть спойлер

__________________
 don't tread on me

Изменено aRiGaTo (12.04 / 09:26) (всего 1 раз)
- 12.04.2016 / 09:28
MoteX
  Пользователь

MoteX 
Сейчас: Offline
aNNiMON, отлично. Ты внес ясность в разум.
В дополнение к своей идее я додумал следующее
При условии a=10, b=20, c=10
  1. if (a=10 or b=10) and c=10
мы получаем
  1. if (0 or 1) and 0
И затем, что бы не парить код алгоритмами, я просто ставлю вместо and +, а вместо or *. На выходе получаю выражение
(0*1)+0=0 условие выполнено. Надо прокрутить всевозможные варианты. Похоже для себя я изобрел неплохой велосипед.

Изменено MoteX (12.04 / 09:30) (всего 1 раз)
- 12.04.2016 / 09:29
MoteX
  Пользователь

MoteX 
Сейчас: Offline
aRiGaTo, вот блин прям как по дорожке все идет)
- 12.04.2016 / 09:34
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
__________________
 let live
- 12.04.2016 / 09:51
MoteX
  Пользователь

MoteX 
Сейчас: Offline
aNNiMON, ну у меня немного по-своему получилось. Но мысль похожая. Я именно нулевые значения принимая как правду. Прочитал только начало, остальное дома) Уехал)
- 12.04.2016 / 16:06
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Цитата MoteX:
Витаминыч, что там?)
исходник бейсика на бейсике :кек2:
__________________
 わからない!!
Наверх  Всего сообщений: 183
Фильтровать сообщения
Поиск по теме
Файлы топика (3)