MAXCOLS = 100; {Размер таблицы}
MAXROWS = 100;
MAXINPUN = 79; {Длина вводимой строки}
{Значение атрибута вида клетки}
ТХТ = 0; {В клетке текст}
VALUE = 1; {В клетке значение}
FORMULA = 2; {В клетке формула}
{Тип вариантной информации клеток}
Туре
TString = String [MAXINPUT]; {Тип вводимых строк}
TCellRec = record {Тип информации клетки}
Error: Boolean; {Поле ошибки формулы}
case Attrib: Byte of {Attrib — это поле}
TXT: (TextStr: TString); {В клетке текст}
VALUE: (Value: Real); {В клетке значение}
FORMULA: (Fvalue: Real; {В клетке формула}
Formula: TString);
end;
end;
{Тип указателя на тип клетки}
TCellPtr = ^TCellRec;
{Тип элемента таблицы}
TCellTableElement = record
CellFormat: Word: {Формат клетки}
CellPtr: TCellPtr; {Указатель на клетку в ДРП}
end:
{Тип массива информации клеток таблицы}
TCellsTable = array [1..MAXCOLS, 1..MAXROWS] of TCellPtr;
Var {Глобальные переменные}
Cells: TCellsTable; {Статическая матрица всех клеток}
CurCell: TCellPtr; {Указатель на текущую клетку}
CurCol, {Колонка текущей клетки}
CurRow: Word; {Строка текущей клетки}
Как видно, с целью краткости вызовов большинства процедур программы было принято решение об использовании весьма небольшого набора глобальных переменных. При именовании констант использованы только строчные буквы. Имена типов имеют префикс "Т". Имена, используемые часто в паре, выровнены по длине, например: MAXCOLS, MAXROWS, CurCol, CurRow. Два последних имени, используемых парно, были выровнены по длине. При выравнивании сокращено слово column — колонка. Используемые во многих процедурах глобальные имена сделаны краткими.
Помимо описанного в гл. 1 рефакторинга имен можно производить рефакторинг структуры данных программы. При рефакторинге структуры данных вместо нескольких самостоятельных массивов возможно использование таблицы и т. д. Особое внимание при рефакторинге следует уделять комментированию логической структуры данных.
4.6.1. Физическая организация файлов
Файл — упорядоченный набор информации на внешнем носителе (наиболее часто на дисковом носителе).
Физическая информация файла на внешнем носителе соотносится с логической структурой данных оперативной памяти методами доступа операционных систем.
Обычно файловая система операционной системы компьютера содержит следующие средства:
• управление файлами: хранение файлов, обращение к ним, их коллективное использование и защита;
• обеспечение целостности файлов — гарантирование того, что файл содержит только то, что требовалось;
• средства управления внешней памятью (распределяют внешнюю память для размещения файлов).
В случае диска большого объема на нем могут находиться много тысяч файлов. Если группировать всю информацию о местонахождении файлов и дескрипторы файлов в одном месте, то поиск конкретного файла будет занимать слишком много времени. В этом случае выгодно использовать многоуровневые каталоги файлов и системное имя файла формировать с именем пути от корневой папки (корневой директории) к данному файлу (как в UNIX, MS DOS, MS Windows) или от текущей папки (текущей директории), в котором находится файл исполняемой программы.
Дескриптор файла или блок управления файлом может включать следующую информацию:
1) строковое имя файла;
2) тип файла (расширение имени) — информация для пользователя о предполагаемой информации в файле;
3) размещение файла во внешней памяти;
4) тип организации файла (прямой, последовательный, индексно-последовательный и т. д.);
5) тип устройства (несъемный, съемный, допускающий только чтение и т. д.);
6) данные (атрибуты) для контроля доступа (владелец, групповой пользователь, допущенный и общедоступный пользователи);
7) диспозицию (файл постоянный или временный);
8) дату и время создания;
9) дату и время последней модификации.
Элементы перечисления 1, 2 и 3 определяют полное имя файла.
При ставшей традиционной несвязной физической организации файл может занимать несколько разнесенных участков внешней физической памяти. В случае распределения при помощи списков секторов (блоков) секторы, принадлежащие одному файлу, содержат ссылки-указатели друг на друга. Все свободные секторы диска содержатся в списке свободного пространства. Удлинение или укорочение файла изменяет лишь список свободных секторов. Однако логическая выборка смежных значений может требовать длительных подводок головок дисковода. Хранение ссылок уменьшает объем памяти.
Читать дальше