Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Оператор присваивания

Процесс установки значения переменной называется присвоением. Оператор присваивания составляет основу всех вычислений. Он состоит из переменной слева, знака равенства и выражения (формулы) справа. Выражение содержит знаки операций и операнды. В качестве операндов могут использоваться переменные, функции и константы. Например, A = B + C * D – 34.5 / ln(B).

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

Внимание

  • В операторе присваивания один и тот же идентификатор переменной может стоять слева и справа. Например, запись x=x+2 с математической точки зрения недопустима, а в качестве оператора присваивания означает, что значение переменной x увеличивается на два.

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

В выражении справа можно смешивать различные типы данных. Необязательно типы переменной слева и результата выражения справа должны совпадать. При несовпадении типов выражение преобразуется к типу переменной слева. Если эта попытка не удается, то возникает ошибка несоответсвия типов – Type mismatch. Рекомендуется контролировать соответствие типов левой и правой частей оператора присваивания.

Операторы присваивания можно записывать в окне Immediate. Например, R=13.5.

Другая форма записи оператора присваивания – это использование оператора Let. Например, Let R=13.5. Обычно ключевое слово Let опускается.

Выполнение операций

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

Пример

Распечатать в окне Immediate первые десять целых чисел.

Sub pr_i()

Dim i As Integer ‘целая переменной

For i=1 To 10 'начало цикла

Debug.Print i ’распечатка значения

Next I ’конец цикла

End Sub

Переменная i (счетчик цикла) в процессе выполнения цикла меняет значение от 1 (устанавливается выражением i=1) до значения 10, заданного выражением To 10. Шаг изменения значений переменной i по умолчанию 1.

Можно было бы записать все операторы на одной строке, используя двоеточие как разделитель между операторами For i=1 To 10: Debug.Print i : Next i.

Подробно операторы цикла рассмотрены в Разделе 4. Операторы управления.

Арифметические операции

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

Если заранее известно, что переменная будет принимать только целые значения, ей следует назначать тип Integer или Long. Если будут использоваться дробные числа, то переменная может иметь тип Currency, Single или Double.

Внимание

  • Если необходима высокая точность вычислений или нельзя заранее определить, какие значения будут у переменной, используйте тип Double.

  • Операция деления на нуль порождает ситуацию ошибки Division by zero и приводит к немедленному завершению программы.

Примеры

  1. Подсчитать сумму чисел от 1 до 1000.

    Sub sum_int()

    Dim n As Integer, s As Long

    s=0 'инициализация значения суммы

    For n=1 To 1000‘начало цикла

    s=s+n ‘добавить к сумме очередное 'значение

    Next n ‘конец цикла

    Debug.Print s ’распечатка результата 'суммирования

    End Sub

    В процедуре используются два оператора присваивания: s=0, s=s+n. Первый оператор устанавливает начальное значение для суммы чисел, а второй наращивает эту сумму в процессе вычислений.

  2. Подсчитать суммы n! и 1/n! для n от 1 до 100.

    Sub sum_nf()

    Dim n As Integer, s As Double , f As Double, g As Single

    s = 0 'инициализация значения суммы

    f = 1 'инициализация значения факториала

    For n = 1 To 100‘начало цикла

    f = f * n ’расчет факториала

    s = s + f ‘добавить к сумме значение факториала

    g=g+1/f ‘добавить к сумме обратное значение факториала

    Next n ‘конец цикла

    Debug.Print s, g ’распечатка результата суммирования

    End Sub

    Переменные s и f объявлены как Double, т.к. значение факториала достаточно большая величина.

    Переменная g не является целым числом и из-за своей небольшой величины может быть объявлена как Single.

  3. Рассчитать сумму налога на физическое лицо, если его доход в течение месяца составил 10 тысяч 147 рублей, а налог составляет 13%.

    Sub nalog()

    Dim s As Currency

    Dim nlg As Currency ‘объявление переменных

    s = 10147

    nlg = s * 0.13 ‘расчет налога

    Debug.Print nlg ’распечатка результата

    End Sub

    Переменные процедуры принимают денежные значений. Разделителем целой и дробной части в используемой константе 13% является точка.

  4. Операции деления нацело "\" и получения остатка от деления Mod запишите в окне Immediate (для перехода в окно нажмите Ctrl+G). Оператор ? 10 \ 3 возвращает три.

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

Операция получения остатка от деления Mod дополняет операцию деления нацело возвращением остатка. Оператор ? 10 MOD 3 возвращает значение 1.

  1. Какой день недели будет через сто дней, если сегодня понедельник?

Оператор ?1+100 MOD 7 возвращает значение 3, что соответствует среде.

  1. Какая дата будет через 100 дней, если сегодня 14 января 2001 года?

Public Sub add_date()

Dim a As Date

a = #1/14/2001#

Debug.Print a + 100 'результат '24.04.2001

End Sub

Дату как константу задают, используя знак "#" слева и справа от даты. В качестве разделителя даты всегда используется слэш (/), а в качестве разделителя времени - двоеточие (:).

Установка даты в виде a=#14 January 2001# или a = #14/1/2001# автоматически преобразует дату в #1/14/2001#.