ТОП 10:

Условный логический оператор



Условный логический оператор записывается в виде:

If условие Then

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

Else

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

End If

 

Условие - это логическое выражение, которое может принимать только одно из двух значений: истина или ложь. Частным случаем логического выражения является отношение - операция сравнения двух величин. В таблице 2 приведены принятые в VBA обозначения операций отношения. Оператор выполняется следующим образом. Вычисляется значение логического выражения (условия). Если это значение есть "истина", то выполняется оператор или группа операторов, записанных после ключевого слова Then, иначе управление работой программы передается на операторы, которые следуют за словом Else. Заканчивается оператор словами End If

Этот оператор позволяет в случае необходимости разместить после служебного слова Then несколько операторов, в качестве которых можно использовать операторы присваивания, ввода-вывода, безусловного перехода, а также другой оператор условного перехода.

Таблица 2

Операция Больше Меньше Равно Не равно Больше или равно Меньше или равно
Обозначение > < = <> >= <=

Пример.

If x>0 Then

a = 1 + x

b = 1

Else

a = 1 – X

b = 2

End If

Слово Else и следующие за ним оператор или операторы можно опустить. В этом случае условный оператор записывается в виде:

If(условие) Then

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

End If

 

Пример:

If ( x>0) Then

GoTo M1

End If

 

Строчный условный оператор

Строчный условный оператор записывается всегда в одной строчке. Он имеет вид:

IfусловиеThenоператор

Примеры.

If а>b Then y=x^2+1

If x>0 Then go to M5

 

Последняя запись означает: если х больше нуля, то должен выполняться оператор, помеченный меткой M5.

 

Пример

Разработать программу вычисления функции f(x) для аргумента x, изменяющегося от 0 до 1 с шагом Dx равным 0,25.

Программа.

Приведенная программа выполняется следующим образом. Аргументу x присваивается значение 0. Вычисляется функция f. В окно отладки выводятся значения x и f. После этого аргумент x увеличивается на 0.25. Теперь необходимо перейти к оператору, помеченному меткой М5, и повторить вычисления, используя новое значение x. Но прежде надо проверить условие окончания расчета. Для этого в программе используется отношение x < 1.125. Здесь текущее значение аргумента х сравнивается с числом, несколько большим его заданного конечного значения. Дело в том, что в ПК любое вещественное число изображается ограниченным количеством цифр. Поэтому некоторые константы, например 1/3, не могут быть точно представлены в машине. Из-за этого арифметические операции в компьютере выполняются с ошибками округления. После многократного увеличения х на 0.25 эта переменная получит значение 1±e, где e - ошибка вычисления. Использование отношения x <= 1.0можетпривести к тому, что при заданном конечном значении аргумента функция не будет вычисляться, так как x окажется равным 1+e, т.е. больше 1. При проверке условия на окончание вычислений следует сравнивать аргумент не с заданным конечным его значением, а с числом несколько большим, например, большим на половину шага. Программа и результаты расчета приведены на рисунке 4.

Пример 5. Вычислить значение функции F(x) для аргумента х, значение которого вводится в окне ввода.

F(x)=a sin x,

где а=1+x, если x>0 и а=1-x, в остальных случаях.

 

Программа.

 

Sub Пример_5 ()

x = InputBox(“Введите х”,”Пример_5”)

If x>0 Then

a=1+x

Else

a=1-x

End If

F = a*SIN(x)

Debug.Pint ”x=”; x, ”F=”; F

End Sub

Рис.4

Пример 6. Разработать программу вычисления функции f:

Значения переменных x и y ввести с клавиатуры. Результат расчета вывести на экран в окно отладки. Программа и результаты расчета приведены на рисунке 5. Так следует записывать текст задания №2.

Рис.5

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

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

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

FOR x=x0 TO xkon STEP dx

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

x <= xkon . (*)

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

 

 
 


Рис.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

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

e=0.1*10-3

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

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

Перед выполнением оператора цикла обнуляется поле памяти С, в котором накапливается частичная сумма. Здесь i – номер очередного члена ряда. Если абсолютное значение очередного члена ряда окажется меньше заданной точности e, то оператор 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,000
0,25 0,309
0,5 0,719
0,75 1,193
1,683


Рис.12

 

Массивы.

 

При решении практических задач нередко приходится иметь дело с векторами и матрицами. Их элементы всегда снабжены индексами. Для работы с ними во всех языках программирования, в том числе и в VBA, используются массивы. Группа величин, обозначенных одним именем и снабженных целочисленными индексами, называется массивом. Например, вектор x = (x1, x2, x3) представляет собой массив, состоящий из трех элементов с индексами 1,2,3. Для этого массива в памяти отводится 3 поля, по одному для каждого элемента. Все элементы одного массива должны быть одного типа, например, все целые, все вещественные, все строковые. Если каждый элемент массива имеет один индекс, то массив называется одномерным. Вектор - одномерный массив. Элементы матрицы имеют по два индекса: номер строки и номер столбца. Матрица - двумерный массив. Количество индексов у многомерного массива не более 60. Мы ограничимся рассмотрением одномерных и двумерных массивов.

 

Все массивы в программе обязательно описываются. Описание сообщает системе:

· какие переменные снабжены индексами;

· каков тип каждой переменной:

· сколько элементов имеет каждая переменная;

· сколько индексов у каждого элемента.

По умолчанию минимальное значение индекса равно нулю, а описание массива может иметь вид:

Dim имя массива (n) [As тип]

Здесь n – максимальное значение индекса, тип – ключевое слово, которое указывает тип элементов массива. Количество элементов равно n+1, так как первый элемент имеет индекс 0. Выражение в квадратных скобках можно опустить. В этом случае массиву будет присвоен тип Variant.

Пример.

Dim y(3), x(2,3) As Double

В приведенном примере тип массива у не указан. Этот массив имеет не 3, а 4 элемента типа Variant с индексами 0,1,2,3. В массиве х 3 строки и 4 столбца. Тип элементов этой матрицы – Double.

 

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

nmin To nmax,

где nmin - минимальная величина индекса, а nmax - максимальная.

Пример.

Dim z( 1 To 3), v(2 To 4), w(1 To 2, 1 To 3)

Элементы массива z имеют индексы 1,2,3, а элементы массива v - 2,3,4. В матрице w номера строк равны 1 и 2, а номера столбцов – 1,2,3. Все три массива хранят данные типа Variant.

 

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

Имя массива (индекс или индексы)

Индекс элемента массива может быть целым числом, переменной или арифметическим выражением.

Пример.

x(k), w(1,2), z(i+1), v(2,4)

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

 

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

 

Пример. Вычислить сумму 4-х элементов массива x, значения которых записаны в диапазоне A2:D2 рабочего листа “Лист 1”, т.е. в столбцах с 1-го по 4-ый во второй строке.

 

Sub Main()

Dim x(1 To 4)

For i = 1 To 4

x(i)=Cells(2,i)

Next

S = 0

For i = 1 To 4

S = S + x(i)

Next

Debug.Print "S = "; S

End Sub

Пример. Разработать программу вычисления вектора С по формуле:

С = А + 2*В. Значения элементов векторов А и В записать на рабочем листе Excel. Результаты расчета вывести на тот же лист.

,

Таблица исходных данных и результатов расчета.

Вектор А Вектор В Вектор С
0,4 1,8
1,0 4,0
-1,0 1,0

Массивы А и В записаны на рабочем листе в строках со второй по четвертую, а индексы элементов, обозначенные буквой i, изменяются от 1 до 3. Поэтому в программе в операторах, в которых элементам массивов присваиваются значения, номер строки определяется выражением i+1.

Программа.

Рис.13

Подобным образом должны быть решены примеры из задания 5.

 

ЛИТЕРАТУРА

1. А.Гарнаев. Самоучитель VBA. Санкт-Петербург, 1999.

2. А.Гарнаев. EXCEL, VBA, INTERNET в экономике и финансах.

Санкт-Петербург, 2001.

3. К.Гетц, М.Джилберт. Программирование в Microsoft Office. Для пользователя. ВНV, Киев, 2000.

4. Руководство программиста по Visual Basic для Microsoft Office 97. Microsoft Press, Русская редакция, 1997.

 

 







Последнее изменение этой страницы: 2016-12-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.175.120.174 (0.019 с.)