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.

Delphi ::: Dicas & Truques ::: Aplicativos e Outros

Como calcular a distância entre dois pontos na terra em Delphi

Quantidade de visualizações: 2045 vezes
Nesta dica mostrarei como calcular a distância em quilômetros entre dois pontos na terra dadas suas latitudes e longitudes. Neste exemplo eu coloquei o valor de 6378.137 para o raio da terra, mas você pode definir para o valor que achar mais adequado.

O cálculo usado neste código se baseia na Fórmula de Haversine, que determina a distância do grande círculo entre dois pontos em uma esfera, dadas suas longitudes e latitudes.

Veja o código Delphi completo:

// função que recebe dois pontos na terra e retorna a distância
// entre eles em quilômetros
function CalcularDistancia(lat1: double; lat2: double; lon1: double;
  lon2: double): double;
var
  raio_terra, dlon, dlat, a, c: double;
begin
  raio_terra := 6378.137; // raio da terra em quilômetros

  // o primeiro passo é converter as latitudes e longitudes
  // para radianos
  // não esqueça de adicionar a unit Math
  lon1 := DegToRad(lon1);
  lon2 := DegToRad(lon2);
  lat1 := DegToRad(lat1);
  lat2 := DegToRad(lat2);

  // agora aplicamos a Fórmula de Haversine
  dlon := lon2 - lon1;
  dlat := lat2 - lat1;
  a := Power(Sin(dlat / 2), 2) + Cos(lat1) * Cos(lat2)
    * Power(Sin(dlon / 2),2);

  c := 2 * ArcSin(Sqrt(a));

  // e retornamos a distância
  Result := (c * raio_terra);
end;

procedure TForm5.Button1Click(Sender: TObject);
var
  lat1, lon1, lat2, lon2, distancia: double;
begin
  // obtém as coordenadas vindas dos campos de texto
  lat1 := StrToFloat(txtPrimeiraLatitude.Text);
  lon1 := StrToFloat(txtPrimeiraLongitude.Text);
  lat2 := StrToFloat(txtSegundaLatitude.Text);
  lon2 := StrToFloat(txtSegundaLongitude.Text);

  // vamos calcular a distância entre os dois pontos em Kms
  distancia := CalcularDistancia(lat1, lat2, lon1, lon2);

  // e mostramos o resultado
  txtDistancia.Text := FormatFloat('#.0', distancia) + ' kms';
end;

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

Informe a primeira latitude: -16,674551
Informe a primeira longitude: -49,303598
Informe a segunda latitude: -15,579321
Informe a segunda longitude: -56,10009
A distância entre os dois pontos é: 736,9 kms

Aqui as informações sobre as latitudes e longitudes vieram de campos de texto TEdit, e o código foi disparado a partir do clique de um botão TButton.

Neste exemplo eu calculei a distância entre as cidades de Goiânia-GO e Cuiabá-MT.

A latitude é a distância ao Equador medida ao longo do meridiano de Greenwich. Esta distância mede-se em graus, podendo variar entre 0o e 90o para Norte(N) ou para Sul(S). A longitude é a distância ao meridiano de Greenwich medida ao longo do Equador.


Java ::: Coleções (Collections) ::: HashMap

Como retornar a quantidade de mapeamentos (chave-valor) em um HashMap do Java usando o método size()

Quantidade de visualizações: 8460 vezes
Em algumas situações precisamos saber a quantidade de mapeamentos (chave-valor) contidos em um HashMap. Para isso nós podemos usar o método size(). Veja o exemplo:

import java.util.*;

public class Estudos{
  public static void main(String[] args){
    
    // vamos criar uma instância de HashMap
    HashMap<Integer, String> clientes = new HashMap<Integer, String>();

    // vamos adicionar três chaves e seus valores
    clientes.put(new Integer(1), "Osmar J. Silva");
    clientes.put(new Integer(2), "Salvador Miranda de Andrade");
    clientes.put(new Integer(3), "Marcos da Costa Santos");
      
    // vamos obter a quantidade de mapeamentos neste HashMap
    int quant = clientes.size();

    // vamos exibir o resultado
    System.out.println("Este HashMap contém " + quant +
      " mapeamentos.");    

    System.exit(0);
  }
}

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

Este HashMap contém 3 mapeamentos.


C ::: C para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular a transposta de uma matriz em C - Curso de C para Geometria Analítica e Álgebra Linear

Quantidade de visualizações: 1559 vezes
A matriz transposta de uma matriz A é a matriz AT. Tal matriz é obtida quando copiamos os elementos da matriz A para uma outra matriz (ou para ela mesma) e trocamos de posição as linhas e colunas. Dessa forma, a primeira linha da matriz A se transforma na primeira coluna da matriz transposta, a segunda linha da matriz A se transforma na segunda coluna da matriz transposta e assim por diante.

Em termos de notação, podemos dizer, de forma algébrica, que:

ATji = Aij

Onde i representa as linhas e j representa as colunas, tanto na matriz original quanto na matriz transposta.

É importante estar atento à quantidade de linhas e colunas na matriz original e na matriz transposta equivalente. Assim, se a matriz original for 3x2, a matriz transposta será 2x3.

Antes de vermos o código C, dê uma olhada na seguinte matriz de duas linhas e três colunas:

\[A = \left[\begin{matrix} 3 & 5 & 7 \\ 1 & 2 & 9 \end{matrix}\right] \]

Sua matriz transposta correspondente é:

\[A^T = \left[\begin{matrix} 3 & 1 \\ 5 & 2 \\ 7 & 9 \end{matrix}\right] \]

E agora veja o código C que declara uma matriz 2x3 e gera a matriz transposta 3x2:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(int argc, char *argv[]){
  setlocale(LC_ALL,""); // para acentos do português
	
  // vamos declarar e construir uma matrix
  // 2x3 (duas linhas e três colunas
  int matriz[2][3] = {{3, 5, 7}, {1, 2, 9}};
  int i, j;  
    
  // vamos exibir os valores da matriz
  printf("Elementos da matriz:\n");
  for(i = 0; i < 2; i++){
    for(j = 0; j < 3; j++){
      printf("%5d  ", matriz[i][j]);
    }
    printf("\n");
  }
    
  // como temos uma matriz 2x3, a transposta deverá ser
  // 3x2, ou seja, três linhas e duas colunas
  int linhas = 3; // linhas da matriz original
  int colunas = 2; // colunas da matriz original
  int transposta[linhas][colunas]; 
    
  // e agora vamos preencher a matriz transposta
  for(i = 0; i < 2; i++){
    for(j = 0; j < 3; j++){
      transposta[j][i] = matriz[i][j];
    }
  }
    
  // vamos exibir os valores da matriz transposta
  printf("Elementos da matriz transposta:\n");
  for(i = 0; i < 3; i++){
    for(j = 0; j < 2; j++){
      printf("%5d  ", transposta[i][j]);
    }
    printf("\n");
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}

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

Elementos da matriz:
    3      5      7  
    1      2      9  
Elementos da matriz transposta:
    3      1  
    5      2  
    7      9  



Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural

Como calcular o Momento Fletor Mínimo e a Excentricidade Mínima de 1ª Ordem de um pilar em Python - Python para Engenharia Civil e Cálculo Estrutural

Quantidade de visualizações: 1224 vezes


O cálculo e dimensionamento de pilares, sejam pilares de canto, extremidade ou intermediários, sempre seguem alguns passos cujas ordens são muito importantes, pois os dados de entrada de um passo podem vir de um ou mais passos anteriores.

Em dicas anteriores do uso da linguagem Python no cálculo de pilares eu mostrei como calcular os esforços solicitantes majorados em pilares e também como calcular o índice de esbeltez de um pilar nas direções x e y.

Nesta dica mostrarei como calcular o Momento Fletor Mínimo e a Excentricidade Mínima de 1ª Ordem de um pilar. Estes dados são muito importantes para a aplicação das fórmulas que embasam a área de aço a ser usada no pilar. Note que a Excentricidade Mínima de 1ª Ordem pode ser desprezada no caso de pilares intermediários (também chamados pilares de centro).

O Momento Fletor Mínimo é o momento mínimo que deve ser considerado, mesmo em pilares nos quais a carga está centrada, e é calculado por meio da seguinte fórmula:

\[M_\text{1d,min} = Nd \cdot (1,5 + (0,03 \cdot h) \]

Onde:

M1d,min é o momento fletor mínimo na direção x ou y em kN.cm.

Nd são os esforços solicitantes majorados em kN.

h é a dimensão do pilar na direção considerada (x ou y) em cm.

A Excentricidade Mínima de 1ª Ordem do pilar pode ser calculada por meio da fórmula:

\[e_\text{1,min} = \frac{M_\text{1d,min}}{Nd} \]

Onde:

e1,min é excentricidade mínima de 1ª ordem na direção escolhida.

Nd são os esforços solicitantes majorados em kN.

Note que, a exemplo do momento fletor mínimo, a excentricidade mínima de 1ª ordem também deve ser calculada nas direções x e y do pilar.

Vamos ao código Python agora? Veja que o código pede para o usuário informar as dimensões do pilar nas direções x e y em centímetros, a carga total que chega ao pilar em kN e mostra o momento fletor mínimo e a excentricidade mínima de 1ª ordem no pilar, tanto na direção x quanto na direção y:

# método principal
def main():
  # vamos pedir as dimensões do pilar
  hx = float(input("Informe a dimensão do pilar na direção x (em cm): "))
  hy = float(input("Informe a dimensão do pilar na direção y (em cm): "))

  # vamos pedir a carga total no pilar em kN
  Nk = float(input("Informe a carga total no pilar (em kN): "))

  # vamos obter o menor lado do pilar (menor dimensão da seção transversal)
  if (hx < hy):
    b = hx
  else:
    b = hy
   
  # agora vamos calcular a área do pilar em centímetros quadrados
  area = hx * hy
 
  # a área está de acordo com a norma NBR 6118 (ABNT, 2014)
  if (area < 360):
    print("A área do pilar não pode ser inferior a 360cm2")
    return

  # vamos calcular a força normal de projeto Nd
  yn = 1.95 - (0.05 * b) # de acordo com a norma NBR 6118 (ABNT, 2014) Tabela 13.1
  yf = 1.4 # regra geral para concreto armado
  Nd = yn * yf * Nk

  # e agora vamos calcular o momento fletor mínimo na direção x do pilar
  M1d_min_x = Nd * (1.5 + (0.03 * hx))

  # e agora vamos calcular o momento fletor mínimo na direção y do pilar
  M1d_min_y = Nd * (1.5 + (0.03 * hy))

  # agora vamos calcular a excentricidade mínima de 1ª ordem na direção x do pilar
  e1x_min = M1d_min_x / Nd

  # e finalmente a excentricidade mínima de 1ª ordem na direção y do pilar
  e1y_min = M1d_min_y / Nd

  # e mostramos os resultados
  print("\nO momento fletor mínimo na direção x é: {0} kN.cm".format(
    round(M1d_min_x, 2)))
  print("O momento fletor mínimo na direção y é: {0} kN.cm".format(
    round(M1d_min_y, 2)))
  print("A excentricidade mínima de 1ª ordem na direção x é: {0} cm".format(
    round(e1x_min, 2)))
  print("A excentricidade mínima de 1ª ordem na direção y é: {0} cm".format(
    round(e1y_min, 2)))

if __name__== "__main__":
  main()

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

Informe a dimensão do pilar na direção x (em cm): 40
Informe a dimensão do pilar na direção y (em cm): 19
Informe a carga total no pilar (em kN): 841.35

O momento fletor mínimo na direção x é: 3180.3 kN.cm
O momento fletor mínimo na direção y é: 2438.23 kN.cm
A excentricidade mínima de 1ª ordem na direção x é: 2.7 cm
A excentricidade mínima de 1ª ordem na direção y é: 2.07 cm


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

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

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.


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