Оператор цикла 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: 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
------------------------------------------------------------------------------------------
Подсчет интеграла (метод левых прямоугольников)
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:X=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
Пример:Найти площадь многоугольника, разбив его на треугольники, площадь каждого из которых определить по формуле Герона.
Текст программы
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