UM CONTADOR DE DIAS
1- A origem da demanda: a necessidade de se construir um contador de tempo
surgiu na necessidade de se contar a duração de cada contrato de trabalho
para levantamento do tempo de serviço de um cliente. O objetivo final do
cliente é obter a aposentadoria por tempo de serviço, junto ao INSS.
2- A solução tradicional do problema: antes de propormos uma solução que
envolva o computador, iremos encarar o problema sem o auxílio da máquina.
Ora, para contar o tempo,
manualmente, iremos implantar os seguintes
passos:
2.1- adotemos o valor 0 para o nosso contador de dias;
2.2- obtenhamos a data de início e de término do primeiro contrato;
2.3- partindo-se da data de início do contrato, vamos acrescentar 1 unidade a
ela e adotar a nova data como início do contrato;
2.4- o passo seguinte será comparar a nova data obtida com a data de final de
contrato;
2.4.1- se a nova data for igual à data do final do contrato, o valor contido em
nosso contador de dias, até aqui, será a resposta final para nossa demanda;
2.4.2- se a nova data for anterior à data do final do contrato, deveremos
acrescentar 1 unidade ao contador de dias e retornar ao passo: 2.3;
2.5- Nota 1: a sequência de 2.3 a 2.4.2 caracterizará o nosso laço, quando da
montagem de um programa para resolver o problema proposto;
2.6- Nota 2: notem que o conteúdo da solução do problema é extremamente
simples. Entretanto, para um caso como: data de início do contrato:
02.02.2007, data de término do contrato: 04.11.2014, o ciclo proposto acima
deverá ser repetido por: 2834 vezes. Ora, se supusermos que iremos consumir
12 segundos para cada aplicação do ciclo, manualmente, chegaremos a: 12 x
2834 = 34008 segundos. Isto equivale a 9,75 horas. Se cobrarmos: R$ 15,00
por hora de trabalho, tratando-se de uma atividade de baixa qualificação,
teremos um custo de: R$ 146,25 para a execução apenas desta parte do
trabalho e somente para este contrato. Ora, convenhamos, nenhum cliente irá
se dispor a nos pagar esta quantia pelo trabalho citado.
3. A viabilidade da solução informatizada: ora, admitamos que o custo da hora
de nosso trabalho para gerar um script em Java que responda à nossa
demanda seja de: R$ 40,00. É perfeitamente viável montar o script em 15
horas de trabalho. Logo, o custo total será de: R$ 600,00. Evidentemente, o
script ficará disponível para uso em outras demandas semelhantes. Um valor
que julgamos aceitável para atender à demanda de nosso cliente específico
seria: R$ 30,00. Lembrando que o cliente possui em sua Carteira de Trabalho,
8 contratos de trabalho. Logo, a elaboração do script se pagaria com o
atendimento de apenas 20 clientes com demandas semelhantes o que é uma
situação bastante aceitável.
4- Os estudos relativos à parte legal da demanda: será necessário, além de
contar o tempo de duração de cada contrato de trabalho, consolidar os dados
obtidos, o que deve ser feito dentro do próprio software e consultar e informar o
cliente sobre a parte legal da demanda. A consulta à legislação demandará 4
horas de trabalho e será feita uma única vez. Considerando-se o custo de: R$
30,00 por hora, teremos: R$ 120,00 para esta etapa. O custo total da
implantação da solução para a demanda passará para: R$ 720,00. Ora,
mantendo-se o valor cobrado por cliente, em: R$ 30,00, serão necessários 24
clientes para cobrir os custos integrais do projeto.
5- O software: criar o script não será nada mais nada menos que traduzir para
uma linguagem compreensível pela máquina, a solução manual encontrada.
6- O script passo a passo: inicialmente iremos criar variáveis para abrigar: as
datas: inicial e final e o contador de dias;
6.1- a nossa solução irá adotar as variáveis dia, mês e ano, para data inicial e
final. Ao emitir mensagens contendo datas, iremos montar a data no momento,
utilizando os valores disponíveis de dia, mês e ano;
6.2- agora, o cliente deverá fornecer a data inicial e a final, usando 3 caixas
disponibilizadas,. para cada uma delas;
6.3- em seguida, o cliente irá clicar sobre o botão: "CONTADOR":
6.3.1- estarão disponíveis 2 sistemas de proteção contra falta de inserção ou
inserção de dados incorretos:
6.3.1.1- se pelo menos uma das caixas (são ao todo 6) para inserção de dia,
mês e ano, estiver vazia, no momento em que se clica o contador, será emitida
1 mensagem de erro e a execução do script será interrompida;
6.3.1.2- se for inserido, em qualquer das 6 caixas, 1 ou mais valores que
caracterizem data final anterior à data inicial, será emitida 1 mensagem de erro
e a execução do script será interrompida;
6.3.1.3- caso se digitem dados que caracterizem a mesma data inicial e final, o
script será executado e no final, o número de dias será igual a 0.
6.3.1.4- caso se entre com algo diferente de números em 1 das caixas, o script
não será executado.
6.4-
Botões
auxiliares:
são
botões
que
irão
auxiliar
em
situações
complementares à execução do script:
6.4.1- : o botão: "AJUDA": irá disponibilizar algumas mensagens de orientações
gerais sobre o uso do script;
6.4.2- o botão: "LIMPA' irá esvaziar o conteúdo das caixas: 1 a 6, mantendo-se
a opção de seleção (checkbox) presente;
6.4.3- o botão: "ESVAZIA" era esvaziar o conteúdo das caixas que contêm:
"DIAS A ACRESCER" e "DATA OBTIDA";
6.4.4- o botão:"ZERA ACUMULADOR" irá zerar o valor do acumulador de dias
contados;
6.4.5- o botão: "CONTA HOMOLOGA" irá contar o número de anos e meses
que durou um contrato de trabalho. O critério (previsto em Lei) será contar
apenas meses em que se tenha trabalhado mais que 14 dias.
7. Opções de seleção (checkbox): o cliente poderá optar por 1 dos 2 box:
"CONTA OU ACRESCENTA TEMPO" ou "CONTA TEMPO PARA RESCISÃO".
8-Opções adicionais oferecidas pelo software: a proposta inicial previa apenas
a criação do software para contar dias transcorridos entre duas datas. Foram
acrescentadas duas outras opções: "ACRÉSCIMO DE DIAS" que permitirá
verificar a data obtida com o acréscimo de um número de dias definido pelo
cliente e: "CONTAGEM DE TEMPO PARA RESCISÃO" que permitirá
determinar, em última análise, o número de 12 avós para cálculo de verbas
rescisórias por períodos parciais.
9. Momentos de definição na criação do software: a montagem do software,
olhando-se de uma maneira geral, parece bastante óbvia. Entretanto, em
alguns momentos, foi necessária alguma criatividade para encontrar o melhor
caminho:
8.1- a transição entre meses e anos: a cada novo incremento do dia, é
necessário que se faça um checagem para que não extrapolemos a duração de
cada mês do ano. Observado o avanço, além do dia com maior número de
cada mês, é necessário que se retorne o dia para 1 e se avance 1 unidade no
número do mês:
8.1.1- neste momento, caso o mês seja maior que 12, deve-se retornar o valor
do mês para 1 e incrementar o ano de 1 unidade.
8.2- os meses do ano foram divididos em grupos, de acordo com a duração de
cada 1: na verdade existem 3 grupos de meses, de acordo com a duração
deles.
8.2.1- meses com 30 dias: abril, junho, setembro e novembro;
8.2.2- meses com 31 dias: janeiro, março, maio, julho, agosto, outubro e
dezembro;
8.2.3- mês com 28 ou 29 dias: fevereiro:
8.2.3.1- ano não bissexto: o mês de fevereiro possui 28 dias;
8.2.3.2- ano bissexto: o mês de fevereiro possui 29 dias.
8.2.3.3- como o software pode distinguir um ano bissexto de um não bissexto: o
ano será bissexto se o número que o representa, no formato: 9999, for divisível
por 4 e não for divisível por 100. Isso equivale a dizer que: será bissexto o ano
cujo número que o representa seja divisível por 4 e não seja divisível por 25.
Portanto, para que o ano não seja bissexto, basta que o número citado não
seja divisível por 4 ou, sendo divisível por 4, também seja divisível por 25, ou
ainda, não seja divisível por 4, sequer por 25.
8.2.3.4- observe que existe apenas 1 opção para que o ano seja bissexto,
existindo outras 3 para que não seja. Esta circunstância nos obrigou a fazer a
opção por fazer a transição de mês e ano em uma função isolada que é
chamada de dentro da função de contagem.
Se optássemos por fazer a
transição dentro do módulo de contagem, o caso do mês de fevereiro criaria
uma situação muito complicada e passível de nos conduzir facilmente a 1 erro.
9- Obtenha o código completo do script: utilize o link: CONTADOR DE DIAS
(www.sofstica.com.br/contadia1.html), clicando com o botão direito do mouse e
selecionando: “exibir código fonte da página". Você terá acesso às 369 linhas
de código do script em Java.
Download

UM CONTADOR DE DIAS 1- A origem da demanda: a necessidade