Читаем Программирование полностью

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

• Существует бесконечное множество вариантов типов данных (виды данных).

• Существует огромное количество способов организации коллекций данных.

• Существует громадное количество задач, которые мы хотели бы решить с помощью коллекций данных.

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

Для того чтобы понять, какая поддержка нам нужна, чтобы написать наш код, рассмотрим, что мы можем делать с данными, более абстрактно. Итак, можно сделать следующее.

• Собирать данные в контейнерах

 • например, собирать их в объектах классов vector, list и массивах.

• Организовывать данные

 • для печати;

 • для быстрого доступа.

• Искать данные

 • по индексу (например, найти 42-й элемент);

 • по значению (например, найти первую запись, в которой в поле “age” записано число 7);

 • по свойствам (например, все записи, в которых значение поля “temperature” больше 32 и меньше 100).

• Модифицировать контейнер

 • добавлять данные;

 • удалять данные;

 • сортировать (в соответствии с каким-то критерием).

• Выполнять простые математические операции (например, умножить все элементы на 1,7).

Мы хотели бы делать все это, не утонув в море информации, касающейся отличий между контейнерами, способами доступа к элементам и их типами. Если нам это удастся, то мы сделаем рывок по направлению к своей цели и получим эффективный метод работы с большими объемами данных.

Оглядываясь назад на методы и инструменты программирования, описанные в предыдущих главах, мы видим, что уже можем писать программы, не зависящие от типа используемых данных. Этот вывод основан на следующих фактах.

• Использование типа int мало отличается от использования типа double.

• Использование типа vector мало отличается от использования типа vector.

• Использование массива чисел типа double мало отличается от использования типа vector.

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

• Поиск значения в объекте класса vector не должен отличаться от поиска значения в массиве.

• Поиск объекта класса string без учета регистра не должен отличаться от поиска объекта класса string с учетом нижнего и верхнего регистров.

• Графическое изображение экспериментальных данных с точными значениями не должно отличаться от графического изображения экспериментальных данных с округленными значениями.

• Копирование файла не должно отличаться от копирования вектора.

Учитывая сказанное, мы хотим писать код, удовлетворяющий следующим условиям:

• его легко читать;

• легко модифицировать;

• он имеет систематический характер;

• он короткий;

• быстро работает.

  Для того чтобы минимизировать объем работы программиста, мы должны решить следующие задачи.

• Единообразный доступ к данным:

 • независимость от способа хранения данных;

 • независимость от типа данных.

• Доступ к данным, безопасный с точки зрения типа:

 • легкое перемещение по данным;

 • компактное хранение данных.

• Скорость работы:

 • поиск данных;

 • добавление данных;

 • удаление данных.

• Стандартные версии большинства широко распространенных алгоритмов таких как copy, find, search, sort, sum, ...

Библиотека STL обеспечивает не только эти возможности. Мы изучим эту библиотеку не только потому, что она представляет собой очень полезный набор инструментов, но и потому, что является примером максимальной гибкости и эффективности. Библиотека STL была разработана Алексом Степановым (Alex Stepanov) для того, чтобы создать базу для универсальных, правильных и эффективных алгоритмов, работающих с разнообразными структурами данных. Ее целью были простота, универсальность и элегантность математики.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных