- •Основы алгоритмизации и программирования
- •Введение
- •1.1. Структура программы
- •1.2. Типы данных
- •1.2.1. Целый тип данных
- •1.2.2. Логические типы данных – Boolean
- •1.2.3. Данные символьного типа
- •1.3. Операторы языка программирования Турбо Паскаль
- •1.3.1. Операции в Турбо Паскаль
- •1.3.2. Правила вычисления выражений
- •1.3.3. Встроенные функции в Турбо Паскаль
- •1.3.4. Описание констант и переменных
- •1.3.5. Операторы в Турбо Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №1 Организация программ линейных структур
- •Варианты заданий
- •2. Организация форматного вывода данных на языке Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №2 Организация ввода-вывода данных на языке Паскаль
- •Методические указания
- •Варианты задания
- •3. Организация программ разветвляющихся структур
- •3.1. Полная форма условного оператора
- •3.2. Краткая форма условного оператора
- •Вопросы для самопроверки
- •Лабораторная работа №3 Организация программ разветвляющихся структур
- •Варианты заданий
- •4. Организация циклических процессов
- •Лабораторная работа №4 Составление циклических программ
- •Варианты заданий
- •Методические указания
- •Варианты заданий
- •5. Программирование структур с вложенными циклами
- •Вопросы для самопроверки
- •Лабораторная работа №5 программирование структур с вложенными циклами. Вычисление суммы ряда
- •Методические указания
- •Варианты заданий
- •6. Перечислимые и ограниченные типы данных
- •6.1 Перечислимый тип данных
- •6.2. Ограниченный тип данных
- •6.3. Оператор выбора (варианта)
- •Вопросы для самопроверки
- •Лабораторная работа №6 Перечислимые и ограниченные типы данных
- •Варианты заданий.
- •7. Регулярные типы данных
- •7.1. Одномерные массивы
- •7.1.1. Краткая форма объявления одномерного массива
- •7.1.2. Полная форма объявления одномерного массива
- •7.1.3. Доступ к элементам массива
- •Вопросы для самопроверки
- •Лабораторная работа №7_1 регулярные типы данных. Массивы
- •Варианты заданий
- •7.2. Двумерные массивы
- •Полная форма описания матрицы:
- •Формирование элементов случайным образом:
- •Формирование элементов матрицы при вводе с клавиатуры:
- •Фрагменты программ по обработке 2-х мерных массивов
- •Вопросы для самопроверки
- •Лабораторная работа №7_2 регулярные типы данных. МАтрицы
- •Варианты заданий
- •7.3. Сортировка элементов массива
- •7.3.1. Сортировка методом «пузырька»
- •7.3.2. Сортировка вставками
- •7.3.3. Сортировка посредством выбора
- •7.3.4. Быстрая сортировка
- •8. Составление программ с использованием подпрограмм
- •8.1. Область видимости идентификатора переменной
- •8.2. Подпрограммы - процедуры (procedure)
- •8.2.1. Формальные и фактические параметры
- •Вопросы для самопроверки
- •Лабораторная работа №8_1 составление программ с использованием подпрограмм - процедур
- •Методические указания
- •Варианты заданий
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Структура модуля
- •Interface
- •Implementation
- •Вопросы для самопроверки
- •10.2. Стандартные процедуры и функции для строк
- •10.3. Хранение строк
- •Вопросы для самопроверки
- •Лабораторная работа №10 обработка символьной информации
- •Варианты заданий
- •11. Комбинированные типы. Записи (Record)
- •11.1 Записи с фиксированными частями
- •11.2. Оператор with…do
- •11.3. Вариантные записи
- •Вопросы для самопроверки
- •Лабораторная работа №11 Комбинированные типы. Записи
- •Варианты заданий
- •12. Файлы
- •12.1. Классификация файлов
- •12.1.1. Чтение файла
- •12.1.2. Запись файла
- •Вопросы для самопроверки
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •Include (s, I);
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Горячие клавиши
- •Библиографический список
- •Оглавление Введение 3
- •1. Программирование на языке Паскаль 5
- •1.1. Структура программы 5
- •2. Организация форматного вывода данных на языке Паскаль 17
- •Лабораторная работа №7_1.
- •Лабораторная работа №7_2.
- •Лабораторная работа №8_2.
11. Комбинированные типы. Записи (Record)
Записи – это структурированный тип данных, позволяющий хранить вместе определённое число элементов (полей или переменных), имеющие различные типы данных. Под структурой данных обычно понимают данные, объединённые в упорядоченное множество.
Записи удобны при обработке взаимосвязанных однородных данных.
Элементами записи могут быть и структурированные типы данных, например, массивы и вложенные записи. Для того чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Объявить запись можно в разделе var и в разделе type. Для описания переменных типа «запись» используется зарезервированное слово record.
Полный формат объявления переменной типа «запись»:
type
<имя_типа> = record
имя_поля1 : тип;
имя_поля2 : тип;
…
имя_поляN: тип;
end;
var
<имя_записи> : <имя_типа>;
Краткий формат объявления переменной типа «запись»:
var
<имя_записи> : record
имя_поля1 : тип;
имя_поля 2 : тип;
…
имя_поля N: тип;
end;
Здесь, <имя_типа>, <имя_записи> и имя_поляN - правильные идентификаторы. В описании указывается идентификатор каждого поля и его тип.
Например, переменная "Клиенты" типа записи "Клиент":
{полный формат объявления переменной}
type
CLIENT = record // Клиент
family : string[20]; // Фамилия
name : string[10]; // Имя
patronymic : string[15]; // Отчество
year_birthday : integer; // Год рождения
address : string[30]; // Адрес
telephone : integer; // Телефон
end;
var
clients:CLIENT;
или {краткий формат объявления переменной}
var
CLIENT : record // Клиент
family : string[20]; // Фамилия
name : string[10]; // Имя
patronymic : string[15]; // Отчество
year_birthday : integer; // Год рождения
address : string[30]; // Адрес
telephone : integer; // Телефон
end;
Запись, описанная через var, называется «анонимной».
В Паскале различают:
записи с фиксированными частями и
записи с вариантами (с переменными частями).
11.1 Записи с фиксированными частями
Записи с фиксированными частями называются так, потому, что в различных ситуациях имеют одинаковую структуру.
Например, запись "Личная карточка студента" может быть описана с помощью записи с фиксированными частями:
type
student = record
family : string[20];
name : string[10];
patronymic : string[15];
year_birthday : integer;
number_of_group : integer; // Номер группы
Predmet1 : byte; // МатАнализ
Predmet2 : byte; // ИнжГрафика
Predmet3 : byte; // Химия
Predmet4 : byte; // Информатика
end;
Если поля несут одинаковую смысловую нагрузку, то их целесообразно объединить в отдельную структуру типа record.
Пример 11.1.
type student = record
family :string[20];
family : string[20];
name : string[10];
patronymic : string[15];
year_birthday : integer;
number_of_group : integer; // Номер групп
valuation = record // Оценки
Predmet1 : byte; // МатАнализ
Predmet2 : byte; // ИнжГрафика
Predmet3 : byte; // Химия
Predmet4 : byte; // Информатика
end;
end;
group = array[1..25] of student;
var
group1, group2 : group;
Пример 11.2.
type
valuation = record // Оценки
Predmet1 : byte; // МатАнализ
Predmet2 : byte; // ИнжГрафика
Predmet3 : byte; // Химия
Predmet4 : byte; // Информатика
end;
student = record
family : string[20];
name : string[10];
patronymic : string[15];
year_birthday : integer;
number_of_group : integer;
// Оценки за прошедший семестр
valuation_of_last_half_year : valuation;
end;
group = array[1..25] of student;
var
group1,group2 :group;
Переменные типа record могут участвовать в операторах присваивания, но никакие операции над ними не допускаются. Арифметические или какие-либо другие операции могут выполняться только над отдельными полями записи.
К каждому из компонентов записи можно получить доступ, если использовать составное имя, то есть указать имя переменной, затем точку и имя поля.
Например, Client.name := “Mary”; или
Group1[1].family := “Ivanov”;
Для вложенных полей приходиться продолжать уточнения.
Например,
Group2[2]. Valuation_of_last_half_year.Predmet1 := 5;