![]() |
|
|
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. |
||
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como retornar a quantidade de colunas do TDBGrid do Delphi em tempo de execuçãoQuantidade de visualizações: 9928 vezes |
|
Em algumas situações precisamos obter a quantidade de colunas em um controle TDBGrid em tempo de execução. Isso pode ser feito por meio da propriedade Count da classe TDBGridColumns. Um controle TDBGrid possui uma referência a um objeto desta classe por meio de sua propriedade Columns. Veja um trecho de código no qual clicamos em um botão e exibimos a quantidade de colunas em um DBGrid chamado "DBGrid1":
procedure TForm3.Button3Click(Sender: TObject);
var
colunas: Integer;
begin
// vamos obter a quantidade de colunas no DBGrid
colunas := DBGrid1.Columns.Count;
ShowMessage('O DBGrid possui ' + IntToStr(colunas) + ' colunas');
end;
Ao executar o código e clicar no botão você verá uma mensagem parecida com: "O DBGrid possui 10 colunas". Esta dica foi escrita e testada no Delphi 2009. |
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: 1413 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. |
Delphi ::: VCL - Visual Component Library ::: TComboBox |
Como detectar o evento OnSelect da classe TComboBox do DelphiQuantidade de visualizações: 14039 vezes |
|
O evento OnSelect da classe TComboBox é disparado quando o usuário seleciona um item (uma string) na lista drop-down do componente. Este evento possui a seguinte assinatura: property OnSelect: TNotifyEvent; Um evento do tipo TNotifyEvent não possui parâmetros específicos ao evento ocorrido. Assim, no evento OnSelect temos acesso somente ao parâmetro Sender, do tipo TObject, que nos informa em qual componente o evento ocorreu. Vamos ver um exemplo? Veja o código para o tratamento do evento OnSelect de um ComboBox. Aqui, todas as vezes que o evento disparar, nós vamos exibir o valor do novo item:
procedure TForm3.ComboBox1Select(Sender: TObject);
begin
// vamos mostrar o novo item selecionado
ShowMessage('O novo item selecionado é: ' +
ComboBox1.Items[ComboBox1.ItemIndex]);
end;
Note que o evento OnSelect é disparado somente após a mudança de seleção e, consequentemente, a atualização da propriedade Text, que deverá refletir o novo item. |
React Native ::: React Native - Componentes Visuais ::: Image |
Como exibir imagens e fotos em aplicações React Native usando o componente ImageQuantidade de visualizações: 1534 vezes |
|
O componente Image do React Native é usado quando queremos carregar imagens e exibí-las em nossas aplicações mobile. Este componente possibilita a exibição de diferentes tipos de imagens, incluindo imagens remotas (em um site, por exemplo), recursos estáticos, imagens em locais temporários e imagens a partir do armazenamento local, tais como imagens da câmera. Veja uma aplicação React Native completa que mostra como carregar uma imagem da internet e exibí-la em um componente Image. Note que a imagem a ser exibida é a logo do nosso site. Eis o código:
import React, {Component} from 'react';
import {Image, View} from 'react-native';
type Props = {};
export default class App extends Component<Props> {
render() {
return (
<View style={{padding: 10, flexDirection: 'column'}}>
<Image style={{width: 237, height: 49}} source={{uri:
'https://www.arquivodecodigos.com.br/logo2.jpg'}} />
</View>
);
}
}
É importante observar que, quando a imagem estiver sendo carregada de uma rede (internet, por exemplo) ou via propriedade data, temos que, manualmente, indicar as dimensões da imagem a ser exibida. |
Nossas 20 dicas & truques de programação mais populares |
|
GoLang - Como retornar o tamanho de uma string em Golang usando os métodos len() e RuneCountInString() MySQL - Como adicionar uma chave primária a uma tabela MySQL usando o comando ALTER TABLE ADD PRIMARY KEY |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Laravel - Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 1 Portugol - Como calcular o coeficiente angular de uma reta em Portugol dados dois pontos no plano cartesiano |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






