Планирование уроков на учебный год



Уроки 62 - 65
Комбинированный тип данных
Практикум
Практическая работа № 3.9
"Программирование обработки записей"












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

imageКомбинированный тип данных — это структурный тип, состоящий из фиксированного числа компонентов (полей) разных типов.

Комбинированный тип объявляется в программе в разделе типов:

image

Поля могут иметь любые типы, в том числе и комбинированный тип.

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

image

После этого в разделе переменных следует описание:

Var exam: results;

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

<имя переменной>.<имя поля>

Например: exam.family, exam.rus

В программе может использоваться массив, элементами которого являются записи.

imageПример 1. На экзаменационном листе содержатся сведения о результатах экзаменов, сданных 30 учениками класса. Ввести эти данные в компьютер и получить список всех отличников.

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

Var list: array[1..30] of results;

После ввода в этот массив исходных данных следует фрагмент программы:

image

Программа отбирает записи, в которых все поля с оценками равны 5, и выводит соответствующие поля фамилий.

А теперь обсудим проблему: как наиболее удобным способом организовать ввод данных в этой программе? Вводить с клавиатуры неудобно из-за большого объема данных. При каждом повторном запуске программы нужно начинать ввод сначала. А при отладке это наверняка придется делать многократно. Гораздо удобнее подготовить файл с исходными данными с помощью текстового редактора. После этого без проблем можно повторять ввод многократно. Так и поступим. Подготовим текстовый файл следующего вида:

image

Таблица содержит данные с фамилиями и оценками 30 учеников класса. Обратите внимание на то, что фамилии записываются в отдельных строках. Необходимость этого связана с реализацией алгоритма (см. далее): при вводе символьной строки прочитывается полностью очередная строка текстового файла до признака EOLN. При этом фамилии должны содержать не более 15 символов, а первые оценки (по русскому языку) — располагаться не раньше 16-й позиции в своей строке.

Сохраним этот файл в корневом каталоге логического диска Е под именем 10_a.txt. Составим программу с вводом таблицы успеваемости и выводом списка отличников. Фамилии отличников выведем на экран и сохраним в файле с именем Best.txt.

image

image

imageПример 2. Решая рассмотренную задачу с оценками, можно обойтись без массива записей. Кроме того, можно не ставить ограничения на число учеников в классе. Их число выяснится в процессе чтения файла с таблицей успеваемости. Составим программу, которая кроме вывода списка фамилий отличников подсчитает их количество и процент отличников по отношению к полному составу класса.

image

image

В этой программе переменная I используется как счетчик числа учеников, а переменная К — как счетчик числа отличников.

Стандартная логическая функция EOF (end of file) примет значение True, когда процесс чтения из файла дойдет до его конца.

В результате выполнения программы кроме списка отличников на экран выведется строка:

Из 30 учеников в классе 10 отличников, что составляет 33,3%

image

Вопросы и задания


1. Чем комбинированный тип данных отличается от регулярного типа данных (массива)?

2. Что такое запись?

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

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

5. Напишите программу, по которой будут введены данные из файла, описанного в предыдущем задании, и выполнена следующая обработка:

• определение среднего роста и среднего веса всех учеников;
• вывод на экран и в файл rost.txt списка (фамилии, имена, возраст) учеников, рост которых выше среднего роста;
• вывод на экран и в файл ves.txt списка учеников, вес которых ниже среднего веса.

6. Решите предыдущую задачу, не используя в программе массива записей. Подсказка: оператор Reset можно использовать в программе многократно для повторного чтения файла, начиная с его первой записи.



Практикум


Работа 3.9. Программирование обработки записей


Задание


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

Уровень 1


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

2. Из ассортимента конфет, выпускаемых кондитерской фабрикой, выбрать те, стоимость которых от 100 до 200 руб. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже.

3. Получить список учеников музыкальной школы, которые учатся играть на скрипке. Указать также, сколько лет они занимаются музыкой и принимали ли участие в каких-либо конкурсах.

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

5. Получить список тех учителей школы, которые преподают математику и информатику, указать стаж их работы и недельную нагрузку.

6. Получить анкетные данные учеников, участвовавших в олимпиаде по информатике и заработавших не менее 30 баллов.

7. Даны результаты переписи населения. Получить фамилии, имена и подсчитать общее число жителей, родившихся после 1990 года.

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

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

10. При поступлении в университет лица, получившие оценку «неудовлетворительно» на первом экзамене, ко второму экзамену не допускаются. Считая фамилии абитуриентов и их оценки после первого экзамена исходными данными, составить список абитуриентов, допущенных ко второму экзамену.

Уровень 2


11. Имеются сведения о датах рождения сотрудников учреждения.

а) Определить самого молодого сотрудника.
б) Определить самого старшего сотрудника.
в) Получить список всех сотрудников, родившихся весной.

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

13. Среди работников данного предприятия найти тех, чья заработная плата за месяц ниже средней по предприятию, а также распечатать список тех, кто проработал на предприятии более 10 лет с указанием их фамилии, зарплаты, стажа работы и должности.

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

15. Имеются сведения об учениках класса. Определить средний вес мальчиков и средний рост девочек. Кто из учеников класса самый высокий?

16. Составить программу назначения стипендии студентам по результатам сессии, используя следующие правила:

1) если все оценки 5, назначается повышенная стипендия;
2) если оценки 4 и 5, назначается обычная стипендия;
3) если есть оценка 3, стипендия не назначается.

В результате работы программы получить список группы с оценками и средним баллом каждого студента и два списка фамилий (назначенных на повышенную и обычную стипендию).

17. В таблице хранятся следующие данные об учениках: фамилия, имя, отчество, рост, вес. Вычислить средний рост учеников, найти самого высокого и самого низкого учеников. Сколько учеников могут заниматься в баскетбольной секции, если рост баскетболиста должен быть больше 170 см?

18. В столовой предлагаются N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо?

19. N спортсменов-многоборцев принимают участие в соревнованиях по М видам спорта. По каждому виду спорта спортсмен набирает определенное количество очков. Вычислить, сколько очков в сумме набрал каждый спортсмен после окончания соревнований. Вычислить разницу в очках для спортсменов, занявших первое и последнее места.

20. N учеников проходили тестирование по М темам какого-либо предмета. Сколько очков набрал каждый ученик по всем темам? Вычислить средний балл, полученный учениками, и разницу между лучшим результатом и средним баллом.

21. Сведения о результатах сессии содержат следующую информацию: название предмета, номер группы, номер зачетной книжки, фамилия, имя, отчество студента, его оценки по итогам экзаменов. Получить отдельные списки: отличников, хорошистов, троечников и двоечников.

Уровень 3


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

23. Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше n месяцев, то она уценивается в 2 раза, а если срок хранения превысил m (m < n) месяцев, но не достиг n, то — в 1,5 раза. Получить ведомость уценки товаров, которая должна содержать следующую информацию: наименование товара, количество товара, цена товара до уценки, срок хранения товара, цена товара после уценки, общая стоимость товара до уценки, общая стоимость товара после уценки. Выяснить максимальный и минимальный сроки хранения товаров на складе; максимальную и минимальную цену товаров до уценки и после уценки.

24. Багаж пассажира характеризуется количеством вещей и общим весом вещей. В таблице представлены сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с тремя полями: фамилия пассажира, количество вещей и вес всего багажа в килограммах.

а) Найти пассажира, багаж которого имеет средний вес одной вещи, отличающийся не более чем на m кг от общего среднего веса одной вещи (для всех пассажиров).
б) Найти число пассажиров, имеющих более двух вещей, и число пассажиров, количество вещей которых превосходит среднее число вещей на одного пассажира.
в) Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее m кг. Если такой пассажир есть, то вывести его фамилию и вес багажа.

25. Имеются сведения о книгах, содержащихся в библиотеке. Сведения о каждой из книг — это фамилия автора, название и год издания.

а) Получить название книг данного автора, изданных с 1960 г.
б) Определить, имеется ли книга, содержащая в своем название слово «информатика». Вывести сведения обо всех таких книгах.
в) Вывести сведения о книгах, которые имеют несколько изданий (автор и названия повторяются, а годы издания разные).

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

а) Получить названия игрушек, цена которых не превышает 500 руб. и которые подходят детям 5 лет.
б) Определить стоимость самого дорогого конструктора.
в) Получить список наиболее дорогих игрушек (цена которых отличается от цены самой дорогой игрушки не более чем на 200 руб.).
г) Получить названия игрушек, которые подходят детям как четырех лет, так и десяти лет.
д) Получить сведения о том, можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку трех лет.
е) Получить название самой дешевой игрушки.
ж) Получить название самой дорогой игрушки для детей до четырех лет.
з) Получить названия игрушек для детей четырех-пяти лет.
и) Получить название самой дешевой игрушки, подходящей детям двух-трех лет.
к) Определить стоимость самой дорогой куклы.
л) Определить стоимости всех кукол для детей шести лет.
м) Для детей какого возраста предназначается конструктор?
н) Для детей какого возраста предназначены кубики? Указать их среднюю стоимость.

27. Имеются сведения о программах телепередач на неделю: день недели, время, канал, вид и название телепередачи.

а) Получить названия телепередач, которые идут в указанный день в указанный промежуток времени.
б) Получить названия телепередач, которые идут в указанный день на указанном канале.
в) Получить информацию об указанном фильме. Если он отсутствует в телепрограмме, то вывести на экран сообщение «Такой передачи на данной неделе нет».
г) На каком канале и в какое время будет транслироваться развлекательная передача «Поле чудес»?
д) Выяснить, есть ли передача, транслирующаяся больше одного раза в одно и то же время. Если есть, то какая?
е) Получить названия телепередач, транслирующихся в указанное время на разных каналах.
ж) Получить название самой продолжительной передачи, которая идет в понедельник.
з) Получить информацию на каждый день недели о передаче, которая завершает эфир.

28. Имеются сведения о людях, которые ищут работу. Указываются специальность, опыт работы, образование, пол, возраст.

а) Подобрать кандидатов на должность врача с опытом работы не менее пяти лет.
б) Найти работников с высшим экономическим образованием не старше 35 лет.
в) Найти работников, имеющих опыт работы в сфере торговли.
г) Получить полную информацию обо всех женщинах, возраст которых от 20 до 40 лет.
д) Определить средний возраст всех мужчин, ищущих работу.
е) Выяснить, кого в базе данных больше с высшим образованием — женщин или мужчин.
ж) Найти п самых молодых работников.







Наверх