Você está aqui: Cards de Engenharia Civil - Construção Civil |
||
|
||
|
|
||
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) recursivoQuantidade de visualizações: 1083 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 recursiva. Em outra dica desta seção que mostrei como fazer a mesma travessia de forma iterativa e usando uma pilha para backtracking (retrocesso). 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 estamos usando recursividade nesta dica. Observe também o uso de uma ArrayList para guardar os valores da árvore binária na ordem depth-first. Eis o código:
package estudos;
import java.util.ArrayList;
// 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 = new ArrayList<>();
percursoDepthFirst(valores, cinco);
System.out.println("Os valores na ordem Depth-First são: " + valores);
}
public static void percursoDepthFirst(ArrayList<Integer> valores, No no){
if(no != null){
// vamos adicionar o valor deste nó no ArrayList
valores.add(no.valor);
// passamos para o filho esquerdo
percursoDepthFirst(valores, no.esquerdo);
// passamos para o filho direito
percursoDepthFirst(valores, no.direito);
}
}
}
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 ::: TListBox |
Como usar o controle TListBox em suas aplicações DelphiQuantidade de visualizações: 14080 vezes |
|
Objetos da classe TListBox, da unit StdCtrls, são controles do tipo lista de seleção. Este componente exibe uma lista com barras de rolagem contendo items que podem ser selecionados, adicionados ou excluídos. A classe TListBox é um wrapper (invólucro) para o controle LISTBOX da plataforma Windows. Em controles do tipo ListBox o usuário pode selecionar apenas um ítem ou vários itens de uma vez. Em Delphi, a classe TListBox implementa o comportamento genérico definido em TCustomListBox. É esta classe que devemos usar para derivar nossa própria ListBox caso o controle TListBox não satisfaça as nossas necessidades. É claro que podemos partir de qualquer classe que herde de TCustomListBox. A forma mais comum de adicionarmos um controle TListBox em nossos formulários é selecionando este componente na aba Standard e arrastando-o para a posição desejada na janela. Em seguida podemos adicionar itens na lista acessando sua propriedade Items, que são do tipo TStrings, ou seja, uma lista de strings. Ao clicarmos na propriedade Items no Object Inspector, um String List Editor será exibido. Basta inserir algumas strings nesta caixa de texto, pressionar o botão OK e verificar como o controle já exibe os itens que acabamos de inserir. Em tempo de execução, itens podem ser adicionados à uma TListBox usando códigos parecidos com:
procedure TForm1.Button1Click(Sender: TObject);
begin
// vamos inserir um novo item na TListBox
ListBox1.Items.Add('Osmar J. Silva');
end;
Se precisarmos obter o texto do ítem selecionado em uma TListBox, podemos usar: procedure TForm1.Button1Click(Sender: TObject); begin // vamos obter o texto do item selecionado na TListBox ShowMessage(ListBox1.Items[ListBox1.ItemIndex]); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Python ::: Python para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular o determinante de uma matriz 3x3 usando a Método de Sarrus em Python - Python para Álgebra LinearQuantidade de visualizações: 5898 vezes |
|
Os estudos da Geometria Analítica e Álgebra Linear envolvem, em boa parte de seus cálculos, a magnitude de vetores, ou seja, o módulo, tamanho, comprimento ou intensidade dos vetores. E isso não é diferente em relação às matrizes. Quando uma matriz é envolvida nos cálculos, com muita frequência precisamos obter o seu determinante, que nada mais é que um número real associado à todas as matrizes quadradas. Nesta dica mostrarei como obter o determinante de uma matriz quadrada de ordem 3, ou seja, três linhas e três colunas, usando o Método de Sarrus (somente matrizes 3x3). Note que é possível obter o mesmo resultado com o Teorema de Laplace, que não está restrito às matrizes quadradas de ordem 3. Veja também que não considerei as propriedades do determinante, o que, em alguns casos, simplifica muito os cálculos. Então, vamos supor a seguinte matriz 3x3: ![]() O primeiro passo é copiarmos a primeira e a segunda colunas para o lado direito da matriz. Assim: ![]() Agora dividimos a matriz em dois conjuntos: três linhas diagonais descendentes e três linhas diagonais ascendentes: ![]() Agora é só efetuar cálculos. Multiplicamos e somamos os elementos de cada conjunto, subtraindo o segundo conjunto do primeiro. Veja: (1 x 5 x 9 + 2 x 6 x 7 + 3 x 4 x 8) - (7 x 5 x 3 + 8 x 6 x 1 + 9 x 4 x 2) = 0 Como podemos ver, o determinante dessa matriz é 0. E agora veja o código Python no qual declaramos e instanciamos uma matriz 3x3, em seguida, calculamos o seu determinante:
# importamos a bibliteca NumPy
import numpy as np
# função principal do programa
def main():
# vamos criar uma matriz 3x3
m = np.array([(1, 2, 3), (2, 5, 2), (1, 3, 1)])
# calcula o determinante usando a Regra de Sarrus
det = ((m[0][0] * m[1][1] * m[2][2]) + (m[0][1]
* m[1][2] * m[2][0]) + (m[0][2] * m[1][0] * m[2][1])) - ((m[2][0]
* m[1][1] * m[0][2]) + (m[2][1] * m[1][2] * m[0][0]) + (m[2][2]
* m[1][0] * m[0][1]))
# mostramos o resultado
print("O determinante da matriz é: %f" % det)
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: O determinante da matriz é: 2.0 É possível também obter o determinante de uma matriz (não restrita à dimensão 3x3) usando o método linalg.det() da biblioteca NumPy do Python. Veja o código a seguir:
# importamos a bibliteca NumPy
import numpy as np
# função principal do programa
def main():
# vamos criar uma matriz 3x3
m = np.array([(1, 2, 3), (2, 5, 2), (1, 3, 1)])
# calcula o determinante usando apenas NumPy
det = np.linalg.det(m)
# mostramos o resultado
print("O determinante da matriz é: %f" % det)
if __name__== "__main__":
main()
Veja que usei a mesma matriz e, usando apenas o método linalg.det() nós obtemos o mesmo resultado. |
JavaScript ::: Dicas & Truques ::: Set (Conjunto) |
Como retornar elementos presentes no primeiro vetor e não presentes no segundo vetor em JavaScript usando o objeto SetQuantidade de visualizações: 1548 vezes |
|
Este é um código muito interessante de ser feito em JavaScript. Dados dois arrays a e b, temos que retornar os números que estão presentes no primeiro array, mas que não estão presentes no segundo array. Este código pode ser escrito usando diversas abordagens. Nesta dica mostrarei como resolvê-lo usando um objeto Set, adicionado à linguagem JavaScript na revisão ECMAScript 2015, também chamada de ES6 e ECMAScript 6. Vamos ao código então:
<html>
<head>
<title>O objeto Set do JavaScript</title>
</head>
<body>
<script type="text/javascript">
// primeiro vetor
var a = [4, 8, 1, 23, 65];
// segundo vetor
var b = [23, 8, 90, 3, 7];
// vetor resultante
var c = [];
// criamos um objeto Set e guardamos nele os
// elementos do segundo vetor
var set = new Set();
for (var i = 0; i < b.length; i++){
set.add(b[i]);
}
// agora varremos o primeiro vetor e usamos
// o método has() do objeto Set para verificar se
// o valor não está contido nele
for (var i = 0; i < a.length; i++){
if(!set.has(a[i])){
c.push(a[i]);
}
}
document.writeln("Primeiro vetor: " + a);
document.writeln("<br>Segundo vetor: " + b);
document.writeln("<br>Resultado: " + c);
</script>
</body>
</html>
Ao executar este código JavaScript nós teremos o seguinte resultado: Primeiro vetor: 4, 8, 1, 23, 65 Segundo vetor: 23, 8, 90, 3, 7 Resultado: 4, 1, 65 Note que os valores 4, 1 e 65 estão presentes no primeiro array mas não estão presentes no segundo. |
VB.NET ::: Dicas & Truques ::: Data e Hora |
Como retornar o mês da data atual em VB.NET usando a propriedade Month da classe DateTimeQuantidade de visualizações: 8824 vezes |
|
A propriedade Month da classe DateTime do VB.NET é usada quando queremos retornar o mês de uma determinada data como um número inteiro, ou seja, esta propriedade retorna um valor inteiro na faixa de 1 até 12. Veja o código VB.NET completo para o exemplo:
Imports System
Module Program
Sub Main(args As String())
' Este exemplo mostra como extrair o mês da data
' atual. Lembre-se de que o mês começa em 1 (janeiro)
Dim agora As DateTime = DateTime.Now
'obtém o mês.
Dim mes As Integer = agora.Month
Console.WriteLine("O mês para esta data é: " & mes)
Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
End Module
Ao executar este código VB.NET nós teremos o seguinte resultado: O mês para esta data é: 7 |
Desafios, Exercícios e Algoritmos Resolvidos de VB.NET |
Veja mais Dicas e truques de VB.NET |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |








