2.90M
Категория: ПрограммированиеПрограммирование

Лабароторная №13__w Работа с файлами в PascalABC.NET

1.

Лабораторная
работа № 13
PASCALABC.NET
РАБОТА С ФАЙЛАМИ
Дисциплина:
«Основы алгоритмизации и программирования.»
Преподаватель: Шадрин Валерий Георгиевич

2.

Порядок выполнения лабораторной работы.
1. Открыть рабочею папку Ваших работ на рабочем столе
:
Sol_Pascal
группа
Фамилия
2. Скачать из папки преподавателя работу:
«лабораторная работа №13»
с методическим материалом, с заданием и примерами
для выполнения лабораторной работы.
3. Изучить методический материал и задание для
выполнения Лабораторной работы
4. Выполнить вначале Контрольные задания, затем
задание для лабораторной и ответить на контрольные
вопросы
Сохранить все результаты в созданной Вами папке :
Sol_Pascal
группа
Фамилия
2

3.

Цель лабораторной работы:
Изучить принципы работы с файлами различных типов в среде PascalABC.NET, освоить
основные операции создания, чтения, записи и обработки файлов, научиться применять
полученные знания при решении практических задач.
1. Краткие теоретические сведения
1.1. Понятие файла
Файл – это именованная область данных на внешнем носителе (диске). В языке
Pascal различают три основных типа файлов:
· Текстовые файлы – файлы, состоящие из строк символов переменной длины.
Данные в них хранятся в виде последовательности символов, разбитой на строки.
· Типизированные файлы – файлы, состоящие из элементов одного типа (записей,
чисел, строк фиксированной длины). Каждый элемент имеет одинаковый размер.
· Нетипизированные файлы – файлы, представляющие собой последовательность
байтов без внутренней структуры. Позволяют работать с произвольными блоками
данных.
3

4.

ФАЙЛЫ. ЧТЕНИЕ И ЗАПИСЬ ИНФОРМАЦИИ ИЗ ФАЙЛОВ
Тип-файл представляет собой последовательность компонент одного типа, расположенных на
внешнем устройстве (диске). Элементы могут быть любого типа, за исключением самого типафайла.
Число элементов в файле при описании не объявляется. Работа с физическими файлами
происходит через так называемые файловые переменные.
Для задания типа-файла надо использовать зарезервированные слова FILE и OF, после чего
указать тип компонент файла.
Пример. Type
N=file of integer; {тип-файл целых чисел}
C=file of char; {тип-файл символов}
Есть заранее определенный в Паскале тип-файл с именем Text - текстовый файл.
4

5.

1.2. Основные процедуры и функции для работы с файлами
1.2.1. Для всех типов файлов
· Assign(f, имя_файла) – связывает файловую переменную f с
физическим файлом.
· Reset(f) – открывает существующий файл для чтения (для
текстовых – устанавливает указатель в начало).
· Rewrite(f) – создаёт новый файл (если существовал –
перезаписывает) и открывает для записи.
· Close(f) – закрывает файл.
5

6.

1.2. Основные процедуры и функции для работы с файлами
1.2.2. Для текстовых файлов
· Read(f, переменные) – чтение из файла в переменные.
· Readln(f, переменные) – чтение строки с переходом на следующую.
· Write(f, выражения) – запись в файл.
· Writeln(f, выражения) – запись с добавлением символа конца строки.
· Append(f) – открывает существующий текстовый файл для добавления в конец.
· Eof(f) – проверка достижения конца файла.
· Eoln(f) – проверка конца строки.
6

7.

1.2. Основные процедуры и функции для работы с файлами
1.2.3. Для типизированных файлов
· Read(f, переменная) – чтение одного элемента.
· Write(f, переменная) – запись одного элемента.
· Seek(f, номер_элемента) – перемещение указателя на заданный элемент
(нумерация с 0).
· FilePos(f) – текущая позиция указателя.
· FileSize(f) – количество элементов в файле.
· BlockRead(f, буфер, количество[, количество_прочитанных]) – чтение блока
элементов.
· BlockWrite(f, буфер, количество[, количество_записанных]) – запись блока
элементов.
7

8.

1.2. Основные процедуры и функции для работы с файлами
1.2.4. Для нетипизированных файлов
· BlockRead(f, буфер, количество_байт[, количество_прочитанных]) – чтение блока байт.
· BlockWrite(f, буфер, количество_байт[, количество_записанных]) – запись блока байт.
· Seek(f, позиция_в_байтах) – перемещение указателя (байтовая адресация).
· FilePos(f), FileSize(f) – возвращают позицию и размер в байтах.
8

9.

ФАЙЛЫ. ЧТЕНИЕ И ЗАПИСЬ ИНФОРМАЦИИ ИЗ ФАЙЛОВ
Над файловыми переменными нельзя выполнять никаких операций
(присваивать значения, сравнивать и т.д.). Их можно использовать
только для выполнения операций с файлами (чтение, запись и т.д.).
Элементы файла считаются расположенными последовательно, то есть
так же, как элементы линейного массива. Отличие в том, что
1) Размеры файла могут меняться.
2) Способ обращения к элементам другой.
Элементы просматриваются только подряд от начала к концу, при этом в каждый
момент времени доступен только один элемент. Можно представить, что для
каждого файла существует указатель, показывающий в данный момент на
определенный компонент файла. После проведения операции чтения или записи
указатель автоматически передвигается на следующий компонент.
Перед тем, как осуществить ввод-вывод, файловая переменная должна быть связана
с конкретным внешним файлом при помощи процедуры Assign.
ASSIGN (<ИМЯ ФАЙЛОВОЙ ПЕРЕМЕННОЙ>, <ИМЯ ФАЙЛА>)
Имя файла задается либо строковой константой, либо через переменную типа String.
Имя файла должно соответствовать правилам работающей в данный момент
операционной системы.
9

10.

Файл должен быть открыт одной из процедур:
1. RESET(<Имя файловой переменной>);
Открывается существующий файл для чтения, указатель теку-щей
компоненты файла настраивается на начало файла. Если физиче-ского
файла, соответствующего файловой переменной, не существует, возникает
ситуация ОШИБКИ ввода-вывода.
2. REWRITE(<Имя файловой переменной >);
Открывает новый пустой файл для записи, ему присваивается имя, заданное
процедурой Assign. Если файл с таким именем уже существует, то он
уничтожается.
3. APPEND(<Имя файловой переменной >);
Открывает файл для добавления данных в него.
После работы с файлом его нужно закрыть процедурой Close:
CLOSE(<Имя файловой переменной >);
Close(f)
Это требование обязательно должно соблюдаться для файла, в который
производится запись – для гарантии сохранения данных. Вывод: заменить
старые данные новыми или добавить новые к старым? Это определяется во
время открытия файла.
10

11.

ОРГАНИЗАЦИЯ ЧТЕНИЯ И ЗАПИСИ
Для ввода информации из файла, открытого для чтения, используется уже
знакомый оператор Read:
READ(<Имя файловой переменной >, <Список ввода>);
Происходит считывание данных из файла в переменные из списка ввода.
Переменные должны быть того же типа, что и компоненты файла.
Вывод информации производит оператор Write:
WRITE(<Имя файловой переменной >, <Список вывода>);
Данные из списка вывода заносятся в файл, открытый для записи.
Используются и операторы Readln и Writeln.
Любой файл конечен, и продолжать чтение из него информации можно до
определенного предела. Проверить, окончен ли файл, можно вызовом
стандартной логической функции:
Eof (<Имя файловой переменной >);
Она возвращает значение Истина, если файл окончен, и Ложь – в противном
случае.
11

12.

1.3. Особенности работы в PascalABC.NET
Среда PascalABC.NET поддерживает как классический синтаксис работы с
файлами, так и объектно-ориентированный подход (классы TextFile, BinaryFile и др.).
В данной лабораторной работе используется классический способ, обеспечивающий
совместимость с учебными материалами.
2. Примеры использования
```pascal
program CreateTextFile;
var
f: Text;
Пример 1.
Создание текстового файла и запись в него строк
i: Integer;
begin
Assign(f, 'output.txt');
Rewrite(f);
for i := 1 to 10 do
Writeln(f, 'Строка номер ', i);
Close(f);
Writeln('Файл создан.');
end.
```
12

13.

2. Примеры использования
```pascal
program ReadTextFile;
var
f: Text;
Пример 2. Чтение текстового файла и вывод на экран
s: string;
begin
Assign(f, 'output.txt');
Reset(f);
while not Eof(f) do
begin
Readln(f, s);
Writeln(s);
end;
Close(f);
end.
```
13

14.

2. Примеры использования
```pascal
program AppendTextFile;
var
Пример 3. Добавление данных в конец текстового файла
f: Text;
begin
Assign(f, 'output.txt');
Append(f);
Writeln(f, 'Добавленная строка');
Close(f);
end.
14

15.

2. Примеры использования
begin
Assign(f, 'students.dat');
```pascal
program
TypedFileExample;
Rewrite(f);
s.Name := 'Иванов И.И.';
s.Group := 101;
Пример 4.
type
s.Grade := 4.8;
Работа с типизированным
TStudent = record
Write(f, s);
файлом записей
Name: string[30];
Close(f);
Group: integer;
Assign(f, 'students.dat');
Grade: real;
Reset(f);
end;
Read(f, s);
var
Writeln(s.Name, ' ', s.Group, ' ', s.Grade:0:2);
f: file of TStudent;
Close(f);
s: TStudent;
end.
```
15

16.

2. Примеры использования
Пример 3: Файл записей
(типизированный)
```pascal
type
TStudent = record
Name: string[50];
Group: string[10];
Grade: Integer;
end;
var
f: file of TStudent;
st: TStudent;
begin
Assign(f, 'students.dat');
Rewrite(f);
st.Name := 'Иванов И.И.';
st.Group := 'ПИ-101';
st.Grade := 5;
Write(f, st);
st.Name := 'Петрова А.С.';
st.Group := 'ИВТ-102';
st.Grade := 4;
Write(f, st);
Close(f);
end.
```
Пример 4: Поиск и изменение данных в
типизированном файле
```pascal
// Поиск студента с именем "Петрова" и изменение его
оценки
var
f: file of TStudent;
st: TStudent;
i: Integer;
begin
Assign(f, 'students.dat');
Reset(f);
for i := 0 to FileSize(f) - 1 do
begin
Seek(f, i);
Read(f, st);
if st.Name = 'Петрова А.С.' then
begin
st.Grade := 5;
// Изменяем оценку
Seek(f, i);
// Возвращаемся на запись
Write(f, st);
// Перезаписываем
Writeln('Данные обновлены.');
break;
end;
end;
16
Close(f);
end.

17.

2. Примеры использования
Пример 5. Копирование файла с помощью нетипизированного файла
```pascal
repeat
program CopyFile;
BlockRead(src, buffer, SizeOf(buffer), bytesRead);
var
if bytesRead > 0 then
src, dst: file;
BlockWrite(dst, buffer, bytesRead, bytesWritten);
buffer: array [1..4096] of byte;
until bytesRead = 0;
bytesRead, bytesWritten: integer;
Close(src);
begin
Close(dst);
Assign(src, 'source.dat');
Writeln('Копирование завершено.');
Assign(dst, 'copy.dat');
end.
Reset(src, 1);
// размер блока 1 байт
```
Rewrite(dst, 1);
17

18.

2. Примеры использования
Пример 6. Написать программу, которая вводит с клавиатуры список фамилий учащихся, а затем распечатывает
его, кроме тех учащихся, у которых фамилия начинается с буквы «Ш».
Так как заранее количество данных не известно, для их хранения используется файл. Тип элементов – строковый.
Program Spisok;
Var 190
i, n: integer;
F: file of string;
S: string;
Begin
Assign(f, ‘Spis.lst’); {связываем файловую переменную f фай-лом
Spis.lst }
Writeln(‘Введите количество учащихся’);
Readln(n);
Rewrite(f); {создаем файл для записи в него данных}
For i:=1 to n do begin
Writeln(‘Введите фамилию’);
Readln(s);
Write(f, s);
End;
Close(f);
If s[1]<>’Ш’ then writeln(s);
End;
Close(f);
End.
18

19.

2. Примеры использования
Пример 7 В файловую переменную записать 20
Пример 8 В переменную b записать элемент
действительных чисел, которые последовательно вводятся с
клавиатуры.
Решение
program ex81;
const m = 20;
begin
var fx1: file of real; // описание файла
assign(fx1, 'd:\f1’); // связывание с файловой
переменной
rewrite(fx1);
// открытие файла для записи
for var i := 1 to m do
begin
var x := ReadReal('Введите действительное число');
write(fx1, x);
// запись в файл
end;
end.
файла действительных
чисел Rnum.dat с номером n.
Решение
program ex82;
begin
var fr: file of real;
// инициализация файловой переменной
assign(fr, 'd:\f1');
var n := ReadInteger('Введите номер элемента');
reset(fr); // открытие файла для чтения и
записи
var b: real;
// чтение из файла в переменную b
for var i := 1 to n do read(fr, b);
write(b);
close(fr) // закрытие файла
end.
19

20.

2. Примеры использования
Пример 9. Найти сумму всех чисел из файла
Пример 10. Определить количество строк в
действительных чисел
d:\f1.
Решение
program ex83;
begin
var f1: file of real;
assign(f1, 'd:\f1');
var sr := 0.0; // переменная для суммы
reset(f1);
var b: real;
repeat
// вычисление суммы
read(f1, b);
sr += b
until Eof(f1);
write(sr:7:2)
end.
текстовом файле mail.txt.
Решение
program ex84;
begin
var mail2: text;
assign(mail2, 'D:\mail.txt');
reset(mail2);
var n := 0;
while not Eof(mail2) do
begin
readln(mail2);
inc(n)
53
end;
println('Количество строк n =', n);
close(mail2);
end.
20

21.

Примеры выполнения лабораторной работы
Текстовый файл.
Задание: Создать текстовый файл, содержащий строки.
Заменить все пробелы на символ '_' и сохранить в новый файл.
Алгоритм:
1. Создаём исходный файл с несколькими строками.
2. Открываем его для чтения, второй файл – для записи.
3. В цикле читаем строку, заменяем все пробелы на '_'
(перебираем символы).
4. Записываем изменённую строку в выходной файл.
5. Закрываем оба файла.
Комментарий: Для замены символа в строке используется
индексация line[i]. После завершения работы можно удалить
исходный файл, но в задании этого не требуется.
program Var1;
var
f, f2: text;
line: string;
begin
Assign(f, 'var7_in.txt');
Rewrite(f);
Writeln(f, 'Hello world!');
Writeln(f, 'This is a test');
Close(f);
Assign(f, 'var7_in.txt');
Reset(f);
Assign(f2, 'var7_out.txt');
Rewrite(f2);
while not Eof(f) do
begin
Readln(f, line);
for var i := 1 to Length(line) do
if line[i] = ' ' then line[i] := '_';
Writeln(f2, line);
end;
Close(f);
Close(f2);
Writeln('Готово');
end.
21

22.

Примеры выполнения лабораторной работы
Текстовый файл
Задание: Создать текстовый файл, содержащий строки с
числами (каждая строка – одно целое число). Найти сумму
всех чисел в файле.
Алгоритм:
1. Объявляем файловую переменную f: text.
2. Связываем её с именем файла Assign(f, 'var1.txt').
3. Открываем для записи Rewrite(f), записываем несколько
чисел через Writeln.
4. Закрываем Close(f).
5. Открываем для чтения Reset(f).
6. В цикле while not Eof(f) do читаем числа Readln(f, num) и
суммируем.
7. Закрываем файл, выводим сумму.
Комментарий: Eof(f) проверяет конец файла. Readln
считывает строку и преобразует в число. Важно, чтобы
данные в файле соответствовали типу.
program Var2;
var
f: text;
num, sum: integer;
begin
// Создание файла
Assign(f, 'var1.txt');
Rewrite(f);
Writeln(f, 10);
Writeln(f, 20);
Writeln(f, 30);
Close(f);
// Обработка
sum := 0;
Assign(f, 'var1.txt');
Reset(f);
while not Eof(f) do
begin
Readln(f, num);
sum := sum + num;
end;
Close(f);
Writeln('Сумма чисел = ', sum);
end.
22

23.

Примеры выполнения лабораторной работы
Типизированный файл
Задание: Создать типизированный файл записей
TStudent (поля: фамилия, группа, оценки (3 числа)).
Вывести список студентов, у которых средний балл > 4
Алгоритм:
1. Определяем тип TStudent с фиксированными полями.
2. Создаём файл students.dat, записывая несколько записей.
3. Открываем для чтения, в цикле читаем записи.
4. Для каждой записи вычисляем среднее арифметическое
трёх оценок.
5. Если условие выполнено, выводим информацию.
Комментарий: Поля типа string должны быть фиксированной
длины для правильной записи в типизированный файл.
program Var3;
type
TStudent = record
name: string[20];
group: integer;
marks: array[1..3] of integer;
end;
var
f: file of TStudent;
s: TStudent;
avg: real;
begin
Assign(f, 'students.dat');
Rewrite(f);
s.name := 'Ivanov'; s.group := 101; s.marks[1] := 5; s.marks[2] := 4; s.marks[3] := 5;
Write(f, s);
s.name := 'Petrov'; s.group := 102; s.marks[1] := 3; s.marks[2] := 4; s.marks[3] := 3;
Write(f, s);
s.name := 'Sidorov'; s.group := 101; s.marks[1] := 5; s.marks[2] := 5; s.marks[3] := 5;
Write(f, s);
Close(f);
Assign(f, 'students.dat');
Reset(f);
while not Eof(f) do
begin
Read(f, s);
avg := (s.marks[1] + s.marks[2] + s.marks[3]) / 3;
if avg > 4 then
Writeln(s.name, ' (', s.group, ') - средний балл ', avg:0:2);
end;
Close(f);
end
23

24.

Практическая работа
варианты заданий для создания текстовых файлов
1. Создать текстовый файл. Подсчитать количество строк,
начинающихся с буквы 'А'.
2. Создать текстовый файл. Удалить из него все пустые
строки и записать результат в новый файл.
3. Создать текстовый файл в нем найти и вывести самое
длинное слово.
4. Создать текстовый файл, содержащий таблицу умножения
от 1 до 10.
5. Создать текстовый файл с числами (по одному в строке).
Найти сумму и среднее арифметическое.
6. Создать текстовый файл и переписать строки файла в
обратном порядке в новый файл.
7. Создать текстовый файл и удалить из файла все строки,
содержащие заданное слово.
8. Создать текстовый файл ,в каждой строке файла поменять
местами первое и последнее слово.
9. Создать текстовый файл, подсчитать количество гласных
букв в файле.
10. Создать текстовый файл и заменить все цифры в файле
на символ '*'.
24

25.

Практическая работа
варианты заданий для создания текстовых файлов
11. Создать текстовый файл и отсортировать строки файла в
алфавитном порядке.
12. Создать текстовый файл и разбить большой текстовый файл на
два: в первый записать строки с четными номерами, во второй — с
нечетными.
13. Создать текстовый файл и найти в файле все даты в формате
DD.MM.YYYY и вывести их.
14. Создать текстовый файл и удалить из файла все комментарии
(строки, начинающиеся с '//').
15. Создать текстовый файл и объединить два текстовых файла в
один.
16. Создать текстовый файл в файле заменить все повторяющиеся
пробелы на один.
17. Создать текстовый файл выровнять все строки файла по правому
краю (добить пробелами до 80 символов).
18. Создать текстовый файл и найти предложения, заканчивающиеся
знаком '?'.
19. Создать текстовый файл и посчитать частоту вхождения каждого
слова в файле.
20. Создать текстовый файл и добавить нумерацию строк в начало
каждой строки файла.
21. Создать текстовый файл и удалить последнюю строку файла.
22. Создать текстовый файл и затем найти и вывести все палиндромы
(слова) в файле.
23. Создать текстовый файл и преобразовать все первые буквы слов
в строке к верхнему регистру.
25

26.

Практическая работа
варианты заданий для создания текстовых файлов
24. Создать текстовый файл и зашифровать файл
шифром Цезаря (сдвиг на 1 букву).
25. Создать текстовый файл и удалить все знаки
препинания в файле.
26. Создать текстовый файл и отсортировать слова в
каждой строке файла по длине.
27. Создать текстовый файл и разбить текст на
предложения и записать каждое предложение с новой
строки.
28. Создать текстовый файл и найти все email-адреса
в тексте и вывести их.
29. Создать текстовый файл и создать файл-лог, в
который записывается текущее время и случайное
число каждые 5 итераций в цикле от 1 до 100.
26

27.

Практическая работа
варианты заданий для создания типизированных файлов
1. Создать файл целых чисел. Записать в него 20 случайных
чисел. Найти максимальное.
2. Создать файл, который содержит записи о товарах
(название, цена, количество). Вывести товары, цена которых
выше 100.
3 Создать файл , который содержит вещественные числа
добавить сумму и среднее всех его элементов в конец.
4. Создать файл с записями о студентах и удалить из
файла записей о студентах всех студентов с оценкой 2.
5. Создать файл целых чисел в нем необходимо поменять
местами первый и последний элементы.
6. Создать файл с записями о книгах в нем отсортировать
записи о книгах (автор, название, год) по году издания.
7. Создать файл, содержащий 10 записей типа TPoint (X, Y:
Integer). Найти точку, наиболее удаленную от начала
координат.
8. Создать файл и в файле целых чисел заменить все
отрицательные элементы на их модули.
9. Создать файл, затем создать копию типизированного
файла.
10. Создать файл с записями о сотрудниках и в нем найти
сотрудников (ФИО, должность, оклад) с максимальным
окладом.
27

28.

Практическая работа
варианты заданий для создания типизированных файлов
11. Создать файл и вставить новый элемент в середину
файла целых чисел.
12. Создать файл и удалить каждый второй элемент из
файла.
13. Создать файл два файла и объединить эти два файла
записей в один.
14. Создать файл и в файле дат (запись: день, месяц, год)
найти все даты зимних месяцев.
15. Создать файл и переставить элементы файла в
обратном порядке.
16. Создать файл, где каждый элемент является суммой двух
предыдущих (как числа Фибоначчи).
17. Создать файл и разделить файл целых чисел на два: с
четными и нечетными значениями.
18. Создать файл записей о городах (название, население,
страна) в нем подсчитать общее население по каждой
стране.
19. Создать файл и найти в файле вещественных чисел
элемент, наиболее близкий к заданному числу K.
20. Создать файл и удалить из файла все повторяющиеся
элементы.
28

29.

Практическая
Практическая работа
работа
варианты
варианты заданий
заданий для
для создания
создания типизированных
типизированных файлов
файлов
20. Создать файл и удалить из файла все повторяющиеся
элементы.
21. Создать индексный файл (отсортированный массив
ключей) для быстрого поиска по файлу записей.
22. Создать файл записей и в этом файле записей о
треугольниках (стороны a,b,c) найти все прямоугольные
треугольники.
23. Создать файл и реализовать простую базу данных
(добавление, удаление, поиск, редактирование) на основе
файла записей.
24. Создать файл, содержащий факториалы чисел от 1 до
10.
25. Создать файл записей о встречах (дата, время, тема)
найти все просроченные встречи (дата < текущей).
26. Создать файл и отсортировать в нем целые числа
методом "пузырька" прямо в файле.
27. Создать файл и в нем реализовать бинарный поиск по
отсортированному файлу целых чисел.
28. Создать файл целых чисел и реализовать операцию
сложения для всех элементов.
29

30.

Варианты заданий для лабораторной работы:
1. Создайте файл целых чисел. Числа вводятся с клавиатуры. Признак
конца ввода — число 101.
2. Создайте 2 файла целых чисел и определите, в каком из них больше
чисел.
3. Создайте файл целых чисел и определить, сколько отрицательных чисел и нулей он
содержит.
4. Создайте файл и заполните файл f последовательного доступа с целыми числами,
полученными с помощью генератора случайных чисел. Записать в новый файл g
компоненты файла f, являющиеся четными числами.
5. Создайте фал и запишите в этот файл последовательно N действительных чисел.
Вычислить произведение всех компонентов файла и вывести их на экран.
6. Создайте и заполните этот файл последовательного доступа случайными целыми
числами из диапазона [m; n]. Выполнить следующие задания:
1) переписать в новый файл все компоненты исходного файла, кратные p, которые не
делятся на r;
2) определить количество пар противоположных чисел среди компонентов этого файла;
3) исключить все повторные вхождения чисел и вывести новый файл
на экран;
4) найти сумму минимального и максимального элементов;
5) переписать в новый файл все числа отличные от нуля.
30

31.

Варианты заданий для лабораторной работы:
7. Создать файл целых чисел. Определить, являются ли числа упорядоченными по
возрастанию.
8. Создать файл целых чисел. Переписать в новый файл те из них, которые
принадлежат отрезку [a; b]. Значения a и b вводятся с клавиатуры.
9. Создать файл целых чисел. Записать в новый файл действительный числа,
являющиеся средним арифметическим каждых пяти идущих подряд чисел первого
файла (последняя пятерка может быть неполной).
10. Создать файл и заполнить файл случайными натуральными числами. Выполнить
следующие задания:
1) найти количество чисел, являющихся квадратами нечетных чисел;
2) найти наибольшее из чисел, кратных 7;
3) переписать в новый файл суммы пар соседних чисел;
4) вывести на экран разность первого и последнего чисел.
11. Создать два файла целых чисел. Объединить их в один и упорядочить
по убыванию.
12. Создать файл с матрицей А размером 40×40 . Матрица писана в файл по строкам.
Определите, является ли она единичной (элементы главной диагонали равны 1,
остальные нули).
31

32.

Варианты заданий для лабораторной работы:
13. Создать текстовый файл, состоящий из строк. Определите и
выведите на экран количество строк в файле.
14. Создать текстовый файл, состоящий из строк. Определите
наибольшую длину строки и выведите строку максимальной
длины на экран.
15. Создать текстовый файл, состоящий из строк. Выведите на
экран строки, которые имеют наибольшую и наименьшую
длину.
16. Создать текстовый файл. Определите и выведите на экран
1) количество цифр, которые в нем содержатся;
2) количество различных цифр;
3) количество слов (словом считается последовательность
символов, не содержащая пробелов).
17. Создать текстовый файл. Определите и выведите на экран
все целые числа, которые в нем содержатся (целым числом
считается последовательность цифр, ограниченная с обеих
сторон пробелами).
32

33.

Варианты заданий для лабораторной работы:
18. Создать текстовый файл. Определите и выведите на экран все действительные
числа, которые в нем содержатся (действительным числом считается
последовательность цифр, содержащая не более одной точки, которая занимает не
первую и не последнюю позицию, ограниченная с обеих сторон пробелами).
19. Создать текстовый файл, состоящий из русских букв и цифр. Определить, чего в
нем больше: букв или цифр.
20. Создать текстовый файл, состоящий из слов. Определить:
1) сколько знаков содержит самое длинное слово;
2) сколько слов максимальной длины содержит текст.
21. Создать файл, содержащий текст на русском языке и два слова. Определить:
1) сколько раз эти два слова входят в текст;
2) сколько раз эти два слова располагаются непосредственно друг за
другом.
22. Создать файл , содержащий текст на русском языке. Выбрать из него
буквы, встречающиеся только один раз в порядке их расположения.
33

34.

Варианты заданий для лабораторной работы:
23. Создать файл , содержащий текст, включающий русские и английские
слова. Определить, каких букв в тексте больше: русских или латинских.
24. Создать файл , содержащий текст. Определить, сколько слов в этом тексте и
сколько цифр.
25. Создать файл Bibl, содержащий сведения о книгах. Сведения о каждой из
книг включают в себя фамилию автора, название книги и год издания. Определить:
1) названия книг указанного автора, изданных с 1960 года по настоящее
время;
2) имеется ли книга с названием «Информатика». Если да, то вывести на
экран фамилию автора и год издания. Если таких книг несколько, вывести все
имеющиеся сведения обо всех этих книгах.
26. Создать файл Т, содержащий номера телефонов сотрудников фирмы с
указанием их фамилий и инициалов. Найти номер телефона сотрудника по его
фамилии и инициалам.
34

35.

Варианты заданий для лабораторной работы:
27. Создать файл RT содержит различные даты, включающие число, месяц и год.
Найти:
а) год с наименьшим номером;
б) все весенние даты;
в) самую позднюю дат
28. Создать файл Assort содержит сведения об игрушках: название игрушки, ее
стоимость в рублях и возрастные границы (например, игрушка может предназначаться для детей от двух до пяти лет).
Определить:
1) названия игрушек, цена которых не превышает 5 000 руб. и которые подходят детям пяти лет;
2) стоимость самого дорогого конструктора;
3) названия наиболее дорогих игрушек (цена которых отличается от цены самой дорогой игрушки не более чем на 3 000 руб.);
4) названия игрушек, которые подходят детям и четырех, и десяти лет;
5) можно ли подобрать игрушку (любую, кроме мяча), подходящую ребенку трех лет;
6) название самой дешевой игрушки;
7) название самой дорогой игрушки для детей до четырех лет;
8) названия игрушек для детей от четырех до пяти лет;
9) название самой дорогой игрушки, подходящей детям от двух до трех лет;
10) стоимость самой дорогой куклы;
11) стоимость кукол для детей шести лет;
12) для детей какого возраста предназначается конструктор;
13) для детей какого возраста предназначены кубики, указать их
среднюю стоимость.
35

36.

Варианты заданий для лабораторной работы:
29 Создать файл TV содержит сведения о программах телепередач на неделю:
день недели, время, канал, вид и название телепередачи. Определить:
1) названия телепередач, которые идут в указанный день в указанный
промежуток времени;
2) названия телепередач, которые идут в указанный день на указанном канале;
3) информацию об указанном фильме; если этот фильм не указан в
телепрограмме, вывести на экран сообщение «Такой передачи на
этой неделе нет»;
4) на каком канале и в какое время будет транслироваться развлекательная
передача «Поле чудес»;
5) названия телепередач, идущих в указанное время на разных каналах;
6) название самой продолжительной передачи в понедельник;
7) название передачи, завершающей эфир в каждый день недели.
36

37.

Варианты заданий для лабораторной работы:
30. Создать файл , который содержит сведения о безработных:
специальность, опыт работы, образование, пол, возраст. Требуется:
1) подобрать кандидатов на должность врача с опытом работы не
менее пяти лет;
2) найти работников с высшим экономическим образованием не
старше 35 лет;
3) найти работников, имеющих опыт работы в сфере торговли;
4) получить полную информацию обо всех женщинах в возрасте от 20
до 40 лет;
5) определить средний возраст всех мужчин, ищущих работу;
6) выяснить, кого в базе данных больше с высшим образованием:
женщин или мужчин;
7) найти n самых молодых работников.
37

38.

Контрольные вопросы
1. В чем основное отличие текстовых и типизированных файлов?
2. Для чего нужна процедура Assign?
3. Что произойдет, если открыть несуществующий файл с помощью Reset?
4. Чем отличаются процедуры Rewrite и Reset?
5. Объясните назначение функции Eof.
6. Как в типизированном файле получить доступ к 10-му элементу?
7. Что такое файловая переменная?
8. Для чего необходимо закрывать файл процедурой Close?
9. Как определить количество элементов в типизированном файле?
10. Можно ли одновременно читать и записывать в один и тот же файл? Если да, то как?
11. В чем преимущество типизированных файлов при хранении структур данных?
12. Какова цель использования бестиповых файлов?
13. Что делает функция Seek и от какого значения начинается нумерация элементов?
14. Объясните разницу между Read и Readln для текстовых файлов.
15. Как записать число и строку в одну строку текстового файла?
16. Что вернет функция FilePos(f) сразу после открытия файла Reset(f)?
17. Как в текстовом файле перейти к чтению следующей строки?
18. Какие типы данных можно использовать для создания типизированного файла?
19. Как обработать ситуацию, если файл, который нужно открыть, не существует?
20. Можно ли изменить размер типизированного файла? Если да, то как?
38

39.

Контрольные вопросы
21. Какой алгоритм следует использовать для сортировки данных в типизированном
файле большого размера?
22. Объясните, как работает процедура BlockRead для бестиповых файлов.
23. В чем заключается сложность работы с записями (record), содержащими строки типа
string, в типизированных файлах?
24. Как правильно читать данные из текстового файла, если неизвестно, сколько их?
25. Что такое буфер файла и для чего он используется?
26. Как добавить новые данные в конец существующего текстового файла?
27. Какие стандартные процедуры PascalABC.NET облегчают работу с кодировками
текстовых файлов?
28. В чем разница между прямой и последовательной обработкой файла?
29. Как организовать цикл для чтения всех записей из типизированного файла?
30. Сформулируйте основные правила, которых следует придерживаться для надежной
работы с файлами.
39

40.

40
English     Русский Правила