
- •Содержание работы
- •Требования к программе
- •Объем работы
- •Форма сдачи работы
- •Расчётно графическая работа
- •Задание
- •Описание программы
- •Блок схема программы
- •Текст программы
- •Приложения
- •Структура текстового файла
- •Процедуры работы с текстовым файлом
- •Пример работы с текстовым файлом
- •Оформление экрана
- •Очистка экрана
- •Управление курсором
- •Управление звуком
- •Клавиши и коды
- •Пример программы выявления нажатия любой клавиши
- •Цвета символов и фона
- •Информатика
- •394000, Воронеж, пр. Революции, 19
Приложения
Приложение 1
Структура текстового файла
Структура физического файла, то есть поименованной области памяти на внешнем носителе, есть простая последовательность байтов :
байт |
байт |
байт |
… |
байт |
байт |
Структура логического файла это способ восприятия файла в программе. Текстовые файлы являются файлами последовательного доступа, т.е. к элементам файла можно получить доступ только в той последовательности, в какой они был записаны, их структура:
Код симв |
Код симв |
… |
Код симв |
Код симв |
Eoln |
Код симв |
Код симв |
… |
Eoln |
|
|
Код симв |
Код симв |
… |
Код симв |
Eoln |
|
Код симв |
Код симв |
… |
Код симв |
Код симв |
Eof |
Каждому файлу с Pascal ставится в соответствие переменная, называемая файловой переменной. Она, как и все переменные, должна быть описана в разделе описания переменных. Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Для описания используется стандартный тип Text:
Var F: text; {F - файловая переменная}
Каждая строка текстового файла завершается маркером конца строки. На практике такой маркер представляет собой последовательность из двух символов: перевод строки chr(13) и возврат каретки chr(10).
Приложение 2
Процедуры работы с текстовым файлом
Перед началом работы с конкретным файлом надо связать с ним файловую переменную. Для этого используется специальная процедура Assign (Var f; Name: string). Здесь f – файловая переменная, а Name – имя файла. Если файл расположен не в текущем каталоге, то надо указывать его полное имя.
Пример.
Var f1, f2 : text;
St: string;
…
Begin
…
Assign (f1; d: \a064\Dan.txt)
Write(‘Введите имя файла”);
Readln(St);
Assign (f2; St)
…
End.
Здесь описаны 2 файловые переменные f1 и f2. Далее в тексте программы файловая переменная f1 связывается с файлом Dan.txt, а f2 – с файлом, имя которого пользователь задаёт в текстовой строке St.
После связывания имени файловой переменной с именем файла следует открыть файл. Открытие текстового файла можно произвести двумя стандартными процедурами:
процедура Rewrite (f) создаёт новый физический файл с тем именем, которое связано с файловой переменной f. Если уже есть физический файл с таким именем, то на его месте создаётся новый пустой файл с таким же именем. Указатель текущей позиции устанавливается на его начало. Этот способ открытия используется, когда надо производить запись в файл;
процедура Reset (f) открывает уже существующий физический файл, связанный с файловой переменной f. Он будет открыт только для чтения. Если физический файл с таким именем отсутствует, то возникает ошибка.
процедура Append( f) открывает уже существующий файл и указатель текущей позиции устанавливается на конец файла. После такого открытия текстовый файл можно только дополнять информацией
Для работы с текстовыми файлами используются процедуры: Read и Readln для чтения из файла и Write и Writeln для записи в файл
Смысл их применения тот же, что и при работе с консолью и монитором. Наличие специальных разделителей в конце строк текстовых файлов позволяет использовать процедуры Readln и Writeln.. Общий вид данных процедур следующий:
Readln(var F : text; VI [,V2,...Vn]);
Writeln(var F : text; VI [,V2,...Vn]);
где V1 ...Vn переменные разных типов.
Т.е. по сравнению с уже привычным использованием этих процедур, в состав параметров входит файловая переменная.
При использовании этих процедур происходит перевод переменных, входящих в состав параметров в строку символов при записи в файл (Write и Writeln) и обратный перевод из строки символов в типы данных из списка ввода при чтении из файла (Read и Readln) . Т.е. если NN - целое число, равное 123, а RR - вещественное число равное 0.45, то при выполнении процедуры Writeln(f, NN, RR ) в текстовый файл будет записана строка символов:
123 0.45
При чтении из файла этой строки результат чтения будет зависеть от того, переменные какого типа будут использованы в процедуре Readln. Если будет переменная St определена как строка символов:
Var St: string;
то после выполнения процедуры Readln (f, St ) переменная St примет значение: St = ‘123 0.45’ . А если :
Var А: byte; R: real;
то после выполнения Readln (f, А, R ) переменные примут значения: А=123, R=0.45.
При организации операций ввода-вывода используются специальные функции Eoln, Eof, SeekEoln, SeekEof.
Функция Eoln(var F: text) возвращает булевское значение True, если текущая файловая позиция находится на маркере конца строки или всего файла. Во всех других случаях значение функции будет False. Функция SeekEoln(var F: text) аналогична Eoln, отличие в том, что возвращает True, игнорируя пробелы и табуляции, которые находятся между маркером конца строки и текущей позиции.
Функция Eof(var F: text) возвращает булевское значение True, если указатель конца файла находится сразу за последним компонентом, и False — в противном случае. Функция SeekEoln(var F: text) аналогична Eof , но игнорирует пробелы и табуляции, которые находятся между маркером конца строки и текущей позиции.
Приложение 3