Разработка алгоритма, отладка и тестирование программы обработки массива записей



Цель работы: Получить навыки в составлении алгоритма и отладки программы обработки записей

 

Теоретические положения:

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

 

имя записи. имя поля

 

В языке 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!