![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa 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 Engenharia Civil - Fundações |
||
|
||
|
|
||
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Como percorrer uma árvore binária em Java usando o algorítmo depth-first search (DFS) de forma iterativaQuantidade de visualizações: 1331 vezes |
|
Nesta dica mostrarei como podemos implementar o algorítmo da Busca em Profundidade (DFS, do inglês depth-first search) em Java de forma iterativa, ou seja, sem usar recursão. Não farei a busca, mas sim o percurso, para que você entenda como a lógica dessa busca funciona. Antes de iniciarmos, veja a árvore binária que vamos usar no exemplo: ![]() Note que esta árvore possui seis nós. O nó 5 é o nó raiz, e possui como filhos os nós 4 e 9. O nó 4, por sua vez, possui apenas um filho, o nó 2, ou seja, o filho da esquerda. O nó 9 possui dois filhos: o nó 3 é o filho da esquerda e o nó 12 é o filho da direita. Os filhos da árvore binária que não possuem outros filhos são chamados de folhas. Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n). Vamos à implementação? Veja o código para a classe No, que representa um nó na árvore binária:
// implementação da classe No
class No{
public int valor; // o valor do nó
public No esquerdo; // o filho da esquerda
public No direito; // o filho da direita
public No(int valor){
this.valor = valor;
this.esquerdo = null;
this.direito = null;
}
}
Veja agora o código completo para o exemplo. Note que usei uma implementação não-recursiva, na qual todos os nós expandidos recentemente são adicionados a uma pilha, para realizar a exploração. O uso da pilha permite o retrocesso (backtracking) de forma a reiniciarmos o percurso ou busca no próximo nó. Para manter o código o mais simples possível, eu usei a classe Stack do Java, juntamente com seus métodos push() e pop() para simular a pilha. Usei também uma ArrayList para guardar os valores da árvore binária na ordem depth-first. Eis o código:
package estudos;
import java.util.ArrayList;
import java.util.Stack;
// implementação da classe No
class No{
public int valor; // o valor do nó
public No esquerdo; // o filho da esquerda
public No direito; // o filho da direita
public No(int valor){
this.valor = valor;
this.esquerdo = null;
this.direito = null;
}
}
public class Estudos{
public static void main(String[] args){
// vamos criar os nós da árvore
No cinco = new No(5); // será a raiz da árvore
No quatro = new No(4);
No nove = new No(9);
No dois = new No(2);
No tres = new No(3);
No doze = new No(12);
// vamos fazer a ligação entre os nós
cinco.esquerdo = quatro;
cinco.direito = nove;
quatro.esquerdo = dois;
nove.esquerdo = tres;
nove.direito = doze;
// agora já podemos efetuar o percurso depth-first
ArrayList<Integer> valores = percursoDepthFirst(cinco);
System.out.println("Os valores na ordem Depth-First são: " + valores);
}
public static ArrayList<Integer> percursoDepthFirst(No no){
// vamos usar uma ArrayList para retornar os elementos
// na ordem Depth-First
ArrayList<Integer> valores = new ArrayList<>();
// vamos criar uma nova instância de uma pilha
Stack<No> pilha = new Stack<>();
// já vamos adicionar o primeiro nó recebido, que é a raiz
pilha.push(no);
// enquanto a pilha não estiver vazia
while(pilha.size() > 0){
// vamos obter o elemento no topo da pilha
No atual = pilha.pop();
// adicionamos este valor no ArrayList
valores.add(atual.valor);
// vamos colocar o filho direito na pilha
if(atual.direito != null){
pilha.push(atual.direito);
}
// vamos colocar o filho esquerdo na pilha
if(atual.esquerdo != null){
pilha.push(atual.esquerdo);
}
}
return valores; // retorna os valores da árvore
}
}
Ao executarmos este código Java nós teremos o seguinte resultado: Os valores na ordem Depth-First são: [5, 4, 2, 9, 3, 12] Compare estes valores com a imagem vista anteriormente para entender ainda melhor o percurso ou busca Depth-First. |
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como listar os tipos de colunas e pilares disponíveis no Revit usando a Revit C# APIQuantidade de visualizações: 530 vezes |
|
Nesta dica mostrarei como podemos obter e retorna uma lista com as colunas e pilares disponíveis na sua instalação do Revit. Esse passo é muito importante quando precisamos informar o id do símbolo de família, ou seja, o tipo de coluna ou pilar que queremos criar, em um determinado momento, via programação Revit C# API. O primeiro passo é acessar o documento atual do Revit usando uma chamada à this.ActiveUIDocument.Document. Em seguida nós obtemos um objeto FilteredElementCollector para filtrar e retornar os símbolos de família que se enquadrem na categoria OST_StructuralColumns. Para finalizar, nós convertemos os elementos Element em FamilySymbol. Veja o código 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 Autodesk.Revit.DB.Architecture;
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 obter um FilteredElementCollector contendo apenas
// elementos que sejam ElementType e pertençam à categoria
// OST_StructuralColumns
try {
FilteredElementCollector elementos = new FilteredElementCollector(doc)
.WhereElementIsElementType().OfCategory(BuiltInCategory.OST_StructuralColumns);
String lista = "";
// vamos percorrer os elementos retornados
foreach(Element elemento in elementos) {
// vamos converter o Element em FamilySymbol
FamilySymbol coluna = elemento as FamilySymbol;
// agora montamos a lista de colunas (ou pilares)
lista = lista + "Id: " + elemento.Id.IntegerValue + "; Nome: "
+ elemento.Name + "; Tipo: " + elemento.Category.Name +
"; Família: " + coluna.Family.Name + "\n";
}
// mostramos o resultado
TaskDialog.Show("Aviso", lista);
}
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
}
}
Ao executar este código Revit C# nós teremos o seguinte resultado: Id: 12190; Nome: UC305x305x97; Tipo: Pilares estruturais; Família: UC-Universal Columns-Column Id: 355634; Nome: 80 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular Id: 355636; Nome: 50 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular |
Laravel ::: Dicas de Estudo e Anotações ::: Passos Iniciais |
Como efetuar uma instalação do Laravel no Windows usando o ComposerQuantidade de visualizações: 3096 vezes |
|
O Laravel é um framework PHP livre e open-source criado por Taylor B. Otwell para o desenvolvimento de sistemas web que utilizam o padrão MVC (model, view, controller) ou seja, o padrão Modelo-Visão-Controlador. Algumas características proeminentes do Laravel são sua sintaxe simples e concisa, um sistema modular com gerenciador de dependências dedicado, várias formas de acesso a banco de dados relacionais e vários utilitários indispensáveis no auxílio ao desenvolvimento e manutenção de sistemas. De acordo com uma pesquisa feita em Março de 2015 com desenvolvedores, o Laravel foi listado como o framework PHP mais popular de 2015, seguido pelo Symfony2, Nette, CodeIgniter, Yii2 e outros. Em Agosto de 2015, o Laravel já era o principal framework de projetos PHP no GitHub. Laravel foi desenvolvido sob o MIT License, tendo seu código-fonte hospedado no GitHub. Atualmente encontra-se na versão 7.3.0. Como baixar e instalar o Laravel Para instalar o framework Laravel, direcione o seu navegador para https://getcomposer.org. Esta é a página do Composer, um gerenciador de dependências para o PHP. Para esta dica eu baixei o instalador para o Windows Composer-Setup.exe. Durante o processo de instalação, tenha o cuidado de informar o caminho do php.exe no seu sistema. Concluída a instalação do Composer, abra uma janela de terminal e digite: composer Pressione Enter e você verá um resultado parecido com: C:\Users\samsung>composer ... why-not Shows which packages prevent the given package from being installed. Isso é um bom sinal. O Composer está pronto e já podemos continuar com a instalação do Laravel. Na mesma janela de terminal, digite o comando abaixo: composer global require laravel/installer Aguarde alguns minutos e você terá o seguinte resultado: Changed current directory to C:/Users/samsung/AppData/Roaming/Composer Using version ^3.1 for laravel/installer ... Writing lock file Generating autoload files 8 packages you are using are looking for funding. Use the `composer fund` command to find out more! Para testar se sua instalação do Laravel está pronta para uso, use a mesma janela de terminal ou abra uma nova e digite: laravel --version O resultado será algo como Laravel Installer 3.1.0. Agora, para finalizar, crie um diretório em um local de sua preferência, entre nele e dispare o comando a seguir: C:\Users\samsung>cd c:\estudos_laravel c:\estudos_laravel>laravel new cadastroclientes Pressione Enter, aguarde alguns segundos e então verifique que uma instalação fresquinha do Laravel foi feita no diretório que você indicou, e ela contém, já instaladas, todas as dependências necessárias para a criação do seu projeto. |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Jogos (Games) |
Como criar um Jogo da Velha em Java - Jogo completo com código fonte comentado - Versão consoleQuantidade de visualizações: 8475 vezes |
|
Faça o download do código-fonte Jogo da Velha em Java Sobre o Jogo da Velha em Java O Jogo da Velha, também conhecido como Tic-Tac-Toe, é um dos joguinhos mais fáceis de se programar em Java. Além disso, ele possibilita uma boa oportunidade de se entender matrizes, a estrutura switch, os laços for e while, assim como a estrutura básica presente em praticamente todos os games. O Jogo da Velha em Java Console Neste código fonte eu demonstro como o Jogo da Velha pode ser criado em Java usando o modo console, ou seja, em formato texto. Penso que o entendimento da lógica é mais fácil em modo console. Uma vez que você tenha aprendido todos os passos envolvidos, você poderá reproduzí-lo em modo gráfico sem muitas dificuldades. A versão do jogo apresentado nesta dica é um jogador humano, ou seja, você, contra o computador. Não coloquei inteligência artificial nem aprendizado de máquina nos movimentos do computador. Usei apenas jogadas sorteadas. Fica como desafio você implementar jogadas inteligentes por parte do computador como forma de deixar o jogo ainda mais interessante. Por enquanto o objetivo é só o aprendizado mesmo. Antes de continuarmos, veja uma imagem demonstrando o jogo: ![]() Me mostra um pouco do código Para mostrar a simplicidade do código, veja o método que registra a jogada do jogador humano:
// este método registra a jogada do jogador humano
private static void jogadaHumano(char[][] tabuleiro) {
int jogada; // para registrar a jogada do jogador humano
// repete até que a jogada seja válida
while (true) {
// lê a jogada do humano
System.out.print("\nSua jogada (1 a 9): ");
jogada = Integer.parseInt(entrada.nextLine());
// este movimento é válido?
if (movimentoValido(tabuleiro, jogada)){
break;
}
else{ // não é válido
System.out.println("O número " + jogada + " não é um movimento válido.");
}
}
// vamos registrar esse movimento
registrarMovimento(tabuleiro, jogada, 'X');
}
Os links para você baixar todas as versões deste projeto estão abaixo: 1) JOGOVELHAJC - Jogo da Velha em Java Console - NetBeans IDE - Faça o Download. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
Python ::: Tkinter GUI Toolkit ::: Formulários e Janelas |
Como definir a cor de fundo de uma janela do Tkinter do Python usando a função config()Quantidade de visualizações: 3718 vezes |
|
A cor de fundo de uma janela do Tkinter do Python pode ser definida por meio de uma chamada à função config() da classe Tk com o valor de uma cor para o parâmetro bg. Veja uma aplicação Tkinter completa no qual definimos o título da janela e, em seguida, sua cor de fundo:
# vamos importar o módulo Tkinter
import tkinter as tk
# método principal
def main():
# vamos criar a janela principal da aplicação
janela = tk.Tk()
# vamos definir o título da janela
janela.title("Sistema de Biblioteca")
# vamos definir a cor de fundo da janela
janela.config(bg='#F2B33D')
# entramos no loop de eventos
janela.mainloop()
if __name__== "__main__":
main()
|
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
|
Java - Como calcular a velocidade de um corpo dado sua massa e sua energia cinética usando a linguagem Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





