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; }