![]() |
|
|
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 Cards de Hidrologia |
||
|
||
|
|
||
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 - Como pesquisar um valor em uma árvore binária de busca usando uma função recursivaQuantidade de visualizações: 4894 vezes |
|
Pergunta/Tarefa: Escreva uma função recursiva em Java que permite pesquisar um valor em uma árvore binária de busca (BST). Se o valor for encontrado, uma referência ao nó da árvore (um objeto da classe NoArvore, por exemplo) deverá ser retornado. Caso contrário, o valor null deverá ser retornado para indicar que não há nós na árvore contendo tal valor. Sua saída deverá ser parecida com: Informe um valor inteiro: 7 Informe um valor inteiro: 1 Informe um valor inteiro: 8 Informe um valor inteiro: 10 Informe um valor inteiro: 4 Informe o valor a ser pesquisado: 3 O valor não foi encontrado na árvore Informe um valor inteiro: 8 Informe um valor inteiro: 2 Informe um valor inteiro: 35 Informe um valor inteiro: 4 Informe um valor inteiro: 7 Informe o valor a ser pesquisado: 4 O valor foi encontrado na árvore 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 pesquisar na árvore binária de busca
public NoArvore pesquisar(int valor){
return pesquisar(raiz, valor); // chama a versão recursiva
// do método
}
// sobrecarga do método pesquisar que recebe dois
// parâmetros (esta é a versão recursiva do método)
private NoArvore pesquisar(NoArvore noAtual, int valor){
// o valor pesquisado não foi encontrado....vamos retornar null
if(noAtual == null){
return null;
}
// o valor pesquisado foi encontrado?
if(valor == noAtual.valor){
return noAtual; // retorna o nó atual
}
// ainda não encontramos...vamos disparar uma nova
// chamada para a sub-árvore da esquerda
else if(valor < noAtual.valor){
return pesquisar(noAtual.esquerdo, valor);
}
// ainda não encontramos...vamos disparar uma nova
// chamada para a sub-árvore da direita
else{
return pesquisar(noAtual.direito, valor);
}
}
}
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 pesquisar um valor na árvore
System.out.print("\nInforme o valor a ser pesquisado: ");
int valorPesquisa = Integer.parseInt(entrada.nextLine());
// obtém um objeto da classe NoArvore a partir do
// método pesquisar() da classe ArvoreBinariaBusca
NoArvore res = arvore.pesquisar(valorPesquisa);
// o valor foi encontrado?
if(res != null){
System.out.println("O valor foi encontrado na árvore");
}
else{
System.out.println("O valor não foi encontrado na árvore");
}
System.out.println("\n");
}
}
|
AutoCAD Civil 3D ::: Dicas & Truques ::: Coordinated Geometry Points (COGO Points) |
Como criar pontos COGO no AutoCAD Civil 3DQuantidade de visualizações: 1051 vezes |
|
Nesta dica mostrarei os passos necessários para a criação de COGO points no Civil 3D usando a opção Manual do Point Creation Tools. Siga os passos abaixo atentamente: A) Vá até a guia Home. Em seguida acesse o painel Create Ground Data. B) No painel Create Ground Data, acesse a opção Points -> Point Creation Tools. C) Será aberto um painel flutuante chamado Create Points. Na primeira opção deste painel, clique a seta ao lado do primeiro botão e marque a opção Manual (talvez já esteja marcada). D) Agora é só clicar no botão (ao lado da seta que você acabou de acessar). Na janela de comandos do Civil 3D nós veremos a mensagem: CREATEPOINTMANUAL Please specify a location for the new point: Você pode clicar na tela de desenho ou informar as coordenadas x e y manualmente, por exemplo, 50,100 (o valor x para a coordenada x e o valor 100 para a coordenada y, sem espaços e com a vírgula separando os dois valores). Note que o x é o Easting (distância para o Leste) e y é o Northing (distância para o Norte). Verifique se nas suas configurações esta é a ordem padrão. E) Depois de informar as coordenadas x e y do COGO point, uma mensagem será exibida solicitando a descrição do ponto: CREATEPOINTMANUAL Enter a point description <.>: Aqui podemos informar o nome do ponto, por exemplo, BUEIRO 5. F) Após informarmos a descrição do ponto, a seguinte mensagem é exibida: CREATEPOINTMANUAL Specify a point elevation <.>: Aqui nós precisamos informar a elevação do ponto e pressionar Enter. Nesse momento o novo COGO Point é criado e o Civil 3D reiniciará o processo, ou seja, será solicitada a localização do próximo ponto. Se você não quiser continuar criando novos pontos, basta pressionar a tecla Enter. Para visualizar os pontos criados, vá até o Painel Toolspace, aba Prospector e acesse o item Points. |
C++ ::: Win32 API (Windows API) ::: Strings e Caracteres |
Como converter caracteres individuais para letras maiúsculas usando a função CharUpper() da API do Windows a partir de seus códigos C++Quantidade de visualizações: 10103 vezes |
Pode usar a função CharUpper() da API do Windows para converter um caractere para seu correspondente em letra maiúscula. Veja o protótipo da função:LPTSTR CharUpper( LPTSTR lpsz ); Veja um exemplo no qual usamos esta função para converter uma letra minúscula em maiúscula:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]){
CHAR letra = 'a';
// vamos converter para letra maiúscula
CharUpper(&letra);
// vamos exibir o resultado
cout << letra << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Note que aqui nós fornecemos um ponteiro para o caractere que queremos transformar. Isso resulta em uma conversão sendo efetuada diretamente no caractere para o qual o ponteiro está apontando no momento. Podemos também obter o resultado da conversão em um outro ponteiro e usá-lo posteriormente. Veja:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]){
CHAR letra = 'a';
// vamos converter para letra maiúscula
CHAR *resultado = CharUpper(&letra);
// vamos exibir o resultado
cout << *resultado << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
|
Python ::: Dicas & Truques ::: Data e Hora |
Como obter o nome do mês da data atual no formato curto usando os métodos today() e strftime() da classe datetime do PythonQuantidade de visualizações: 11196 vezes |
|
Nesta dica mostrarei como podemos combinar os métodos today() e strftime() da classe datetime do Python para retornar o nome do mês da data atual no formato curto, ou seja, se o mês for setembro, o valor retornado será "set". Veja o código completo para o exemplo:
from datetime import datetime
import locale
def main():
# Configurações do usuário
locale.setlocale(locale.LC_ALL, '')
# Obtém um datatime da data e hora atual
hoje = datetime.today()
# Exibe o nome do mês no formato curto
print(hoje.strftime("O mês é: %b"))
if __name__== "__main__":
main()
Ao executarmos este código nós teremos o seguinte resultado: O mês é: mar |
Python ::: Fundamentos da Linguagem ::: Passos Iniciais |
Como criar módulos de código reutilizável em PythonQuantidade de visualizações: 9174 vezes |
|
Uma das características da boa programação é reutilizar ao máximo códigos bem testados e independentes. A criação de módulos de funções e definições de classes em Python pode ser feita de forma bem simples. 1) Comece criando um arquivo chamado funcoes.py com o seguinte conteúdo: """ Sou um módulo Python. A única funcionalidade que ofereço é uma função que soma dois números """ def somar(num1, num2): return (num1 + num2) 2) Salve este arquivo no diretório atual de sua aplicação e vamos importá-lo. Para isso escreva um novo programa. Uma sugestão é:
"""
Sou o programa principal e vou importar
o módulo que contém a função somar
"""
import funcoes
def main():
print(funcoes.somar(3, 5))
if __name__== "__main__":
main()
3) Execute o programa e veja o resultado. Para que este programa funcione corretamente, é preciso que o módulo a ser importado esteja no diretório atual ou em qualquer um dos diretórios pesquisados pelo interpretador Python, geralmente representados pelo variável de ambiente PYTHONPATH. Porém, há situações que queremos agrupar nossos módulos em um diretório dentro do diretório principal da aplicação. O exemplo abaixo mostra como importar um módulo localizado no diretório "lib" da aplicação atual: """ Sou o programa principal e vou importar o módulo que contém a função somar() """ # importa o módulo sys import sys # acrescenta o diretório lib na variável # de ambiente PYTHONPATH sys.path.append(sys.path[0] + '\\lib') # pode importar funcoes no diretório lib import funcoes # pode chamar o método somar agora def main(): print(funcoes.somar(3, 5)) 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 |
|
Delphi - Como obter a quantidade de registros em um TClientDataSet do Delphi usando a propriedade RecordCount |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |



