- •Лабораторная работа № 1 Среда программирования Delphi. Линейные алгоритмы
- •Краткие теоретические сведения
- •Графическая среда разработки Delphi
- •Компоненты
- •Обработка событий
- •Редактор кода
- •Компиляция
- •Отладка
- •Структура проекта
- •Сохранение проекта
- •Идентификаторы, операторы
- •Типы данных
- •Переменные
- •Константы
- •Выражение
- •Оператор присваивания
- •Комментарии
- •Стандартные функции
- •Ввод данных
- •Вывод результатов
- •Вывод в окно сообщения
- •Порядок выполнения работы
- •Содержание отчета
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 2 Программирование алгоритмов разветвляющейся структуры
- •Краткие теоретические сведения
- •Условие
- •Структура ветвления
- •Компонент Memo
- •Порядок выполнения работы
- •Содержание отчета
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 3 Операторы цикла. Создание изображений
- •Краткие теоретические сведения
- •Создание изображений
- •Класс tFont
- •Класс tPen
- •Класс tBrush
- •Компонент Image
- •Компонент Shape
- •Компонент Timer
- •Методы вычерчивания графических примитивов.
- •Порядок выполнения работы Пример1. Использования оператора цикла while
- •Пример2. Создание простейшего изображения.
- •Пример создания заставки
- •Пример 3. Создание приложения, содержащего круговую диаграмму.
- •Содержание отчета
- •Варианты заданий
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 4 Одномерные массивы. Цикл с параметром
- •Краткие теоретические сведения
- •Объявление массива
- •Цикл с параметром
- •Инициализация массива
- •Операции с массивами
- •Вывод массива
- •Ввод массива
- •Использование компонента StringGrid
- •Использование компонента Memo
- •Создание меню
- •Компонент tMainMenu
- •Диалоговые панели File Open и File Save
- •Вывод в файл
- •Открытие файла для записи
- •Закрытие файла
- •Ввод из файла
- •Открытие файла для чтения
- •Чтение чисел
- •Поиск минимального (максимального) элемента массива
- •Поиск в массиве заданного элемента
- •Сортировка массива
- •Порядок выполнения работы
- •Пример 2. Разработка диалоговой программы для работы с произвольным массивом вещественных чисел.
- •Содержание отчета
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 5 Двумерные массивы. Вложенные циклы.
- •Краткие теоретические сведения
- •Объявление матриц
- •Инициализация двумерного массива
- •Содержание отчета
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 6 Функциональная и интерфейсная эмуляция формы
- •Краткие теоретические сведения
- •Компонент Image
- •Многостраничный блокнот — компоненты tTabControl и tPageControl
- •Компоненты tTreeView w tListView
- •Задание к лабораторной работе
- •Варианты заданий
- •Контрольные вопросы
Объявление матриц
Двумерный массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе описания переменных. В общем виде инструкция объявления массива выглядит следующим образом:
Имя: array [нижний_индекс_строки. .верхний_индекс_строки, нижний_индекс_столбца…верхний_индекс_столбца] of тип;
где:
имя — имя массива;
array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;
нижний_индекс_строки (столбца) и верхний_индекс_строки (столбца) — целые константы, определяющие диапазон изменения индекса строк (столбцов) элементов матрицы и, неявно, количество элементов (размер) матрицы;
тип — тип элементов двумерного массива (базовый тип).
Так же двумерный массив можно описать так:
array[нижний_индекс_строки.. верхний_индекс_строки] of array[нижний_индекс_столбца.. верхний_индекс_столбца] of тип;
Примеры объявления двумерных массивов:
temper:array[1..3, 1..4] of real;
M1 : array[1..3] of array[1..3] of Byte;
name:array[1..30,1...8] of string[25];
Приведем пример объявления с помощью константы двумерного массива, состоящего из 12 элементов типа Integer:
const
n=4;
m=3;
var
a:array [1..n, 1..m] of integer;
Существует еще один способ объявления массивов :
Имя_массива: array [нижний_индекс..верхний_индекс] of тип;
Имя_матрицы: array[нижний_индекс..верхний_индекс] of имя_массива;
Для того чтобы в программе использовать элемент матрицы, надо указать имя матрицы и индексы элемента, заключив индексы в квадратные скобки и отделив их запятой. В качестве индексов можно использовать константу или выражение целого типа, например:
a[1,2]:=4;
d:=a[2,1]+a[3,2];
ShowMessage(name[n,m]);
temper[i,j] := StrToFloat(Edit1.text);
Индексы не должены выходить за пределы диапазона, указанного в описании двумерного массива в квадратных скобках.
Инициализация двумерного массива
Если двумерный массив не является локальным, т. е. объявлен не в процедуре обработки события, а в разделе переменных модуля, то одновременно с объявлением массива можно выполнить его инициализацию, т. е. присвоить начальные значения элементам массива. Инструкция объявления массива с одновременной его инициализацией в общем виде выглядит так:
Имя:array [нижний_индекс_строки..верхний_индекс_строки, нижний_индекс_столбца..верхний_индекс_столбца] of тип = (список);
где список — разделенные запятыми значения элементов массива.
Например:
a: array[1...2,1..5] of integer = (0,1,2,3,4
5, 6, 7, 8, 9);
Обратите внимание, что количество элементов списка инициализации должно соответствовать размерности массива. Если это будет не так, то компилятор выведет cообщение об ошибке:
Number of elements differs from declaration
(количество элементов не соответствует указанному в объявлении).
При попытке инициализировать локальный массив компилятор выводит сообщение об ошибке:
Cannot initialize local variables
(локальная переменная не может быть инициализирована).
Локальный массив можно инициализировать только во время работы программы, например, так:
for i := 1 to 2 do
for j:= 1 to 5 do
a[i[][j]:= i+2
Задание к выполнению лабораторной работы
Задание А
Выбрать алгоритм, составить его блок-схему и программу, в ко-
торой:
1) разбив отрезки [a; b] и [c; d] соответственно на n и m частей, в точ-
ках xi = a + (i – 1)×h1, yj = c + (j – 1)×h2, где h1 = (b – a)/n, h2 = (d – c)/m, i =
1, 2, …, n+1, j = 1, 2, …, m+1 вычислить значения элементов aij матрицы
A=||aij||nm по формуле aij = z(xi, yj), где z = z(x, y) – функция, заданная в
варианте задания; из элементов матрицы А составить матрицу В так, чтобы в ней элементы строк матрицы А располагались в порядке возрастания. Указанным в варианте задания способом найти вектор (матрицу, строку) X;
Задание Б
Составить блок-схему и написать программу для решения приведенной в варианте задания задачи. Предусмотреть возможность ввода элементов массива с клавиатуры и из файла, а также возможность сохранения в файл.