Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Структурированные типы данных




 

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

Записи

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

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

 

Например:

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. Таблица идентификаторов
Наименование переменной Обозначения в программе Тип переменной
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

 

  1. Листинг программы

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.

Вопросы для самоконтроля

 

  1. В чем состоит основное преимущество записи?
  2. Почему записи называют комбинированным типом записи?
  3. Чем записи отличаются от массивов?
  4. Что называется полем записи?
  5. Какие требования предъявляются к идентификаторам поля записи?
  6. Как определить объем памяти, требуемый для размещения записи?
  7. С какой целью при обращении к полю записи используется оператор 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 Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию: -список товаров, стоимость которых превышает Х рублей с указанием количества; -общую стоимость товаров на складе. Стоимость Х вводится по запросу с клавиатуры.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 531.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...