В настоящей книге подробно определено свыше 80 алгоритмов. Авторы решили не останавливаться на каком-то одном языке программирования (и рисковать тем, что читатели, не знакомые с этим языком, не смогут воспользоваться приведенными здесь алгоритмами) и вместо этого представить алгоритмы на псевдокоде. Основные конструкции этого псевдокода должны быть знакомы пользователям таких языков, как Java, C++ и Lisp. В некоторых местах дня описания вычислений используются математические формулы или текст на естественном языке, поскольку в противном случае пришлось бы применять более громоздкие конструкции. Необходимо также отметить, что в алгоритмах используются приведенные ниже соглашения. • Статические переменные. Ключевое слово static используется для указания на то, что переменной присваивается начальное значение при первом вызове некоторой функции, после чего это значение (или значение, присвоенное переменной с помощью выполненных в дальнейшем операторов присваивания) сохраняется при всех последующих вызовах функции. Таким образом, статические переменные напоминают глобальные переменные в том, что они сохраняют свое значение после каждого вызова содержащей их функции, но остаются доступными только в этой функции. В программах агентов, приведенных в данной книге, статические переменные используются в качестве "оперативной памяти". Программы со статическими переменными могут быть реализованы в объектно-ориентированных языках, таких как Java и Smalltalk, в виде "объектов". В функциональных языках они могут быть реализованы с помощью функциональных замыканий в той среде, в которой определены требуемые переменные. Функции как значения. Имена функций и процедур начинаются с прописных букв, а имена переменных состоят из строчных букв и выделяются курсивом. Поэтому чаще всего вызов функции выглядит наподобие Fn (х). Однако допускается, чтобы значением переменной была функция; например, если значением переменной f является функция вычисления квадратного корня, то выражение f (9) возвращает 3. Начальный индекс массива, равный 1. Если не указано иное, то первым индексом массива является 1, как в обычной системе математических обозначений, а не 0, как в языках Java и С. Значимость отступов. По аналогии с языком Python и в отличие от языков Java и C++ (в которых используются фигурные скобки) или языков Pascal и Visual Basic (в которых используется оператор end) для обозначения области действия цикла или условного выражения применяются отступы.
|