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:

Java ::: Estruturas de Dados ::: Pilhas

Como criar uma pilha em Java usando um vetor (array) - Estruturas de Dados em Java

Quantidade de visualizações: 2988 vezes
A Pilha é uma estrutura de dados do tipo LIFO - Last-In, First-Out (Último a entrar, primeiro a sair). Neste tipo de estrutura, o último elemento a ser inserido é o primeiro a ser removido. Veja a imagem a seguir:



Embora seja mais comum a criação de uma estrutura de dados do tipo Pilha de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em Java usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado.

Veja o código completo para uma classe Pilha usando um vetor de ints. Veja que o tamanho do vetor é informado no construtor da classe. Note também a lógica empregada na construção dos métodos empilhar(), desempilhar() e imprimirPilha():

Código para Pilha.java:

package estudos;

public class Pilha {
  private int elementos[]; // elementos na pilha
  private int topo; // o elemento no topo da pilha
  private int maximo; // a quantidade máxima de elementos na pilha

  // construtor da classe Pilha
  public Pilha(int tamanho) {
    // constrói o vetor
    this.elementos = new int[tamanho];
    // define o topo como -1
    this.topo = -1;
    // ajusta o tamanho da pilha para o valor recebido
    this.maximo = tamanho;
  }

  // método usado para empilhar um novo elemento na pilha
  public void empilhar(int item) {
    // a pilha já está cheia?
    if (this.topo == (this.maximo - 1)) {
      System.out.println("\nA pilha está cheia\n");
    } 
    else {
      // vamos inserir este elemento no topo da pilha
      this.elementos[++this.topo] = item;
    }
  }

  // méodo usado para desempilhar um elemento da pilha
  public int desempilhar() {
    // a pilha está vazia
    if (this.topo == -1) {
      System.out.println("\nA pilha está vazia\n");
      return -1;
    } 
    else {
      System.out.println("Elemento desempilhado: " + elementos[topo]);
      return this.elementos[this.topo--];
    }
  }

  // método que permite imprimir o conteúdo da pilha
  public void imprimirPilha() {
    // pilha vazia
    if (this.topo == -1) {
      System.out.println("\nA pilha está vazia\n");
    } 
    else {
      // vamos percorrer todos os elementos da pilha
      for (int i = 0; i <= this.topo; i++) {
        System.out.println("Item[" + (i + 1) + "]: " + this.elementos[i]);
      }
    }
  }
}

Veja agora o código para a classe principal, ou seja, a classe Main usada para testar a funcionalidade da nossa pilha:

Código para Principal.java:

package estudos;

public class Estudos{
  public static void main(String[] args){
    // vamos criar uma nova pilha com capacidade para 5 elementos
    Pilha p = new Pilha(5);

    // vamos empilhar 3 elementos
    p.empilhar(34);
    p.empilhar(52);
    p.empilhar(18);

    // vamos mostrar os elementos na pilha
    System.out.println("Itens presentes na Pilha\n");
    p.imprimirPilha();

    // agora vamos remover e retornar dois elementos da pilha
    System.out.println();
    p.desempilhar();
    p.desempilhar();

    // vamos mostrar os elementos na pilha novamente
    System.out.println("\nItens presentes na Pilha\n");
    p.imprimirPilha();
  }
}

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

Itens presentes na Pilha

Item[1]: 34
Item[2]: 52
Item[3]: 18

Elemento desempilhado: 18
Elemento desempilhado: 52

Itens presentes na Pilha

Item[1]: 34


Java ::: Classes e Componentes ::: JTextArea

Java Swing - Como ler as linhas de texto de um JTextArea uma de cada vez

Quantidade de visualizações: 4 vezes
Nesta dica veremos como ler as linhas de um controle JTextArea do Java Swing individualmente, ou seja, uma linha de cada vez. Para isso nós vamos usar os método getLineStartOffset() e getLineEndOffset() da classe JTextArea para acessar suas linhas separadamente.

Veja o resultado na imagem abaixo:



E aqui está o código Java Swing completo para a dica:

package arquivodecodigos;

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
 
public class Estudos extends JFrame{
  JTextArea textArea;
  JButton btn;
 
  public Estudos() {
    super("Lendo as linhas de um JTextArea");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
     
    textArea = new JTextArea(10, 20);
    textArea.setLineWrap(true);
     
    btn = new JButton("Ler Linhas");
    btn.addActionListener(
      new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
          int quant = textArea.getLineCount();
             
          for(int i = 0; i < quant; i++){
            try{
              int inicio = textArea.getLineStartOffset(i);
              int fim = textArea.getLineEndOffset(i);
              String linha = textArea.getText(inicio, fim - inicio);
              JOptionPane.showMessageDialog(null, "Linha " + 
                (i + 1) + " = " + linha);
            }
            catch(BadLocationException ble){
              // possiveis erros são tratados aqui
            } 
          }    
        }
      }
    );
        
    c.add(textArea);
    c.add(btn);
     
    setSize(350, 250);
    setVisible(true);
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas

Exercícios Resolvidos de Java - Como inserir um nó em qualquer posição de uma lista ligada em Java - Escreva um programa Java que cria uma lista dinamicamente encadeada

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

Escreva um programa Java que cria uma lista dinamicamente encadeada (lista singularmente encadeada) e pede para o usuário inserir 5 elementos do tipo inteiro. Em seguida peça para o usuário informar um índice e um novo elemento e insira tal elemento no índice informado.

Faça a validação dos índices para que ele não saia da faixa permitida.

Sua saída deve ser parecida com:

Inserindo 5 valores na lista

Informe o 1.o valor: 8
Informe o 2.o valor: 2
Informe o 3.o valor: 4
Informe o 4.o valor: 7
Informe o 5.o valor: 3

Valores na lista: 8 -> 2 -> 4 -> 7 -> 3 -> null

Inserindo um elemento no índice k

Informe o índice desejado: 2
Informe o valor do nó: 9

Valores na lista: 8 -> 2 -> 9 -> 4 -> 7 -> 3 -> null
Resposta/Solução:

Na saída podemos ver que o índice 2 corresponde ao terceiro elemento da lista ligada. Por isso o valor 4 foi empurrado para a frente para abrir espaço para o valor 9. Se o índice 0 fosse informado, o número 8 seria empurrado para a frente e o nó com valor 9 passaria a ser o início da lista ligada.

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

package estudos;
  
import java.util.Scanner;

// classe interna usada para representar um
// nó na lista ligada
class No {
  int valor; // valor do nó
  No proximo; // aponta para o novo nó
 
  // construtor cheio da classe No
  public No(int valor, No proximo) {
    this.valor = valor;
    this.proximo = proximo;
  }
  
  // construtor vazio da classe No
  public No() {
    this.valor = 0;
    this.proximo = null;
  }
}

public class Estudos { 
  public static void main(String args[]){
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos criar uma referência para o início da lista
    No inicio = null;
    
    // vamos inserir 5 valores inteiros na lista ligada
    int valor;
    System.out.println("Inserindo 5 valores na lista\n");
    for (int i = 0; i < 5; i++) {
      System.out.print("Informe o " + (i + 1) + ".o valor: ");
      valor = Integer.parseInt(entrada.nextLine());
      // vamos inserir este valor no final da lista
      inicio = inserirFinal(inicio, valor);
    }
    
    // vamos exibir os valores na lista ligada
    System.out.print("\nValores na lista: ");
    exibirLista(inicio);
    
    // vamos inserir um novo elemento no índice informado
    System.out.println("\nInserindo um elemento no índice k\n");
    System.out.print("Informe o índice desejado: ");
    int indice = Integer.parseInt(entrada.nextLine());
    
    // o índice é válido?
    if ((indice < 0) || (indice > tamanhoLista(inicio) - 1)) {
      System.out.println("O índice é inválido.");
    }
    else {
      // vamos inserir o novo nó no índice indicado
      System.out.print("Informe o valor do nó: ");
      valor = Integer.parseInt(entrada.nextLine());
      inicio = inserirIndice(inicio, indice, valor);
      
      // vamos exibir os valores na lista ligada
      System.out.print("\nValores na lista: ");
      exibirLista(inicio);
    }
  }
  
  // função que permite adicionar um nó em uma determinada
  // posição da lista ligada
  public static No inserirIndice(No inicio, int indice, int valor) {
    // vamos apontar para o nó inicial
    No atual = inicio;
    // criamos um novo nó
    No novo = criarNo(valor);
    
    // a lista ligada ainda está vazia?
    if (atual == null){
      // inicio recebe o novo nó
      inicio = novo;
    }
    else if (indice == 0) {
      // o índice é igual a 0? vamos inserir
      // o nó no início da lista ligada
      novo.proximo = inicio;
      inicio = novo;
    }
    else {
      // vamos procurar o local adequado para inserção
      // primeiro criamos um nó temporário
      No temp = new No();
      // apontamos o nó temporário para o início da lista
      temp = inicio;
      // e percorremos os nós até encontrar a posição
      // de inserção
      for(int i = 1; i < indice; i++) {
        if (temp != null) {
          // passa para o próximo nó
          temp = temp.proximo;
        }
      }
   
      // concluimos a inserção
      novo.proximo = temp.proximo;
      temp.proximo = novo;
    }
    
    // e retornamos o início da lista
    return inicio;
  }

  // função que permite adicionar um nó no final da
  // lista ligada
  public static No inserirFinal(No inicio, int valor) {
    // vamos apontar para o nó inicial
    No atual = inicio;
    // criamos um novo nó
    No novo = criarNo(valor);
  
    // a lista ligada ainda está vazia?
    if (atual == null){
      // inicio recebe o novo nó
      inicio = novo;
    }    
    else { // temos um ou mais nós na lista ligada
      // vamos localizar o último nó
      while (atual.proximo != null) {
        atual = atual.proximo;
      }
       
      // encontramos o último nó. Agora vamos inserir
      // o novo nó depois dele
      atual.proximo = novo;
    }
     
    // e retornamos o início da lista
    return inicio;
  }
  
  // função usada para construir e retornar um novo nó
  public static No criarNo(int valor) {
    // cria o novo nó
    No no = new No(valor, null);
    // retorna o nó criado
    return no;
  }
  
  // função usada para percorrer a lista ligada e
  // exibir os valores contidos em seus nós
  public static void exibirLista(No inicio) {
    // vamos apontar para o início da lista
    No temp = inicio;
    
    // a lista está vazia?
    if (temp == null) {
      System.out.println("A lista está vazia.");
    }
    else {
      // esse laço se repete enquanto tempo for
      // diferente de null
      while (temp != null) {
        // vamos mostrar o valor desse nó
        System.out.print(temp.valor + " -> ");
        // avança para o próximo nó
        temp = temp.proximo;
      }
    
      // mostra o final da lista
      System.out.println("null");
    }
  }
  
  // função que retorna a quantidade de nós na lista ligada
  public static int tamanhoLista(No inicio) {
    int tamanho = 0;
    
    // vamos apontar para o início da lista
    No temp = inicio;
    
    // a lista está vazia?
    if (temp == null) {
      return 0;
    }
    else {
      // esse laço se repete enquanto tempo for
      // diferente de null
      while (temp != null) {
        // vamos incrementar o tamanho
        tamanho++;
        // avança para o próximo nó
        temp = temp.proximo;
      }
    }
    
    return tamanho;
  }
}



C++ ::: STL (Standard Template Library) ::: Vector C++

Como criar um vector de strings em C++, inserir alguns nomes usando a função push_back() e percorrê-los usando um iterador

Quantidade de visualizações: 11488 vezes
Se você tem pouca experiência com a classe container vector da STL (Standard Template Library), este exemplo o ajudará um pouco. Aqui eu mostro como criar um vector de strings em C++, inserir alguns nomes nele usando a função push_back() e depois percorrê-los individualmente usando um iterador.

Veja o código C++ completo para o exemplo:

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá strings
  vector<string> nomes;

  // vamos inserir três nomes
  nomes.push_back("Osmar J. Silva");
  nomes.push_back("Carlos de Souza");
  nomes.push_back("Maria Dias de Carvalho");

  // vamos percorrer o vector e exibir os nomes
  vector<string>::iterator it;
  for(it = nomes.begin(); it < nomes.end(); it++){
    cout << *it << endl;
  }

  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Osmar J. Silva
Carlos de Souza
Maria Dias de Carvalho


PHP ::: Design Patterns (Padrões de Projeto) ::: Singleton Pattern

Como usar o padrão de projeto Singleton em suas aplicações PHP

Quantidade de visualizações: 9388 vezes
O padrão de projeto Singleton (ou Singleton Pattern) é um dos padrões de projeto mais conhecidos e implementados extensivamente nas linguagens Java e C#. Como o PHP, a partir de sua versão 5, suporta praticamente todos os recursos da programação orientada a objetos, este padrão pode ser implementado também nesta linguagem sem muitas dificuldades.

Uma das situações nas quais usamos o padrão Singleton é quando queremos que somente uma instância de uma determinada classe seja criada e que esta esteja disponível para todas as demais classes do sistema. Um exemplo disso é uma classe responsável por registrar logs do sistema, uma classe responsável por obter conexões com o banco de dados, ou ainda uma classe que concentra dados de configuração da aplicação.

Assim, a chave do padrão Singleton é um método estático, geralmente chamado de getInstance(), que retorna uma nova instância da classe se esta ainda não foi instanciada. Se a classe já tiver sido instanciada, o método getInstance() retorna a instância já existente.

Vamos ver um exemplo deste padrão em PHP. Observe o código a seguir:

<?
  // Uma classe Singleton responsável por gravar 
  // logs no sistema
  class Logger{
    // variável estática e privada que guarda a instância
    // atual da classe
    private static $instancia = NULL;    

    // Método estático que retorna uma instância já existente, ou
    // cria uma nova instância
    public static function getInstance(){
      if(self::$instancia == NULL){
         self::$instancia = new Logger();
      }
      return self::$instancia;
    }

    // Construtor privado para evitar que instâncias sejam
    // criadas usando new
    private function __construct(){
      // não precisamos fazer nada aqui
    }

    // Método clone() também privado para evitar a criação
    // de clones desta classe
    private function __clone(){
      // não precisamos fazer nada aqui
    }

    public function registrarLog($dados){
      echo "Vou registrar o log: " . $dados;
    }
  }

  // vamos registrar um novo log usando a classe Singleton
  Logger::getInstance()->registrarLog("Novo usuário cadastrado.");
?>

Ao executar este código teremos o seguinte resultado:

Vou registrar o log: Novo usuário cadastrado.


Desafios, Exercícios e Algoritmos Resolvidos de PHP

Veja mais Dicas e truques de PHP

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


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