Автор работы: Пользователь скрыл имя, 05 Июня 2012 в 15:14, контрольная работа
Практически каждый пользователь компьютера встречается с необходимостью подготовки тех или иных документов (писем, статей, служебных записок, отчетов и рекламных материалов). Разумеется, эти документы можно подготавливать и без компьютера, например на пишущей машинке.
Введение…………………………………………………………………………...3
Глава I. Строковый тип данных в языке Pascal………………………………....5
Глава II. Текстовые файлы. Обработка текстовых файлов в языке Pascal…....8
Заключение……………………………………………………………………….22
Список литературы……………………………………….……………………25
В текстовом файле всегда имеется так называемый курсор или указатель который стоит на определенном символе. Если файл пустой то первым и единственным считанным символом будет EOF (#26).
Помимо текстовых переменных вводимых программистом но языке Pascal имеются также стандартные файловые переменные текстового типа: Input и Output. Стандартная текстовая переменная Input представляет собой доступный только для чтения файл, связанный со стандартным файлом ввода операционной системы. Стандартная текстовая переменная Output – это доступный только для записи файл, связанный со стандартным файлом вывода. Обычно стандартным файлом ввода-вывода является внешнее устройство – Консоль (‘CON’) о котором уже говорилось выше.
В чем же суть обработки текстовых файлов? Учитывая специфику слова «обработка», под обработкой текстовых файлов можно понять считывание информации со входного файла, изменение информации и записи этой информации на выходной файл. Запись не читанных со входного файла текстовых данных на выходной файл является видоизменением текстового файла, но не подпадает под понятие обработка текстового файла.
Теперь самое время перейти к стандартным функциям и процедурам, которые Pascal предоставляет нам для работы с текстовыми файлами и в некоторых случаях с файлами вообще.
Для работы с файлами вторым важным действием после объявления файловой переменной является «связывание» этой переменной с физическим файлом. Это действие и выполняет процедура Assign.То есть выполняя действия над файловой переменной программа, ассоциирующая файловую переменную с конкретным физическим файлом, производит операции именно над этим физическим файлом. Как было отмечено процедура Assign является обязательной для работы с файлами. С одним и тем же физическим файлом можно связать несколько файловых переменных. Также с одной файловой переменной можно последовательно связать различные физические файлы. Причем при последовательном связывании с одной и той же переменной различных физических файлов операции произведенные над переменной до связывания становятся недействительными. Например следует дважды открыть одну и ту же переменную дважды связанную с различными файлами для чтения: Assign(T,’file1.txt); Reset(T); Assign(T,’file2.txt’); Reset(T);. О процедурах открытия файлов будет говориться ниже.
Что касается стандартных входных и выходных текстовых файлов Input и Output то они автоматически связываются со стандартным устройством ввода-вывода (обычно это совокупность устройств – дисплей и клавиатура). То есть два оператора Assign(Input,’CON’); Assign(Output,’CON’); выполняются по умолчанию и их не следует писать. Процедура Assign работает со всеми типами файлов.
В приложении 2 приводится пример программы использующей процедуру Assign.
Открывает логический файл (то есть файловая переменная связанная с физическим файлом) для чтения. Естественно, что для чтения следует открывать входной файл. После выполнения процедуры Reset курсор ставится на первый элемент файла (в случае текстового файла на первый символ) и с файла уже можно считывать информацию. Если текстовый файл пустой, то первым символом будет EOF - #26.
В приложении 2 приводится пример программы использующей процедуру Reset.
Что касается стандартного входного текстового файла Input, то он открывается для чтения автоматически. То есть не следует писать Reset(Input); в программе.
Создает и открывает внешний физический файл связанный с файловой переменной для последующей записи в него. Новый созданный файл бывает пустой и курсор становится в самое начало файла. Если описанный в процедуре Assign внешний файл уже существует, то он стирается и создаётся заново. Разумеется после выполнения процедуры Rewrite созданный для записи файл является выходным файлом. Процедура Rewrite используется со всеми файловыми типами данных.
В приложении 3 приводится пример программы использующей процедуру Rewrite.
Что касается стандартного выходного текстового файла Output то он открывается для записи автоматически. То есть не следует писать Rewrite(Output); в программе.
Открывает внешний физический текстовый файл связанный с файловой переменной для последующей записи в него. Однако в отличии от процедуры Rewrite этот файл существует запись производится в самый конец файла. Разумеется процедура Append используется для открытия выходных текстовых файлов. После открытия файла курсор становится в самый конец файла. Процедура Append используется только для текстовых файлов.
В приложении 3 приводится пример программы использующей процедуру Append.
Сохраняет и закрывает открытый физический файл связанный с файловой переменной. Как было отмечено в определении файл перед закрытием должен быть открыт (процедурами Reset или Rewrite для всех типов файлов или процедурой Append для текстовых файлов). Если в выходных файлах были произведены изменения, то для сохранения информации они должны быть обязательно закрыты процедурой Close. Процедура Close может быть использована для любых типов файлов. Если последовательно открывать файл различными процедурами, то в промежутках между этими процедурами оператор Close автоматически. То есть если в начале открыть файл для записи процедурой Rewrite а затем сразу открыть его для чтения процедурой Reset, то до процедуры Reset автоматически произойдет сохранение и закрытие файла оператором Close.
В приложении 4 приводится пример программы использующей процедуру Close.
Процедура Erase удаляет физический файл связанный с файловой переменной. Физический файл связанный с файловой переменной должен существовать, иначе при попытке удалить несуществующий файл процедурой Erase произойдет ошибка времени.
В приложении 4 приводится пример программы использующей процедуру Erase.
Присваивает одно или несколько значений из файла связанного с файловой переменной в одну или несколько переменных, описанных в списке ввода. В списке ввода могут быть одна переменная или перечислены несколько переменных через запятую. Переменные для ввода из текстового файла могут быть следующих типов:
Считывание информации из входного файла процедурой Read всегда происходит только последовательно. Так как при считывании текущая позиция перемещается к следующему символу.
Теперь рассмотрим как процедура Read присваивает значения различным типам данных.
чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения указатель достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13) , а если достигнут конец файла, то - символ EOF ( код #26).
присвоенных строке символов равно максимальной длине строки, если только раньше не встретились символы CR и EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до маркера конца строки или файла отбрасываются, а новое обращение к Read возвращает пустую строку. Таким образом, процедура Read не в состоянии прочесть последовательность строк из текстового файла: строки прочитанные до маркеров конца строки или файла будут нормальными а после маркеров будут пустыми.
подстроку во входном потоке по следующем правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLn пропускаются, после выделения первого значащего символа, наоборот, любой из перечисленных символов или EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется в численное представление, а полученное значение присваивается числовой переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. В Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.
Отмечу что, ввод переменных типа Boolean процедурами ввода не предусмотрен.
Что касается стандартных текстовых переменных, то при использовании процедуры Read применительно к стандартному входному файлу Input, т.е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Кроме того, при работе с файлом Input в записи оператора Read не надо писать имя файла, иначе это приведет к ошибке. Это позволяет редактировать данные при их вводе. Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре Read сопровождается эхо-повтором вводимых символов на экране ПК.
Процедура Read прекрасно приспособлена вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т. е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел.
В приложении 5 приводится пример программы использующей процедуру Read.
Это процедура идентична процедуре Read (она также присваивает переменным, перечисленным в списке ввода значения, считанные из текстового файла), за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера Eoln пропускается. Поэтому следующее обращение к ReadLn или Read начинается с первого символа новой строки. Кроме этого, эту процедуру можно вызывать без параметра [список ввода], что приведет к пропуску всех символов текущей строки вплоть до Eoln. Процедура ReadLn используется только с текстовыми файлами.
Если процедура используется для чтения с клавиатуры (Input), нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки. В то время как в процедуре Read эхо-повтором клавиши Enter является символ CR.
Допустим нам дан входной файл my_file.txt следующего вида:
Sharifov
Rustam
1987
Program Read_from_file;
Var
F,I:string[15];
D:word;
T:Text;
Begin
Assign(T,’my_file.txt’);
Reset(T);
ReadLn(T,F,I,D); {Данные во входном файле соответсвующие переменных расположены в новых строках. Процедура каждый раз считывает данные из новой строки и перемещает курсор за признак конца строки EOLn }
End.
Обеспечивает вывод информации в текстовый файл или передачу её на логическое устройство. Файловая переменная должна быть связана с внешним файлом для вывода информации. Если файловая переменная отсутствует, то подразумевается вывод информации на стандартное устройство вывода (дисплей ПК). Здесь [список вывода]: последовательность из одного или более выражений типа:
Элементы списка вывода разделяются друг от друга запятой. Любой элемент списка вывода может иметь вид:
Выводимое_выражение[:ширина поля[:кол-во десятичных знаков]]
[ширина поля] и [количество десятичных знаков] – это выражения типа Word. Квадратные скобки означают возможность отсутствия заключенных в них параметров. Подпараметр [ширина поля], если он присутствует, указывает минимальную ширину поля, в которое будет записываться символьное представление выводимого значения. Именно символьное представление, так как все данные перечисленные в списке вывода переводиться в символьный тип и только после этого записываются в текстовый файл. Если символьное представление имеет меньшую длину, чем [ширина поля], то оно будет дополнено слева пробелами, если – большую длину, то подпараметр [ширина поля] игнорируется и выводится необходимое число символов.