- •Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- •Содержание
- •Лабораторная работа № 7. Одномерные массивы
- •Краткие теоретические сведения о массивах
- •Понятие массив
- •Объявление массива
- •Передача массивов в процедуры и функции
- •Операции с массивами
- •Типовые процедуры и функции для работы с массивами
- •Описание типа учебного массива
- •Процедуры создания, ввода и вывода массивов
- •Процедура создания случайного массива
- •Процедура ввода массива из строки текста
- •Процедура ввода массива из компонента tMemo
- •Процедура ввода массива с помощью функции InputBox
- •Функция преобразования массива в строку символов
- •Процедура вывода массива в компонент tMemo
- •Обработка массивов
- •Функция вычисления суммы элементов массива
- •Процедура определения минимального, максимального, и их индексов в массиве
- •Функция определения позиции элемента в массиве
- •Процедура удаления элементов из массива
- •Процедура переворота массива
- •Процедура циклического сдвига части элементов массива влево
- •Процедура формирования массива накопленных значений
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 8. Сортировка массивов
- •Методы сортировки массивов
- •Сортировка выбором
- •Пример сортировки массива по возрастанию методом выбора
- •Процедура сортировки массива методом выбора
- •Сортировка обменом (метод пузырька)
- •Пример сортировки массива по возрастанию методом обмена
- •Процедура сортировки массива методом обмена
- •Сортировка вставкой или включением
- •Пример сортировки массива по возрастанию методом вставки
- •Процедура сортировки методом вставки
- •Сортировка по усложненным правилам
- •Обработка упорядоченных массивов
- •Вставка элемента в отсортированный массив
- •Слияние двух отсортированных массивов в один
- •Поиск позиции элемента в отсортированном массиве
- •Удаление элемента из отсортированного массива
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 9. Работа с двумерными массивами (матрицами)
- •Краткие теоретические сведения
- •Описание матриц
- •Использование компонента StringGrid для ввода-вывода матриц
- •Тотальная обработка данных в матрицах
- •Выборочная обработка матрицы
- •Перестановки элементов матрицы
- •Удаление и вставка элементов матрицы
- •Сортировка элементов матрицы
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10. Работа с записями
- •Краткие теоретические сведения
- •Объявление типа для записи
- •Массивы записей
- •Поля записей как массивы
- •Сортировка массивов записей
- •Ввод-вывод записей
- •Создание проекта «Результаты аттестации»
- •Интерфейс пользователя для проекта
- •Определение типов данных
- •Инициализация интерфейса
- •Добавление строки в таблицу
- •Удаление строки из таблицы
- •Процедура создания массива записей по содержимому StringGrid
- •Процедура отображения массива в компоненте StringGrid
- •Процедура сортировки массива записей по группе и фамилии
- •Сортировка записей по количеству неудовлетворительных оценок и среднему баллу
- •Выборка студентов какой-нибудь группы, имеющих средний балл выше 4
- •Подсчет числа студентов, имеющих более 2-х неудовлетворительных оценок и вывод упорядоченного списка этих студентов
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11. Работа с типизироваными файлами
- •Краткие теоретические сведения
- •Объявление файловой переменной
- •Назначение файла файловой переменной
- •Открытие файла
- •Текущая позиция файла
- •Чтение данных из файла
- •Запись данных в файл
- •Обрезка “хвоста” файла
- •Закрытие и удаление файлов
- •Перечень основных процедур и функций для работы с типизированными файлами
- •Создание проекта «Результаты аттестации»
- •Требования к проекту
- •Интерфейс пользователя для проекта
- •Определение типов данных
- •Настройка интерфейса пользователя
- •Вспомогательные процедуры для работы с файлом Процедура выбора имени файла
- •Процедура открытия файла
- •Процедура вывода файла в StringGrid
- •Процедуры работы со StringGrid1
- •Процедуры реализации пунктов меню fileMenu Добавление данных из StringGrid1 в файл
- •Поиск записи по фамилии
- •Удаление записи по фамилии
- •Сохранение файла под другим именем
- •Процедуры для работы с упорядоченными файлами Процедура сортировки файла
- •Поиск записи в отсортированном файле
- •Добавление записи в отсортированный файл
- •Удаление записи из отсортированного файла
- •Процедуры реализации пунктов меню sortMenu Реализация пункта меню «Сортировка файла по фамилиям»
- •Реализация пункта меню «Поиск студента по фамилии»
- •Реализация пункта меню «Добавление в упорядоченный файл из StringGrid1»
- •Реализация пункта меню «Удаление записи из отсортированного файла»
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12. Работа с текстовыми файлами
- •Краткие теоретические сведения
- •Объявление файловой переменной для текстового файла
- •Связывание файловой переменной с конкретным файлом
- •Открытие файла
- •Создание нового файла
- •Открытие файла для чтения
- •Открытие файла для дополнения
- •Текущая позиция файла
- •Записи данных в файл.
- •Чтение данных из файла
- •Особенности чтения чисел из текстового файла
- •Особенности чтения данных типа String
- •Особенности чтения и записи символов
- •Закрытие и удаление файлов
- •Перечень основных процедур для работы с текстовыми файлами
- •Общая схема работы с текстовым файлом
- •Примеры работы с текстовыми файлами
- •Пример ввода-вывода при решении простейшей задачи
- •Пример добавления данных из одного файла к другому
- •Пример чтение из файла в поле Memo
- •Пример ввода-вывода при работе с массивом
- •Пример ввода-вывода при работе с матрицей
- •Пример ввода-вывода при работе с записями
- •Задания для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •РекомендоваНная литература
-
Выборочная обработка матрицы
При выборочной обработке матрицы могут решаться те же задачи что и при тотальной, но только для какой то группы элементов матрицы. Вот примеры возможной группировки элементов матрицы.
-
Элементы главной диагонали квадратной матрицы.
-
Элементы вспомогательной диагонали квадратной матрицы.
-
Элементы некоторого столбца или строки матрицы.
-
Элементы матрицы, расположенные по ее кромке.
-
Элементы квадратной матрицы, расположение которых соответствует расположению белых или черных клеток шахматной доски.
Для первых трех из перечисленных выше группировок обработка осуществляется в одном цикле, так как при переборе элементов только один индекс является независимым.
В первом примере у обрабатываемых элементов, которые расположены на главной диагонали матрицы, номера строки и столбца совпадают. Поэтому в цикле можно изменять номер столбца, а строке присваивать тот же номер.
Во втором случае, на вспомогательной диагонали, номер столбца j связан с номером строки i соотношением j=nCol–i+1. В этом соотношении nCol – это максимальный индекс для столбца.
В случае обработки одного из столбцов матрицы, его номер фиксирован, и единственный цикл достаточно организовать только по элементам строки. Аналогично обрабатывается и отдельная строка.
При обработке элементов матрицы расположенных по ее кромке можно организовать четыре цикла, выполняемых последовательно друг за другом. В каждом цикле обрабатываются элементы очередной строки или столбца, образующих кромку матрицы. Обрабатывать следует все элементы за исключением того, который будет началом следующей последовательности, то есть последнего или первого.
При «шахматной» группировке, можно организовать двойной цикл, как при тотальной обработке, но обрабатывать только те элементы, сумма индексов которых является четной (или нечетной).
-
Перестановки элементов матрицы
Есть задачи, в которых требуется менять местами элементы матрицы. Ниже перечислены некоторые из таких задач.
-
Транспонирование матрицы (поворот вокруг главной диагонали).
-
Поворот вокруг вспомогательной диагонали.
-
Поворот вокруг горизонтальной оси.
-
Поворот вокруг вертикальной оси.
Таблица 9.2 – Параметры циклов при перестановках элементов матрицы |
||||
Линия симметрии при повороте |
Внешний цикл |
Внутренний цикл |
Индексы элемента |
|
текщ. |
симметр. |
|||
Главная диагональ |
от i=2 до nRow |
По элементам строки (индексы столбца) от j = 1 до i-1 |
[ i, j ] |
[ j, i ] |
Вторая диагональ |
По строкам, от i=1 до nRow -1 |
от j = 1 до nCol - i |
[ i, j ] |
[nRow–j +1, nCol – i+1] |
Горизонталь-ная ось |
По строкам, от i=1 до nRow div 2 |
По элементам строки (индексы столбца) от j = 1 до nCol |
[ i, j ] |
[nRow –i+1, j ] |
Вертикальная ось |
По строкам, от i=1 до nRow |
По элементам строки (индексы столбца) от j = 1 до nCol div 2 |
[ i, j ] |
[ i, nCol – j+1 ] |
Для решения всех этих задач требуется двойной цикл. Внешний цикл обычно организуется по всем номерам строк или столбцов, иногда, за исключением первого или последнего номера. Внутренний же цикл обеспечивает перебор только половины элементов, которые расположены с одной стороны от оси поворота. Тело цикла содержит операторы, которые обеспечивают обмен значениями между текущим элементом матрицы и симметричным ему. Для организации обмена удобнее всего использовать промежуточную переменную.
Основная трудность, возникающая при решении этих задач, это определение индексов элемента, симметричного текущему элементу.
В таблице 8.1 приведены параметры циклов, обеспечивающих перевороты элементов матрицы вокруг различных осей симметрии. Индексные выражения, приведенные в таблице, составлены в предположении, что нижние индексы строк и столбцов раны единице, верхние индексы столбцов и строк соответственно равны nCol и nRow, а m – имя матрицы.