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.

Java ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação orientada a objetos em Java - Como criar e usar interfaces em seus programas Java

Quantidade de visualizações: 12362 vezes
Muitos estudantes de Java torcem o nariz quando nós, professores e instrutores, tocamos no assunto de interfaces. Definitivamente este não é um tópico fácil de entender ao primeiro contato. Comecemos com uma analogia simples. É sabido que é cada vez maior o número de softwares sendo desenvolvidos em equipes, ou seja, o projeto do software é desmembrado e suas funcionalidades são implementadas por grupos diferentes de programadores.

Quando estamos desenvolvendo software em grupos de programadores, é comum desenvolvermos partes que dependem do trabalho de um outro grupo. E, nem sempre podemos esperar que uma parte da qual dependemos fique pronta para só então progredirmos.

Para isso, um contrato entre os grupos de programadores é firmado. E este contrato é o que chamamos de interface. Suponhamos que em um determinado momento meu grupo está desenvolvendo código que depende da parte de impressão, sendo desenvolvida por outro grupo. Todos se reúnem e decidimos quais funcionalidades a classe de impressão terá e quais métodos públicos serão disponibilizados. Feito isso, uma interface contendo a assinatura destes métodos é disponibilizada para todos e o desenvolvimento continua. Mais tarde, quando a classe de impressão estiver sendo desenvolvida, ela poderá implementar a interface anteriormente disponibilizada e tudo está resolvido.

Sendo assim, uma interface na linguagem de programação Java é um tipo referência, similar a uma classe. A diferença é que uma interface pode conter apenas constantes e assinaturas e métodos. Não há a implementação dos corpos dos métodos. Além disso, interfaces não podem ser instanciadas usando new. Veja o que acontece quando tentamos fazer isso (lembre-se de que List é interface):

import java.util.*;

public class Estudos{ 
  public static void main(String args[]){ 
    // cria um objeto da interface List
    List lista = new List();
  } 
}

Ao tentarmos compilar este código teremos a seguinte mensagem de erro:

Estudos.java:6: java.util.List is abstract; 
cannot be instantiated
    List lista = new List();
                 ^
1 error


Interfaces devem ser implementadas por classes ou extendidas por outras interfaces. Agora, um detalhe interessante. Se você verificar a API do Java, verá que a interface List é implementada pelas classes AbstractList, ArrayList, LinkedList e Vector. Desta forma, o código anterior pode ser modificado para:

import java.util.*;

public class Estudos{ 
  public static void main(String args[]){ 
    // cria um objeto da interface List
    List lista = new ArrayList();
  } 
}

Este código compila normalmente e fortalece nossa discussão a respeito da interface de impressão. O sistema inteiro pode fazer referências a uma interface e, para que ele funcione da forma esperada, só precisamos fornecer a classe que implementa a interface no momento de instanciar os objetos. Isso demonstra que o nome de uma interface pode ser usado em qualquer lugar no qual um tipo da classe que a implementa seja necessário.

Vamos ver agora como criar uma interface chamada Pessoa. Veja:

public interface Pessoa{
  public void setNome(String nome); 
  public String getNome();
}


Salve esta interface como Pessoa.java e a compile. Pronto! Esta interface já pode ser usada no sistema, contanto que todos do grupo tenham concordado com as assinaturas dos métodos. Agora observe uma classe Cliente que implementa esta interface:

public class Cliente implements Pessoa{ 
  private String nome;
  private int idade;

  public void setNome(String nome){
    this.nome = nome;
  } 

  public String getNome(){
    return this.nome;
  }
}

Salve este código como Cliente.java e o compile. O primeiro detalhe a observar é o uso da palavra-chave implements para mostrar que a classe implementa a interface Pessoa. Note também que a classe fornece implementação para todos os métodos da interface. Não seguir esta regra geraria o seguinte erro de compilação:

Cliente.java:1: Cliente is not abstract and 
does not override abstract method getNome() in 
Pessoa
public class Cliente implements Pessoa{
       ^
1 error


Em resumo, uma interface define um protocolo de comunicação entre dois objetos e pode conter, além das assinaturas dos métodos, constantes. Neste caso todas estas constantes serão implicitamente public, static e final. Mesmo que estes modificadores sejam omitidos.


Java ::: Classes e Componentes ::: JButton

Como definir a cor do texto de um botão JButton do Java Swing

Quantidade de visualizações: 9927 vezes
Nesta dica eu mostrarei como é possível definir a cor do texto de um componente JButton do Java Swing. Para isso nós usamos o método setForeground() da classe JButton, fornecendo a cor desejada, por exemplo, Color.RED.

Veja um exemplo Java Swing completo:

package arquivodecodigos;
 
import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
  public Estudos() {
    super("Estudos Swing");
     
    Container c = getContentPane();
    c.setLayout(new FlowLayout(FlowLayout.LEFT));
 
    // Cria um JButton com a cor do texto vermelho
    JButton btn1 = new JButton("Clique Aqui!");
    btn1.setForeground(Color.RED);
 
    // Cria um JButton com a cor de fundo verde
    JButton btn2 = new JButton("Clique Aqui!");
    btn2.setForeground(Color.GREEN);
 
    // Adiciona os botões à janela
    c.add(btn1);
    c.add(btn2);  
 
    setSize(350, 250);
    setVisible(true);
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}



JavaScript ::: URLs e Parâmetros de URLs ::: URLSearchParams

Como obter a quantidade de parâmetros em um objeto URLSearchParams do JavaScript

Quantidade de visualizações: 1210 vezes
Em algumas situações nós precisamos saber quantos parâmetros de URL foram informados em um objeto URLSearchParams. Para isso nós só precisamos converter o Map representado por URLSearchParams em um array bidimensional usando Array.from(). A partir daí é só chamar a propriedade length do array.

Veja o código completo para o exemplo:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  
<title>Acessando parâmetros de URL</title>
   
</head>
<body>
  
<script type="text/javascript">
  // vamos obter a URL atual e seus parâmetros GET
  var parametros = new URLSearchParams(window.location.search);
  window.alert("Quantidade de parâmetros: " + Array.from(parametros).length);
</script>
   
</body>
</html>

Ao executar este exemplo JavaScript com a URL:

http://localhost/estudos/index.php?nome=Osmar&idade=39

nós teremos uma mensagem window.alert() com o seguinte texto:

Quantidade de parâmetros: 2


Python ::: Python para Engenharia ::: Engenharia Civil - Concreto, Concreto Armado e Concretos Especiais

Cálculo de estribos em vigas de concreto armado usando Python - Verificação da compressão diagonal do concreto

Quantidade de visualizações: 1010 vezes
No dimensionamento de vigas de concreto armado à força cortante, ou seja, aos esforços de cisalhamento, nós adotamos, de acordo com recomendações da ABNT NBR 6118 (Projeto de estruturas de concreto armado), o modelo de treliça clássica de Ritter-Mörsh, na qual é suposto que uma carga aplicada num ponto qualquer de uma viga de concreto armado, chegue até os apoios percorrendo o caminho de uma treliça. Recordemos ainda que na treliça clássica de Ritter-Mörsh o ângulo de inclinação das bielas comprimidas é igual à 45°.

Neste modelo de treliça, a compressão do banzo superior é resistida pelo concreto, enquanto a tração do banzo inferior é resistida pelo aço. As diagonais comprimidas também são resistidas pelo concreto, cabendo ao aço (estribos) o papel de reforçar as diagonais tracionadas. Notem que usei "reforçar", pois o concreto oferece também uma parcela de resistência à tração nestas diagonais.

Sendo assim, um dos primeiros passos no cálculo e detalhamento das armaduras transversais, ou seja, a armadura de cisalhamento de uma viga de concreto armado, é a verificação da compressão diagonal do concreto. Neste passo nós verificamos se as bielas comprimidas resistem ao esforço cortante solicitante de projeto VSd.

A verificação da compressão diagonal do concreto no Modelo I (no qual o ângulo &#945;, que é o ângulo entre os estribos e o eixo longitudinal da viga, pode ser considerado entre 45º e 90º) pode ser realizada por meio da seguinte fórmula:

\[V_\text{Rd2} = 0,27 \cdot \alpha_\text{v2} \cdot f_\text{cd} \cdot b_w \cdot d \]
Onde:

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

bw é a largura da viga, em centímetros;

d é a altura útil da viga em centímetros;

Já o &#945;v2 pode ser calculado pela seguinte fórmula:

\[\alpha_\text{v2} = 1 - \frac{f_\text{ck}}{250}\]
Onde:

fck é a resistência característica do concreto, em Mpa.

Veja agora o código Python :

# método principal
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 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 FCK do concreto
  fck = float(input("Informe o FCK do concreto em Mpa: "))

  # vamos ler o coeficiente de minoração do concreto
  yc = float(input("Informe o coeficiente de minoração yc: "))   

  # vamos solicitar o esforço cortante solicitante VSk
  VSk = float(input("Informe o esforço cortante solicitante em kN: ")) 

  # vamos ler o coeficiente de majoração das cargas
  yf = float(input("Informe o coeficiente de majoração yf: "))

  # vamos calcular o esforço cortante solicitante de cálculo VSd
  VSd = yf * VSk

  # agora vamos calcular o fcd do concreto
  fcd = fck / yc

  # vamos calcular o alfa v2
  av2 = 1 - (fck / 250)

  # finalmente vamos calcular o VRd2 no Modelo de Cálculo I
  VRd2 = 0.27 * av2 * (fcd / 10) * largura * altura_util 

  # vamos mostrar os resultados
  print("\n------ RESULTADOS -----------------------------")
  print("O fcd do concreto é: {0} Mpa".format(round(fcd, 4)))
  print("O valor de av2 é: {0}".format(round(av2, 4)))
  print("O valor de VRd2 é: {0} kN".format(round(VRd2, 4)))
  print("O valor de VSd é: {0} kN".format(round(VSd, 4)))

  # vamos testar se as bielas de compressão não serão esmagadas
  if (VSd <= VRd2):
    print("VSd <= VRd2: As bielas de compressão RESISTEM")
  else:
    print("VSd > VRd2: As bielas de compressão NÃO RESISTEM")

if __name__ == "__main__":
  main()

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

Informe a altura h da viga em cm: 40
Informe a largura bw da viga em cm: 20
Informe o FCK do concreto em Mpa: 25
Informe o coeficiente de minoração yc: 1.4
Informe o esforço cortante solicitante em kN: 75
Informe o coeficiente de majoração yf: 1.4

------ RESULTADOS -----------------------------
O fcd do concreto é: 17.8571 Mpa
O valor de av2 é: 0.9
O valor de VRd2 é: 312.4286 kN
O valor de VSd é: 105.0 kN
VSd <= VRd2: As bielas de compressão RESISTEM


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 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 Apenas R$ 19,90


© 2026 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 39 usuários muito felizes estudando em nosso site.