double arrow

Цикл For - Next

Циклы

Листинг 7.1. Работа с массивом

Одномерные массивы

Для объявления массивов используют оператор Dim. Объявить массив можно двумя способами. Первый заключается в указании общего количества элементов. Например, так:

Dim MyArrayA(30) As Single

Объявленный массив MyArrayА содержит 31 элемент (с индексами от 0 до 30) типа Single. Поскольку нумерация явно не задана, элементы получат индексы по обычным правилам.

Можно объявить массив и другим способом:

Dim MyArrayB(1 To 25)

Массив MyArrayB содержит 25 элементов. Границы нумерации заданы явно - первый элемент получит индекс 1, второй - 2 и т.д. Тип не указан - в массиве можно хранить любые данные.

Работа с элементами массива ничем не отличается от работы с переменными. Давайте решим следующую задачу:

  1. Объявить одномерный массив на 3 элемента
  2. Внести в первый элемент число 5 в программе, во второй - запросив значение с помощью окна ввода
  3. Вычислить в третьем элементе массива произведение значений, хранящихся в первом и втором элементах.
  4. Вывести полученное значение в окне сообщения.

Решение задачи следующее.

Dim A(2)

A(0) = 5

A(1) = InputBox("Введите значение второго элемента")

A(2) = A(0) * A(1)

MsgBox A(2)

В конце работы программы, если на вопрос о вводе числа мы введем число 2, массив A будет иметь такой вид.

Таблица Массив А после работы программы
Индекс      
Значение      

Как видите, серьезное отличие массивов от переменных - использование индексов для работы с различными элементами массива. Однако, можно заметить, что эта задача легко решается с использованием переменных, без массивов.

Возможно, сейчас вы еще не вполне осознаете полезность массивов. Если сейчас вы напишите программу для ручного ввода данных в несколько элементов массива, она получится такой же громоздкой, как раньше. Так чем же массивы лучше? Ответ на этот вопрос кроется в использовании циклов.

Циклы позволяют выполнять одни и те же команды много раз. В следующей таблице собрана информация об основных видах циклов.

Таблица Виды циклов
Название цикла Вид
For - Next С фиксированным количеством повторов. Выполняется заданное количество раз
While - Wend С предусловием. Если не верно условие, заданное на входе в цикл, может не выполниться ни разу
Do - Loop С постусловием. Выполняется по меньшей мере один раз.

Решим задачу: вывести цифры от 1 до 10 в окнах сообщений. Ее можно решить и без использования циклов, написав 10 строк такого вида: MsgBox ("1"). А вот конструкция For - Next позволяет делать то же самое гораздо изящнее. В следующем листинге вы можете найти решение задачи.

For i = 1 To 10

MsgBox (i)

Next i

Ключевое слово For задает начало цикла. После него следует переменная i, которая увеличивается при каждом проходе цикла. В ходе работы конструкции For - Nextзначение i изменяется от 1 до 10.

Начальное значение счетчика устанавливается при входе в цикл. Мы просто приравниваем i какому-либо числу. Конечное значение переменной задается после ключевого слова To. Переменная i доступна внутри цикла - ведь именно ее мы выводим в окне сообщения.

Ключевое слово Next с указанием переменной, к которой оно относится, закрывает цикл.

В качестве первого и последнего значения счетчика цикла можно использовать какую-нибудь переменную. Она может быть определена в ходе выполнения программы, но до входа в конструкцию For - Next.

Вы могли заметить, что переменная цикла меняется с приращением 1. Это приращение можно задать в явном виде с помощью ключевого слова Step. Ниже вы можете видеть пример оператора For - Next, выводящего нечетные числа в диапазоне от 1 до 10.

For i = 1 To 10 Step 2

MsgBox (i)

Next i

С помощью ключевого слова Step можно создать не только возрастающий, но и убывающий счетчик. Для этого в Step надо указать отрицательное число и проследить за тем, чтобы первое значение переменной цикла было больше последнего. Например, так: For i=10 to 1 Step -1. Первое значение переменной в таком цикле будет равняться 10, второе - 9 и т.д. - до 1.

Теперь перейдем к совместному использованию циклов и массивов. Напишем программу, которая предлагает пользователю ввести 10 фамилий, сохраняет их в массиве, а потом выводит в окнах сообщений.

Готовая программа имеет следующий вид.

Dim MyArray(9)

For i = 0 To 9

MyArray(i) = InputBox("Введите фамилию №" & i + 1)

Next i

For i = 0 To 9 'Начало еще одного цикла

MsgBox ("Фамилия №" & (i + 1) & " " & MyArray(i))

Next i 'Конец цикла

Обсудив цикл типа For-Next, продолжим разговор о массивах. На очереди - многомерные массивы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: