Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике.docx
Скачиваний:
31
Добавлен:
14.04.2015
Размер:
325.87 Кб
Скачать

Оператор цикла Do – Loop

В VBAдля организации циклов с неизвестным заранее числом повторений тела цикла используется и оператор циклаDo – Loop.

Существует четыре формы записи этого оператора. Их можно разбить на две группы: циклы с предусловием и циклы с постусловием.

  1. Циклы с предусловием.

1. Do While Условие 2. Do Until Условие

Блок операторов Блок операторов

Loop Loop

  1. Циклы с постусловием.

  1. Do 2.Do

Блок операторов Блок операторов

Loop While Условие Loop Until Условие

Оператор DoWhileLoopобеспечивает многократное выполнение блока операторов до тех пор, пока условие истинно, а операторDo UntilLoop– пока условие ложно.

Операторы DoLoop WhileиDoLoop Untilотличаются от первых двух операторов тем, что сначала выполняется блок операторов, а затем проверяется условие. Таким образом, в этих циклах блок операторов, составляющих тело цикла, выполнится по крайней мере один раз.

Приведем примеры использования цикла DoLoop While.

Задача 1. Составить программу, позволяющую вводить с клавиатуры целые числа до тех пор, пока не будет введено число, кратное 6, и вычислить количество введенных чисел (вместе с последним).

Программный код

Option Explicit

Sub PR12()

Dim x As Integer, k As Integer

k = 0

Do

x = Val(Inputbox(“Введите число”))

k = k+1

Loop While x mod 6<>0

MsgBox ("количество=" & k)

End Sub

Если использовать оператор DoLoop Until, то основная часть программы выглядит следующим образом:

k = 0

Do

x = Val(Inputbox(“Введите число”))

k = k+1

Loop Until x mod 6=0

MsgBox ("количество=" & k)

Задача 2. Составить программу, вычисляющую сумму членов последовательности –1, 3, 7, … до тех пор, пока она (сумма) не превысит заданное числоХ.

Задачу можно решить, используя различные формы записи цикла DoLoop.

Программный код

1.

Option Explicit

Sub PR13()

Dim x As Integer, sum As Integer, a As Integer

x=Val(Inputbox(“Введите число”))

sum = 0

a = -1

Do

sum = sum + a

a = a + 4

Loop While sum<=x ‘ или Loop Until sum>x

MsgBox ("Сумма равна" & sum)

End Sub

2.

x=Val(Inputbox(“Введите число”))

sum = 0

a = -1

Do While sum<=x ‘ или Loop Until sum>x

sum = sum + a

a = a + 4

Loop

MsgBox("Сумма равна" &sum)

Задача 3. Вычислить произведение и сумму цифр произвольного числа.

Option Explicit

Sub PR14()

Dim x As Integer, sum As Integer, pr As Long, c As Integer

x=Val(Inputbox(“Введите число”))

sum= 0

pr= 1

Whilex<>0

c=xmod10 ‘ вычисляем последнюю цифру в числе

sum=sum+c‘ вычисляем сумму цифр

pr=pr*c‘ вычисляем произведение цифр

x=x\ 10 ‘ отбрасываем последнюю цифру числа

Wend

MsgBox("Сумма = " &sum& ", произведение = " &pr)

EndSub

Массивы

Часто бывает необходимо работать с некоторым набором однотипных данных как с единым целым. В таких случаях используются массивы – структурированные боксы для хранения множеств элементов данных одинакового типа.

Массивы могут быть одномерными и многомерными.

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

Одномерный массив – это набор однотипных элементов, расположенных друг за другом в одной строке или столбце.

Пример

1 –34 8 2 6

или

1

2

8

-5

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

Индекс может быть:

  • константой

Пример

P(1), C(5)

  • переменной целого типа

Пример

A(i), B(j)

  • арифметическим выражением (значение арифметического выражения должно быть целым)

Пример

A(i*2), Q(i^j)

Объявление массива

Как и обычные переменные, массивы должны быть объявлены. Для описания массива используется оператор Dim.

DimИмя массива (Размерность массива)AsТип элементов

Пример

Dim A (100) As Integer

Dim B (50) As Byte

DimС (40)AsDouble

При таком описании массива его элементы индексируются (т.е. нумеруются), начиная с нуля.

Если оператор описания будет выглядеть следующим образом:

Dim A (1 To 100) As Integer,

то элементы массива индексируются с единицы.

Ввод массива

Перед обработкой массива его необходимо заполнить (ввести).

Массив будем считывать с рабочего листа Excel, в который числа заносятся вручную или при помощи счетчика случайных чисел.

1 способ. На рабочем листе введем числа в ячейки электронной таблицы (рис. 4), откроем окно программного кода и запишем в него программу, которая считывает данный массив чисел.

Рис. 4. Исходный массив

Программный код

OptionExplicit

Sub PR14()

Dim A(20) As Integer

Dim i As Integer

For i = 1 To 6

A(i) = Cells(1, i) ‘ массив заполняется

Next i ‘ числами с рабочего листа Excel

EndSub

2 способ. Массив можно заполнить при помощи счетчика случайных чисел. Для этого в программе после объявления переменных следует написать следующее:

Randomize

For i = 1 To 10

Cells(1, i) = Int(Rnd * 100 – 50)

A(i) = Cells(1, i) ‘ заполнение массива

Next i

Функция Rndвозвращает значение от 0 до 1. Перед вызовом функцииRndиспользуется инструкцияRandomizeбез аргумента для инициализации генератора случайных чисел значением, возвращаемым системным таймером.

Cells(1,i) означает ячейку электронной таблицы, находящуюся в первой строке и столбце с номеромi.

Вообще оператор Cells(i, j)служит для вывода информации в ячейку электронной таблицы или считывания информации из ячейки электронной таблицыExcel. В скобках через запятую указываются номер строки –iи номер столбца –jячейки электронной таблицы.

Пример

Cells(1, 2) =x‘в ячейкуB1 записывается информация из переменной х

х = Cells(1, 2) ‘из ячейки В1 считывают информацию в переменную х