Студопедия
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция
|
Структурированные типы данных
При решении задач обработки большого количества данных используют массивы. Но при работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Для работы с комбинированными типами данных применяют записи.
Записи
Записи – это структурированный тип данных, позволяющих хранить вместе различные типы данных.
Запись состоит из нескольких полей, для каждого из которых при объявлении (описании) указывается имя и тип.
Например:
type
student = record; {запись}
surname : string[20];
year : integer;
bal : real;
end; {завершает список полей}
var
st:student;
Сформирован пользовательский тип данных – student, он базируется на стандартных типах (string, integer,real).
Переменная st - имеет тип student (запись), состоит из 3-х полей:
surname – фамилия студента;
year – год рождения;
bal – средний бал.
Каждое поле хранит информацию разного типа. При обращении к отдельным полям указывается имя всей записи и имя отдельного поля через точку.
st.surname:='Иванов';
st.year:=1905;
st.bal:=4.5;
Для уменьшения записи обращения к отдельным полям используют оператор with … do
Например:
with st do
begin
surname:='Иванов';
year:= 1905;
bal:=4.5;
end;
Для обработки большого объема информации комбинированного типа целесообразно строить массивы записей, где каждый элемент массива – запись, состоящая из нескольких полей разного типа.
Например, чтобы сохранить информацию о студентах группы в 25 человек, можно создать следующий массив записей:
type
student = record; {запись}
surname : string[20];
year : integer;
bal : real;
end;
var
st:array[ 1..25 ] of student;
st – массив записей. Каждый элемент массива(St[i])содержит информацию об одном студенте:
St[i].surname – фамилия;
St[i].year - год рождения;
St[i].bal - средний бал.
Задача.
Создать массив записей, содержащий информацию о студентах группы. Каждая запись содержит поля – фамилия, год рождения, пол. Подсчитать средний возраст студентов мужского пола группы.
Таблица идентификаторов
№
| Наименование переменной
| Обозначения в программе
| 1
| Имя массива
| st
| 2
| Количество студентов
| n
| 3
| Индекс массива
| i
| 4
| Средний возраст
| p
| 5
| Количество мужчин
| k
| 6
| Текущий год
| t
|
program rec;
uses crt;
type
student = record; {запись}
surname : string[20];
year : integer;
pol : char;
end;
var
st:array[ 1..30 ] of student;
i,n,t:integer; p:real;
begin
clrscr;
writeln(‘Введите текущий год’);
readln(t)
writeln(‘Введите количество студентов’);
readln(n)
for i:=1 to n do
with st[i] do
begin
writeln(‘Сведения о ’,i,‘ студенте’);
writeln(‘Введите фамилию’); readln(surname);
writeln(‘Введите год рождения’); readln(year);
writeln(‘Введите средний бал’); readln(bal);
end;
p:=0;
for i:=1 to n do
begin
if st[i].pol=’m’ then
begin
p:=p+(t-st[i].year);
k:=k+1;
end;
writeln(‘Средний возраст мужчин =’,(p/k):8:3 );
readln;
end.
Пример программы использования массива записей
Задача:
Создать массив записей, содержащий сведения о сотрудниках фирмы. Каждая запись содержит поля – фамилия сотрудника, наименование отдела, оклад, трудовой стаж. Написать программу, выдающую следующую информацию:
- список сотрудников отдела Х с указанием оклада и трудового стажа;
- подсчитать среднюю заработную плату сотрудников отдела Х.
Название отдела Х вводится по запросу с клавиатуры.
- Таблица идентификаторов
№
| Наименование переменной
| Обозначения в программе
| Тип переменной
| 1
| Имя массива
| f
| record
(запись)
| 2
| Количество сотрудников
| n
| integer
| 3
| Поле фамилия
| surname
| string
| 4
| Поле отдел
| otdel
| string
| 5
| Поле оклад
| oklad
| real
| 6
| Поле стаж
| Stag
| integer
| 7
| Средняя зарплата
| Sred
| real
| 8
| Отдел поиска Х
| X
| string
| 9
| Количество сотрудников в отделе Х
| K
| integer
| 10
| Индексы массива
| i
| integer
|
- Листинг программы
program rec_1;
uses crt;
type
firma = record; {запись}
surname : string[20];
otdel : string[20];
oklad : real;
Stag : integer;
end;
var
f:array[ 1..30 ] of firma; {массив записей}
X:string[20];
i,n,k:integer;
sred:real;
begin
clrscr;
writeln(‘Введите n’); readln(n);
writeln(‘Введите информацию о сотрудниках’);
for i:=1 to n do
with f[i] do
begin
writeln(‘Введите фамилию ’); readln(surname);
writeln(‘Введите отдел ’); readln(otdel);
writeln(‘Введите оклад ’); readln(oklad);
writeln(‘Введите стаж ’); readln(Stag);
end;
writeln(‘Введите название отдела’); readln(X);
sred:=0; k:=0;
writeln(‘Список сотрудников отдела ’,X);
for i:=1 to n do
if f[i].otdel=X then
begin
writeln(f[i].surname,’ ‘,f[i].oklad:8:3);
sred:=sred+f[i].oklad;
k:=k+1;
end;
writeln(‘Средняя зарплата отдела=’,(sred/k):8:3);
readln;
end.
Вопросы для самоконтроля
- В чем состоит основное преимущество записи?
- Почему записи называют комбинированным типом записи?
- Чем записи отличаются от массивов?
- Что называется полем записи?
- Какие требования предъявляются к идентификаторам поля записи?
- Как определить объем памяти, требуемый для размещения записи?
- С какой целью при обращении к полю записи используется оператор with … do?
Методические указания к выполнению индивидуального задания по Модулю 2. «Массивы записей»
Цель работы: Ознакомиться с пользовательскими типами данных, записями. Научиться организовывать массивы записей.
Задание:
1. В приложении 11 выбрать вариант задания.
2. Выполнить индивидуальное задание по Модулю 2 , на примере программы использования массива записей.
3. Составить блок-схему алгоритма.
4. Утвердить блок-схему у тьютора.
5. Написать программу и отладить ее по заранее подготовленному тесту.
6. Результат выполнения программы предъявить преподавателю.
7. Оформить ИДЗ в формате А4, титульный лист по образцу Приложение 4
8. Защитить выполненную работу у преподавателя.
Приложение 11. Таблица вариантов индивидуального задания
Вариант
| Задание
| 1
| Создать массив записей, содержащий сведения о месячной заработной плате рабочих завода.
Каждая запись содержит поля – фамилия рабочего, наименование цеха, размер заработной платы за месяц. Необходимо:
-отсортировать массив записей по полю заработная плата;
-подсчитать общую сумму выплат за месяц по цеху Х. Наименование цеха Х вводится по запросу с клавиатуры.
| 2
| Создать массив записей, содержащий сведения об участниках конференции. Каждая запись содержит поля – фамилия участника, возраст, город, из которого прибыл участник.
Написать программу, выдающую следующую информацию:
-список участников, приехавших из города Х с указанием возраста;
-средний возраст участников конференции.
Название города Х вводится по запросу с клавиатуры.
| 3
| Создать массив записей, содержащий информацию о сотрудниках частной клиники. Каждая запись содержит поля – фамилия врача, специализация, стаж работы.
Написать программу, выдающую следующую информацию:
-список врачей по специализации Х с указанием стажа работы;
-средний стаж сотрудников клиники.
Специализация Х вводится по запросу с клавиатуры.
| 4
| Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию:
-список абонентов, отсортированный по полю год установки;
- по вводимой фамилии Х выдается номер телефона абонента.
Фамилия Х вводится по запросу с клавиатуры.
| 5
| Создать массив записей, содержащий сведения об ассортименте игрушек в магазине. Каждая запись содержит поля – название игрушки, цена, количество. Написать программу, выдающую следующую информацию:
- стоимость самой дорогой игрушки и ее наименование;
- общую стоимость всех игрушек в магазине.
| 6
| Создать массив записей, содержащий сведения об экспортируемых товарах. Каждая запись содержит поля – наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках. Написать программу, выдающую следующую информацию:
-список стран, в которые экспортируется товар Х и объем его экспорта;
-средний объем экспорта товара Х.
Наименование товара Х вводится по запросу с клавиатуры.
| 7
| Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, год рождения и оценки по трем экзаменам. Написать программу, выдающую следующую информацию:
-список студентов, отсортированный по полю год рождения с указанием полученных оценок;
-количество студентов, получивших неудовлетворительные оценки хотя бы по одной дисциплине.
| 8
| Создать массив записей, содержащий сведения о городской библиотеке. Каждая запись содержит поля – шифр книги, автор, название, год издания и стоимость. Написать программу, выдающую следующую информацию:
-список книг автора Х с указанием названия и года издания книги;
-стоимость самой дорогой книги автора Х;
Фамилия автора Х вводится по запросу с клавиатуры.
| 9
| Создать массив записей, содержащий сведения о наличии билетов и рейсах Аэрофлота. Каждая запись содержит поля – номер рейса, пункт назначения, время вылета, стоимость билетов. Написать программу, выдающую следующую информацию:
-список рейсов самолетов в город Х, с указанием времени вылета и стоимости билетов;
-номер рейса в город Х, с минимальной стоимостью билета.
Наименование города Х вводится по запросу с клавиатуры.
| 10
| Создать массив записей, содержащий сведения об ассортименте товаров в магазине. Каждая запись содержит поля – артикул, наименование, стоимость единицы товара, количество. Написать программу, выдающую следующую информацию:
-список товаров, отсортированный по полю стоимость товара;
- общую стоимость всех товаров в магазине.
| 11
| Создать массив записей, содержащий сведения о сессии. Каждая запись содержит поля – индекс группы ( например ЭС-101), фамилия студента, оценки по трем экзаменам. Написать программу, выдающую следующую информацию:
-фамилии неуспевающих студентов группы Х, с указанием количества задолженностей;
-количество неуспевающих студентов группы Х.
Наименование группы Х вводится по запросу с клавиатуры.
| 12
| Создать массив записей, содержащий сведения об отправлении поездов дальнего следования. Каждая запись содержит поля – номер поезда, станция назначения, время отправления, стоимость билетов. Написать программу, выдающую следующую информацию:
-время отправления поездов в город Х с указанием стоимости билетов;
-номер поезда в город Х с минимальной стоимостью билета.
Наименование города Х вводится по запросу с клавиатуры.
| 13
| Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию:
-список сотрудников мужского пола отдела Х призывного возраста (старше 18 и младше 30 лет), с указанием стажа работы;
-средний возраст сотрудников мужского пола отдела Х.
Наименование отдела Х вводится по запросу с клавиатуры.
| 14
| Создать массив записей, содержащий сведения о телефонах абонентов. Каждая запись содержит поля – фамилия абонента, адрес, номер телефона. Написать программу, выдающую следующую информацию:
-по вводимой фамилии абонента Х и адресу Y выдается номер телефона.
Фамилию абонента Х и адрес Y вводится по запросу с клавиатуры.
| 15
| Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию:
-список товаров, стоимость которых не превышает Х рублей с указанием количества;
-общее количество товаров, стоимость которых не превышает Х.
Стоимость Х вводится по запросу с клавиатуры.
| 16
| Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля –
модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию:
-список автомобилей модели Х с указанием цены, цвета и номера двигателя;
-самый дорогой автомобиль модели Х.
Модель автомобиля Х вводится по запросу с клавиатуры.
| 17
| Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля –
наименование страны, наименование города, стоимость тура. Написать программу, выдающую следующую информацию:
-список туров в страну Х с указанием наименования города и стоимости тура;
-самый дорогой тур в страну Х.
Название страны Х вводится по запросу с клавиатуры.
| 18
| Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, индекс группы (например ЭС-101) и оценки по трем экзаменам. Написать программу, выдающую следующую информацию:
-список отличников группы Х;
-процент отличников по отношения к общему количеству студентов группы Х.
Индекс группы Х вводится по запросу с клавиатуры.
| 19
| Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию:
-список абонентов, отсортированный по полю год установки;
-количество установленных телефонов с Х года.
Значение Х вводится по запросу с клавиатуры.
| 20
| Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими за месяц. Каждая запись содержит поля – фамилия сборщика, наименование цеха, количество изделий, собранных рабочим за месяц. Считая заданными значение расценок по сборке единицы изделия Х, выдать следующую информацию:
-ведомость заработной платы рабочих цеха;
-общую сумму выплат по цеху.
Стоимость сборки единицы изделия Х вводится по запросу с клавиатуры.
| 21
| Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц.
Написать программу, выдающую следующую информацию:
-подсчитать общее количество выездов за месяц;
-фамилию водителя, с наибольшим количеством выездов.
| 22
| Создать массив записей, содержащий сведения об услугах частной клиники. Каждая запись содержит поля – название операции, стоимость операции, возрастные ограничения на каждую операцию.
Написать программу, выдающую следующую информацию:
-список услуг клиники, отсортированный по полю название операции;
-по введенному названию операции Х распечатать стоимость и возрастные ограничения.
Название операции Х вводится по запросу с клавиатуры.
| 23
| Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия сотрудника, оклад, стаж работы. Написать программу, которая должна:
-начислить премию сотрудникам в размере оклада, стаж которых превышает Х лет:
-распечатать список сотрудников, получивших премию с указанием размера премии.
Величина Х вводится по запросу с клавиатуры.
| 24
| Создать массив записей, содержащий сведения о товарах магазина. Каждая запись содержит поля –
наименование товара, стоимость, количество.
Написать программу, которая;
-уменьшит стоимость товаров, количество которых не превышает Х, на 50%;
-распечатать список новых цен.
Количество Х вводится по запросу с клавиатуры.
| 25
| Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими цеха. Каждая запись содержит поля – фамилия рабочего, наименование цеха, количество собранных им изделий за месяц. Написать программу, выдающую следующую информацию:
-список рабочих цеха, отсортированный по полю фамилия;
-общее количество изделий, собранных рабочими цеха за месяц.
| 26
| Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц, оплата за каждый выезд.
Написать программу, выдающую следующую информацию:
-подсчитать общее количество выездов за месяц;
-фамилию водителя, с наибольшей суммой оплат за выезды.
| 27
| Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля –
наименование страны, цель поездки( например: экскурсионная, отдых), стоимость тура. Написать программу, выдающую следующую информацию:
-список туров с целью поездки Х с указанием наименования города и стоимости тура;
-самый дешевый тур с целью поездки Х.
Цель поездки Х вводится по запросу с клавиатуры.
| 28
| Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля –
модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию:
-список автомобилей модели Х с указанием цены, цвета и номера двигателя;
-самый дешевый автомобиль модели Х.
Модель автомобиля Х вводится по запросу с клавиатуры.
| 29
| Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию:
-список сотрудников женского пола в возрасте от 18 и до 55 лет, с указанием стажа работы;
-средний возраст сотрудников женского пола отдела Х.
Наименование отдела Х вводится по запросу с клавиатуры.
| 30
| Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию:
-список товаров, стоимость которых превышает Х рублей с указанием количества;
-общую стоимость товаров на складе.
Стоимость Х вводится по запросу с клавиатуры.
|
|