Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Informatika (2 семестр) / 2 аттестация / УпражненияФайлы2

.pdf
Скачиваний:
7
Добавлен:
27.05.2015
Размер:
96.52 Кб
Скачать

ВолГУ, Институт математики и информационных технологий, кафедра Компьютерных наук и информационных технологий, Игумнов А.Ю.

Информатика и программирование, 1-й курс, 2-й семестр

Упражнения по программированию на языке PASCAL

(программный продукт FREE PASCAL)

Общие положения

Предполагается известными понятия: файл, расширение файла, папка, жесткий диск, флэшпамять (устройство флэш-памяти, флэш-устройство), бит, байт, блок-схема Текст упражнений составлен в предположении, что

FREE PASCAL установлен на жестком диске компьютера; к компьютеру подключено устройство флэш-памяти;

наименование устройства флэш-памяти (вырабатываемое операционной системой) — F; файлы с текстами программ (pas-файлы) и рабочие файлы, создаваемые автоматически при компиляции программ, расположены в устройстве флэш-памяти (при этом полным наименованием файла будет F:\... , где ... ― название файла );

Работа с файлами

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

var <наим. переменной>: file of <наим. типа>

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

Действия с файлами производятся по следующей схеме:

1.Связать (отождествить) наименование файла и наименование файловой переменной.

2.Открыть файл (с уточнением: открыть заново, открыть для записи, для чтения и т.п.).

3.Исполнить команду (серию команд) вида: действие(<наим. файла>, <значение или наименование объекта>). Здесь действие может означать запись в файл, чтение из файла и т.п. Тип объекта (тип значения) должен соответствовать типу файла.

4.Закрыть файл.

Некоторые предписания, используемые при работе с файлами rewrite(<наим. файловой переменной>) - предписание имеет двоякий смысл:

1)если на момент исполнения предписания файла с наименованием, отождествленным с файловой переменной, не существует, то он создается, открывается для записи, и запись в него производится последовательно;

2)если на момент исполнения предписания файл с наименованием, отождествленным с файловой переменной, существует, то он открывается, его содержимое стирается, и файл

становится доступным для записи; запись в файл производится последовательно. reset(<наим. файловой переменной>) - если файла с наименованием, отождествленным с файловой переменной, на момент исполнения предписания не существует, то возникает ситуация отказ (при исполнении программы выводится соответствующее сообщение); если файл с указанным наименованием существует, то он открывается для чтения; чтение содержимого файла производится последовательно с начала.

eof(<наим. файловой переменной>) ― достигнут конец файла; предписание вырабатывает ответ да/нет и используется в логических выражениях и в управляющих конструкциях; типовое применение ― в конструкции цикла по условию.

1

ВолГУ, Институт математики и информационных технологий, кафедра Компьютерных наук и информационных технологий, Игумнов А.Ю.

Информатика и программирование, 1-й курс, 2-й семестр

Далее рассматриваются только файлы символьного типа.

Примененение управляющих конструкций при работе с файлами.

Пример 1. Чтение содержимого файла и вывод прочтенного на экран (читаемый файл не пуст).

program file2;

var f1: file of char; {файловая переменная} symbol: char;{символьная переменная}

begin

 

 

assign(f1,'F:\3.txt');

{Отождествление файловой переменной и названия файла}

reset(f1);

{Открыть файл для чтения с начала}

while not eof(f1) do

{цикл пока конец файла не достигнут выполнять}

begin

 

 

read(f1,symbol);

{прочитать очередной элемент файла в переменную symbol}

write(symbol);

{вывести на экран значение переменной symbol}

end;

 

{конец цикла}

close(f1);{Закрыть файл} end.

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

Упражнение 1. Средствами операционной системы (редактором "Блокнот") создать в папке F файл с названием 3.txt, внести в него какой-либо текст и сохранить содержимое. Проверить работу программы file2.

Упражнение 2. Изменить содержимое файла 3.txt и исполнить программу file2.

Упражнение 2'.Выполнить упражнение 1, записав в исходный файл буквы русского алфавита. Упражнение 2''. Создать исходный файл посредством редактора AkelPad и записать в файл текст на русском языке. Сохраняя файл в различных кодировках проверить работу программы примера 1.

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

program file2;

var f1,f2: file of char; {Описание файловых переменных и вспомогательной}

symbol: char;

{символьной переменной}

begin

 

 

assign(f1,'F:\3.txt');

{Отождествления файловых переменных}

assign(f2,'F:\3-1.txt');{и наименований файлов}

reset(f1);

{Первый файл открыть для чтения с начала}

rewrite(f2);

{Второй файл открыть для записи с начала}

while not eof(f1) do begin

read(f1,symbol); {Посимвольное переписывание содержимого первого файла} write(symbol); {во второй транзитом через переменную symbol} write(f2,symbol);

end;

close(f1); {Закрыть первый и второй файлы} close(f2);

2

ВолГУ, Институт математики и информационных технологий, кафедра Компьютерных наук и информационных технологий, Игумнов А.Ю.

Информатика и программирование, 1-й курс, 2-й семестр

end.

Результатом работы программы является появление в папке F файла с наименованием 3-1.txt (если его не было перед исполнением программы); содержимое этого файла совпадает с содержимым исходного файла.

Упражнение 3. Посредством текстового редактора создать в папке F файл с названием 3.txt и внести в него какой-либо текст. Проверить работу программы примера 2.

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

Упражнение 5. Дополнить программу примера 2 таким образом, чтобы содержимое исходного файла записывалось в два файла.

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

program file2;

 

var f1: file of char;

{Описание файловых переменных и}

symbol, symbol1: char; {вспомогательных символьных переменных}

s: integer;

{Переменная-копилка (счетчик для подсчета количества экземпляров)}

begin

 

assign(f1,'F:\3.txt');

{Отождествление файловой переменной и файла}

reset(f1);

{Открыть файл для чтения с начала}

symbol1:='М';

{Указание искомого символа}

s:=0;

{Начальное значение копилки}

while not eof(f1) do {цикл пока не достигнут конец файла выполнять} begin

read(f1,symbol); {прочтение символа из файла и} write(symbol); {вывод его на экран (для контроля)}

if symbol=symbol1 then s:=s+1; {Если прочтенный символ совпадает с искомым, то}

 

{увеличить значение счетчика на единицу}

end;

{конец цикла}

close(f1); {Закрыть файл}

writeln;

{Вывести на экран с новой строки сообщение о результатах работы}

writeln('Количество букв ',symbol1,' = ',s); end.

Итогом работы программы могут быть фразы вида: Количество букв M = 0

или

Количество букв M = 5.

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

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

Упражнение 7. Обработать программой txt-файл, содержимое которого является осмысленным текстом (например, фрагментом литературного текста). Искомую букву задать по своему усмотрению. Выполнить упражнение для нескольких букв.

Упражнение 8. Обработать программой большие файлы (несколько мегабайт, несколько гигабайт). Вывести примерную зависимость времени обработки от объема файла.

3

ВолГУ, Институт математики и информационных технологий, кафедра Компьютерных наук и информационных технологий, Игумнов А.Ю.

Информатика и программирование, 1-й курс, 2-й семестр

Упражнение 9. Доработать программу примера 3 таким образом, чтобы одновременно (т.е. за один прогон программы) определялось количество экземпляров двух букв, трех, четырех.

4

Соседние файлы в папке 2 аттестация