Математические выражения (операторы и функции)



Подход к теме: зубрить не надо, просто «пробегитесь».

Обычные математические действия (+ * - /) выполняются над двумя числами. В то же время существуют менее обычные действия, которые выполняются над одним числом (извлечение квадратного корня, определение модуля и т.п.).

Действия над двумя числами реализуются с помощью операторов. Формат оператора:

<числовое значение 1> <оператор> <числовое значение 2>

например (считаем, что существует переменная apple):

apple * 2

 

Действия над одним числом реализуются с помощью функций. Формат функции:

<функция>(<аргумент>)

например (считаем, что существуют переменные a и b):

Sqr(a * a + b * b)

 

И операторы, и функции в результате своего выполнения вырабатывают (возвращают) значения. Их нельзя использовать как самостоятельные строки программы. Они могут использоваться (пока):

· справа от знака равенства

· в качестве аргументов команд или других функций.

Например:

diag = Sqr(a * a + b * b)

MsgBox apple * 2

Некоторые операторы

Считаем, что операторы + – * / известны.

Оператор Смысл Пример Результат
^ возведение в степень a = 2 ^ 3 8
\ целочисленное деление a = 32 \ 5 6
mod остаток при делении a = 32 mod 5 2

Некоторые фнкции

Функция Смысл Пример Результат
Sqr извлечение квадратного корня a = Sqr(16) 4
Abs модуль числа a = Abs(5) a = Abs(-5) 5 5
Sgn знак числа в виде 1, 0 или -1 a = Sgn(5) a = Sgn(0) a = Sgn(-8) 1 0 -1
Int целая часть числа a = Int(3.8) 3

 

Ветвление

Вновь начнем с примера. Очень добрый преподаватель измерил знания студентов в процентах. За уровень более 50% он ставит оценки «5», а за 50 и менее – оценки «4» (он «принципиально» против троек и двоек). Фрагмент, непосредственно относящийся к ветвлению, выделен.

Dim proc As Double, otmetka As Integer

proc = <значение из таблицы>

If ball > 50 Then

otmetka = 5

Else

otmetka = 4

End If

<значение из таблицы> = otmetka

Мы видим:

§ традиционное название структуры: If

§ «скобки» вида If – End If

§ окончание первой строки словом Then (с т.зр. синтаксиса оно является избыточным и о нем все время забываешь)

§ границу между ветвями в виде слова Else на отдельной строке.

Структуру ветвления в общем виде можно предстваить так:

If <условие> Then

<действия-1, можно в несколько строк>

Else

<действия-2, можно в несколько строк>

End If

Деление на строки обязательно.

В неполном ветвлении раздел “Else” + <действия-2> отсутствуют:

If <условие> Then

<действия-1, можно в несколько строк>

End If

Условие как правило формулируется с помощью математических операторов сравнения: <, >, =.

 

Кроме задачи, описанной выше, реализуйте еще одну:

В соседних ячейках написаны два числа. В третьей ячейке надо получить большее из этих чисел.

A B C
1 Число-1 Число-2 Большее
2 25 47 47

а может быть так:

A B C
1 Число-1 Число-2 Большее
2 13 10 13

 

Циклы

Подход к уроку:

Покажем два основных вида цикла на примере обработки последовательностей, расположенных в соседних ячейках таблицы (в столбце).  Пока не рассматривается цикл Do-Loop и некоторые вопросы использования циклов при взаимодействии с таблицей.

 

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

A B C D
1 Товар Доллары Рубли  
2 Товар-1 60 1800  
3 Товар-2 40 1200  
4 Товар-3 70 2100  
*** *** ***  
11 Товар-N 35 1050  
     

Пусть объектная переменная mesto привязана к ячейке B2. В этом случае можно считать. что в таблице создан виртуальный двумерный массив, к элементам которого мы можем обращаться с помощью «формулы»

mesto(<номер_строки>, <номер_столбца>)

то есть практически так же, как в Паскале, только не квадратными скобками, а с круглыми.

Для начала будем считать, что строк ровно 10. Это дает нам возможность познакомиться с циклом For i.

Sub Magazin()

Dim mesto As Range

Dim doll As Double, rubli As Double, kurs As Double

Dim i As Integer

Set mesto = Range("B2")

For i = 1 to 10

doll = mesto (i, 1)

rubli = doll * kurs

mesto (i, 2) = rubli

Next i

End Sub

Мы видим:

§ традиционное название структуры (For) и имя счетчика (i).

§ «скобки» вида For i – Next i

§ в конце строки For нет слова Do (как в Паскале)

§ переменную-счетчик необходимо объявлять, с типом Integer (это очень странно, но так сделано, приходится с этим считаться)

Шаг счетчика по умолчанию +1. Его можно измениь с помощью ключевого слова Step, например:

For i = 1 to 10 Step 2

Значение Step мжет быть отрицательным, соответственно паскалевского варианта DownTo в VBA нет.

Реализуйте и проверьте эту процедуру на ПК.

Циклы For можно вкладывать друг в друга. Пусть нам надо заполнить квадрат 4х4 единицами:

Dim mesto As Range


Дата добавления: 2019-03-09; просмотров: 211; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!