Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
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 montar o código de barras juntamente com o seu dígito verificador (Módulo 11) - Boleto Caixa Econômica

Quantidade de visualizações: 2233 vezes
Em outras dicas dessa seção eu mostrei, passo-a-passo, como calcular o dígito verificador do código do cedente e também o campo livre, juntamente com o seu dígito verificador, para os boletos da Caixa Econômica Federal (Banco 104). Mostrei também nessa seção como calcular o fator de vencimento do boleto. Todos esses dados são essenciais para a montagem do código de barras e da linha digitável do boleto. Em caso de dúvidas, revise as demais dicas. Prossiga somente se você estiver bem seguro quanto aos conhecimentos anteriores.

Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), o código de barras para a cobrança contém 44 posições dispostas da seguinte forma:

a) Identificação do banco: Será sempre o valor 104, que é o número do banco para a Caixa Econômica;

b) Código da moeda: Será sempre o valor 9 (Real);

c) DV Geral do Código de Barras: Dígito verificador do código de barras que mostro como calcular mais abaixo;

d) Fator de Vencimento: Que já mostrei em dicas anteriores;

e) Valor do Documento: Composto por 10 dígitos, sem pontos nem vírgula;

f) Campo livre e seu dígito verificador: Composto por 25 posições, conforme já calculamos em dicas anteriores.

O cálculo que mostrarei a seguir está de acordo com as instruções do 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 apresentado.

Dito isso, veja o código Java completo para uma função que recebe o código do banco, o código da moeda, o fator de vencimento, o valor do boleto, o campo livre completo e retorna o código de barras, juntamente com o seu dígito verificador, já na posição correta:

package arquivodecodigos;

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

/*
  ATENÇÃO: As função complementares e já vistas em outras
  dicas dessa seção foram omitidas deste código
*/

public class Estudos{
  public static void main(String[] args){
    // ATENÇÃO: Se você ainda não entende os dados abaixo.
    // revise as dicas anteriores antes de continuar
    String banco = "104";
    String moeda = "9";
    String carteira = "1"; //  
    String emissao = "4"; // cedente
    String nossoNumero = "222333777777777";
    double valor = 321.12; // sempre duas casas decimais
    String vencimento = "23/08/2006";
    int fator = fatorVencimento(vencimento);
    String nossoNumeroCompleto = carteira + emissao + nossoNumero;
    String cedente = "005507";
    int dvCedente = dvCodigoCedente(cedente);
    String campoLivre = montarCampoLivre(cedente, dvCedente,
      nossoNumeroCompleto);
    String codigoBarras = montarCodigoBarras(banco, moeda, fator,
      valor, campoLivre);

    // vamos mostrar o resultado
    System.out.println("O código de barras oompleto é: " +
      codigoBarras);
  }
 
  // função que monta o código de barras
  public static String montarCodigoBarras(String banco,
    String moeda, int fator, double valor, String campoLivre){
  
    // precisamos tratar o valor do título
    NumberFormat nf = NumberFormat.getInstance();
    String strValor = nf.format(valor);
    strValor = strValor.replaceAll("\\.", "");
    strValor = strValor.replaceAll(",", "");
......


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

O código de barras provisório é: 1049324200000321120055077222133347777777771
O DV Geral do Código de Barras é: 4
O código de barras completo é: 10494324200000321120055077222133347777777771

Para não deixar o código desta dica muito longo, eu omiti algumas funções, que podem ser facilmente encontradas nas dicas anteriores.

Link para compartilhar na Internet ou com seus amigos:

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

Como somar os elementos da diagonal principal de uma matriz em PHP

Quantidade de visualizações: 2218 vezes
A Matriz quadrada é um tipo especial de matriz que possui o mesmo número de linhas e o mesmo número de colunas, ou seja, dada uma matriz Anxm, ela será uma matriz quadrada se, e somente se, n = m, onde n é o número de linhas e m é o número de colunas.

Em geral as matrizes quadradas são chamadas de Matrizes de Ordem n, onde n é o número de linhas e colunas. Dessa forma, uma matriz de ordem 4 é uma matriz que possui 4 linhas e quatro colunas.

Toda matriz quadrada possui duas diagonais, e elas são muito exploradas tanto na matemática quanto na construção de algorítmos. Essas duas diagonais são chamadas de Diagonal Principal e Diagonal Secundária.

A diagonal principal de uma matriz quadrada une o seu canto superior esquerdo ao canto inferior direito. Veja:



Nesta dica veremos como calcular a soma dos valores dos elementos da diagonal principal de uma matriz usando PHP. Para isso, só precisamos manter em mente que a diagonal principal de uma matriz A é a coleção das entradas Aij em que i é igual a j. Assim, tudo que temos a fazer é converter essa regra para código PHP.

Veja um trecho de código PHP completo no qual pedimos para o usuário informar os elementos da matriz e em seguida mostramos a soma dos elementos da diagonal superior:

<?php
  // vamos declarar e construir uma matriz de três linhas
  // e três colunas
  $matriz = array(  
    array(3, 7, 9),
    array(2, 4, 1),
    array(5, 6, 8)
  );
  
  // guarda a soma dos elementos na diagonal principal
  $soma_diagonal = 0;
  
  // vamos mostrar a matriz da forma que ela
  // foi informada
  echo "<br>";
  // percorre as linhas
  for($i = 0; $i < count($matriz); $i++){ 
    // percorre as colunas
    for($j = 0; $j < count($matriz[0]); $j++){
      echo $matriz[$i][$j] . "   ";
......


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

3 7 9
2 4 1
5 6 8

A soma dos elementos da diagonal principal é: 15



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: 384 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:

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
......



C# ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MDC em C#

Quantidade de visualizações: 13562 vezes
Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada:

Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

O trecho de código abaixo mostra como calcular o MDC de dois números informados:

static void Main(string[] args){
  Console.WriteLine("Este programa permite calcular o MDC\n");
  Console.Write("Informe o primeiro número: ");
  int x = int.Parse(Console.ReadLine());

  Console.Write("Informe o primeiro número: ");
  int y = int.Parse(Console.ReadLine());

  Console.WriteLine("\nO Máximo Divisor Comum de "
    + x + " e " + y + " é " + MDC(x, y));
......



Node.js ::: Node.js + MongoDB ::: Passos Iniciais

Node.js MongoDB - Como instalar o driver do MongoDB no Node.js e efetuar uma conexão Node.js + MongoDB

Quantidade de visualizações: 1155 vezes
Assumindo que você já conhece o banco de dados MongoDB, já fez sua instalação e já está um pouco familiarizado com suas características, nesta dica mostrarei como podemos efetuar uma conexão Node.js + MongoDB. Este é o passo inicial para desenvolver aplicações MEAN (Mongo, Express, Angular, Node) ou MERN (Mongo, Express, React, Node).

Note que, nessa dica, usarei apenas o MongoClient para efetuar a conexão com o banco de dados MongoDB. Em outras dicas eu abordo o Mongoose.

Então vamos iniciar. A primeira coisa que temos que fazer é instalar o driver MongoDB. Assim, com o Node.js devidamente instalado e funcionando, e com o banco MongoDB em perfeito funcionamento também, abra uma janela de terminal e digite o comando:

npm install mongodb
......


Após alguns minutos, a instalação será concluída e teremos o seguinte resultado:

+ mongodb@3.6.4
added 17 packages from 9 contributors and audited 20 packages in 9.358s

1 package is looking for funding
run `npm fund` for details

found 0 vulnerabilities

Agora já podemos escrever o código que efetua a conexão Node.js com o MongoDB. Abra o seu editor de códigos favorito e digite a listagem abaixo:

// vamos obter uma referência ao MongoClient
var MongoClient = require('mongodb').MongoClient;

// vamos nos conectar à base de dados escola
var url = 'mongodb://localhost:27017/escola';

// Vamos nos conectar ao servidor e base de dados. Atenção: Em caso de erro, a
// função pode demorar a retornar, pois o Node.js pode pensar que é lentidão
// na rede
......


Salve este código como conexao.js e execute-o no Node.js (com o MongoDB rodando, é claro) com o seguinte comando:

c:\estudos_nodejs>node conexao.js

Se tudo correr bem você verá a mensagem:

Conexão efetuada com sucesso.

Veja que, nesse código, eu efetuei uma conexão com a base de dados escola. Se a porta e o servidor estiverem corretos (talvez você tenha que informar um usuário e senha também), a conexão será efetuada com sucesso mesmo que a base de dados não exista.

Quando informamos uma base de dados inexistente, o MongoDB entende que queremos criá-la, mas ele só a cria de fato, quando solicitamos a criação de uma nova coleção. Em mais dicas dessa seção você aprenderá como criar coleções no MongoDB a partir de seus códigos Node.js. Até lá e bons estudos.


C# ::: Threads ::: Thread

Como usar a classe Thread para criar threads em seus programas C#

Quantidade de visualizações: 11542 vezes
A classe Thread permite criar e controlar uma thread, além de definir sua prioridade e obter seu status. Veja a posição desta classe na hierarquia de classes da plataforma .NET:

System.Object
  System.Runtime.ConstrainedExecution.CriticalFinalizerObject
    System.Threading.Thread


Um processo pode criar uma ou mais threads para executar parte do código do programa associado a tal processo. Usamos um delegate ThreadStart ou um delegate ParameterizedThreadStart para especificar o código do programa que será executado pela thread. O delegate ParameterizedThreadStart nos permite passar dados para as funções a serem executadas pela thread.

Durante seu ciclo de vida, uma thread está sempre em um ou mais dos estados definidos pela enumeração ThreadState. Um nível de prioridade de agendamento, como definido na enumeração ThreadPriority, pode ser requisitado para a thread, mas, este comportamento nem sempre é garantido pelo sistema operacional.

O método GetHashCode() fornece identificação para threads gerenciadas. Durante o ciclo de vida de uma thread, seu código de identificação não colidirá com os códigos das demais threads, independente do domínio da aplicação a partir do qual obtemos tal valor.

Veja um trecho de código no qual criamos uma thread e a agendamos para execução paralela com a thread principal da aplicação. Note como os valores dos dois laços são exibidos de forma compartilhada pelas duas threads, ou seja, um thread exibe alguns valores e pára, para permitir que a outra faça parte do seu trabalho:

class Program{
  static void Main(string[] args){
    // using using System.Threading;

    // vamos criar uma nova instância da clase Thread
    // e fornecer o método que será executado
    Thread thread = new Thread(contar);
     
    // vamos agendar a thread para futura execução
    thread.Start();

    // agora vamos contar na thread principal
    for (int i = 0; i <= 20; i++){
      Console.Write("#" + Thread.CurrentThread.GetHashCode() 
......


Aqui eu usei a sintáxe de criação de objetos da classe Thread que cria uma instância de ThreadStart nos bastidores, ou seja, forneci apenas o método a ser executado pela nova thread. Note também que uma chamada ao método Start() da thread não faz com que a thread seja executada imediatamente. Este método apenas torna a thread elegível para execução, ou seja, no estado "pronta" (Running). É o sistema operacional que determina quando a mesma será executada.


Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

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á 14 usuários muito felizes estudando em nosso site.