Лабораторная работа № 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