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.

Você está aqui: Cards de Hidrostática
Card 1 de 7
O que é Empuxo na Hidrostática?

Empuxo é a força exercida pelos fluidos em corpos submersos, total ou parcialmente. Também conhecido como teorema de Arquimedes.

A pressão do fluido sobre o corpo produz uma força resultante com a direção do peso, mas com o sentido contrário, de baixo para cima.

Qual é a fórmula do Empuxo?

A fórmula do empuxo na Hidrostática pode ser definida como:

\[E = d_f \cdot V_f \cdot g \]

Onde:

E é o módulo do empuxo, medido em Newtons (N);

df é a densidade do fluido, medida em kg/m3;

Vf é o volume do fluido deslocado, medido em m3;

g é a aceleração da gravidade, medida em m/s2.

A intensidade do empuxo é igual a do peso do volume de fluido deslocado, e age no centro de gravidade desse volume.

O empuxo é o produto entre três valores: densidade do fluido, volume de fluido deslocado e aceleração da gravidade.

A densidade é uma característica própria do fluido. Existem tabelas que oferecem valores de densidade para vários fluidos.

Para água a 4°C, a densidade é 1 g/cm3 ou 1.000 kg/m3.
Para o ar, a 20°C e pressão de 1 atmosfera, a densidade é de 0,0012 g/cm3 ou 1,2 kg/m3.

O volume de fluido deslocado depende da geometria do corpo, e se ele está total ou parcialmente submerso. Quanto maior o volume do corpo, mais líquido ele descola, logo, maior será o empuxo.

A aceleração da gravidade é de, aproximadamente, 9,81 m/s2.

Filtrar Cards
Use esta opção para filtrar os cards pelos tópicos que mais lhe interessam.
Termos:
Aviso Importante: Nos esforçamos muito para que o conteúdo dos cards e dos testes e conhecimento seja o mais correto possível. No entanto, entendemos que erros podem ocorrer. Caso isso aconteça, pedimos desculpas e estamos à disposição para as devidas correções. Além disso, o conteúdo aqui apresentado é fruto de conhecimento nosso e de pesquisas na internet e livros. Caso você encontre algum conteúdo que não deveria estar aqui, por favor, nos comunique pelos e-mails exibidos nas opções de contato.
Link para compartilhar na Internet ou com seus amigos:

PostgreSQL ::: Dicas & Truques ::: Comandos DDL (Data Definition Language - Linguagem de Definição de Dados)

Como excluir uma base de dados no PostgreSQL usando o comando DDL DROP DATABASE

Quantidade de visualizações: 14530 vezes
Em algumas situações precisamos excluir uma base de dados no PostgreSQL. Isso pode ser feito por meio do uso do comando DLL DROP DATABASE. Este comando pode ser disparado via linha de comando SQL Shell (psql), na janela de Query do pgAdmin ou a partir de uma linguagem de programação. No entanto, é importante saber que você não conseguirá excluir uma base de dados que você ou outros usuários estejam conectados no momento.

Use o comando DROP DATABASE com cuidado. Ao dispará-lo, os dados contidos na base de dados (tabelas, views, funções, triggers, etc) serão perdidos para sempre. Veja como podemos usar o comando DROP DATABASE para excluir uma base de dados chamada "estudos":

DROP DATABASE estudos;

Se você visualizar uma mensagem parecida com:

Query returned successfully with no result in 261 ms.

Então poderá estar certo de que a base de dados foi removida com sucesso. Se tentarmos excluir uma base de dados na qual alguém ainda está conectado, o PostgreSQL abortará a operação e nos exibirá a seguinte mensagem de erro:

ERRO:  banco de dados "estudos" está sendo acessado por outros usuários
DETAIL:  Há 1 outra sessão utilizando o banco de dados.

********** Error **********

ERRO: banco de dados "estudos" está sendo acessado por outros usuários
SQL state: 55006
Detail: Há 1 outra sessão utilizando o banco de dados.
Da mesma forma, seremos alertados se tentarmos excluir uma base de dados que não existe:

ERRO:  banco de dados "estudos" não existe

********** Error **********

ERRO: banco de dados "estudos" não existe
SQL state: 3D000
O comando DROP DATABASE pode vir acompanhado da cláusula IF EXISTS, que tentará a exclusão somente quando a base de dados existir. Veja:

DROP DATABASE IF EXISTS estudos;

Agora o PostgreSQL trocará a mensagem de erro por uma mensagem de advertência:

NOTA:  banco de dados "estudos" não existe, ignorando

Query returned successfully with no result in 14 ms.



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

Como gerar um número aleatório usando a função Next() da classe Random do C#

Quantidade de visualizações: 24275 vezes
Este exemplo mostra como gerar números randômicos usando C#. Para isso nós vamos usar o método Next() da classe Random. Este método retorna um número inteiro maior ou igual a zero e menor que a constante MaxValue (cujo valor é 2.147.483.647).

Observe que cada chamada a Next() gera um número aleatório diferente, não havendo a necessidade de criar um novo objeto da classe Random para cada número desejado. Eis o código:

static void Main(string[] args){
  // cria um objeto da classe Random
  Random rnd = new Random();
  
  // gera o número aleatório na faixa
  // 0 até MaxValue (2.147.483.647)
  int numero = rnd.Next();

  // exibe o resultado
  Console.Write("O número gerado foi: {0}", numero);

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

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

O número gerado foi: 504


HTML5 ::: Aplicativos Completos ::: Programas de desenho, edição e visualização de imagens e fotos

Como criar um programa de desenho simples usando o objeto Canvas do HTML5

Quantidade de visualizações: 7792 vezes
Revisando alguns códigos que desenvolvi para clientes ao longo desses anos, encontrei um exemplo de um programa de desenho bem simples demonstrando as possibilidades gráficas do elemento Canvas do HTML. Este código foi escrito há uns dois anos e resolvi compartilhar com todos, para que vocês possam aprimorá-lo e acrescentar novas idéias, afinal, o HTML5 está mais atual do que nunca.

Veja o resultado no navegador:



Eu o escrevi de forma bem simples, sem usar jQuery ou qualquer outro framework, apenas JavaScript raiz mesmo, de forma que até os estudantes mais iniciantes não terão dificuldade de entender. Veja a listagem completa e com comentários:

<html>
<head>
<title>Desenhando no canvas do HTML5</title>
</head>

<body style="padding: 15px">

<b>Clique e arraste para desenhar</b><br><br>

<canvas id="quadro" style="border: 1px solid #666" 
  width="600" height="350"></canvas>

<br><br><button onClick="limpar()">Limpar</button>

<script type="text/javascript">
  // obtém uma referência ao canvas
  var quadro = document.getElementById('quadro');
  // vamos obter o contexto de desenho
  var areaDesenho = quadro.getContext("2d");
  
  // podemos desenhar?
  var podeDesenhar = false; // ainda não
  
  // vetores para guardar as posições x, y, e se o mouse está sendo
  // movimentado pressionado
  var vetorX = new Array();
  var vetorY = new Array();
  var vetorArrastar = new Array();
  
  // agora vamos adicionar na área de desenho um "ouvidor" de 
  // eventos mousedown, ou seja, vamos detectar quando o usuário
  // pressionar o botão do mouse (sem soltar) 
  quadro.addEventListener('mousedown', function(e){
    // podemos iniciar o desenho
    podeDesenhar = true;
    registrarClique(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, false);
    desenhar(); // faça o desenho, moço
  });
  
  // o "ouvidor" de evento que detecta se o mouse está sendo arrastado
  // pressionado
  quadro.addEventListener('mousemove', function(e){	
    if(podeDesenhar){
      registrarClique(e.pageX - this.offsetLeft, e.pageY - 
        this.offsetTop, true);
      desenhar(); // faça o desenho, moço
    }
  });

  // o "ouvidor" de evento que detecta se o mouse foi liberado
  // e interrompe o desenho
  quadro.addEventListener('mouseup', function(e){	
    podeDesenhar = false;
  });

  // o mouse saiu da área de desenho?
  quadro.addEventListener('mouseleave', function(e){	
    podeDesenhar = false;
  });

  function registrarClique(x, y, arrastar){
    // aqui nós guardamos em vetores as posições x, y do clique ou
    // o movimento do mouse pressionado.
    vetorX.push(x);
    vetorY.push(y);
    vetorArrastar.push(arrastar);
  }
  
  // é aqui que a mágica ocorre
  function desenhar(){
    // primeiro vamos limpar o quadro de desenho
    areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, 
      areaDesenho.canvas.height);
	
    areaDesenho.strokeStyle = "#5c5cd6"; // cor
    areaDesenho.lineJoin = "round"; // formato da junção de linha
    areaDesenho.lineWidth = 5; // largura da linha
			
    // percorremos os vetores, usando como base o vetor de coordenadas x
    for(var i = 0; i < vetorX.length; i++){		
      areaDesenho.beginPath(); // inicia o caminho
    
      // o mouse foi arrastado neste evento?
      if((vetorArrastar[i] == true && i > 0)){
        areaDesenho.moveTo(vetorX[i - 1], vetorY[i - 1]);
      }
      else{
        // é o início do desenho
        areaDesenho.moveTo(vetorX[i] - 1, vetorY[i]);
      }
     
      // desenha a linha do ponto X ao ponto Y  
      areaDesenho.lineTo(vetorX[i], vetorY[i]);
      // fecha o caminho
      areaDesenho.closePath();
      // conclui de fato o desenho
      areaDesenho.stroke();
    }  
  }
  
  // e aqui nós limpamos a área de desenho e esvaziamos os vetores
  function limpar(){
    areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, 
      areaDesenho.canvas.height);
    vetorX = [];
    vetorY = [];
    vetorArrastar = [];
  }
</script>

</body>
</html>

Salve o código como "desenho.html" (cuidado para não salvar como "desenho.html.txt") e abra-o no seu navegador, remoto ou localmente. Você pode começar suas modificações alterando a cor do desenho, a largura da linha, etc. Você pode também deixar figuras pré-configuradas e até permitir que o usuário inclua fotos no Canvas.

Para os estudantes que já sabem Node.js, saiba que é possível enviar os três vetores via sockets em um ambiente real time para que outros usuários na rede vejam o seu desenho em tempo real. Bons estudos.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca

Exercícios Resolvidos de Java - Como pesquisar um valor em uma árvore binária de busca usando uma função recursiva

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

Escreva uma função recursiva em Java que permite pesquisar um valor em uma árvore binária de busca (BST). Se o valor for encontrado, uma referência ao nó da árvore (um objeto da classe NoArvore, por exemplo) deverá ser retornado. Caso contrário, o valor null deverá ser retornado para indicar que não há nós na árvore contendo tal valor.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 7
Informe um valor inteiro: 1
Informe um valor inteiro: 8
Informe um valor inteiro: 10
Informe um valor inteiro: 4

Informe o valor a ser pesquisado: 3
O valor não foi encontrado na árvore

Informe um valor inteiro: 8
Informe um valor inteiro: 2
Informe um valor inteiro: 35
Informe um valor inteiro: 4
Informe um valor inteiro: 7

Informe o valor a ser pesquisado: 4
O valor foi encontrado na árvore
Resposta/Solução:

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

Código para NoArvore.java:

package estudos;

public class NoArvore {
  int valor; // valor armazenado no nó
  NoArvore esquerdo; // filho esquerdo
  NoArvore direito; // filho direito

  // construtor do nó
  public NoArvore(int valor){
    this.valor = valor;
  }
}

Código para ArvoreBinariaBusca.java:

package estudos;

public class ArvoreBinariaBusca {
  private NoArvore raiz; // referência para a raiz da árvore
  
  // método usado para inserir um novo nó na árvore
  // retorna true se o nó for inserido com sucesso e false
  // se o elemento
  // não puder ser inserido (no caso de já existir um 
  // elemento igual)
  public boolean inserir(int valor){
    // a árvore ainda está vazia?
    if(raiz == null){
      // vamos criar o primeiro nó e definí-lo como a raiz da árvore
      raiz = new NoArvore(valor); // cria um novo nó
    }
    else{
      // localiza o nó pai
      NoArvore pai = null;
      NoArvore noAtual = raiz; // começa a busca pela raiz
 
      // enquanto o nó atual for diferente de null
      while(noAtual != null){
        if(valor < noAtual.valor) {
          pai = noAtual;
          noAtual = noAtual.esquerdo;
        }
        else if(valor > noAtual.valor){
          pai = noAtual;
          noAtual = noAtual.direito;
        }
        else{
          return false; // um nó com este valor foi encontrado
        }
      }
       
      // cria o novo nó e o adiciona ao nó pai
      if(valor < pai.valor){
         pai.esquerdo = new NoArvore(valor);
      }
      else{
        pai.direito = new NoArvore(valor);
      }
    }

    return true; // retorna true para indicar que o novo nó
    // foi inserido
  }
  
  // método que permite pesquisar na árvore binária de busca
  public NoArvore pesquisar(int valor){
    return pesquisar(raiz, valor); // chama a versão recursiva
    // do método
  }

  // sobrecarga do método pesquisar que recebe dois 
  // parâmetros (esta é a versão recursiva do método)
  private NoArvore pesquisar(NoArvore noAtual, int valor){
    // o valor pesquisado não foi encontrado....vamos retornar null
    if(noAtual == null){
      return null;
    }
 
    // o valor pesquisado foi encontrado?
    if(valor == noAtual.valor){
      return noAtual; // retorna o nó atual
    }  
    // ainda não encontramos...vamos disparar uma nova 
    // chamada para a sub-árvore da esquerda
    else if(valor < noAtual.valor){
      return pesquisar(noAtual.esquerdo, valor);
    }
    // ainda não encontramos...vamos disparar uma nova 
    // chamada para a sub-árvore da direita
    else{
      return pesquisar(noAtual.direito, valor);
    }
  }
}

E aqui está o código para a classe que permite testar a árvore:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
      
    // vamos criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
   
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
      
      // vamos inserir o nó e verificar o sucesso da operação
      if(!arvore.inserir(valor)){
        System.out.println("Erro. Um elemento já contém este valor.");  
      }
    }
    
    // vamos pesquisar um valor na árvore
    System.out.print("\nInforme o valor a ser pesquisado: ");
    int valorPesquisa = Integer.parseInt(entrada.nextLine());
    // obtém um objeto da classe NoArvore a partir do 
    // método pesquisar() da classe ArvoreBinariaBusca
    NoArvore res = arvore.pesquisar(valorPesquisa);
    // o valor foi encontrado?
    if(res != null){
      System.out.println("O valor foi encontrado na árvore");
    }
    else{
      System.out.println("O valor não foi encontrado na árvore");  
    }
    
    System.out.println("\n");
  }
}



Java ::: Dicas & Truques ::: Strings e Caracteres

Apostila Java para iniciantes - Como substituir um caractere em uma string usando o método setCharAt() da classe StringBuffer do Java

Quantidade de visualizações: 1 vezes
Nesta dica mostrarei como podemos usar o método setCharAt() da classe StringBuffer da linguagem Java para substituir caracteres individuais em uma palavra, frase ou texto.

Veja um código completo, no qual trocamos a letra "j" por "J":

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    StringBuffer frase = new StringBuffer("Programar em java.");
    System.out.println(frase);
    frase.setCharAt(13, 'J'); // troca 'j' por 'J' 
    System.out.println(frase);
     
    System.exit(0);
  }
} 

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

Programar em java.
Programar em Java.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

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