- •Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- •Содержание
- •Лабораторная работа № 7. Одномерные массивы
- •Краткие теоретические сведения о массивах
- •Понятие массив
- •Объявление массива
- •Описание типа учебного массива
- •Процедуры создания, ввода и вывода массивов
- •Процедура создания случайного массива
- •Передача массивов в процедуры и функции
- •Операции с массивами
- •Типовые процедуры и функции для работы с массивами
- •Процедура ввода массива из строки текста
- •Процедура ввода массива из компонента tMemo
- •Процедура ввода массива с помощью функции InputBox
- •Функция преобразования массива в строку символов
- •Процедура вывода массива в компонент tMemo
- •Обработка массивов
- •Функция вычисления суммы элементов массива
- •Процедура определения минимального, максимального, и их индексов в массиве
- •Функция определения позиции элемента в массиве
- •Процедура удаления элементов из массива
- •Процедура переворота массива
- •Процедура циклического сдвига части элементов массива влево
- •Процедура формирования массива накопленных значений
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 8. Сортировка массивов
- •Методы сортировки массивов
- •Сортировка выбором
- •Пример сортировки массива по возрастанию методом выбора
- •Процедура сортировки массива методом выбора
- •Сортировка обменом (метод пузырька)
- •Пример сортировки массива по возрастанию методом обмена
- •Процедура сортировки массива методом обмена
- •Сортировка вставкой или включением
- •Пример сортировки массива по возрастанию методом вставки
- •Процедура сортировки методом вставки
- •Сортировка по усложненным правилам
- •Обработка упорядоченных массивов
- •Вставка элемента в отсортированный массив
- •Слияние двух отсортированных массивов в один
- •Поиск позиции элемента в отсортированном массиве
- •Удаление элемента из отсортированного массива
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 9. Работа с двумерными массивами (матрицами)
- •Краткие теоретические сведения
- •Описание матриц
- •Использование компонента StringGrid для ввода-вывода матриц
- •Тотальная обработка данных в матрицах
- •Выборочная обработка матрицы
- •Перестановки элементов матрицы
- •Удаление и вставка элементов матрицы
- •Сортировка элементов матрицы
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10. Работа с записями
- •Краткие теоретические сведения
- •Объявление типа для записи
- •Массивы записей
- •Поля записей как массивы
- •Сортировка массивов записей
- •Ввод-вывод записей
- •Создание проекта «Результаты аттестации»
- •Интерфейс пользователя для проекта
- •Определение типов данных
- •Инициализация интерфейса
- •Добавление строки в таблицу
- •Удаление строки из таблицы
- •Процедура создания массива записей по содержимому StringGrid
- •Процедура отображения массива в компоненте StringGrid
- •Процедура сортировки массива записей по группе и фамилии
- •Сортировка записей по количеству неудовлетворительных оценок и среднему баллу
- •Выборка студентов какой-нибудь группы, имеющих средний балл выше 4
- •Подсчет числа студентов, имеющих более 2-х неудовлетворительных оценок и вывод упорядоченного списка этих студентов
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11. Работа с типизироваными файлами
- •Краткие теоретические сведения
- •Объявление файловой переменной
- •Назначение файла файловой переменной
- •Открытие файла
- •Текущая позиция файла
- •Чтение данных из файла
- •Запись данных в файл
- •Обрезка “хвоста” файла
- •Закрытие и удаление файлов
- •Перечень основных процедур и функций для работы с типизированными файлами
- •Создание проекта «Результаты аттестации»
- •Требования к проекту
- •Интерфейс пользователя для проекта
- •Процедура открытия файла
- •Определение типов данных
- •Настройка интерфейса пользователя
- •Вспомогательные процедуры для работы с файлом Процедура выбора имени файла
- •Процедура вывода файла в StringGrid
- •Процедуры работы со StringGrid1
- •Процедуры реализации пунктов меню fileMenu Добавление данных из StringGrid1 в файл
- •Поиск записи по фамилии
- •Удаление записи по фамилии
- •Сохранение файла под другим именем
- •Процедуры для работы с упорядоченными файлами Процедура сортировки файла
- •Поиск записи в отсортированном файле
- •Добавление записи в отсортированный файл
- •Удаление записи из отсортированного файла
- •Процедуры реализации пунктов меню sortMenu Реализация пункта меню «Сортировка файла по фамилиям»
- •Реализация пункта меню «Поиск студента по фамилии»
- •Реализация пункта меню «Добавление в упорядоченный файл из StringGrid1»
- •Реализация пункта меню «Удаление записи из отсортированного файла»
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12. Работа с текстовыми файлами
- •Краткие теоретические сведения
- •Объявление файловой переменной для текстового файла
- •Связывание файловой переменной с конкретным файлом
- •Открытие файла
- •Создание нового файла
- •Открытие файла для чтения
- •Открытие файла для дополнения
- •Текущая позиция файла
- •Записи данных в файл.
- •Чтение данных из файла
- •Особенности чтения чисел из текстового файла
- •Особенности чтения данных типа String
- •Особенности чтения и записи символов
- •Закрытие и удаление файлов
- •Перечень основных процедур для работы с текстовыми файлами
- •Общая схема работы с текстовым файлом
- •Примеры работы с текстовыми файлами
- •Пример ввода-вывода при решении простейшей задачи
- •Пример добавления данных из одного файла к другому
- •Пример чтение из файла в поле Memo
- •Пример ввода-вывода при работе с массивом
- •Пример ввода-вывода при работе с матрицей
- •Пример ввода-вывода при работе с записями
- •Задания для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •РекомендоваНная литература
-
Массивы записей
Из записей может быть создан массив, точно так же как из данных других типов. Например, если мы хотим иметь результаты аттестации для всех студентов, можно создать массив соответствующих записей.
type
TAttArray = array[1..100] of TAttRec;
При обращении к элементу массива записей также используются индексы, заключаемые в квадратные скобки. При этом следует учитывать, что элементом массива является запись и, поэтому, квадратные скобки ставятся после имени записи, а затем, через точку, записывается имя поля.
Например.
var a: TAttArray;
…
a[1].fio:=’Петренко А,П,’;
a[1].gr := ‘КС041’;
a[1].srBall := ‘3.2’;
-
Поля записей как массивы
Поля записей могут содержать не только данные простых типов, но и структуры данных. В частности поле записи может быть массивом определенного типа.
Ниже описан другой вариант типа записи, который предусматривает наличие массива оценок в записи вместо среднего балла.
type
TMarkArray = array[1..10] of integer;
TAttRecord = record
Fio : String[20]; Gr : String[5]; marks : TMarkArray;
end;
При обращении к элементам массива, являющегося полем записи квадратные скобки с индексом следует ставить уже после имени поля.
Например.
var r: TAttRecord;
…
r.mark[1]:=5;
Поля в виде массивов могут содержаться и в массивах записей. В этом случае для того, чтобы обратиться к элементу поля-массива, нужна двойная индексация. Нужно указать номер записи и номер элемента в поле. Правила индексации в этом случае те же, что были описаны выше.
Рассмотрим пример, в котором описан массив результатов модульного контроля с массивами оценок.
type
TMarkArray = array[1..10] of integer;
TAttRecord = record
Fio : String[20]; Gr : String[5]; marks : TMarkArray;
end;
TAttArray=array[1..100] of TAttRecord;
var a: TAttArray;
…
a[15].mark[6]:=5;
Здесь в запись под номером 15 заносится пятерка по предмету под номером 6.
-
Сортировка массивов записей
Сортировка массива записей производится так же, как и сортировка массива чисел, то есть записи сравниваются и, если необходимо, переставляются. Единственная проблема здесь заключается в том, что способов сравнения записей, а, следовательно, и вариантов сортировки, может быть много, и каждый из них может понадобиться. Так для массива, рассмотренного в предыдущем примере, записи можно сортировать по фамилии студента или по среднему баллу, найденному из массива оценок, по количеству неудовлетворительных оценок и т.д. Более того, возможны и более сложные случаи сортировки, например, по группе, а в пределах одной группы по фамилии студента.
В такой ситуации приходится для каждого варианта сортировки написать свои процедуры, которые будут отличаться только способом сравнения записей.
-
Ввод-вывод записей
При организации ввода-вывода следует иметь в виду, что непосредственно запись ввести или вывести, без использования специально написанных процедур, нельзя. Можно вводить или выводить отдельные поля записи, или элементы полей, если поля имеют сложную структуру.
Ввод-вывод записей похож на ввод-вывод матриц, но разница здесь в том, что столбцы могут иметь различные типы, и доступ к элементам различных столбцов производится не по индексу, а по названию.
Исходя из изложенных особенностей, можно рекомендовать вводить и выводить записи через компонент TStringGrid. Нулевую строку компонента целесообразно использовать для вывода названий полей, а в следующей строке выводить или выводить их значения. При работе с массивом технология работы остается та же. Количество столбцов и строк компонента, а также названия полей в нулевой строке можно задать программно, при загрузке формы.
При вводе массива, компонент должен быть настроен так, чтобы количество строк было достаточным для ввода всех записей, то есть должен быть запас. В этом случае, признаком конца массива записей может служить пустая ячейка первого поля записи.
Возможен и другой вариант ввода, при котором перед добавлением очередной записи вызывается процедура увеличения количества строк в компоненте TStringGrid. В этом случае о размере массива можно судить по количеству строк в компоненте. Этот вариант на наш взгляд предпочтительнее, но требует написания дополнительной процедуры.
При выводе массива записей количество строк компонента TStringGrid можно настраивать программно, в соответствии с количеством записей в массиве.
