![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa 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 o Momento Mínimo de uma viga de concreto armado usando Python - Python para Engenharia Civil e Cálculo EstruturalQuantidade de visualizações: 614 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) |
C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios |
Como obter o diretório atual usando a função GetCurrentDirectory() da API do Windows - C++ e WinAPIQuantidade de visualizações: 10147 vezes |
|
Nesta dica mostrarei como chamar, a partir de um programa C++, a função GetCurrentDirectory() da API do Windows com o propósito de obter o diretório atual, ou seja, o diretório de trabalho da nossa aplicação. Esta função é declarada no header winbase.h (que vem junto quando fazemos include do header windows.h). Veja o exemplo completo:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
// buffer que receberá o nome do diretório
TCHAR szDirAtual[MAX_PATH];
// chama a função GetCurrentDirectory
GetCurrentDirectory(MAX_PATH, szDirAtual);
// Exibe o resultado
cout << "O diretório atual é " << szDirAtual << "\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Ao executar este código nós teremos o seguinte resultado: O diretório atual é C:\estudos_c++ |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Exercícios Resolvidos de Java - Como inserir um nó em qualquer posição de uma lista ligada em Java - Escreva um programa Java que cria uma lista dinamicamente encadeadaQuantidade de visualizações: 1088 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que cria uma lista dinamicamente encadeada (lista singularmente encadeada) e pede para o usuário inserir 5 elementos do tipo inteiro. Em seguida peça para o usuário informar um índice e um novo elemento e insira tal elemento no índice informado. Faça a validação dos índices para que ele não saia da faixa permitida. Sua saída deve ser parecida com: Inserindo 5 valores na lista Informe o 1.o valor: 8 Informe o 2.o valor: 2 Informe o 3.o valor: 4 Informe o 4.o valor: 7 Informe o 5.o valor: 3 Valores na lista: 8 -> 2 -> 4 -> 7 -> 3 -> null Inserindo um elemento no índice k Informe o índice desejado: 2 Informe o valor do nó: 9 Valores na lista: 8 -> 2 -> 9 -> 4 -> 7 -> 3 -> null Na saída podemos ver que o índice 2 corresponde ao terceiro elemento da lista ligada. Por isso o valor 4 foi empurrado para a frente para abrir espaço para o valor 9. Se o índice 0 fosse informado, o número 8 seria empurrado para a frente e o nó com valor 9 passaria a ser o início da lista ligada. Veja a resolução comentada deste exercício usando Java:
package estudos;
import java.util.Scanner;
// classe interna usada para representar um
// nó na lista ligada
class No {
int valor; // valor do nó
No proximo; // aponta para o novo nó
// construtor cheio da classe No
public No(int valor, No proximo) {
this.valor = valor;
this.proximo = proximo;
}
// construtor vazio da classe No
public No() {
this.valor = 0;
this.proximo = null;
}
}
public class Estudos {
public static void main(String args[]){
// para ler a entrada do usuário
Scanner entrada = new Scanner(System.in);
// vamos criar uma referência para o início da lista
No inicio = null;
// vamos inserir 5 valores inteiros na lista ligada
int valor;
System.out.println("Inserindo 5 valores na lista\n");
for (int i = 0; i < 5; i++) {
System.out.print("Informe o " + (i + 1) + ".o valor: ");
valor = Integer.parseInt(entrada.nextLine());
// vamos inserir este valor no final da lista
inicio = inserirFinal(inicio, valor);
}
// vamos exibir os valores na lista ligada
System.out.print("\nValores na lista: ");
exibirLista(inicio);
// vamos inserir um novo elemento no índice informado
System.out.println("\nInserindo um elemento no índice k\n");
System.out.print("Informe o índice desejado: ");
int indice = Integer.parseInt(entrada.nextLine());
// o índice é válido?
if ((indice < 0) || (indice > tamanhoLista(inicio) - 1)) {
System.out.println("O índice é inválido.");
}
else {
// vamos inserir o novo nó no índice indicado
System.out.print("Informe o valor do nó: ");
valor = Integer.parseInt(entrada.nextLine());
inicio = inserirIndice(inicio, indice, valor);
// vamos exibir os valores na lista ligada
System.out.print("\nValores na lista: ");
exibirLista(inicio);
}
}
// função que permite adicionar um nó em uma determinada
// posição da lista ligada
public static No inserirIndice(No inicio, int indice, int valor) {
// vamos apontar para o nó inicial
No atual = inicio;
// criamos um novo nó
No novo = criarNo(valor);
// a lista ligada ainda está vazia?
if (atual == null){
// inicio recebe o novo nó
inicio = novo;
}
else if (indice == 0) {
// o índice é igual a 0? vamos inserir
// o nó no início da lista ligada
novo.proximo = inicio;
inicio = novo;
}
else {
// vamos procurar o local adequado para inserção
// primeiro criamos um nó temporário
No temp = new No();
// apontamos o nó temporário para o início da lista
temp = inicio;
// e percorremos os nós até encontrar a posição
// de inserção
for(int i = 1; i < indice; i++) {
if (temp != null) {
// passa para o próximo nó
temp = temp.proximo;
}
}
// concluimos a inserção
novo.proximo = temp.proximo;
temp.proximo = novo;
}
// e retornamos o início da lista
return inicio;
}
// função que permite adicionar um nó no final da
// lista ligada
public static No inserirFinal(No inicio, int valor) {
// vamos apontar para o nó inicial
No atual = inicio;
// criamos um novo nó
No novo = criarNo(valor);
// a lista ligada ainda está vazia?
if (atual == null){
// inicio recebe o novo nó
inicio = novo;
}
else { // temos um ou mais nós na lista ligada
// vamos localizar o último nó
while (atual.proximo != null) {
atual = atual.proximo;
}
// encontramos o último nó. Agora vamos inserir
// o novo nó depois dele
atual.proximo = novo;
}
// e retornamos o início da lista
return inicio;
}
// função usada para construir e retornar um novo nó
public static No criarNo(int valor) {
// cria o novo nó
No no = new No(valor, null);
// retorna o nó criado
return no;
}
// função usada para percorrer a lista ligada e
// exibir os valores contidos em seus nós
public static void exibirLista(No inicio) {
// vamos apontar para o início da lista
No temp = inicio;
// a lista está vazia?
if (temp == null) {
System.out.println("A lista está vazia.");
}
else {
// esse laço se repete enquanto tempo for
// diferente de null
while (temp != null) {
// vamos mostrar o valor desse nó
System.out.print(temp.valor + " -> ");
// avança para o próximo nó
temp = temp.proximo;
}
// mostra o final da lista
System.out.println("null");
}
}
// função que retorna a quantidade de nós na lista ligada
public static int tamanhoLista(No inicio) {
int tamanho = 0;
// vamos apontar para o início da lista
No temp = inicio;
// a lista está vazia?
if (temp == null) {
return 0;
}
else {
// esse laço se repete enquanto tempo for
// diferente de null
while (temp != null) {
// vamos incrementar o tamanho
tamanho++;
// avança para o próximo nó
temp = temp.proximo;
}
}
return tamanho;
}
}
|
Java ::: Dicas & Truques ::: Mouse e Teclado |
Computação Gráfica em Java - Código completo Java Swing para um programa de desenho usando eventos do mouseQuantidade de visualizações: 31948 vezes |
|
Nesta dica apresento um código completo para um programa de desenho usando os eventos os mouse, feito em Java Swing. Veja que o único evento que tivemos que implementar foi mouseDragged, que é disparado quando o usuário arrasta o mouse com o botão direito ou esquerdo pressionado. Observe também a criação de uma classe JPanel personalizada que servirá como painel de desenho. Fique atento à forma como subscrevemos o método paintComponent() na classe PainelDesenho para obtermos o objeto Graphics que nos permitirá desenhar na superfície do JPanel. O resultado é exibido na imagem abaixo: ![]() E aqui está o código completo para o exemplo:
package arquivodecodigos;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Estudos extends JFrame{
public Estudos(){
super("Eventos do Mouse e Teclado");
Container c = getContentPane();
PainelDesenho painel = new PainelDesenho();
c.add(painel, BorderLayout.CENTER);
c.add(new JLabel("Arraste o mouse para desenhar..." ),
BorderLayout.SOUTH );
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class PainelDesenho extends JPanel{
private int quantPontos = 0;
private Point pontos[] = new Point[10000];
public PainelDesenho(){
this.setBackground(Color.WHITE);
this.addMouseMotionListener(
new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
if(quantPontos < pontos.length){
pontos[quantPontos] = e.getPoint();
quantPontos++;
repaint();
}
}
}
);
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
for(int i = 0 ; i < quantPontos; i++)
g.fillOval(pontos[i].x, pontos[i].y, 4, 4);
}
}
|
Nossas 20 dicas & truques de programação mais populares |
|
C# - Como ordenar alfabeticamente os itens de uma ListBox do C# Windows Forms usando a propriedade Sorted JavaScript - Como obter entrada do usuário em seus códigos JavaScript usando a função prompt() do objeto window Java - Como comparar strings em Java usando os métodos compareTo() e compareToIgnoreCase() da classe String |
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 |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






