Dúvidas, comentários e doaçoes: +55 62 9 8513 2505

Planilha de Dimensionamento de Tubulações Hidráulicas Água Fria e Água Quente Completa
Nossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes.

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

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

Quantidade de visualizações: 16197 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.


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

Como testar se um número é par ou ímpar em Java

Quantidade de visualizações: 46193 vezes
Boa parte das listas de exercícios de Java básico contém um enunciado pedindo para o seu programa ler um número inteiro e informar se o mesmo é par ou ímpar. Esse teste é feito usando-se o operador de módulo (%) da linguagem Java.

Este operador retorna o resultado de uma divisão por inteiros, ou seja, se dividirmos 5 por 2, o resultado da divisão inteira será dois e o resto 1, indicando que o número informado não é par.

Veja o código completo para um exemplo:

package arquivodecodigos;

import java.util.*;

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

    if(num % 2 == 0){
      System.out.print("Você informou um numero par");
    }
    else{
      System.out.print("Você informou um numero impar");
    }
    
    System.exit(0);
  }
}

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

Informe um valor inteiro: 5
Você informou um numero impar


Ruby ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercícios Resolvidos de Ruby - Ler os lados de um triângulo e informar se ele é isósceles, escaleno ou equilátero

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

Um triângulo é uma forma geométrica (polígono) composta de três lados, sendo que cada lado é menor que a soma dos outros dois lados. Assim, para que um triângulo seja válido, é preciso que seus lados A, B e C obedeçam à seguinte regra:

A < (B + C), B < (A + C) e C < (A + B).

Escreva um programa Ruby que leia os três lados de um triângulo e verifique se tais valores realmente formam um triângulo. Se o teste for satisfatório, informe se o triângulo é isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou equilátero (todos os lados iguais).

Sua saída deverá ser parecida com:

Informe o primeiro lado do triângulo: 30
Informe o segundo lado do triângulo: 40
Informe o terceiro lado do triângulo: 60
O triângulo é escaleno
Resposta/Solução:

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

# vamos ler o primeiro lado do triângulo
print "Informe o primeiro lado do triângulo: "
lado_a = Integer(gets)

# vamos ler o segundo lado do triângulo
print "Informe o segundo lado do triângulo: "
lado_b = Integer(gets)

# vamos ler o terceiro lado do triângulo
print "Informe o terceiro lado do triângulo: "
lado_c = Integer(gets)

# os lados informados formam um triângulo?
if((lado_a < (lado_b + lado_c)) && (lado_b < (lado_a + lado_c)) \
  && (lado_c < (lado_a + lado_b)))
  # é um triângulo equilátero (todos os lados iguais)?
  if((lado_a == lado_b) && (lado_b == lado_c))
    print "O triângulo é equilátero"  
  else
    # é isósceles (dois lados iguais e um diferente)?
    if((lado_a == lado_b) || (lado_a == lado_c) || \
      (lado_c == lado_b))
      print "O triângulo é isósceles" 
    else
      # é escaleno
      print "O triângulo é escaleno"
    end
  end
else
  print "Os lados informados não formam um triângulo." 
end



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

Como arredondar um valor de ponto-flutuante para cima usando a função ceil() da linguagem C

Quantidade de visualizações: 15184 vezes
A função ceil() da linguagem C é usada quando precisamos arredondar um valor de ponto-flutuante (com casas decimais) para cima. Esta função retorna o menor valor integral maior que o valor fornecido a ela. Note que, mesmo o retorno sendo um inteiro, ele virá encapsulado em um double.

Para entender o funcionamento desta função, vamos considerar o valor 4.5. Ao aplicarmos a função ceil() a este valor, o retorno será 5.0. Isso pode ser comprovado no trecho de código abaixo:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("O valor 4.5 arredondado para cima e %f", 
    ceil(4.5));
  
  printf("\n\n");
  system("pause");
  return 0;
}

Ao executarmos este código teremos o seguinte resultado:

O valor 4.5 arredondado para cima é 5.000000.


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 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 Apenas R$ 32,90

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.


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