Информатика и технология программирования

         

Смысл переменных в структурах данных


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

l ПОСЛЕДОВАТЕЛЬНОСТЬЮ называется упорядоченное множество переменных, количество которых может меняться. В идеальном случае последовательность может быть неограниченной, реально же в программе имеются те или иные ограничения на ее длину. Рассмотрим самый простой способ представления последовательности. Если переменные принимают целые положительные значения, то их последовательность может быть размещена в обычном массиве. Для того, чтобы определить текущее количество элементов последовательности можно поступить двумя способами :



-использовать дополнительную переменную - счетчик числа элементов ;



-добавлять каждый раз в качестве обозначения конца последовательности дополнительный элемент с особым значением - признак конца последовательности, например нулевой (ОГРАНИЧИТЕЛЬ ПОСЛЕДОВАТЕЛЬНОСТИ).

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


// создать пустую последовательность


A[0]=0;


// найти
конец последовательности


for(n=0; A[n]!=0; n++);


// добавить в конец последовательности


for(n=0; A[n]!=0; n++);
A[n]=c; A[n+1]=0;


// включить в последовательность под заданным номером n


for (i=0; A[i]!=0; i++);
for (; i&#62=n; i--) A[i+1]=A[i];
A[n]=c;


// удалить из последовательности под заданным номером n



for (i=0; A[i]!=0; i++);
if (n&#60=i) { for(; A[i]!=0; i++) A[i]=A[i+1]; }

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

int A[20]; int i=0;
while (i&#60 19; i++)
{ ... получить " c" ...
if (...нет очередного " с" ...) break;
A[i++]=c; // добавить " с" к последовательности

}
A[i]=0; // добавить ограничитель последовательности



В приведенном фрагменте ключевым является
выражение A[i++]=c; (или A[i]=c; i++ ) . В нем переменная i имеет смысл - текущий элемент последовательности, а массив A[] - сама последовательность. Само выражение понимается как - добавить " с" в последовательность. В данном примере добавление очередного элемента связано с шагом цикла, в котором это добавление производится. Однако такое же действие - добавление в последовательность, может быть никоим образом не связано с текущей логикой программы, оно может производиться при любых условиях, когда в этом возникает необходимость

for (k=0; ...for(j=0 ...if...
if (...есть очередное " с" ...)
A[i++]=c; // добавить " с" к последовательности

A[i]=0; // добавить ограничитель последовательности


Содержание раздела