КОМБИНИРОВАННЫЙ ТИП – ЗАПИСИ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

Записи состоят из фиксированного числа компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа.

Структура данных типа записи

Структура объявления типа "запись" имеет следующий вид:

TYPE <ИмяТипа> = RECORD

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

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

                         . . .

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

                       end;

Если тип нескольких полей совпадает, то имена полей можно перечислить через запятую. <ИмяТипа> и поля являются правильными идентификаторами.

Например:

 TYPE

 DENROGD = RECORD

 name: string; {фамилия или имя }

 den, mes: byte; {день, месяц}

 god: word      {год}

 end;

Определение константы – записи будет иметь вид

<идентификатоp>: <тип_записи > = (<список_значений_полей>);

Список значений полей представляет собой список из последователь­ностей вида: имя поля, двоеточие и константа. Поля должны указываться в той же последовательности, в какой они перечислены в объявлении типа. Например:

TYPE POINT = record

                        x, y: real;

                   end;

CONST

                 p: POINT = (x:1; y:1);

 

Объявление переменных производится в разделе VAR:

VAR a, b: DENROGD;

Доступ к каждой компоненте записи производится указанием состав­ного имени: имени переменной и затем через точку имени поля. Например:

a.name := ' MARINA';

a.god := 1991;

a.den := 23;

a.mes := 3;

Таким образом, в типе "запись" определена операция присваивания. Кроме того, как и в массиве, все значения переменных типа "запись" можно присваивать другим переменным того же типа: B := A; .

Над полями можно выполнять действия, разрешенные для базового типа:

b.god := а.god + 1;              {на год старше}.

В качестве переменной может быть объявлен массив записей:

VAR s: array[1..20] of STUDENT;

Пример. Разработать программу формирования списка студентов с указанием дат рождения. Распечатать список в алфавитном порядке.

Program zapis;

Type                                                     {определение нового типа}

     student = record                                     {запись}

                         name: string[15];

                         den, mes: byte;

                         god: word

                     end;

Var

  Z: ARRAY [1..20] OF student;

  k, m, i, n: byte;

  r: string[15];          {вспомогательная строка для перестановки}

BEGIN

      writeln('ВВЕДИТЕ КОЛИЧЕСТВО СТУДЕНТОВ');

      READln(n);

   for i:=1 to n do

        begin

                 writeLN('ВВЕДИТЕ имя ',i,' студента с прописной буквы');

                 readLN (z[i].name);

                WRITELN('ВВЕДИТЕ день рождения');

                 readLN(z[i].den);

                WRITELN('ВВЕДИТЕ месяц рождения');

                 readLN(z[i].mes);

                WRITELN('ВВЕДИТЕ год рождения');

                 readLN(z[i].god);

        end;

for I := n downto 2 do {********* Упорядочение списка *********]

   begin                    {поиск "наибольшего" значения поля NAME}

           m:=1;

           for k:=2 to i do if z[k].name > z[m].name then m := k;

           r := z[i].name;               {перестановка записей}

          z[i].name := z[m].name;

          z[m].name := r

  end;                       {**************************************}

writeln(' Упорядоченный список ');

for i:=1 to n do

  begin

            WRITE(z[i].name);

             WRITELN(' Дата рождения:', z[i].den, '.' ,z[i].mes, '.', z[i].god);

   end

END.

Обработка полей записей

Для упрощения доступа к полям записи может использоваться оператор присоединения. Структура оператора имеет вид

WITH <переменная­_Типа_Запись> DO <оператор>;

где WITH, DO - ключевые слова ( с, делать).

Пример. WITH a DO           // где a – запись, структуру см. в п. 11.1

                           begin

                                  name:='MARINA';

                                  god:=1991;

                                  date:=23;

                                   mes:=3

                            end;

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

Пример. Определим вложенную запись (запись в записи)

      TYPE

                STUDENT = RECORD

                                                   name: string;

                                                   DenRogden: RECORD

                                                                                      den, mes: byte;

                                                                                      god: word

                                                                               end;                       

                                          end;

       VAR z: STUDENT;

Имя DenRogden в свою очередь тоже является записью, тогда обращение к вложенным полям выполняется в виде

  z.name := 'LIZA';

                                                  z.DenRogden.god := 1994;

Используя оператор присоединения, к этим же полям можно получить доступ другими способами:

WITH z DO

    begin

           name := 'LIZA';

            with  DenRogden  DO

                               god := 1994;

          end;

или

          WITH z DO name := 'LIZA';

                  WITH Z DO with DenRogden DO god := 1994;

К полю GOD можно также обратиться и следующим оператором:

WITH z.DenRogden DO god:=1994;

Используя тип "запись", можно составить базы данных для разных назначений, а затем обрабатывать их с помощью программы [3–6]. При этом нужно следить, чтобы среди идентификаторов полей не было одинаковых.

 

Задания с обработкой записей

Задание 1

1. Ввести оценки студента по 5 экзаменам. Определить средний балл и подсчитать количество удовлетворительных, хороших и отличных оценок. Напечатать название предмета, если есть «неуд».

2. Дан список студентов и оценка каждого на экзамене (оценки на N экзаменах). Подсчитать количество удовлетворительных оценок, хоро­ших, отлич- ных и средний балл в группе. Напечатать фамилии неуспеваю­щих студентов.

3. Дан список студентов группы. Заполнить его следующими сведе­ниями: фамилия, имя, отчество; имеет ли компьютер (если имеет, то ка­кой и с какого года). Подсчитать сколько студентов имеют ПК.

4. Сформировать список студентов группы со следующими сведения­ми: фамилия, имя, отчество, знает ли языки программирования Pascal ABC, Cи (если да, где обучался и сколько лет). Подсчитать, сколько студентов знают язык Си, сколько – Pascal ABC, сколько – оба языка.

5. Сформировать список студентов группы, в котором указать фами­лию (имя, отчество); город, в котором получил среднее образование (номер школы, если обучался в Омске). Подсчитать, сколько в группе иногородних студентов.

6. Сформировать запись «ключевые слова Pascal ABC»: слово и перевод. Подсчитать их количество. Организовать поиск: ключевое слово – перевод и наоборот.

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

8. Сформировать запись «Даты – праздники». Организовать в прог­рамме ввод дат, подсчитать число праздничных дней и рабочих.

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

10. Сформировать запись «операторы Pascal ABC»: оператор, действие. Подсчитать их количество и число операторов, имеющих повторяющие­ся ключевые слова.

11. Сформировать запись «типы Pascal ABC»: имя, тип, операции, разрешен­ные в данном типе. Подсчитать количество разных операций и вывести списки типов для каждой операции.

12. Сформировать пополняемую базу данных «Континент – страны», в которой указать столицы, численность населения, крупные города. Ор­ганизовать поиск страны по городу, стран или городов на континенте.

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

14. Сформировать список граждан, в котором указать фамилию, имя, отчество; адрес; профессию. Организовать в программе выборку и подс­чет граждан с одинаковой профессией.

15. Сформировать список студентов группы, в котором указать фами­лию, имя, отчество; день, число и месяц рождения. Организовать выбор­ки по месяцу и году рождения.

16. Дан список студентов группы. Заполнить его следующими сведе­ниями: фамилия, имя, отчество; день, число и месяц рождения. Распе­чатать список в порядке возрастания дат рождения.

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

18. Разработать базу данных «География. Реки», в которой указать название реки, местоположение, длину, глубину.

19. Разработать базу данных «Астрономия», в которой указать название звезды, величину, созвездие.

20. Разработать базу данных «Планеты солнечной системы», в которой указать название планеты, величину, удаленность, спутники.

21. Сформировать базу данных «Химические элементы», в которой указать название элемента, формулу, группу, организовать выборки.

22. Ввести сведения о человеке: фамилия, имя, отчество, пол, национальность, рост, вес, дата рождения.

23. Ввести сведения о гражданине: Ф.И.О., дата рождения, ИНН, № страхового свидетельства, № медицинского полиса. Запрограммировать поиск.

24. Сформировать справочник о спортивных командах: название, город, число сыгранных игр, число очков, количество игроков.

Задание 2

Дополнить программу для предыдущего задания заполнением и обработкой файлов. Имя файла вводить с клавиатуры в процессе работы программы.

Процедурные типы

Для организации передачи в качестве фактических параметров процедур и функций в Pascal ABC применяются два процедурных типа: тип-процедура и тип-функция. При объявлении процедурных типов используется только заголовок процедуры или функции, например:

TYPE

Proc1 = Procedure(a, b, c: real; var d: real);

Proc2 = Procedure(var b1, b2:byte);

Proc3 = Procedure;

Func = Function(x: real):real;

Func2 = Function(s: string): string;

Для объявления переменных процедурного типа используется запись:

VAR pr: proc1;

f: func;

Пример применения параметра – функции :

type Func = Function(x : real): real;

Function F1(x: real): real;

Begin

 . . .

 end;

 Procedure FF(n:byte; F:Func);

 Var ...;

 Begin

 . . .

 end;

 BEGIN

 . . .

 FF(2,F1); ... FF(5,F1);

 END.         



Библиографический список

1. Михалкович, С.С. Pascal ABC & Programming Taskbook ME / С.С. Михалкович, М.Э. Абрамян. [Электронный ресурс]. – Режим доступа – http://sunschool.math.rsu.ru/  

2. Ерёмин, О.Ф. Методическое пособие по программированию на языке Pascal ABC / О.Ф. Ерёмин. – Моздок, 2009. – 49 с. [Электронный ресурс]. – Режим доступа – http:// scholtro.narod.ru

3. Чернов, Ю.П. Программирование для начинающих. Turbo Pascal 7.0: учеб. пособие / Ю.П.Чернов, О.П. Шафеева. – Омск: Изд-во ОмГТУ, 2007. – 132 с.

4. Чернов, Ю.П. Практикум по программированию для начинающих: учеб. пособие / Ю.П.Чернов, О.П. Шафеева. – Омск: Изд-во ОмГТУ, 2000. – 128 с.

5. Фаронов, В.В. Турбо Паскаль. Начальный курс / В.В. Фаронов. – М.: Нолидж, 1997. – 616 с.

6. Марченко, А.И. Программирование в среде Turbo PASCAL. Базовый курс / А.И. Марченко, Л.А. Марченко. – Киев: ВЕК+, 1999. – 464 с.

7. Иванова, Г.С. Технология программирования / Г.С. Иванова. – М.: Изд-во МГТУ им. Баумана, 2006. – 336 с.

8. Мануйлов, В.Г. Разработка программного обеспечения на Паскале / В.Г. Мануйлов. – М.: ПРИОР, 1996. – 240 с.

9. Основы программирования в среде Турбо Паскаля: метод. указания / сост. О.П. Шафеева, Ю.П.Чернов. – Омск: Изд-во ОмПИ, 1999. – 48 с.

10.  ГОСТ 19.701-90. Схемы алгоритмов, пpогpамм, данных и систем. Единая система программной документации. – М.: Изд-во стандартов, 1991. – 26 с.

11. Алгоритмизации и программирования. Турбо Паскаль : метод. указания / сост. О.П. Шафеева. - Омск: ОмГТУ, 2004. – 48 с.

12. Методы проектирования программ: метод. указания к выполнению курсовой работы / сост. О.П. Шафеева. – Омск: ОмГТУ, 2004. – 32 с.

13. Кинг, Д. Создание эффективного программного обеспечения / Д. Кинг. – М.: Мир, 1991. – 287 с.

14. Камаев, В.А. Технологии программирования / В.А. Камаев, В.В. Костерин. – М.: Высш. шк., 2005. – 359 с.        

 

 



Приложение

Дата: 2019-02-02, просмотров: 314.