- •Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- •Содержание
- •Лабораторная работа № 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
- •Пример ввода-вывода при работе с массивом
- •Пример ввода-вывода при работе с матрицей
- •Пример ввода-вывода при работе с записями
- •Задания для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованая литература
Пример добавления данных из одного файла к другому
Ниже приведен фрагмент процедуры.
…
var s:String;
begin
Reset(f1); Append(f2);
while not eof(f1) do begin
readln(f1,s);
writeln(f2,s);
end;
CloseFile(f1);
CloseFile(f2);
…
Пример чтение из файла в поле Memo
...
var buf: String;
begin
AssignFile(f, ‘Primer.txt’);
try
reset(f); //Открыть для чтения
except
showMessage(‘Ошибка доступа к файлу’);
exit;
end;
// Цикл чтение из файла
while not eof(f) do
begin
Readln(f, buf); // прочитать строку из файла в переменную buf
Memo1.Lines.Add(buf); // добавить строку, содержащуюся
// в переменной buf к строка поля Memo1
end;
closeFile(f);
end;
Пример ввода-вывода при работе с массивом
При вводе числовых массивов можно использовать процедуру read() для считывания элементов массива. Элементы могут располагаться в файле произвольно. Считывание производится, пока не будет достигнут конец файла.
При занесении исходных данных для массива в текстовый файл не следует после последнего числа вводить символ перевода строки, иначе будет считан дополнительный, лишний ноль.
Ниже приведен пример ввода массива из текстового файла, его обработка и вывод массива результатов.
Считывается столько элементов массива, сколько их в файле. Расположение элементов массива в файле не имеет значения
Обработка заключается в накоплении значений элементов массива.
Массив, полученный в результате обработки, выводится столбиком, то есть каждый элемент отдельной строкой.
//Работа с массивом
procedure TForm1.btnArrayClick(Sender: TObject);
var a:array[1..100] of integer; i, count: integer;
begin
Reset(f1); Rewrite(f2);
//Ввод массива
count:=0;
while not eof(f1) do begin
count:=count+1;
read(f1,a[count]);
end;
//Обработка массива
for i:=2 to count do a[i]:=a[i]+a[i-1];
//Вывод массива
for i:=1 to count do writeln(f2,a[i]);
closeFile(f1);
closeFile(f2);
end;
Пример ввода-вывода при работе с матрицей
Особенность считывания матриц из текстового файла состоит в том, что необходимо распознавать строки. Для решения этой задачи можно использовать цикл ввода элементов строки с помощью функции read(). Элементы строки вводятся пока значение функцию Eoln() равно false. Количество столбцов матрицы будет равно количеству элементов в строке.
Очевидно, что данные в текстовом файле должны быть расположены в виде таблицы. Произвол здесь уже не допустим.
При выводе матрицы следует позаботиться о переводе строки после вывода каждой строки матрицы. Кроме того, следует использовать спецификаторы длины достаточного размера, чтобы числа в строках не сливались.
Ниже приводится процедура считывания матрицы из текстового файла и вывода ее в текстовый файл.
//Работа с матрицей и текстовым файлом
procedure TForm1.btnMatrixClick(Sender: TObject);
var m: array[1..10, 1..10] of integer; i, j, countRow, countCol: integer;
begin
reset(f1); rewrite(f2);
//Вводим первую строку и определяем число столбцов матрицы
countCol:=0;
while not eoln(f1) do begin
countCol := countCol + 1;
read(f1, m[1, countCol]);
end;
readln(f1); //переход к новой строке
if countCol > 0 then countRow:=1 else exit;
//Вводим оставшиеся строки
while not eof(f1) do begin
countRow:=countRow+1;
j:=0;
while not eoln(f1) do begin
j:=j+1;
read(f1, m[countRow, j]);
end;
readln(f1); //переход к новой строке
end;
//Вывод матрицы
for i:=1 to countRow do begin
for j:=1 to countCol do write(f2, m[i,j]:6);
writeln(f2);//переход к новой строке
end;
closeFile(f1);
closeFile(f2);
end;