Обнаружение вершины
Обнаружение вершины
Нисходящий метод проектирования предполагает, что каждая система характеризуется на самом абстрактом уровне своей главной функцией. Хотя многие учебные примеры алгоритмических проблем - "Ханойские башни", "Задача о 8 ферзях" и т. п. - действительно легко задать с помощью их "верхних" функций, более полезно описывать практические системы в терминах предоставляемых ими услуг.
Рассмотрим какую-либо операционную систему. Наиболее разумно представлять ее как систему, предоставляющую такие услуги, как распределение времени процессора, управление памятью, обращение с устройствами ввода-вывода, декодирование и исполнение команд пользователя. Модули хорошо структурированной ОС стремятся сгруппироваться вокруг этих групп функций. Но это не та структура, которую можно получить при нисходящей функциональной декомпозиции. Этот метод заставляет проектировщика отвечать на искусственный вопрос: "что является "верхней" функцией?", а затем использовать последовательные уточнения полученного ответа в качестве основы для структуры системы. При определенных усилиях можно придти к следующему ответу на исходный вопрос
"Обработать все запросы пользователя",
который далее можно уточнять примерно так:
from
начальная загрузка системы
until
остановка или аварийный отказ
loop
"Прочесть запрос пользователя и поместить во входную очередь"
"Взять запрос r из входной очереди"
"Обработать r"
"Поместить результат в выходную очередь"
"Взять результат q из выходной очереди"
"Выдать результат q получателю"
end
Уточнения могут продолжаться. Однако маловероятно, что после такого начала кому-либо удастся спроектировать разумно структурированную операционную систему.
Вернемся к примеру с компилятором. Оставив в нем самую суть или представив точку зрения старых учебников, можно сказать, что компилятор - это реализация функции типа вход-выход, трансформирующей текст исходной программы на некотором языке программирования в машинный код некоторой платформы. Но для современных компиляторов этот взгляд недостаточен. Среди многих услуг, предоставляемых компилятором, обнаружение ошибок, форматирование программы, возможность управления конфигурацией системы, вход в систему, генерация отчетов.
По-видимому, очевидная отправная точка проектирования сверху вниз - взгляд, согласно которому для каждой новой разработки требуется запросить некоторую специальную функцию - является весьма сомнительной:
У реальной системы нет "вершины"!
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
7.8 Обнаружение маршрутов
7.8 Обнаружение маршрутов Хотя многие локальные сети имеют единственный маршрутизатор по умолчанию, существует достаточное количество сетей, имеющих два или более маршрутизаторов.Что происходит при подключении маршрутизатора к локальной сети? Сообщения о
Глава 2 Обнаружение адреса
Глава 2 Обнаружение адреса DNS преобразует строки символов в IP-адреса. Часто неспециалистам, оперирующим «банальной эрудицией», этот процесс кажется тривиальным. Действительно, возьмите простую таблицу соответствий «домен – адрес» и работайте по ней – так они
Вершины и примитивы
Вершины и примитивы Определение атрибутов вершины Под вершиной понимается точка в трехмерном пространстве, координаты которой можно задавать следующим образом:void glVertex[2 3 4][s i f d](type coords)void glVertex[2 3 4][s i f d]v(type *coords)Координаты точки задаются максимум четырьмя значениями: x, y,
Определение атрибутов вершины
Определение атрибутов вершины Под вершиной понимается точка в трехмерном пространстве, координаты которой можно задавать следующим образом:void glVertex[2 3 4][s i f d](type coords)void glVertex[2 3 4][s i f d]v(type *coords)Координаты точки задаются максимум четырьмя значениями: x, y, z, w, при этом можно
10.5. Обнаружение жестов-нажатий
10.5. Обнаружение жестов-нажатий Постановка задачи Необходимо фиксировать, когда пользователь нажимает экранный вид в той или иной
10.6. Обнаружение щипка
10.6. Обнаружение щипка Постановка задачи Необходимо предоставить пользователю возможность выполнять движения
13.1. Обнаружение и испытание камеры
13.1. Обнаружение и испытание камеры Постановка задачи Требуется узнать, есть ли камера на том устройстве с iOS, где работает ваше приложение, и можете ли вы получить доступ к этой камере. Это очень важный момент, который нужно проверить, прежде чем приступать к работе с
14.1. Обнаружение доступности многозадачности
14.1. Обнаружение доступности многозадачности Постановка задачи Необходимо выяснить, поддерживается ли многозадачность на том устройстве с iOS, на котором работает ваше
18.1. Обнаружение доступности акселерометра
18.1. Обнаружение доступности акселерометра Постановка задачи В вашей программе требуется определить, имеется ли в устройстве
18.2. Обнаружение доступности гироскопа
18.2. Обнаружение доступности гироскопа Постановка задачи В вашей программе требуется определить, имеется ли в устройстве
Обнаружение ошибок
Обнаружение ошибок Когда происходит ошибка в операции с потоком, устанавливается в ненулевое значение флажок ошибки для потока. Можно использовать макроопределение ferror, чтобы определить, произошла ли ошибка.После каждой ошибки флажок ошибки остается установленным до
Обнаружение столкновений
Обнаружение столкновений Для контроля столкновений в играх используются прямоугольные области. Конечно, здесь далеко до реализма, так как предметы не всегда имеют прямоугольную форму. Но в некоторых случаях пользователь может и не заметить этого. Ограничивающий
Обнаружение устройств
Обнаружение устройств Теперь надо написать код для кнопки butFindDevs, предназначенной для обнаружения устройств. При тестировании примера необходимо направить инфракрасные порты устройств друг на друга. Код, ответственный за выполнение этой задачи, приведен в листинге
Выбор точек вершины и угла
Выбор точек вершины и угла Чтобы задать вершину и угловые крайние точки, нажмите клавишу Enter в ответ на запрос: Select arc, circle, line, or <specify vertex> Программа попросит задать точку вершины и затем две крайние точки. Примечание Если вы выберете две параллельные линии, появится
26.2.2. Обнаружение сигнала
26.2.2. Обнаружение сигнала Некоторые сигналы можно захватить и выполнить соответствующие действия. Другие сигналы нельзя уловить. Например, если команда получает сигнал 9, пользователю не нужно предпринимать какие?либо действия.Если ограничиться написанием сценариев,
Тест на обнаружение
Тест на обнаружение Суть теста в том, что в каждом тестируемом антивирусе запускалась задача сканирования по требованию каталога с огромным количеством вирусных экземпляров (detection rate test).Тест проводился на машине Intel Pentium 4 2600MHz, 512MB DDRAM с установленной Microsoft Windows XP Professional