Páscoa - Festas Móveis

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

[ Hits: 3.558 ]

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

Iptables com nat, prioridade de pacotes e bloqueio de portas

Lista de programas, escolha e instalação

Script que verifica se existem arquivos repetidos em dois diretórios

Facilitando a vida com Fedora 8

Fibonacci em bash shell


  

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