Массивы

Do

Loop

 

При использовании последних двух конструкций цикл будет выполнен хотя бы один раз. Эти конструкции выглядят следующим образом:

[блок операторов 1]

[Exit Do]

[блок операторов 2]

Loop [{While | Until}логическое выражение]

В данных конструкциях :

Блок операторов 1 и блок операторов 2 между Doи Loopсоставляют тело цикла.

Логическое выражение - условие, значение которого проверяется и влияет на окончание выполнения тела цикла.

Whileопределяет выполнение операторов, входящих в цикл, пока значение логического выражения равноTrue.

Untilопределяет выполнение операторов, входящих в цикл, пока значение логического выражения равно значению False.

Exit Doиспользуется для досрочного прекращения выполнения цикла (см Exit For в разделе 3.8.3.3).

Положение"{While | Until}логическое выражение" в конструкции Do…Loop определяет, когда производится проверка условия - в начале цикла или в конце цикла. В первых двух конструкций, проверка условия производится в начале выполнения цикла, а в последних двух конструкциях - в конце выполнения цикла.

В цикле Do…Loopдолжен содержаться хотя бы один оператор, влияющий на изменение значения логического выражения, в противном случае произойдет "зацикливание" программы.

Пример. Программа определения максимального числа в последовательности, заканчивающейся 0.

'Первый вариант. Реализация с помощью цикла с предусловием

Private Sub Form_Load()

Dim max, x As Single, i As Integer

x = InputBox("Введите первое число")

max = x ' максимальное число = первому

Do While x <> 0 'пока число не равно 0

x = InputBox("Введите число")

If x > max Then 'если число больше максимального

max = x 'оно становится максимальным

End If

Loop 'конец цикла

MsgBox "Максимальное число = " + Str(max)

End Sub

 

'Второй вариант. Реализация с помощью цикла с постусловием

Private Sub Form_Load()

Dim max, x As Single, i As Integer

x = InputBox("Введите первое число")

max = x ' максимальное число = первому

Do

x = InputBox("Введите число")

If x > max Then 'если число больше максимального

max = x 'оно становится максимальным

End If

Loop Until x = 0 'выход из цикла, если число равно 0

MsgBox "Максимальное число = " + Str(max)

End Sub

 

Массивом называется упорядоченная последовательность элементов одного типа, объединенных одним именем и доступных через это имя и индекс (порядковый номер элемента).

Все элементы массива относятся к одному и тому же типу и обладают одной и той же областью видимости. Объем памяти, который требуется для массива, равен произведению байтов, выделяемых для одной переменной соответствующего типа, на количество его элементов. Количество элементов массива ограничено диапазоном, используемым для типа Long.

У каждого массива определены нижняя и верхняя границы, в пределах которых может изменяться значение индекса. Элементы массива обладают непрерывной нумерацией. Номера первого и последнего элементов массива можно задавать при объявлении. По умолчанию нумерация начинается с нуля.

Существует две разновидности массивов: статические и динамические.

Статические массивы. При объявлении такого массива значения его нижней и верхней границ не могут быть изменены в программе.

Синтаксис объявления статического массива следующий:

 

{Dim | Private | Public }имя_массива ( [номер_первого_элемента To]номер_последнего_элемента) [As тип]

Dim - ключевое слово объявления массива;

As - ключевое слово для обозначения типа данных для объявляемого массива;

имя_массива - имя описываемого массива;

тип - тип данных для объявляемого массива;

номер_первого_элемента, номер_последнего_элемента - значения соответственно нижней и верхней границ объявляемого массива.

Пример:

Dim arrA(1 To 10) As Byte 'объявлен массив, состоящий из 10 элементов, каждый длиной в один байт

Dim str1(10) As String*20 'объявлен массив, состоящий из 11 строк, каждая длиной 20 символов

Динамические массивы. Используются в том случае, когда количество элементов массива заранее неизвестно и будет определяться в процессе выполнения программы. Как следствие, после окончания работы в программе с таким массивом можно освободить память, которую он занимает.

Описание динамических массивов осуществляется в два этапа:

1. Объявить массив без его указания размерности

{Dim | Private | Public }имя_массива ( ) [As тип]

2. В нужном месте программы описать данный массив с требуемым значением для размерности при помощи оператора ReDim

ReDimимя_массива ( [номер_первого_элемента To]номер_последнего_элемента)

Пример:

Dim arrA() As Byte 'описание типа массива

ReDim arrA(5) 'указание размерности массива

В VB существует возможность определения значений нижней и верхней границы массива с помощью функций LBound и UBound, соответственно. Освободить занимаемую динамическим массивом память можно с помощью оператора Erase.