русский
Germany.ruForen → Архив Досок→ Programmierung

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

31.01.21 12:50
Re: Задачи для начинающих
 
AlexNek патриот
AlexNek
in Antwort AlexNek 30.01.21 23:04

Нужно идти все же дальше. Может потом кто-то еще захочет почитать.

Из того что мы знаем, нам в итоге нужно пойти по трём путям:

  1. ничего не делать
  2. включить нагрев
  3. выключить нагрев

Проблема, как это закинуть в ветвление у которого только два пути?

Довольно просто, нужно сделать два ветвления. Значить у нас должно быть и два условия.


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

Затем нужно проверить, что у нас с текущей (измеренной) температурой, если она меньше заданной то нужно включить нагреватель иначе выключить.


Теперь осталось вспомнить, что мы получаем температуры в виде вещественных чисел. Вроде какая разница целое или вещественное при сравнении? А она есть и следует пока просто поверить на слово и запомнить, что не следует проверять в лоб - А равно Б, если одно из чисел вещественное. Во многих случая, данную рекомендацию или не знают или игнорируют. И всё работает. Однако до некоторого времени, пока не звонит/пишет заказчик и говорит, что у него программа вдруг стала выдавать неверные результаты.

Поэтому правильное сравнение выглядит немного странно |А-Б| < x, где | | означают абсолютное значение, < обозначает меньше, а х - это допуск или точность. Например, если нас интересует расстояние между городами и мы получили два значения, будет ли нас интересовать равны ли они с точностью до метра или нет? А вот когда хотим заказать новую дверь, скорее всего измерим дверной проем с точностью до миллиметра.

В итоге у нас получается следующее описание:

Прочитать измеренную температуру (Tist)
Прочитать/ввести желательную температуру (Tsoll)

ЕСЛИ |Tist - Tsoll|  < Tolerance 
ТО 1. ничего не делать
ИНАЧЕ
  ЕСЛИ Tist < Tsoll
  ТО 2. включить нагреватель
  ИНАЧЕ 3. выключить нагреватель


 

Sprung zu