- •Предисловие
- •Раздел 1. Изучение интегрированной среды delphi
- •1.1. Вводные замечания
- •Основные понятия
- •1.3. Контрольные вопросы
- •1.4. Задания к лабораторной работе № 1
- •Раздел 2. Программирование линейных алгоритмов в системе delphi
- •2.1. Вводные замечания
- •2.2. Основные понятия
- •2.3. Пример программирования линейного алгоритма
- •2.3.1. Разработка алгоритма
- •2.3.3.Текст программы:
- •2.4. Контрольные вопросы
- •2.5. Задания к лабораторной работе № 2
- •Раздел 3. Программирование
- •3.3.2. Разработка формы
- •3.4. Контрольные вопросы
- •3.5. Задания к лабораторной работе № 3
- •Раздел 4. Программирование простых циклических алгоритмов в системе
- •4.1. Вводные замечания
- •4.2. Основные понятия
- •4.3.1. Разработка алгоритма
- •4.4. Контрольные вопросы
- •Раздел 5. Программирование с использованием одномерных массивов в системе delphi
- •5.1. Вводные замечания
- •5.2 Основные понятия
- •5.3. Пример программирования с использованием одномерного массива
- •5.3.1. Разработка алгоритма
- •5.4. Контрольные вопросы
- •5.5. Задания к лабораторной работе № 5
- •Раздел 6. Программирование с использованием двумерных массивов в системе delphi
- •6.1. Вводные замечания
- •6.2. Основные понятия
- •6.3. Пример программирования с использованием двумерного массива
- •6.3.1. Разработка алгоритма
- •Раздел 7. Символы и строки
- •Раздел 8. Файлы
- •Задание 1
- •Раздел 9. Программирование в системе delphi с использованием подпрограмм
- •7.3. Пример программирования с использованием подпрограмм
- •Учебно-методическое обеспечение курса
- •Средства обеспечения освоения дисциплины
Раздел 6. Программирование с использованием двумерных массивов в системе delphi
6.1. Вводные замечания
Цель данного раздела заключается в приобретении навыков программирования вложенных Циклических алгоритмов, освоении приемов работы с двумерными массивами.
6.2. Основные понятия
Если в качестве типа элемента одномерного массива берется другой массив, то образуется структура, называемая двумерным массивом. Для описания типа элементов может быть использован любой объявленный тип. Двумерный массив или матрица представляет собой прямоугольную таблицу элементов одинакового типа.
Пример:
type
vec == array [1.3] of integer;
mas = array [1..5] of vec; var massiv : mas;
В данном примере объявлен двумерный массив massiv. Massiv представляет матрицу, состоящую из 3 строк и 5 столбцов.
Возможен и другой способ описания двумерных массивов:
var massiv : array [1..3,1..5] of integer;
Двумерные массивы объявляются так же, как и одномерные, за исключением того, что в квадратных скобках после зарезервированного слова array стоят два разделенных запятыми определения индексов, относящихся к двум размерностям массива. Каждое определение индекса независимо от другого. Типы первого и второго индексов могут различаться.
По такому принципу можно описать не только двумерные, но и n-мерные массивы. Размерность массивов ограничивает только объем памяти конкретной ЭВМ.
Пример описания трехмерных массивов А и В:
type
vec - array [1..3] of integer;
mas == array [1..5] of vec;
tmas = array [1..8] of mas; var
a: tmas;
b: array [1..3,1-5,1-8] of integer;
Так же, как и для описания одномерных массивов, можно использовать предварительно определенные константы:
Const N=3;M=5;
var massiv: array [l..N,l..M] of integer;
В многомерных массивах последний индекс возрастает первым.
Например:
var
A: array [1..3,1..5] of real;
А [1,1]
А [1,2]
А [1,3]
А [1,4]
А [1,5]
А[2,1]
…
А [2,5]
…
А [3,5]
Первый индекс обозначает номер строки в матрице, второй индекс - номер столбца.
Над многомерным массивом как единым целым можно выполнить три действия: "равно", "не равно", "присваивание". Эти действия выполняют аналогично, как и с одномерными массивами.
Каждый элемент двумерного массива можно обрабатывать, указывая 2 индекса: номер строки и номер столбца. Например, запись А[3,4] делает доступными для обработки значение элемента, находящегося в третьей строке четвертого столбца массива А.
Для работы с двумерными массивами обычно используются вложенные циклы. Часто применяется сложенная структура алгоритма с модификаторами.
Обнуление элементов двумерного массива можно выполнить, используя вложенный оператор for:
For K:=l to3 do
for L:=l to 5 do A[K,L]:=0;
Ввод и вывод значений элементов двумерного массива с клавиатуры можно осуществить с помощью компоненты TStringGrid страницы ADDITIONAL, предназначенной для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. С помощью компоненты TЕdit, представляющей собой однострочный редактор текста, можно вводить и/или отображать достаточно длинные текстовые строки.
Пример:
Edit1.text:=StringGrid 1 .Cells[i,j]; // позволяет вывести в окно
//содержимое ячейки (более подробно см. пример),
где i - номер столбца; j - номер строки.
После выполнения присваивания в Edit5.Text хранится содержимое (текст) ячейки таблицы;
StringGridl.Cells[i,j] - определяет содержимое ячейки с табличными координатами (ij).
Начиная с 4 версии Delphi, были введены многомерные динамические массивы.
Описание двумерного динамического массива целых чисел:
Var
MAS: array of array of integer;
Установка размеров динамического массива выполняется с помощью процедуры
SetLength(var MAS; NL1,NL2: integer),
где MAS - имя массива,
NL1 - количество строк,
NL2 - количество столбцов.
Нумерация в динамическом массиве начинается с нуля.
Пример обнуления элементов двумерного массива, имеющего 5 строк и 5 столбцов:
var MAS: array of array of real; ij: integer;
SetLength(MAS,5,5);
for i:=0 to 4 do
for j:=0 to 4 do
MAS[ij]:=0;