Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачи для начинающих

5160   7 8 9 10 11 12 13 14 15 16 17 все
AlexNek патриот14.02.21 12:08
AlexNek
NEW 14.02.21 12:08 
в ответ anly 13.02.21 20:40
Именно на таком и следует программировать, если задача является последовательностью (во времени) шагов

Решать задачи нужно на том - который хорошо знаешь спок

AlexNek патриот14.02.21 12:17
AlexNek
NEW 14.02.21 12:17 
в ответ anly 14.02.21 00:45
Вот реальная задача управления светом в подвале школы

Где вы всю эту фигню берете? смущ

Даже понять не захотелось, что именно требуется.


Это не задачи для начинающих, потому как даже обычный светофор требует знание понятия "задержка".

Кроме того, не следует сразу с размещением задачи давать и какое либо готовое решение. Ну и также, не показав как решать предыдущую задачу, давать сразу следующую.

anly патриот14.02.21 12:35
anly
NEW 14.02.21 12:35 
в ответ AlexNek 14.02.21 12:17, Последний раз изменено 14.02.21 12:51 (anly)
Где вы всю эту фигню берете?
эта фигня реально работает в школе и именно такой затребована. Там много подобной фигни. Управление жалюзями, например, вытяжкой в кухне.
Это не задачи для начинающих, потому как даже обычный светофор требует знание понятия "задержка".
когда начинающий освоит решать задачки которые никуда не годятся, и станет гуру в этом, он останется начинающим для реальных задач, применимых в управлении.

Я дал задачки для начинающих реальных задач. В которых кстати понятие "задержка" отсутствует принципиально. Ну или вернее она не значит "спать" как Sleep(), а значит "не время что-то делать дальше", т.е. поток никогда не блокируется.

Проклят нарушающий межи ближнего своего (Втор.27:17)
anly патриот14.02.21 12:41
anly
NEW 14.02.21 12:41 
в ответ AlexNek 14.02.21 12:08
Решать задачи нужно на том - который хорошо знаешь
приходится тому кто знает мало возможностей.

Если знать разные языки тогда уже можно оценить на каком языке задача решается проще и понятнее.

Проклят нарушающий межи ближнего своего (Втор.27:17)
AlexNek патриот14.02.21 13:40
AlexNek
NEW 14.02.21 13:40 
в ответ anly 14.02.21 12:41
Если знать разные языки тогда уже можно оценить на каком языке задача решается проще и понятнее.

Это скорее удел специализированных одиночек.

На работе обычно есть направление и есть один или несколько языков которые можно использовать.

Ну и проще и понятнее тоже не критерий. Допустим, мне проще и понятнее написать что то на С++.

Но если мне для эксель нужно что сделать или на веб страничке, что то выпендриться, то С++ мне ну никак тут не поможет.

Это что то типа как кашу размазывать по тарелке, вроде и много, а как копнешь то почти ничего.

AlexNek патриот14.02.21 13:50
AlexNek
NEW 14.02.21 13:50 
в ответ anly 14.02.21 12:35
когда начинающий освоит решать задачки которые никуда не годятся, и станет гуру в этом

Дело то не в задачах, а какую цель для обучения они преследуют.

Начинающему нужно вначале разобраться с основными конструкциями: ветвлением и циклом, когда это усвоится можно идти дальше.


для реальных задач, применимых в управлении

Это именно задачи для управления чего то, больше они ни на что и не годятся.


Ну или вернее она не значит "спать" как Sleep(),

Это уже всё ваша интерпретация. Я, как начинающий, не имею никакого понятия, каким образом мне можно какое то действие сделать на 3 секунды позже. Да и не нужно мне это сейчас знать смущ

А уж что такое потоки и что их еще и можно блокировать я вообще и близко не слышал шок

anly патриот14.02.21 15:19
anly
NEW 14.02.21 15:19 
в ответ AlexNek 14.02.21 13:50
Это уже всё ваша интерпретация. Я, как начинающий, не имею никакого понятия, каким образом мне можно какое то действие сделать на 3 секунды позже. Да и не нужно мне это сейчас знать смущ А уж что такое потоки и что их еще и можно блокировать я вообще и близко не слышал
Задачка вначале темы была именно управления температурой кажется. Вот и я привел задачки по управлению.

Чтобы решать управленческие задачки (которые работают обычно в контроллерах с входными и выходными датчиками) нужно другое мышление, чем если к примеру алгоритмы сортировки писать, или чего нибудь для десктопа.

Управленческая задача

- не имеет права ждать зависнув в Sleep, Эвенте, критической секции (в этих языках этих возможностей даже и нету)

- по нормальному, не имеет права делать даже долгий вычислительный цикл

- задача периодически с заданным интервалом получает управление и она должна сделать минимум действий и сразу вернуть управление.

- никаких потоков тоже нет

- ничего вызываться из библиотек, что может подвесить программу нельзя.

- например Socket можно пользовать только в NonBlocked (если не ошибаюсь в названии) режиме, так другой режим зависает в ожидании данных.

......

Лучше это учитывать сразу, ибо придется переучиваться, если надо будет реальную задачку написать.

Проклят нарушающий межи ближнего своего (Втор.27:17)
Murr патриот14.02.21 15:20
Murr
NEW 14.02.21 15:20 
в ответ anly 14.02.21 10:16

без последовательности никак не обойтись,

-----

Обойтись.

Та последовательность, об которой ты говоришь, не имеет никакого отношения к управляющему автомату - она лишь следствие его работы.


ибо активность шагов таки последовательно меняется.

-----

Это тебе кажется. Реализуешь автомат в точном соответствии с теорией - в автомате ее не будет.


могут быть заметны проблемы

-----

Это вопрос реализации переходной функции - к реализации самого автомата имеет почти никакое отношение.



Тогда гарантируется строгая функциональная зависимость каждого выхода от текущего шага.

-----

Т.е. ты сам понимаешь что создаешь большой геморой, который в сколь-нибудь сложной конфигурации - более одного светофора, "желтый" светофор, "зеленая волна" - у тебя издержки управления вырастут настолько, что будет нужен быстрый процессор и куча прогеров...

Murr патриот14.02.21 15:31
Murr
NEW 14.02.21 15:31 
в ответ anly 14.02.21 10:27

если интересно

-----

Лениво.


я удовольствием покажу какой будет программа

-----

А смысл?

Выше описывал для Кодера переработку парсера для Сишных выражений - там именно программа которую ты можешь показать была заменена автоматом - 60Кб кода => 15 строк + таблица на 60 строк. И эти 15 строк никак не будут меняться какой бы набор унарных и бинарных операций для языка не придумали.

Кстати, автомат для светофора, включающий любые возможные схемы переключения, будет примерно того же объема.

AlexNek патриот14.02.21 15:34
AlexNek
NEW 14.02.21 15:34 
в ответ anly 14.02.21 15:19
Лучше это учитывать сразу

Это вообще не нужно даже и знать поначалу, а тем более учитывать. Тут бы понять, что такое алгоритм и как его едятъ смущ


Вот и я привел задачки по управлению.

Разное бывает управление....

Всё что требовалось в первой задаче, это додуматься как из одного ветвления сделать два.

А в светофоре нужно не только поочередно открывать движении пешеходам и машинам, но и еще в определенном порядке переключать 6 лампочек. И еще как то длительность учитывать. И это не принимая во внимание кнопку "хочу перейти улицу".

anly патриот14.02.21 15:36
anly
NEW 14.02.21 15:36 
в ответ anly 14.02.21 15:19, Последний раз изменено 14.02.21 15:42 (anly)

Пример: Управление жалюзями.

Входы:

- кнопка вверх

- кнопка вниз

- сигнал непогоды

Выходы:

- мотор вверх

- мотор вниз

- датчик крайне верхнего положения

- датчик крайне нижнего положения

Требование:

- при нажатии одной из кнопок включить соответствующий мотор

- мотор выключить при отжатии кнопки, если она была нажата менее 3х секунд, иначе отжатие - в игнор

- мотор выключить при срабатывании датчика крайнего положения или нажатия любой из кнопок

- перед включением мотора проверить датчик (может включать и не надо)

- при срабатывании датчика непогоды жалюзи поднять вверх игнорируя кнопки

Проклят нарушающий межи ближнего своего (Втор.27:17)
Murr патриот14.02.21 15:48
Murr
NEW 14.02.21 15:48 
в ответ AlexNek 14.02.21 15:34

разобраться с основными конструкциями

понять, что такое алгоритм и как

-----

Ну наконец-то - Я ведь сразу говорил - определи цель.

Бо, управлять температурой в террариуме - это одно, а практиковать использование оператора ИФ - другое. спок

anly патриот14.02.21 15:50
anly
NEW 14.02.21 15:50 
в ответ Murr 14.02.21 15:20
.е. ты сам понимаешь что создаешь большой геморой, который в сколь-нибудь сложной конфигурации - более одного светофора, "желтый" светофор, "зеленая волна" - у тебя издержки управления вырастут настолько, что будет нужен быстрый процессор и куча прогеров...
наоборот, если писать на SFC (или том что на картинках) любой из шагов делает минимум действий и не грузит процессор.

И как раз чем сложнее задача, тем оправданее использование SFC, а вместо цифрового автомата.

Проклят нарушающий межи ближнего своего (Втор.27:17)
AlexNek патриот14.02.21 15:56
AlexNek
NEW 14.02.21 15:56 
в ответ anly 14.02.21 12:41
на каком языке задача решается проще и понятнее

Вообще то вместо каких то непонятных квадратиков со стрелочками, мне гораздо понятнее следующее

ЦИКЛ ДО бесконечности
  Разрешить движение машин на х секунд
  Разрешить движение пешеходов на y секунд
КОНЕЦ ЦИКЛА
AlexNek патриот14.02.21 16:02
AlexNek
14.02.21 16:02 
в ответ anly 14.02.21 15:50
И как раз чем сложнее задача, тем оправданнее использование SFC

Это что то типа такого: Чем меньше знаешь в программировании тем оправданнее использовать Visual Basic.

Если мне надо будет программить какое то железо, то я лучше возьму С. Уж хотя бы точно знаешь что получишь

AlexNek патриот14.02.21 16:03
AlexNek
NEW 14.02.21 16:03 
в ответ Murr 14.02.21 15:48
Бо, управлять температурой в террариуме - это одно, а практиковать использование оператора ИФ - другое

Кому как бебе

anly патриот14.02.21 16:12
anly
NEW 14.02.21 16:12 
в ответ AlexNek 14.02.21 15:56
Вообще то вместо каких то непонятных квадратиков со стрелочками, мне гораздо понятнее следующее ЦИКЛ ДО бесконечности Разрешить движение машин на х секунд Разрешить движение пешеходов на y секунд КОНЕЦ ЦИКЛА

пусть это понятней, но это неприемлимо.

Такого в задаче управления писать нельзя.

Проклят нарушающий межи ближнего своего (Втор.27:17)
anly патриот14.02.21 16:17
anly
NEW 14.02.21 16:17 
в ответ AlexNek 14.02.21 16:02
Если мне надо будет программить какое то железо, то я лучше возьму С. Уж хотя бы точно знаешь что получишь
ню, ню...

те принципы что я изложил, и тот язык что на картинке привел, позволяют работать сотням программ управления сразу в одном контроллере. А если писать на С, ну одну, две осилишь, а дальше - кирдык.

Проклят нарушающий межи ближнего своего (Втор.27:17)
Murr патриот14.02.21 16:25
Murr
NEW 14.02.21 16:25 
в ответ anly 14.02.21 15:50

И как раз чем сложнее задача, тем оправданее использование SFC, а вместо цифрового автомата.

-----

Это можно обсуждать после изучения того, что продуцирует СФЦ.

Смотреть - не буду - мне проще сделать автомат, который гарантирует работоспособность системы управления.

Остальное - надо смотреть.

AlexNek патриот14.02.21 16:27
AlexNek
NEW 14.02.21 16:27 
в ответ anly 14.02.21 16:12
Такого в задаче управления писать нельзя.

Хорошо хоть мои знакомые "железнячники" этого не знают смущ

7 8 9 10 11 12 13 14 15 16 17 все