Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Проектирование представления данных Весьма важный вопрос разработки программы - выбор представления данных в программе. Правильное представление данных свидетельствует о том, что этапы анализа задачи и проектирования программы действительно были выполнены аккуратно. На "правильное представление данных" влияют следующие факторы:
Выбор типа для скалярного данного При выборе типа для скалярного (простого) данного нужно учитывать разные аспекты. Тип данного, с одной стороны, должен представлять все множество значений, которые это данное может иметь в задаче, а с другой стороны, тип не должен быть "избыточным", т.е. не следует описывать более широкое множество значений. Однако тип данных нужно определять не только в зависимости от области значений исходных или результирующих данных задачи, но и на основе анализа выполняемых программой вычислений. В частности, для переменных, принимающих целочисленные значения, обычно выбирают один из целочисленных типов, подходящий для представления значений этих переменных. Однако диапазон значений этого типа может оказаться недостаточным для представления промежуточных значений - результатов операций над этими переменными. Если значение результата выходит за пределы диапазона указанного выше типа результата, то результат операции считается неверным. Турбо Паскаль не контролирует получение "недопустимых"' значений целочисленных типов и их интервалов при выполнении арифметических операций и стандартных функций, что часто приводит к получению неверных результатов при вычислении выражений. Наиболее ярко такой негативный эффект выполнения операций проявляется в программах, вычисляющих с типом integer разные характеристики в графической системе координат. Несмотря на небольшие значения этих координат (0 <= X < 640, 0 <= Y < 350), значения промежуточных результатов (например, расстояние между двумя точками) могут выходить за границы диапазона типа integer (-32768..32767), в результате чего получаются неверные результаты. Другой характерный пример - вычисление произведения элементов последовательности целых чисел.
Выбор представления наборов данных Одна из основных проблем, возникающих при проектировании программы - выбор подходящего представления в программе наборов данных (составных данных). Решение этой проблемы кажется довольно тривиальным, однако это далеко не так. Можно привести примеры, когда неправильное представление данных делает программу ненадежной, неэкономичной, сложной или вообще неадекватной задаче. Нужно тщательно проанализировать задачу, требования к ее исходным данным и результатам, алгоритмы возможного ее решения, прежде чем описывать данные. В языке Турбо Паскаль составные данные можно представлять массивами, строками, множествами, записями, файлами и списочными структурами. Практически невозможно дать рекомендации выбора того или иного представления составных данных в общем случае. Приведем здесь лишь несколько общих рассуждений, на которых будут основываться приводимые ниже приемы.
Представления наборов данных в памяти Наборы (последовательности) данных далеко не всегда нужно сохранять (представлять) в памяти исполняемой программы в виде того или иного составного данного. Нередко обработку такого набора данных можно выполнить по мере получения элементов этого набора - при вводе, чтении из файла или вычислении элементов. При этом иногда можно выполнять сразу несколько алгоритмов обработки. Правильный выбор представления набора данных возможен только на основе анализа задачи, алгоритма, а не путем формального отображения формулировки задачи. Набор данных в формулировке задачи может называться как единый составной объект (последовательность, совокупность, множество). В программе же он может представляться не обязательно составным данным (массивом, множеством, записью, файлом), а одним- двумя элементами. Например, вычисление элемента матрицы, минимального из максимальных элементов в строках матрицы, не требует сохранения максимальных элементов всех строк. Попутно с вычислением максимальных элементов, можно осуществлять и нахождение (выбор) минимального из них. Хранение наборов данных Для долговременного хранения данных, используемых в программе, используют файлы. Файл — представление последовательности элементов произвольной (обычно, достаточно большой) длины и, как правило, в целях ее долговременного хранения (не только на время исполнения программы). Посредством файлов обрабатываемые программой данные могут быть получены извне, а результаты выданы на то или иное устройство, сохранены для последующего использования. Важный вопрос проектирования программы - в каких файлах хранить данные, как их при этом структурировать. Работа с файлами достаточно сложна и разнообразна, она поддерживается операционной системой и модулями системы Турбо Паскаль. В программе каждый файл "представляет" своя файловая переменная, задаваемая именем. Она указывается во всех действиях с данным файлом, называемых обычно операциями ввода-вывода. В Турбо Паскале можно работать с тремя классами файлов: текстовыми, типизированными и нетипизированными. Текстовый файл рассматривается как последовательность символов, разбитая на строки. Текстовый файл является файлом последовательного доступа, это означает, что любой элемент файла доступен (т.е. может быть прочитан или записан), только если перед ним был прочитан или записан элемент файла, непосредственно предшествующий данному элементу. С последовательным файлом не могут одновременно выполняться операции чтения и записи. Целые и вещественные значения в текстовом файле имеют внешнее (текстовое) представление и отделяются друг от друга по крайней мере одним пробелом. Типизированный файл представляет собой последовательность однотипных элементов. С ним можно работать как с файлом последовательного доступа и как с файлом прямого доступа, в котором возможен непосредственный доступ к любому из его элементов. С одним и тем же файлом одновременно можно исполнять операции чтения и записи. Приведем несколько рекомендаций общего характера, которые нужно учитывать при проектировании хранения данных в файлах.
Вопросы по теме
|
||
Библиотека программиста. 2009. |
|