Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка.DOC
Скачиваний:
36
Добавлен:
13.05.2015
Размер:
772.61 Кб
Скачать

14. Записи. Файлы.

Под записью понимается структура данных, объединяющая под одним именем данные различных типов. Записи состоят из фиксированного числа элементов, называемых полями. Поле - это переменная определенного типа. Различные поля могут иметь (в отличии от элементов массива) различный тип. Обращение к элементу записи выполняется с помощью составного (уточненного) имени. Первая часть составного имени - это имя записи, вторая часть - имя поля. Между именем записи и именем поля ставится точка: ZAP.IMP, где ZAP - имя записи, IMP - имя поля.

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

При необходимости формирования или использования файла в разделе описаний программы должна быть описана файловая переменная. Описание файловой переменной имеет следующий вид:

type имя-типа=file of базовый-тип;

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

или

var имя-файловой переменной : file of базовый-тип;

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

Задание 8

ЦЕЛЬ РАБОТЫ:

  1. Изучить правила описания и использования переменных типа запись в языке Паскаль.

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

ПРИМЕР 1:Создать файл для хранения записей вида:

Запрос выводится с новой строки для каждого поля. Например:

Телевизор

Название . . . . . . . . . РЕКОРД

Цена (тыс.) . . . . . . . 3000

Диагональ . . . . . . . . 59

Изображение (ц/ч) . . Ц

Производитель . . . . .

Завод . . . . . . . . Фотон

Город . . . . . . . . Москва

Директор . . . . . Иванов

После записи файла осуществить поиск в нем названий телевизоров стоиостью менее 2 млн.руб.

program zapis;

const maxn = 30;

type TV = record

Name : string[20];

Price : 1 .. 32000;

Diagonal : 1 .. 50;

Color : char;

Proizv : record

city : string[25];

factory : string[50];

director : string[30];

end;

end;

tele = file от TV;

var f : tele;

was : boolean;

z:TV;

begin

writeln ('Ввод записей');

writeln ('Признак окончания ввода - *');

assing (f,'f.dat');

rewrite(f);

writeln (' Телевизор ');

write (' Название . . . . . .');readln(z.name);

while z.name <> ' * ' do

begin

write (' Цена (тыс.). . . . . .');readln(z.Price);

write (' Диагональ . . . . . .');readln(z.Diagonal);

write (' Изображение (ц/ч). . .');readln(z.Color);

writeln (' Производитель. . . . . ');

with z.Proizv do

begin

write (' Завод . . . . . . .');readln(city);

write (' Город . . . . . . .');readln(factory);

write (' Директор. . . . . .');readln(director);

tnd;

write (f,z)

writeln (' Телевизор');

write ('Название .......'); readln (z.name)

end;

close (f);

writeln ('Файл сформирован');

reset (f);

was:=false; {признак того, что искомые телевизоры найдены)

writeln ('Названия телевизоров стоимостью менее 2 млн.руб.');

while not eof(f) do

begin

read (F,Z);

if z.price < 2000 then

begin

writeln (z.name);

was:=true

end

end;

if was=false then

writeln ('Не найдены');

close(f)

end.

ПОРЯДОК РАБОТЫ

Составить программу формирования и поиска в файле (табл.14).

СОДЕРЖАНИЕ ОТЧЕТА

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

ТАБЛИЦА 14

НОМЕР

УСЛОВИЕ

1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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

10

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