Цель: Формирование навыков и умений по составлению программ с использованием комбинированного типа данных — записей
Краткие сведения:
Запись – структура данных, состоящая из фиксированного числа компонент, называемых полями каждая из которых может иметь свой тип.
Структурированные типы в отличие от скалярных состоят из компонент.
Регулярные типы – фиксированное число однотипных компонент.
Комбинированные типы– фиксированное число компонент различных типов.
Записи позволяют в компактной форме описывать различные объекты (списки, каталоги, картотеки, таблицы, ведомости и т.д.). Описание записей в Паскале
При использовании записей они д.б. описаны с использованием раздела описания либо непосредственно в разделе описания переменных
Запись имеет следующую структуру:
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
Вильнюс
Польша
34,8
Варшава
Украина
603,7
Киев
Россия
17075,4
Москва
Найти и вывести общую площадь перечисленных стран.
Вариант 10.
Опишите, используя структуру записи, сведения о книгах домашней библиотеке (автор, название, год издания, количество страниц). Составить программу, определяющую: авторов, название книг которых начинается на букву
Вариант 11.
Создать массив записей следующего типа:
Страна
Территория в км2
Население млн.человек
Столица
Латвия
67,7
2,6
Рига
Литва
65,2
3,4
Вильнюс
Польша
34,8
Варшава
Украина
603,7
Киев
Россия
17075,4
Москва
Найти и вывести для каждой страны плотность населения.
Вариант 12.
Создать массив записей следующего типа:
Страна
Территория в км2
Население млн.человек
Столица
Латвия
67,7
2,6
Рига
Литва
65,2
3,4
Вильнюс
Польша
34,8
Варшава
Украина
603,7
Киев
Россия
17075,4
Москва
Найти и вывести страну с наибольшей плотностью населения.
Вариант 13
Известен список сотрудников отдела с указанием окладов. Вывести список тех сотрудников отдела, оклад которых меньше заданного минимального, или указать, что таких нет.
Вариант – 14
Известны фамилии и средний балл за полугодие учеников класса. Напечатать список тех учеников класса, средний балл которых превышает «4» , или указать, что таких нет.
Вариант - 15
Известна информация о хранящемся на складе товаре: наименование товара и его цена. Вывести список тех товаров, цена которых меньше указанной, или указать, что таких нет.
Контрольные вопросы:
1. Как обратиться в программе к полю записи?
2. Что необходимо сделать, чтобы описать в программе объект, характеристики которого — разнотипные данные?
3. Что необходимо сделать, чтобы описать в программе объект, характеристики которого — однотипные данные?