русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Текстовые файлы


Дата добавления: 2014-11-28; просмотров: 590; Нарушение авторских прав


Записи текстового файла – это строки различной длины, поэтому текстовые файлы являются файлами последовательного доступа. Структура текстового файла представлена на Рис. 6.

 

  Eoln  
  Eoln    
  Eoln
  Eoln        
Eof            
  Рис. 6. Структура текстового файла
             

 

Таким образом, текстовый файл представляет собой совокупность строк разной длины. Именно поэтому к записям файла возможен только последовательный доступ. Каждая строка заканчивается специальным неотображаемым символом Eoln («End of line» - конец строки). В конце файла записан специальный неотображаемый символ Eof («End of file» - конец файла).

В текстовом файле может храниться не только текст, но и данные других типов (например, числа) в текстовом представлении (т.е. по сути дела все равно текст).

Для работы с текстовыми файлами в языке Паскаль используются следующие команды, описания и функции:

1. Описание файловой переменной:

Var f : text;

где f – имя файловой переменной, text – еще один стандартный тип данных – текстовый файл.

Файловая переменная – это переменная-указатель, посредством которой идет взаимодействие программы (чтение/запись данных) с внешним файлом.

2. Связывание файловой переменной с конкретным именем внешнего файла:

Assign ( f, <имя файла> );

где f – имя файловой переменной, <имя файла> - строковая константа или переменная. Например, выполнение команды

Assign ( f, ’c:\tp70\example.txt’ );

свяжет файловую переменную f с файлом «example.txt», который расположен на диске C: в папке с именем «tp70». После записи такой команды в тексте программы нигде далее не будет указываться имя файла, с которым работает программа.



3. Открытие файла для записи данных:

Rewrite (f);

Файл создается заново. Если для записи открыт уже существующий файл, то все данные из него будут потеряны.

4. Открытие файла для чтения данных:

Reset (f);

Для чтения можно открыть только существующий файл. Указатель устанавливается на первую запись (т.е. на первый символ первой строки) файла.

5. Открытие файла для дополнения (т.е. дописывания данных в конец файла):

Append (f);

Для дополнения можно открыть только существующий файл. Указатель устанавливается после последней записи (строки).

6. Запись данных в файл:

Write ( f, <список вывода> );

По сути, используется та же команда, что и для вывода данных на экран. Имя файловой переменной f указывает на то, что вывод будет осуществляться в файл.

Команда Writeln ( f, <список вывода> ); записывает в текстовый файл данные и символ Eoln.

7. Чтение данных из файла:

Read ( f, <список переменных> );

Команда Readln ( f, <список переменных> ); позволяет прочитать данные, а также символ Eoln.

8. Закрытие файла:

Close ( f );

9. Логическая функция Eof ( f ) возвращает значение ИСТИНА, если указатель указывает на символ конца файла и ЛОЖЬ в противном случае.

10. Логическая функция Eoln ( f ) возвращает значение ИСТИНА, если указатель указывает на символ конца строки и ЛОЖЬ в противном случае.

Примеры решаемых задач

Пример 1. Составить программу, которая:

а) запишет в файл Message. txt текстовое сообщение;

б) прочитает из файла Message. txt текстовое сообщение и выведет его на экран.

Пояснение. Для решения этой и подобной задач лучше составлять две отдельные программы: первая программа формирует файл, вторая – его обрабатывает.

Программы:

Program A;

Uses Crt;

Var s : string; { переменная s для хранения текстового сообщения }

f : text; { f – файловая переменная }

Begin

Clrscr;

Assign (f, ’Message. txt’); { связывание файловой переменной f с файлом ’Message. txt’, который будет создан в текущей папке }

Rewrite(f); { открыли файл для записи }

Write (‘Введите текст сообщения ‘);

Readln (s); { ввели в переменную s текст сообщения }

Writeln (f, s);{ записали в файл содержимое переменной s }

Close (f); { закрыли файл }

Writeln (‘Файл создан’);{ вывели на экран поясняющее сообщение }

Readln

End.

Program B;

Uses Crt;

Var m : string; { переменная m для хранения текстового сообщения }

t : text; { t – файловая переменная }

Begin

Clrscr;

Assign (t, ’Message. txt’); { связывание файловой переменной f с файлом ’Message. txt’, который существует в текущей папке }

Reset (t); { открыли файл для чтения }

Readln (t, m); { считали из файла t в переменную s текст сообщения}

Writeln (‘Сообщение:' , m); { вывели на экран текст сообщения }

Close (t); { закрыли файл }

Readln

End.

Пример 2. Составить программу, которая:

а) запишет в файл Students.txt список студентов группы (фамилия и год рождения);

б) обработает файл Students.txt следующим образом:

- выведет на экран список студентов группы;

- выведет список студентов заданного года рождения;

- допишет в файл информацию о новом студенте.

Программы:

Program A;

Uses Crt;

Var fam : string; { переменная fam для хранения фамилии студента }

year, n, k : integer; { переменная year для хранения года рождения}

f : text; { f – файловая переменная }

Begin

Clrscr;

Assign (f, ’Students. txt’); { связывание файловой переменной f с файлом ’Students. txt’, который будет создан в текущей папке }

Rewrite(f); { открыли файл для записи }

Write (‘Введите количество студентов в группе ‘);

Readln (n);

For k:=1 To n Do

Begin

Write(‘Введите фамилию ’,k,’-го студента ’);

Readln (fam); { Ввели в переменную fam фамилию }

Writeln (f, fam); { записали в файл фамилию студента и символ Eoln }

Write(‘Введите год его рождения ’);

Readln (year); { Ввели в переменную year год рождения }

Writeln (f, year) { записали в файл год рождения студента и символ Eoln }

End;

Close (f); { закрыли файл }

Writeln (‘Файл создан’); { вывели на экран поясняющее сообщение}

Readln

End.

Program B;

Uses Crt;

Var fam : string; { переменная fam для хранения фамилии студента }

year, n, : integer; { переменная year для хранения года рождения }

f : text; { f – файловая переменная }

Begin

Clrscr;

Assign (f, ’Students. txt’); { связываем файловую переменную f с файлом ’Students. txt’, который будет создан в текущей папке }

{ а) вывод на экран содержимого файла ’Students. txt’ }

Reset (f); { открываем файл для чтения }

Writeln (‘Список группы ‘);

While Not Eof (f) Do { пока не достигнут конец файла }

Begin

Readln (f, fam); { читаем из файла фамилию и символ Eoln }

Readln (f, year);{ читаем из файла год рождения и символ Eoln}

Writeln (fam:20, year: 5) { печатаем фамилию и год рождения }

End;

Close (f); { закрываем файл }

{ б) поиск в файле студентов заданного года рождения }

Write (‘Задайте нужный год рождения ’);

Readln (x); { вводим год для поиска }

Reset (f); { снова открываем файл для чтения}

While Not Eof (f) Do { пока не достигнут конец файла }

Begin

Readln (f, fam); { читаем из файла фамилию и символ Eoln }

Readln (f, year);{ читаем из файла год рождения и символ Eoln}

If year = x then { если год рождения очередного студента равен требуемому }

Writeln (fam) { выводим фамилию на экран }

End;

Close (f); { закрываем файл }

{ в) дополнение файла данными о новом студенте }

Write (‘Введите фамилию нового студента ’);

Readln (fam);

Write (‘Введите год его рождения ’);

Readln (year);

Append (f); { открываем файл для дополнения }

Writeln (f, fam); { дописываем в файл новую фамилию (и Eoln) }

Writeln (f, year); { дописываем в файл год рождения (и Eoln) }

Close (f); { закрываем файл }

Readln

End.

Примечание. В приведенном примере программы при дополнении файла данными о новом студенте не производится проверка условия, что информация о новом студенте уже есть в файле.



<== предыдущая лекция | следующая лекция ==>
Краткое изложение теоретического материала | Типизированные файлы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.034 сек.