Разработка алгоритма, отладка и тестирование программы обработки файла данных



Цель работы: Получить навыки в составлении алгоритма и отладки программы обработки файлов данных

 

Теоретические положения:

Файл – представляет собой последовательность компонент, расположенных на внешнем носителе информации. Любой файл имеет три характерные особенности:

- у него есть имя;

- содержит компоненты одного типа;

- длина создаваемого файла никак не оговаривается при его объявлении ограничивается только емкостью устройства внешней памяти.

В языке Pascal различают 3 типа файлов данных:

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

2. Текстовые – это совокупность символов, разделенных на строки переменной длины. В конце каждой строки стоит признак конца строки EOLN( endofline). Доступ к каждой строке возможен только последовательно, начиная с первой. Компонентами текстового файла могут быть данные следующих типов: символьные, стринги, вещественные и целочисленные.

 

Чтение данных из файла (т.е. ввод данных в ОП машины) и запись данных в файл     (т.е. вывод данных из ОП на ВЗУ) осуществляется через файловые переменные.

 

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

1. для типизированных файлов

 

Varимя файловой переменной : fileofтип компонент;

или

Typeимятипа= fileofтипкомпонент;

Varимя файловой переменной :имя типа;

где file, of -служебные слова ( файл, из)

 

2. для текстовых файлов

 

Varимя файловой переменной : text

или

Typeимя типа = text;

Varимя файловой переменной :имя типа;

где text -служебное слово (текстовый)

После описания файловой переменной в ОЗУ выделяется место под значение данной переменной. Над файловыми переменными нельзя выполнять операции присваивания, сравнения и т.п. Их можно использовать только для выполнения операций над файлами: чтение, записи, удаления, переименования и т.д. С каждым файлом связана своя файловая переменная.

 

При работе с любым типом файла необходимо выполнить следующие 5 операций:

1. объявление файловой переменной;

2. связь файловой переменной с конкретным файлом на физическом уровне;

3. инициализация файла – означает указать направление передачи данных     ( т.е. открыть файл для чтения, записи или добавления);

4. обработка данных ;

5. закрытие файла.

Стандартные процедуры и функции для работы с файлами

 

Имя и параметры Типы параметров Тип результата Действие

Процедуры

Assign(f,name) f – файловая переменная name - string   связывает файловую переменную f с файлом с именем name
Reset(f) f - файловаяпеременная   Открывает файл, связанный с файловой переменной f .Текстовые - только на чтение, типизированные - на чтение и запись
Rewrite(f) f - переменная файлового типа   создает и открывает новый файл, связанный с файловой переменной f. Если файл с указанным именем уже существует, то он удаляется, и вместо него создается новый файл. Текстовые -только на запись, типизированные- на чтение и запись
Append(f) f - типа Text   открывает текстовый файл на запись для добавления. Файловый указатель устанавливается в конец файла.
Close(f) f - файловаяпеременная   закрывает файл
Read(f,a,b,...) f - файловая переменная, a,b - переменные простого типа, string или указатели   считывает значения из файла f в переменные a, b ...Для типизированного переменныеa, b … - базового типа, а их значения считываются из файла в двоичном виде. Для текстового файла, переменные a, b ... могут иметь различные типы, а их значения храниться в текстовом виде
Write(f,a,b,...) f - переменная файлового типа, a,b - выражения простого типа, string или указатели   записывает значения a, b ... в файл f. Для типизированного- типы значений a, b ... – базовые. Для текстового- значения a, b ... выводятся в текстовом виде, при этом могут быть использованы форматы вывода
Readln(f,a,b,...) f - переменная типа Text, a,b - переменные простого типа, типа string или указатели   считывает значения из текстового файла f в переменные a, b ..., после чего пропускает символы до конца строки. Вызов readln(f) просто пропускает символы до конца строки
Writeln(f,a,b,...) f - переменная типа Text, a,b - выражения простого типа, типа string или указатели   записывает значения a, b ... в текстовый файл f, после чего записывает в него символ конца строки. Вызов writeln(f) просто записывает в файл символ конца строки
Seek(f,n) f - переменная типа file   перемещает файловый указатель в типизированном файле на n-ый элемент (нумерация начинается с нуля)
Truncate(f) f - переменная типа file   удаляет все элементы типизированного файла с текущей позиции файлового указателя до конца файла
Rename(f,name) f - файловая переменная, name - string   переименовывает файл, связанный с файловой переменной f. Файл должен быть закрыт
Erase(f) f - переменная файлового типа   удаляет файл, связанный с файловой переменной f. Файл должен быть закрыт

Функции

FileExists(name) name - string boolean возвращает True, если на диске имеется файл с именем name, в противном случае возвращает False
CanCreateFile(name) name - string boolean возвращает True, если можно создать файл с именем name, в противном случае возвращает False
Eof(f) f - переменная файлового типа boolean возвращает True, если файловый указатель стоит на конце файла, и False в противном случае
Eoln(f) f - переменная типа Text boolean возвращает True, если файловый указатель стоит на конце строки, и False в противном случае
SeekEof(f) f - переменная типа Text boolean пропускает пробелы, символы табуляции и перехода на новую строку, после чего возвращает True, если файловый указатель стоит на конце файла, и False в противном случае
SeekEoln(f) f - переменная типа Text boolean пропускает пробелы, символы табуляции, после чего возвращает True, если файловый указатель стоит на конце строки, и False в противном случае
FileSize(f) f - переменная типа file integer возвращает количество элементов в типизированном файле
FilePos(f) f - переменная типа file integer возвращает позицию файлового указателя в типизированном файле

Пример 1: Текстовый файл представляет собой фрагмент программы на языке Pascal. Определить количество строк в которых есть служебное слово «begin».

 

 

Programfile1;

Varf:text; S,name:string; n,k:byte;

Begin

Writeln(‘введитепутьиимяфайла’); Readln(name);

Assign(f, name);

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

Repeat

Readln(s);

Writeln(f,s); {записьстрокивфайл}

Untils=’end.’; {покане end.}

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

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

n:=0;

 Whilenot(eof(f))do{поканеконецфайла}

Begin

Readln(f,s); {читать строку из файла}

S:=LowerCase(s); {преобразует строку к нижнему регистру}

K:=pos(‘begin’,s);

If k<>0 then n:=n+1;

end;

close(f);

if n=0 then wrieln(‘нетстроксословом begin’)else writeln(‘кол-вострок=’,n)    

End.

    Результат решения задачи

Введите путь и имя файла

e:\a.txt

кол-во строк=1

Порядок выполнения работы:

 

  1. Для загрузки интегрированной среды запустите файл  - РascalABC.exe.
  2. Создайте новый файл для ввода текста программы: меню Файлà пункт Новый(Ctrl+N) или кнопка на панели инструментов Новый файл.
  3. В окне для ввода текста программы наберите свою программу. После заголовка программы в комментарии напишите условие задания.
  4. Запустите программу на выполнение: меню Программа àпункт Выполнить или кнопка Выполнить на панели инструментов
  5. Сохраните программу: меню Файлàпункт Сохранить какàукажите место сохранения файла и имя файла.àV:\группа\студент\задача _номер

Содержание отчёта:

1) Шифр работы

2) Название работы

3) Цель работы

4) Условие задачи

5) Блок-схема алгоритма

6) Текст программы

7)

Из окна вывода  
Исходные данные

Результат решения

 

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

1. Что такое файл? Для каких целей используются файлы?

2. Какие типы данных могут использоваться в текстовых файлах?

3. Зачем используется файловая переменная? Как устанавливается соответствие файловой переменной файлу во внешней памяти?

4. Что общего у процедуры Rewrite и Reset и чем они отличаются?

5. Какой процедурой осуществляется открытие файла для чтения?

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

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

8. Для чего предназначена процедура Close?

9. В чём отличие текстового файла от fileofChar?

10. Какие файлы называются типизированными?

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

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

13. Назначение процедур для работы с файлами прямого доступа ?

 

Индивидуальные задания:

Вариант № 1.

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

 

Вариант № 2.

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

 

Вариант № 3.

Файл AX.dat содержит вещественные числа. Для каждой тройки чисел найти площадь треугольника, если считать, что числа являются сторонами этого треугольника. (Считается, что не из каждой тройки чисел можно составить треугольник) Составить файл AY.dat, который будет содержать длины сторон и площадь треугольника.

 

Вариант № 4.

Файл AA.dat содержит элементы матрицы A(M*N), элементы записаны по столбцам. Сформировать файл BB.dat, содержащий элементы матрицы A, записанным по строкам.

 

Вариант № 5.

Файл записей содержит информацию о каждом студенте:

  • Фамилия;
  • Дата рождения (год);
  • № группы;
  • пол.

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


Вариант № 6.

Файл VED.dat содержит список учащихся, занимающихся в спортивных секциях.

В списке указаны следующие сведения: фамилия, год рождения, пол, вид спорта.

Создать файл COM.dat, который будет содержать список девушек заданного возраста по заданному виду спорта.

 

Вариант № 7.

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

 

Вариант № 8.

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

 

Вариант № 9.

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

 

Вариант № 10.

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

 

 

Вариант № 11.

Используя подпрограмму-процедуру, заменить в текстовом файле каждую цифру на следующую по величине (‘9’ заменить на ‘0’).

 

Вариант № 12.

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

 

Вариант № 13.

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

 

Вариант № 14.

Даны два текстовых файла (g и h). Используя подпрограмму-процедуру присоединить файл h к файлу g, создав новый файл f.

 

 

Вариант № 15.

Считая, что исходный текстовый файл разбит на строки, длина которых <=80, описать процедуру pr(f,80), которая дополняет короткие строки исходного файла пробелами справа, т.е. в новом файле f80 все строки имеют длину=80.

 

Вариант № 16.

Используя подпрограмму-процедуру, удалить, из текстового файла все символы ‘+’ и ‘-’.

 

Вариант № 17.

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


Вариант № 18.

Дан файл символов. Вывести строчные гласные буквы, стоящие на нечетных местах в файле.

 

Вариант № 19.

Дан файл вещественных чисел. Отрицательные компоненты переписать в другой файл и найти средне арифметическое положительных элементов.

 

Вариант № 20.

Дан файл записей:

  • фамилия учащегося;
  • дата рождения xx.xx.xx.

Вывести фамилии учащихся в порядке возрастания месяца рождения.

 

Вариант № 21.

Файл DAN.dat содержит значения аргументов x1,x2,x3 и значения функции Y.

Сформировать файл DAN1.dat, который будет содержать значения x1,x2,x3 для экстремальных Y. (|Yi-1|<|Yэкстр-Yi|>|Yi+1|)

 

Вариант № 22.

Файл AA.dat содержит элементы матрицы A(N*N), элементы записаны по строкам.

Вывести на экран элемента второй диагноз.

 

Вариант № 23.

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

 

Вариант № 24.

Экран файл типа integer определить положение минимального элемента.

 

Вариант № 25.

Дан файл A1.dat, содержащий элементы матрицы A(M,N). Элементы записаны по строкам, удалить из строки элементы n-го столбца.

 

Вариант № 26.

Файл AA.dat содержащий элементы матрицы A(M*N), элементы записаны по строкам.

Вывести на экране элемента К-го столбца.

 

Вариант № 27.

В файле AX.dat хранятся длина сторон квадрата. Сформировать файл AS.dat и AP.dat, которые будут хранить площадь квадрата и длины периметра квадрата.

 

Вариант № 28.

Имеется файл записей о студентах. Каждая запись имеет поля:

  • ф.и.о.;
  • оценка;
  • группа.

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

 

Вариант № 29.

Дан текстовый файл. Необходимо удвоить в этом файле каждую цифру.

 

Вариант № 30.

В текстовом файле f записана последовательность вещественных чисел, разделенных пробелами. Описать процедуру pos(f1,f2), записывающую в текстовый файл положительные числа из исходного файла.

 

Вариант № 31.

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

 

Вариант № 32.

В файле типа char содержатся цифры и знаки ‘*’ и ‘/’.

Эта последовательность представляет собой арифметическое выражение, которое необходимо вычислить.

 

Вариант № 33.

Задан файл типа string. Описать процедуру удваивающую в стринге каждую цифру.

 

Вариант № 34.

Дан текст из цифр и строчных латинских букв за которыми следует ‘.’. определить каких букв гласных (a, e, i, o, u) или согласных больше в этом тексте и на сколько.

Вариант № 35.

Создать текстовый файл, используя процедуру, которая в первой строке файла записывает одну “1”, во второй - две “2”…в девятой – девять девяток.

 

Вариант № 36.

Задан файл, содержащий записи: фамилия, название книги, год издания.

Определить имеется ли книга с интересующим названием, или за то указать год издания.

 

Вариант № 37.

Вывести все звонкие согласные буквы, которые входят хотя бы в дно слово.

 

Вариант№  38.

Type zap=record

       FIO:string;

       GOD:1900..1994

       End

Var f:file of zap;

Вывести все записи, относящиеся к интересующим пользователю годам.

 

Вариант № 39.

Задан файл типа string. Вывести из каждого стринга все латинские буквы.

 

Вариант № 40.

Даны 2 файла записей с полями: часы, минуты, секунды.

Используя логическую функцию bgu(f,g), проверить на эквивалентность эти файлы.

 

Вариант№ 41.

Type zap=record

       FIO:string[40];

       VOZR:byte

       End;

Var f:file of zap;

Описать процедуру выводящую FIO самых старших по возрасту в файле f.

 

Вариант № 42.

Удалить из файла типа char все повторные вхождения символов.

 

Вариант № 43.

Задан файл типа string[10]. Описать процедуру распечатывающую исходный файл в две колонки.

 

Вариант № 44.

Переформатировать файл содержащий точку и символ.

 

Вариант № 45.

Задан файл, содержащий сведения о фамилии владельца, марки автомобили и номера.

Вывести количество автомобилей каждой марки.

 

Вариант № 46.

Описать функцию, проверяющую расположены ли в файле типа string слова в алфавитном порядке.

 

Вариант№ 47.

Type zap=record

       FIO:string[10];

       MODEL:string[10];

       NOMER:string[7]

       End;

Var f:file of zap;

Вывести фамилии владельцев и номера автомобилей данной марки.

 

Вариант № 48.

Задан файл, содержащий сведения о книгах. Сведения: фамилия, название, год издания.

Определить название книг данного автора, изданного после заданного года.

 

Вариант № 49.

Описать функцию, подсчитывающую сумму отрицательных элементов в файле типа real.

 

Вариант № 50.

Задан файл типа string записать в файл выбранные стринги из исходного файла.

 

Вариант № 51.

Задан текстовый файл f. Вывести самую длинную строку, если их несколько то все.

 

Вариант № 52.

Дан символьный файл f. Записать в файл Y все элементы файла f в обратном порядке.

 

Вариант № 53.

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

 

Вариант№  54.

Type zap=record

       Price:real;

       Food:string[20]

       End;

Var f:file of zap;

 

Создать индексный файл, содержащий N товаров в порядке возрастания стоимости.

 

Вариант № 55.

Описать процедуру line(t), которая построчно печатает содержимое непустого текстового файла t, вставляя в начало каждой печатаемой строки ее номер и пробел.

 

Вариант № 56.

Дан файл f, элементы которого целые числа. Записать в файл g все четные числа файла f, а в файл t-все нечетные.

 

Вариант№ 57.

Type zap=record

       Group:byte;

       USP:real

       End;

Описать функцию, выводящую из файла типа zap номера групп с успеваемостью выше средней по курсу.

 

Вариант № 58.

Дан файл записей, содержащий информацию:

  • фамилия имя
  • пол

вывести в файл типа string фамилии девушек, заканчивающихся на согласный звук.

 

 


 

Лабораторная работа №7


Дата добавления: 2018-06-26; просмотров: 58; ЗАКАЗАТЬ РАБОТУ