рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Текстовые файлы - Лекция, раздел Программирование, Лекция 1. Интегрированная Среда и Состав языка Object Pascal. Состав языка В Dos Текстовые Файлы Физически Не Отличаются От Любых Других, Но В Object Pa...

В DOS текстовые файлы физически не отличаются от любых других, но в Object Pascal различия существенны. Элементами текстовых файлов являются символы, объединенные в строки, но текстовый файл это не file of Char или file of String. Каждая строка заканчивается в текстовом файле символом возврата каретки CR=#13 и перевода строки LF=#10. Заканчивается текстовый файл признаком конца файла SUB=#26. Работа с текстовыми файлами очень напоминает работу с консолью. Чтение из текстовых файлов очень похоже на ввод с клавиатуры, а запись в файл напоминает вывод на экран. Указатель в текстовом файле имеет много общего с текстовым курсором.

Доступ к элементам текстового файла организуется последовательно. Указатель при считывании очередного элемента файла перемещается к следующему элементу. Для записи в текстовый файл или чтения их него можно использовать процедуры Read, Readln, Write, Writeln. В качестве первого параметра в этих процедурах указывается файловая переменная, например:

Read(fp, a, s);

Здесь происходит присваивание переменным a и s значений двух очередных элементов их файла, связанного с файловой переменной fp.

При выполнении программы на Object Pascal автоматически открываются два стандартных файла текстового типа. Стандартные файлы имеют имена файловых переменных Input и Output. Стандартная файловая переменная Input представляет собой доступный только для чтения файл для ввода символов с клавиатуры. Вторая файловая переменная Output связана с доступным только для записи стандартным устройством вывода символов и графических элементов на экран монитора. Обращение к файлам Input и Output происходит автоматически, без каких-либо дополнительных средств с помощью операторов Read, Readln, Write, Writeln. Файловая переменная (Input и Output) в этих процедурах не указывается, если работа ведётся со стандартным файлом.

Приведём пример переназначения стандартных файлов (т.е. ввод с клавиатуры и вывод на экран) дисковым файлам.

program p12_13;

var

N, M: longint;

……….

begin

assign(Input, 'c:\test.txt');

reset (Input) ;

…………….

Read(N, M);

……………..

close (Input);

…………………

assign(Output, 'c:\test_rez.txt');

rewrite(Output) ;

………..

Write(N, M);

……………….

close (Output) ;

end.

Таким образом, эта программа введёт значения переменных N и M из текстового файла test.txt и выведёт результаты работы (значения переменных N и M) в файл test_rez.txt .

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

 

<список идентификаторов файловых переменных> : Text;

 

При работе с текстовым файлом, файловую переменную связывают с именем файла, обращаясь к процедуре Assign, а открывают для чтения и записи процедурами Reset и Rewrite соответственно. Процедура Reset открывает текстовый файл только для чтения. Открытый файл закрывается с помощью процедуры Close.

В текстовый файл, как и на экран, мы можем выводить значения выражений практически любого типа. При выводе значений операторами Write и WriteLn можно пользоваться стандартными средствами форматирования данных.

Примеры:

Write(f, x: 6: 4);

Writeln(g, 'Т=' , f 5: 2) ;

После вывода оператором Write указатель текстового файла остается в конце выведенной строки, a WriteLn - переходит на начало следующей.

Примеры:

program p12_14;

{ Программа выводит в текстовый файл матрицу n*m }

const

n= 3;

m= 4 ;

var

Т: array[1.. n, 1.. m] of real;

f: Text; { описываем файловую переменную }

S: String;

i, j: integer;

begin

Writeln('введите элементы матрицы ', n, '*', m) ;

For i:= 1 to n do

for j : = 1 to m do

begin

Write ('T[' , i , '*,' , j, '] =') ;

Readln(T[i, j ] ) ;

end;

Write('введите имя файла:');

Readln(s);

Assign(f, s); { связываем файловую переменную с именем файла }

{$i-}

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

If IOResult <> 0 then

begin

Writeln('Ошибка при открытии файла');

Halt;

end;

{$i+}

for i:= 1 to n do

begin

for j := 1 to m do

Write(f, T[i, j] : 8 : 3) ;

Writeln(f) ;

end;

Close (f);

end.

 

program p12_15;

{ Программа читает матрицу n*m из текстового файла }

const

n = 3;

m = 4;

var

Т: array[1.. n, 1.. m] of real;

f : Text;

S : String;

i, j : integer;

begin

Write('Введите имя файла:');

Readln(s);

Assign(f, s);

{$i-}

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

if lOResult <> 0 then

begin

Writeln('Ошибка при открытии файла');

Halt;

End;

{$i+}

for i:= 1 to n do

begin

for j:= 1 to m do

begin

Read(f, T[i, j] ) ;

Write(T[i, j] : 8 : 3);

end;

Writeln;

End;

Close(f);

end.

 

Задача. Дан текстовый файл, создать второй текстовый файл, уплотнив первый, заменяя в каждой строке серии из двух или более пробелов (32 - ASCII) одним пробелом.

program p12_16;

var

fl, f2: Text;

S: String;

Sl, S2: String;

{ функция параметром получает неуплотненную строку, а

возвращает уплотненную }

function Uplot(S: String) : String;

var

Z: boolean;

begin

Z := false;

repeat

if pos(' ', S) <> 0 then Delete (S, pos (' ', S) , 1) else Z := true;

Until Z;

Uplot := S;

end;

 

begin

Write ('Введите имя исходного файла:');

Readln(s1);

Write('введите имя файла с результатом:');

Readln(s2);

Assign(f1, s1);

Assign(f2, s2) ;

{$i-}

Reset(f1);

if lOResult <> 0 then

begin

Writeln('Произошла ошибка, файл ', s1, ' не существует');

Halt ;

end;

{$i+}

Rewrite(f2);

While not Eof(f1) do

begin

Readln(f1, S);

Writeln(f2, Uplot(S));

end;

Close(f1) ;

Close(f2) ;

end.

 

Задача. Даны два текстовых файла. Вывести на экран количество строк в первом и во втором файлах. Если количество строк одинаковое, то вывести на экран те строки второго файла, которые отличаются от соответствующих строк первого.

program p12_17;

const

Namel = 'file1.txt';

Name2= 'file2.txt';

var

f1, f2 : Text;

L, K : Integer;

S1, S2 : String;

begin

Assign(f1, Namel);

Assign(f2, Name2);

{$i-}

Reset(f1) ;

Reset(f2) ;

if IQResult <> 0 then

begin

Writeln('Ошибка при открытии файлов');

Halt;

end;

{ находим количество строк в первом файле }

L:= 0;

While not Eof(f1) do

begin

Readln(f1);

inc(L);

end;

{ находим количество строк во втором файле }

К := 0;

While not Eof(f2) do

begin

Readln(f2);

inc(K);

end;

Close (f1) ;

Close (f2) ;

Reset (f1) ;

Reset (f2) ;

if К <> L then

begin

Writeln('файл ', namel, ' - ', L, ' строк' );

Writeln('файл ', namе2, ' - ', К, ' строк’ );

end

else

begin

K:= 0;

While not Eof(fl) do

begin

Readln(f1, S1) ;

Readln(f2, S2);

Inc(K);

if S1 <> S2 then

begin

Writeln(' (' , K, '): ' , S1) ;

Writeln(' (', K, ') : ' , S2) ;

end;

end;

end;

Close (f1) ;

Close (f2);

end.

Иногда необходимо открыть текстовый файл для записи, и, не удаляя находящуюся в нем информацию, дописать что-то в его конец.

 

Append( f );

 

Здесь f - файловая переменная типа Text. Процедура Append открывает текстовый файл для дозаписи. Если файл с именем, указанным в Assign, не существует, то вызов процедуры Append приведет к ошибке.

Пример:

program p12_18;

{ Программа дописывает в текстовый файл с матрицей новую

матрицу - результат транспонирования первой }

Const

n = 3;

m = 4;

var

Т: array[1.. n, 1 .. m] of real;

ТТ: array[1.. m, 1 .. n] of real;

f : Text;

s : String;

i, j : integer;

begin

Write('введите имя файла:');

Readln(s);

Assign(f, s);

{$i-}

Reset (f) ;

if IOResult <> 0 then

begin

Writeln('Ошибка при открытии файла');

Halt;

end;

for i : = 1 to n do

for j := 1 to m do

begin

Read(f, T[i, j] );

TT[j, i] := T[i, j] ;

end;

Close (f); { закрываем файл и повторно открываем его для записи

в конец файла }

Append ( f ) ;

{ выводим в файл пустую строку разделитель матриц }

Writeln( f ) ;

for i := 1 to m do

begin { выводим матрицу }

for j := 1 to n do

Write (f , TT[i, j] : 8 : 3) ;

Writeln(f) ;

end;

Close (f) ;

end.

 

Полезны для работы с текстовыми файлами три стандартные логические функции (ниже f - файловая переменная):

· EOLN(f) – возвращает значение true, если в файле достигнут конец строки, false – в противном случае;

· SEEKEOLN(f) – пропускает пробелы и знаки табуляции до конца строки или до первого значащего символа и возвращает значение true, если достигнут конец строки, false – в противном случае;

· SEEKEOF(f) – пропускает все пробелы, знаки табуляции и маркеры конца строки до конца файла или до первого значащего символа и возвращает значение true, если достигнут конец файла, false – в противном случае.

– Конец работы –

Эта тема принадлежит разделу:

Лекция 1. Интегрированная Среда и Состав языка Object Pascal. Состав языка

Содержание... Лекция Интегрированная Среда и Состав языка Object Pascal... Работа с окнами Редактирование в Object Pascal...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Текстовые файлы

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Лекция 1. Интегрированная Среда и Состав языка Object Pascal
Программная среда Object Pascal называется интегрированной потому что состоит из редактора, компилятора, компоновщика, отладчика и обеспечивает создание, отладку и исполнение программ, написанных н

Работа с окнами
Практически вся работа в среде Object Pascal происходит в окнах. Окно - это прямоугольная область экрана, которую можно перемещать, изменять ее размеры, перекрывать, закрывать и открывать. Активное

Команды меню
Команды работы с файловой системой находятся в меню File. Сохранить файл из активного окна на диск - Save (F2), загрузить с диска — Open (F3), сохранить содержание активного ок

Алфавит и ключевые слова
В алфавите Object Pascal используются следующие символы: · буквы латинского алфавита как в верхнем A .. Z, так и в нижнем a .. z регистрах; · десятичные цифры 0..

Структура программы
Любая программа на языке Object Pascal состоит из двух частей: часть описаний и часть исполнительная. Исполнительная часть начинается с ключевого слова begin и заканчивается ключевым словом

Описание и использование меток
Использование меток при программировании считается дурным тоном. Но бывают случаи, когда для использования меток существуют веские причины, например, начальный этап создания программы, когда автор

Комментарии
Для пояснения хода вычислительного процесса, смыслового назначения переменных и формирования документации к программе используются комментарии. Комментарии могут располагаться в любом мест

Символьный тип
Множеством значений этого типа являются символы, упорядоченные в соответствии с расширенным набором символов кода ASCII. Тип этих переменных задаётся ключевым словом Char. Переменна

Вещественные типы
В Object Pascal имеются пять встроенных вещественных типов: Real, Single, Double, Extended и Сотр. Вещественные типы различаются диапазоном и точностью значений (смотри табли

Описание типов пользователя
Существует несколько возможностей создания (описания) типов пользователя. Описание типов пользователя выполняется в разделе, начинающегося с ключевого слова type. 1. Полное соответствие ст

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

Выражения целого типа
В целых выражениях допускаются следующие операции: + - сложение; - - вычитание; * - умножение; div - целочисленное деление; mod - остаток

Вещественные выражения
В выражениях вещественного типа допускаются следующие операции: + - сложение; - - вычитание; * - умножение; / - деление. Наряду с вещественными операнда

Логические выражения
Понятие логического выражения или выражения типа Boolean во многом базируется на понятии операций отношения. В Object Pascal реализованы следующие операции отношения: = - равно;

Форматирование численных значений
Операторы Write и Writeln предоставляют возможность форматировать значения выражений различных типов при выводе их на экран. Формат при выводе чисел задаётся следующей строкой:

Вывод вещественных значений в экспоненциальном формате
Известно, что любое вещественное число можно представить в виде: , где # - десятичная цифра. Такое изображение числа назыв

Понятие процедуры и функции
Согласно принципу модульности отдельные части программы, предназначенные для решения частных небольших задач, организуют (оформляют) в виде подпрограммы. Это позволяет один и тот же фрагмент програ

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

Цикл типа While
Этот цикл используется, если известно условие прекращения цикла, но неизвестно количество итераций.   While <выражение типа Boolean> do <оператор>;

Одномерные массивы
Описание одномерных массивов имеет вид   <список идентификаторов>: array [< диапазон изменения индекса>] of <тип элементов массива>;

Сортировка одномерного массива
Сортировкой называют набор операций, упорядочивающий элементы массива в соответствии с заданным отношением порядка. Например, в упорядоченном массиве A по возрастанию выполняются неравенства вида:

Массивы с большей размерностью
Возможна следующая организация массива: каждый элемент массива является другой массив. Описание массива в этом случае может выглядеть так: ...: array [... ] of array ...

Констант-массивы
Очень часто возникают сложности, связанные с вводом элементов массива, особенно во время отладки. Приходится по нескольку раз вводить большие объемы информации. Этого можно избежать, описав массив

Описание функции Random
В Object Pascal существует встроенный генератор случайных чисел – функция Random. Чтобы её использовать необходимо подключить библиотечный модуль CRT. Если необходимо при каж

Применение случайных чисел при работе с массивами
В языке Паскаль массив описывается заранее до его использования и во время исполнения программы не меняется его длина, размерность и тип элементов. Такие массивы называются статическими. Другой под

Строковый тип
Строки символов, реализованные в языке Object Pascal, обладают всеми признаками и свойствами одномерных символьных массивов (... array... of Char ). Символьные массивы могут входить в состав

Множества
Множество относится к структурным типам данных. Тип «множество» задаёт интервал значений, который является множеством всех подмножеств базового типа. Базовый тип – это перечислимый тип, кроме wo

Описание функции и процедуры
Заголовок функции записывается следующим образом:   Function <идентификатор функции> (<списки параметров>) : <тип значения функции>;

Понятие формальных и фактических параметров
При работе с функциями и процедурами следует различать формальные и фактические параметры. Формальные параметры - это переменные, используемые при описании подпрограммы в её заголовке, а ф

Способы передачи параметров в подпрограмму через заголовок
Связь между головной программой (то есть программой, которая обращается к другой подпрограмме) и подпрограммой (процедурой или функцией) осуществляется через список параметров, указанный в заголовк

Область видимости идентификаторов
Процедуры или функции, как выше сказано, могут содержать внутри себя описание других переменных. Более того, процедуры и функции могут содержать внутри себя описание других процедур и функций, а те

Типизированные файлы
Типизированный файл состоит из последовательности однотипных или одинаковых компонент и может содержать различное их число (возможно ни одной). Тип компонент файла практически любой, но он

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги