- •А.И. Газейкина Основы структурного программирования на языке Паскаль
- •Тема 1. Линейные программы 4
- •Некоторые стандартные функции языка Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 2. Разветвляющиеся программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 3. Циклические программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 4. Обработка данных строкового типа Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 5. Система типов языка Паскаль Краткое изложение теоретического материала
- •Тема 6. Перечисляемый тип Краткое изложение теоретического материала
- •Тема 7. Тип-диапазон Краткое изложение теоретического материала.
- •Тема 8. Множество (множественный тип) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 9. Массивы в языке Паскаль Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 10. Графика в языке Паскаль Краткое изложение теоретического материала
- •Контрольные задания
- •Тема 11. Подпрограммы в языке Паскаль Краткое изложение теоретического материала
- •Процедуры в языке Турбо Паскаль
- •Функции в языке Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 12. Тип данных запись (Record) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 13. Работа с файлами в языке Паскаль Краткое изложение теоретического материала
- •Текстовые файлы
- •Примеры решаемых задач
- •Типизированные файлы
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 14. Динамические переменные в языке Паскаль Краткое изложение теоретического материала Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированные указатели
- •Динамические структуры данных
- •Примеры решаемых задач
- •Контрольные задания
- •Список литературы
Тема 12. Тип данных запись (Record) Краткое изложение теоретического материала
Тип данных запись позволяет объединять разнотипные данные.
Запись – это совокупность компонентов разного типа. Компонент записи называется ее полем. Каждое поле имеет уникальное имя.
Обработка записей в языке Турбо Паскаль:
Описание нового типа данных - запись:
Описание типа:
Type <имя типа> = Record
<имя поля 1> : <тип поля 1>;
…
<имя поля N> : <тип поля N>
End;
Если несколько полей имеют одинаковый тип, их имена можно перечислить через запятую.
Описание переменной типа запись:
Var <имя переменной> : <имя описанного выше типа>;
Например:
Type Book = Record { тип данных книга состоит из трех полей }
Name, Author : String [ 30 ]; { название и автор }
Year : Integer { год издания }
End;
Var Bk : Book; { Переменная Bk – запись с тремя полями }
Обращение к полям записи:
Для обращения к отдельному полю записи следует сначала указать имя переменной типа запись, затем через точку имя поля. Например: Bk.Name.
Для ввода значений полей описанной выше записи Bk может быть записан следующий фрагмент программы:
Write (‘Введите название книги ’); Readln (Bk.Name);
Write (‘Введите фамилию автора ’); Readln (Bk.Author);
Write (‘Введите год издания книги ’); Readln (Bk.Year);
При многочисленных обращениях к полям одной и той же записи можно использовать оператор присоединения With.
With <имя переменной-записи> Do
<составной оператор>;
Оператор With позволяет «вынести за скобки» имя переменной-записи. Приведенный выше фрагмент программы можно переписать с использованием оператора присоединения:
With Bk Do
Begin
Write (‘Введите название книги ’); Readln (Name);
Write (‘Введите фамилию автора ’); Readln (Author);
Write (‘Введите год издания книги ’); Readln (Year)
End;
Примеры решаемых задач
Пример 1. Составить программу, которая обрабатывает информацию о студентах (фамилия, номер группы, рейтинг):
а) вводит такую информацию;
б) выводит список студентов заданной группы;
в) выводит список студентов в порядке убывания рейтинга.
Пояснение: Для хранения данных будем использовать массив записей с информацией о студентах. (При решении этой задачи можно и не использовать тип запись, а написать программу, обрабатывающую три массива. Без использования типа Record трудно обойтись при обработке файлов – см. следующую тему.)
Программа:
Program Record_Student;
Uses Crt;
Const N = 100; { N - максимальное количество студентов }
Type Stud = Record {данные об одном студенте–запись из трех полей:}
Name : String; { фамилия}
Group : Integer; { номер группы}
Rating : Real { рейтинг }
End;
Students = Array [1..N] Of Stud; { данные обо всех студентах - }
{ это массив записей }
Var St : Students; { список студентов – массив записей }
K, M, L, Gr : Integer;
Pst : Stud; { промежуточная переменная, необходимая для того, }
{чтобы менять местами два элемента массива при его сортировке}
Begin
ClrScr;
{ а) Ввод данных о студентах }
Write (‘Сколько студентов ’);
Readln (M);
For K := 1 To M Do
With St [K] Do { вводим все поля записи St[K] }
Begin
Write (‘Введите фамилию ’,K,’ студента ‘);
Readln (Name);
Write (‘Введите номер его группы ‘);
Readln (Group);
Write (‘Введите его рейтинг ‘);
Readln (Rating)
End;
{ б) Вывод списка заданной группы }
Write (‘Список какой группы требуется ’);
Readln (Gr);
Writeln(‘Список группы № ‘,Gr);
For K := 1 To M Do { просматриваем весь список }
With St [K] Do
If Group = Gr { если номер группы студента равен требуемому}
Then Writeln (Name:20); { то печатаем его фамилию }
{ в) Сортировка студентов по их рейтингу }
For K := 1 To M – 1 Do
For L := K + 1 To M Do
If St[L]. Rating > St[K]. Rating
Then Begin
Pst:= St[L];
St[L]:=St[K];
St[K]:=Pst
End;
{ вывод отсортированного списка}
Writeln (‘Список студентов в порядке убывания рейтинга:’);
For K := 1 To M Do
Writeln (Name:20, Group:5, Rating:7:2);
Readln
End.