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 ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca

Estruturas de dados em Java - Como fazer a travessia de uma árvore binária de busca em Java usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica)

Quantidade de visualizações: 5897 vezes
Antes de discutirmos o percurso in-order, veja a árvore binária de busca na figura abaixo:



Esta árvore possui 9 nós e obedece à regra de que os nós com valores menores que o nó pai ficam à sua esquerda, e aqueles com nós maiores que o nó pai, ficam à sua direita.

O percurso em ordem é usado quando queremos exibir os valores dos nós da árvore binária de busca em ordem ascendente. Neste tipo de percurso nós visitamos primeiramente a sub-árvore da esquerda, então o nó atual e finalmente a sub-árvore à direita do nó atual. É importante notar que esta travessia é feita por meio de um método recursivo.

Veja o código completo para o exemplo:

Código para No.java:

package arvore_binaria;

public class No {
  private int valor; // valor armazenado no nó
  private No esquerdo; // filho esquerdo
  private No direito; // filho direito
 
  // construtor do nó
  public No(int valor){
    this.valor = valor;
    this.esquerdo = null;
    this.direito = null;
  }

  public int getValor() {
    return valor;
  }

  public void setValor(int valor) {
    this.valor = valor;
  }

  public No getEsquerdo() {
    return esquerdo;
  }

  public void setEsquerdo(No esquerdo) {
    this.esquerdo = esquerdo;
  }

  public No getDireito() {
    return direito;
  }

  public void setDireito(No direito) {
    this.direito = direito;
  }
}

Código para ArvoreBinariaBusca.java:

package arvore_binaria;

public class ArvoreBinariaBusca {
  private No 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 No(valor); // cria um novo nó
    }
    else{
      // localiza o nó pai do novo nó
      No pai = null;
      No noAtual = raiz; // começa a busca pela raiz
  
      // enquanto o nó atual for diferente de null
      while(noAtual != null){
        // o valor sendo inserido é menor que o nó atual?
        if(valor < noAtual.getValor()) {
          pai = noAtual;
          // vamos inserir do lado esquerdo
          noAtual = noAtual.getEsquerdo();
        }
        // o valor sendo inserido é maior que o nó atual
        else if(valor > noAtual.getValor()){
          pai = noAtual;
          // vamos inserir do lado direito
          noAtual = noAtual.getDireito();
        }
        else{
          return false; // um nó com este valor foi encontrado
        }
      }
        
      // cria o novo nó e o adiciona como filho do nó pai
      if(valor < pai.getValor()){
         pai.setEsquerdo(new No(valor));
      }
      else{
        pai.setDireito(new No(valor));
      }
    }
 
    return true; // retorna true para indicar que o novo nó foi inserido
  }
   
  // método que permite disparar a travessia em-ordem
  public void emOrdem(){
    emOrdem(raiz);
  }
 
  // sobrecarga do método emOrdem com uma parâmetro (esta é a versão 
  // recursiva do método)
  private void emOrdem(No raiz){
    if(raiz == null){ // condição de parada
      return;
    }
     
    // visita a sub-árvore da esquerda
    emOrdem(raiz.getEsquerdo());
    // visita o nó atual
    System.out.print(raiz.getValor() + " ");
    // visita a sub-árvore da direita
    emOrdem(raiz.getDireito());
  }
}

E agora o código para a classe principal:

package arvore_binaria;

import java.util.Scanner;

public class ArvoreBinariaTeste {
  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 9 valores na árvore
    for(int i = 0; i < 9; 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("Não foi possível inserir." +
          " Um elemento já contém este valor.");  
      }
    }
     
    // vamos exibir os nós da árvore usando o percurso in-order
    System.out.println("\nPercurso in-order:");
    arvore.emOrdem();
     
    System.out.println("\n");
  }
}

Ao executar este código teremos o seguinte resultado:

Informe um valor inteiro: 8
Informe um valor inteiro: 3
Informe um valor inteiro: 10
Informe um valor inteiro: 1
Informe um valor inteiro: 6
Informe um valor inteiro: 14
Informe um valor inteiro: 4
Informe um valor inteiro: 7
Informe um valor inteiro: 13

Percurso in-order:
1 3 4 6 7 8 10 13 14



PHP ::: PHP + MySQL ::: MySQL Improved Extension (mysqli)

Como estabelecer uma conexão PHP + MySQL (Improved Extension (mysqli)) no modo Programação Orientada a Objetos - Atualizado

Quantidade de visualizações: 10697 vezes
Nesta dica eu mostro como fazer uma conexão PHP + MySQL usando a extensão mysqli no modo POO (Programação Orientada a Objetos). Este modelo difere do modelo procedimental porque, em orientação a objetos, nós criamos um novo objeto da classe mysqli, em vez de simplesmente chamar a função mysqli_connect().

Veja o código completo:

<?
  // constrói um novo objeto mysqli chamado conexao
  $conexao = new mysqli("localhost", "root",
    "osmar1234", "estudos");
 
  // testa se a conexão foi efetuada com sucesso
  if(mysqli_connect_errno()){
    die("Houve um erro de conexão: " . mysqli_connect_error());
  } 
  else{
    print "Conexão com " . $conexao->host_info 
      . " efetuada com sucesso.";
  } 

  // fecha a conexão com o banco de dados
  $conexao->close(); // fecha a conexão
?>

Se os parâmetros de conexão estiverem corretos, o seguinte resultado será exibido:

Conexão com localhost via TCP/IP efetuada com sucesso.

Esta dica foi revisada e atualizada para o PHP 8.


Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid

Como definir ou retornar a cor de fundo de uma determinada coluna do TDBGrid do Delphi

Quantidade de visualizações: 10002 vezes
Em algumas situações gostaríamos de definir a cor de fundo de uma determinada coluna do DBGrid. Isso pode ser feito por meio da propriedade Color da classe TColumn.

Em tempo de design a cor de fundo de um coluna pode ser definida clicando-se com o botão direito do DBGrid e escolhendo a opção Columns Editor. Em seguida clique na coluna desejada e ajuste sua propriedade Color no Object Inspector.

Em tempo de execução podemos definir a cor de fundo para uma coluna usando o seguinte trecho de código:

procedure TForm3.Button3Click(Sender: TObject);
begin
  // vamos definir a cor de fundo para a primeira coluna
  DBGrid1.Columns[0].Color := Graphics.clYellow;
end;

Veja que eu defini a cor de fundo como sendo uma das constantes definidas na unit Graphics. Lembre-se de que também podemos fornecer um valor RGB.

Veja agora um trecho de código que mostra como obter a cor de fundo da coluna:

procedure TForm3.Button3Click(Sender: TObject);
begin
  // vamos obter a cor de fundo da primeira coluna
  ShowMessage('A cor de fundo da coluna é: ' +
    ColorToString(DBGrid1.Columns[0].Color));
end;

Ao executarmos este código temos uma mensagem parecida com:

"A cor de fundo da coluna é: clSilver".

Esta dica foi escrita e testada no Delphi 2009.


Python ::: Dicas & Truques ::: Lista (List)

Como adicionar itens no início de uma lista Python usando a função insert()

Quantidade de visualizações: 10007 vezes
Podemos usar o método insert() do objeto List da linguagem Python para inserir itens em qualquer posição, ou seja, em qualquer índice de uma lista. Para isso só precisamos informar o índice desejado e o valor a ser inserido.

Nesta dica mostrarei como adicionar itens no início de uma List Python. Tudo que precisamos é informar o valor 0 para o índice. Veja o exemplo completo:

"""
  Este exemplo mostra como adicionar itens ao
  início de uma lista de inteiros.
"""

def main():
  # cria uma lista vazia
  valores = []
 
  # início do laço for
  for i in range(1, 6):
    valor = int(input("Informe um inteiro: "))
 
    # insere o valor no início da lista
    valores.insert(0, valor)
  # fim do laço for
 
  # exibe os valores da lista
  print("Valores na lista:", valores, "\n")

if __name__== "__main__":
  main()

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

Informe um inteiro: 5
Informe um inteiro: 8
Informe um inteiro: 3
Informe um inteiro: 2
Informe um inteiro: 9
Valores na lista: [9, 2, 3, 8, 5]


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


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