Технологии программирования
Шрифт:
Ниже приведен пример реализации на языке Turbo Pascal структуры данных электронной таблицы. Начнем описание структуры с глобальных описаний:
Как видно, с целью краткости вызовов большинства процедур программы было принято решение об использовании весьма небольшого набора глобальных переменных. При именовании констант использованы только строчные буквы. Имена типов имеют префикс "Т". Имена, используемые часто в паре, выровнены по длине, например: MAXCOLS, MAXROWS, CurCol, CurRow. Два последних имени, используемых парно, были выровнены по длине. При выравнивании сокращено слово column — колонка. Используемые во многих процедурах глобальные имена сделаны краткими.
Помимо описанного в гл. 1 рефакторинга имен можно производить рефакторинг структуры данных программы. При рефакторинге структуры данных вместо нескольких самостоятельных массивов возможно использование таблицы и т. д. Особое внимание при рефакторинге следует уделять комментированию логической
4.6. ФАЙЛОВЫЕ СТРУКТУРЫ
Файл — упорядоченный набор информации на внешнем носителе (наиболее часто на дисковом носителе).
Физическая информация файла на внешнем носителе соотносится с логической структурой данных оперативной памяти методами доступа операционных систем.
Обычно файловая система операционной системы компьютера содержит следующие средства:
• управление файлами: хранение файлов, обращение к ним, их коллективное использование и защита;
• обеспечение целостности файлов — гарантирование того, что файл содержит только то, что требовалось;
• средства управления внешней памятью (распределяют внешнюю память для размещения файлов).
В случае диска большого объема на нем могут находиться много тысяч файлов. Если группировать всю информацию о местонахождении файлов и дескрипторы файлов в одном месте, то поиск конкретного файла будет занимать слишком много времени. В этом случае выгодно использовать многоуровневые каталоги файлов и системное имя файла формировать с именем пути от корневой папки (корневой директории) к данному файлу (как в UNIX, MS DOS, MS Windows) или от текущей папки (текущей директории), в котором находится файл исполняемой программы.
Дескриптор файла или блок управления файлом может включать следующую информацию:
1) строковое имя файла;
2) тип файла (расширение имени) — информация для пользователя о предполагаемой информации в файле;
3) размещение файла во внешней памяти;
4) тип организации файла (прямой, последовательный, индексно-последовательный и т. д.);
5) тип устройства (несъемный, съемный, допускающий только чтение и т. д.);
6) данные (атрибуты) для контроля доступа (владелец, групповой пользователь, допущенный и общедоступный пользователи);
7) диспозицию (файл постоянный или временный);
8) дату и время создания;
9) дату и время последней модификации.
Элементы перечисления 1, 2 и 3 определяют полное имя файла.
При ставшей традиционной несвязной физической организации файл может занимать несколько разнесенных участков внешней физической памяти. В случае распределения при помощи списков секторов (блоков) секторы, принадлежащие одному файлу, содержат ссылки-указатели друг на друга. Все свободные секторы диска содержатся в списке свободного пространства. Удлинение или укорочение файла изменяет лишь список свободных секторов. Однако логическая выборка смежных значений может требовать длительных подводок головок дисковода. Хранение ссылок уменьшает объем памяти.
Наиболее общими операциями работы с файлами являются следующие операции:
• связывание полного имени файла с файловыми переменными;
• открытие файла (например, для записи, только чтения, изменения длины);
• закрытие файлов;
• установление атрибутов файла.
Закрытие файла является важной операцией. При ее выполнении происходит физическое выталкивание информации из файлового буфера операционной системы на внешний носитель, а также освобождаются ресурсы операционной системы.