VB .NET - Calcular a Divisibilidade (revisitado)


Você conhece os critérios de divisibilidade ?

Hoje vamos rever esse conceito e mostrar um programa que faz o cálculo da divisibilidade de números inteiros naturais para números até o 20 usando o VB .NET.

Vamos começar revendo os critérios de divisibilidade.

Existem para alguns números regras que podemos usar para verificar a divisibilidade do número sem ter realizar o cálculo.

A seguir temos as principais regras de divisibilidade para alguns números:

Mas uma forma bem simples de saber se um número qualquer é divisel pelo outro é verificar o resto obtido no resultado da operação. Se o resto for igual a zero então a divisão é possível.

Para não complicar muito o algorítmo, vamos usar esse último critério e criar um programa na linguagem VB .NET que dado um número inteiro natural informe por quais números ele é divisível de 1 a 20.

Criando o projeto no VS 2017

Abra o Visual Studio 2019 Community e crie um novo projeto do tipo Windows Forms App (.NET Framework) com o nome Divisibilidade.

A seguir vamos incluir no formulário Form1.vb os seguintes controles:

Disponha os controles conforme mostra a figura abaixo:

Agora no formulário Form1.vb vamos definir o método IsDivididoPor() com o código a seguir:

    Private Function IsDivididoPor(Numero As Long, DivNumero As Long) As Boolean

        If DivNumero <> 0 Then
            Return Numero Mod DivNumero = 0
        End If

        Return False

    End Function

Neste código estamos passando o número para o qual desejamos calcular a divisibilidade e a seguir o número pelo que queremos saber se o número é divisível.

A seguir estamos usando o operador Mod que divide os dois números  e retorna apenas o resto. Se o resto for igual a zero então retornaremos True caso contrário retornamos False.

Agora no evento Click do botão de comando - Calcular -  inclua o código abaixo:

   Private Sub btnCalcular_Click(sender As Object, e As EventArgs) Handles btnCalcular.Click
        lbResultado.Items.Clear()
        Dim numero As Integer = Convert.ToInt32(txtNumero.Text)
        Dim valor(20) As Boolean
        For x = 1 To 20
            valor(x) = IsDivididoPor(numero, x)
        Next
        If valor.Any(Function(x) x.Equals(False)) Then
            lbResultado.Items.Add(numero & " é divisível por : ")
        End If
        For y = 1 To 20
            If valor(y) Then
                lbResultado.Items.Add(y)
            End If
        Next
    End Sub

Aqui criamos um array com 20 valores booleanos inicializados com o valor False, e a seguir percorremos um laço for/next com valores de 1 a 20 chamando o método IsDivididoPor() e obtendo o resultado.

Ao final usamos uma consulta LINQ onde aplicamos o operador any que aplica uma função a uma seqüência para verificar se qualquer elemento satisfaz a função.

No exemplo abaixo temos um exemplo onde o operador any é usado para verificar em uma coleção de strings os nomes que iniciam com a letra 'J' :

Dim nomes As String() = {"Jefferson", "Bianca", "Maria", "Jessica"}
Dim resultado = nomes.Any(Function(n) n.StartsWith("J"))

Depois percorremos o array valor() e verificamos o resultado foi igual a True então exibimos o número no ListBox indicando que ele é divisível pelo número informado.

Se você quiser, pode incluir no evento KeyPress do TextBox txtNumero o código a seguir:

 Private Sub TxtNumero_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNumero.KeyPress
        If Not Char.IsDigit(e.KeyChar) Then
            e.Handled = True
            If (Asc(e.KeyChar) = 8) Then
                e.Handled = False
            End If
        End If
    End Sub

Assim permitimos somente valores numéricos na entrada do número pelo usuário.

Executando o projeto abaixo, vemos um exemplo de execução exibindo o resultado:

Pegue o sistema completo aqui: Divisibilidade_VBNET.zip

"Bendito seja o Deus e Pai de nosso Senhor Jesus Cristo, o Pai das misericórdias e o Deus de toda a consolação;
Que nos consola em toda a nossa tribulação, para que também possamos consolar os que estiverem em alguma tribulação, com a consolação com que nós mesmos somos consolados por Deus."
2 Coríntios 1:3,4

Referências:


José Carlos Macoratti