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 - Concreto, Concreto Armado e Concretos Especiais

Como calcular a armadura mínima de tração de uma viga de concreto armado usando Python - Python para Engenharia Civil

Quantidade de visualizações: 660 vezes
De acordo com a ABNT NBR 6118 (Projeto de estruturas de concreto armado), a armadura de tração, em elementos estruturais armados ou protendidos deve ser determinada pelo dimensionamento da seção a um determinado momento fletor mínimo, respeitada a taxa mínima absoluta ρmin de 0,15%.

Dessa forma, a área de aço mínima levando em consideração a taxa mínima absoluta ρmin de 0,15% de armadura longitudinal para as vigas de concreto armado usando concreto com FCK até 30 Mpa é calculada pela seguinte fórmula:

\[A_\text{s,min} = \frac{0,15}{100} \cdot A_\text{c}\]
Onde:

As,min é a área da armadura mínima de aço em cm2;

Ac é a área de concreto em cm2, ou seja, a largura bw da viga multiplicada por sua altura h (ambas em cm).

Veja agora o código Python completo que lê a largura, a altura da viga, o FCK do concreto (no código eu tratei FCK até 50 Mpa) e mostra a área mínima da armadura de aço e sugestões das barras a serem usadas:

# vamos importar o módulo Math
import math

# função usada para calcular e retornar a quantidade
# de barras de aço de acordo com a área de aço (considerando
# aço CA-50)
def quant_barras(area_aco):
  # barras de 6.3mm (o mínimo aceitável pela NBR 6118)
  quantidade_6_3 = math.ceil(area_aco / 0.31)
  quantidade_8 = math.ceil(area_aco / 0.5) # barras de 8mm
  quantidade_10 = math.ceil(area_aco / 0.785) # barras de 10mm
  quantidade_12_5 = math.ceil(area_aco / 1.22) # barras de 12.5mm

  # mostra as sugestões de quantidade de barras
  if (quantidade_6_3) > 1:
    print("{0} barras de 6.3 mm".format(quantidade_6_3))
  if (quantidade_8) > 1:
    print("{0} barras de 8 mm".format(quantidade_8))
  if (quantidade_10) > 1:
    print("{0} barras de 10 mm".format(quantidade_10))  
  if (quantidade_12_5) > 1:
    print("{0} barras de 12.5 mm".format(quantidade_12_5))

# 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 pedir para o usuário informar a largura da viga
  largura = float(input("Informe a largura bw da viga em cm: "))
  
  # vamos pedir para o usuário informar o FCK do concreto
  fck = float(input("Informe o FCK do concreto em Mpa: "))
  
  # vamos calcular o pmin de acordo com o FCK informado
  if (fck <= 30):
    pmin = 0.15
  elif (fck == 35):
    pmin = 0.164
  elif (fck == 40):
    pmin = 0.179
  elif (fck == 45):
    pmin = 0.194
  else:
    pmin = 0.208    
  
  # já temos o pmin, vamos calcular a área mínima de aço
  area_concreto = largura * altura
  as_min = (pmin / 100.0) * area_concreto
  
  # vamos mostrar os resultados 
  print("\nA área da armadura mínima longitudinal é: {0} cm2".format(
    round(as_min, 5)))
  # mostra as sugestões de barras
  print("\nSugestões de barras:\n-------------------------")
  quant_barras(as_min)

if __name__ == "__main__":
  main()

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

Informe a altura h da viga em cm: 50
Informe a largura bw da viga em cm: 20
Informe o FCK do concreto em Mpa: 30

A área da armadura mínima é: 1.5 cm2

Sugestões de barras:
-------------------------
5 barras de 6.3 mm
3 barras de 8 mm
2 barras de 10 mm
2 barras de 12.5 mm


PostgreSQL ::: Dicas & Truques ::: Comandos DDL (Data Definition Language - Linguagem de Definição de Dados)

Como excluir uma base de dados no PostgreSQL usando o comando DDL DROP DATABASE

Quantidade de visualizações: 14636 vezes
Em algumas situações precisamos excluir uma base de dados no PostgreSQL. Isso pode ser feito por meio do uso do comando DLL DROP DATABASE. Este comando pode ser disparado via linha de comando SQL Shell (psql), na janela de Query do pgAdmin ou a partir de uma linguagem de programação. No entanto, é importante saber que você não conseguirá excluir uma base de dados que você ou outros usuários estejam conectados no momento.

Use o comando DROP DATABASE com cuidado. Ao dispará-lo, os dados contidos na base de dados (tabelas, views, funções, triggers, etc) serão perdidos para sempre. Veja como podemos usar o comando DROP DATABASE para excluir uma base de dados chamada "estudos":

DROP DATABASE estudos;

Se você visualizar uma mensagem parecida com:

Query returned successfully with no result in 261 ms.

Então poderá estar certo de que a base de dados foi removida com sucesso. Se tentarmos excluir uma base de dados na qual alguém ainda está conectado, o PostgreSQL abortará a operação e nos exibirá a seguinte mensagem de erro:

ERRO:  banco de dados "estudos" está sendo acessado por outros usuários
DETAIL:  Há 1 outra sessão utilizando o banco de dados.

********** Error **********

ERRO: banco de dados "estudos" está sendo acessado por outros usuários
SQL state: 55006
Detail: Há 1 outra sessão utilizando o banco de dados.
Da mesma forma, seremos alertados se tentarmos excluir uma base de dados que não existe:

ERRO:  banco de dados "estudos" não existe

********** Error **********

ERRO: banco de dados "estudos" não existe
SQL state: 3D000
O comando DROP DATABASE pode vir acompanhado da cláusula IF EXISTS, que tentará a exclusão somente quando a base de dados existir. Veja:

DROP DATABASE IF EXISTS estudos;

Agora o PostgreSQL trocará a mensagem de erro por uma mensagem de advertência:

NOTA:  banco de dados "estudos" não existe, ignorando

Query returned successfully with no result in 14 ms.



Python ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como criar um laço while() infinito na linguagem Python

Quantidade de visualizações: 10535 vezes
Nesta dica eu mostrarei como é possível criar um laço (loop) while infinito em Python. Esta técnica é útil para as situações nas quais queremos interagir com o usuário do nosso programa até que um determinado valor seja informado.

No exemplo abaixo temos um laço while() que será executado até que o texto "fim" seja informado pelo usuário.

Veja o código completo:

def main():
  while True:
    frase = input("Digite uma frase: ");
    print("Você digitou: ", frase)
 
    # vamos sair do laço
    if frase == "fim":
      print("Você acaba de sair do laço while()")
      break
 
if __name__== "__main__":
  main()

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

Digite uma frase: Estou estudando Python
Você digitou: Estou estudando Python
Digite uma frase: Preciso viajar amanhã
Você digitou: Preciso viajar amanhã
Digite uma frase: fim
Você digitou: fim
Você acaba de sair do laço while()


Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Como implementar a ordenação Quicksort em Java - Apostila de Java para iniciantes

Quantidade de visualizações: 734 vezes
A ordenação Quicksort é um dos algorítmos de ordenação mais encontrados em aplicações reais de programação. No Delphi esta ordenação é encontrada no objeto TList. No Java podemos encontrá-lo no método Arrays.sort(). Na linguagem C a ordenação Quicksort é implementada na função qsort() da biblioteca padrão.

O algoritmo de ordenação Quicksort é do tipo dividir para conquistar (divide-and-conquer principle). Neste tipo de algoritmo o problema é dividido em sub-problemas e a solução é concatenada quando as chamadas recursivas atingirem o caso base.

O vetor (ou array) a ser ordenado é dividido em duas sub-listas por um elemento chamado pivô, resultando em uma lista com elementos menores que o pivô e outra lista com os elementos maiores que o pivô. Esse processo é repetido para cada chamada recursiva. Sim, a ordenação Quicksort faz uso extensivo de recursividade, razão pela qual devemos ter muito cuidado para não estourar a pilha do sistema.

Existem muitos estudos sobre o pivô ideal para a ordenação Quicksort. Nessa dica adotarei o último elemento do array ou sub-array como pivô. Em vetores não ordenados essa estratégia, em geral, resulta em uma boa escolha.

Vamos ao código Java então? Veja um programa Java completo demonstrando o uso da ordenação Quicksort para um array de 10 elementos inteiros:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // vamos declarar um array de 10 elementos
    int valores[] = new int[10];
    
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos pedir ao usuário para informar os valores para o vetor
    for(int i = 0; i < valores.length; i++){
      System.out.print("Informe o valor do elemento " + i + ": ");
      valores[i] = Integer.parseInt(entrada.nextLine()); 
    }

    // vamos mostrar o array informado
    System.out.println("\nO array informado foi:\n");
    for(int i = 0; i < valores.length; i++){
      System.out.print(valores[i] + "  ");
    }
    
    // vamos ordenar o vetor usando a ordenação Quicksort
    quickSort(valores, 0, valores.length - 1);
    
    System.out.println("\n\nO array ordenado é:\n");
    for(int i = 0; i < valores.length; i++){
      System.out.print(valores[i] + "  ");
    }
    
    System.out.println("\n\n");
  }

  // função de implementação da ordenação Quicksort
  public static void quickSort(int vetor[], int inicio, int fim) {
    // o início é menor que o fim?
    if (inicio < fim) {
      // vamos obter o novo índice da partição
      int indiceParticao = particionar(vetor, inicio, fim);

      // efetuamos novas chamadas recursivas
      quickSort(vetor, inicio, indiceParticao - 1);
      quickSort(vetor, indiceParticao + 1, fim);
    }
  }
  
  // função que retorna o índice de partição
  private static int particionar(int vetor[], int inicio, int fim) {
    // para guardar o pivô
    int pivot = vetor[fim];
    int i = (inicio - 1);
 
    for (int j = inicio; j < fim; j++) {
      if (vetor[j] <= pivot) {
        i++;

        // fazemos a troca
        int temp = vetor[i];
        vetor[i] = vetor[j];
        vetor[j] = temp;
      }
    }

    // efetua a troca
    int temp = vetor[i + 1];
    vetor[i + 1] = vetor[fim];
    vetor[fim] = temp;

    return i + 1;
  }
}

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

Informe o valor do elemento 0: 7
Informe o valor do elemento 1: 2
Informe o valor do elemento 2: 43
Informe o valor do elemento 3: 1
Informe o valor do elemento 4: 9
Informe o valor do elemento 5: 6
Informe o valor do elemento 6: 22
Informe o valor do elemento 7: 3
Informe o valor do elemento 8: 37
Informe o valor do elemento 9: 5

O array informado foi:

7 2 43 1 9 6 22 3 37 5

O array ordenado é:

1 2 3 5 6 7 9 22 37 43


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