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 ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca

Exercícios Resolvidos de Java - Travessia de uma árvore binária de busca usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica)

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

O percurso em ordem (em-ordem, in-order, In-ordem ou ordem simétrica) é 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 uma função recursiva.

Escreva um programa Java que contenha uma árvore binária de busca cujos nós guardarão, além das referências para o filho esquerdo e o filho direito, apenas um valor inteiro. Forneça uma função inserir() que permitirá inserir os valores na árvore. Em seguida forneça uma função recursiva que permitirá fazer a travessia in-order da árvore.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 7
Informe um valor inteiro: 3
Informe um valor inteiro: 18
Informe um valor inteiro: 4
Informe um valor inteiro: 9

Percurso em ordem:
3 4 7 9 18
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 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(NoArvore raiz){
    if(raiz == null){ // condição de parada
      return;
    }
    
    // visita a sub-árvore da esquerda
    emOrdem(raiz.esquerdo);
    // visita o nó atual
    System.out.print(raiz.valor + " ");
    // visita a sub-árvore da direita
    emOrdem(raiz.direito);
  }
}

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 exibir os nós da árvore usando o percurso em ordem
    System.out.println("\nPercurso em ordem:");
    arvore.emOrdem();
    
    System.out.println("\n");
  }
}



Python ::: wxPython ::: Gerenciadores de Layout do wxPython

Como usar o gerenciador de layout BoxSizer em suas aplicações wxPython

Quantidade de visualizações: 829 vezes
O gerenciador de layout BoxSizer do wxPython é o mais comum em aplicações Python usando interfaces gráficas do usuário, ou seja, aplicações GUI.

Este gerenciador de layout nos permite agrupar vários controles em uma linha ou coluna, e podemos ainda colocar um BoxSizer dentro de outro BoxSizer, o que resulta em layouts bem mais complexos.

Para definir se os controles serão colocados na vertical ou horizontal nós podemos usar os valores wx.VERTICAL ou wx.HORIZONTAL no construtor da classe BoxSizer para ajustar a orientação do layout.

Veja uma aplicação wxPython completa na qual colocamos três botões wx.Button na janela principal do programa, dispostos na horizontal:

# vamos importar o framework wxPython 
import wx

# classe que representará a janela principal da
# aplicação wxPython
class JanelaPrincipal(wx.Frame):
  # o método construtor
  def __init__(self, *args, **kw):
    # chama o construtor da classe wx.Frame
    super(JanelaPrincipal, self).__init__(*args, **kw)

    # chama a função que inicializa a GUI
    self.InicializarGUI()

  # função que inicializa a GUI do programa
  def InicializarGUI(self):
    # vamos criar um painel
    painel = wx.Panel(self)
    # definimos a cor de fundo para o painel
    painel.SetBackgroundColour(wx.WHITE)
    
    # criamos um BoxSizer
    vbox = wx.BoxSizer(wx.HORIZONTAL)

    # vamos criar três botões e adicioná-los ao BoxSizer
    btn1 = wx.Button(painel, label='Produtos', size=(90, 30)) 
    btn2 = wx.Button(painel, label='Clientes', size=(90, 30))
    btn3 = wx.Button(painel, label='Fornecedores', size=(90, 30))
    vbox.Add(btn1, flag=wx.LEFT|wx.TOP, border=10)
    vbox.Add(btn2, flag=wx.LEFT|wx.TOP, border=10)
    vbox.Add(btn3, flag=wx.LEFT|wx.TOP, border=10)

    # colocamos o sizer no painel
    painel.SetSizer(vbox)

    # definimos o tamanho da janela
    self.SetSize((450, 350))
    # definimos o título da janela
    self.SetTitle('O gerenciador de layout BoxSizer')
    # e centralizamos a janela
    self.Centre()

# função principal do programa Python
def main():
  # vamos criar a aplicação wxPython
  app = wx.App()
  janela_principal = JanelaPrincipal(None)
  janela_principal.Show()
  app.MainLoop()

if __name__ == "__main__":
  main()

Note o uso de um objeto wx.Panel para a criação de um painel no qual colocaremos o BoxSizer. Observe também o uso das flags wx.LEFT|wx.TOP para ajustarmos as bordas ao redor de cada um dos botões inseridos no gerenciador de layout.


Java ::: Dicas & Truques ::: Data e Hora

Como adicionar ou subtrair dias de uma data e hora usando o método add() da classe Calendar do Java

Quantidade de visualizações: 14459 vezes
Este trecho de código mostra como usar o método add() da classe Calendar da linguagem Java para adicionar ou subtrair dias de uma data. Veja que este método requer o campo de calendário e um número inteiro. Para o nosso propósito, o campo de calendário pode ser DAY_OF_MONTH ou DATE. Um valor positivo adiciona dias enquanto um valor negativo subtrai.

Veja o código completo:

package arquivodecodigos;

import java.util.*;
import java.text.*;
 
public class Estudos{ 
  public static void main(String args[]){ 
    Calendar agora = Calendar.getInstance();
     
    // formata e exibe a data e hora atual
    Format formato = new SimpleDateFormat(
      "dd/MM/yyyy - HH:mm:ss");
    System.out.println("Hoje é: " + 
      formato.format(agora.getTime()));
 
    // vamos adicionar 5 dias a esta data
    agora.add(Calendar.DAY_OF_MONTH, 5);
    // o mesmo resultado pode ser obtido com
    // agora.add(Calendar.DATE, 5);
 
    // formata e exibe o resultado
    formato = new SimpleDateFormat(
      "dd/MM/yyyy - HH:mm:ss");
    System.out.println("Daqui a 5 dias será: " +
      formato.format(agora.getTime()));
  } 
}

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

Hoje é: 19/03/2021 - 22:13:54
Daqui a 5 dias será: 24/03/2021 - 22:13:54


C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como retornar o tamanho de um array em C# usando a propriedade Length

Quantidade de visualizações: 8621 vezes
Nesta dica mostrarei como saber a quantidade de elementos em um vetor do C# usando a sua propriedade Length. Por quantidade de elementos nós estamos falando do tamanho do array.

Veja o código C# completo:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // cria e inicializa um array de strings
      string[] cidades = {"Goiânia", "São Paulo",
        "Rio de Janeiro", "Curitiba"};

      // obtém a quantidade de elementos no array
      int quant = cidades.Length;
      Console.WriteLine("Este array possui {0} elementos.", quant);

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

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

Este array possui 4 elementos.


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