Практическая работа №10 – 11 Декларация записи. Работа с записями. Обращение к элементу
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цель работы: Разработка программ для создания и работы с записями.

Теоретические основы:

Запись - это структура данных, состоящая их фиксированного числа компонентов, называемых полями. Запись имеет имя. Каждое поле записи также имеет имя. Обращение к любому элементу записи осуществляется по составному имени, имеющему вид:

Имя записи.Имя поля

В отличие от массива компоненты (поля или элементы) записи могут быть различного типа. Записи удобно использовать в тех случаях, когда необходимо описать атрибуты (характеристики или свойства) одного объекта, имеющие различный тип.

Запись может быть объявлена в разделе Var или в разделах Type и Var, одновременно.

Var Имя записи: RECORD

                  Имя поля 1:тип;

                  Имя поля 2:тип;

                              . . .

                  Имя поля n :тип

                     END ;

                               или

2. Type Имя типа для записи= RECORD

                  Имя поля 1:тип;

                  Имя поля 2:тип;

                              . . .

                  Имя поля n :тип

                                            END ;

Var Имя записи:Имя типа для записи;

Второй способ описания более предпочтителен, будем использовать его.

Записи могут быть составными частями массивов или других записей. Так для описания всего списка студентов, состоящего, допустим, из 1000 записей необходимо записать:

Spisok:Array[1..1000] of T_Stud; {Описание массива из записей}

Элементы записи (поля) используются в программе как обычные переменные данного типа. Чтобы обратиться к i - той записи представленного списка (массива Spisok) и к его полю FIO необходимо записать: Spisok[i].FIO. Для того, чтобы обратиться к той же записи и выбрать оценку по математике необходимо записать Spisok[i].Ball[2].

Для упрощения обращения к элементам записи используется оператор присоединения

WITH Имя записи DO

Begin

Операторы обращения к элементам записи

End ;

Для нашего примера используем этот оператор при суммировании трех оценок i-го студента:

       . . .

Sum:=0;

With Spisok[i] do

       Begin

   For j:=1 to 3 do

   Sum:=Sum+Ball[j];

       . . .

       End;

Типовой пример

Дан список, содержащий N записей (N£100) следующей структуры:

 

№ рейса Пункт отправления Пункт назначения День недели Время отправления Час Мин Цена билета
5 символов 15 символов 15 симв. 1..7 0..23 0..59  Real

1) Ввести заданый список с экрана в массив записей Spis.

2) Ввести искомый номер рейса - Isk_nom.

3) Найти в списке рейс с заданным номером.

4) Вывести информацию о найденном рейсе на экран.

 

       Uses crt;         

Type

       T_Time=record

                  Hour:0..23;

                  Min:0..59;

                  end;

       tzap=record   {Описание типа для одной записи списка}

                  nom:string[5];

                  p1,p2:string[15];

                  day:1..7;

                  time:T_Time;

                  price:real;

                  end;

Var Spis:array[1..100]of tzap; {Описание списка}

       N,i:byte;

       Isk_nom:string[5];

Begin

       Write(' Введите число записей в списке N = ');

       Readln(N);

       Writeln('Введите список по полям - каждое поле с новой строки');

       For i:=1 to N do

     With Spis[i] do

begin

Write(' Номер очередного рейса - 5 символов ');

Readln(nom);

Write(' Пункт отправления - 15 символов ');

Readln(p1);

Write(' Пункт назначения - 15 символов ');

Readln(p2);

Write(' День недели - от 1 до 7 ');

Readln(day);

Write(' Время отправления - часы (от 0 до 23) и    

минуты (от       0 до 59), через пробел ');

                  Readln(time.hour,time.min);

                  Write(' Цена билета = ');

                  Readln(price);

       end;

       writeln(' введите искомый номер рейса - 5 символов ');

       Readln(Isk_nom);

       {Oрганизация поиска заданного рейса в массиве записей Spis}

       for i:=1 to N do

                  with Spis[i] do

                  if nom = Isk_nom then

                  begin

                              writeln(' Рейс найден');

          writeln(nom,' ',p1,' ',p2,' ',day,' ',time.hour,':',time.min,' ',price);

                  readkey;

halt;

                  end;

                              writeln(' Рейс не найден');

                              readkey;

End.

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

Варианты самостоятельных заданий

Задание №1

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

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

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

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

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

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

7. Составить базу данных о сотрудниках фирмы, предусмотрев поля: Ф.И.О., поощрения (выделить премии и нематериальные виды поощрений), количество замечаний. Составить программу, позволяющую вывести весь список сотрудников; всех, имеющих поощрения; всех, имеющих премии с общей суммой всех премий.

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

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

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

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

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

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

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

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

16. Составить базу данных о студентах ВУЗа, предусмотрев поля: Ф.И.О., курс, специальность, экзаменационные оценки за семестр. Составить программу, позволяющую вывести: все данные о студентах, список студентов данного курса, список студентов с минимальным средним баллом.

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

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

19. Составить базу данных о сотрудниках фирмы, предусмотрев поля: Ф.И.О., должность, заработную плату (оклад, премии, доплата за вредные условия труда). Составить программу, позволяющую вывести весь список сотрудников; сотрудников, занимающих определенную должность и не имеющих доплату за вредные условия труда; сотрудников, чья премия составляет более 30% от оклада.

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

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

1. Что такое тип данных записи?

2. Как объявляются записи?

3. Что такое учетное имя?

4. Какие операции допустимы над элементами (полями) записи?

5. Чем отличается запись от массива?

6. Какие операции допустимы над записью в целом?

7. Что такое запись с вариантами?

8. Как используются записи?

Дата: 2019-11-01, просмотров: 427.