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.

Você está aqui: Cards de Engenharia Civil - Construção Civil
Card 1 de 28
Fases de uma obra

A Planta de Localização (escala usual 1:200) identifica a posição da obra no terreno. Serve para implantar o projeto.

Filtrar Cards
Use esta opção para filtrar os cards pelos tópicos que mais lhe interessam.
Termos:
Aviso Importante: Nos esforçamos muito para que o conteúdo dos cards e dos testes e conhecimento seja o mais correto possível. No entanto, entendemos que erros podem ocorrer. Caso isso aconteça, pedimos desculpas e estamos à disposição para as devidas correções. Além disso, o conteúdo aqui apresentado é fruto de conhecimento nosso e de pesquisas na internet e livros. Caso você encontre algum conteúdo que não deveria estar aqui, por favor, nos comunique pelos e-mails exibidos nas opções de contato.
Link para compartilhar na Internet ou com seus amigos:

VB.NET ::: VB.NET para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular vetor unitário em VB.NET - VB.NET para Física e Engenharia

Quantidade de visualizações: 843 vezes
Um vetor unitário ou versor num espaço vetorial normado é um vetor (mais comumente um vetor espacial) cujo comprimento ou magnitude é 1. Em geral um vetor unitário é representado por um "circunflexo", assim: __$\hat{i}__$.

O vetor normalizado __$\hat{u}__$ de um vetor não zero __$\vec{u}__$ é o vetor unitário codirecional com __$\vec{u}__$.

O termo vetor normalizado é algumas vezes utilizado simplesmente como sinônimo para vetor unitário. Dessa forma, o vetor unitário de um vetor __$\vec{u}__$ possui a mesma direção e sentido, mas magnitude 1. Por magnitude entendemos o módulo, a norma ou comprimento do vetor.

Então, vejamos a fórmula para a obtenção do vetor unitário:

\[\hat{u} = \dfrac{\vec{v}}{\left|\vec{v}\right|}\]

Note que nós temos que dividir as componentes do vetor pelo seu módulo de forma a obter o seu vetor unitário. Por essa razão o vetor nulo não possui vetor unitário, pois o seu módulo é zero, e, como sabemos, uma divisão por zero não é possível.

Veja agora o código VB.NET que pede as coordenadas x e y de um vetor 2D ou R2 e retorna o seu vetor unitário:

Imports System

Module Program
  Sub Main(args As String())
    ' vamos ler os valores x e y
    Console.Write("Informe o valor de x: ")
    Dim x = Double.Parse(Console.ReadLine())
    Console.Write("Informe o valor de y: ")
    Dim y = Double.Parse(Console.ReadLine())

    ' o primeiro passo é calcular a norma do vetor
    Dim norma = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2))

    ' agora obtemos as componentes x e y do vetor unitário
    Dim u_x = x / norma
    Dim u_y = y / norma

    ' mostra o resultado
    Console.WriteLine("O vetor unitário é: (x = " &
      u_x & "; y = " & u_y)

    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:

Informe o valor de x: -4
Informe o valor de y: 6
O vetor unitário é: (x = -0.5547001962252291; y = 0.8320502943378437

Veja agora uma modificação deste código para retornarmos o vetor unitário de um vetor 3D ou R3, ou seja, um vetor no espaço:

Imports System

Module Program
  Sub Main(args As String())
    ' vamos ler os valores x, y e z
    Console.Write("Informe o valor de x: ")
    Dim x = Double.Parse(Console.ReadLine())
    Console.Write("Informe o valor de y: ")
    Dim y = Double.Parse(Console.ReadLine())
    Console.Write("Informe o valor de z: ")
    Dim z = Double.Parse(Console.ReadLine())

    ' o primeiro passo é calcular a norma do vetor
    Dim norma = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2) +
      Math.Pow(z, 2))

    ' agora obtemos as componentes x, y e z do vetor unitário
    Dim u_x = x / norma
    Dim u_y = y / norma
    Dim u_z = z / norma

    ' mostra o resultado
    Console.WriteLine("O vetor unitário é: (x = " &
      u_x & "; y = " & u_y & "; z = " & u_z)

    Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
    ' pausa o programa
    Console.ReadKey()
  End Sub
End Module

Ao executarmos este novo código nós teremos o seguinte resultado:

Informe o valor de x: 3
Informe o valor de y: 7
Informe o valor de z: 5
O vetor unitário é: (x = 0.329292779969071; y = 0.7683498199278324; z = 0.5488212999484517


Python ::: Dicas & Truques ::: Lista (List)

Curso de Python - Como ordenar uma lista de strings baseado no tamanho de cada uma

Quantidade de visualizações: 8564 vezes
Este exemplo mostra como ordenar os elementos de uma List de strings baseado no tamanho da palavra, frase ou texto. Note como o valor "key = len" como argumento para o método sort() da classe List.

Veja o código completo para a dica:

def main():
  # cria uma lista de nomes
  nomes = ['Carlos', 'Igor', 'Osmar', 'Fernanda']
 
  # exibe a lista na ordem original
  print(nomes)
  
  # ordena a lista
  nomes.sort(key = len)
 
  # exibe a lista ordenada
  print(nomes)

if __name__== "__main__":
  main()

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

['Carlos', 'Igor', 'Osmar', 'Fernanda']
['Igor', 'Osmar', 'Carlos', 'Fernanda']


Java ::: Tratamento de Erros ::: Erros de Tempo de Execução

Como corrigir um erro ClassCastException em Java - Como tratar a exceção ClassCastException do Java

Quantidade de visualizações: 17679 vezes
A exceção ClassCastException é um erro de tempo de execução que ocorre quando tentamos fazer um cast (coerção - conversão explícita) de uma classe para outra classe diferente desta ou que não seja uma superclasse desta. Em outras palavras, casts válidos para classes e interfaces devem seguir as regras abaixo:

1) Se NovoTipo é uma classe, a classe da expressão sendo convertida deve ser do tipo NovoTipo ou herdar de NovoTipo.
2) Se NovoTipo é uma interface, a classe da expressão sendo convertida deve implementar NovoTipo.

Considere o código a seguir:

public class Estudos{
  public static void main(String args[]){
    Object x = new Integer(0);
    System.out.println((String)x);
  }
}

Este código compila normalmente. Porém, ao ser executado, a seguinte mensagem de erro é exibida:

Exception in thread "main" 
java.lang.ClassCastException: java.lang.Integer 
cannot be cast to java.lang.String
  at Estudos.main(Estudos.java:4)


Esta mensagem nos informa que a classe Integer não pode sofrer um cast para String, uma vez que Integer não é e nem herda de String. Veja agora a nova versão:

public class Estudos{
  public static void main(String args[]){
    Object x = new Integer(0);
    System.out.println((Integer)x);
  }
}

Veja que agora nós estamos fazendo o cast de uma referência Object para Integer. Embora Object não seja e nem herde de Integer, o sistema de tempo de execução sabe que x guarda atualmente uma referência a um Integer:

Object x = new Integer(0);



Delphi ::: Classes, Controles e Componentes ::: TRegistry (Registro do Windows)

Como criar chaves no registro do Windows usando o método CreateKey() da classe TRegistry do Delphi

Quantidade de visualizações: 15642 vezes
Em algumas situações gostariámos de criar novas chaves e/ou sub-chaves no registro do Windows. Isso pode ser feito por meio do método CreateKey() da classe TRegistry. Este método recebe uma string especificando o nome da chave a ser criada e retorna um valor Boolean indicando se a chave foi criada com sucesso.

Veja um trecho de código no qual criamos uma chave chamada "Arquivo de Códigos" dentro da chave raiz HKEY_CURRENT_USER:

procedure TForm3.Button4Click(Sender: TObject);
var
  chave: String;
  reg: TRegistry;
begin
  // uses Registry

  // vamos definir o nome da chave a ser criada
  chave := 'Arquivo de Códigos';

  // vamos criar uma instância da classe TRegistry
  reg := TRegistry.Create;

  // a chave raiz padrão é HKEY_CURRENT_USER mas, por via das dúvidas
  // vamos reafirmar isso
  reg.RootKey := HKEY_CURRENT_USER;

  // vamos criar a chave informada
  if reg.CreateKey(chave) then
    begin
      ShowMessage('A chave foi criada com sucesso.');
    end
  else
    begin
      ShowMessage('Não foi possível criar a chave informada.');
    end;
    
  // vamos liberar o registro 
  reg.Free;
end;


Alguns aplicativos, por exemplo os da Adobe, Macromedia, Microsoft, etc, guardar informações relacionadas aos seus aplicativos na sub-chave SOFTWARE dentro da chave HKEY_LOCAL_MACHINE. Assim, vamos criar uma chave para um aplicativo fictício. Vamos chamar nossa chave de "Simulador Nota Fiscal Eletrônica 1.0". Note que, se esta chave já existir no registro nada acontecerá:

procedure TForm3.Button4Click(Sender: TObject);
var
  chave: String;
  reg: TRegistry;
begin
  // uses Registry

  // vamos definir o nome da chave a ser criada
  chave := 'Simulador Nota Fiscal Eletrônica 1.0';

  // vamos criar uma instância da classe TRegistry
  reg := TRegistry.Create;

  // vamos criar uma chave dentro de HKEY_LOCAL_MACHINE\SOFTWARE
  reg.RootKey := HKEY_LOCAL_MACHINE;

  // vamos criar a chave informada
  if reg.CreateKey('\SOFTWARE\' + chave) then
    begin
      ShowMessage('A chave foi criada com sucesso.');
    end
  else
    begin
      ShowMessage('Não foi possível criar a chave informada.');
    end;
    
  // vamos liberar o registro 
  reg.Free;
end;


Execute este código e logo em seguida abra uma janela de terminal e digite regedit.exe. vá na seção
HKEY_LOCAL_MACHINE\SOFTWARE e veja se a chave "Simulador Nota Fiscal Eletrônica 1.0" foi realmente criada.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


C ::: Estruturas de Dados ::: Lista Ligada Simples

Estruturas de Dados em C - Como inserir antes de um determinado nó em uma lista encadeada simples usando C

Quantidade de visualizações: 2415 vezes
Em algumas situações nós precisamos inserir o novo nó antes de um determinado nó na lista encadeada simples. Veja, por exemplo, uma lista com o seguintes valores:

45 | 3 | 98 | 47

Suponha que queremos inserir o valor 50 antes do 98, então o novo conteúdo da lista será:

45 | 3 | 50 | 98 | 47

Observe que neste exemplo eu tratei o caso de inserir antes do primeiro nó, ou seja, antes do 45, mas não tratei a lista vazia. Há também a questão do laço infinito caso o usuário queira inserir antes de um nó não existente (não tratada). Veja o código completo:

#include <stdio.h>
#include <stdlib.h>
 
// estrutura Nó
struct No{
  int valor;
  struct No *proximo;
};
// fim da estrutura Nó
 
// função que permite exibir os valores de
// todos os nós da lista
void exibir(struct No *n){
  if(n != NULL){
    do{
      printf("%d\n", n->valor);
      n = n->proximo;
    }while(n != NULL);
  }
  else
    printf("A lista esta vazia\n\n");
}
 
// função que permite inserir um novo nó
// antes de um determinado valor
struct No *inserir_antes_valor(struct No *n, int v, int v_antes){
  // reserva memória para o novo nó
  struct No *novo = (struct No*)malloc(sizeof(struct No));
  novo->valor = v;

  // guarda o nó antes do valor que procuramos
  struct No *anterior = NULL; 
  struct No *temp = n; // aponta para o início da lista
  // enquanto for diferente do valor que estamos procurando
  while(temp->valor != v_antes){
    anterior = temp; // anterior recebe temp
    // e temp recebe o seu próximo
    temp = temp->proximo;
  }
  
  // ATENÇÃO: não estamos tratando a condição
  // de lista vazia. Para isso veja minha dica
  // sobre como inserior no início da lista
  
  // devemos inserior no início da lista?
  if(anterior == NULL){
    // o próximo do novo nó é o início da lista
    novo->proximo = n;
    n = novo; // início da lista é o novo nó
  }
  else{
    // o proximo do anterior é o novo nó
    anterior->proximo = novo;
    // e o próximo do novo nó é temp
    novo->proximo = temp;
  }
  
  return n;
}

// função que permite inserir nós no
// final da lista.
// veja que a função recebe o valor a ser
// armazenado em cada nó e um ponteiro para o
// início da lista. A função retorna um
// ponteiro para o início da lista
struct No *inserir_final(struct No *n, int v){
  // reserva memória para o novo nó
  struct No *novo = (struct No*)malloc(sizeof(struct No));
  novo->valor = v;
 
  // verifica se a lista está vazia
  if(n == NULL){
    // é o primeiro nó...não deve apontar para
    // lugar nenhum
    novo->proximo = NULL;
    return novo; // vamos retornar o novo nó como sendo o início da lista
  }
  else{ // não está vazia....vamos inserir o nó no final
    // o primeiro passo é chegarmos ao final da lista
    struct No *temp = n; // vamos obter uma referência ao primeiro nó
    // vamos varrer a lista até chegarmos ao último nó
    while(temp->proximo != NULL){
      temp = temp->proximo;
    }
    // na saída do laço temp aponta para o último nó da lista
   
    // novo será o último nó da lista...o campo próximo dele deve
    // apontar para NULL
    novo->proximo = NULL;
    // vamos fazer o último nó apontar para o nó recém-criado
    temp->proximo = novo;
    return n; // vamos retornar o início da lista intacto
  }
}
 
int main(int argc, char *argv[])
{
  // declara a lista
  struct No *inicio = NULL;
 
  // vamos inserir quatro valores no final
  // da lista
  inicio = inserir_final(inicio, 45);
  inicio = inserir_final(inicio, 3);
  inicio = inserir_final(inicio, 98);
  inicio = inserir_final(inicio, 47);
 
  // vamos exibir a lista
  puts("Valores atuais:\n");
  exibir(inicio);
  
  // vamos inserir o valor 50 antes do 98
  inicio = inserir_antes_valor(inicio, 50, 98);
  
  // vamos exibir a lista novamente
  puts("\nValores agora:\n");
  exibir(inicio);
  
  puts("\n\n");
  system("pause");
  return 0;
}



Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

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 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 Apenas R$ 19,90


© 2026 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 45 usuários muito felizes estudando em nosso site.