Определение наборов данных и их организация

Последовательность постановки задачи

Постановка задачи обязательно предваряет разработку текста программы. Даже если кто-то из "советчиков" говорит, что он это не делает, не верьте. Просто он делает постановку задачи в неявном виде во время проектирования программы. Для этого нужен большой опыт и наработка большого количества шаблонных решений. Но даже в этом случае вероятность ошибочных и нерациональных решений велика, немалый объем будет иметь работа по исправлению ошибочных решений[2].

Постановка задачи предусматривает следующие операции:

· составление технического задания,

· определение входного и выходного набора данных и их организацию,

· определение набора промежуточных данных,

· определение способа хранения данных,

· определение алгоритма преобразования входных данных в промежуточные и выходные данные,

· разработку интерфейса программы,

· проектирование структуры программы,

· разработку алгоритма работы программы в целом.

Техническое задание составляет обычно заказчик, иногда сам программист, чаще оно является результатом совместного труда заказчика и программиста. Остальные этапы выполняет или постановщик задачи, или непосредственно программист.

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

Входной набор данных обычно отражает исходные данные, которые задаются для решения задачи, выходные данные описывают полученный результат. Промежуточные данные вводятся для упрощения вычисляемых выражений и для согласования возможностей интерфейса пользователя с процессом вычислений, выполняемых программой. Например, из второй главы следует, что подавляющее число элементов пользовательского интерфейса вводит и выводит данные типа String (т.е. строка), а в программе вычисления выполняются, как правило, над данными численных типов. Поэтому "для согласования интересов" придется вводить промежуточные данные в виде свойств Text, Caption и т.д. различных объектов. Иногда промежуточные данные вводятся просто для уменьшения длины текста программы.

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

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

Описание данных удобно делать в таблице со столбцами "Имя поля", "Тип данных поля", "Назначение поля". Имена сложных типов и полей программист определяет произвольно, тип данных – сообразуясь с алгоритмом предстоящей обработки данных. В столбец "Назначение поля" записывается комментарий (т.е. пояснение) и никакого значения для программы не имеет.

Например, нам необходимо описать тип "Student", для которого следует хранить "Фамилию, имя, отчество", "Псевдоним для ведомостей" и номер личного дела (зачетной книжки). Пример описания приведен в табл. 3.1. Если не предполагается использование сложных типов, то этот раздел описания данных опускается.

Таблица 3.1

Описание сложных типов данных (пример)

Имя поля Тип данных поля Назначение поля
Тип "Student" для ведения учетных данных студентов
FIO String Фамилия, имя, отчество
Psevdo String Фамилия и инициалы для повседневной работы
NumDel String Номер личного дела (зачетной книжки)

Удобнее всего описание наборов данных делать в специальной таблице со столбцами "Имя", "Тип", "Видимость", "Назначение", "Способ организации". В столбце "Имя" записываются идентификаторы данных, т.е. их смысловые имена, являющиеся строковыми эквивалентами адресов данных в ОЗУ. В столбце "Тип" записывают названия простых типов данных, поддерживаемых языком программирования (табл. 1.2), или имена сложных типов, определяемых пользователем.

В столбце "Видимость" записываются слова, определяющие доступность данных для различных блоков приложения (см. главы 1 и 4):

· "public",

· "private",

· "static".


В столбце "Способ организации" записываются слова:

· "переменная",

· "константа",

· "массив", "динамический массив",

· "элемент массива",

· "поле … базы данных …".

"Способ организации" описывает способ хранения данных в памяти вычислительной машины. Таблица описания наборов данных делится на три раздела – входные, выходные и промежуточные данные.

В столбце "Назначение" помещается комментарий, фиксирующий содержание (смысл) данных, имеющих это имя.