Составители:
Рубрика:
83
Вспомните, что при создании индексного файла stud03 Вы использовали ключ «-»
(минус!) Балл_сес01 (этим достигалось упорядочивание по убыванию: если Балл_сес01
возрастает, то - Балл_сес01убывает).
Запомните! Команда FIND ищет не значение, записанное в соответствующем поле, а значение
ключа индексирования
Поэтому для того, чтобы найти запись, в которой Балл_сес01=4.2 нужно набрать
команду
FIND 4.2 (с минусом).
з) Выполните следующие задания:
найдите запись, в которой средний балл за сессии 01 и 02 равен приблизительно 4.0;
найдите запись, в которой балл за сессию 01 равен 5.0;
найдите запись, в которой 5-
я и 6-я буква фамилии: «ее».
4.4.2. Решим более сложную задачу: составим программу, осуществляющую поиск
записей по очень приблизительным, «туманным» сведениям. Пусть требуется найти
запись по фамилии, относительно которой известно, что «где-то в середине» в ней есть
сочетание букв «вл».
Вначале «придумаем» алгоритм - последовательность действий, ведущих к
достижению результата:
•
предположим, что возможные варианты размещения буквы «в» в сочетании «вл» -
от 1-ого до 15-ого символа в поле ФИО;
•будем перебирать возможные варианты в цикле i=1... 15:
• проиндексируем файл по части имени поля
SUBSTR(ФИО,i,2)
• попытаемся найти буквы «тв»;
• если поиск удачен, то файловый указатель остановится на найденной записи
внутри
файла. Признак конца файла EOF( ) при этом примет значение «ложно» (.F., от
false - ложно). Дальнейший перебор нужно прекратить (это можно сделать, если
положить i=16 - значение цикловой переменной заведомо больше, чем заданное 15).
• если поиск неудачен, то файловый указатель остановится вне файла. Признак
конца файла EOF( ) при этом примет
значение «истинно» (.T., от true - истинно). Следует
продолжить перебор с новым вариантом размещения (присвоить i значение i+1);
•после окончания циклического поиска:
• либо будет найдена запись с буквами «вл» (тогда EOF( ) ложно);
• либо запись с буквами «вл» в файле отсутствует (тогда EOF( ) истинно).
•В зависимости от результатов поиска следует вывести
сообщение (либо с выдачей
искомой фамилии, либо с указанием, что в файле отсутствует запись, содержащая
заданное сочетание букв).
Ниже приведен текст программы, реализующий этот алгоритм. Некоторые
пояснения к новым командам:
Новые команды и функции:
SET SAFETY OFF – отключение режима, при котором Visual FoxPro 5.0 запрашивает
подтверждение Да/Нет (Y/N) перед выполнением команд, которые могут привести к
порче таблицы данных (например, перед записью новой информации в уже
существующий файл).
SET SAFETY ON - включение режима «безопасности».
SET EXACT OFF – отключение режима соблюдения точного соответствия наименования ключа
индексирования и запроса на
поиск в командах FIND, SEEK.
SET EXACT ON - включение режима точного совпадения.
SET NEAR ON|OFF- включение/отключение режима точного совпадения цифровых значений
ключа индексирования с искомым.
FIND (ключ) – нахождение номера записи в индексированном файле по значению КЛЮЧА.
SEEK (ключ) - ---------------»-----------------
83 Вспомните, что при создании индексного файла stud03 Вы использовали ключ «-» (минус!) Балл_сес01 (этим достигалось упорядочивание по убыванию: если Балл_сес01 возрастает, то - Балл_сес01убывает). Запомните! Команда FIND ищет не значение, записанное в соответствующем поле, а значение ключа индексирования Поэтому для того, чтобы найти запись, в которой Балл_сес01=4.2 нужно набрать команду FIND 4.2 (с минусом). з) Выполните следующие задания: найдите запись, в которой средний балл за сессии 01 и 02 равен приблизительно 4.0; найдите запись, в которой балл за сессию 01 равен 5.0; найдите запись, в которой 5-я и 6-я буква фамилии: «ее». 4.4.2. Решим более сложную задачу: составим программу, осуществляющую поиск записей по очень приблизительным, «туманным» сведениям. Пусть требуется найти запись по фамилии, относительно которой известно, что «где-то в середине» в ней есть сочетание букв «вл». Вначале «придумаем» алгоритм - последовательность действий, ведущих к достижению результата: •предположим, что возможные варианты размещения буквы «в» в сочетании «вл» - от 1-ого до 15-ого символа в поле ФИО; •будем перебирать возможные варианты в цикле i=1... 15: • проиндексируем файл по части имени поля SUBSTR(ФИО,i,2) • попытаемся найти буквы «тв»; • если поиск удачен, то файловый указатель остановится на найденной записи внутри файла. Признак конца файла EOF( ) при этом примет значение «ложно» (.F., от false - ложно). Дальнейший перебор нужно прекратить (это можно сделать, если положить i=16 - значение цикловой переменной заведомо больше, чем заданное 15). • если поиск неудачен, то файловый указатель остановится вне файла. Признак конца файла EOF( ) при этом примет значение «истинно» (.T., от true - истинно). Следует продолжить перебор с новым вариантом размещения (присвоить i значение i+1); •после окончания циклического поиска: • либо будет найдена запись с буквами «вл» (тогда EOF( ) ложно); • либо запись с буквами «вл» в файле отсутствует (тогда EOF( ) истинно). •В зависимости от результатов поиска следует вывести сообщение (либо с выдачей искомой фамилии, либо с указанием, что в файле отсутствует запись, содержащая заданное сочетание букв). Ниже приведен текст программы, реализующий этот алгоритм. Некоторые пояснения к новым командам: Новые команды и функции: SET SAFETY OFF – отключение режима, при котором Visual FoxPro 5.0 запрашивает подтверждение Да/Нет (Y/N) перед выполнением команд, которые могут привести к порче таблицы данных (например, перед записью новой информации в уже существующий файл). SET SAFETY ON - включение режима «безопасности». SET EXACT OFF – отключение режима соблюдения точного соответствия наименования ключа индексирования и запроса на поиск в командах FIND, SEEK. SET EXACT ON - включение режима точного совпадения. SET NEAR ON|OFF- включение/отключение режима точного совпадения цифровых значений ключа индексирования с искомым. FIND (ключ) – нахождение номера записи в индексированном файле по значению КЛЮЧА. SEEK (ключ) - ---------------»-----------------
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »