Arquivo

Posts Tagged ‘função’

Descobrindo Anos Bissextos

Este código pode lhe ser útil caso você esteja trabalhando com datas, calendários ou algo do tipo.

Se você quer saber se um determinado ano é bissexto ou não, esta função lhe dará precisamente a resposta.

Basta chamá-la passando o ano por parâmetro, assim:

isBissexto([ANO])

O retorno dessa função é um boolean (0 ou 1), indicando verdadeiro para anos bissextos.

A função:

sub isBissexto(){
          my $ano = $_[0];
          if ($ano%400==0){
            return 1;
          }elsif ($ano%4==0 && $ano%100!=0){
            return 1;
          }else{
            return 0;
          }
}

Veja o Código Completo
(func-isbissexto.pl)

#!/usr/bin/perl

print &isBissexto(1996);
# Mostrará na tela '1', pois 1996 é um ano bissexto.

sub isBissexto(){
        my $ano = $_[0];

        if ($ano%400==0){
            return 1;
        }elsif ($ano%4==0 && $ano%100!=0){
            return 1;
        }else{
            return 0;
        }
}

Descobrindo o Dia da Semana

Olá, estreiando nossa parte sobre Funções, um código para obter o dia da semana de qualquer data.

Seu funcionamento é muito simples. Você chama a função, informando uma data por parâmetro, e ela lhe retorna um número correspondente à data, dessa forma:

Retorna 0 se Domingo
Retorna 1 se Segunda
Retorna 2 se Terça
Retorna 3 se Quarta
Retorna 4 se Quinta
Retorna 5 se Sexta
Retorna 6 se Sábado

Para obter o resultado, devemos passar os três argumentos que correspondem ao dia, mes e ano, assim:

diaSemana([DIA,][MES,][ANO]);

Vamos ver agora como fica o corpo da função:

sub diaSemana(){
           my $dia = $_[0];
           my $mes = $_[1];
           my $ano = $_[2];
           my $d_semana=0;
           $d_semana=$ano+$dia+3*($mes-1)-1;
           if($mes<3){$ano--;}
           else{$d_semana-=int(0.4*$mes+2.3);}
           $d_semana+=int(($ano/4)-int((($ano/100+1)*0.75)));
           $d_semana%=7;
           return $d_semana;
}

Note que para pegar os argumentos, o Perl usa a array especial @_

Assim, em nosso script, para obter os três argumentos iniciais, informamos diretamente a posição destes ($_[0], $_[1] e $_[2]) para as respectivas variáveis locais (my) de destino.


Veja Funcionando:

[ Que Dia da Semana Caiu? ]


Veja o Código Completo:
(func-diasemana.pl)

#!/usr/bin/perl

print &diaSemana(13,4,2008);
# Mostrará na tela '0', porque 13/4/2008 caiu num Domingo.

sub diaSemana(){
           my $dia = $_[0];
           my $mes = $_[1];
           my $ano = $_[2];
           my $d_semana=0;
           $d_semana=$ano+$dia+3*($mes-1)-1;
           if($mes<3){$ano--;}
           else{$d_semana-=int(0.4*$mes+2.3);}
           $d_semana+=int(($ano/4)-int((($ano/100+1)*0.75)));
           $d_semana%=7;
           return $d_semana;
}