КАТЕГОРИИ: Архитектура-(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. РАБОТА С ДИСКОВЫМИ ФАЙЛАМИ В случаях, когда на компьютере обрабатываются большие наборы данных, или данные должны быть сохранены после завершения программы, следует сохранять их в дисковых файлах. Для описания структуры файла введем следующие термины. Каждый файл состоит из одной или нескольких записей. Каждая запись, в свою очередь содержит поля данных. Обычно, файл организуется так, что все его записи имеют одинаковую структуру. Если сравнить файл с таблицей, то строка таблицы соответствует записи, а отдельная клетка – полю. Например, пусть это файл о кадровом составе подразделения, где для каждого сотрудника хранятся данные: фамилия, табельный номер, год рождения, зарплата (в тыс. руб.).
И конечно, файл должен иметь имя, которое дается по известным правилам для образования имен файлов. Пусть именем нашего файла будет 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |