Você está aqui: Java ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104

Boleto Bancário Java - Como calcular o fator de vencimento do boleto bancário - Boleto Caixa Econômica

Quantidade de visualizações: 7470 vezes
Nesta dica mostrarei, passo-a-passo, como calcular o fator de vencimento para o boleto e arquivos de remessa da Caixa Econômica Federal (Banco 104) de acordo com o Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro e Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro). Tenha certeza de verificar sua versão do manual antes de usar o código abaixo.

O fator de vencimento, nos boletos bancários da Caixa, aparecem no 5º campo da linha digitável e também nas posições 6 a 9 do código de barras. Trata-se de um valor inteiro composto por quatro dígitos, conforme podemos ver na figura a seguir:



O fator de vencimento é resultado da subtração entre a data de vencimento do boleto e a data base, fixada em 07/10/1997 (03/07/2000 retrocedidos 1000 dias do início do processo). Dessa forma, o fator de vencimento não é nada mais que a quantidade de dias decorridos da data base à data de vencimento do título.

Veja o código Java completo que calcula o fator de vencimento a partir de uma data informada. Note que eu defini a data de vencimento como uma variável, mas você poderia obtê-la a partir de um formulário ou de uma tabela no banco de dados.

Eis o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Estudos{
  public static void main(String[] args){
    // vamos calcular o fator de vencimento
    String vencimento = "10/07/2021";
    int fator = fatorVencimento(vencimento);
    System.out.println("O fator de vencimento para a data " +
      vencimento + " é: " + fator);
  }

  // recebe o vencimento no formato dia/mês/ano
  // e retorna o fator de vencimento
  public static int fatorVencimento(String vencimento) {
    int fator = 0;
    
    try{
      SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
      Date dtVencimento = sdf.parse(vencimento);
      // vamos construir a data base 07/10/1997
      Date dtBase = sdf.parse("07/10/1997");
    
      // finalmente obtemos o fator de vencimento
      long fatorMilisegundos = dtVencimento.getTime() -
        dtBase.getTime();
      fator = (int)(fatorMilisegundos / (1000 * 60 * 60 * 24));
    }
    catch(ParseException erro){
      System.out.println("Erro: " + erro.getMessage());
    }
    
    return fator;
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

O fator de vencimento para a data 10/07/2021 é: 8677

Agora vamos fazer o contrário, ou seja, um código Java que lê o fator de vencimento e retorna a data de vencimento do boleto (esse é o processo que os sistemas bancários fazem quando inserimos a linha digitável de um boleto nos terminais). Veja o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Estudos{
  public static void main(String[] args){
    // vamos calcular o vencimento a partir do
    // fator de vencimento
    int fator = 8677;
    String vencimento = obterVencimento(fator);
    System.out.println("A data de vencimento para o fator " + 
      fator + " é: " + vencimento);
  }

  // recebe o fator de vencimento e retorna a data
  // de vencimento no formato dia/mês/ano
  public static String obterVencimento(int fator){
    String vencimento = "00/00/0000";
      
    // vamos construir a data base 07/10/1997
    try{
      SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
      Date dtBase = sdf.parse("07/10/1997");

      // vamos adicionar dias a essa data
      Calendar cal = Calendar.getInstance();
      cal.setTime(dtBase);
      cal.add(Calendar.DAY_OF_MONTH, fator);  
	
      // agora obtemos o vencimento 
      vencimento = sdf.format(cal.getTime());
    }
    catch(ParseException erro){
      System.out.println("Erro: " + erro.getMessage());
    }
    
    // e retornamos o vencimento no formato DD/MM/YYYY
    return vencimento;
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

A data de vencimento para o fator 8677 é: 10/07/2021

Link para compartilhar na Internet ou com seus amigos:

Python ::: Python para Engenharia ::: Geometria Analítica e Álgebra Linear

Como converter Coordenadas Cartesianas para Coordenadas Polares usando Python

Quantidade de visualizações: 5097 vezes
Nesta nossa série de Python para Geometria Analítica e Álgebra Linear, mostrarei um código 100% funcional para fazer a conversão entre coordenadas cartesianas e coordenadas polares. Esta operação é muito frequente em computação gráfica e é parte integrante das disciplinas dos cursos de Engenharia (com maior ênfase na Engenharia Civil).

Na matemática, principalmente em Geometria e Trigonometria, o sistema de Coordenadas no Plano Cartesiano, ou Espaço Cartesiano, é um sistema que define cada ponto em um plano associando-o, unicamente, a um conjuntos de pontos numéricos.

Dessa forma, no plano cartesiano, um ponto é representado pelas coordenadas (x, y), com o x indicando o eixo horizontal (eixo das abscissas) e o y indicando o eixo vertical (eixo das ordenadas). Quando saímos do plano (espaço 2D ou R2) para o espaço (espaço 3D ou R3), temos a inclusão do eixo z (que indica profundidade).

Já o sistema de Coordenadas Polares é um sistema de coordenadas em duas dimensões no qual cada ponto no plano é determinado por sua distância a partir de um ponto de referência conhecido como raio (r) e um ângulo a partir de uma direção de referência. Este ângulo é normalmente chamado de theta (__$\theta__$). Assim, um ponto em Coordenadas Polares é conhecido por sua posição (r, __$\theta__$).

Antes de prosseguirmos, veja uma imagem demonstrando os dois sistemas de coordenadas:



A fórmula para conversão de Coordenadas Cartesianas para Coordenadas Polares é:

__$r = \sqrt{x^2+y2}__$
__$\theta = \\arctan\left(\frac{y}{x}\right)__$

E aqui está o código Python completo que recebe as coordenadas cartesianas (x, y) e retorna as coordenadas polares (r, __$\theta__$):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importamos a bibliteca NumPy
import numpy as np
import math as math
  
def main():
  # vamos ler as coordenadas cartesianas
  x = float(input("Valor de x: "))
  y = float(input("Valor de y: "))

  # vamos calcular o raio
  raio = math.sqrt(math.pow(x, 2) + math.pow(y, 2))  

  # agora calculamos o theta (ângulo) em radianos 
  theta = np.arctan2(y, x)

  # queremos o ângulo em graus também
  angulo_graus = 180 * (theta / math.pi) 

  # e exibimos o resultado
  print("As Coordenadas Polares são:")
  print("raio = %0.4f, theta = %0.4f, ângulo em graus = %0.2f" 
    % (raio, theta, angulo_graus))

if __name__== "__main__":
  main()

Ao executar este código nós teremos o seguinte resultado:

Valor de x: -1
Valor de y: 1
As Coordenadas Polares são:
raio = 1.4142, theta = 2.3562, ângulo em graus = 135.00

Veja que as coordenadas polares equivalentes são (__$\sqrt{2}__$, __$\frac{3\pi}{4}__$), com o theta em radianos. Sim, os professores das disciplinas de Geometria Analítica e Álgebra Linear, Física e outras gostam de escrever os resultados usando raízes e frações em vez de valores reais.


Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid

Como obter o índice da linha da célula atual em um TDBGrid do Delphi

Quantidade de visualizações: 9595 vezes
Como obter o índice da linha da célula atual (com foco) em um TDBGrid do Delphi

Em algumas situações precisamos obter o índice da linha da célula atual, ou seja, a célula que detém o foco no momento em um TDBGrid. Isso pode ser feito por meio da propriedade Row da classe TCustomGrid (e publicada na classe TStringGrid). Como esta propriedade não está publicada na classe TDBGrid (Delphi 2009), o que fazemos é um casting para a classe TStringGrid.

Veja um trecho de código no qual usamos o evento Click de um botão para informar o índice da linha da célula atual:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm3.Button3Click(Sender: TObject);
var
  indice: Integer;
begin
  // vamos obter o índice da linha da célula atual
  indice := TStringGrid(DBGrid1).Row;
  ShowMessage('O índice da linha da célula atual é: ' +
    IntToStr(indice));
end;

Execute o código e clique no botão. Você verá uma mensagem parecida com:

"O índice da linha da célula atual é: 4".

Lembre-se de que o índice da linha fixa do DBGrid é 0.

Esta dica foi escrita e testada no Delphi 2009.


PHP ::: Dicas & Truques ::: Arquivos e Diretórios

Como ler e processar os dados de um arquivo CSV usando a função fgetcsv() do PHP

Quantidade de visualizações: 26132 vezes
Arquivos CSV são arquivos texto cujas linhas possuem valores separados por vírgulas (ou ponto-e-vírgula, dois pontos, etc). As informações contidas em tais arquivos podem ser lidas usando-se a função fgetcsv(). Esta função recebe um ponteiro para um arquivo, o tamanho da maior linha de texto no arquivo (forneça 0 se não quiser ter este limite em seu código) e o caractere de delimitação (no exemplo eu usei ponto-e-vírgula).

Observe a estrutura do seguinte arquivo CSV:

23;OSMAR J SILVA;AV. LESTE, 54;GOIANIA;GO
19;MARCOS DE PAULA;RUA L, 523;SÃO PAULO;SP


As informações deste arquivo podem ser lidas usando-se o código abaixo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<?php
  // nome do arquivo
  $arquivo = 'dados.csv';
 
  // ponteiro para o arquivo
  $fp = fopen($arquivo, "r");

  // processa os dados do arquivo
  while(($dados = fgetcsv($fp, 0, ";")) !== FALSE){
    $quant_campos = count($dados);
    for($i = 0; $i < $quant_campos; $i++){
      echo $dados[$i] . "<br>";
    }
    echo "<br>";
  }

  fclose($fp);
?>

Ao executar este código PHP nós teremos o seguinte resultado:

23
OSMAR J SILVA
AV. LESTE, 54
GOIANIA
GO

19
MARCOS DE PAULA
RUA L, 523
SÃO PAULO
SP


Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Exercícios Resolvidos de Portugol - A concessionária de veículos "CARANGO VELHO" está vendendo os seus veículos com descontos. Faça um algoritmo Portugol

Quantidade de visualizações: 450 vezes
Pergunta/Tarefa:

A concessionária de veículos "CARANGO VELHO" está vendendo os seus veículos com descontos. Faça um algoritmo Portugol que calcule e exiba o valor do desconto e o valor a ser pago pelo cliente de vários carros. O desconto deverá ser calculado de acordo com o ano do veículo.

Até o ano 2000 o desconto é 12%, e acima de 2000 o desconto é de 7%. Seu código deverá solicitar o valor do carro e o seu ano e aplicar o desconto correspondente. Além disso o sistema deverá perguntar se deseja continuar calculando descontos até que a resposta seja: "(N) Não". Informar o total de carros com ano até 2000 e o total geral a ser pago pelo cliente.

Sua saída deve ser parecida com:

Informe o valor do carro sem desconto: 25000
Informe o ano do carro: 2010
Desconto concedido: 1750
Valor do carro com desconto: 23250
Deseja adicionar mais carros? [S, N]: S

Informe o valor do carro sem desconto: 30500
Informe o ano do carro: 1985
Desconto concedido: 3660
Valor do carro com desconto: 26840
Deseja adicionar mais carros? [S, N]: S

Informe o valor do carro sem desconto: 16800
Informe o ano do carro: 1990
Desconto concedido: 2016
Valor do carro com desconto: 14784
Deseja adicionar mais carros? [S, N]: N

Total de carros com ano até 2000: 2
Total geral a pagar: 64874
Resposta/Solução:

Veja a resolução comentada deste exercício usando Portugol Webstudio:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

programa {
  funcao inicio() {
    // variáveis usadas na resolução do problema
    real valor_carro, valor_desconto, valor_carro_desconto
    real total_geral
    inteiro ano
    inteiro total_carros_ano_2000
    caracter resposta
    
    // vamos inicializar os valores de algumas variáveis
    total_geral = 0
    total_carros_ano_2000 = 0

    // repete até que o usuário informe o valor "N"
    faca {
      // vamos ler o valor do carro sem desconto
      escreva("\nInforme o valor do carro sem desconto: ")
      leia(valor_carro)
      
      // vamos ler o ano do carro
      escreva("Informe o ano do carro: ")
      leia(ano)

      // o ano é menor ou igual a 2000
      se (ano <= 2000) {
        valor_desconto = valor_carro * (12.0 / 100.0)
        // vamos somar mais este carro
        total_carros_ano_2000 = total_carros_ano_2000 + 1
      }
      senao {
        valor_desconto = valor_carro * (7.0 / 100.0)
      }

      // calculamos o valor do carro com o desconto
      valor_carro_desconto = valor_carro - valor_desconto
      escreva("Desconto concedido: ", valor_desconto)
      escreva("\nValor do carro com desconto: ", valor_carro_desconto)

      // somamos mais este valor ao total geral
      total_geral = total_geral + valor_carro_desconto

      // perguntamos se o usuário deseja adicionar mais carros
      escreva("\nDeseja adicionar mais carros? [S, N]: ")
      leia(resposta)
    } enquanto((resposta != 'N') e (resposta != 'n'))  

    // mostramos os resultados
    escreva("\nTotal de carros com ano até 2000: ", total_carros_ano_2000)
    escreva("\nTotal geral a pagar: ", total_geral)
  }
}



JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como testar se ao menos um elemento de um array satisfaz uma condição em JavaScript usando a função some()

Quantidade de visualizações: 1737 vezes
O método some(), adicionado à linguagem JavaScript por meio do ECMAScript 5 (JavaScript 5, ECMAScript 2009, ES5) pode ser usado quando queremos verificar se um ou mais elementos de um vetor satisfaz uma determinada condição.

Este método nos permite fornecer uma função de callback que será chamada para cada um dos elementos do vetor. E o retorno do método some() é um valor true se ao menos um dos elementos passar no teste e false em caso contrário. Tão logo o valor true seja satisfeito, a função some() encerra sua execução imediatamente.

Veja um exemplo no qual testamos se AO MENOS um elemento do array é maior que 70:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<script type="text/javascript">
  function testar(valor, indice, vetor){
    if(valor > 70){
      return true;
    }
  }  

  var valores = new Array(21, 50, 30, 71, 12, 3);
  // vamos verificar se AO MENOS um valor é maior que 70
  var res = valores.some(testar);  
  window.alert("Alguns valores passaram no teste: " + res);
</script>

Aqui o resultado será true, pois o valor 71 passou no teste. É importante observar que, assim que a função de callback retorna true pela primeira vez, o método some() já abandona sua execução.

Uma função passada para o método some() pode conter os seguintes argumentos (nessa mesma ordem):

a) O valor do item;
b) O índice do item (opcional);
c) O vetor a partir do qual o método some() está sendo chamado (opcional).

Como última observação, o método some() não modifica o array original.


Desafios, Exercícios e Algoritmos Resolvidos de JavaScript

Veja mais Dicas e truques de JavaScript

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 74 usuários muito felizes estudando em nosso site.