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

Используется для организации циклов с предусловием и име­ет следующий формат:

While <условие продолжения цикла>

операторы тела цикла

Wend

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

Используется для организации циклов с неопределенным числом повторений (с предусловием и с постусловием).

Этот оператор для организации цикла с предусловием может использоваться в двух модификациях:

a) Do While <условие продолжения цикла>

операторы тела цикла

Loop

б)Do Until <условие прекращения цикла>

операторы тела цикла

Loop

Для организации цикла с постусловием этот оператор также может быть использован в двух модификациях:

в) Do

операторы тела цикла

Loop While <условие продолжения цикла>

г) Do

операторы тела цикла

Loop Until <условие прекращения цикла>

Оператор перехода GoTo

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

Формат оператора:

GoTo строка

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

Оператор With для операций с одним объектом. Если в одном блоке программы требуется выполнить не­сколько операций с одним объектом, то это можно явно указать оператором With, а затем не повторять имя этого объекта.

Формат записи оператора:

With объект

[операторы]

End With

Приложение 4. ПРОЦЕДУРЫ И ФУНКЦИИ В ЯЗЫКЕ VBA

В Qbasic используются 2 типа подпрограмм: процедуры SUB и процедуры-функции Function. Процедура SUB – END SUB позволяет описать набор операторов, которые могут быть исполнены по вызову из любого места программы и неоднократно. Процедура может возвращать значения нескольких переменных. Допускается рекурсивный вызов процедур (из процедуры можно вызвать другую процедуру) Формат процедуры:

SUB имя(список формальных параметров)

операторы

[EXIT SUB]

END SUB

Для создания процедуры:

1. В окне редактора VBA в меню Insert выбрать команду Procedure, в открывшемся окне выбрать тип процедуры (Sub) и задать имя процедуры.

Список параметров процедуры разделяется запятыми. Эти параметры формальные, они передаются в процедуру при ее вызове.

По умолчанию все переменные в процедуре являются локальными. Некоторые переменные можно сделать статическими (STATIC - они сохраняют свое значение между вызовами процедуры, оставаясь при этом локальными).

Для вызова процедуры из программы используется оператор CALL.

Его формат: CALL имя_процедуры (список фактических параметров)

Примеры

Процедура типа SUB (SUBROUTINE)

Вычислим значение функции Y: Оператор цикла WHILE...WEND - student2.ru X=1¸7

Dim Y as Single

Sub p1

REM пример использования процедуры SUB

FOR X=1 TO 7

CALL SUM1(X)

Debug.PRINT “X=”; X, “Y=”;Y

NEXT X

END Sub

SUB SUM1(а)

y=0

FOR K=0 TO 12

y = y + SQR(k+а^2)

NEXT K

END SUB

------------------------------------------------------------------------------------------

Подсчет интеграла (метод левых прямоугольников)

Оператор цикла WHILE...WEND - student2.ru

Sub integral(x)

B = 1.5 : A=0

H = (B-A)/1000

S=0

FOR t=A TO B STEP H

S = S + (EXP(t*x)*(1+SIN(t)))/((1+COS(t))*H

NEXT t

End Sub

Процедура типа FUNCTION

Рассмотрим пример использования подпрограммы-функции.

Вычислим значение функции U:Оператор цикла WHILE...WEND - student2.ruX=1¸7

Вычисление сумм оформим в виде процедур-функций.

Sub P2

REM пример использования процедуры-функции

FOR X=1 TO 7

U = SUM1(X) + SUM2(X)

DEBUG.PRINT “X=”; X, “U=”;U

NEXT X

END SUB

FUNCTION SUM1(X)

S=0

FOR K=0 TO 5

S = S + SIN(X)/(1+k)

NEXT K

SUM1 = S

END FUNCTION

FUNCTION SUM2(X)

S=0

FOR K=0 TO 4

S = S + SQR(k*X)

NEXT K

SUM2 = S

END FUNCTION

Пример:Найти площадь многоугольника, разбив его на треугольники, площадь каждого из которых определить по формуле Герона.

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

Оператор цикла WHILE...WEND - student2.ru

FOR I=1 ТО 3

A=InputBox(“A=”)

B=InputBox(“B=”)

C=InputBox(“C=”)

CALL P1(A,B,C)

NEXT I

DEBUG.PRINT "CYMMA="; S

END

Текст процедуры

SUB P1(A,B,C)

P = (A+B+C)/2

S1= SQR(P*(P-A)*(P-B)*(P-C))

DEBUG.PRINT "S1=";S1

S = S+S1

END SUB

Наши рекомендации