Visual Basic.NET

Примеры программ

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

Вычисление наибольшего общего делителя происходит в обработчике щелчка на кнопке "Вычислить".

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a, b, t As Long
        a = TextBox1.Text
        b = TextBox2.Text
        While b > 0
            t = a Mod b
            a = b
            b = t
        End While
        TextBox3.Text = a
    End Sub

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

Возведение в степень происходит в обработчике щелчка на кнопке "Возвести".

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a, b, c As Long
        Dim n, k As Integer
        a = TextBox1.Text
        n = TextBox2.Text
        k = n
        b = 1
        c = a
        'Инвариантом является
        'a в степени n = b * (c в степени k)
        'Перед циклом (a в степени n = c в степени n)
        While k > 0
            If k Mod 2 = 0 Then
                'c в степени k = (c * c) в степени (k \ 2)
                k = k \ 2
                c = c * c
            Else
                'Один множитель c переходит в b
                k = k - 1
                b = b * c
            End If
        End While
        'После цикла (a в степени n = b)
        TextBox3.Text = b
    End Sub

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

Следующая программа позволяет вычислить простые множители заданного числа. Ее графический интерфейс представлен на следующем рисунке.

Нахождение множителей осуществляется с помощью следующего алгоритма.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n, k, m As Long
        Dim s As String
        n = TextBox1.Text
        s = ""
        k = n
        'Инвариант - произведение напечатанных чисел и k равно n
        While k > 1
            m = 2
            'Инвариант - k не имеет делителей в интервале (1, m)
            While k Mod m > 0
                m = m + 1
            End While
            'm - наименьший делитель k больший 1,
            'следовательно, простой
            s = s & m & ", "
            k = k \ m
        End While
        s = s.Substring(0, s.Length - 2)
        TextBox2.Text = s
    End Sub
Hosted by uCoz