Использование в программах структурированных типов данных 


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



ЗНАЕТЕ ЛИ ВЫ?

Использование в программах структурированных типов данных



Цель работы: Разработка программ с использованием объектов, содержащих структурированные типы записей ─ записи и множества.

          

Использование структурированных данных, содержащих множество однотипных элементов (массивов), уже рассматривалось в лаб. работе № 4, задание 1.

 Кроме массивов, в языке  Turbo Pascal есть еще другие структурированные типы: записи и множества.

I. Использование записей

Тип записи включает ряд компонент, называемых полями, которые могут быть разных типов. Формат объявления типа записи:

Type

<Имя типа>= Record

<поле 1>: тип 1;

<поле 2>: тип 2;

--------------------------

<поле N>: тип M

End;

Доступ к полям записи осуществляется с помощью составного имени:

указывается имя записи и через точку ─ имя поля.

 

Для упрощения доступа к полям записи используется оператор присоединения With: With < переменная > Do < операторы, содержащие записи >. В этом случае для доступа к полю достаточно указать его имя.

 

 

Задание: Сформировать базу данных, содержащую сведения о 15-ти студентах. База данных состоит из 5-ти полей: фамилия, имя, номер группы, год рождения, город, где закончил школу. Вывести на экран записи, в которых содержатся все имеющиеся сведения о студентах, закончивших школу  в Томске.

Набрать и отладить программу.

 

Методика выполнения работы

1. Программа:

Program BDS;

Uses crt;

Const

 n=15;

Type Spisok=Record   {Задание типа  Spisok -записи с пятью полями}

            Fam:String[20];

            Ngr, Im, Gor:String[10];

                  Gr:Integer

     End;

Var Student: Array[1..n] of Spisok; {Объявление одномерного массива Student, тип которого – запись Spisok}

  i:Integer;

Begin

Clrscr;

For i:=1 To n Do

Begin

Writeln(‘ Фамилия ’,i:2,’- го ст - та ’); Readln(Student[i].Fam);

   Writeln(‘ Имя ’,i:2,’- го ст - та ’); Readln(Student[i].Im);

   Writeln(‘ Номер группы ’,i:2,’- го ст - та ’); Readln(Student[i].Ngr);

   Writeln(‘ Год рождения ’,i:2,’- го ст - та ’); Readln(Student[i].Gr);

Writeln(‘ Город ’,i:2,’- го ст - та ’); Readln(Student[i].Gor)

End;

Writeln (‘Данные о студентах, закончивших школу в г. Томске’);

Writeln;

Writeln (‘ Фамилия    Имя     Номер группы      Год рождения’);

For i:=1 To n Do

If Student[i].Gor=’ Томск ’ Then

       Writeln(Student[i].Fam,’ ‘,Student[i].Im,’  ‘,Student[i].Ngr,’   ’,  

       Student[i].Gr:4)

End.

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

3. Введите в программу изменения, чтобы вместо составного имени использовалось просто имя поля. Для этого в соответствующих местах программы (при вводе и выводе) надо использовать оператор With. Например, при вводе:

For i:=1 To n Do

      Begin

With Student[i] Do

       Begin < Ввод данных > End

End;

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

II. Использование множеств

Множества представляют собой ограниченный набор однотипных логически связанных друг с другом объектов. Количество элементов, входящих в множество, может меняться от 0 до 256 (возможно пустое множество). Именно непостоянством количества элементов множества отличаются от массивов и записей.

 Формат объявления типа «Множество»:

<Имя типа>= Set of <Базовый тип элементов множества>.

Над множеством определены операции:

1. Пересечение (C = A * B)  – множество C, содержащее элементы, общие для множеств A и B;

2. Объединение (C = A + B) – множество C, содержащее элементы множества A, дополненные недостающими элементами из множества B;

3. Разность (C = A - B) – множество C, в котором отсутствуют элементы, входящее в множество B;

4. IN   проверка принадлежности задаваемых элементов k множеству A        (k IN A).

Ввод множества X с клавиатуры осуществляется следующим образом:

 

X:=[]; {Задание пустого множества}

For i:=1 To N Do

Begin Readln(a); X:=X+[a] End;

 

Вывод элементов множества X на экран:

 

For i:=1 To N Do

If i IN X Then Write(i:4);

 

Задание: Из множества целых чисел от 1 до 100 выделить множество чисел, делящихся без остатка на 2 или 3.

Набрать и отладить программу.

Методика выполнения работы

1. Программа:

Program Set_of;

Uses crt;

Const

n=100;

Var

n 2, n 3, n 23: Set of byte; {Описание 3-х множеств с элементами типа byte}

i: integer;

Begin

Clrscr;

{Формирование множеств, элементы которых делятся без остатка на 2 и 3}

n2:=[]; n3:=[];

For i:=1 To n Do

Begin

      If i mod 2 =0 Then n2:=n2+[i];

      If i mod 3 =0 Then n3:=n3+[i]

End;

{Объединение множеств для получения множества с элементами, делящимися без остатка на 2 или 3}

n 23:= n 2+ n 3;

{Вывод полученного множества}

Writeln (‘На 2 или 3 делятся без остатка следующие числа’);

For i:=1 To n Do

If i IN n23 Then Write(i:4);

Writeln

End.

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

3. Что нужно изменить в программе, чтобы она находила числа, которые одновременно делились бы без остатка на 2 и 3? Внесите эти изменения и проверьте правильность работы программы.

Задания для самостоятельной работы

Составить программу на языке Паскаль, отладить и провести расчеты.

 

Вариант 1.1. Задан список группы из 20 студентов (фамилия, имя) и их оценки по сдаче экзамена. Вывести список студентов, получивших оценки выше среднего балла для этой группы.

 

Вариант 1.2. Разработать базу данных «Компьютерная фирма» (процессор, материнская плата, винчестер, видеокарта, монитор, стоимость). Вывести данные о компьютерах фирмы, стоимость которых менее 20 тыс. р.

 

Вариант 1.3. Разработать    базу данных «Список родственников» (фамилия, имя, отчество, дата рождения, адрес, номер телефона). Вывести данные о родственниках, родившихся в апреле.

Вариант 1.4. Задан список группы из 15 студентов (фамилия, имя) и их оценки по контрольной работе. Вывести список студентов, получивших оценки «хорошо» и «отлично».

 

Вариант 1.5. Разработать базу данных «Научно-техническая библиотека» (Ф.И.О. автора книги, название книги, издательство, год выпуска, тематика). Вывести данные о книгах по программированию.

 

Вариант 2.1. В магазинах М1, М2, М3 могут быть в наличии продукты: хлеб, масло, сыр, колбаса, рыба, творог. В М1 есть хлеб, масло, сыр; в М2 ─ сыр, колбаса, рыба; в М3 ─ сыр, хлеб, рыба, колбаса.

Вывести на экран список продуктов, имеющихся во всех магазинах.

 

Вариант 2.2. Выделить из латинского алфавита (множество ‘ A ’..’ Z ’) два множества, состоящие из гласных (A, E, I, O, U)  и согласных букв.

 

 Вариант 2.3. Из множества целых чисел [1..60] выделить следующие множества:

a) делящиеся без остатка на 4 или 5;

b) делящиеся без остатка на 20.

 

 Вариант 2.4. На день рождения к Ире приходили в гости ее друзья: Олег, Света, Миша, Юра. А к Оле на день рождения приходили: Света, Наташа, Юра, Нина, Вова. Найти:

a) общих друзей у Иры и Оли;

b) всех друзей Иры и Оли.

Вариант 2.5. Если взять то общее, что есть у боба (bean) с ложкой (spoon), добавить кота (cat) и поместить в теплое место, т.е. убрать холод (cold), то получится муравей (ant). Так ли это?



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 48; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.106.100 (0.013 с.)