Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
04 VBA.doc
Скачиваний:
16
Добавлен:
20.04.2015
Размер:
526.85 Кб
Скачать

4.8 Оператор цикла.

Решение задачи численными методами практически всегда включает в себя многократное повторение вычислений по одним и тем же формулам, но с различными числовыми данными. Так в приведенной выше программе (Пример_4) при вычислении функции fимеет место повторение вычислений по одной и той же части программы. Эта часть называеися циклом. Можно организовать цикл с помощью условного оператора, как это сделано выше. На практике для этих целей обычно используется специальный оператор, который называется оператором цикла. Он позволяет малым количеством операторов описать процесс выполнения большого объема вычислений.

Оператор цикла состоит из заголовка, тела цикла, включающего один или несколько операторов, и завершающего оператора NEXT, который указывает, где именно заканчивается оператор цикла. В теле цикла описывается фрагмент программы, который должен выполняться многократно. Заголовок имеет вид:

FOR x=x0 TO xkon STEP dx

Здесь x- параметр цикла, переменная, величина которой изменяется от значенияx0 доxkonс шагомdx. Тело цикла выполняется многократно при различных значениях параметра цикла. В случае, когдаdx>0, оператор цикла выполняется следующим образом. Параметру циклаxприсваивается значениеx0. Затем проверяется условие

x <= xkon . (*)

Если значение этого отношения есть "истина", то выполняются операторы тела цикла, параметр цикла увеличивается на величину шага dxи снова проверяется условие (*). Еслиx>xkon, то работа оператора цикла прекращается, и выполняется оператор, записанный за оператором цикла. Ниже приведена блок-схема, поясняющая работу оператора цикла.

x=x0

Тело цикла

x=x+d

Рис.6

Пример. Вычислить значение функции F=x*cos(x) для всехx, изменяющихся от 0 до 1 с шагомdx=0,1.

Текст программы.

Sub Пример_7()

For x=0 To 1.01 Step 0.2

F=x*cos(x)

Debug.Print x, F

Next

End Sub

Результаты расчета представлены на рисунке 7.

Рис.7

Если шаг изменения параметра цикла равен 1, то его можно не указывать в заголовке цикла.

Пример. Для xизменяющегося от 1 до 10, вычислить сумму квадратов:

Текст программы.

SubПример_8()

y= 0

For x = 1 To 10

y = y + x^2

Next

Debug.Print ”y=”; y

End Sub

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

Пример. Написать программу вычисления функции S:

Обозначим буквой S сумму, которую требуется вычислить. Дадим имя rab слагаемому этой суммы, номер которого равен i:

По мере повторения тела цикла сумма накапливается в поле памяти, отведенном для S. Текст программы и результат расчета приведены на рисунке 8. Задание №3 выполняется аналогично.

Рис.8

Пример. Написать программу вычисления функции S:

Этот пример отличается от предыдущего только тем, что требуется вычислить не сумму, а произведение зависящих от номера i функций rab. Кроме того, перед выполнением оператора цикла переменной S надо присвоить значение 1, а не 0. Текст программы и результат расчета приведены на рисунке 9.

Рис.9

Пример. Разработать программу вычисления частичной суммы ряда. Вычисления выполнять до тех пор, пока очередной член ряда по абсолютной величине не станет меньше .

=0.1*10-3

В окно отладки вывести значение частичной суммы, номер последнего вычисленного члена ряда и его величину. Значение переменной х ввести с клавиатуры.

Пусть нулевой член этого ряда равен 1. Член ряда с номером i обозначим именем rab. Его можно записать в виде:

Перед выполнением оператора цикла обнуляется поле памяти С, в котором накапливается частичная сумма. Здесь i – номер очередного члена ряда. Если абсолютное значение очередного члена ряда окажется меньше заданной точности , то оператор Exit закончит работу цикла. Текст программы и результат расчета приведены на рисунке 10.

В этой программе факториал (i!) вычисляется следующим образом. До входа в цикл переменной Fact присваивается значение 1. При каждом повторении операторов тела цикла Fact умножается на i.

Рис.10

Пример.

Для х, изменяющегося от -1 до 1 с шагомdx=0.25, вычислить функцию:

где

Результаты расчета представить в виде таблицы и графика.

Текст программы приведен на рисунке 12.

Рис.11

Создать таблицу результатов расчета и построить график удобно на рабочем листе Excel. Для пересылки данных на рабочий лист можно использовать свойство Cells(I,J). Ключевое слово Cells означает «ячейки», а I и J соответственно номер строки и номер столбца, на пересечении которых расположена эта ячейка. Обратите внимание на то, что второй параметр – именно номер столбца (число), а не буква. В качестве параметров I и J можно использовать целые числа, имена переменных и арифметические выражения, значения которых являются целыми. Для пересылки величины х в ячейку рабочего поля, расположенную во второй строке в первом столбце, надо написать оператор присваивания:

Cells(2,1) = х или, если i=2, Cells(i,1)=x

Способы создания таблиц, рисунков, графиков описаны в »Лабораторном практикуме по Информатике, часть 1» [ ].

Решение.

x

F

-1

-1,683

-0,75

-1,193

-0,5

-0,719

-0,25

-0,309

0

0,000

0,25

0,309

0,5

0,719

0,75

1,193

1

1,683

Рис.12

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