Реферат по предмету "Программирование"


Обработка последовательных файлов в программе

Обработка
последовательных файлов в программе





Кузнецова В. С., преподаватель информатики,



МОУ
межшкольный учебный комбинат №2, г. Хабаровск

Одним
из трудных для учащихся и преподавателей разделов программирования является
программирование обработки файлов. В Хабаровском межшкольном учебном комбинате
№2 накоплен определенный опыт по обучению школьников приемам программирования,
в том числе, при работе с файлами. Предлагаем вниманию читателей материал на
эту тему, подготовленный В.С. Кузнецовой.

В
разделе алгоритмизация и программирование мы работаем в основном с простыми
типами данных и только одним из сложных (структурных) типов данных – массивами,
при этом опускается работа с файлами данных. Это связано с тем, что в учебном
плане мало учебных часов отводится на данный раздел. Несмотря на нехватку
времени, желательно в конце раздела рассмотреть тему "Обработка
последовательных файлов в программе". Учащиеся уже должны знать, что такое
файл. Поэтому занятие необходимо начать с восстановления опорных знаний:

Что
такое файл?

Какими
способами можно создать файл?

Каким
способом вводили данные в программу?

Каким
способом выводили данные из программы?

Какие
операторы при этом использовали?

К
данным, записанным на диске можно обратиться прямым методом доступа или
последовательным методом доступа. При последовательном доступе данные должны
читаться из файла в том порядке, в каком они были записаны. Прямой доступ к
файлу позволяет читать и обновлять записи независимо от их положения в файле, без
перебора.

Последовательные
файлы следует рассматривать как альтернативу экрана и клавиатуры. Все, что
выводилось на экран, в таком виде и по таким же правилам выводится в
последовательный файл, а все, что вводилось с клавиатуры, вводится из
последовательного файла.

Пусть
данные записаны на диске в файле File1.dat. Как к ним обратиться из программы?
Для этого необходимо в программе предусмотреть:

Связь
имени файла с каналом ввода – вывода и объявить его открытым.

Объявить
способ доступа к файлу (последовательный или прямой).

Переслать
данные.

Закрыть
канал ввода – вывода, связанный с файлом.

Рассмотрим
операторы, с помощью которых осуществляется эта работа на языках
программирования Бейсик и Паскаль.

На
языке программирования Бейсик.

Оператор
OPEN "открывает" файл, т.е. делает файл на диске известным программе,
связывает имя файла на диске с номером канала ввода – вывода в программе и
указывает режим работы с файлом.

Формат:

Open
"имя файла" [for режим] as # номер канала [len=размер записи]

Режимы
для последовательных файлов:

INPUT    - для чтения

OUTPUT  - для записи

APPEND  - для добавления данных в файл.

Пример:

       Open "File1.dat" for input as
#1

Оператор
PRINT # предназначен для вывода данных в файл.

Формат:
PRINT #номер канала, имя переменной

Пример:

       Print #1, fam$(i), sum(i)

Оператор
INPUT # предназначен для ввода переменных из файла (так же как это делает
оператор INPUT при их вводе с клавиатуры).

Формат:
INPUT #номер канала, список переменных

Пример:

       Input #1, fam$(i), kol(i)

Функция
EOF позволяет определить конец файла.

Формат:
EOF(номер канала)

Оператор
CLOSE # "закрывает" файл, т.е. отсоединяет его от программы и
освобождает в ней канал ввода - вывода.

Формат:
CLOSE #номер канала

Задача:
Рассчитать зарплату на каждого члена бригады и записать в файл File2.dat данные
фамилию члена бригады и его зарплату с учетом подоходного налога. Данные по
каждому члену бригады (фамилия и количество сделанных изделий) содержатся в
файле File1.dat. Примечание: количество членов бригады, стоимость изделия и
процент на зарплату от прибыли ввести с клавиатуры.

Input
" количество членов бригады ";n

Input
" стоимость изделия";r

Input
" процент на зарплату от прибыли ";p

p
= p/100

Dim
fam(n), kol(n), sum(n)

Open "File1.dat" for input
as #1

for i = 1 to n

Input #1, fam$(i), kol(i)

sum(i)
= kol(i)*r*p*0.13

next
i

Close
#1

Open "File2.dat" for
output as #1

for i = 1 to n

Print #1, fam$(i), sum(i)

next
i :Close #1

На
языке программирования Паскаль.

В
Турбо Паскале различают текстовые файлы, типизированные файлы и
нетипизированные файлы. При работе с файлами ключевым понятием является понятие
переменной файлового типа или файловой переменной и описывается она в разделе
переменных в зависимости от класса файла. Для текстовых файлов файловая
переменная принадлежит стандартному типу Text. Файловая переменная (ф.п.)
связывается с именем файла с помощью оператора ASSIGN.

Формат:

Assign
(,' ');

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

Форматы:

Reset
();

Rewrite
();

Для
чтения данных из файла используются процедуры READLN, READ, BLOCKREAD.

Формат:

Readln
(, );

Для
записи данных в файл используются процедуры WRITELN, WRITE, BLOCKWRITE.

Формат:

Writeln
(, );

После
завершения работы с файлом , его необходимо "закрыть" оператором Close.


Формат:
Close ();

Уничтожить
ненужный файл оператором Erase (), а переименовать файл –
оператором Rename (,), где строка представляет новое
имя файла.

Текстовый
файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ
к каждой строке последовательный, начиная с первой. В конце каждой строки
ставится маркер EOLN (End Of Line - конец строки) , а в конце всего файла
маркер EOF (End Of File – конец файла).

Рассмотрим
работу с файлами на примерах.

Пример
1.

На
диске а: записан файл posl.txt, в каждой строке которого записана пословица.
Определить сколько букв в каждой пословице и вывести результат вычисления на
экран.

program
texst;

var
f: text;   {* файловая переменная *}

s:
integer;   {*     число букв    
 *}

sim:
char;   {*       символ      
*}

begin

Assign
(f, 'a:posl.txt');

reset
(f);            {*      открытие файла       *}

while
not eof (f) do    {*   проверка
конца файла    *}

begin

s:=0;

while
not eoln (f) do {* проверка конца строки *}

begin

read(f,
sim);

if
(sim' ') or (sim',') then s:=s+1;

end;

writeln('число
букв в пословице ',s);

readln(f);       {*
переход на новую строку *}

end;

Close(f)
{**}

end.

Пример
2.

В
существующем файле dan1.dat записана матрица из целых чисел. В новый файл
dan2.dat переписать данную матрицу и добавить в каждую строку слово
"сумма=" и результат вычисления суммы чисел в данной строке.

Program
matrica;

var f1,f2: text;

  
x, s: integer;

begin

Assign
(f1, 'dan1.dat');

Reset
(f1); {*      открытие файла для чтения       *}

Assign
(f2, 'dan2.dat');

Rewrite
(f2); {*      открытие файла для записи     *}

While
not eof (f1) do

begin

s:=0;

While not eoln (f1) do


begin

Read(f1,x);

Write(f2,x);

s:=
s + x;

end;

Writeln (f2,'  ',' сумма=',s);

Readln(f1);

end;

close(f1);
close(f2);

Writeln
('Работа завершена, файл создан на диске');

end.

При
выполнении операций ввода-вывода данных по умолчанию автоматически производится
проверка на возникновение ошибки. При обнаружении ошибки выполнение программы
прекращается. Но в программе можно предусмотреть собственную реакцию на
ошибочные ситуации. Для этого в начале "опасного" фрагмента
отключается автоматическая проверка {$I-}. При возникновении ошибки формируется
код, который обрабатывается функцией IOResult. Функция IOResult возвращает в
программу код ошибки, обнуляет этот код, поэтому последующие обращения к этой
функции будут давать нулевой результат, пока какая-либо операция не закончится
аварийно.

Пример:

Assign
(f, 'file1.dat');

{$I-}    {* отключаем автоматическую проверку *}

Reset
(f);

code:=
IOResult; {*   получили код результата    *}

if
code 0 then

begin          {*      возникла ошибка       *}

write
(' Ошибка при открытии файла ');

case
code of

1:
write('файл не найден');

3:
write('маршрут не найден');

4:
write('слишком много открытых файлов');

5:
write('запрет доступа к файлу');

12:
write('некорректный код доступа к файлам');

else

……..

end

end;

{$I-}      {* 
включаем автоматическую проверку   *}

…………………….

После
рассмотренных примеров можно предложить задачи для самостоятельной работы.

Задача
1. Данные об абитуриентах (фамилия, имя, отчество, средний балл аттестата)
содержатся в файле F1.txt. Напишите программу, которая запрашивала бы отметки
всех сданных экзамен каждого абитуриента и формировала новый файл F2,.txt в
который вошли бы следующие сведения об абитуриентах: фамилия, имя, отчество,
средний балл аттестата, отметка1, отметка2, отметка3.

Задача
2. Данные о налогоплательщиках (фамилия, имя, отчество, адрес) находятся в
файле F1.txt. Написать программу, которая выводила эти сведения в таблицу:




Фамилия, имя, отчество





адрес





доход





налог
























Доход
ввести с клавиатуры. Налог рассчитать 15% от дохода. Доход и налог вывести в
таблицу.

Задача
3. Составить программу обработки психологического теста. Вопросы, ответы и
баллы за каждый вопрос содержатся в последовательном файле.
Список литературы

Для
подготовки данной работы были использованы материалы с сайта http://www.khspu.ru


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.