Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD e VBA
PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Java ::: Tratamento de Erros ::: Passos Iniciais

Quais as diferenças entre checked exceptions, runtime exceptions e errors na linguagem Java?

Quantidade de visualizações: 15918 vezes
Checked exceptions (exceções verificadas), runtime exceptions (exceções de tempo de execução) e errors (erros) possuem diferenças importantes e devem ser entendidas perfeitamente para tirarmos maior proveito da plataforma Java.

Entre as checked exceptions podemos citar FileNotFoundException, ClassNotFoundException e IOException. Agora veja: problemas tais como um arquivo não encontrado, uma classe não encontrada ou problemas com entrada e saída (talvez a impressora parou de responder ou a rede caiu) fogem completamente do domínio da aplicação. Tais exceções não são provocadas por código mal escrito ou mal testado. Desta forma, o Java força que todas as checked exceptions estejam em um bloco try...catch. Vamos ver se isso é verdade? Observe o trecho de código abaixo:

import java.io.*;

public class Estudos{
  public static void main(String[] args){
    DataInputStream in = new DataInputStream(
      new BufferedInputStream(
        new FileInputStream("conteudo.txt")));
        
    while(in.available() != 0)
      System.out.print((char) in.readByte());
    
    System.exit(0);
  }
}

Se tentarmos compilar este código teremos o seguinte resultado:

Estudos.java:7: unreported exception 
java.io.FileNotFoundException; must be caught 
or declared to be thrown
  new FileInputStream("conteudo.txt")));
  ^
Estudos.java:9: unreported exception 
java.io.IOException; must be caught or 
declared to be thrown
  while(in.available() != 0)
           ^
Estudos.java:10: unreported exception 
java.io.IOException; must be caught or 
declared to be thrown
  System.out.print((char) in.readByte());
                             ^
3 errors


Aqui nós temos uma exceção FileNotFoundException e duas exceções IOException. Vamos nos concentrar na exceção gerada pelo construtor da classe FileInputStream. Folheando a documentação do Java nós encontramos:

public FileInputStream(String name)
  throws FileNotFoundException


É aqui que as coisas começam a ficar interessantes. Todos os métodos Java que podem atirar exceções verificadas são marcados com throws e o tipo de exceção lançada. A palavra throws é usada para transferir a responsabilidade do tratamento do erro para o chamador de tais métodos. Outro exemplo é o método readByte() da classe DataInputStream:

public final byte readByte()
  throws IOException


Para corrigir as exceções acima, só precisamos usar um bloco try...catch. Veja:

import java.io.*;

public class Estudos{
  public static void main(String[] args){
    try{
      DataInputStream in = new DataInputStream(
        new BufferedInputStream(
          new FileInputStream("conteudo.txt")));
        
      while(in.available() != 0)
        System.out.print((char) in.readByte());
    } 
    catch(IOException e){
      System.out.print(e.getMessage());
    }

    System.exit(0);
  }
}  

Exceções verificadas são todas aquelas que descendem de Exception mas não descendem de RuntimeException.

As exceções de tempo de execução (runtime exceptions) são provocadas por código mal escrito ou mal testado, ou seja, são causadas por nós programadores. Entre estas exceções podemos citar ArithmeticException, IndexOutOfBoundsException e NoSuchElementException. De fato, um erro aritmético é responsabilidade do programador, pois cabe a este verificar se os valores estão dentro da faixa permitida por cada tipo de dados.

Ao contrário das exceções verificadas, o compilador não força o uso do bloco try...catch para as runtime exceptions. De fato, isso é fácil de compreender, uma vez que tais exceções não deveriam jamais aparecer.

Contudo, pode ser desejável usar o bloco try...catch em casos em que os valores de uma operação são definidos pelo usuário. Veja um exemplo:

import java.util.*;

public class Estudos{
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    
    System.out.print("Informe um inteiro: ");
    int valor = in.nextInt();

    System.out.print("Informe outro inteiro: ");
    int valor2 = in.nextInt();

    System.out.println("O resultado é " + 
      valor / valor2);
  }
}

Se executarmos este código e informarmos o valor 0 para o segundo inteiro, teremos a seguinte exceção:

Informe um inteiro: 4
Informe outro inteiro: 0
Exception in thread "main" 
  java.lang.ArithmeticException: / by zero
  at Estudos.main(Estudos.java:13)


Uma forma de corrigir isso é testando os valores informados para verificar suas faixas ou lançar uma exceção. Veja como usamos esta última alternativa:

import java.util.*;

public class Estudos{
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    
    System.out.print("Informe um inteiro: ");
    int valor = in.nextInt();

    System.out.print("Informe outro inteiro: ");
    int valor2 = in.nextInt();

    try{
      System.out.println("O resultado é " + 
        valor / valor2);
    }
    catch(ArithmeticException e){
      System.out.println("Uma exceção " +
       "ArithmeticException ocorreu, " +
       "possivelmente uma tentativa de " +
       "divisão por zero.");
    }
  }
}

Agora se informarmos zero para o segundo inteiro, teremos:

Informe um inteiro: 5
Informe outro inteiro: 0
Uma exceção ArithmeticException ocorreu, 
possivelmente uma tentativa de divisão
por zero.


As runtime exceptions (causadas por falha nossa, os programadores) descedem de java.lang.RuntimeException.

Além das runtime exceptions e das checked exceptions, temos também os errors, que descedem de java.lang.Error e não devem jamais ser atirados ou tratados em blocos try...catch. Este tipo de erro é reservado para indicar problema na JVM. Entre tais erros temos OutOfMemoryError, que é lançado quando a Java Virtual Machine não consegue alocar um objeto porque sua fatia de memória esgotou e o Garbage Collector ainda não liberou mais memória. Não há razão para tratarmos isso em um bloco try...catch uma vez que, ao contrário de C++, a liberação de memória só é feita pelo GC. O melhor a fazer é deixar mesmo o programa ser encerrado e encontrar alternativas para a correção do problema.


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

Como calcular porcentagem em C - Como efetuar cálculos de porcentagem em C

Quantidade de visualizações: 29278 vezes
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em C.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em C:

// Algoritmo que calcula porcentagem em C
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  // variáveis usadas na resolução do problema
  float valor, percentual, valor_final;

  valor = 178.00; // valor original
  percentual = 15.0 / 100.0; // 15%
  valor_final = valor + (percentual * valor);

  // mostra o resultado
  printf("O valor final do produto é: %f", valor_final);

  // O resultado será 204,70
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em C:

// Algoritmo que calcula porcentagem em C
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  // variáveis usadas na resolução do problema
  float valor, percentual, valor_final;

  valor = 250.00; // valor original
  percentual = 8.0 / 100.0; // 8%
  valor_final = valor - (percentual * valor);

  // mostra o resultado
  printf("O valor final do produto é: %f", valor_final);
  
  // O resultado será 230,00
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em C:

// Algoritmo que calcula porcentagem em C
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  // variáveis usadas na resolução do problema
  float perguntas, acertos;

  perguntas = 90.0;
  acertos = 72.0;

  // mostra a porcentagem de acertos
  printf("Porcentagem de acertos: %f%%", ((acertos / perguntas) * 100));

  // mostra a porcentagem de erros
  printf("\nPorcentagem de erros: %f%%", ((perguntas - acertos) / perguntas) * 100);

  // Os resultados serão 80% e 20%

  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em C:

// Algoritmo que calcula porcentagem em C
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  // variáveis usadas na resolução do problema
  float valor_anterior, novo_valor, porcentagem_lucro;

  valor_anterior = 300.0; // valor anterior
  novo_valor = 340.0; // valor novo

  // calcula a porcentagem de lucro
  // efetua o cálculo
  porcentagem_lucro = ((novo_valor * 100) / valor_anterior) - 100;

  printf("A porcentagem de lucro foi de: %f%%", porcentagem_lucro);

  // O resultado será 13,33

  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em C:

// Algoritmo que calcula porcentagem em C
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  // variáveis usadas na resolução do problema
  float valor, percentual, comissao;

  valor = 70.0; // valor do produto
  percentual = 5.0 / 100.0; // 5%

  // calcula a comissão
  comissao = percentual * valor;

  // mostra o resultado
  printf("O valor repassado ao vendedor é: %f", comissao);

  // O resultado será 3,5

  printf("\n\n");
  system("PAUSE");
  return 0;
}



PHP ::: Dicas & Truques ::: Strings e Caracteres

Como remover os espaços em excesso de uma string e deixar apenas um espaço entre as palavras usando a função preg_replace() e expressões regulares do PHP

Quantidade de visualizações: 2 vezes
Nesta dica mostrarei como é possível tirar proveito da função preg_replace() da linguagem PHP para retirar os espaços em excesso de uma frase ou texto. Note o uso da função trim() para remover também os espaços antes e depois da frase ou texto.

Veja o código completo para o exemplo:

<?php
  // uma frase com excesso de espaços 
  // vamos deixar apenas um espaço entre as palavras
  $frase = "   Gosto muito de   programar em    PHP  ";
  $frase2 = trim(preg_replace('/\s\s+/',' ', $frase));
  echo "Com espaços: " . $frase . "<br>";
  echo "Sem espaços: " . $frase2; 
?>

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

Com espaços:  Gosto muito de   programar em  PHP
Sem espaços: Gosto muito de programar em PHP


Pode ser necessário você olhar no código fonte da página HTML para visualizar melhor o resultado.


HTML5 ::: HTML5 + JavaScript ::: Canvas

Como carregar uma imagem (ou foto) no objeto Canvas do HTML5

Quantidade de visualizações: 2874 vezes
O objeto Canvas do HTML5 nos permite carregar uma imagem ou foto em tempo de execução e desenhá-la em sua superfície. Para isso, comece criando um objeto Image para guardar a imagem temporariamente na memória:

var imagem = new Image();
// vamos carregar a logo do nosso site
imagem.src = "https://www.arquivodecodigos.com.br/logo.jpg";

O passo seguinte é adicionar um "ouvidor" de evento neste objeto Image para que ele nos avise quando a imagem estiver 100% carregada. Veja:

// vamos adicionar um "ouvidor" de evento no objeto Image
imagem.addEventListener('load', desenharImagem);

Pronto! Veja que agora, quando o evento load do objeto Image disparar, a função desenharImagem será chamada e a imagem será então desenhada no Canvas. Veja:

function desenharImagem(){
  // obtemos uma referência ao elemento Canvas  
  var canvas = document.getElementById("canvas1");
  // obtemos o contexto de desenho
  var contexto = canvas.getContext("2d");
  // e finalmente desenhamos a imagem
  contexto.drawImage(imagem, 0, 0);
}

E aqui está o código completo para o exemplo:

<html>
<head>
  <title>O objeto Canvas do HTML5</title>
</head>

<body>

<Canvas id="canvas1" width="500" height="350"></Canvas>

<script type="text/javascript">
  var imagem = new Image();
  // vamos carregar a logo do nosso site
  imagem.src = "https://www.arquivodecodigos.com.br/logo.jpg";

  // vamos adicionar um "ouvidor" de evento no objeto Image
  imagem.addEventListener('load', desenharImagem);

  function desenharImagem(){
    // obtemos uma referência ao elemento Canvas  
    var canvas = document.getElementById("canvas1");
    // obtemos o contexto de desenho
    var contexto = canvas.getContext("2d");
    // e finalmente desenhamos a imagem
    contexto.drawImage(imagem, 0, 0);
  }
</script>

</body>
</html>

Ao executar a página nós teremos o seguinte resultado:




Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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


E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser. Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 19,90


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