Учебно-методическое пособие. Алматы, 2017 ббк



бет75/106
Дата03.01.2022
өлшемі483.39 Kb.
#451845
түріУчебно-методическое пособие
1   ...   71   72   73   74   75   76   77   78   ...   106
УЧЕБНИКПаскаль(100217)

Seek (<Идентификатор имени файла>,<номер записи>);
При этом надо помнить, что в типизированных файлах нумерация элементов начинается с нуля, т.е. первый элемент имеет номер “Ноль”. Таким образом, если нам надо переместить указатель считывания файла к третьему элементу, мы должны это учитывать при использовании процедуры Seek(). Например:

Seek (FileInput, 2);

или


Seek (FileInput, 3-1);

Задание


1. Измените в предыдущей программе тпи файла на Byte. Что произойдет с выходными данными?

2. Как изменится количество считанных чисел в файле may.dat? Почему?




2.8.8. Объединение данных разных базовых типов. Тип запись.

При определении массива, было отмечено, что массив это нумерованный список, элементы которого однотипны по структуре и способу использования. Что делать, если необходимо хранить и обрабатывать данные имеющие различные типы? Например:



Задача 1. Дан список учеников и их года рождения,выбрать всех учеников год рождения которых лежит в определенном диапазоне.

Можно было бы, для хранения данных выделить место для хранения двух массивов. Первый массив (тип String) для хранения фамилий учеников, второй (тип integer) для хранения годов рождения данных учеников. Если нам необходимо было хранить дополнительные характеристики, то надо было бы объявлять дополнительные массивы того или иного типа в зависимости от типа данных. Работа с большим количеством массивов, особенно при сортировке данных по какому либо признаку задача хоть и разрешимая, но достаточно трудоемкая. Что делать если мы хотим сохранить эти данные в файле?

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

Данные мы сохраним, но работать с этими данными в дальнейшем будет достаточно сложно.

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


Имя записи

Список

Имя полей

Фамилия

Имя

Год рождения

Значение полей

Ахметов

Алдияр

1980

При обработке запись выступает как элементарный объект. Тип такого объекта – record (запись). Таким образом, снимается ограничение связанное с типом данных.

Чтобы описать запись, необходимо указать ее имя, имена полей и тип данных, которые мы будем хранить в данных полях. Общий вид объявления такой:
Type <Имя записи> = Record

<поле 1>:<тип 1>;

<поле 2>:<тип 2>;

………………….



<поле n>:<тип n>;

end;
В нашем случае, в блоке инициализации переменных введем переменную типа запись и присвоим ей имя Human.


Type Human = Record

Family: String[20];

Name :String[15];

Year :Word;

end;
Теперь попробуем создать небольшую базу данных, в которой будем хранить фамилии, имена и года рождения своих друзей, и эти данные будем хранить в файле «MyFriend.dat». Этот файл будет типизированным (см. 2.8.1), при этом его тип будет запись.

Program PrimerF9;

Type Human = Record

Family: String[20];

Name :String[15];

Year :Word;

end;
Var

FileName : File of Human;

i, Kolichestvo : integer;

Mean : array [1..100] of Human;


Procedure Init;

begin


readln (Kolichestvo);

for i:=1 to Kolichestvo do

begin

write (' Family [',i,']=');



readln (Mean[i].Family );

write (' Name [',i,']=');

readln (Mean[i].Name);

write (' Year [',i,']=');

readln (Mean[i].Year);

end;


end;

Procedure Exi;

begin

assign(FileName,'MyFriend.dat');



rewrite(FileName);

For i:=1 to Kolichestvo do

Write(FileName, Mean[i]);

Close(FileName);

End;
begin

Init;


Exi;

end.





Достарыңызбен бөлісу:
1   ...   71   72   73   74   75   76   77   78   ...   106




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет