|
|
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Пишу в С под микроконтроллер. я хочу выполнять разные задачи в камне. скажем включи вентилятор после 17:00 если температура больше 30* C и выключи его после 22:00 или если температура упала ниже 27* C. я бы мог записать в терминале. Код: plaintext 1. 2. это легко распарсить в структуру и потом проверить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. и потом заполнить (это псевдо код чтоб не усложнять. в реале немного подругому.) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. и потом для условия time >= 17:00 AND temp > 30 out1 = 1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ну и похожим образом для второго условия. но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот тут я впал в ступор - time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 как хранить и обрабатывать логические группы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 10:55 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. Что будет при таких данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:32 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima T Код: sql 1. 2. Что будет при таких данных? мда. вопрос поставлен верно. тут наверно надо выставлять границы time>17:00 and time<18:00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:37 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Храни в массиве в Польской нотации и напиши свой вычислятор. Это не не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:50 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7как хранить и обрабатывать логические группы? Начать можно с подхода "по-дилетантски". Снять нагрузку с парсера и переложить её на оператора. Т.е. пойти по пути разбиения на элементарные выражения. И трансформировать jenya7time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 в вид time > 17:00 => memory1 temperature > 30 => memory2 in1 = 1 => memory3 memory2 AND memory3 => memory2 memory1 OR memory2 => memory1 memory1 IS TRUE => SET out1=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:55 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima TХрани в массиве в Польской нотации и напиши свой вычислятор. Это не не сложно. пользователь ничего не знает о польской нотации и програмировании. он может написать простое логическое условие понятное каждому. и потом зачем влезать в - форты, стеки, польские нотации - это все прекрасно но есть место и для других решений. мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:57 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7пользователь ничего не знает о польской нотации и програмировании.На калькуляторе он считать умеет? ячейкой памяти на нём пользоваться умеет? этой квалификации достаточно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:03 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7как хранить и обрабатывать логические группы? Начать можно с подхода "по-дилетантски". Снять нагрузку с парсера и переложить её на оператора. Т.е. пойти по пути разбиения на элементарные выражения. И трансформировать jenya7time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 в вид time > 17:00 => memory1 temperature > 30 => memory2 in1 = 1 => memory3 memory2 AND memory3 => memory2 memory1 OR memory2 => memory1 memory1 IS TRUE => SET out1=1 вот тут как раз затык :) как знать програмно что memory2 AND memory3 - это одна группа а memory1 OR memory2 вторая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:03 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7пользователь ничего не знает о польской нотации и програмировании.На калькуляторе он считать умеет? ячейкой памяти на нём пользоваться умеет? этой квалификации достаточно... у меня нет никакой математики. только логические условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:05 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima TХрани в массиве в Польской нотации и напиши свой вычислятор. Это не не сложно. пользователь ничего не знает о польской нотации и програмировании. он может написать простое логическое условие понятное каждому. и потом зачем влезать в - форты, стеки, польские нотации - это все прекрасно но есть место и для других решений. мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его. При чем тут пользователь? Вопрос стоял так jenya7но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот и парси то что ввел пользователь в польскую нотацию, а при проверках вычисляй. Можешь просто парсить каждый раз, но с предобработкой быстрее. ИМХУ тут код не сложнее твоего будет. Но универсальный, любое выражение пользователя в такую структуру впишется. PS Akina, по сути тоже самое предлагает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:09 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7пропущено... пользователь ничего не знает о польской нотации и програмировании. он может написать простое логическое условие понятное каждому. и потом зачем влезать в - форты, стеки, польские нотации - это все прекрасно но есть место и для других решений. мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его. При чем тут пользователь? Вопрос стоял так jenya7но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот и парси то что ввел пользователь в польскую нотацию, а при проверках вычисляй. Можешь просто парсить каждый раз, но с предобработкой быстрее. ИМХУ тут код не сложнее твоего будет. Но универсальный, любое выражение пользователя в такую структуру впишется. PS Akina, по сути тоже самое предлагает. боюсь польскую нотацию мне не потянуть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:13 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7боюсь польскую нотацию мне не потянуть. :) Но в конце-концов именно ее ты и "изобретешь" Все придумано до нас :) Почитай про Обратную польскую запись Там все вплоть до алгоритмов как из обычной преобразовать. Примеры кода там же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:23 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Если смущает что у тебя >=, OR, AND а там +,- и т.д. рассматривай >=, OR, AND как такие же действия как и +,- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:31 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7как знать програмно что memory2 AND memory3 - это одна группа а memory1 OR memory2 вторая.ЗАЧЕМ? То, что я привёл - это именно то, что оператор должен передать контроллеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:39 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7как знать програмно что memory2 AND memory3 - это одна группа а memory1 OR memory2 вторая.ЗАЧЕМ? То, что я привёл - это именно то, что оператор должен передать контроллеру. я понял. да это неплохое решение. но дело в том что я не хочу сильно загружать пользователя. ему должно быть максимально комфортно. представте себе что вы купили какой нибудь прибор и вам предлагают писать там скрипты чтоб запустить его а вы на минуточку не програмист а водитель автобуса. я немного утрирую но дрифт такой. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:00 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7, как устроен пользовательский интерфейс? физически ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:06 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7представте себе что вы купили какой нибудь прибор и вам предлагают писать там скрипты чтоб запустить его а вы на минуточку не програмист а водитель автобуса. Пример некорректен. jenya7дело в том что я не хочу сильно загружать пользователя. ему должно быть максимально комфортно.Ну так и сделайте ему комфортный интерфейс программирования. С унифицированными блоками и конструкциями, отслеживанием, автогенерацией, контекстной справкой, эмуляцией выполнения с отладкой... А если оператор, в должностные обязанности которого входит программирование контроллера, не умеет этого делать и неспособен во вменяемые сроки научиться - надо ставить вопрос о его профнепригодности, а не подтирать ему задницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:37 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7, как устроен пользовательский интерфейс? физически обычный терминал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:56 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7представте себе что вы купили какой нибудь прибор и вам предлагают писать там скрипты чтоб запустить его а вы на минуточку не програмист а водитель автобуса. Пример некорректен. jenya7дело в том что я не хочу сильно загружать пользователя. ему должно быть максимально комфортно.Ну так и сделайте ему комфортный интерфейс программирования. С унифицированными блоками и конструкциями, отслеживанием, автогенерацией, контекстной справкой, эмуляцией выполнения с отладкой... А если оператор, в должностные обязанности которого входит программирование контроллера, не умеет этого делать и неспособен во вменяемые сроки научиться - надо ставить вопрос о его профнепригодности, а не подтирать ему задницу. это расчитано на обычного пользователя. я сделаю со временем десктопную апликацию но нужно дать возможность работать с обычного терминала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 14:05 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7но нужно дать возможность работать с обычного терминала. значит командный язык внятный разработать нужно и задокументировать, внутреннее представление - вторично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 16:20 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7это расчитано на обычного пользователя. я сделаю со временем десктопную апликацию но нужно дать возможность работать с обычного терминала. Помнится, во времена ROM-BASIC распрекрасно программа вводилась в режиме терминала, и никого это не парило. Сделай аналогичный BASIC для своего контроллера - и всего-то делов, что нумеровать строки и иметь операцию вставки строки с заданным номером (при наличии такого номера выполняя замещение) и удаление строки с заданным номером. Всё равно созданный тобой код работает в режиме интерпретации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 16:56 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7это расчитано на обычного пользователя. я сделаю со временем десктопную апликацию но нужно дать возможность работать с обычного терминала. Помнится, во времена ROM-BASIC распрекрасно программа вводилась в режиме терминала, и никого это не парило. Сделай аналогичный BASIC для своего контроллера - и всего-то делов, что нумеровать строки и иметь операцию вставки строки с заданным номером (при наличии такого номера выполняя замещение) и удаление строки с заданным номером. Всё равно созданный тобой код работает в режиме интерпретации. да. действительно. всего то делов. и чего я на форум за помощью пришел. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 18:57 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7но нужно дать возможность работать с обычного терминала. значит командный язык внятный разработать нужно и задокументировать, внутреннее представление - вторично да вот как раз внутренняя реализация это проблема. парсинг такой или другой я сделаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:01 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7да. действительно. всего то делов. и чего я на форум за помощью пришел. :) Это 18881581 почитал? Там все элементарно. Не изобретай велосипед, потрать чуть больше времени на разбор и напиши один раз на всю оставшуюся жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:03 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7да. действительно. всего то делов. и чего я на форум за помощью пришел. :) Это 18881581 почитал? Там все элементарно. Не изобретай велосипед, потрать чуть больше времени на разбор и напиши один раз на всю оставшуюся жизнь. да. там есть один пример где учитываются скобки. пытаюсь его вкурить. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:09 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39182975&tid=1340769]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 544ms |

| 0 / 0 |
