Определение наборов данных и их организация
Последовательность постановки задачи
Постановка задачи обязательно предваряет разработку текста программы. Даже если кто-то из "советчиков" говорит, что он это не делает, не верьте. Просто он делает постановку задачи в неявном виде во время проектирования программы. Для этого нужен большой опыт и наработка большого количества шаблонных решений. Но даже в этом случае вероятность ошибочных и нерациональных решений велика, немалый объем будет иметь работа по исправлению ошибочных решений[2].
Постановка задачи предусматривает следующие операции:
· составление технического задания,
· определение входного и выходного набора данных и их организацию,
· определение набора промежуточных данных,
· определение способа хранения данных,
· определение алгоритма преобразования входных данных в промежуточные и выходные данные,
· разработку интерфейса программы,
· проектирование структуры программы,
· разработку алгоритма работы программы в целом.
Техническое задание составляет обычно заказчик, иногда сам программист, чаще оно является результатом совместного труда заказчика и программиста. Остальные этапы выполняет или постановщик задачи, или непосредственно программист.
Вряд ли удастся с первого раза четко проделать всю работу по постановке задачи. Поэтому не следует бояться сделать что-то не так или что-то не предусмотреть. Процесс постановки задачи цикличен и итеративен, т.е. при каждом повторении цикла результат приближается к идеалу. Для того, чтобы теоретические размышления приобрели конкретность, рекомендую по мере изучения этой главы познакомиться с примером, помещенным в ее последнем разделе.
Входной набор данных обычно отражает исходные данные, которые задаются для решения задачи, выходные данные описывают полученный результат. Промежуточные данные вводятся для упрощения вычисляемых выражений и для согласования возможностей интерфейса пользователя с процессом вычислений, выполняемых программой. Например, из второй главы следует, что подавляющее число элементов пользовательского интерфейса вводит и выводит данные типа String (т.е. строка), а в программе вычисления выполняются, как правило, над данными численных типов. Поэтому "для согласования интересов" придется вводить промежуточные данные в виде свойств Text, Caption и т.д. различных объектов. Иногда промежуточные данные вводятся просто для уменьшения длины текста программы.
При определении наборов данных следует указывать имена данных, их назначение, тип данных и способ организации, т.е. указывать являются ли данные именованными константами, переменными величинами или элементами массива. Применение сложных типов данных, разумеется, предусматривает их предварительное описание.
Современные методы организации и хранения информации часто опираются на базы данных, по существу, являющиеся таблицами. Поля записей баз могут также быть входными, выходными и промежуточными данными.
Описание данных удобно делать в таблице со столбцами "Имя поля", "Тип данных поля", "Назначение поля". Имена сложных типов и полей программист определяет произвольно, тип данных – сообразуясь с алгоритмом предстоящей обработки данных. В столбец "Назначение поля" записывается комментарий (т.е. пояснение) и никакого значения для программы не имеет.
Например, нам необходимо описать тип "Student", для которого следует хранить "Фамилию, имя, отчество", "Псевдоним для ведомостей" и номер личного дела (зачетной книжки). Пример описания приведен в табл. 3.1. Если не предполагается использование сложных типов, то этот раздел описания данных опускается.
Таблица 3.1
Описание сложных типов данных (пример)
Имя поля | Тип данных поля | Назначение поля |
Тип "Student" для ведения учетных данных студентов | ||
FIO | String | Фамилия, имя, отчество |
Psevdo | String | Фамилия и инициалы для повседневной работы |
NumDel | String | Номер личного дела (зачетной книжки) |
Удобнее всего описание наборов данных делать в специальной таблице со столбцами "Имя", "Тип", "Видимость", "Назначение", "Способ организации". В столбце "Имя" записываются идентификаторы данных, т.е. их смысловые имена, являющиеся строковыми эквивалентами адресов данных в ОЗУ. В столбце "Тип" записывают названия простых типов данных, поддерживаемых языком программирования (табл. 1.2), или имена сложных типов, определяемых пользователем.
В столбце "Видимость" записываются слова, определяющие доступность данных для различных блоков приложения (см. главы 1 и 4):
· "public",
· "private",
· "static".
В столбце "Способ организации" записываются слова:
· "переменная",
· "константа",
· "массив", "динамический массив",
· "элемент массива",
· "поле … базы данных …".
"Способ организации" описывает способ хранения данных в памяти вычислительной машины. Таблица описания наборов данных делится на три раздела – входные, выходные и промежуточные данные.
В столбце "Назначение" помещается комментарий, фиксирующий содержание (смысл) данных, имеющих это имя.