![]() |
|
||||
|
|||||
Você está aqui: Cards de Ética e Legislação Profissional |
||
|
||
|
|
||
Python ::: Python para Engenharia ::: Engenharia Civil - Concreto, Concreto Armado e Concretos Especiais |
Como calcular o Momento Mínimo de uma viga de concreto armado usando Python - Python para Engenharia Civil e Cálculo EstruturalQuantidade de visualizações: 478 vezes |
|
A ABNT NBR 6118 (Projeto de estruturas de concreto armado) define que todas as vigas, independente de suas dimensões e momentos solicitantes, precisam apresentar uma taxa mínima de armadura de tração. O concreto possui excelente resistência à compressão, porém, sua resistência à tração é muito baixa, ficando em torno de 10% do valor de sua resistência à compressão. A NBR 6118 lista, como primeira exigência, uma taxa mínima absoluta de 0,15% de armadura longitudinal para as vigas de concreto armado. A segunda exigência é calcular a área de armadura mínima a partir do Mdmin, que é o momento mínimo (de projeto) a ser considerado no dimensionamento. Dessa forma, após calcularmos o momento mínimo Mdmin, só precisamos calcular a área de aço correspondente a este momento. A fórmula do momento mínimo para as vigas de concreto armado é: \[M_\text{dmin} = 0,8 \cdot W_\text{0} \cdot f_\text{ctk,sup}\] Onde: Mdmin é o momento mínimo de projeto a ser considerado, em kN.m (ou kN.cm dependendo da necessidade); fctk,sup é o limite superior da resistência à tração média do concreto, em kN.cm2. Em outra dica desta seção eu mostrei como o fctk,sup é calculado; W0 é o módulo de resistência da seção transversal da viga, em m3. Já o Módulo de Resistência da Seção (para seções retangulares), é calculado pela seguinte fórmula: \[W_\text{0} = \frac{b \cdot h^2}{6}\] Onde: W0 é o módulo de resistência da seção transversal da viga, em cm3; b é a largura da viga em centímetros; h é a altura da viga em centímetros. Veja agora o código Python que pede para o usuário informar o FCK do concreto e as dimensões da viga e calcula o fctk,sup, o W0 e finalmente o Mdmin solicitante para o cálculo da armadura longitudinal mínima da viga:
# vamos importar o módulo Math
import math
# função principal do programa
def main():
# vamos pedir para o usuário informar o FCK do concreto
fck = float(input("Informe o FCK do concreto em Mpa: "))
# vamos ler a largura da viga
bw = float(input("Informe a largura bw da viga em cm: "))
# vamos ler a altura da viga
h = float(input("Informe a altura h da viga em cm: "))
# agora vamos calcular a resistência à tração média
# do concreto
fctk_m = 0.3 * math.pow(fck, 2.0 / 3.0)
# vamos calcular o limite superior
fctk_sup = 1.3 * fctk_m
# vamos calcular o módulo de resistência da seção
w0 = (bw * math.pow(h, 2) / 6.0)
# agora já podemos calcular o momento mínimo
mdmin = 0.8 * w0 * (fctk_sup / 10.0)
# e mostramos os resultados
print("\nO fctk,sup é: {0} Mpa ({1} kN/cm2)".format(round(fctk_sup, 5),
round(fctk_sup / 10.0, 5)))
print("O módulo de resistência da seção W0 é: {0} cm3 ({1} m3)".format(
round(w0, 5), round(w0 / 1000000.0, 5)))
print("O momento mínimo Mdmin é: {0} kN.cm ({1} kN.m)".format(
round(mdmin, 5), round(mdmin / 100.0, 5)))
if __name__ == "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: Informe o FCK do concreto em Mpa: 30 Informe a largura bw da viga em cm: 20 Informe a altura h da viga em cm: 50 O fctk,sup é: 3.76541 Mpa (0.37654 kN/cm2) O módulo de resistência da seção W0 é: 8333.33333 cm3 (0.00833 m3) O momento mínimo Mdmin é: 2510.2724 kN.cm (25.10272 kN.m) |
VB.NET ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de VB.NET - Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteirosQuantidade de visualizações: 639 vezes |
|
Pergunta/Tarefa: Escreva uma função recursiva em VB.NET que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Sua função deverá ter a seguinte assinatura:
// função recursiva que recebe um valor e um vetor e retorna quantas
// vezes o valor é encontrado no vetor
public static int QuantRepeticoes(int indice, int valor, int[] vetor) {
// sua implementação aqui
}
Informe o 1 valor: 2 Informe o 2 valor: 7 Informe o 3 valor: 4 Informe o 4 valor: 7 Informe o 5 valor: 1 Informe o valor a ser pesquisado no vetor: 7 O valor informado se repete 2 vezes. Veja a resolução comentada deste exercício usando VB.NET:
Imports System
Module Program
' função principal do programa VB.NET
Sub Main(args As String())
' vamos declarar um vetor de 10 inteiros
Dim valores(4) As Integer
' vamos pedir ao usuário que informe os valores do vetor
For i As Integer = 0 To valores.Length - 1
Console.Write("Informe o " & (i + 1) & " valor: ")
' efetua a leitura do valor informado para a posição atual do vetor
valores(i) = Int32.Parse(Console.ReadLine())
Next
' agora vamos pedir para informar o valor a ser pesquisado
Console.Write(vbCrLf & "Informe o valor a ser pesquisado no vetor: ")
Dim valor As Integer = Int32.Parse(Console.ReadLine())
' e vamos ver a quantidade de repetições
Dim repeticoes As Integer = QuantRepeticoes(0, valor, valores)
Console.WriteLine("O valor informado se repete " & repeticoes & " vezes.")
Console.WriteLine(vbCrLf & vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
' função recursiva que recebe um valor e um vetor e retorna quantas
' vezes o valor é encontrado no vetor
Function QuantRepeticoes(indice As Integer, valor As Integer,
vetor() As Integer) As Integer
If indice = vetor.Length - 1 Then ' caso base...hora de parar a recursividade
If vetor(indice) = valor Then
Return 1 ' mais um repetição foi encontrada
End If
Else ' dispara mais uma chamada recursiva
If vetor(indice) = valor Then ' houve mais uma repetição
Return 1 + QuantRepeticoes(indice + 1, valor, vetor)
Else
Return 0 + QuantRepeticoes(indice + 1, valor, vetor) ' não repetiu
End If
End If
Return 0 ' só para deixar o compilador satisfeito...esta linha nunca é
' executada
End Function
End Module
|
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# APIQuantidade de visualizações: 516 vezes |
|
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação. Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos. O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit. De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar. O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação. Veja o código Revit C# API completo para o exemplo:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
using System.Linq;
namespace Estudos {
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
public partial class ThisApplication {
private void Module_Startup(object sender, EventArgs e) {
// vamos obter uma referência ao Document ativo
Document doc = this.ActiveUIDocument.Document;
UIDocument uidoc = this.ActiveUIDocument;
// agora mostramos uma mensagem para o usuário selecionar uma
// coluna ou pilar
TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar");
// obtemos uma referência ao objeto Selection do
// UIDocument ativo
Selection selecao = uidoc.Selection;
// e finalmente esperamos que o usuário selecione o elemento
Reference selecionado = selecao.PickObject(ObjectType.Element,
"Selecione uma coluna ou pilar");
// agora testamos se o usuário realmente selecionou um
// elemento
if (selecionado != null) {
// vamos obter o elemento selecionado a partir da
// referência
FamilyInstance coluna = uidoc.Document.GetElement(selecionado)
as FamilyInstance;
// vamos obter o elemento BoundingBoxXYZ
BoundingBoxXYZ bounding = coluna.get_BoundingBox(null);
// vamos obter as informações da BoundingBoxXYZ
// primeiro o ponto mínimo (canto esquerdo inferior e
// a parte de trás da caixa delimitadora)
XYZ pontoMinimo = bounding.Min;
// agora o ponto máximo (canto direito superior e
// a parte da frente da caixa delimitadora)
XYZ pontoMaximo = bounding.Max;
// agora obtemos o ponto central da coluna
XYZ centro = (pontoMaximo + pontoMinimo) * 0.5;
// construímos a linha que servirá de eixo de rotação
Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ);
// definimos o ângulo de rotação em graus
double angulo_rotacao_graus = 45;
// convertemos para radianos
double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180);
// iniciamos a transação
Transaction transacao = new Transaction(doc);
transacao.Start("Como rotacionar colunas e pilares no Revit");
// rotacionamos a coluna ou pilar
ElementTransformUtils.RotateElement(doc, coluna.Id, eixos,
angulo_rotacao_radianos);
// fazemos o commit da transação
transacao.Commit();
// e mostramos o resultado
TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso.");
}
}
private void Module_Shutdown(object sender, EventArgs e) {
// para fazer alguma limpeza de memória ou algo assim
}
#region Revit Macros generated code
private void InternalStartup() {
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
}
}
|
PHP ::: Dicas & Truques ::: Data e Hora |
Datas e horas em PHP - Como obter a quantidade de dias entre duas datasQuantidade de visualizações: 4 vezes |
|
Nesta dica mostrarei como podemos efetuar um cálculo em PHP que retorna o número de dias entre duas datas. Fique atento(a) à ordem que a data inicial e a data final são fornecidos para a função. Veja o código PHP completo:
<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
<?php
function quant_dias($data1, $data2){
return round((strtotime($data2) -
strtotime($data1)) / (24 * 60 * 60), 0);
}
$inicio = date("m/d/Y"); // data atual
$fim = "04/22/2021"; // data no formato mês/dia/ano
echo "Dias entre as duas datas: " .
quant_dias($inicio, $fim);
?>
Ao executarmos este código nós teremos o seguinte resultado: Dias entre as duas datas: 31 |
Dart ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercício Resolvido de Dart - Como testar se um ano é bissexto em Dart - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou nãoQuantidade de visualizações: 1645 vezes |
|
Pergunta/Tarefa: Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016. Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400. Escreva um programa Dart que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não. Sua saída deverá ser parecida com: Informe o ano: 2024 O ano informado é bissexto. Veja a resolução comentada deste exercício usando Dart:
// Vamos importar a biblioteca dart:io
import "dart:io";
void main(){
// vamos solicitar que o usuário informe um ano
stdout.write("Informe o ano: ");
int ano = int.parse(stdin.readLineSync());
// vamos verificar se o ano informado é bissexto
if(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)){
print("O ano informado é bissexto.");
}
else{
print("O ano informado não é bissexto.");
}
}
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Dart |
Veja mais Dicas e truques de Dart |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






