A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Linguagem Perl - Números e Datas

Sex

21

Nov

2008


14:00

(0 votos, média de 5) 


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.

william hill casino clubnikas restaurantкернес никас александр лобановскийподставкахарьковские новости про актеровадреса никас

Informações adicionais