
- •(Конспект лекций)
- •Список сокращений
- •Введение
- •Лекция 1. Языки штучного интеллекта и основы логического программирования Некоторые сведения о языках искусственного интеллекта
- •Введение в логическое программирование Историческая справка
- •Базовые объекты данных
- •Вопросы
- •Переменные
- •Правила
- •Зоны видимости имен
- •Логическая программа
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 2. Процедурная семантика интерпретатора Пролога
- •Метод резолюций
- •Унификация и подстановка
- •Композиция подстановок
- •Вычисление резольвенты
- •Алгоритмы Пролога
- •Стратегии доказательств
- •Процедура поиска доказательства в глубину
- •Пример выполнения логической программы с пошаговым анализом
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 3. Основы программирования в среде Турбо-Пролога
- •Разделы программы
- •Опции компилятора
- •Имена переменных
- •Раздел описаний доменов
- •Разделы описания предикатов и правил
- •Рекурсивные процедуры
- •Моделирование итеративных процедур
- •Основные сведения об арифметических предикатах
- •Внелогические предикаты
- •Работа с файлами
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 4. Списки и управление выводом в Турбо-Пролог-программах Списки
- •Описания списков
- •Шаблон для работы со списками
- •Примеры программ работы со списками
- •Управление формированием вывода Отсечение
- •«Зеленые» и «Красные» отсечения
- •Предикаты not и fail
- •«Циклы» управляемые отказом
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 5. Динамическая база данных в Турбо-Пролог-программах Составные области
- •Операции с динамической базой данных
- •Пример построения проекта с динамической базой данных
- •Ограничения Турбо-Пролога
- •«Циклы» с возвратами
- •Лисп – язык функционального программирования
- •Правильные выражения
- •Базовые предикаты и конструкторы
- •Определяющие выражения функций
- •Условные выражения
- •Выражения для представления циклов
- •Встроенные и определяемые пользователем функции
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 7. Функциональное программирование в среде Лиспа
- •Виды рекурсий Рекурсии по значению и по аргументам
- •Простая рекурсия
- •Параллельная рекурсия
- •Взаимная рекурсия
- •Рекурсии высших порядков
- •Метод накапливающих параметров
- •Функционалы
- •Применяющие функционалы
- •Отображающие функционалы
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 8. Функциональные абстракции и процедурное программирование в Лиспе Представление функции в процессе вычислений Понятие замыкания
- •Создание замыканий
- •Функции с функциональным результатом вычислений и частичные вычисления
- •Функциональные абстракции
- •Формы блоков и связывания переменных
- •Присваивание значений переменным
- •Прочие процедурные формы в Лиспе
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 9. Лисп-методы программирования Программирование, управляемое данными
- •Программирование, управляемое событиями
- •Сопоставление с образцом
- •Списочные образцы
- •Переменные в образцах
- •Образцы с предикатами
- •Продукционное и логическое программирование в Лисп-системах
- •Объектное программирование
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 10. Представление знаний в программах на Лиспе Процедурный подход к представлению знаний
- •Представление знаний на основе продукций
- •Представление продукций
- •Интерпретатор продукций
- •Методы поиска решений
- •Функция для загрузки
- •Разрыв командного цикла и отладка
- •Вычисление s-выражений
- •Функции и формы
- •Типы данных
- •Макросы ввода
- •Lambda-списки
- •Функции ввода/вывода
- •Вычисление форм catch и throw
- •Объектное программирование в Xlisp Создание класса
- •Добавление методов в интерактивном режиме
- •Вопросы для самоконтроля
- •Html-документ Инструментарий создания и редактирования
- •Структура документа
- •Html тэги
- •Информация игнорируемая браузерами
- •Свойства страницы в целом
- •Информация для поисковых систем и стандарты
- •Элементы управления размещением текста и графики
- •Ссылки и протоколы
- •Задание цвета в html
- •Подготовка графики и анимация Графические форматы
- •Подготовка изображений для применения в документе
- •Анимация
- •Вопросы для самоконтроля
- •Управление шрифтами
- •Физические текстовые стили
- •Специальные символы
- •Графика
- •Управление взаимным размещением текста и графики
- •Гипертекстовые и графические ссылки Организация ссылок
- •Графические ссылки
- •Расширенная работа с гиперссылками Типы ссылок в документе
- •Якоря (метки)
- •Атрибут target
- •Изображения-карты
- •Списки и таблицы Виды списков
- •Элементы таблиц
- •Вопросы для самоконтроля
- •Элементы создаваемые тэгом input
- •Простые и графические кнопки
- •Списки выбора
- •Текстовые области
- •Приемы для выравнивания элементов
- •Методы передачи данных к серверу
- •Дизайн web-сайтов Типы сайтов
- •Топология и распределение материала
- •Формат страницы
- •Заглавия и заголовки
- •Навигация
- •Блоки текста
- •Средства позиционирования
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 15. Элементы языка css Язык управления структурой и стилями
- •Размещение css-элементов
- •Адресная модель css
- •Содержимое css-файла или style-контейнера
- •Селекторы
- •Комментарии
- •Применение css в оформлении документов Управление визуализацией
- •Схемы позиционирования
- •Текст и шрифты
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 16. Основы языка Java Script Назначение языка программирования Java Script
- •Тэги для программ на Java Script
- •Основные конструкции языка JavaScript
- •Декларации функций
- •Операторы, операции и выражения
- •Массивы
- •Объектная модель документа
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 17. Объекты и скрипты в html-документах Объекты пользователя
- •Создание объектов
- •Добавление новых свойств и методов
- •Проверка наличия свойств и методов
- •Встроенные объекты языка программирования
- •Обработка особых ситуаций в документе
- •Классификация ситуаций
- •Установление реакции на ситуацию
- •Методы объекта String
- •Программирование работы с метками и гиперссылками
- •Динамическое создание меток и гиперссылок
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Лекция 18. Различные аспекты применения скриптов Управление окнами
- •Динамическое формирование документа
- •Управление слоями
- •Объект, соответствующий форме
- •Адресация и именование
- •Свойства и методы
- •Динамическое изменение надписей и изображений на кнопках
- •Форматы документов отличающиеся от html
- •Вопросы для самоконтроля
- •Вопросы на самостоятельную проработку
- •Литература
Массивы
Массивы создаются в JavaScript:
конструктором Array(),
конструктором Object() либо
конструктором, определяемым пользователем.
Элементы в массивах могут быть различного типа.
Пример
var myArray = new Array(true, “8.0”, Date(), 3);
……………….
myArray[9] = “10-th element of Array”;
Вначале был создан массив, включающий 4 элемента. Элемент myArray[2] представляет текущую дату и время. Следующий оператор установил значение элемента myArray[9] равным строке “10-th element of Array” и одновременно увеличил размер массива. Элементы, которым не присваивались явно значения будут иметь значение null.
Каждый массив обладает свойством length, позволяющим определить число элементов в массиве, например так: myArray.length.
Пример
myArray = new Array();
Теперь переменная myArray ссылается на массив, включающий 0 элементов.
Массив может быть создан и конструктором Object(). Однако, в этом случае создается объект с индексируемыми полями, к которому не применимы методы, связанные с теми объектами, которые создаются конструктором Array.
Пример
var nextArray = new Object();
nextArray[0] = 2;
nextArray[1] = “http://www.cityscape.co.uk”;
nextArray[2] = “http://www.dircon.co.uk”;
В данном примере массив создается на основе индексируемых объектов, конструктором Object. Программист должен в программе заносить информацию о длине массива в элемент с 0-м индексом. Т.о., чтобы узнать текущую длину массива в программе - необходимо применить выражение nextArray[0]. Значение свойства nextArray.length неопределено и равно null.
Программист может записать в программе собственный конструктор для создания массивов с любой интерпретацией аргументов, например так:
function makeArray(arraySize, initValue)
{
this.len = arraySize;
for (var i = 0; i <= arraySize; i++)
this[i] = initValue;
return this;
}
В этом примере с применением данного конструктора создается объект имеющий индексированные поля и именованное поле (свойство) len. Индексированные поля заполняются значением аргумента initValue. Создание массива в программе:
var myVar = new makeArray(10, 0);
Для доступа к информации о текущей длине массива необходимо в программе записать выражение – myVar.len.
Самостоятельно: напишите конструктор для создания двумерных массивов!
Объектная модель документа
В процессе загрузки html-документа в броузер создается иерархическая объектная модель документа. Ее знание позволяет правильно организовать ссылки к элемента документа в скриптах. Представленная ниже модель основана на материалах книги Алекса Хоумера и Криса Улмена «Dynamic HTML (DHTML)» и не претендует на полноту, поскольку каждый из представленных на рисунке объектов имеет намного больше свойств (см. Справочник: O’Reilly. Java script Reference). Имена на представленной ниже диаграмме следует рассматривать как свойства объектов, расположенных выше по иерархии и одновременно как некоторую характеристику объектов. Например, document является свойством объекта window и одновременно является объектом характеризующим документ в целом. По мере приема документа броузером, практически все тэги и контейнеры, в нем содержащиеся, преобразуются в объекты. При разработке скриптов необходимо учитывать, что броузеры различных фирм могут формировать собственную объектную модель документа, обычно незначительно отличающуюся от представленной ниже. Однако, правильность обработки ссылок в скриптах все же необходимо тестировать зазрузкой документа различными броузерами, которые предположительно будут применять пользователи сайта.
На рисунке ниже свойство all
группирует все элементы документа в
общую хэш-таблицу, что позволяет выполнять
ссылки к элементам документа посредством
индексов, в качестве которых можно
использовать имена соответствующих
тэгов. Если документ обладает фреймовой
структурой, то ниже объекта window
по иерархии располагаются объекты
соответствующие фреймам, содержащимся
в окне. К элементам форм можно
обращаться
через общее свойство elements
или через свойства, соответствующие
отдельным типам элементов. Рассмотрим
примеры.
Пример
В документе содержится форма, содержащая в качестве элемента текстовую область. Атрибут name текстовой области имеет значение “message”. Тогда к свойству value текстовой области (value определяет содержимое текстовой области) можно обратиться следующим образом:
document.forms[0].message.value = “Текст сообщения не введен!”;
Если атрибут name формы имеет значение “myForm”, то тот же оператор можно переписать так:
document.forms[“myForm”].message.value = “Текст сообщения не введен!”;
К свойству action (соответствует тегу action) той же формы можно обратиться так:
var vform = document.forms[“myForm”]; … vform.action …
Пример
Навигацию или загрузку другой страницы в окне можно выполнить следующим образом:
window.location.href= ”product.vidget33.html”;//префикс window можно не указывать
или
document.location = ”product.vidget33.html”;