WWW.PDF.KNIGI-X.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Разные материалы
 

Pages:     | 1 |   ...   | 3 | 4 ||

«ПРОГРАММИСТ ПРАГМАТИК Путь от подмастерья к мастеру г* Как бороться с недостатками программного обеспечения _ _ Как создать динамичную и адаптируемую программу Т • ч ...»

-- [ Страница 5 ] --

Ответы к упражнениям 265 У п р а ж н е н и е 35 из раздела "Скорость алгоритма" Ответ: Программа p r i n t T r e e использует приблизительно 1000 байт стекового про­ странства для буферной переменной. Для движения вниз по древовидной схеме она рекурсивно вызывает саму себя, и каждый вложенный вызов добавляет еще 1 ООО байт к стеку. Она также вызывает саму себя когда добирается до вершин, но за­ канчивает работу сразу, когда обнаружит что переданный указатель обнулен. Если глубина дерева D, то отсюда максимальный объем, необходимый стеку, составляет (грубо): Ю О О х ф + 1).

Сбалансированное двойное дерево содержит вдвое больше элементов на каждом (D_1) D уровне. Дерево глубиной D содержит 1 + 2 + 4 + 8 +... + 2, или 2 — 1 элементов.

Отсюда, нашему дереву, состоящему из миллиона элементов, будет необходимо [lg( 1000001 ] или 20 уровней.

Поэтому мы рассчитываем, что наша подпрограмма будет использовать примерно 21 000 байт стекового пространства.

У п р а ж н е н и е 36 из раздела "Скорость алгоритма" Ответ: На ум приходит несколько процедур оптимизации. Программа p r i n t T r e e вызывает саму себя на вершинах дерева лишь для того, чтобы закончить работу при отсутствии потомков. Этот вызов увеличивает максимальную глубину стека примерно на 1000 байт. Мы также можем исключить рекурсию хвоста (второй ре­ курсивный вызов), хотя это и не будет затрагивать использование стека в наихуд­ шем случае.

–  –  –

У п р а ж н е н и е 3 7 из раздела "Скорость алгоритма" Ответ: Это можно сделать двумя путями.

Один из них заключается в том, чтобы пере­ вернуть проблему с ног на голову. Если в массиве имеется лишь один элемент, то мы не осуществляем итерации в цикле. Каждая дополнительная итерация удваивает раз­ мер массива, в котором мы можем осуществлять поиск. Отсюда общая формула раз­ т мера массива: п = 2, где т — число итераций. Если прологарифмировать обе части ra с основанием 2, то получим выражение lg(ft) = lg(2 ), которое из определения лога­ рифма превращается в lg (п) = т.

У п р а ж н е н и е 3 8 из раздела "Реорганизация" Ответ: Здесь мы могли бы предложить весьма умеренную реструктуризацию: убеди­ тесь, что каждый тест выполняется лишь один раз, и сделайте все вычисления стан­ дартными. Если выражение 2*basis (... ) * 1.05 появляется в других местах про­ граммы, то вероятно его стоит сделать функцией. В данном случае мы этого делать не стали.

Мы добавили массив rate_lookup, который инициализирован таким образом, что элементам, отличным от Texas, Ohio и Maine присвоено значение 1. Этот подход об­ легчает добавление значений для других штатов в будущем. В зависимости от ожидае­ мой схемы использования мы могли бы сделать поле points также средством поиска в массиве.

rate = rate_lookup[state];

amt = base * r a t e ;

calc = 2*basis(amt) + e x t r a ( a m t ) * 1. 0 5 ;

( s t a t e == OHIO) if p o i n t s = 2;

У п р а ж н е н и е 3 9 из раздела "Реорганизация" Ответ: Когда вы видите, что кто-либо использует перечислимые типы (или эквива­ лентные им в языке Java), для того чтобы провести различие между вариантами не­ коего типа, во многих случаях вы можете улучшить программу за счет создания под­ классов:

–  –  –

Обратите внимание на то, что мы выходим из процедуры тестирования с 0 или 1, так что мы можем использовать это и как часть более обширного теста.

В требованиях ничего не говорилось ничего о запуске этого компонента через сце­ нарий или даже с использованием языка. Конечные пользователи этого не увидят. Но у нас есть мощный инструмент, который мы можем использовать для быстрого и ис­ черпывающего тестирования нашей программы.

Упражнение 42 из раздела "Ошибка в определении требований"

Ответ:

1. Эта инструкция похоже на реальное требование: имеются ограничения, нала­ гаемые на приложение со стороны операционной среды.

2. Это может быть корпоративным стандартом, но не является требованием. Его лучше сформулировать так: "Фон диалогового окна должен настраиваться ко­ нечным пользователем. При поставке заказчику цвет будет серым". Еще луч­ ше было бы сформулировать его более широко: "Все визуальные элементы приложения (цвета, шрифты и языки) должны настраиваться конечным поль­ зователем".

3. Эта формулировка не является требованием, это архитектура. Когда вы стал­ киваетесь с подобным, вам придется копать очень глубоко, чтобы понять, что думает пользователь.

4. Основное требование вероятно выглядит примерно так: "Система предотвра­ щает ввод пользователем недопустимых значений в поля и предупреждает пользователя, если ввод этих значений имеет место".

5. Эта формулировка, по всей вероятности, является жестким требованием.

Решение головоломки с четырьмя точками, приведенной в разделе "Разгадка не­ вероятных головоломок".

Э. Х а н т, Д. Т о м а с

ПРОГРАММИСТ-ПРАГМАТИК

Путь от подмастерья к мастеру

–  –  –

Книга «Программист-прагматик» написана в виде последовательных законченных разделов и изобилует анекдотами, серьезными примерами и разнообразными аналогиями. В ней описываются самые интересные случаи из практики авторов и основные ловушки, относящиеся к разным аспектам разработки программ.

Будь вы новичок, опытный программист или менеджер, ответственный за проекты в области программного обеспечения, — в любом случае используйте в своей работе уроки, описанные в книге, и вскоре ваша производительность, точность и удовлетворение от сделанной работы возрастут. Вы получите навыки и сформируете привычки, которые станут основой для долгосрочной успешной карьеры.

Вы станете программистом-прагматиком.

Энди Хант — энергичный столяр и музыкант, но (что интересно) пользуется наибольшим спросом как консультант. Энди специализируется в сочетании проверенных методик с новейшими технологиями, создавая непривычные, но от того не менее практичные конструкции. Энди — владелец своей собственной консалтинговой фирмы в Роли (штат Северная Каролина).

Дейв Томас любит совершать полеты на одномоторных самолетах и оплачивает свою привычку, отыскивая элегантные решения трудных задач, работая консультантом в таких разных областях, как аэрокосмическая промышленность, банковские и финансовые услуги, связь, туризм и транспорт, а также Интернет.

До своего переезда в США (1994) Дейв стал основателем британской компьютерной фирмы, прошедшей сертификацию по IS09001, которая осуществляла разработку сложных проектов для конкретных заказчиков по всему миру. В настоящее время Дейв является независимым консультантом в Далласе (штат Техас).

В настоящее время Дэйв и Энди работают под именем The Pragmatic Programmers, L L C, предоставляя свои услуги клиентам в США и используя совместный опыт работы, насчитывающий свыше 40 лет.



Pages:     | 1 |   ...   | 3 | 4 ||
Похожие работы:

«Министерство образования Республики Беларусь Учреждение образования «БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ» УТВЕРЖДАЮ Проректор по учебной и воспитательной работе _С.К. Дик «30» _05 2016 г. ПРОГРАММА вступительного экзамена в магистратуру по специальности I – 59 80 01...»

«Анализ многомерных данных в задачах многопараметрической оптимизации с применением методов визуализации А.Е. Бондарев, В.А. Галактионов Институт прикладной математики им.М.В.Келдыша РАН, Россия, Москва bond@ke...»

«Министерство образования Республики Беларусь Учреждение образования “Белорусский государственный университет информатики и радиоэлектроники” Баранов В.В. Основные теоретические положения (конспект лекций) по дисциплине Системное проектирование больших...»

«НЕВОД. Руководство администратора Аннотация Данное руководство предназначено для администратора информационноаналитической системы НЕВОД. Руководство содержит подробное описание действий по созданию системной базы данных, служебных структур НЕВОД, предметной области пользовательск...»

«МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОСТОВСКОЙ ОБЛАСТИ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ РОСТОВСКОЙ ОБЛАСТИ «РОСТОВСКИЙ-НА-ДОНУ КОЛЛЕДЖ СВЯЗИ И ИНФОРМАТИКИ» (ГБПОУ РО «РКСИ») ПРИКАЗ «17» августа 2016 №...»

«Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Кафедра информатики О.И. Костюкова ИССЛЕДОВАНИЕ ОПЕРАЦИЙ Учебное пособие для студентов специальности 31 03 04 «Информатика» всех форм обучения Минск 2003 УДК 519.854.3(...»

«УЧЕНЫЕ ЗАПИСКИ КАЗАНСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА Том 150, кн. 4 Естественные науки 2008 УДК 631.427.12 ИНФОРМАТИВНЫЕ ПОКАЗАТЕЛИ ФИТОТОКСИЧНОСТИ СЕРОЙ ЛЕСНОЙ ПОЧВЫ В УСЛОВИЯХ ЗАГРЯЗНЕНИЯ НЕФТЬЮ И.В. Леонтьева, Л.Г. Ахметзянова, Г.Р. Валеева Аннотация На основе комплексного исследования системы «серая лесн...»

«Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Кафедра: Радиоэлектронной техники ВВС и войск ПВО БОЕВОЕ ПРИМЕНЕНИЕ РЛС П-18 Теория для студентов дневной формы обучения по специальности: 444003 «Эксплуатация и ремонт радиолокационны...»

«В.В. Крюков, К.И. Шахгельдян Информационные технологии в университете: стратегия, тенденции, опыт Аннотация В статье обсуждаются цели и задачи информатизации вуза на современном этапе, современные тенденции в развитии информационных...»





















 
2017 www.pdf.knigi-x.ru - «Бесплатная электронная библиотека - разные матриалы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.