Структурирование данных.




Элементарные базовые структуры.

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

Любую программу можно синтезировать на основе элементарных базовых конструкций трех типов (8, 9]: простой вычислительной последовательности, выбора или альтернативы и повторения или итерации. Каждая структура характеризуется единственной точкой передачи управления в структуру и единственной точкой выхода из структуры.

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

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

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

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

Структурирование данных.

Важнейшей компонентой КП являются данные, которые поступают на обработку, накапливаются, преобразуются, хранятся и выдаются внешним абонентам [8, 10]. Четкое структурирование данных способствует уменьшению сложности КП и снижает вероятность ошибок из-за их неправильного использования.

Всю совокупность данных, используемых КП, можно разделить на простые переменные и массивы. Простые переменные представляют собой минимальную компоненту данных, имеющую имя и описание. Массивы образуются из нескольких простых переменных по некоторым правилам объединения, упорядочения и имеют собственное имя, описание и структуру. Это обеспечивает возможность использования массива как единой законченной конструкции. Основными символами для описания данных являются буквы, цифры и ограничители, позволяющие сформировать полные описания. Наиболее часто используются следующие типы переменных:

вещественные, принимающие числовые Действительные положительные и отрицательные значения в заданных пределах;

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

булевы, принимающие только два значения: «да» или «нет» («истина» или «ложь»);

двоичные, представляющие собой последовательность битов, в их описании должны представляться кодировка и смысловое содержание каждого значения переменной;


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

 

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

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

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

стек, для которого единственными операциями являются упорядоченная запись переменной в конец массива и чтение последней записанной переменной;

очередь, запись в которую новых значений переменных производится в конец массива, а выбор используемой переменной — из начала массива;

реверсивная очередь, допускающая запись и чтение переменных для обоих концов массива с некоторыми дополнительными правилами выбора операций;

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

дерево, характеризующееся несколькими адресами связи у каждой простой переменной (или частного массива), что позволяет их объединять в разветвленную структуру и изменять направление поиска в зависимости от результатов проверки некоторого условия.

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

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: