|
|||||||||||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[42] (define wave2 (beside wave (flip-vert wave))) (define wave4 (below wave2 wave2)) Рис. 2.12: Построение составного изображения, начиная с рисовалки wave с рисунка 2.10 На картинке 2.12 показан результат работы рисовалки, называемой wave4, который строится в два этапа, начиная с wave: (define wave2 (beside wave (flip-vert wave))) (define wave4 (below wave2 wave2)) Строя таким образом составные рисовалки, мы используем тот факт, что рисо-валки замкнуты относительно средств комбинирования нашего языка. Beside или below от двух рисовалок само является рисовалкой; следовательно, мы можем ее использовать как элемент при построении еще более сложных рисова-лок. Так же, как при построении списковых структур с помощью cons, замкнутость наших данных относительно средств комбинирования служит основой способности строить сложные структуры при помощи всего лишь нескольких Раз мы можем комбинировать рисовалки, нам хотелось бы уметь выделять типичные схемы их комбинирования. Операции над рисовалками мы реализуем как процедуры языка Scheme. Это означает, что нам в языке изображений не требуется специального механизма абстракции: поскольку средства комбинирования являются обычными процедурами Scheme, у нас автоматически есть право делать с операциями над рисовалками все то, что мы можем делать с процедурами. Например, схему построения wave4 мы можем абстрагировать в (define (flipped-pairs painter) (let ((painter2 (beside painter (flip-vert painter)))) (below painter2 painter2))) и определить wave4 как пример применения этой схемы: (define wave4 (flipped-pairs wave)) операций. виде
right-split n Рис. 2.13: Рекурсивные планы
corner-split n right-split и corner-split. Мы можем определять и рекурсивные операции. Вот пример, который заставляет рисовалки делиться и ветвиться направо, как показано на рисунках 2.13 и 2.14: (define (right-split painter n) (if (= n 0) painter (let ((smaller (right-split painter (- n 1)))) (beside painter (below smaller smaller))))) Можно порождать сбалансированные узоры, наращивая их не только направо, но и вверх (см. упражнение 2.44 и рисунки 2.13 и 2.14): (define (corner-split painter n) (if (= n 0) painter (let ((up (up-split painter (- n 1))) (right (right-split painter (- n 1)))) (let ((top-left (beside up up)) (bottom-right (below right right)) (corner (corner-split painter (- n 1)))) (beside (below painter top-left) (below bottom-right corner)))))) Соответствующим образом расположив четыре копии corner-split, мы получаем схему под названием square-limit, применение которой к wave и rogers показано на рисунке 2.9: (define (square-limit painter n) (let ((quarter (corner-split painter n))) (let ((half (beside (flip-horiz quarter) quarter))) (below (flip-vert half) half)))) Упражнение 2.44. Определите процедуру up-split, которую использует corner-split. Она подобна right-split, но только меняет местами роли below и beside. (right-split wave 4)(right-split rogers 4) (corner-split wave 4)(corner-split rogers 4) Рис. 2.14: Рекурсивные операции right-split и corner-split в применении к рисовалкам wave и rogers. Комбинирование четырех картинок corner-split дает симметричные узоры square-limit, как показано на рисунке 2.9. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | |||||||||||||||||