Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

IV Процедура открытия файла для дополнения

Поиск

append(f: Тext) – процедура открывает существующий файл для присоединения. Если файл уже открыт, то он сначала закрывается, а затем открывается заново. Текущая позиция устанавливается на конец файла.

Если в последнем блоке файла размером 128 байтов присутствует символ Сtrl+Z (26 в коде ASCII), то текущая позиция устанавливается в файле таким образом, что при записи первым в блоке будет "затираться" символ Сtrl+Z.

Если переменной f было присвоено пустое имя assign(f,' '), то после обращения к процедуре append f будет указывать на стандартный выходной файл.

После обращения к append файл f становится доступным только по записи и Eof(f) принимает всегда значение True(истина).

Рассмотрите несколько примеров простых программ.

Program TextFile4;

{Задача. Дан файл Primer1 на диске. Считать из него информацию и записать во вновь созданный файл Primer2 }

Var

f, t: text;

Put1, Put2, d: string;

s: char;

Begin

Put1:= 'D:\TP7\BIN\Primer1';{Путь до файла Primer на диске}

assign(f, Put1);

reset(f);{Открыть файл c файловой пер. f на чтение }

Put2:= 'D:\TP7\BIN\Primer2';{Путь где будет создан файл}

assign(t, Put2);

rewrite(t);{ Открыть файл c файловой пер. t на создание и запись }

while Not Eof(f) Do

begin

while Not Eoln(f) do

begin

read(f, s); {Cчитывать из f в переменную s}

write(t, s);{ Записывать в t значение s}

end;

readln(f); {Переходим к чтению следующей строки файла f}

writeln(t);{Переходим к записи следующей строки файла t}

end;

close(t);{Закрытие файла Primer1}

close(f);{Закрытие файла Primer2}

End.

Program TextFile5;

{Задача. Дан файл Primer2 со скобками. Проверить численное соответствие закрытых и открытых скобок}

Var

f: Тext;

Put, s: string;

a, i: integer;

Begin

a:= 0; {Обнуляем счетчик скобок}

Put:= 'D:\TP7\BIN\Primer2'; {Полный путь до файла }

assign(t, Put);

reset(f); {Открываем файл на чтение.}

while Not Eof(f) do {Пока нет конца файла делай...}

begin

readln(f, s); {Считываем cтроку в переменную s}

for i:= 1 to Length(s) do {Просматриваем строку до конца}

begin

if s[i] = '(' {Если встретилась открытая скобка,}

then

Inc(a,1);{то счетчик увеличиваем на 1}

if s[i] = ')' {Если встретилась закрытая скобка,}

then

Dec(a,1);{то счетчик уменьшаем на 1}

end;

end;

close(f);{Закрытие файла}

if a <> 0{Если скобок одинаковое кол-во, то а=0}

then

writeln('No')

else

writeln('Yes');

readln

End.

Program TextFile6;

{Задача. Проиллюстрировать работу процедуры append.}

Var

f: text;

Begin

assign(f, 'text.txt'); {создаем текстовый файл}

rewrite(f);{ Открыть файл c файловой пер. t на создание и запись }

writeln(f, 'Исходный текст');{ Записывать в него cтроку}

close(f);{Закрываем сформированный файл}

append(f); {Вновь открываем этот же файл для добавления}

writeln(f, 'Добавляемый текст');{ Пишем в конец файла cтроку}

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

End.

Задачи для самостоятельной работы

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

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

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

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

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


 

Занятие III

Тема. Стандартные текстовые файлы Input и Output. Примеры задач

В Паскале существуют два стандартных текстовых файла Input и Output. Эти файлы считаются известными в любой Pascal-программе (иными словами, они описаны в стандартном модуле System). Они обозначают (по терминологии MS-DOS) соответственно стандартный файл ввода и стандартный файл вывода. Обычно эти стандартные файлы связаны с конкретными физическими устройствами компьютера. Так, файловая переменная Input связана с клавиатурой, файловая переменная Output – с экраном дисплея. эти файлы считаются заранее открытыми, а соответствующие идентификаторы можно использовать в операциях ввода-вывода.

Рассмотрим, например, следующий оператор:

writeln (Output, 'Результат равен ', (X+Y)*2)

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

Аналогично, оператор read (Input, X1, X2); будет выполняться таким образом: система перейдет в состояние ожидания ввода с клавиатуры двух значений. Типы вводимых значений должны совпадать с типами переменных Х1 и Х2. Эти значения при вводе должны отделяться друг от друга одним или несколькими пробелами, а ввод должен быть завершен нажатием клавиши Enter. В процессе ввода значений набираемые на клавиатуре символы отображаются на экране. После нажатия Enter введенные значения будут присвоены переменным Х1 и Х2, и выполнение программы будет продолжено.

Для стандартных файлов Input и Output допускается сокращенная форма записи операций ввода-вывода. Так, если в процедурах read и readln первый параметр опущен, то по умолчанию подразумевается файл Input. Аналогично, отсутствие в процедурах write и writeln первого параметра означает вывод в стандартный файл Output. Вывод в стандартный файл Output используется очень часто – всегда, когда необходимо выдать некоторую информацию из программы на экран.

В соответствии с общими правилами MS-DOS стандартные файлы ввода-вывода могут быть "переназначены", то есть связаны с другими физическими устройствами или дисковыми файлами. Простейшим способом переназначения является использование для этой цели процедуры assign, например,

assign (Output,'MyFile.out')

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

Задание. Рассмотрите предложенные программы, наберите их на компьютере, выделите необходимые части алгоритма в подпрограммы, сформулируйте решаемые ими задачи, дополните необходимыми операторами и комментарием.

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

Program StringCount;

Uses

Crt;

Var

i: integer;

s: string;

f: text;

Begin

ClrScr;

readln(s);

assign(f,s);

reset(f);

while not Eof(f) do

begin

readln(f,s);

i:=i+1;

end;

close(f);

readln;

End.

Program Zamen;

Uses

Crt;

Var

s: string;

f, d: text;

Begin

ClrScr;

readln(s);

assign(f,s);

readln(s);

assign(d,s);

reset(f);

rewrite(d);

while not Eof(f) do

begin

readln(f,s);

while Pos('o',s)>0 do

s[Pos('o',s)]:='a';

writeln(d,s);

end;

close(f);

close(d);

readln;

End.

Program MaxInFile;

Uses

Crt;

Var

i, j, r, Code: integer;

s: string;

f: text;

Begin

ClrScr;

readln(s);

assign(f,s);

reset(f);

while not Eof(f) do

begin

readln(f,s);

j:=0;

for i:=1 to Length(s) do

begin

Val(s[i],r,Code);

if r>j

then

j:=r;

end;

writeln(j);

end;

close(f);

readln;

End.


 

Занятие IV

Тема. Самостоятельное решение задач

Выберите с учителем задачи для самостоятельного решения из предложенного ниже списка.

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

2. Упорядочить лексикографически строки текстового файла. Вывести на экран первоначальный файл и преобразованный. Если все строки файла одинаковы, вывести на экран соответствующее сообщение. В программе используйте подпрограммы.

3. Удалите из текстового файла одинаковые строки. Если в файле нет одинаковых строк, вывести на экран соответствующее сообщение. Вывести на экран первоначальный файл и преобразованный. В программе используйте подпрограммы.

4. Сформировать текстовый файл, содержащий строки исходного файла, встречающиеся в нем один раз. Вывести содержимое файлов на экран. В программе используйте подпрограммы.

5. Найти и вывести на экран самое большое симметричное слово текста. Если симметричных слов в тексте нет, вывести соответствующее сообщение. В программе используйте подпрограммы.

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

7. Сравните соответствующие строки двух текстовых файлов. Если строки совпали, то запишите эту строку в результирующий текстовый файл. Вывести на экран данные файлы и полученный. Если полученный файл пуст, вывести соответствующее сообщение. В программе используйте подпрограммы.

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

9. Создайте текстовый файл, содержащий в начале каждой строки гласные буквы соответствующей строки данного текстового файла, а в конце строки – согласные буквы. В середине строки расположите все остальные встретившиеся символы, заключив их в круглые скобки.

11. Удалить из середины каждой строки текстового файла заданное пользователем количество символов. Создайте текстовый файл, содержащий удаленные символы. Вывести на экран первоначальный файл и преобразованный. В программе используйте подпрограммы.

12. Для каждого символа текста указать, сколько раз он встречается в тексте и вывести в текстовый файл слово, в котором этот символ встречается наиболее часто. Если таких слов несколько, вывести

- первое встретившееся,

- последнее встретившееся,

- все слова.

В программе используйте подпрограммы.

13. Проанализировав длины строк текстового файла, объедините соседние строки так, чтобы длина строк файла была в заданном пользователем промежутке [а, b]. Если строк для объединения нет, предусмотрите в программе вывод соответствующего сообщения. Вывести на экран первоначальный файл и преобразованный. В программе используйте подпрограммы.

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

15. Вывести на экран и в текстовый файл строки данного текстового файла, содержащие одинаковые слова. Если таких строк нет, предусмотрите в программе вывод соответствующего сообщения. В программе используйте подпрограммы.

Творческое задание. Придумайте собственную задачу по данной теме и решите ее.

Приготовьте листинги решенных и проверенных учителем задач. Проверьте свои знания, ответив на ниже следующие вопросы.

Контрольные вопросы

1. Что общего в организации работы с текстовыми файлами и типизированными?

2. Какие специфичные для текстовых файлов функции и процедуры Вы знаете?

3. Какую информацию можно хранить в текстовом файле? Сколько способов просмотра текстового файла Вы использовали?

4. Можно ли, пользуясь средствами Norton Commander создать текстовый файл, который можно было бы обработать в Паскаль-программе? Если – да, то какое расширение он должен иметь?

5. Какие процедуры и функции модуля CRT Вы применяли в своих программах? С какой целью?


 

Для любознательных



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 330; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.44.233 (0.007 с.)