7.5.2        Функции преобразования типов

Visual Basic, в некоторых случаях, выполняет автоматическое преобразование одного типа данных в другой. Однако в процессе автоматического преобразования могут возникать ошибки, а в некоторых случаях автоматическое преобразование не выполняется. Поэтому в процессе разработки программы пользователь должен сам определять необходимость преобразования типов данных. Для этого нужно применять функции преобразования типов (табл. П.2).

Рассмотрим пример.

Допустим, надо сложить два числа, значения которых вводятся с помощью управляющих элементов TextBox. Если вычисления будут выполняться программой, код которой имеет вид:

TextBox3.Text= TextBox1.Text + TextBox2.Text                                               

то результат вычисления будет неверным, так как в этом случае выполнится объединение строк. Например, если исходными значениями будут 100 и 200, то получится результат 100200, что, конечно, не является результатом арифметического сложения.

Для того, чтобы получить правильный результат, предварительно нужно преобразовать исходные величины строкового типа в числовые целого типа (или другого числового типа). Это преобразование может быть выполнено с помощью функции CInt. Тогда фрагмент кода для выполнения сложения будет иметь вид:

TextBox3.Text = CInt(TextBox1.Text) +  CInt(TextBox2.Text)

При выполнении этого кода будет получен правильный результат – 300.

Правильный результат будет получен, если фрагмент кода будет следующий:

    TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)

В последнем фрагменте для преобразования типов применена функция Val, которая преобразует строку числовых символов в число, поэтому выполняется не объединение строк, а сложение чисел. Различие этих двух функций заключается в следующем: для функции CInt аргументом должна быть строка только числовых символов, иначе будет ошибка; для функции Val аргумент может содержать не числовые символы. В этом случае для правильного преобразования числовые символы должны располагаться в начале строки. Если лидирующее положение занимают не числовые символы, то результатом преобразования будет значение 0. Так если TextBox1.Text содержит значение 100ВВ, TextBox2.Text – 200Text, то все равно результатом сложения будет значение 300. Если TextBox1.Text содержит значение A100, TextBox2.Text – Text200, то результатом сложения  будет 0.

7.5.3        Математические функции

Математические функции (табл. П.3) предназначены для выполнения типовых математических расчетов (вычисление значений тригонометрических функций, логарифмов, получения псевдослучайных чисел и др.). Пусть, например, требуется вычислить значение квадратного корня числа 100. Фрагмент кода может иметь следующий вид:

Option Explicit

Dim dblАргумент As Double, dblРезультат As Double

            dblАргумент=100

            dblРезультат=Sqrt(dblАргумент)

В результате выполнения этого кода переменная dblРезультат получит значение 10.

 7.5.4        Функции обработки строк

    Функции обработки строк Visual Basic приведены в таблице П.5. Они служат для выполнения операций со строками. В качестве иллюстрации применения некоторых из них рассмотрим пример.

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

Вычислить номер позиции разделителя используя функцию Instr;

Выделить целую часть до позиции разделителя с помощью функции Left;

Выделить дробную часть с помощи функции Mid;

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

Преобразовать полученное значение дробной части в тип с плавающей точкой используя функцию преобразования типа CDbl;

Округлить полученное число до целого с помощью функции Int;

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

Ниже приведен фрагмент кода, выполняющий такое округление.

Option Explicit

Dim StrИсходнаяСтрока As String * 10

Dim strЦелаяЧасть As String * 4

Dim strДробнаяЧасть As String * 7

Dim intПозицияРазделителя As Integer

Dim dblДробнаяЧасть As Double

StrИсходнаяСтрока = TextBox1.Text

  intПозицияРазделителя = InStr(1, StrИсходнаяСтрока, ",")

  strЦелаяЧасть = Left(StrИсходнаяСтрока,  _

intПозицияРазделителя - 1)

  strДробнаяЧасть = Mid(StrИсходнаяСтрока,  _

                        intПозицияРазделителя + 1, 2) & "," _

            & Mid(StrИсходнаяСтрока, intПозицияРазделителя + 3)

  dblДробнаяЧасть = CDbl(strДробнаяЧасть)

  strДробнаяЧасть = Fix(dblДробнаяЧасть)

  TextBox2.Text = strЦелаяЧасть & "," & strДробнаяЧасть

  Вопросы для самоконтроля

1.       Какие символы допускается применять в именах переменных?

2.       Можно ли имя переменной начинать с цифры или с символа подчеркивания?

3.       Какие базовые типы данных поддерживает Visual Basic?

4.       Напишите оператор, явно декларирующий строковую переменную для хранения почтового адреса.

5.       Какой оператор должен присутствовать в разделе глобальных объявлений, чтобы исключить ошибки в случае появления неявно объявленных переменных?

6.       Напишите оператор, декларирующий одномерный массив из 7 элементов целого типа и имеющий базовый индекс –3.

7.       Что такое динамические массивы и как они декларируются?

8.       Каково различие между переменной и константой. Какие типы констант поддерживает Visual Basic?

9.       Что представляет собой пользовательский тип данных, как он определяется и объявляется?

10.   Каково различие между линейным и блочным оператором If  - Then?

11.   Какой оператор Visual Basic позволяет сделать выбор из нескольких альтернативных вариантов?

12.   Как определяется цикл с известным числом повторений?

13.   Какие циклы с условием поддерживает Visual Basic?

14.   В чем различие циклов с предусловием и постусловием ?

15.   Что такое функция и как она определяется?

16.   Как производится обращение к функции?

17.   Какие типы встроенных функций есть в Visual Basic?

Задания для самостоятельной работы

Задание 1.

Разработайте функцию пользователя для расчета реальной доходности с учетом налога на прибыль, которая вычисляется по формуле:

где i – годовая процентная ставка;

            g – налог на прибыль, выраженный в процентах;

            h – годовой темп инфляции, вычисляемый по формуле:

h=(1+ h1/12)12-1 ,

где h1/12  - месячный темп инфляции.

Для проверки и отладки программы используйте следующие исходные данные: i=60%, h1/12=3%, g=25% . Для них реальная доходность составит r=1,7%.

Задание 2.

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

где P – сумма кредита;

            S –сумма, подлежащая возврату

            Т – срок кредита.

Для проверки и отладки программы используйте следующие исходные данные: Т= 4 месяца,  P= 100 тысяч, S = 110 тыс. Для них  годовая ставка составит i = 30%

Задание 3.

Разработайте функцию пользователя для вычисления накопленной по процентам суммы, при условии, что известна годовая процентная ставка, а вклады делаются неравномерными и непериодическими платежами (см. условие задачи в упражнении 7). Для расчетов используйте формулу:

где  i – годовая процентная ставка;

            K – количество платежей;

            Rk – величина k –того платежа;

            tk – дата k – того платежа.

Для проверки программы используйте условие задачи из упражнения 7. Для этих условий значение I = 1500.

Предыдущая    Следующая    В содержание темы
Hosted by uCoz