|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
|||||||||||||||||||||
Обработка логических условий.29.02.2016, 11:47. Показов 3511. Ответов 10
Метки нет (Все метки)
Пишу в С под микроконтроллер.
я хочу выполнять разные задачи в камне. скажем включи вентилятор после 17:00 если температура больше 30* C и выключи его после 22:00 или если температура упала ниже 27* C. я бы мог записать в терминале.
но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот тут я впал в ступор - time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 как хранить и обрабатывать логические группы?
0
|
|||||||||||||||||||||
| 29.02.2016, 11:47 | |
|
Ответы с готовыми решениями:
10
Запись логических условий Построение составных логических условий Ввод логических условий и функций. |
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 29.02.2016, 12:30 | |
|
пока сюда фанаты форта не набежали, вам надо открыть книжку Б.Страуструпа и посмотреть как там сделан калькулятор, потом немного допилить его добавив туда логические выражения.
хранить тупо строкой и каждый раз парсить, не миллион же условий которые надо каждую миллисекунду проверять.
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 29.02.2016, 12:35 | ||
я думал о том чтоб каждый раз парсить строку. смысла не имеет. все равно распарсеные данные нужно сохранять в удобоваримой форме чтоб работать с ними.
0
|
||
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
||
| 29.02.2016, 12:49 | ||
гуглите что такое стэк и обратная польская нотация (запись).
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 29.02.2016, 13:31 | ||
гуглите что такое стэк и обратная польская нотация (запись). мда...ну спасибо наверно и на этом. что ж я могу еще сказать. но может кто то поможет мне довести до ума мой алгоритм? мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его.
0
|
||
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 29.02.2016, 19:59 | |
|
Да, поклонники Страуструпа они такие, в отличие от фанатов форта )
Как вариант, можно оставить в цепочках только связки по omd, причём omd можно будет и не писать, а or делать с помощью нескольких строчек, присваивающихся по одному и тому же имени. a<b c>d =e f<g =e Будет что-то подобное ladder logic, но кроме реальных сигналов, возможно, потребуются и виртуальные для промежуточных результатов
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 29.02.2016, 20:04 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
||
| 29.02.2016, 20:07 | ||
книжек Страуструп не сказать что очень много уж написал, но как сделать калькулятор который нормально разбирает любые вложенные условия в качестве примера есть наверное в каждой, разве что в последней будут совсем плюсы. http://www.stroustrup.com/dc.c надо лишь добавить в него логические операции ||, &&, !, которые считают что false это 0, а trui это не ноль. и байты из строки в памяти забирать а не с консоли и получится именно то что вам надо.
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
|
| 29.02.2016, 20:16 | |
|
[QUOTE="_pv"][QUOTE="Цитата:[/QUOTE][QUOTE]мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его.[/QUOTE]
ваш способ прекрасно работает пока надо просто два числа сравнивать, "модифицировать" для более сложных случаев не получится. книжек Страуструп сказать что очень много уж написал, но как сделать калькулятор который нормально разбирает любые вложенные условия в качестве примера есть наверное в каждой, разве что в последней будут совсем плюсы. [URL="http://www.stroustrup.com/dc.c"]http://www.stroustrup.com/dc.c[/URL] надо лишь добавить в него логические операции ||, &&, !, которые считают что false это 0, а trui это не ноль. и байты из строки в памяти забирать а не с консоли и получится именно то что вам надо. спасибо. буду разбираться.
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
||
| 29.02.2016, 20:26 | ||
Ваша задача - это вполне типичная задача конфигурирования логики ПЛК. Можно усложнять методы, т.е. парсер сложных выражений и т.п., а можно наоборот упрощать модель, т.е. по другому формулировать, не в привычной алгебраической форме. Не в смысле графически рисовать, а в смысле также текстом записывать, но не как строгое матем. выражение
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 279
|
|
| 01.03.2016, 01:07 | |
|
Я бы на Вашем месте обратился к темам лексического и синтаксического анализа. Утилиты lex и bison.
0
|
|
| 01.03.2016, 01:07 | |
|
Помогаю со студенческими работами здесь
11
Обработка условий Обработка строк символов с использованием условий Обработка строк символов с использованием условий Обработка на стороне сервера с большим количеством условий. Как правильно сконструировать?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|