Páscoa - Festas Móveis

Publicado por Khayla Elias dos Santos (última atualização em 09/06/2014)

[ Hits: 3.956 ]

Homepage: https://linktr.ee/khayla.elias

Download pascoa




Calcula datas de feriados nacionais móveis baseados na Páscoa através do algoritmo de Jean Baptiste Joseph Delambre.

Exemplo de uso:

$ pascoa 2014

O parâmetro de entrada é opcional, caso se refira ao ano corrente.

  



Esconder código-fonte

#!/bin/bash

# Calculo dos Feriados Nacionais baseados na Pascoa através do
# Algoritmo de Jean Baptiste Joseph Delambre (1749 – 1822).
#
# Por: Alexandre Elias dos Santos (aleniac@yahoo.com.br)

# confere parametro de entrada
if [ $# != 0 ]; then
if [ $1 -ge 1583 ]; then
y=$1
else
echo "Erro: Ano deve ser maior ou igual a 1583!"
exit 1
fi
else
y=`date +%Y`
fi

#testa ano bissexto para calendario gregoriano
function bissexto(){
local y=$1
if ([ $(($y % 4)) -eq 0 ] && [ $(($y % 100)) -ne 0 ]) || [ $(($y % 400)) -eq 0 ]
then return 1
else return 0
fi
} # bissexto – retorna 1 se ano for bissexto, caso contrario 0.

# vetores para armazenar dia e mes dos feriados moveis (carnaval, paixao, pascoa, corpus)
vdia=(0 0 0 0)
vmes=(0 0 0 0)
# vetor para saida do teste de ano bissexto
bis=("nao" "sim")

#calcula pascoa
a=$(($y % 19))
b=$(($y / 100))
c=$(($y % 100))
d=$(($b / 4))
e=$(($b % 4))
f=$((($b + 8 ) / 25))
g=$((($b -$f + 1) / 3))
h=$(((19 * $a + $b - $d - $g + 15) % 30))
i=$(($c / 4))
k=$(($c % 4))
l=$(((32 + 2 * $e + 2 * $i - $h - $k) % 7))
m=$((($a + 11 * $h + 22 * $l) / 451))
p=$((($h + $l - 7 * $m + 114) / 31))
q=$((($h + $l - 7 * $m + 114) % 31))
q=$(($q + 1))

vdia[2]=$q
vmes[2]=$p

#verifica se ano e’ bissexto
bissexto $y
bi=$?

# calcula Sexta da Paixao
if [ $q -le 2 ]; then
vdia[1]=$((29 + $q)) # dia
vmes[1]=3 #mes
else
vdia[1]=$(($q - 2)) # dia
vmes[1]=$p # mes
fi

# calcula terça de Carnaval
if [ $p -eq 4 ]; then
if [ $q -le 16 ]; then
vdia[0]=$((12 + $bi + $q))
vmes[0]=2
else
vdia[0]=$(($q - 16))
vmes[0]=3
fi
else
vdia[0]=$(($bi + $q - 19))
vmes[0]=2
fi

# calcula quinta de Corpus
vdia[3]=$(($q - 1))
if [ $p -eq 3 ]; then
vmes[3]=5
else
if [ $q -eq 1 ]; then
vdia[3]=31
vmes[3]=5
else
vmes[3]=6
fi
fi

# saidas
echo "Datas das Festas Moveis em $y"
echo "Algoritmo de Delambre (1749 - 1822)"
echo
echo -e "Ano Bissexto: \t${bis[$bi]}"
echo -e "Carnaval: \t${vdia[0]}/${vmes[0]}"
echo -e "Paixao: \t${vdia[1]}/${vmes[1]}"
echo -e "Pascoa: \t${vdia[2]}/${vmes[2]}"
echo -e "Corpus: \t${vdia[3]}/${vmes[3]}"

Scripts recomendados

addduser

Verificando existência de computadores na rede

Script para verificação do serviço do Apache (webserver) em sistemas Linux Ubun

Script para visualizar logs do squid

Números impares no intervalo entre 2 números


  

Comentários
[1] Comentário enviado por vitinho217 em 07/07/2014 - 11:35h

Muito bom, não conhecia o algoritmo de Jean Baptiste Joseph Delambre. Vou estuda-lo com certeza.

Um abraço, VIVA O LINUX !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts