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
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#