- •Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- •Содержание
- •Лабораторная работа № 7. Одномерные массивы
- •Краткие теоретические сведения о массивах
- •7.1.1Понятие массив.
- •7.1.2Объявление массива.
- •7.1.3Передача массивов в процедуры и функции
- •7.1.4Операции с массивами.
- •Типовые процедуры и функции для работы с массивами
- •7.1.5Описание типа учебного массива
- •7.1.6Процедуры создания, ввода и вывода массивов
- •Процедура создания случайного массива
- •Процедура ввода массива из строки текста
- •Процедура ввода массива из компонента tMemo
- •Процедура ввода массива с помощью функции InputBox
- •Функция преобразования массива в строку символов
- •Процедура вывода массива в компонент tMemo
- •7.1.7Обработка массивов
- •Функция вычисления суммы элементов массива
- •Процедура определения минимального, максимального, и их индексов в массиве
- •Функция определения позиции элемента в массиве
- •Процедура удаления элементов из массива
- •Процедура переворота массива
- •Процедура циклического сдвига части элементов массива влево
- •Процедура формирования массива накопленных значений
- •Задание для самостоятельной работы
- •Содержание отчета.
- •Контрольные вопросы
- •Лабораторная работа № 8. Сортировка массивов
- •Методы сортировки массивов
- •7.1.8Сортировка выбором.
- •Пример сортировки массива по возрастанию методом выбора
- •Процедура сортировки массива методом выбора
- •7.1.9Сортировка обменом (метод пузырька)
- •Пример сортировки массива по возрастанию методом обмена
- •Процедура сортировки массива методом обмена
- •7.1.10Сортировка вставкой или включением.
- •Пример сортировки массива по возрастанию методом вставки
- •Процедура сортировки методом вставки
- •Сортировка по усложненным правилам
- •Обработка упорядоченных массивов
- •7.1.11Вставка элемента в отсортированный массив
- •7.1.12Слияние двух отсортированных массивов в один
- •7.1.13Поиск позиции элемента в отсортированном массиве
- •7.1.14Удаление элемента из отсортированного массива
- •Задание для самостоятельной работы
- •7.1.15Описание матриц
- •7.1.16Использование компонента StringGrid для ввода-вывода матриц
- •7.1.17 Тотальная обработка данных в матрицах
- •7.1.18Выборочная обработка матрицы
- •7.1.19Перестановки элементов матрицы
- •7.1.20Удаление и вставка элементов матрицы
- •7.1.21Сортировка элементов матрицы
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10. Работа с записями
- •Краткие теоретические сведения
- •7.1.22Объявление типа для записи
- •7.1.23Массивы записей
- •7.1.24Поля записей как массивы
- •7.1.25Сортировка массивов записей
- •7.1.26Ввод-вывод записей
- •Создание проекта «Результаты аттестации»
- •7.1.27Интерфейс пользователя для проекта
- •7.1.28Определение типов данных
- •7.1.29Инициализация интерфейса
- •7.1.30Добавление строки в таблицу
- •7.1.31Удаление строки из таблицы
- •7.1.32Процедура создания массива записей по содержимому StringGrid
- •7.1.33Процедура отображения массива в компоненте StringGrid
- •7.1.34Процедура сортировки массива записей по группе и фамилии
- •7.1.35Сортировка записей по количеству неудовлетворительных оценок и среднему баллу
- •7.1.36Выборка студентов какой-нибудь группы, имеющих средний балл выше 4
- •7.1.37Подсчет числа студентов, имеющих более 2-х неудовлетворительных оценок и вывод упорядоченного списка этих студентов
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11. Работа с типизироваными файлами
- •Краткие теоретические сведения
- •7.1.38Объявление файловой переменной
- •7.1.39Назначение файла файловой переменной
- •7.1.40Открытие файла
- •7.1.41Текущая позиция файла
- •7.1.42Чтение данных из файла
- •7.1.43Запись данных в файл
- •7.1.44Обрезка “хвоста” файла
- •7.1.45Закрытие и удаление файлов
- •Перечень основных процедур и функций для работы с типизированными файлами
- •Создание проекта «Результаты аттестации»
- •7.1.46Требования к проекту
- •7.1.47Интерфейс пользователя для проекта
- •7.1.48Определение типов данных
- •7.1.49Настройка интерфейса пользователя
- •7.1.50Вспомогательные процедуры для работы с файлом Процедура выбора имени файла
- •Процедура открытия файла
- •Процедура вывода файла в StringGrid
- •7.1.51Процедуры работы со StringGrid1
- •7.1.52Процедуры реализации пунктов меню fileMenu Добавление данных из StringGrid1 в файл
- •Поиск записи по фамилии
- •Удаление записи по фамилии
- •Сохранение файла под другим именем
- •7.1.53Процедуры для работы с упорядоченными файлами Процедура сортировки файла
- •Поиск записи в отсортированном файле
- •Добавление записи в отсортированный файл
- •Удаление записи из отсортированного файла
- •7.1.54Процедуры реализации пунктов меню sortMenu Реализация пункта меню «Сортировка файла по фамилиям»
- •Реализация пункта меню «Поиск студента по фамилии»
- •Реализация пункта меню «Добавление в упорядоченный файл из StringGrid1»
- •Реализация пункта меню «Удаление записи из отсортированного файла»
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12. Работа с текстовыми файлами
- •Краткие теоретические сведения
- •7.1.55Объявление файловой переменной для текстового файла
- •7.1.56Связывание файловой переменной с конкретным файлом
- •7.1.57Открытие файла
- •Создание нового файла
- •Открытие файла для чтения
- •Открытие файла для дополнения
- •7.1.58Текущая позиция файла
- •7.1.59Записи данных в файл.
- •7.1.60Чтение данных из файла
- •Особенности чтения чисел из текстового файла
- •Особенности чтения данных типа String
- •Особенности чтения и записи символов
- •7.1.61Закрытие и удаление файлов
- •Перечень основных процедур для работы с текстовыми файлами
- •Общая схема работы с текстовым файлом
- •7.1.62Примеры работы с текстовыми файлами
- •Пример ввода-вывода при решении простейшей задачи
- •Пример добавления данных из одного файла к другому
- •Пример чтение из файла в поле Memo
- •Пример ввода-вывода при работе с массивом
- •Пример ввода-вывода при работе с матрицей
- •Пример ввода-вывода при работе с записями
- •Задания для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованая литература
7.1.45Закрытие и удаление файлов
После окончания работы с файлом, его следует закрыть. Для закрытия используется процедура Close.
Обращение к этой процедуре выглядит так:
CloseFile ( <файловая переменная >);
При необходимости файл можно удалить. Для этого используется процедура Erase.
Обращение к этой процедуре выглядит так:
Erase ( <файловая переменная >);
Перечень основных процедур и функций для работы с типизированными файлами
Таблица 11.1 – Основные процедуры, обеспечивающие работу с файлами |
|
Назначение операции |
Синтаксис операции |
Определение имени |
AssignFile( <файловая переменная>, <имя файла> ) |
Создание (очистка) |
Rewrite( <файловая переменная > ) |
Установка в начало |
Reset( <файловая переменная > ) |
Закрыть файл |
CloseFile ( <файловая переменная > ) |
Удалить файл |
Erase( <файловая переменная > ) |
Размер файла |
FileSize(<файловая переменная >) |
Номер текущей записи |
FilePos(<файловая переменная >) |
Перейти к записи |
Seek( <файловая переменная >, <номер записи> ) |
Записать в текущую файловую позицию |
Write(<файловая переменная >, <переменная соотв. типа>) |
Читать из текущей файловой позиции |
Read(<файловая переменная >, <переменная соотв. типа> |
Обрезать «хвост» |
Truncate(<файловая переменная >) |
Конец файла |
Eof( <файловая переменная > ) |
Создание проекта «Результаты аттестации»
В этом проекте мы будем работать с файлом, содержащим информацию о результатах аттестации студентов. Каждая запись файла будет хранить информацию о группе студента, фамилии, количестве неудовлетворительных оценок и среднем балле. С подобными записями мы уже познакомились в прошлой лабораторной работе, но там информация хранилась в массиве, здесь же мы будем использовать файл.
Реализация проекта находится в папке kid\pub\subject\1_kurs\ projectToLection\.To_lection_18_19.
Данный проект можно рассматривать как пример выполнения задания к самостоятельной работе. Точного следования этому образцу от студента не требуется.
7.1.46Требования к проекту
Проект должен обеспечить:
Просмотр записей файла в StringGrid.
Добавление группы записей из StringGrid к файлу.
Поиск записи по заданной фамилии .
Удаление записи.
Подсчет количества отличников в файле.
Сохранение файла под другим именем.
Сортировку файла по фамилиям и по результатам успеваемости.
Вставку записи в упорядоченный файл.
Удаление записи из упорядоченного файла.
7.1.47Интерфейс пользователя для проекта
Интерфейс разрабатываемого проекта представлен на рисунке 11.2. Интерфейс проекта предполагает, что исходная информация, которую необходимо добавить к файлу, будет храниться в ячейках компонента StringGrid1. Содержимое файла будет отображаться в компоненте StringGrid2. Результаты сортировки файла и результаты обработки отсортированного файла будут записываться в компонент StringGrid3.
Рисунок 11.2 – Интерфейс проекта
Каждый из этих компонентов имеет встроенное меню (popupMenu), которое будет появляться при нажатии правой кнопки мышки, если курсор находится в поле компонента. Компонент PopupMenu расположен на закладке Standard палитры компонентов. Он видим только во время конструирования формы, и может располагаться где угодно. Для того чтобы связать это меню с каким-то компонентом, следует настроить свойство PopupMenu этого компонента, выбрав нужное меню из списка. Во избежание путаницы, следует внимательно подходить к наименованию меню. В нашем проекте будут использоваться названия для меню компонентов StringGrid и их функций приведенные в таблице 11.2.
Таблица 11.2 – Названия пунктов меню интерфейса пользователя |
|||
Компонент |
Имя PopupMenu |
Назначение пункта меню (Caption) |
Имя (Name) пункта меню |
StringGrid1 |
gridMenu |
Добавить строку к StringGrid1 |
mnuAddRow |
Удалить текущую строку из StringGrid1 |
mnuDelRow |
||
StringGrid2 |
fileMenu |
Показать файл |
mnuShowFile |
Добавить в файл из StringGrid1 |
mnuAddToFile |
||
Найти запись по фамилии |
mnuFindFam |
||
Удалить запись по фамилии |
mnuDelFam |
||
Подсчет количества отличников |
mnuCalc5 |
||
Сохранение файла под другим именем |
mnuSaveAs |
||
StringGrid3 |
sortMenu |
Упорядочить по фамилии |
mnuSortFam |
Найти по фамилии |
mnuFindInSort |
||
Удалить запись |
mnuDelInSort |
||
Добавить записи из StringGrid1 |
mnuAddToSort |
Для того чтобы настроить нужные функции меню следует сделать двойной щелчок по пиктограмме меню и в появившемся диалоге выделить свободную строку для пункта меню. Затем в инспекторе объектов настроить свойства Caption и Name.
Каждый пункт в PopupMenu является объектом, поэтому с ним связаны не только свойства Caption и Name но и событие onClick. Шаблон функции обработки этого события можно создать, используя закладку Events инспектора объектов.
Для удобства выбора имени файла в конструкторе формы, показанном на рисунке 11.2, предусмотрены компоненты OpenDialog и SaveDialog которые можно найти на закладке Dialogs палитры компонентов. Первый из них будет вызываться при нажатии кнопки «Имя файла» для выбора имени файла при его открытии, а второй при вызове функции меню «Сохранение файла под другим именем».