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 ::: Coleções (Collections) ::: LinkedHashSet

Como remover itens repetidos de uma ArrayList usando um objeto da classe LinkedHashSet do Java

Quantidade de visualizações: 935 vezes
Em algumas situações nós temos uma ArrayList com algumas repetições e gostaríamos de remover os itens duplicados mas gostaríamos de manter a ordem original dos elementos. Para isso nós podemos usar um objeto da classe LinkedHashSet.

Como sabemos, classes que implementam a interface Set possuem a habilidade de recusar itens repetidos. A classe LinkedHashSet, além de recusar duplicidades de valores, mantém a ordem de inserção dos elementos.

Veja o código Java completo para o exemplo:

package estudos;

import java.util.ArrayList;
import java.util.LinkedHashSet;

public class Estudos {
  public static void main(String[] args) {
    // vamos criar uma ArrayList de linguagens de programação
    ArrayList<String> lista = new ArrayList<>();
    
    // vamos adicionar alguns elementos no ArrayList. Note
    // que temos itens repetidos
    lista.add("Java");
    lista.add("Scala");
    lista.add("Ruby");
    lista.add("Scala");
    lista.add("Python");
    lista.add("Ruby");
    lista.add("Delphi");
 
    // vamos mostrar o conteúdo do ArrayList
    System.out.println("O conteúdo do ArrayList é: " +
      lista.toString());
    
    // vamos criar uma instância da classe LinkedHashSet
    LinkedHashSet<String> set = new LinkedHashSet<>(lista);
 
    // agora construímos uma nova ArrayList sem repetições a
    // partir do LinkedHashSet
    ArrayList<String> lista2 = new ArrayList<>(set);
 
    // e mostramos o resultado
    System.out.println("ArrayList sem repetições: " +
      lista2.toString());
  }
}

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

O conteúdo do ArrayList é: [Java, Scala, Ruby, Scala, Python, Ruby, Delphi]
ArrayList sem repetições: [Java, Scala, Ruby, Python, Delphi]

Note como a ordem dos elementos no ArrayList original foi respeitada.


Revit C# ::: Dicas & Truques ::: Tratamento de Erros

Como corrigir o erro OperationCanceledException em macros e add-ins do Revit C# API

Quantidade de visualizações: 637 vezes
Nesta dica mostrarei como podemos tratar a exceção OperationCanceledException em macros e plug-ins feitos para o Revit usando a Revit C# API. Esta exceção está no namespace Autodesk.Revit.Exceptions e deve ser declarada por seu nome completo, para não ser confundida com System.OperationCanceledException.

O erro OperationCanceledException ocorre quando uma operação é cancelada de forma inesperada. Por exemplo, no código abaixo nós pedimos para o usuário selecionar um grupo e, em seguida, informar um ponto na área de desenho do Revit para que o grupo seja copiado e colocado no ponto indicado.

Se o usuário clicar com o botão direito ou pressionar Esc, a operação é cancelada automaticamente. O tratamento da exceção OperationCanceledException nos permite reagir a isso, indicando ao usuário o melhor caminho a ser seguido.

O código apresentado aqui já foi visto em dicas e truques sobre a criação e manipulação de grupos de elementos no Revit usando a Revit C# API. No entanto, no código apresentado eu não fiz o tratamento de exceções.

Veja o código Revit C# API completo para o exemplo:

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
 
namespace Estudos {
  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
    TransactionMode.Manual)]
  [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
  public partial class ThisApplication {
    private void Module_Startup(object sender, EventArgs e) {
      // vamos obter uma referência ao Document ativo
      Document doc = this.ActiveUIDocument.Document;
      
      // Vamos definir um objeto Reference para guardar
      // o elemento selecionado pelo usuário
      Reference ref_selecionado = null;
  
      // pedimos para o usuário selecionar um grupo
      Selection selecao = this.ActiveUIDocument.Selection;
      
      try {
        ref_selecionado = selecao.PickObject(ObjectType.Element,
          "Selecione um grupo");
        Element elem = doc.GetElement(ref_selecionado);
        Group group = elem as Group;
      
        // vamos pedir para o usuário selecionar um ponto na área de
        // desenho do Revit
        XYZ ponto = selecao.PickPoint(
          "Selecione um ponto para posicionar o grupo");
      
        // criamos uma nova transação e posicionamos a cópia do
        // grupo nas coordenadas indicadas pelo usuário
        Transaction transacao = new Transaction(doc);
        transacao.Start("Copiar Grupo no Revit");
        doc.Create.PlaceGroup(ponto, group.GroupType);
        transacao.Commit();
      
        // mostramos o resultado
        TaskDialog.Show("Aviso", "O grupo foi copiado com sucesso.");
      }
      // Se o usuário clicar com o botão direito ou pressionar Esc
      catch (Autodesk.Revit.Exceptions.OperationCanceledException ex) {
        TaskDialog.Show("Aviso", "Erro: Operação cancelada pelo usuário");
      }
      catch (Exception ex) {
        TaskDialog.Show("Aviso", "Erro: " + ex.Message);
      }
    }
    
    private void Module_Shutdown(object sender, EventArgs e) {
      // para fazer alguma limpeza de memória ou algo assim
    }
 
    #region Revit Macros generated code
    private void InternalStartup() {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}

Se o usuário cancelar a operação, ou seja, não selecionar nenhum grupo (talvez pressionando a tecla Esc), o código reagirá e mostrará a mensagem:

Erro: The user aborted the pick operation.

Se, em vez de selecionar um grupo, o usuário selecionar um outro elemento, então a mensagem de erro será:

Erro: Referência de objeto não definida para uma instância de um objeto.


Revit C# ::: Dicas & Truques ::: Selection, Seleção

Como pedir para o usuário selecionar somente um elemento no Revit usando a função PickObject() do objeto Selection da Revit C# API

Quantidade de visualizações: 913 vezes
Durante o desenvolvimento de plug-ins e macros para o Revit usando C# e a API do Revit, nós precisamos pedir para o usuário selecionar um elemento e efetuar alguma operação com ele. Para isso nós podemos usar a função PickObject() do objeto Selection.

O objeto Selection é obtido a partir de um UIDocument, que, por sua vez, é obtido usando this.ActiveUIDocument. Após a aquisição do objeto Selection, nós chamamos a função PickObject() e retornamos um objeto Reference, para representar o elemento selecionado pelo usuário na área de desenho do Revit.

Se o objeto Reference retornado for diferente de null, então sabemos que o usuário selecionou o elemento e podemos proseguir com a execução do código do Plug-in ou macro.

Veja o código Revit C# completo para o exemplo:

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;

namespace Estudos {
  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
    TransactionMode.Manual)]
  [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
  public partial class ThisApplication {
    private void Module_Startup(object sender, EventArgs e) {
      // vamos obter uma referência ao UIDocument ativo
      UIDocument uidoc = this.ActiveUIDocument;
      
      // agora mostramos uma mensagem para o usuário selecionar um
      // elemento
      TaskDialog.Show("Aviso", "Selecione um elemento");
      
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
    
      // e finalmente esperamos que o usuário selecione o elemento
      Reference selecionado = selecao.PickObject(ObjectType.Element);
    
      // agora testamos se o usuário realmente selecionou um
      // elemento
      if (selecionado != null) {
        TaskDialog.Show("Aviso", "Você selecionou um elemento.");  
      }
    }

    private void Module_Shutdown(object sender, EventArgs e) {
      // para fazer alguma limpeza de memória ou algo assim
    }

    #region Revit Macros generated code
    private void InternalStartup() {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}



Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Python - Escreva um programa Python para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no array

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

Dado o seguinte vetor de inteiros:

# vamos declarar e construir um vetor de 8 inteiros
valores = [0, 3, 0, 5, 7, 4, 0, 9]
Escreva um programa Python para mover todos os zeros para o final do vetor, ou seja, para a direita, sem alterar a ordem dos elementos diferentes de zero já presentes no array e sem criar um vetor adicional ou temporário.

Sua saída deverá ser parecida com:

Vetor na ordem original:

0   3   0   5   7   4   0   9   

Vetor com os zeros deslocados para o final:

3   5   7   4   9   0   0   0
Resposta/Solução:

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

# método principal
def main():
  # vamos declarar e construir um vetor de 8 inteiros
  valores = [0, 3, 0, 5, 7, 4, 0, 9]
    
  # vamos mostrar o vetor na ordem original
  print("Vetor na ordem original:\n")
  for i in range(len(valores)):
    print("%d   " % valores[i], end="")
    
  # vamos inicializar j como 0 para que ele aponte para
  # o primeiro elemento do vetor
  j = 0
    
  # agora o laço for percorre todos os elementos do vetor,
  # incrementanto a variável i e deixando o j em 0
  for i in range(len(valores)):
    # encontramos um valor que não é 0
    if(valores[i] != 0):
      # fazemos a troca entre os elementos nos índices
      # i e j
      temp = valores[i]
      valores[i] = valores[j]
      valores[j] = temp
      # e avançamos o j para o elemento seguinte
      j = j + 1
    
  # agora mostramos o resultado
  print("\n\nVetor com os zeros deslocados para o final:\n")
  for i in range(len(valores)):
    print("%d   " % valores[i], end="")
    
if __name__== "__main__":
  main()

Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes.


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