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ômicaQuantidade 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 PythonQuantidade 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 DelphiQuantidade 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 PHPQuantidade 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 PortugolQuantidade 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 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 |
Software 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 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 |