![]() |
|
|
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. |
||
Você está aqui: Cards de Engenharia Civil - Construção Civil |
||
|
||
|
|
||
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Fenômenos dos Transportes, Hidráulica e Drenagem |
Exercício Resolvido de Python - Como calcular o Número de Reynolds em Python - Leite integral a 293 K, massa específica de 1030 kg/m3 e viscosidade de 2,12.10-3 N.s/m2 está escoando a uma razãoQuantidade de visualizações: 514 vezes |
|
Pergunta/Tarefa: O Número de Reynolds é uma quantidade adimensional usada na mecânica dos fluidos para prever padrões de fluxo em diferentes situações de escoamento de fluidos. É definido como a razão entre forças inerciais e forças viscosas dentro de um fluido. 1) Leite integral a 293 K, massa específica de 1030 kg/m3 e viscosidade de 2,12.10-3 N.s/m2 está escoando a uma razão de 0,605 kg/s em uma tubulação de 63,5 mm de diâmetro. a) Calcule o número de Reynolds. O escoamento é laminar ou turbulento? b) Calcule a vazão em m3/s para um número de Reynolds de 2100 e a velocidade em m/s. Sua saída deverá ser parecida com: Informe a Massa Específica do fluido (kg/m3): 1030 Informe a Viscosidade Dinâmica do fluido (N.s/m2): 2.12e-3 Informe a Vazão Mássica (kg/s): 0.605 Informe o Diâmetro da Tubulação (mm): 63.5 A área da tubulação é: 0.003166921744359361 m2 A vazão volumétrica do fluido é: 0.000587378640776699 m3/s A velocidade de escoamento do fluido é: 0.18547305181218499 m/s O Número de Reynolds é: 5722.106110271679 Informe o novo Número de Reynolds: 2100 A nova velocidade de escoamento do fluido é: 0.06806819050531304 m/s A nova vazão volumétrica do fluido é: 0.0002155666326104713 m3/s O primeiro passo para a resolução deste exercício é nos lembrarmos da Fórmula do Número de Reynolds: \[R_e = \frac{\rho \cdot v \cdot D}{\mu} \] Onde: [[rho]] é a massa específica do fluido medida em kg/m3; v = velocidade média do fluido em m/s; D = diâmetro para o fluxo do tubo em metros (m); [[mu]] é a viscosidade dinâmica do fluido em N.s/m2. Obs.: No código eu mostro como fazer as conversões de unidades necessárias. Veja a resolução completa para o exercício em Python, comentada linha a linha:
# vamos importar a biblioteca Math
import math
# método principal
def main():
# vamos ler a massa específica da água
massa_especifica = float(input("Informe a Massa Específica (kg/m3): "))
# vamos ler a viscosidade dinâmica do fluido
viscosidade_dinamica = float(input("Informe a Viscosidade (N.s/m2): "))
# vamos ler a vazão mássica
vazao_massica = float(input("Informe a Vazão Mássica (kg/s): "))
# vamos ler o diâmetro da tubulação
diametro = float(input("Informe o Diâmetro da Tubulação (mm): "))
# o primeiro passo é calcular a área da seção transversal da tubulação
# a) convertemos milímetros para metros
diametro = diametro / 1000.0
# b) calculamos a área em metros quadrados
area = (math.pi * math.pow(diametro, 2) / 4)
# vamos converter a vazão mássica em vazão volumétrica
vazao = vazao_massica / massa_especifica
# vamos obter a velocidade de escoamento do fluido
velocidade = vazao / area
# e finalmente calculamos o Número de Reynolds
numero_reynolds = (massa_especifica * velocidade * diametro) / viscosidade_dinamica
# mostramos os resultados
print("\nA área da tubulação é: {0} m2".format(area))
print("A vazão volumétrica do fluido é: {0} m3/s".format(vazao))
print("A velocidade de escoamento do fluido é: {0} m/s".format(velocidade))
print("O Número de Reynolds é: {0}".format(numero_reynolds))
# vamos ler o novo Número de Reynolds
novo_numero_reynolds = float(input("\nInforme o novo Número de Reynolds: "))
# vamos calcular a velocidade para o novo Reynolds
nova_velocidade = ((viscosidade_dinamica * novo_numero_reynolds)
/ (massa_especifica * diametro))
print("A nova velocidade de escoamento do fluido é: {0} m/s".format(nova_velocidade))
# vamos calcular a nova vazão volumétrica
nova_vazao = area * nova_velocidade
print("A nova vazão volumétrica do fluido é: {0} m3/s".format(nova_vazao))
if __name__== "__main__":
main()
O primeiro Número de Reynolds, ou seja, 5722.1061, caracteriza o escoamento como turbulento, pois é maior que 2400. Já o Número de Reynolds 2100 caracteriza o escoamento como escoamento de transição (saindo do escoamento laminar e indo para o escoamento turbulento), já que é maior que 2000 e menor que 2400. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercício Resolvido de Java - Como calcular o Índice de Massa Corporal em Java - Como calcular IMC em JavaQuantidade de visualizações: 13776 vezes |
|
Pergunta/Tarefa: O índice de massa corporal (IMC) é uma medida internacional usada para calcular se uma pessoa está no peso ideal. Ele foi desenvolvido pelo polímata Lambert Quételet no fim do século XIX. Trata-se de um método fácil e rápido para a avaliação do nível de gordura de cada pessoa, ou seja, é um preditor internacional de obesidade adotado pela Organização Mundial da Saúde (OMS). O IMC é determinado pela divisão da massa do indivíduo pelo quadrado de sua altura, em que a massa está em quilogramas e a altura em metros. A fórmula é a seguinte: ![]() A classificação é feita de acordo com as seguintes regras: a) < 16 - Magreza grave b) 16 a < 17 - Magreza moderada c) 17 a < 18,5 - Magreza leve d) 18,5 a < 25 - Saudável e) 25 a < 30 - Sobrepeso f) 30 a < 35 - Obesidade Grau I g) 35 a < 40 - Obesidade Grau II (severa) h) >= 40 - Obesidade Grau III (mórbida) Escreva um programa Java que leia o peso e a altura de uma pessoa e retorna seu IMC classificado de acordo com a tabela acima. Sua saída deverá ser parecida com: Informe seu peso: 82 Informe sua altura: 1.85 Seu IMC é: 23.959094229364496 Sua classificação é Saudável Veja a resolução comentada deste exercício usando Java:
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
// vamos solicitar o peso e a altura da pessoa
System.out.print("Informe seu peso: ");
double peso = Double.parseDouble(entrada.nextLine());
System.out.print("Informe sua altura: ");
double altura = Double.parseDouble(entrada.nextLine());
// vamos calcular o IMC
double imc = peso / (altura * altura);
System.out.println("Seu IMC é: " + imc);
// vamos mostrar a classificação
if(imc < 16){
System.out.println("Sua classificação é Magreza grave");
}
else if((imc >= 16) && (imc < 17)){
System.out.println("Sua classificação é Magreza moderada");
}
else if((imc >= 17) && (imc < 18.5)){
System.out.println("Sua classificação é Magreza leve");
}
else if((imc >= 18.5) && (imc < 25)){
System.out.println("Sua classificação é Saudável");
}
else if((imc >= 25) && (imc < 30)){
System.out.println("Sua classificação é Sobrepeso");
}
else if((imc >= 30) && (imc < 35)){
System.out.println("Sua classificação é Obesidade Grau I");
}
else if((imc >= 35) && (imc < 40)){
System.out.println("Sua classificação é Obesidade Grau II");
}
else{
System.out.println("Sua classificação é Obesidade Grau III (mórbida)");
}
System.out.println("\n");
}
}
|
Java ::: Tratamento de Erros ::: Passos Iniciais |
Quais as diferenças entre checked exceptions, runtime exceptions e errors na linguagem Java?Quantidade de visualizações: 16126 vezes |
|
Checked exceptions (exceções verificadas), runtime exceptions (exceções de tempo de execução) e errors (erros) possuem diferenças importantes e devem ser entendidas perfeitamente para tirarmos maior proveito da plataforma Java. Entre as checked exceptions podemos citar FileNotFoundException, ClassNotFoundException e IOException. Agora veja: problemas tais como um arquivo não encontrado, uma classe não encontrada ou problemas com entrada e saída (talvez a impressora parou de responder ou a rede caiu) fogem completamente do domínio da aplicação. Tais exceções não são provocadas por código mal escrito ou mal testado. Desta forma, o Java força que todas as checked exceptions estejam em um bloco try...catch. Vamos ver se isso é verdade? Observe o trecho de código abaixo:
import java.io.*;
public class Estudos{
public static void main(String[] args){
DataInputStream in = new DataInputStream(
new BufferedInputStream(
new FileInputStream("conteudo.txt")));
while(in.available() != 0)
System.out.print((char) in.readByte());
System.exit(0);
}
}
Se tentarmos compilar este código teremos o seguinte resultado:
Estudos.java:7: unreported exception
java.io.FileNotFoundException; must be caught
or declared to be thrown
new FileInputStream("conteudo.txt")));
^
Estudos.java:9: unreported exception
java.io.IOException; must be caught or
declared to be thrown
while(in.available() != 0)
^
Estudos.java:10: unreported exception
java.io.IOException; must be caught or
declared to be thrown
System.out.print((char) in.readByte());
^
3 errors
Aqui nós temos uma exceção FileNotFoundException e duas exceções IOException. Vamos nos concentrar na exceção gerada pelo construtor da classe FileInputStream. Folheando a documentação do Java nós encontramos: public FileInputStream(String name) throws FileNotFoundException É aqui que as coisas começam a ficar interessantes. Todos os métodos Java que podem atirar exceções verificadas são marcados com throws e o tipo de exceção lançada. A palavra throws é usada para transferir a responsabilidade do tratamento do erro para o chamador de tais métodos. Outro exemplo é o método readByte() da classe DataInputStream: public final byte readByte() throws IOException Para corrigir as exceções acima, só precisamos usar um bloco try...catch. Veja:
import java.io.*;
public class Estudos{
public static void main(String[] args){
try{
DataInputStream in = new DataInputStream(
new BufferedInputStream(
new FileInputStream("conteudo.txt")));
while(in.available() != 0)
System.out.print((char) in.readByte());
}
catch(IOException e){
System.out.print(e.getMessage());
}
System.exit(0);
}
}
Exceções verificadas são todas aquelas que descendem de Exception mas não descendem de RuntimeException. As exceções de tempo de execução (runtime exceptions) são provocadas por código mal escrito ou mal testado, ou seja, são causadas por nós programadores. Entre estas exceções podemos citar ArithmeticException, IndexOutOfBoundsException e NoSuchElementException. De fato, um erro aritmético é responsabilidade do programador, pois cabe a este verificar se os valores estão dentro da faixa permitida por cada tipo de dados. Ao contrário das exceções verificadas, o compilador não força o uso do bloco try...catch para as runtime exceptions. De fato, isso é fácil de compreender, uma vez que tais exceções não deveriam jamais aparecer. Contudo, pode ser desejável usar o bloco try...catch em casos em que os valores de uma operação são definidos pelo usuário. Veja um exemplo:
import java.util.*;
public class Estudos{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("Informe um inteiro: ");
int valor = in.nextInt();
System.out.print("Informe outro inteiro: ");
int valor2 = in.nextInt();
System.out.println("O resultado é " +
valor / valor2);
}
}
Se executarmos este código e informarmos o valor 0 para o segundo inteiro, teremos a seguinte exceção: Informe um inteiro: 4 Informe outro inteiro: 0 Exception in thread "main" java.lang.ArithmeticException: / by zero at Estudos.main(Estudos.java:13) Uma forma de corrigir isso é testando os valores informados para verificar suas faixas ou lançar uma exceção. Veja como usamos esta última alternativa:
import java.util.*;
public class Estudos{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("Informe um inteiro: ");
int valor = in.nextInt();
System.out.print("Informe outro inteiro: ");
int valor2 = in.nextInt();
try{
System.out.println("O resultado é " +
valor / valor2);
}
catch(ArithmeticException e){
System.out.println("Uma exceção " +
"ArithmeticException ocorreu, " +
"possivelmente uma tentativa de " +
"divisão por zero.");
}
}
}
Agora se informarmos zero para o segundo inteiro, teremos: Informe um inteiro: 5 Informe outro inteiro: 0 Uma exceção ArithmeticException ocorreu, possivelmente uma tentativa de divisão por zero. As runtime exceptions (causadas por falha nossa, os programadores) descedem de java.lang.RuntimeException. Além das runtime exceptions e das checked exceptions, temos também os errors, que descedem de java.lang.Error e não devem jamais ser atirados ou tratados em blocos try...catch. Este tipo de erro é reservado para indicar problema na JVM. Entre tais erros temos OutOfMemoryError, que é lançado quando a Java Virtual Machine não consegue alocar um objeto porque sua fatia de memória esgotou e o Garbage Collector ainda não liberou mais memória. Não há razão para tratarmos isso em um bloco try...catch uma vez que, ao contrário de C++, a liberação de memória só é feita pelo GC. O melhor a fazer é deixar mesmo o programa ser encerrado e encontrar alternativas para a correção do problema. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como copiar os caracteres de uma string para outra usando a função strcpy() da linguagem CQuantidade de visualizações: 13745 vezes |
Pessoas acostumadas com Delphi, Java ou PHP podem pensar que a tarefa de copiar o conteúdo de uma string para outra em C pode ser tão simples quanto o código a seguir:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
char frase1[] = "Gosto de PHP";
char frase2[50]; // pode receber até 49 caracteres
// copia a primeira frase para a segunda
frase2 = frase1;
// exibe o resultado
printf(frase2);
puts("\n\n");
system("PAUSE");
return 0;
}
Este código não funciona. No Dev-C++ (MingW) a seguinte mensagem de erro de compilação é exibida: incompatible types in assignment of `char[13]` to `char[50]` Em C, a forma correta de copiar os caracteres de uma string para outra é obtendo ponteiros para a posição inicial das duas strings, percorrer todos os caracteres da primeira e atribuí-los um de cada vez nas posições de memória reservadas para a segunda string. Veja o protótipo da função strcpy(), usada para tal finalidade: char *strcpy(char *destino, const char *origem); Como podemos ver, a função copiará todos os caracteres contidos na string origem para a string destino. É importante observar que a string destino deverá ser declarada de forma que todos os caracteres a serem copiados possam ser acomodados sem que o programa corra o risco de escrever em áreas de memória reservadas a outras finalidades. Veja um exemplo completo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
char frase1[] = "Gosto de PHP";
char frase2[50]; // pode receber até 50 caracteres
// copia a primeira frase para a segunda
strcpy(frase2, frase1);
// exibe o resultado
printf(frase2);
puts("\n\n");
system("PAUSE");
return 0;
}
|
Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como retornar o diretório atual em Delphi usando a função GetDir()Quantidade de visualizações: 13257 vezes |
Em algumas situações precisamos obter o diretório atual, ou seja, aquele a partir do qual nosso programa está sendo executado. Em Delphi isso pode ser feito com o auxílio da procedure GetDir(). Esta procedure requer um valor inteiro na faixa de 0 a 3 e uma string passada por referência. Em geral usamos o valor 0 no primeiro argumento para representar o drive padrão. Veja o exemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
diretorio_atual: string;
begin
// vamos obter o diretório atual e atribuí-lo
// na variável diretorio_atual
GetDir(0, diretorio_atual);
// vamos exibir o resultado
ShowMessage('O drive e diretório atual são: ' +
diretorio_atual);
end;
Ao executar este código nós teremos o seguinte resultado: O drive e diretório atual são: C:\Users\Osmar\Documents\RAD Studio\Projects Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
|
C - Como calcular a massa de um corpo dada sua energia cinética e sua velocidade usando a linguagem C |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





