Informática Numaboa - Tutoriais e Programação
Linguagem Perl - Números e Datas
Sex 21 Nov 2008 14:00 |
- Detalhes
- Categoria: Perl e CGI
- Atualização: Sábado, 22 Novembro 2008 13:46
- Autor: vovó Vicki
- Acessos: 8609
Neste tutorial serão mostradas algumas das funções da linguagem Perl próprias para cálculos técnicos e científicos. Também serão vistas algumas funções que tratam de datas e horas.
Convenções para Valores Numéricos
Os valores numéricos não apresentam uma notação especial, apenas é preciso utilizar o ponto (e não a vírgula) como separador de decimais. Deste modo, o valor de Pi é anotado como 3.1416 (e não como 3,1416). Para valores muito altos ou muito baixos, assim como para valores decimais complexos, existem algumas possibilidades de notação. Exemplos:
Com e ou E define-se a quantidade de zeros que devem ficar após o número anotado.
No primeiro exemplo, E1 significa um zero, ou seja, o número multiplicado (valor positivo) por 10. Temos então 1 x 10 = 10.
No segundo exemplo, E4 significa quatro zeros, ou seja, o número multiplicado (valor positivo) por 10000. Temos então 1.2345 x 10000 = 12345.
No terceiro exemplo, e-3 significa três zeros, ou seja, o número dividido (valor negativo) por 1000. Temos então 2 / 1000 = 0.002
Cálculos Técnicos e Científicos
A Perl oferece funções para as funções matemáticas superiores mais importantes. Exemplos:
Com a função abs obtém-se o valor positivo de qualquer número. Passa-se o número como parâmetro e a função retorna o valor absoluto.
A função sqrt calcula a raiz quadrada de um número passado como parâmetro e retona o resultado.
Com a função int extrai-se a porção inteira de um número, ou seja, de 3.1416 a função retorna 3. No exemplo acima é possível observar como se pode passar uma função como parâmetro para outra função: a função int extrai o valor inteiro do resultado de retorno da função que calcula a raiz quadrada.
A função exp retorna a constante e potenciada. A potência desejada é o parâmetro necessário para a função retornar o valor calculado.
A função log calcula o logaritmo natural na base e de um número passado como parâmetro.
Como funções trigonométricas, Perl oferece sin para o seno, cos para o cosseno e atan2 para o arco tangente. Como parâmetro, é enviado o número desejado. Arco tangente espera por dois valores: de e até. As funções retornam o valor calculado.
É claro que, além de usar estas funções, pode-se efetuar cálculos matemáticos com os operadores matemáticos.
Para converter valores hexadecimais em decimais, pode-se utilizar a função hex. Passa-se um valor hexadecimal (dígitos de 0 a 9 e letras de A a F) como parâmetro e a função retorna o valor decimal correspondente.
Data e Hora
O exemplo acima obtém e processa uma data e hora, retornando o resultado formatado em Português.
Com a chamada da função time obtém-se a data e hora atuais. Esta função retorna, como é comum em Unix/Linux ou C, o número de milisegundos que decorreram desde 1.1.1970 até o presente momento. Este número tem um valor um tanto alto que não diz muita coisa, porém é muito exato. No exemplo dado este valor é atribuído à escalar $Agora, a base para a chamada da função localtime. Esta função aguarda como parâmetro um número, que ela interpreta como sendo o número de milisegundos decorridos desde 1.1.1970. A função processa o parâmetro e gera uma string que contém a data e a hora em formato internacional, por exemplo, Sun Aug 27 15:01:12 2000. Esta string é atribuída na escalar $HoraLocal.
A seguir, a subrotina EmPortugues é chamada. Esta subrotina substitui todas as abreviações internacionais de dias da semana e meses por nomes em Português. Os elementos da data e da hora em $HoraLocal estão separados por espaço, delimitador utilizado na diretiva @Tempo = split(/ /,$HoraLocal); para atribuir a cada elemento desta lista os valores dia, mês, ano, etc. Um destes elementos, o $Tempo[3], contém a hora. A hora é composta por horas, minutos e segundos separados por dois pontos. Esta cadeia de caracteres também tem seus componentes separados através da diretiva @Hora = split(/:/,$Tempo[3]); e os respectivos valores são atribuídos à lista @Hora. Com todos os componentes isolados em elementos de listas, o comando print pode ser utilizado com facilidade para mostrar o resultado obtido.