Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+лабораторные работы П2.docx
Скачиваний:
19
Добавлен:
01.07.2025
Размер:
1.09 Mб
Скачать

Лабораторная работа №11 Тема: Решение задач на комбинированные типы

Цель: Формирование навыков и умений по составлению программ с использованием комбинированного типа данных — записей

Краткие сведения:

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

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

     Регулярные типы – фиксированное число однотипных компонент.

     Комбинированные типы– фиксированное число компонент различных типов.

     Записи позволяют в компактной форме описывать различные объекты (списки, каталоги, картотеки, таблицы, ведомости и т.д.).  Описание записей в Паскале

     При использовании записей они д.б. описаны с использованием раздела описания либо непосредственно в разделе описания переменных

Запись имеет следующую структуру:

IZ = RECORD                         Где:  IZ – имя типа записи;             IK1 : T1;                                IK – имя поля (компоненты);             IK2 : T2;                                T   - тип компоненты, м.б. любой стан-              . . .                                                дартный либо предварительно             IKN :TN;                                       определенный (кроме файлового);         END;                                            RECORD – запись;                                                              RECORD-END – операторные скобки.

 

Пример описания записи

       Const  n=25;        Type   Date = Record                                    Year       : integer;    {Год}                                     Month   : 1..12;        {Число}                                     Day        : 1..31;        {Месяц}                                End;               Student = Record                                    FIO        : String[15]; {ФИО}                                    Dr           : Date;          {Дата рождения}                                    Str          : String[20]; {Страна}                         b1,b2,b3,b4,b5  : 2..5;            {Поле оценок}                                End;                      Vec = array[1..n] of Student; Var    EMS_43a, EMS_43a, EMS_43a    :Vec;

 

Порядок следования полей в записи не имеет значения.

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

    Type x=(Yes, No);              Student = Record                                    FIO        : String[25]; {ФИО}                                    Mark      : 2..5;            {Оценки}                                    Variant   :x;                                     Case x of                                            Yes  : (Str  : String[20]); {Страна}                                             No   :  (     );                             End;

 

Обработка записей в Паскале

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

Для обращения к полям записи используются составные имена.

Составное имя – совокупность имени переменной типа запись и имен полей разделенных точкой.

Например:

EMS_43a[1].FIO :=’Антонов’;                         EMS_43a[1].Dr.Day :=13; EMS_43a[1].Dr. Month :=1; EMS_43a[1].Dr. Year  :=1986;

  Оператор присоединения в Паскале

     Оператор присоединения позволяет упростить обращение к элементам записи и имеет следующий формат записи: With   <Имя>  do                                          OP; Где   With     - с;              <Имя>  - имя записи (простое или составное);                do        - делать;                OP       - оператор (простой или составной);

 

Вввод / вывод записей в Паскале

     При  вводе/выводе записей используются отдельные поля записи

For i:=1 to n do Read (EMS_43a[i].FIO, EMS_43a[i].Str)

При использовании оператора присоединения

        For i:=1 to n  do             With EMS_43a[i] do                 Begin                      Read (FIO);                      Read (Str);                  End;

Задания:

Вариант 1.

Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии, информатике. Найти, по какому предмету студенты получили наибольшее количество двоек.

Вариант 2.

Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии, информатике. Найти и вывести фамилии тех студентов, которые все экзамены сдали на 9.

Вариант 3.

Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии, информатике. Найти и вывести фамилии тех студентов, которые на экзаменах получили не ниже 7 баллов.

Вариант 4.

Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии, информатике. Найти, по какому предмету студенты получили наибольшее количество 10 и 9.

Вариант 5.

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

Вариант 6.

Даны сведения по областям: название области, количество засеянной земли рожью, собранный урожай. Вывести название области, у которой наибольшая урожайность.

Вариант 7.

Опишите, используя структуру записи, данные о владельце автомобиля (фамилия, марка автомобиля, гос. номер, цвет). Составьте программу, осуществляющую поиск владельца автомобиля «Жигули» белого цвета с фиксированным гос. номером.

Вариант 8.

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

Вариант 9.

Создать массив записей следующего типа:

Страна

Территория в км2

Население млн.человек

Столица

Латвия

67,7

2,6

Рига

Литва

65,2

3,4

Вильнюс

Польша

313

34,8

Варшава

Украина

603,7

50

Киев

Россия

17075,4

139

Москва

Найти и вывести общую площадь перечисленных стран.

Вариант 10.

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

Вариант 11.

Создать массив записей следующего типа:

Страна

Территория в км2

Население млн.человек

Столица

Латвия

67,7

2,6

Рига

Литва

65,2

3,4

Вильнюс

Польша

313

34,8

Варшава

Украина

603,7

50

Киев

Россия

17075,4

139

Москва

Найти и вывести для каждой страны плотность населения.

Вариант 12.

Создать массив записей следующего типа:

Страна

Территория в км2

Население млн.человек

Столица

Латвия

67,7

2,6

Рига

Литва

65,2

3,4

Вильнюс

Польша

313

34,8

Варшава

Украина

603,7

50

Киев

Россия

17075,4

139

Москва

Найти и вывести страну с наибольшей плотностью населения.

Вариант 13

Известен список сотрудников отдела с указанием окладов. Вывести список тех сотрудников отдела, оклад которых меньше заданного минимального, или указать, что таких нет.

Вариант – 14

Известны фамилии и средний балл за полугодие учеников класса. Напечатать список тех учеников класса, средний балл которых превышает «4» , или указать, что таких нет.

Вариант - 15

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