Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Совершенный код. Мастер-класс - Макконнелл С.

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 201 202 203 204 205 206 < 207 > 208 209 210 211 212 213 .. 426 >> Следующая

именами работников, датами их приема на работу и окладами, вы
можете создать один индекс для доступа к таблице по имени
работника, второй - для доступа на основе даты приема, и
третий - для доступа на основе размера зарплаты.
И последнее преимущество индексной схемы доступа - общее для
всех таблиц поиска удобство сопровождения. Данные,
закодированные в таблицах, легче сопровождать, чем внедренные
в код. Для увеличения гибкости поместите код индексного
доступа в отдельный метод и вызывайте его, когда вам нужно
получить значение ключа на основе номера товара. Когда
понадобится изменить таблицу, вы можете решить изменить схему
индексного доступа или даже перейти к другому способу доступа
к таблице поиска. Схему доступа будет легче поменять, если код
доступа по индексу не разбросан по всей программе.
18.4. Таблицы со ступенчатым доступом
Еще один способ табличного доступа - ступенчатый метод. Этот
метод не такой прямой, как индексная структура, но позволяет
не терять такого большого объема памяти.
Основная идея ступенчатой структуры в том, что записи в
таблице соответствуют некоторому диапазону данных, а не
отдельным элементам (рис. 18-5).

Рис. 18-5- Ступенчатый подход классифицирует каждый элемент,
определяя уровень, на котором он наталкивается на "лестницу".
"Ступенька", в которую этот элемент упирается, определяет его
категорию
420 ЧАСТЬ IV Операторы
Например, если вы пишете аттестационную программу, диапазон
оценки "В" может быть в пределах 75-90%. Вот список оценок,
которые вам однажды, возможно, придется запрограммировать:
> 90.0%
А
< 90.0%
В
< 75.0%
С
< 65.0%
D
< 50.0%
F
Это ужасный диапазон для табличного поиска, потому что вы не
можете написать простую функцию преобразования данных для
соответствия буквам от А до F. Индексная схема неудобна, так
как используются числа с плавающей запятой. Вы можете
предложить конвертировать числа с плавающей запятой в целые,
что для данного случая вполне допустимо, однако в целях
иллюстрации этот пример будет придерживаться чисел с плавающей
запятой.
Применяя ступенчатый метод, вы помещаете верхнюю границу
каждого диапазона в таблицу, а затем пишете цикл для сравнения
количества баллов с этой верхней
границей. Обнаружив точку, в которой сумма баллов в первый раз
превысит
заданный предел, вы узнаете оценку. Применяя ступенчатую
методику, надо следить за правильной обработкой граничных
точек диапазона. Вот пример кода Visual Basic, присваивающей
оценки группе студентов, основываясь на данных этого примера:
Пример ступенчатого поиска в таблице (Visual Basic)
1 Подготавливаем данные для таблицы оценок.
Dim rangeLimit() As Double = { 50.0, 65.0, 75.0, 90.0, 100.0 }
Dim grade() As String = { "F", "D", "С", "B", "A" }
maxGradeLevel = grade.Length - 1
' Присваиваем оценки, основываясь на количестве баллов,
набранных студентом. gradeLevel = 0 studentGrade = "А"
While ( ( studentGrade = "А" ) and ( gradeLevel <
maxGradeLevel ) )
If ( studentScore < rangeLimit( gradeLevel ) ) Then
studentGrade = grade( gradeLevel )
End If
gradeLevel = gradeLevel + 1 Wend
Хотя это и простой пример, вы легко можете его обобщить для
работы с несколькими студентами или несколькими системами
оценок (например, введя разные оценки для различных уровней
сложности выполняемых заданий), а также для изменения системы
оценок.
Преимущество этого подхода перед другими табличными методами в
том, что он хорошо работает с нестандартными данными. Пример с
оценками прост с той точки зрения, что, хотя оценки и
присваиваются через неодинаковые промежут
ГЛАВА 18 Табличные методы 421
ки, сами рассматриваемые числа - "круглые", оканчивающиеся на
5 или 0. Ступенчатый способ столь же хорошо подходит и для
данных, не заканчивающихся на 5 или 0. Вы можете применять эту
методику и в статистических задачах для работы с такими
примерами вероятностных распределений, как этот:
Такие ужасные числа сводят на нет все попытки создать функцию
для их точного преобразования в табличные ключи. В этом случае
следует использовать ступенчатый метод.
Этот подход также позволяет оценить главные преимущества
табличных методов: гибкость и модифицируемость. Если диапазоны
баллов в примере с оценками надо изменить, программу легко
исправить, изменив элементы массива RangeLimit. Вы легко
можете обобщить метод выставления отметок так, чтобы он
принимал извне таблицы с отметками и соответствующими
граничными значениями баллов. При выставлении оценок не
обязательно использовать баллы, выраженные в процентах, их
можно поменять на обычные единицы, и это не потребует больших
изменений в программе.
Вот несколько тонкостей, которые надо принимать во внимание,
применяя ступенчатый метод.
Следите за граничными точками Убедитесь, что вы учитываете
верхнюю границу каждого диапазона. Выполните ступенчатый поиск
так, чтобы он находил значения, соответствующие любому
интервалу, кроме самого верхнего, а затем задайте несколько
Предыдущая << 1 .. 201 202 203 204 205 206 < 207 > 208 209 210 211 212 213 .. 426 >> Следующая