Разработка алгоритма, отладка и тестирование программы обработки массива записей
Цель работы: Получить навыки в составлении алгоритма и отладки программы обработки записей
Теоретические положения:
Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов, называемых полями. Идентификатор поля должен быть уникален только в пределах записи. Обращение к значению поляосуществляется с помощью составного имени - идентификатора переменной (имени записи) и идентификатора поля, разделенных точкой.
имя записи. имя поля
В языке TurboPascal различают фиксированные и вариантные записи.
Описание фиксированной записи
Type имя типа =record
имя поля 1 : тип;
имя поля 2 : тип;
. . .
имя поля N: тип
end;
Var имя записи : имя типа;
где
имя типа- правильный идентификатор;
record, end– зарезервированные слова ( запись, конец);
имя поля1,..имя поля n – список полей;
Пример:
Type Car = record
Number: integer; {номер}
Marka: string[20]; {маркаавтомобиля}
FIO: string[50] {фамилиявладельца}
end;
Var a,b: Car;
Пример обращения к полям записи: a.Marka, B.FIO, A.Number
Для упрощения доступа к полям записи используется оператор присоединения WITH
WITHимя записиDOоператор
где
With, do –зарезервированные слова ( с, делать);
Имя записи – имя переменной типа запись, за которым возможно следует список вложенных полей;
|
|
Оператор – любой (один) оператор языка TurboPascal .
Например: With Ado Marka:=’Жигули’
К записям в целом применим оператор присваивания .Например А :=В
Над полями записей можно выполнять любые операции, присущие данному типу.
TurboPascal допускает использование вложенных записей (т.е. поле в записи может быть в свою очередь тоже записью). Уровень вложения не должен превышать 9.
Например:
Type
zap1 = record
Day :byte; {день}
Month : 1..12; {месяц}
Year : word {год}
end;
zap2 = record
FIO: string[30]; {фамилиястудента}
Gruppa: integer; {номергруппы}
Birthday: zap1 {датарождения}
end;
Var Spisok: array [1..10] of zap2;
Пример обращения к дню рождения студента:
For i:=1 to 10 do
With spisok[i] , birthday do
day := 23;
В языке Pascal имеется возможность задать тип записи, содержащий произвольное число вариантов структуры. Такие записи называются записями с вариантами. Записи с вариантами обеспечивают средства объединения записей, которые похожи , но не идентичны. Они состоят из фиксированной и вариантной частей. Вариантная часть формируется с помощью оператора Case. Он задает поле признака, которое определяет, какой из вариантов в данный момент будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком , задает вариант записи и называется константой выбора. Количество полей каждого из вариантов неограниченно. Объем памяти, необходимый для записи с вариантами, складывается из объемов полей фиксированной части и саксимального по объему поля переменной части.
|
|
Описание вариантной записи
Type имя типа =record
имя поля 1 : тип;
. . .
имя поля N: тип;
Case поле признака : тип of
константа выбора1 : (поле, … : тип);
. . .
константа выбора n : (поле, … : тип)
end;
Var имя записи : имя типа;
Пример:Из массива записей, содержащего информацию о преподавателях (фамилия_имя_отчество, читаемые дисциплины) вывести алфавитном порядке фамилии преподавателей, читающих заданную дисциплину.
|
|
Programzapis;
Type
Mas=array[1..10] ofstring;
TRec = Record
FIO: String[40]; {ФИОпреподавателя}
KOL: integer; {количествочитаемыхдисциплин}
DIS: Mas; {перечень читаемых дисциплин}
end;
zap=array[1..15] ofTrec;
varrec:zap;
k:trec;
op,kol,i,j,n:integer;
st:string;
Begin
writeln('Введите количество преподавателей ');
readln(kol);
Fori:=1 tokol do
Begin
Write('ВведитеФИО -');
readln(rec[i].fio);
write('Введите количество дисциплин -');
readln(rec[i].kol);
Forj:=1 torec[i].kol do
Begin
Write('Введите ',j,'-уюдисциплину- ');
readln(rec[i].dis[j]);
end;
end;
op:=1;
{сортировка массива записей в алфавитном порядке фамилий}
whileop=1 do{op=1 – сортировка закончена}
Begin
op:=0;
fori:=1 tokol-1 do
ifrec[i].FIO>rec[i+1].FIO then
Begin
k:=rec[i];
rec[i]:=rec[i+1];
rec[i+1]:=k;
op:=1;
end;
end;
Writeln('Введите название дисциплины для поиска преподавателя');
readln(st);
op:=0; {op- признак наличия преподавателей, читающих заданную дисциплину}
Fori:=1 tokol do
Forj:=1 torec[i].kol do
ifrec[i].dis[j]=st then begin
op:=1;
writeln(rec[i].Fio);
end;
ifop=0 then
writeln (‘нет преподавателей, читающих дисциплину -’, st);
end.
Порядок выполнения работы:
1) Для загрузки интегрированной среды запустите файл - РascalABC.exe.
|
|
2) Создайте новый файл для ввода текста программы: меню Файлà пункт Новый(Ctrl+N) или кнопка на панели инструментов Новый файл.
3) В окне для ввода текста программы наберите свою программу. После заголовка программы в комментарии напишите условие задания.
4) Запустите программу на выполнение: меню Программа àпункт Выполнить или кнопка Выполнить на панели инструментов
5) Сохраните программу: меню Файлàпункт Сохранить какàукажите место сохранения файла и имя файла.àV:\группа\студент\задача _номер
Содержание отчёта:
1. Шифр работы
2. Название работы
3. Цель работы
4. Условие задачи
5. Блок-схема алгоритма
6. Текст программы
7.
Из окна вывода |
a. Результат решения
Контрольные вопросы
1. Почему запись называют комбинированным типом данных?
2. Как определятся тип записи? Что называется полем записи?
3. Какие требования предъявляются к идентификаторам поля в записи?
4. Чем определяется объем памяти, требуемый для размещения записи?
5. Что такое составное имя поля записи? Из каких частей оно состоит и как записывается?
6. Зачем при обращении к полю записи используется предложение With ?
7. Как вы понимаете вложение записей? Каков максимально допустимый уровень вложения?
8. Зачем применяются записи с вариантами? Из каких частей она состоит?
9. Что называется полем признака и константой выбора? Какие правила следует соблюдать при использовании записей с вариантами?
Индивидуальные задания:
Вариант № 1
Положение шахматных фигур на доске задается:
-- по горизонтали - буквами
-- по вертикали - цифрами
Определить, бьет ли конь произвольную фигуру.
Вариант № 2
Положение шахматных фигур на лоске задается:
-- по горизонтали - буквами
-- по вертикали - цифрами
Определить, бьет ли ферзь произвольную фигуру.
Вариант № 3
Положение шахматных фигур на доске задается:
-- по горизонтали - буквами
-- по вертикали - цифрами
Определить, бьет ли ладья произвольную фигуру.
Вариант № 4
Дан список преподавателей. Для каждого указано:
ФИО, расписание: день недели, кол-во уроков.
Вывести на экран для заданного преподавателя день недели, в который он имеет по одной паре.
Вариант № 5
Дан список преподавателей. Для каждого указано:
ФИО, расписание: день недели, количество уроков.
Вывести на экран список преподавателей выходных в заданный день в алфавитном порядке их фамилий.
Вариант № 6
Дан список преподавателей. Для каждого указано:
ФИО, расписание: день недели, кол-во уроков.
Вывести на экран для заданного преподавателя дни недели, в которые он имеет по 3 пары уроков.
Вариант № 7
Дан список преподавателей. Для каждого указано:
ФИО, расписание: день недели, кол-во уроков.
Вывести на экран выходной день заданного преподавателя.
Вариант № 8
Дан список абонентов с номерами телефонов. Для заданной фамилии вывести номер его телефона. Если заданной фамилии в списке нет, вывести сообщение.
Вариант № 9
Дан список учащихся. Для каждого учащегося имеется список оценок по шести предметам. Вывести на экран список задолжников по К и более предметам.
Вариант № 10
Дан список учащихся. Для каждого указано:
ФИО, возраст, прививка реакция Манту(не сделано, отрицат. положит.)
Вывести на экран фамилию тех, кому нужно сделать эту прививку.
Условия для прививки:
--старше 16 лет
--прививка не сделана или положительна.
Вариант № 11
Дан список учащихся. Для каждого имеется список оценок по пяти предметам.
Вывести на экран список отличников.
Вариант № 12
Дан список учащихся. Для каждого имеется список оценок по пяти предметам.
Вывести на экран список учащихся, не имеющих задолженностей ни по одному предмету.
Вариант № 13
Дан список учащихся. Для каждого указано:
ФИО, N группы, оценки.
Вывести на экран список отличников заданного курса.
(в № группы последняя оценка означает год поступления. Например: гр.342 - 92 год поступления, значит 3 курс
гр.334 - 94 год поступления, значит 1 курс.)
Вариант № 14
Дан список учащихся. Для каждого указано:
ФИ, N группы, оценки.
Вывести на экран по курсам список учащихся, имеющих хотя бы одну двойку.
(в N группы первый символ - номер курса).
Вариант № 15
Дана программа телепередач на неделю.
Вывести на экран название передачи, которая транслируется в заданный день и в заданное время.
Вариант № 16
Дана программа передач на неделю.
Вывести на экран дату и время трансляции заданной передачи.
Вариант № 17
Дан список спортивной команды (ФИО, пол, возраст, вид спорта).
Вывести на экран фамилии девушек заданного возраста.
Вариант № 18
Для каждого члена группы даны имя и его рост.
Написать алгоритм и программу, которая проверяет, есть ли в группе хотя бы два человека одного роста.
Вариант № 19
В отделе кадров предприятия имеется список сотрудников. Для каждого сотрудника введена следующая информация: -- табельный номер
-- ФИО
-- пол
-- дата рождения
Список упорядочен по возрастанию табельных номеров.
Вывести в алфавитном порядке список пенсионеров.
Вариант № 20
Записная книжка содержит:
ФИО, адрес телефон (если есть) и дата рождения.
Необходимо по заданной дате организовать поздравления с днем рождения:
----- звонок по телефону в день рождения
----- поздравительная открытка для иногородних и людей, не имеющих
телефона за 3 дня до дня рождения.
Вариант № 21
Кулинарная книга содержит перечень блюд с необходимым набором продуктов. Вывести на экран:
1. для заданного блюда - его продукты.
2. для заданного набора продуктов - возможное блюдо.
Вариант № 22
Дан список учебных заведений. Для каждого указано по каким специальностям и на базе какого образования он готовит специалистов. Вывести на экран список тех учебных заведений, которые готовят специалистов по заданной специальности и с учетом образования.
Вариант № 23
Библиотека - хранилище книг. По запросу заданных автора и названия книги вывести:
1. если книга имеется, то - ее название и автора.
2. если данной книги нет, то вывести список книг запрашиваемого автора.
3. если нет книг данного автора, то вывести:"Книги нет".
Вариант № 24
Рассортировать корреспонденцию, поступившую в почтовое отделение:
1. Иногородние
2. Внутри города по улицам
Вывести на экран заданную группу.
Вариант № 25
Составить алгоритм и программу, которая проверяет правильно ли выставлены кости домино в ряд ( равна ли правая цифра очередной кости левой цифре следующей кости)
Всего 28 костей.
Вариант № 26
Дан список спортивной команды (ФИО, пол, возраст, вид спорта).
Вывести на экран фамилии юношей, занимающихся заданным спортом.
Вариант № 27
Дан список учащихся. Для каждого имеется список оценок по пяти предметам.
Вывести на экран список учащихся, имеющих 2 и более задолженности .
Вариант № 28
Дан список стран с указанием численности населения и занимаемой площади. Вывести названия стран с минимальной плотностью населения.
Вариант № 29
Дан список стран с указанием численности населения и занимаемой площади. Вывести названия стран с максимальной плотностью населения.
Вариант № 30
Дан список стран с указанием численности населения и занимаемой площади. Вывести названия стран с максимальной площадью..
Лабораторная работа №6
Дата добавления: 2018-06-26; просмотров: 586; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!