Задачи для начинающих
Вот Flussdiagramm:
Очень похоже, забыли только сказать чем рисовали. Немного неаккуратно и не совсем соответствует DIN 66001
https://de.wikipedia.org/wiki/Programmablaufplan
- yEd Graph Editor – kostenloser Diagrammeditor, mit dem Datenflussdiagramme gezeichnet werden können
- Orinoco – kostenloses Tool zur Modellierung und Simulation von Datenflussdiagrammen
Где я говорил, что это решение не годится?
-----
Ну а зачем писать что-то если удовлетворяющее решение уже есть?
Это потому что ты прочитал только половину условия
-----
Я прочитал как раз то что нужно и прочитал правильно.
Если тебе не нравятся пингвины с песцами - пусть будет какая-нибудь редкая ящерка из средней полосы, которая размножается только в ограниченных по температуре условиях. А террариум разместим поближе к экватору.
Почему ты проигнорировал то, что после запятой
-----
Во второй половине указаны идентификаторы управляющих функций, но нигде не сказано что они управляют именно нагревательным элементом. Вывод об том что подразумевается именно нагревательный элемент ты сделал исходя из названия функции - это чисто твое умозрительное заключение. По факту корректирующий температуру элемент может быть любым, но управляемым двумя указанными методами.
перед тем, как что-то программировать, правильно было бы почитать про PID контроллер,
Зачем это знать начинающему?
Для решения задачи не нужно знать абсолютно ничего. Даже какой то язык программирования. И будет ли работать даже написанной программа на реальном контроллере, тоже совершенно не важно.
Для первого этапа достаточно описать всё хотя бы своими словами. Я удивляюсь почему до сих пор никто ничего не написал из тех кто хочет учится. Ведь именно для и них всё и затеял.
а я бы добавил задачки от другого профессора
Добавляйте. Только я бы в этой теме сделал ограничение: Кто добавляет задачи, тот и ментор для них.
Если же есть задачи, но нет желания или знаний для их сопровождения, то лучше добавлять в новой теме. В которой будут только задачи.
Но это не красиво.
-----
Это вполне красиво - на то он и контроллер, чтобы изолировать сущностный элемент.
Контроллер действительно может долбить термометр регулярно
-----
Как он будет делать - не важно. Важно что благодаря прокладке-контроллеру управление не будет зависеть от типа и возможностей Термометра.
если в качестве эвента выступает дворник
-----
Так ведь без разницы.
Разница появится когда будет требоваться учитывать показания термометра, действия дворника и мнение питона.
требуется учитывать инерционность тепловых процессов.
Это вы придумали
в качестве "управляющего воздействия" выберем две величины: как надолго включить нагреватель , и какую после выключения сделать паузу.
Это вы придумали
инициализировать "регулятор": некая сущность, которая будет имплементировать управление, вычисляя "управляющее воздействие" (напомню, это - две величины: время включенного состояния и пауза после). 0. запросить у регулятора управляющее воздействие
1. выполнить управляющее воздействие2. перейти к 0.
Это вообще с программированием ничего общего не имеет.
постановка задачи.
Ну вот, наконец то, то с чего и нужно начинать. Вначале нужно понять что же действительно хочет пользователь.
А не фантазировать: поддержание температуры в террариуме в заданных пределах (tmin, tmax), требуется учитывать инерционность тепловых процессов и т.п.
Я специально привел вначале самое простое описание - обычно с этого и начинают говорить что надо.
И задача программиста выбить все нужные знания у пользователя.
Что у нас есть на сегодня:
- Температура желательная
- Температура измеренная
- Внешняя функция включить нагреватель.
- Внешняя функция выключить нагреватель.
Что нам еще не хватает?
Хотя бы то, как представлена температура - как строка или как число. Для диаграмм и описания это не имеет смысла, а вот для конкретной программы нужно уже знать.
И тут мы подходим к типам данных.
Базовых не так уж и много
символ - 'A', 'B'
строка из символов - "asdfg"
целый тип - 0,1,2,3, -10
вещественный тип: 0.12345, -3.14
логический тип: Да, Нет.
В каждом языке существуют свои особенности определения и использования данных. В том числе и способ их представления в машинной форме. Но этих вопросов мы пока касаться не будем.
Пока ограничимся тем, что температура представлена вещественным числом и для ее ввода нужно просто вызвать внешние функции.
Хотя бы то, как представлена температура - как строка или как число.
Это не играет никакой роли в процессе составление алгоритма. Потому что определения пороговых значений для температуры это отдельная задача. Представьте, что градусник говорит на французском. То есть информация передается акустически. Ну и нафига усложнять теоретическую задачу дле начинающих.
написал достаточный алгоритм, который постоянно мониторит температуру и реарирует. Программист написал изящную реализацию, которая реагирует на события. Обе реализации достаточно абстрактны, что бы поднимать дополнительные модули для рассширения функтиональности. Не надо перегружать прогу подробностями, которые могут ВДРУГ понадобится.
Пока ограничимся тем, что температура представлена вещественным числом
-----
Ограничься - целым. Если нужна точность - задай единицу измерения 0.1, 0.01, 0.001 градуса.
Для вещественных тебе придется объяснять представление в виде порядок и мантиса с усечением/округлением - именно то чего ты пока касаться не хочешь.
Это не играет никакой роли в процессе составление алгоритма.
Вообще то играет, потому как 2+2 может быть и 22 и 9 не обязательно меньше 10
По крайней мере, если на входе строка, нужно показать ее преобразование в число.
Можно было и опустить, но мен хочется показать немного большее, чем просто обычная задача.
По крайней мере, уже видно, что раз для такой простой задачи, столько можно чего придумать, то что же будет для более сложной.
Зачем?
-----
Затем, что есть два вещественных числа - 22.3 и... 22.3... и при этом одно из них меньше другого.
Чтобы объяснить этот момент - придется углубляться в детали представления, а это на уровне Если...То...Иначе - лишнее.
По-этому есть смысл перейти к целым значениям 223 и 223 единицы по 0.1 градуса - это будет понятно и вполне однозначно.
Можно перейти и к 2231 и 2233 - по 0.01 градуса - тут уже будет видна причина неравенства 22.3 и 22.3.
я пользователя уже пытал и узнал что он действительно хочет
-----
У тебя есть проблема из 223 нарисовать для пользователя "22.3С"?
Вынеси в отдельную подзадачу и пусть ее реализовывают...
А внутри все должно быть так как должно быть - не надо преобразовывать в вещественное полученное дискретное. Его вообще не надо трогать - надо работать с тем что получено, однократно перегоняя заданные критерии к йeтому виду.
К тому же с точки зрения обучения есть еще один момент.
Нужно чтобы юниор учился мыслить абстрактно.
С этой позиции 223 которое более абстрактное значение много предпочтительнее 22.3 которое есть конкретная температура.
Еще раз скажу - сформулируй цель которую пытаешься достичь данным упражнением.