- •Лекция № 1 Тема: Основы алгоритмизации.
- •1.1 Алгоритм. Свойства алгоритма.
- •1.2 Алгоритмическая конструкция ветвления
- •1.3 Алгоритмическая конструкция цикла.
- •1.4 Этапы решения задач на эвм.
- •Лекция № 2 Тема: Введение в Turbo Pascal. Элементы языка.
- •2.1. История создания языка.
- •2.2. Алфавит tp 7.0.
- •2.3 Идентификаторы
- •2.4 Константы
- •2.5 Выражения
- •Лекция № 3 Тема: Структура программы
- •3 In s6 возвращает true;
- •2*2 In s1 возвращает false.
- •5.1 Условный оператор.
- •5.2 Операторы повторений
- •5.3 Операторы цикла.
- •5.5 Метки и операторы перехода.
- •Лекции №6 Тема: Процедуры и функции.
- •6.1 Локализация имен
- •6.2 Описание программы
- •6.3 Параметры
- •6.4 Рекурсия и опережающее описание
- •Лекция № 7 Тема: Типизированные константы.
- •7.1 Константы простых типов и типа String
- •7.2 Константы - массивы
- •7.3 Константы - записи
- •7.4 Константы - множества
- •7.5 Константы - указатели
- •Лекция № 8 Тема: Файлы
- •8.1 Доступ к файлам
- •8.2 Имена файлов
- •8.3 Инициализация файла
- •8.4 Текстовые файлы
- •Лекция № 9 Тема: Модуль.
- •9.1 Структура модулей
- •9.2 Заголовок модуля и связь модулей друг с другом
- •9.3 Интерфейсная часть
- •9.4 Исполняема часть
- •9.5 Инициирующая часть
- •9.6 Стандартные модули
- •Лекция № 10 Тема: Стандартный модуль crt
- •10.1 Программирование клавиатуры
- •10.2 Текстовый вывод на экран
8.4 Текстовые файлы
Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу TEXT. Текстовые файлы предназначены для хранения текстовой информации. Именно в такого типа файлах хранятся, например, исходные тексты программ. Компоненты (записи) текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними.
Текстовый файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN (End OfLiNe - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла). Эти признаки можно протестировать одноименными логическими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:
EOLN- последовательность кодов ASCII #13 (CR) и #10 (LF);
EOF - код #26 стандарта ASCII.
Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN. Они отличаются возможностью обращения к ним с переменным числом фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой ASSIGN. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT к OUTPUT.
Процедура READ.
Обеспечивает ввод символов, строк и чисел. Формат обращения:
READ (<ф.п.>,<сп.ввода>) или READ (<сп.ввода>)
Здесь <сп.ввода> - список ввода: последовательность из одной или более переменных типа CHAR, STRING, а также любого целого или вещественного типа.
При вводе переменных типа CHAR выполняется чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения указатель файла достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13), а если достигнут конец файла, то - символ EOF (код #26). При вводе с клавиатуры символ CR вводится при нажатии на клавишу Enter, а символ EOF - при одновременном нажатии клавиш CTRL и Z.
При вводе переменных типа STRING количество считанных процедурой и помещенных в строку символов равно максимальной длине строки, если только раньше не встретились символы CR или EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до конца строки отбрасываются, а новое обращение к READ возвращает пустую строку. Таким образом, процедура READ не в состоянии прочесть последовательность строк: первая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода последовательности строк нужно использовать процедуру READLN (см. ниже).
При вводе числовых переменных процедура READ вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLN пропускаются; после выделения первого значащего символа, наоборот, любой из перечисленных символов или символ EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется во внутреннее представление, а полученное значение присваивается переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода-вывода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.
При использовании процедуры READ применительно к стандартному файлу INPUT, т.е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Это позволяет редактировать данные при их вводе. Для редактирования используются следующие клавиши:
Backspace, Ctrl-H, перевод курсора влево - стирают символ слева от курсора;
перевод курсора вправо - восстанавливает символ за символом предыдущую строку ввода;
Ctrl-Z Enter - завершает ввод по процедуре READ; оставшиеся «лишние» символьные параметры принимают значение CHR(26), строки возвращаются пустыми, а численные переменные остаются без изменения.
Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре READ сопровождается эхо-повтором вводимых символов на экране ПК.
Процедура READ прекрасно приспособлена к вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т.е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел. В сочетании с проверкой конца файла функцией EOF процедура READ позволяет организовать простой ввод массивов данных, например, так:
const
N=1000; {Максимальная длина ввода}
var
f:text;
m:array [1..N] of real;
i:Integer;
begin
assign(f, 'prog.dat') ;
reset(f);
i:=1;
while not EOF(f) and (i<=N) do
begin
read(f ,m[i] ) ;
inc(i)
end;
close(f);
...
end.
Процедура READLN.
Обеспечивает ввод символов, строк и чисел. Эта процедура идентична процедуре READ за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера EOLN пропускается, поэтому следующее обращение к READLN или READ начинается с первого символа новой строки. Кроме того, эту процедуру можно вызвать без параметра <cn.вводa> (см. процедуру READ), что приведет к пропуску всех символов текущей строки вплоть до EOLN.
Если процедура используется для чтения с клавиатуры, нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки, в то время как в процедуре READ эхо-повтором клавиши Enter является символ CR и курсор помещается в начало текущей строки.
Процедура WRITE.
Обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:
WRITE (<ф.п.>, <сп.вывода>) или WRITE (<сп.вывода>)
Здесь <сп.вывода> - список вывода: последовательность из одного или более выражений типа CHAR, STRING, BOOLEAN, а также любого целого или вещественного типа.
Файловая переменная <ф.п.>, если она указана, должна быть предварительно описана как переменная типа TEXT и связана с именем файла или логическим устройством процедурой ASSIGN. Если файловая переменная отсутствует, подразумевается вывод в стандартный файл OUTPUT, который обычно связан с экраном ПК.
