nextupprevious

Next:3.3 Разработка алгоритма
Up:3 Общие рекомендации по выполнению заданий
Previous:3.1 Анализ задачи
 


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

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

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

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

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

Далее необходимо зафиксировать внутреннее представление входных, выходных и промежуточных данных, обрабатываемых в программе, т.е. выбрать те средства языка программирования, которыми описывается это представление. Отметим, что для входных данных оно вовсе не обязано совпадать с внешним представлением. Например, в качестве внутреннего представления множества из $N$ точек на плоскости удобно брать либо матрицу размером $N\times 2$, в которой $i$-я строка состоит из координат $i$-й точки, либо в виде массива, элементами которого являются записи с двумя полями -- абсциссой и ординатой соответствующей точки. Вообще, выбор внутреннего представления определяется главным образом требованием эффективности того алгоритма, который нужно построить для решения задачи, и может оказать существенное влияние как на объем используемой памяти, так и на время работы алгоритма.
 

Next:3.3 Разработка алгоритма
Up:3 Общие рекомендации по выполнению заданий
Previous:3.1 Анализ задачи


 © В.Н. Касьянов, Е.В.Касьянова, 2004