Лаб раб 10П – 2 2013

advertisement
Лабораторная работа № 10П - 2
Текстовые файлы.
Задание к лабораторной работе № 10П - 2
1. Составить и отладить программу Task3, которая определяет количество строк в тексте,
содержащемся в файле Note.dat.
2. Составить и отладить программу Task4, которая определяет длину самой большой строки
в тексте, содержащемся в файле Note.dat.
3. Предъявить отлаженные программы Task3 и Task4 преподавателю, выполнить
индивидуальное задание и ответить на вопросы по теме лабораторной работы.
Краткие теоретические сведения
Немагнитные внешние устройства (логические) работают только с текстовыми
файлами. Файлы, содержащие тексты программ на Паскале и других языках
программирования, являются текстовыми. Различная документация и информация,
передаваемые по каналам электронной связи, — все это текстовые файлы.
В программе файловая переменная текстового типа описывается следующим
образом:
Var <идентификатор> : text;
Текстовый файл представляет собой символьную последовательность, разделенную
на строки. Каждая строка символов (S) заканчивается специальным кодом — маркером
конца строки (М.к.с.). Весь файл заканчивается маркером конца файла (М.к.ф.).
Схематически это можно представить следующим образом:
При этом каждый символ представлен во внутреннем коде (ASCII) и занимает 1
байт. Однако не только делением на строки отличается текстовый файл от символьного: в
текстовый файл можно записать, а также считать из него информацию любого типа. Если
эта информация символьная, то в процессе считывания или записи происходит ее
преобразование из символьной формы во внутреннюю, и обратно.
1
Текстовый файл можно создать или преобразовать с помощью текстового редактора,
его также можно просмотреть на экране дисплея или распечатать на принтере.
В программах на Паскале для работы с текстовыми файлами наряду с процедурами
Read и Write употребляются процедуры ReadLn и WriteLn.
Процедура, считывающая строку из файла с именем FV и помещающая прочитанное
в переменные из списка ввода:
ReadLn(FV, <список ввода>).
Процедура, записывающая в файл FV значения из списка вывода и выставляющая
маркер конца строки:
WriteLn(FV, <список вывода>).
Функция Eoln (FV) используется для обнаружения конца строки в текстовом файле
(end of line — конец строки). Это логическая функция, которая принимает значение True,
если указатель файла достиг маркера конца строки, и значение False — в противном
случае.
Употребление операторов Read и ReadLn без указания имени файловой переменной
означает считывание из стандартного файла Input (ввод с клавиатуры). Употребление
операторов Write и WriteLn без имени файловой переменной означает запись в стандартный файл Output (вывод на экран). Эти варианты операторов мы уже многократно
использовали. Считается, что файлы Input и Output открываются соответственно для
считывания и записи при работе любой программы.
При вводе с клавиатуры маркер конца строки обнаруживается при нажатии клавиши
<Enter>.
Процедура ReadLn может использоваться без списка ввода. В этом случае
происходит пропуск текущей строки в считываемом файле.
Употребление процедуры WriteLn без списка вывода означает вывод пустой строки
(в файле выставляется маркер конца строки).
При записи в текстовый файл в списке вывода могут присутствовать форматы.
Действия форматов уже рассматривались при описании вывода данных на экран. Точно
также форматы работают и при выводе в текстовые файлы, связанные с любыми другими
устройствами.
Порядок выполнения задания к лабораторной работе № 10П - 2
2
1. Создайте в среде MS DOS текстовый файл Note.dat, содержащий не менее 10 строк.
2. На основании теоретических сведений в соответствии с п. 1. Задания к лабораторной
работе № 10П - 2 составьте программу с именем Task3, которая определяет количество
строк в тексте, содержащемся в файле Note.dat.
3. После составления своей программы для проверки правильности сравните ее с одним
из возможных вариантов программы, приведенным ниже.
Program Task3;
Var Note : Text; К : Integer;
Begin
Assign(Note, 'Note.txt');
Reset (Note);
К := 0;
While Not Eof(Note) Do
Begin
ReadLn(Note);
К := К + 1
End;
WriteLn('Количество строк равно ', К);
Close (Note)
End.
Используемый здесь оператор ReadLn(Note) «пролистывает» строки из текстового
файла Note, не занося их в какую-либо переменную.
3. Произведите отладку своей первой программы и предъявите отлаженную программу
преподавателю.
4. В соответствии с п. 2. Задания к лабораторной работе № 10П - 2 составьте программу
с именем Task4, которая определяет длину самой большой строки в тексте,
содержащемся в файле Note.dat.
5. После составления своей программы для проверки правильности сравните ее с одним
из возможных вариантов программы, приведенным ниже.
Program Task4;
Var Note : Text;
Мах, К : Integer; С: Char;
3
Begin
Assign(Note, 'Note.txt');
Reset(Note);
Max := 0;
While Not Eof(Note) Do
Begin
К := 0;
While Not Eoln(Note) Do
Begin
Read(Note, C);
К := К + 1
End;
If К > Max Then Max := K;
ReadLn(Note)
End;
WriteLn('Наибольшая строка имеет ', Max, ' знаков');
Close(Note)
End.
Здесь каждая строчка прочитывается посимвольно, при этом в переменной К
работает счетчик числа символов в строке, а в переменной Мах отбирается наибольшее
значение счетчика.
6. Предъявить отлаженные программы Task3 и Task4 преподавателю, выполнить
индивидуальное задание и ответить на вопросы по теме лабораторной работы.
4
Download