Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Tutoriais e Programação Perl e CGI Linguagem Perl - Números e Datas

Na Aldeia

Há 120 visitantes e 1 usuário registrado online

3290 registros
3 hoje
8 nesta semana
25 neste mês

Boas vindas: Celio

Estatística

Artigos: 1062
Leituras: 6000185
Arquivados: 21
Downloads: 533
Baixados: 170994
Glossário: 1208
Bibliografia: 25
Links: 90

Visitas de onde

Top 5:
Brasil flag 72%Brasil (34919)
Portugal flag 5%Portugal (2180)
EUA flag 4%EUA (1696)
Holanda flag 0%Holanda (234)
Rússia flag 0%Rússia (203)
48175 visitas de 97 países

Hoje:1224
Ontem:2653
No mês:22360
Mês passado:25815
Total:48175
Recorde:3037
No dia:04.03.10
Leituras hoje:7653
Leituras Total:210281
Bots hoje:183
Dados desde:16.02.2010

Login



Kanji da hora




Faça contato






Sex

21

Nov

2008


13:00

Linguagem Perl - Números e Datas PDF Imprimir Indique esta página
(0 votos, média 0 de 5)
Escrito por vovó Vicki   


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:

$a = 1E1;
$b = 1.2345E4;
$c = 2e-3;

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:

#!/usr/bin/perl
 
$ValorAbsoluto = abs(-45683);
print "O valor absoluto de -45683 é ", $ValorAbsoluto, "\n";
 
$Raiz = sqrt(23876);
print "A raiz quadrada de 23876 é ", $Raiz, "\n";
 
$Inteiro = int(sqrt(3298476));
print "O inteiro da raiz quadrada de 3298476 é ", $Inteiro, "\n";
 
$Exp = exp(39);
print "A potenciação de 39 na base e é ", $Exp, "\n";
 
$Log = log(23);
print "O logaritmo natural na base e de 23 é ", $Log, "\n";
 
$Seno = sin(1.2387);
$Coseno = cos(10.237);
$ArcoTangente = atan2(1.389,2.438);
print "O seno de 1.2387 é ", $Seno, "\n";
print "O co-seno de 10.237 é ", $Coseno, "\n";
print "O arco tangente de 1.389/2.438 é ", $ArcoTangente, "\n";
 
@ValorHex = (10,20,30,40,50,60,70,80,90,A0,B0,C0,D0,E0,F0);
for(@ValorHex) {
   $ValorDecimal = hex($_);
   print $_, " é a decimal ", $ValorDecimal, "\n";
}

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

#!/usr/bin/perl
 
$Agora = time();
$HoraLocal = localtime($Agora);
&EmPortugues;
@Tempo = split(/ +/,$HoraLocal);
@Hora = split(/:/,$Tempo[3]);
 
print "Boa Tarde!\n";
print "Hoje é ",$Tempo[0],", o ",$Tempo[2],". ",$Tempo[1]," ",$Tempo[4],"\n";
print "Agora são ",$Hora[0],":",$Hora[1]," horas\n";
 
sub EmPortugues {
   $HoraLocal =~ s/Mon/Segunda/;
   $HoraLocal =~ s/Tue/Terça/;
   $HoraLocal =~ s/Wed/Quarta/;
   $HoraLocal =~ s/Thu/Quinta/;
   $HoraLocal =~ s/Fri/Sexta/;
   $HoraLocal =~ s/Sat/Sábado/;
   $HoraLocal =~ s/Sun/Domingo/;
   $HoraLocal =~ s/Jan/Janeiro/;
   $HoraLocal =~ s/Feb/Fevereiro/;
   $HoraLocal =~ s/Mar/Março/;
   $HoraLocal =~ s/Apr/Abril/;
   $HoraLocal =~ s/May/Maio/;
   $HoraLocal =~ s/Jun/Junho/;
   $HoraLocal =~ s/Jul/Julho/;
   $HoraLocal =~ s/Aug/Agosto/;
   $HoraLocal =~ s/Sep/Setembro/;
   $HoraLocal =~ s/Oct/Outubro/;
   $HoraLocal =~ s/Nov/Novembro/;
   $HoraLocal =~ s/Dec/Dezembro/;
}

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.

Última atualização ( Sáb, 22.11.2008 12:46 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons