Cтраница 4
Для случая очень большого текста, когда планируется выполнять лишь небольшое количество поисков, построение полного индексного указателя, скорее всего, будет неоправданным. В части 5 рассматривается задача поиска строк, при которой без какой-либо предварительной обработки требуется быстро определить, содержит ли текст заданный искомый ключ. В ней также исследуется ряд задач поиска строк, которые лежат между двумя крайними ситуациями без выполнения какой-либо предварительной обработки и построения полного индексного указателя для огромного текста. [46]
После того как список был создан, необходимо его заполнить. Следующие функции предназначены для работы со строками списка. Они позволяют выполнить такие основные операции, как добавление и удаление строк из списка, вставку строк в определенное место в списке, поиск строк, удаление всех строк, а также заполнение списка имен файлов. К этой же группе относятся функции получения информации о конкретных элементах списка и ассоциирования с ними дополнительных данных. Последняя возможность позволяет создавать списки объектов самых разных типов, возлагая при этом работу по отображению их описания на Windows, исключая таким образом необходимость создания функций отображения элементов, что нужно для самоотображаемых элементов управления. [47]
Алгоритм Горнера часто представляют как ловкий прием, экономящий время, но в действительности - это первый выдающийся пример элегантного и эффективного алгоритма, который сокращает время, необходимое для выполнения этой важной вычислительной задачи, делая его не квадратично, но линейно зависимым от N. Преобразование строк с ASCII-символами в целые числа, выполняемое в программе 4.5, является разновидностью алгоритма Горнера. Мы снова встретимся с алгоритмом Горнера в главе 14 и части 5, где он выступает в качестве основы для важного вида вычислений, относящихся к некоторым реализациям таблиц символов и поиску строк. [48]
Для этого следует заполнить поля выведенного на экран запроса. В поле File Name надо указать имя искомого файла ( параметр имя-файла), в поле Containing - искомую строку символов ( не заключая ее в кавычки или апострофы), выбрать клавишей [ Пробел ] режим поиска ( на всем диске - Entire disk, в текущем каталоге и его подкаталогах - Current directory and below, только в текущем каталоге - Current directory only) и указать режим поиска строки символов - без учета регистра букв ( в поле Ignore case запроса стоит крестик) или с учетом регистра букв. [49]
Для этого следует заполнить поля выведенного на экран запроса. В поле File Name надо указать имя искомого файла ( параметр имя-файла), в поле Containing - искомую строку символов ( не заключая ее в кавычки или апострофы), выбрать клавишей ( Пробел) режим поиска ( на всем диске - Entire disk, в текущем каталоге и его подкаталогах - Current directory and below, только в текущем каталоге - Current directory only) и указать режим поиска строки символов - без учета регистра букв ( в поле Ignore case запроса стоит крестик) или с учетом регистра букв. [50]
Процедура, исполняющая эту команду, ждет, когда выполнение команд дисплейного процессора будет прервано сигналом от светового пера. Когда произойдет прерывание, процедура исследует стек адресов возврата, используемый при вызове символов. Пустота стека означает, что световым пером отмечен некоторый элемент в некотором сегменте. В этом случае адрес команды дисплейного процессора, выполнявшейся в момент прерывания, используется для поиска строки корреляционной таблицы, которая описывает элемент, содержащий данную команду. Затем определяется сегмент, к которому относится элемент. Если стек адресов возврата не пуст, то это означает, что световым пером отмечен некоторый символ, и с помощью адреса, находящегося на вершине стека, выявляется, какой именно образ данного символа был отмечен. В конечном счете процедура генерирует команду L4 PICK RETURN ( ПЕРЕДАТЬ ИНДЕКС), используемую для передачи прикладной программе в основной ЭВМ индекса отмеченного элемента. [51]
Процедура, исполняющая эту команду, ждет, когда выполнение команд дисплейного процессора будет прервано сигналом от светового пера. Когда произойдет прерывание, процедура исследует стек адресов возврата, используемый при вызове символов. Пустота стека означает, что световым пером отмечен некоторый элемент в некотором сегменте. В этом случае адрес команды дисплейного процессора, выполнявшейся в момент прерывания, используется для поиска строки корреляционной таблицы, которая описывает элемент, содержащий данную команду. Затем определяется сегмент, к которому относится элемент. Если стек адресов возврата не пуст, то это означает, что световым пером отмечен некоторый символ, и с помощью адреса, находящегося на вершине стека, выявляется, какой именно образ данного символа был отмечен. В конечном счете процедура генерирует команду L PICK RETURN ( ПЕРЕДАТЬ ИНДЕКС), используемую для передачи прикладной программе в основной ЭВМ индекса отмеченного элемента. [52]