Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_Delphi1-4 (2).doc
Скачиваний:
16
Добавлен:
11.11.2019
Размер:
1.18 Mб
Скачать

Контрольные вопросы

  1. Компоненты TCheckBox и TRadioGroup, их свойства и события. Управление компонентами – программное и на этапе проектирования. Сходство и отличие этих компонентов.

  2. Придумайте осмысленные примеры, когда удобнее применять компонент TCheckBox и когда - TRadioGroup.

  3. Операторы языка Delphi: if, case, for, while, repeat.

  4. Ошибки первого уровня. Средства среды Delphi для их обнаружения.

  5. Ошибки второго уровня. Средства среды Delphi для их обнаружения.

  6. Трассировка программы. Способы трассировки.

  7. Использование точек останова и просмотр значений переменных.

  8. Компонент TMaskEdit и его использование для защиты от некорректного ввода данных.

Тема 3. Программирование с использованием массивов. Обработка исключительных ситуаций

Цель лабораторной работы: изучить свойства компонента TStringGrid. Написать программу с использованием массивов.

3.1. Работа с массивами

Массив есть упорядоченный набор однотипных элементов, объединенных под одним именем. Каждый элемент массива обозначается именем, за которым в квадратных скобках следует один или несколько индексов, разделенных запятыми, например: a[1], bb[I], c12[I,j*2], q[1,1,I*j-1].. В качестве индекса можно использовать любые порядковые типы за исключением LongInt.

Тип массива или сам массив определяются соответственно в разделе типов (Type) или переменных (Var) с помощью ключевого слова Array следующим образом:

Array [описание индексов] of <тип элемента массива>

Примеры описания массивов:

Const N=20; // Задание максимального значения индекса;

Type TVector=array[1..N] of real; // Описание типа одномерного массива;

Var a:TVector; // А – массив типа Tvector;

Ss:array[1..10] of integer; // Ss – массив из десяти целых чисел;

Y:array[1..5,1..10] of char; // Y – двумерный массив символьного типа.

Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:

F:=2*a[3]+a[ss[I]+1]*3;

A[n]:=1+sqrt(abs(a[n-1]));

Уже начиная с 4-й версии в Delphi появился новый удобный инструмент работы с динамическими массивами.

Работу с такими массивами иллюстрирует следующий пример:

var A: array of Integer; {динамический массив объявляется без

указания диапазона индексов}

. . .

SetLength(A,10); {перед использованием надо задать длину мас-

сива в логических элементах при помощи процедуры SetLength}

A[0] := 10; //индексы начинаются с нуля

A[9] := -100;

A := nil; //память, занимаемая массивом, освобождается

Следует отметить, что после первого использования процедуры SetLength все элементы созданного массива обнуляются. Если вызвать SetLength для уже созданного массива с целью увеличения его размера (SetLength(A,20)), то старые значения элементов в массиве сохранятся.

Имеется возможность создавать многомерные динамические массивы:

var B: array of array of integer;

. . .

SetLength(B, 2);

SetLength(B[0], 3);

SetLength(B[1], 2);

B[0,0] := 10;

B[1,1] := -100;

Для массивов можно использовать следующие функции: Low(A) и High(A) –

возвращают значения нижней и верхней границы индекса массива A, Length(A) – возвращает количество элементов массива. Для динамических массивов функция Low всегда возвращает значение 0. Если для динамического массива не вызывалась процедура SetLength, то значение функции High будет равно -1. Функция Copy(A, Start, Count) возвращает динамический массив, являющийся частью динамического массива A. Так как переменные динамических массивов фактически являются указателями, то присваивание вида A := B (A, B – динамические массивы одного типа) приведет к тому, что обе переменные будут ссылаться на один участок памяти, и память для A не будет выделена. Внутри функции Copy создается динамический массив и возвращается ссылка на него, так что после оператора A := Copy(B, 0, 10) длина массива A будет равна 10, даже если она предварительно была установлена равной 100.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]