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.

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

Como calcular a Posição da Linha Neutra em vigas de concreto armado usando Python - Python para Engenharia Civil - Cálculo Estrutural

Quantidade de visualizações: 632 vezes
O concreto possui excelente resistência à compressão, porém, sua resistência à tração é muito pequena, chegando em torno de 10% da sua resistência à compressão. O aço, por sua vez, apresenta alta resistência à tração.

Por esta razão a combinação destes dois materiais resulta no que conhecemos por concreto armado, no qual o concreto, no caso das vigas, resiste às solicitações de compressão (em geral na parte superior da viga) e o aço se encarrega da tração (na parte inferior da viga).

Entre as forças de compressão e tração da viga de concreto armado existe uma região na qual as tensões são nulas, ou seja, não há nem tração nem compressão. Essa região é conhecida como linha neutra da viga e é usada, entre outras coisas, para verificarmos se a viga se encontra nas condições mínimas de dutibilidade exigidas pela ABNT NBR 6118/2014.

Outra característica muito importante da linha neutra é que ela nos permite indicar em qual domínio de deformação as nossas vigas de concreto armado estão trabalhando.

A posição da linha neutra em vigas de concreto armado pode ser calculada por meio da seguinte fórmula:

\[x = 1,25 \cdot d \cdot \left(1 - \sqrt{1 - \frac{M_d}{0,425 \cdot b_w \cdot d^2 \cdot f_\text{cd}}}\right)\]

Onde:

x é a posição da linha neutra a partir da fibra mais comprimida da viga, em metros (que depois convertemos para cm);

d é a altura útil da viga em metros;

Md é o momento solicitante de cálculo na viga, em kN.m;

bw é a largura da viga, em metros;

fcd é a resistência de cálculo do concreto, em kN/m2;

Veja agora o código Python completo que pede para o usuário informar a altura e largura da viga em centímetros, o momento solicitante na viga em kN.m e o FCK do concreto em Mpa, mostra a posição da linha neutra da viga e informa se ela obedece ao valor máximo imposto pela ABNT NBR 6118/2014 e também o domínio de deformação que ela está atuando:

# precisamos importar o módulo Math
import math

# função principal do programa Python
def main():
  # vamos pedir para o usuário informar a altura da viga
  altura = float(input("Informe a altura H da viga em cm: "))
  # vamos converter de centímetros para metros
  altura = altura / 100.00

  # vamos pedir para o usuário informar a largura da viga
  largura = float(input("Informe a largura bw da viga em cm: "))
  # vamos converter de centímetros para metros
  largura = largura / 100.00

  # vamos calcular a altura útil da viga
  # aqui eu usei 0.9 mas alguns engenheiros usam 0.95
  altura_util = 0.9 * altura

  # vamos pedir para o usuário informar o momento
  # máximo solicitante Mk (calculado no Ftool ou outra ferramenta)
  Mk = float(input("Informe o momento solicitante Mk em kN.m: "))
  # vamos definir o valor do gama f
  yf = 1.4
  # calculamos o md, ou seja, o momento solicitante de cálculo
  Md = Mk * yf

  # vamos pedir para o usuário informar o FCK do concreto
  fck = float(input("Informe o FCK do concreto em Mpa: "))
  # vamos definir o valor do gama c
  yc = 1.4
  # calculamos o fcd, ou seja, a resistência de cálculo do concreto
  fcd = fck / yc

  # finalmente vamos calcular a posição da linha neutra
  # note que converti o fcd de Mpa para kN/m2
  x = 1.25 * altura_util * (1 - math.sqrt(1 - (Md / (0.425 *
    largura * math.pow(altura_util, 2) * (fcd * 1000.0)))))
  
  # vamos mostrar os resultados 
  print("\nA altura útil da viga é: {0} cm ({1} m)".format(
    round(altura_util * 100, 5), round(altura_util, 5)))
  print("O momento solicitante de cálculo é: {0} kN.m".format(
    round(Md, 5)))
  print("O fcd do concreto é: {0} Mpa".format(round(fcd, 5)))
  print("A posição da linha neutra é: {0} cm".format(round(x * 100.0, 5)))
  
  # vamos verificar se a posição da linha neutra está dentro do
  # limite máximo imposto pela ABNT NBR 6118/2014 para FCK até 50 Mpa
  if ((x / altura_util) <= 0.45):
    print("Garante condições mínimas de dutibilidade? SIM")
  else:
    print("Garante condições mínimas de dutibilidade? NÃO")

  # vamos verificar o domínio de deformação da vaga
  temp = x / altura_util
  if (temp <= 0.167):
    print("A viga está trabalhando no domínio 1")
  elif ((temp > 0.167) and (temp <= 0.259)):
    print("A viga está trabalhando no domínio 2")
  elif ((temp > 0.259) and (temp <= 0.628)):
    print("A viga está trabalhando no domínio 3")
  else:
    print("A viga está trabalhando no domínio 4/5")

if __name__ == "__main__":
  main()

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

Informe a altura H da viga em cm: 35
Informe a largura bw da viga em cm: 19
Informe o momento solicitante Mk em kN.m: 32.3
Informe o FCK do concreto em Mpa: 25

A altura útil da viga é: 31.5 cm (0.315 m)
O momento solicitante de cálculo é: 45.22 kN.m
O fcd do concreto é: 17.85714 Mpa
A posição da linha neutra é: 6.81136 cm
Garante condições mínimas de dutibilidade? SIM
A viga está trabalhando no domínio 2


Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca

Estruturas de dados em Java - Como obter a quantidade de nós em uma árvore binária usando Java

Quantidade de visualizações: 3357 vezes
Em exemplos dessa seção nós vimos como criar árvores binárias e árvores binárias de busca em Java e como pesquisar ou fazer a sua travessia, visitando cada um dos nós. Nesta dica mostrarei como contar os nós da árvore usando um método recursivo. Veja:

// método que permite obter a quantidade de nós na árvore
int quantNosArvore(){
  // chama a versão recursiva
  return quantNosArvore(raiz);
}
  
int quantNosArvore(No no){
  if(no == null){ // condição de parada
    return 0;
  }
  else{
    return (quantNosArvore(no.getEsquerdo()) + 
      quantNosArvore(no.getDireito()) + 1);
  }
}

Este método faz parte da classe ArvoreBinariaBusca.java. Veja agora como chamá-lo a partir da classe principal, ou seja, a classe de teste:

package arvore_binaria;

import java.util.Scanner;

public class ArvoreBinariaTeste {
  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("Não foi possível inserir." +
          " Um elemento já contém este valor.");  
      }
    }
     
    // vamos exibir a quantidade de nós na árvore
    System.out.println("\nA árvore possui: " + 
      arvore.quantNosArvore() + " nós.\n");
     
    System.out.println("\n");
  }
}

Ao executar este código teremos o seguinte resultado:

Informe um valor inteiro: 5
Informe um valor inteiro: 2
Informe um valor inteiro: 8
Informe um valor inteiro: 7
Informe um valor inteiro: 31

A árvore possui: 5 nós.



C++ ::: STL (Standard Template Library) ::: unordered_map

Como contar as frequências de palavras em uma frase ou texto em C++ usando um unordered_map

Quantidade de visualizações: 1079 vezes
Nesta dica mostrarei como podemos usar o mapa não ordenado (unordered_map) da linguagem C++ para contar as frequências das palavras individuais de uma palavra ou texto. O exemplo mostrado aqui serve como base para a criação de aplicações muito interessantes.

Veja o código C++ completo:

#include <string>
#include <iostream>
#include <unordered_map>
#include <bits/stdc++.h>

using namespace std;

// protótipo da função que exibe a frequência de palavras em uma
// frase ou texto
void exibir_frequencias(const string &frase);

int main(int argc, char *argv[]){
  // vamos declarar uma frase
  // retirei acentos e pontuações de propósito
  string frase = "Gosto de Java e Python pois quero aprender Java";
  
  // mostramos a frase
  cout << "A frase é: " << frase << endl;
  
  // chamamos a função que exibe as frequencias
  cout << "\nA frequência das palavras é:\n" << endl;
  exibir_frequencias(frase);
 
  cout << "\n\n";
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS; 
}

// função que exibe a frequência de palavras em uma
// frase ou texto
void exibir_frequencias(const string &frase){
  // vamos declarar um mapa que terá como chave uma string
  // e como valor um int
  unordered_map<string, int> frequencias;
  
  // agora convertemos a frase recebido como argumento
  // em um objeto stringstream
  stringstream ss(frase);
  
  // e percorremos as palavras individualmente
  string palavra;
  while (ss >> palavra){
    // essa palavra já existe no mapa?
    if (frequencias.find(palavra) == frequencias.end()){
      // adiciona esta palavra ao mapa
      frequencias[palavra] = 1;
    }
    else{
      // já existe. Vamos incrementar esta frequência
      frequencias[palavra] = frequencias[palavra] + 1;
    }
  }
  
  // agora percorremos o mapa não ordenado, acessando
  // cada chave e mostrando a frequencia de cada palavra
  unordered_map<string, int>:: iterator p;
  for (p = frequencias.begin(); p != frequencias.end(); p++){
    cout << "(" << p->first << ", " << p->second << ")\n";
  }
}

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

A frase é: Gosto de Java e Python pois quero aprender Java

A frequência das palavras é:

(aprender, 1)
(quero, 1)
(pois, 1)
(Gosto, 1)
(Java, 2)
(e, 1)
(de, 1)
(Python, 1)


AutoLISP ::: Dicas & Truques ::: Passos Iniciais

O que é AutoLISP e como escrever seu primeiro programa nessa linguagem de programação

Quantidade de visualizações: 1751 vezes
O que é AutoLISP?

Se você chegou até este artigo vindo de um mecanismo de busca, é bem provável que você já saiba o que é a AutoLISP e para que ela serve. No entanto, é sempre bom reforçar. A AutoLISP é um dialeto, ou seja, uma derivação, da linguagem de programação LISP.

LISP vem de LISt Processing (Processamento de listas, vetores, matrizes, etc). Imagina-se que a LISP seja a linguagem de programação de alto nível mais antiga que se conhece, perdendo apenas para o FORTRAN. Embutida por padrão no AutoCAD, a LISP é a linguagem preferida para inteligência artificial em robótica.

Para que serve a AutoLISP no AutoCAD?

A AutoLISP, como mencionei acima, é linguagem de programação padrão do AutoCAD e já vem embutida nele, da mesma forma que a linguagem Python já vem embutida no FreeCAD. É claro que podemos manipular os objetos do AutoCAD usando VBA (Visual Basic for Applications), mas esta opção já não vem mais embutida por padrão na ferramenta.

No AutoCAD, a AutoLISP é usada para automatizar tarefas e tornar menos tediosos os desenhos com detalhes muito repetitivos. Um programa AutoLISP nos permite, entre outras coisas, desenhar linhas, círculos, retângulos, polígonos, etc, selecionar objetos no GA (área de desenho do AutoCAD), solicitar entrada do usuário, exibir saída, ler e escrever em arquivos e muitas outras funcionalidades.

Como escrever e executar um programa AutoLISP no AutoCAD

Agora que já sabemos o que é a AutoLISP e seus objetivos, vamos escrever nosso primeiro programa. Abra o seu editor de código favorito (aqui eu usei o Notepad++) e digite a seguinte listagem:

; Este programa é usado para desenhar uma
; linha a partir de dois pontos indicados
; pelo usuário
(defun desenharLinha()
  ; Vamos obter o primeiro ponto e guardar suas
  ; coordenadas na variável p
  (setq p (getpoint "Clique primeiro ponto na GA"))

  ; Vamos obter o segundo ponto e guardar suas
  ; coordenadas na variável q
  (setq q (getpoint "\nClique segundo ponto na GA"))

  ; Agora chamamos o comando LINE passando os
  ; dois pontos geométricos obtidos
  (command "LINE" p q "")
)

Veja que, já no início do código, nós temos uma função chamada desenharLinha(). Dessa forma, salve o arquivo com o nome "desenharLinha.lsp" no diretório de sua preferência.

Como carregar um programa AutoLISP no AutoCAD?

Agora que já temos o arquivo .lsp pronto, vamos aprender como carregá-lo no AutoCAD. Para isso, vá até o menu Manage e escolha a opção Load Application. Selecione o arquivo desejado e clique o botão Load. Se tudo correu bem, você receberá uma mensagem "_appload desenharLinha.lsp successfully loaded".

Agora já podemos usar nossa rotina para desenhar linhas no AutoCAD. Com a aba Model ativada, digite:

(DESENHARLINHA)

na janela de comandos do AutoCAD. Ao pressionar Enter você verá a mensagem "Clique primeiro ponto na GA". Lembrando que GA é a General Arrangement Drawing, ou seja, a área de desenho. Dessa forma, clique na área de desenho para que o código AutoLISP registre o primeiro ponto (coordenadas x, y, z).

No mesmo momento uma mensagem "Clique segundo ponto na GA" será exibida. Clique na área de desenho para registrar o segundo ponto e pronto! Você verá uma linha ser desenhada entre os dois pontos geométricos que você informou.


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á 24 usuários muito felizes estudando em nosso site.