Neste artigo vou uma maneira bem simples de converter graus para minutos e segundos usando a linguagem VB .NET. |
Os ângulos são medidos em graus (1º) - e as subunidades dos graus são os minutos (1º = 60') e os segundos (1' = 60").
Fazendo a conversão
Suponha que você tenha que dividir um ângulo de 90° por 4
x = 90 / 4 =>
22,5°
O ideal, no entanto, é que você apresente o resultado sem "vírgulas", mas
transformando a parte decimal (0,5) em minutos e segundos. Assim :
22,5° = 22° + 0,5°
Para transformar 0,5° em minutos vamos usar a regra de três simples:
1°
-----> 60'
0,5° -----> x
Calculando temos que
x= 30'
Convertendo minutos e
segundos
Em
alguns casos, você terá uma medida com minutos e segundos:
y = 30,12º = 30º + 0,12º
Transformando 0,12º
aplicando a regra de très teremos:
y= 60' x 0,12º = 7,2' => 7' +
0,2'
Você tem, então, minutos e "frações" de minutos.
1' -----> 60''
0,2' -----> x
x= 60 x 0,2 = 12''
Reagrupando temos que
30,12° é igual
30° 7' 12''.
Vamos ver como podemos implementar essa lógica usando código VB .NET de uma maneira bem simples.
Recursos Usados
Criando o projeto Windows Forms
Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem VB .NET e o template Windows Forms Application.
Informe um nome a seu gosto. Eu vou usar o nome Vbnet_Graus_MinutosSegundos;
Selecione o formulário Form1.vb e partir da ToolBox inclua os seguintes controles:
2 Labels
2 TextBox - txtGraus, txtMinutosSegundos
2 Button - btnConverter, btnSair
Disponha os controles conforme o leiaute da figura abaixo:
Criando o método para converter Graus para Minutos e Segundos
No formulário (ou em uma classe) crie o método ConverterGrausParaMinutosSegundos() com o código abaixo:
Function ConverterGrausParaMinutosSegundos(ByVal grausDecimais As Decimal) As String
Try
Dim decimalGrauAbs As Decimal = Math.Abs(grausDecimais)
Dim valorRetornado As String = "'"
Dim grauSimbolo As String = "°"
Dim minutoSimbolo As String = "’"
Dim segundoSimbolo As String = """"
Dim Graus As String = Math.Truncate(decimalGrauAbs) & grauSimbolo
Dim minutosDecimal As Decimal = (decimalGrauAbs - Math.Truncate(decimalGrauAbs)) * 60
Dim segundosDecimal As Decimal = (minutosDecimal - Math.Truncate(minutosDecimal))
Dim Minutos As String = Math.Truncate(minutosDecimal) & minutoSimbolo
Dim Segundos As String = String.Format("{0:##.0000}", (segundosDecimal * 60)) & segundoSimbolo
valorRetornado = Graus & " " & Minutos & " " & Segundos
Return valorRetornado
Catch ex As Exception
Throw ex
End Try
End Function
|
Este código usa o método Math.Abs que retorna um valor absoluto do número e o método Math.Truncate que calcula a parte integral de um número decimal especificado.
Código do evento TextChanged e do botão para converter
Abaixo temos o código dos eventos TextChanged e KeyPress do controle TextBox - txtGraus - e, do botão de comando - Converter:
Private Sub txtGraus_TextChanged(sender As Object, e As EventArgs) Handles txtGraus.TextChanged
If (txtGraus.Text Is Nothing Or txtGraus.Text.Trim().Length < 1) Then
btnConverter.Enabled = False
Else
btnConverter.Enabled = True
End If
End Sub
Private Sub txtGraus_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtGraus.KeyPress
e.Handled = Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = ",")
End Sub
Private Sub btnConverter_Click(sender As Object, e As EventArgs) Handles btnConverter.Click
Dim valor As Decimal
If (String.IsNullOrWhiteSpace(txtGraus.Text)) Then
MessageBox.Show("Informe um valor em graus...")
Else
valor = Convert.ToDecimal(txtGraus.Text)
End If
Try
txtMinutosSegundos.Text = ConverterGrausParaMinutosSegundos(valor)
Catch ex As Exception
MessageBox.Show("Erro : " + ex.Message)
End Try
End Sub
|
Este código habilita o botão para conversão apenas se algum valor for digitado na caixa de texto txtGraus e permite que seja digitado somente valores númericos e a vírgula (,) no TextBox.
A conversão é feita passando o valor digitado, que é convertido antes para decimal, para a função ConverterGrausParaMinutosSegundos sendo o resultado exibido no segundo TextBox - txtMinutosSegundos.
Executando o projeto e iremos obter o seguinte resultado:
Pegue o projeto completo aqui : Vbnet_Graus_MinutosSegundos.zip
Todas as coisas são puras para os
puros, mas nada é puro para os contaminados e infiéis; antes o seu
entendimento e consciência estão contaminados.
Confessam que conhecem a Deus, mas negam-no com as obras, sendo abomináveis,
e desobedientes, e reprovados para toda a boa obra.
Tito 1:15,16
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
VB .NET - DataGridView - Selecionando e exibindo registros - Macoratti
C# - DataGridView - Salvando o conteúdo e realizando ... - Macoratti
C# - Mestre Detalhes com DataGrid e DataGridView - Macoratti