- •Содержание
- •1Алгоритмы линейных структур
- •2 Циклы
- •Введение
- •1 Алгоритмы линейных структур
- •1.1 Этапы разработки программы
- •1.2 Основные понятия
- •1.3 Основная структура программы
- •1.4 Алфавит языка
- •1.5 Идентификаторы
- •1.6 Константы
- •1.7 Понятие переменной Типы
- •1.8 Оператор присваивания Арифметические выражения
- •1.9 Операторы ввода и вывода информации
- •1.10 Практические задачи
- •1.11 Примеры решения задач
- •2 Циклы
- •2.1 Цикл с предусловием
- •Цикл с постусловием
- •Цикл со счетчиком
- •2.2 Задачи
- •2.3 Примеры
- •3 Немного об алгоритмах Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера – Мура
- •Алгоритм Рабина
- •Алгоритмы сортировки
- •Метод пузырька.
- •Сортировка выбором
- •Метод Шелла
- •Метод Хoopа
- •3.1 Разветвляющиеся алгоритмы
- •3.2 Задачи Свойства и виды треугольников (задачи 1-4)
- •Свойства и виды четырехугольников (задачи 5, 6)
- •Каким будет значение переменной а после выполнения фрагмента программы с составным оператором?
- •4 Массивы
- •4.1 Объявление массива
- •4.2 Действия над массивами
- •4.3 Вывод массива
- •4.4 Ввод массива
- •4.5 Сортировка массива
- •4.6 Поиск в массиве
- •4.7 Поиск минимального (максимального) элемента массива
- •4.8 Многомерные массивы
- •4.9 Ошибки при использовании массивов
- •4.10 Практические задачи
- •5 Множества
- •5.1 Описание типа множество
- •5.2 Операции над множествами
- •5.3 Группы операций
- •5.4 Упражнения
- •5.5 Задачи Тема: Множества
- •6 Записи
- •6.1 Понятие записи
- •6.2 Оператор присоединения With ... Do
- •6.3 Вариантные записи
- •6.4 Работа с файлами записей
- •6.5 Задачи
- •7 Файлы
- •7.1 Работа с файлами
- •7.2 Текстовые файлы
- •7.3 Типизированные файлы
- •7.4 Нетипизированные файлы
- •7.5 Задачи
- •8 Графика
- •8.1 Графика в Турбо Паскале
- •8.2 Базовые процедуры и функции
- •Процедуры модуля Graph
- •Функции модуля Graph
- •8.3 Экран и окно в графическом режиме
- •8.4 Вывод простейших фигур
- •8.5 Графические процедуры
- •8.6 Построение прямоугольников
- •8.7 Построение многоугольников
- •8.8 Построение дуг и окружностей
- •8.9 Работа с текстом
- •8.10 Построение графиков функций
- •8.11 Циклы в графике. Построение случайных процессов
- •8.12 Создание иллюзии движения
- •Задания
- •Контрольные тесты
- •1. Программирование алгоритмов линейных структур
- •2. Программирование алгоритмов разветвляющейся структуры
- •3. Программирование алгоритмов циклических структур
- •4. Массивы
- •5. Множества
- •6. Записи
- •7. Файлы
- •8. Графика
6 Записи
6.1 Понятие записи
Во многих экономических и информационных задачах обрабатываются ведомости, документы, каталоги, списки. При этом появляется необходимость объединять данные различного типа в одну группу. Для работы с группой данных в языке Паскаль введено понятие записи. Запись - это структура данных, состоящая из фиксированного числа компонентов разного типа. Составляющие запись компоненты называется полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются. Записной тип еще называют комбинированным типом.
Записный тип данных предоставляет программисту возможность объединить в одну связанную структуру различные по типу и смыслу элементы. Элементами записи могут быть и структурированные типы данных, например массивы и другие подчиненные записи. Для обработки доступна как вся запись целиком, так и отдельные ее поля.
Понятие записи рассмотрим на примере ведомости списка учащихся с их оценками.
№ |
Ф И О |
ОЦЕНКИ |
1 2 |
Елисеев О.Д. Кошкин О.А. |
5 3 |
Каждая строка в этой ведомости состоит из отдельных элементов данных различного типа:
а) порядковый номер - целое десятичное число;
б) Фамилия И. О. - массив символов;
в) оценки - массив целых чисел.
Эти данные можно объединить в одну группу и считать записью. Введем следующие обозначения: В - имя всей записи; п -, порядковый номер; fio -фамилия, имя, отчество; mark - оценки.
Обращение к элементу записи в программе выполняется с помощью уточненного (составного) имени. Уточненное имя содержит имя записи и имя элемента и записывается в следующем виде:
имя записи имя элемента.
Записи, как и другие данные, объявляются в разделе описаний и используются в разделе операторов.
Структура объявления типа записи такова:
<имя типа> = record <список полей> end
Здесь <имя типа> - правильный идентификатор; record, end -зарезервированные слова (запись, конец); <список полей> - последовательность разделов записи, между которыми ставится точка с запятой. Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей).
Общий вид описания типа Record
TYPE
T=Record
ID11, ID12, …, ID1n : Type1;
ID21, ID22, …, ID2n : Type2;
ID31, ID32, …, ID1n : Type3;
…
IDk1, IDk2, …, IDkn : Typek
End;
Где Idij – идентификаторы полей;
Type i – тип полей;
T – имя поля.
Для представленной ведомости объявление записи выглядит следующим образом:
type list = record n : integer;
fio : array [1..'!0] of Char;
mark : array [1..3] of integer end;
var В : list;
Возможно объявление записи в разделе переменных:
var В : record n : integer;
fio : array [1..20] of char;
mark : array [1..3] of integer end;
Элемент записи используется в программе в том же самом смысле, как
и обычная переменная. Элемент записи можно указывать как в левой
части оператора присваивания, так и в выражениях. Над элементом
записи можно выполнять действия, допустимые для данных его типа.
Если тип элемента записи - целый, то выполняются все операции,
допустимые для целых данных. Для рассмотренной ведомости над элементами записи можно произвести, например, следующие операции:
порядковому номеру n записи В присвоить значение 2:
В.п := 2;
найти сумму трех оценок:
s := B mark [1] + В.mark [2] + B mark [3];
ввести значения порядкового номера:
read (B.n).
Обращение к записи в целом, а не только к ее элементам, допускается
лишь в операторе присваивания. Слева и справа от знака присваивания при этом должны использоваться имена записей одинакового типа.
Объявим тип birthday, содержащий три поля с именами day, month и year;
переменные а и b содержат записи типа birthday; с - запись, содержащая в качестве элемента подчиненную запись.
type
birthday = record
day.month : byte;
year : word
end;
var a,b : birthday;
с : record
name : string;
bd : birthday end;
В этом случае возможно а := b; a.day>:= 27; b.year := 1939; для вложенных
полей необходимо продолжать уточнения: c.bd.year, c.bd.day, с.bd.month.