Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Проектирование представления данных

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

На "правильное представление данных" влияют следующие факторы:

- выбор способа задания исходных данных, адекватного алгоритму;
-описание такой формы представления данных, которое является экономичным для данной задачи;
- определение (вычленение, ограничение) таких областей значений исходных данных, которые гарантируют правильность результатов и безотказность исполнения программы.

 

Выбор типа для скалярного данного

При выборе типа для скалярного (простого) данного нужно учитывать разные аспекты. Тип данного, с одной стороны, должен представлять все множество значений, которые это данное может иметь в задаче, а с другой стороны, тип не должен быть "избыточным", т.е. не следует описывать более широкое множество значений. Однако тип данных нужно определять не только в зависимости от области значений исходных или результирующих данных задачи, но и на основе анализа выполняемых программой вычислений.

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

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

Наиболее ярко такой негативный эффект выполнения операций проявляется в программах, вычисляющих с типом integer разные характеристики в графической системе координат. Несмотря на небольшие значения этих координат (0 <= X < 640, 0 <= Y < 350), значения промежуточных результатов (например, расстояние между двумя точками) могут выходить за границы диапазона типа integer (-32768..32767), в результате чего получаются неверные результаты. Другой характерный пример - вычисление произведения элементов последовательности целых чисел.

 

Выбор представления наборов данных

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

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

 

Представления наборов данных в памяти

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

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

Хранение наборов данных

Для долговременного хранения данных, используемых в программе, используют файлы. Файл — представление последовательности элементов произвольной (обычно, достаточно большой) длины и, как правило, в целях ее долговременного хранения (не только на время исполнения программы). Посредством файлов обрабатываемые программой данные могут быть получены извне, а результаты выданы на то или иное устройство, сохранены для последующего использования.

Важный вопрос проектирования программы - в каких файлах хранить данные, как их при этом структурировать.

Работа с файлами достаточно сложна и разнообразна, она поддерживается операционной системой и модулями системы Турбо Паскаль. В программе каждый файл "представляет" своя файловая переменная, задаваемая именем. Она указывается во всех действиях с данным файлом, называемых обычно операциями ввода-вывода. В Турбо Паскале можно работать с тремя классами файлов: текстовыми, типизированными и нетипизированными.

Текстовый файл рассматривается как последовательность символов, разбитая на строки. Текстовый файл является файлом последовательного доступа, это означает, что любой элемент файла доступен (т.е. может быть прочитан или записан), только если перед ним был прочитан или записан элемент файла, непосредственно предшествующий данному элементу. С последовательным файлом не могут одновременно выполняться операции чтения и записи. Целые и вещественные значения в текстовом файле имеют внешнее (текстовое) представление и отделяются друг от друга по крайней мере одним пробелом.

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

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

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

 

Вопросы по теме

1. Что входит в понятие "программный проект"?
2. Что такое "язык программирования", какие Вы знаете языки, чем они отличаются?
3. Каковы составляющие понятия "среда программирования"?
4. Принципиальная схема компьютера, взаимодействие его устройств.
5. Что такое оперативная память, адрес.
6. Чем отличается внешняя память от оперативной, взаимодействие с ней программ.
7. Понятие операционной системы, ее основные функции и взаимодействие с программой пользователя.
8. Две составляющие понятия "надежная программа", их смысл, способы и приемы
разработки надежных программ.
9. Основные этапы разработки пользовательских программ, их содержание, циклы
разработки.
10. Понятие "проектирование программы", результат проектирования, средства
описания проектных решений.
11. Этап кодирования программы, назначение языков программирования.
12. Этап тестирования программы, аксиомы тестирования и способы улучшения
тестирования пользовательских программ.
13. Средства документирования программного проекта - требований к нему, программ, тестов.
14. Парадигмы программирования, их взаимосвязь и основные положения.
15. Модульное программирование, основная цель, понятие модуля, взаимодействие
модулей
16. Структурное программирование, основные положения.
17. Нисходящий способ разработки программного проекта, понятие заглушки, модели планирования при кодировании и тестировании.
18. Структурное кодирование, структурные управляющие конструкции.
19. Парадигма надежного программирования, основные положения.
20. Программная среда исполнения пользовательской программы.
21. Критерии выбора способа представления скалярных данных и их последовательностей.
22. Критерии выбора способа представления наборов данных в оперативной памяти.
23. Критерии выбора способа представления наборов данных в файлах
24. Программное окружение разработки пользовательской программы.
25. Программное окружение исполнения пользовательской программы.
26. Интегрированная среда программирования Турбо Паскаль, ее основные компоненты и их взаимодействие.
27. Назначение и состав основных стандартные модулей среды Турбо Паскаль.




 

Комментарии:


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru