Управление -- это целенаправленное воздействие управляющего объекта на управляемый для организации его функционирования заданным образом. Оказывается, самые разнообразные процессы управления (в природе, обществе, технических устройствах) происходят сходным образом, основаны на одних и тех же принципах20.
Любое управляющее воздействие, в какой бы форме оно производилось, можно рассматривать как информацию, передаваемую в форме команд. Например, при нажатии кнопки на пульте управления телевизором мы передаем команду "переключить канал". Как сказано в определении, команды отдаются не случайно, а целенаправленно. Иногда цель достигается после исполнения одной команды, чаще приходится пользоваться последовательностью команд. Вы уже знаете, что такая последовательность называется алгоритмом.
Достаточно ли односторонней передачи информации (только от управляющего объекта к управляемому)? Иногда, да. Но чаще желательно (а нередко, и необходимо) иметь возможность реагировать на изменения реальной ситуации, т.е. управляющий объект должен получать информацию от управляемого объекта и, в зависимости от его состояния, так или иначе менять управляющее воздействие. Для передачи информации о состоянии управляемого объекта служит обратная связь. Системы управления, содержащие ветвь обратной связи, называются замкнутыми, а не имеющие ее -- разомкнутыми.
При отсутствии обратной связи алгоритм управления может содержать только однозначную линейную последовательность команд. Именно такими алгоритмами мы и занимались до сих пор. Когда обратная связь существует, алгоритм может иметь гораздо более сложную структуру, и соответственно, быть гораздо "интеллектуальнее".
Чтобы автоматическая система могла получить информацию о состоянии управляемого объекта и внешней среды, необходимы специальные устройства -- датчики (Например, датчик температуры, датчик вибрации, датчик освещенности и т.д.). В ЛогоМирах тоже есть датчики -- функции, передающие компьютеру значения, в зависимости от состояния системы или своих аргументов. Например, датчик "ответ". Его значение зависит от того, что набрал человек в ответ на последний вопрос компьютера. Существуют датчики, значение которых зависит от состояния черепашки. Например, "цвет_поля" (цп, colorunder) выдает код цвета, на котором в данный момент находится черепашка.
Используя уже изученные команды, мы можем изменять характеристики того или иного действия, но не можем отменить его или заменить на другое. На практике же нередко требуется именно такая реакция на изменение состояния системы.
Взгляните на программу "уравнение" из предыдущей главы. Она будет нормально работать, если человек задаст корректные исходные данные. Но что произойдет, если в качестве коэффициента а будет введен ноль? Программа аварийно завершится с сообщением "не могу разделить на ноль". Лучше сделать так, чтобы компьютер и не пытался выполнять такое действие. Для этого мы можем записать фрагмент программы вот так:
...
если не :a = 0
[
пусть “x 0 - :b / :a
сообщи пред [Корень уравнения x=] :x
]
...
Теперь при ошибочном значении переменной "а" программа будет завершаться нормально. Правда, при этом человек не получит никакого сообщения. Это, опять-таки, не слишком хорошо. Желательно, чтобы пользователь получал сообщение об ошибке. Придется еще немного усложнить программу.
...
если_иначе :a = 0
[
сообщи [При а=0 уравнение не имеет решений!]
]
[
пусть “x 0 - :b / :a
сообщи пред [Корень уравнения x=] :x
]
...
Мы использовали условные команды, с помощью которых реализовали алгоритмическую структуру "ветвление" (другое название -- альтернатива21). Ветвление -- выбор одной из двух последовательностей команд в зависимости от выполнения некоторого условия. Ветвление бывает неполным (как в первом примере -- выбиралось, делать что-то или не делать ничего) и полным (когда выбирается вариант действия). Им соответствуют краткая и полная формы условной команды.
если <условие> if <условие>
[<действия>] [<действия>]
если_иначе <условие> ifelse<условие>
[<действия1>] [<действия>]
[<действия2>] [<действия2>]
Условие -- это некоторое выражение, о котором можно сказать, что оно истинно или ложно. При его записи можно использовать знаки сравнения (<, >, =), а также логические операции: и (and), или (or), не (not).
В краткой условной команде действия выполняются только в том случае, когда условие истинно. В полной -- когда условие истинно, выполняется первый список действий, а когда ложно -- второй. Затем начинает выполняться команда, следующая за условной.
Условные команды, как и циклы, могут быть вложенными. Это полезно, например, если нужно выбрать один вариант действий не из двух, а из трех, четырех или более.
Примечания
Кибернетика (от греч. Kybernetike -- искусство управления) -- наука, изучающая эти принципы, родилась после выхода книги американского математика Норберта Винера "Кибернетика, или управление и связь в животном и машине" (1948 г.)
Alternative (фр. от лат. Alter) -- один из двух
|