Pular para o conteúdo

Cálculo de feriados móveis em Gambas3

Dica publicada em Linux / Introdução
Alvaro G B Rodrigues alvarogr
Hits: 3.101 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Cálculo de feriados móveis em Gambas3

Os feriados móveis no Brasil são os seguintes:
  • Páscoa
  • Sexta-feira Santa
  • Carnaval
  • Corpus Chisti

Para calcular a data em que eles ocorrem, basta calcular o dia da Páscoa. Os demais são obtidos pela adição ou subtração de um determinado número de dias: subtraindo 47 dias do dia da Páscoa obtemos o dia correspondente à terça-feira de Carnaval; subtraindo 2 dias do dia da Páscoa obtemos a sexta-feira Santa e somando 60 dias ao dia da Páscoa obtemos o dia correspondente a Corpus Christi.

Para calcular o dia da Páscoa foi utilizado o algoritmo de Meeus/Jones/Butcher.

Descrição do aplicativo

1. Entrar no Gambas3.

2. Escolher New Project.

3. Selecionar Graphical application e clicar em Next.

4. Selecionar a pasta onde vai ficar o programa e clicar Next.

5. Informar o nome do projeto (Project name), por exemplo: FeriadosMoveis

6. Informar um título para o projeto, por exemplo: Cálculo do dia da Páscoa.

7. Clicar em OK.

8. Na tela que vai surgir clicar dua vezes em FMain. Vai abrir uma área para desenho do formulário.

No formulário deverão ser incluídos:
  • 5 Labeks
  • 5 TextBox: txtAno, txtCarna, txtSexta. txtPascoa e txtCorpus
  • 1 Button: Button1

Abaixo segue o código, composto de uma função (FeriadoMovel) e um evento Button1_Click.

A função implementa o algoritmo de Meeus/Jones/Butcher e o evento calcula as demais datas usando, para isso, a função interna DateAdd(data, gb.day, numero de dias), onde:
  • data -> data base, no caso o dia da Páscoa;
  • gb.day -> constante interna que especifica que o cálculo será feto utilizando quantidade de dias;
  • número de dias: uma quantidade positiva ou negativa de dias.

Pra utilizar a função DateAdd é necessário incorporar o componente gb,vb às propriedades do projeto.

Código fonte do aplicativo para cálculo de feriados móveis.

' Gambas class file

   Public Function FeriadoMovel(Ano As Integer) As Date

            Dim a, b, c, d, e, f, g, h, i, k, l, m, mes, dia As Integer
            Dim Pascoa As Date

            a = Ano Mod 19
            b = Int(Ano / 100)
            c = Ano Mod 100
            d = Int(b / 4)
            e = b Mod 4
            f = Int((b + 8) / 25)
            g = Int((b - f + 1) / 3)
            h = (19 * a + b - d - g + 15) Mod 30
            i = Int(c / 4)
            k = c Mod 4
            l = (32 + 2 * e + 2 * i - h - k) Mod 7
            m = Int((a + 11 * h + 22 * l) / 451)
            mes = Int((h + l - 7 * m + 114) / 31)
            dia = ((h + l - 7 * m + 114) Mod 31) + 1
            Pascoa = CDate(mes & "/" & dia & "/" & Ano)
            Return Pascoa
   End Function

Public Sub Button1_Click()

        Dim ano As Integer
        Dim pascoa As Date
        Dim sexta As Date
        Dim carna As Date
        Dim corpus As Date
        txtAno.Select()
        ano = CInt(txtAno.Text)

        pascoa = FeriadoMovel(ano)

        sexta = DateAdd(pascoa, gb.day, -2)
        carna = DateAdd(pascoa, gb.day, -47)
        corpus = DateAdd(pascoa, gb.day, 60)

        txtPascoa.Text = Format$(pascoa, "dd/mm/yyyy")
        txtCarna.Text = Format$(carna, "dd/mm/yyyy")
        txtSexta.Text = Format$(sexta, "dd/mm/yyyy")
        txtCorpus.Text = Format$(corpus, "dd/mm/yyyy")

End

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Ubuntu no Pendrive: Erro: "/casper/vmlinuz: file not found" [Resolvido]

Comparativo de custo: Software Livre x Proprietário

Conheça o Desktop 3D do Ubuntu 7.04 (Feisty Fawn)

Conectando a Wireless via PPPoE no Ubuntu 10.10

Permissões e privilégios no Linux

#1 Comentário enviado por removido em 26/03/2018 - 16:29h
Ali em Labeks,tu quis dizer labels?
#2 Comentário enviado por alvarogr em 27/03/2018 - 06:44h

[1] Comentário enviado por Capitao_Zap em 26/03/2018 - 16:29h

Ali em Labeks,tu quis dizer labels?


Sim, desculpem o engano.

Contribuir com comentário

Entre na sua conta para comentar.