- •5В070300 «Информационные системы»
- •Введение
- •Содержание отчета
- •Лабораторная работа № 1
- •1 Порядок выполнения лабораторной работы:
- •Постановка задачи
- •Методические указания
- •2 . Пример
- •Лабораторная работа № 2
- •1 Содержание работы
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2. Пример
- •Лабораторная работа№ 3
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Часть вторая: Оператор выбора
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Группа а Таблица 7
- •Группа в
- •2. Примеры
- •Лабораторная работа№ 4
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2 Примеры
- •For (выражение1; выражение2;выражение3) {операторы; }
- •Лабораторная работа№ 5
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2. Примеры
- •3. Сортировка элементов массива
- •Сортировка выбором
- •3.2. Сортировка вставкой
- •3.3. Сортировка методом прямого выбора
- •3.4. Сортировка методом обмена
- •4. Указатели и одномерные массивы
- •Лаборатоная работа № 6
- •1 Порядок выполнения лабораторной работы:
- •2. Методические указания
- •3. Указатели и двумерные массивы
- •Лабораторная работа № 7
- •1 Порядок выполнения лабораторной работы:
- •Задание на строки
- •2.Краткие теоретические сведения
- •Лаборатоная работа № 8
- •1 Порядок выполнения лабораторной работы:
- •2. Теоретические сведения
- •Год рождения – 1978
- •Лабораторная работа № 9
- •1 Порядок выполнения лабораторной работы:
- •2. Примеры
- •Лабораторная работа № 10
- •1 Порядок выполнения лабораторной работы:
- •1.3. Задание для выполнения
- •2. Примеры
- •Лабораторная работа № 11
- •1 Порядок выполнения лабораторной работы:
- •1.3. Задание для выполнения
- •Лабораторная работа № 12
- •1 Порядок выполнения лабораторной работы:
- •2. Краткие теоретические сведения Объектно-ориентированный подход
- •Сущности и Объекты
- •Система типов
- •Инкапсуляция
- •Пример класса
- •Создание объектов. Конструкторы и деструктор
- •Наследование
- •Перегрузка функций
- •Полиморфизм
- •Функции-друзья
- •Абстрактные классы
- •Дополнительные возможности
- •Индивидуальные задания
- •2.1. Пример решения задания
- •Int windForce; // Сила ветра в баллах
- •Int startHeight; // Начальная высота
- •Int fuel; // Запас топлива
- •Результат выполнения программы:
- •Разновидности списков
- •Контрольные вопросы
- •Задание
- •Литература
- •Лабораторная работа № 9 Тема: Множества в Паскале.
- •Общие сведения
- •Лабораторная работа № 8 Тема: Применение записей в составлении программ.
- •Теоретические сведения
- •Задание
- •Контрольные вопросы.
- •Литература.
- •Список использованной литературы
Лабораторная работа № 8 Тема: Применение записей в составлении программ.
Цель работы: Познакомиться с понятием «запись», научиться применять записи в составлении программ.
Теоретические сведения
В настоящее время вычислительная техника находит широкое применение в различного рода информационных системах. Они имеются в больших библиотеках, торговле, производстве, адресных бюро и т.д. В информационных системах довольно часто приходится иметь дело с комбинациями разнотипных объектов. В Паскале комбинациями разного типа являются записи. Составляющие запись объекты называются полями. В записи каждое поле имеет своё собственное имя. Упрощённая форма определения записи включает указание имени записи, имён отдельных компонентов (полей) и соответствующих им типов данных.
TYPE
< имя записи >=
RECORD
< имя поля 1 > : < тип >
< имя поля 2 > : < тип >
…………………………
< имя поля N > : < тип >
END;
Например, для решения задачи определения среднего балла, имея данные по пяти дисциплинам для конкретного студента, запись может иметь вид:
TYPE
STR =
RECORD
FAM: STRING[20];
B1, B2, B3, B4, B5 :1..5;
SB : REAL;
END;
Здесь FAM обозначает строку символов для хранения фамилии студента, В1, B2, B3, B4, B5 – баллы по соответствующим дисциплинам, SB – средний балл. Переменная типа STR имеет смысл записи, содержащей информацию об одном студенте. Организация этой структуры показана на рис.1.
Рис. 1
Вещественныйтип
Если требуется хранить информацию не по одному студенту, а по 25, то можно ввести массив записей TBL:
VAR
TBL: ARRAY [1..25] OF STR;
Обращение к полям записи осуществляется посредством составного имени:
<имя переменной-записи>.<имя поля>
Возможны, например, такие операторы присваивания :
TBL[ 3 ].FAM:= “Иванов”;
TBL[ 20 ].B2:=5;
TBL[ K+1 ].SB:=4.666;
Имена компонентов внутри записи не должны повторяться. Значения записи можно пересылать в другие переменные – записи с помощью операторов присваивания. Возвращаясь к рассмотренному примеру, можно записать:
TYPE
STR=
RECORD
FAM : STRING[20]; B1, B2, B3, B4, B5 :2..5;
SB : REAL
END;
VAR Z1, Z2 : STR;
BEGIN
- - - - - - - -
Z1:=Z2;
Указанный в программе оператор присваивания эквивалентен следующим операторам :
Z1.FAM := Z2.FAM;
Z1.B1 := Z2.B2;
Z1.B2 := Z2.B2;
Z1.B3 := Z2.B3;
Z1.B4 := Z2.B4;
Z1.B5 := Z2.B5;
Z1.SB := Z2.SB;
Составим программу для нахождения среднего балла для каждого студента группы, состоящей из 25 человек.
PROGRAM BAL;
TYPE STR=
RECORD
FAM : STRING[20];
B1, B2, B3, B4, B5 : 1..5;
SB : REAL;
END;
VAR
TBL : ARRAY [ 1..25 ] OF STR;
I: INTEGER;
BEGIN
FOR I:=1 TO 25 DO { Цикл для ввода фамилий всех 25
BEGIN студентов и их оценок по 5
READLN (TB < [ I ].FAM); дисциплинам}
READLN (TBL [ I ],B1;
READLN TBL [ I ],B2;
READLN TBL [ I ],B3;
READLN TBL [ I ],B4;
READLN TBL [ I ],B5);
END;
FOR I:= 1 TO 25 DO {Цикл для выч-я и вывода сред.балла}
BEGIN {Вычисление среднего балла}
TBL [ I ].SB:=(TBL [ I ].B1+TBL [ I ].B2+
TBL [ I ].B3+TBL[ I ].B4+TBL[ I ].B5;
{Вывод среднего балла}
WRITELN (TBL[ I ].SB)
END;
END.
При обращении к компонентам записи мы сталкиваемся с необходимостью указать в отдельных операторах составных имён, что приводит к удлинению программы и излишней громоздкости. Для устранения этого неудобства в языке Паскаль используется оператор WITH, который позволяет осуществлять доступ к компонентам записи таким образом, как если бы они были простыми переменными.
Общий вид оператора:
With < имя записи > do
< оператор >;
Внутри оператора к компонентам записи можно обращаться только с помощью имени компоненты. Например, ввод исходных данных для отдельных компонент записи TBL в предыдущей программе может быть организован следующим образом:
FOR I:=1 TO 25 DO
WITH TBL [ I ] DO
READ (FAM,B1,B2,B3,B4,B5);
Рассмотрим более сложную задачу, в которой требуется не только определить средний балл, но и упорядочить список студентов по убыванию среднего балла. Блок-схема алгоритма приведена на рисунке 2. Содержание 1,2,3, блоков не требует пояснений. В блоках с 4 по 9 осуществляется упорядочивание массива по убыванию среднего балла.
Идея алгоритма заключается в том, что в цикле (блок 4) берётся каждый i-тый компонент массива (по которому осуществляется упорядочивание) и его номер (блок 5). Далее в цикле (блок 6) происходит сравнение (блок 7) этого элемента со всеми последующими элементами массива. Если очередной элемент меньше выбранного то цикл повторяется, в противном случае меняются значения переменных K и X, X получает большее из сравниваемых значение, а K – его номер.
Таким образом, после окончания его цикла переменная X содержит наибольшее из просмотренных значений, а переменная K – его номер. В блоке 9 осуществляется замена очередного i-го элемента на найденный максимальный, а i-ый элемент занимает место максимального и процесс повторяется. Смысл блоков 10 и 11 понятен из блок – схемы.
PROGRAM SBAL;
TYPE
STR=
RECORD
FAM : STRING [ 15 ];
B1, B2, B3, B4, B5 : 2..5;
SB : REAL;
END;
VAR TBL : ARRAY [ 1..25 ] OF STR;
Y:STR;
I,Y,K,M : INTEGER;
X : REAL;
BEGIN
READLN ( M ); {Ввод числа записей в массиве}
FOR I:= 1 TO M DO
WITH TBL [ I ] DO
BEGIN
READLN ( FAM );
READLN (B1, B2, B3, B4, B5);
END;
FOR I:=1 TO M DO
WITH TBL [ I ] DO
SB:=(B1+B2+B3+B4+B5)/5; {Вычисление сред. балла}
F
OR
I:=1 TO M-1 DO
BEGIN
K:=1;
X:=TBL [ I ].SB;
FOR J:= I+1 TO M DO
IF TBL [J].SB>X
THEN BEGIN
K:=J;
X:=TBL [ J].SB
END
Y:=TBL [ K ]; TBL [ K ]:=TBL [ I ]; TBL [ I ]:=Y
END;
END.
Для иллюстраций более сложной записи рассмотри пример, в котором в памяти ЭВМ требуется сохранить анкетные данные представленные в виде таблицы на рис.
-
Анкета
П/ П
Ф.И.О.
Дата рождения
Пол
Фамилия
Имя
Отчество
Год
Месяц
Число
Рис.3
Обозначим запись через идентификатор ANKETA, который определим в разделе описания переменных следующим образом:
TYPE
ANKETA=
RECORD
NPP: INTEGER;
FIO:
RECORD
FAM, IM, OT: STRING [15] ;
END;
DR:
RECORD
COD: 1900..2000;
MES: STRING [8];
DEN: 1..31
END;
POL: STRING[3];
END;
Элементами записи ANKETA являются также записи FIO и DR.В результате получается сложная запись, которая представлена на рис.4.
Рис. 4.
Если была бы необходимость хранить анкетные данные 100 человек, то либо запись ANKETA должна быть объявлена как массив с числом элементов 100, либо каждый элемент второго уровня должен иметь размерность 100.
При обращении к вложенным записям можно использовать оператор with, имеющий вложенную структуру с любой степенью вложенности. Например, обращение к полю ГОД происходит с помощью составного имени ANKETA.DR.GOD , а с использованием оператора присваивания следующей конструкций:
WITH ANKETA DO
WITH DR. DO
GOD: =1965;
Или несколько проще:
WITH ANKETA. DR . DO GOD: =1965;
Использование оператора WITH существенно облегчает написание программ и делает более эффективным многократное обращение к полям одной записи.
