Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программа подсчета суммарной и средней заработной платы отдела




LOOP

END IF

2.11. РАБОТА С ДИСКОВЫМИ ФАЙЛАМИ

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

 

поле 1 Фамилия поле 2 Табель поле 3 Год рождения поле 4 Зарплата  
Петров А.В.       запись 1
Кулик С.П.       запись 2
...        
Яшин А.А.       запись N

И конечно, файл должен иметь имя, которое дается по известным правилам для образования имен файлов. Пусть именем нашего файла будет KADR.DAT.

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

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

Любому действию с файлом должно предшествовать его открытие следующим оператором

ü OPEN имя_файла [FOR тип] AS#номер_файла LEN длина

Здесь файлу с указанным именем файла присваивается произвольный номер файла. Далее при обработке файла обращение к нему происходит только по номеру.

Остальные параметры имеют следующий смысл:

тип – может иметь одно из значений, определяющих тип доступа:

OUTPUT – последовательный ввод данных в файл,

INPUT – последовательный вывод данных из файла.

APPEND – последовательный ввод с добавлением данных в конец файла.

RANDOM – прямой ввод-вывод данных. Если параметр тип не задан, подразумевается файл с прямым доступом (RANDOM).

длина – длина записи. По умолчанию равна 128 байт для файлов прямого доступа и 512 байт для файлов прямого доступа.

Примеры организации доступа к файлу KADR.DAT:

OPEN "kadr.dat" FOR OUTPUT AS#1 – запись в начало нового файла

(номер 1) с последовательным доступом

OPEN "kadr.dat" FOR APPEND AS#2 – запись (добавление) в конец

существующего файла с последовательным доступом

OPEN "kadr.dat" FOR INPUT AS#3 – чтение с начала существующего

файла с последовательным доступом

OPEN "kadr.dat" FOR RANDOM AS#4 – запись или чтение файла с

произвольным доступом

Функция

üLOC (номер_файла)

возвращает текущую позицию в открытом файле. Для файлов прямого дос­ту­па, возвращается номер записи, к которой было последнее обращение. Для файлов последовательного доступа – текущую байтовую позицию, деленную на 128.

Функция

üEOF (номер_файла)

возвращает значение “истина”, если указатель в файле дошел до его конца. Функция позволяет контролировать положение указателя и не допускать оши­бочных обращений за пределы файла.

Функция

üLOF (номер_файла)

возвращает размер открытого файла в байтах.

Оператор

üSEEK #номер_файла, позиция_в_файле

устанавливает указатель записей в заданную позицию. Для файлов прямого доступа – на запись с заданным номером. Для файлов с последовательным доступом – на байт с заданным номером от начала файла. В таких файлах оператор удобно использовать для перехода в его начало (например, SEEK #4,1 – переход в начало файла #4).

Оператор

üCLOSE [[#номер_файла [,[#номер_файла]..]

закрывает файлы с перечисленными номерами. Если параметры отсутствуют, закрываются все файлы.

¶ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА. Работа с такими файлами осуществляется с помощью следующих операторов и функций.

Оператор

üINPUT #номер_файла, переменные

читает данные из файла последовательного доступа в перечисленные пере­менные. Типы данных в файле и типы переменных должны соответствовать друг другу.

Оператор

üWRITE #номер_файла [,список_выражений]

посылает данные из списка выражений в файл последовательного доступа.

Выводимые значения разделяются запятыми. Символьные строки заклю­чаются в кавычки.

Оператор

üPRINT #номер_файла, [USING формат;] список_выражений[,/;]

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

Пример. Ввести в файл KADR.DAT данные о сотрудниках учреждения (фамилия, номер отдела, зарплата), первоначально хранимых в массивах fam$(n), ot(n), zar(n). Затем вывести из файла список сотрудников отдела 123, а также суммарную и среднюю зарплату его работников.

 

n=6 'размерность исходных массивов данных (до 6 сотрудников)

'исходные массивы - фамилии, отделы, зарплаты

DIM fam$(n), ot(n), zar(n)

DATA "Иванов",123,800, "Петров",564,780, "Сидоров",123,950

DATA "Ильин",123,700, "Семина",564,600, "Коваль",123,900

READ fam$(1), ot(1), zar(1), fam$(2), ot(2), zar(2), fam$(3), ot(3), zar(3)

READ fam$(4), ot(4), zar(4), fam$(5), ot(5), zar(5), fam$(6), ot(6), zar(6)

'открытие файла KADR.DAT для ввода данных

OPEN "kadr.dat" FOR OUTPUT AS 1

PRINT " Список сотрудников"

PRINT "ФИО Отдел Зарплата"

FOR i=1 TO n 'запись данных в файл из массивов

WRITE #1, fam$(i), ot(i), zar(i)

PRINT fam$(i), ot(i), zar(i)




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 417; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.