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.

Delphi ::: Dicas & Truques ::: Recursão (Recursividade)

Como calcular fatorial em Delphi usando recursividade

Quantidade de visualizações: 13640 vezes
O fatorial de um determinado número, representado por n! equivale a multiplicar este número por seus antecessores. Assim, o fatorial de 4 (4!) pode ser calculado da seguinte forma:

4 x 3 x 2 x 1 = 24

Sempre que falamos de recursão, o cálculo de fatorial nos auxilia na exemplicação por ser relativamente fácil de se entender todas as etapas do processo. O código abaixo mostra uma função recursiva em Delphi que calcula o fatorial de qualquer número. Tenha cuidado. Calcular o fatorial de um número maior que 10 pode tornar sua máquina extremamente lenta, além de, muitas vezes, não retornar os resultados esperados.

// função recursiva para calcular o fatorial
// de um determinado número
function fatorial(n: Integer): Integer;
begin
  if n = 0 then
    Result := 1
  else
    Result := n * fatorial(n - 1);
end;

// vamos chamar a função recursiva
// a partir do Click de um botão
procedure TForm1.Button1Click(Sender: TObject);
var
  res: Integer;
begin
  // vamos calcular o fatorial de 5
  res := fatorial(5);

  // vamos mostrar o resultado
  ShowMessage('O fatorial de 5 é: ' + IntToStr(res));
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Java ::: Coleções (Collections) ::: Set (Conjunto)

Java Collections - Como usar a interface Set em seus códigos Java

Quantidade de visualizações: 5649 vezes
A interface Set estende a interface Collection mas não adiciona novos métodos ou constantes. Em vez disso, esta interface define que uma instância de Set não contenha elementos duplicados. Esta responsabilidade é transferida para as classes que implementam a interface.

A classe abstrata AbstractSet é uma classe de conveniência que herda da classe também abstrata AbstractCollection e implementa a interface Set. A classe AbstractSet fornece implementações concretas para os métodos equals() e hashCode(). Estes métodos permitem a funcionalidade da não permissão de elementos duplicados nos conjuntos.

As classes concretas mais conhecidas da interface Set são:

HashSet - Esta classe é implementada em cima de uma tabela hash, ou seja, um array (matriz) na qual os elementos são armazenados em posições calculadas de acordo com o seu conteúdo. Uma característica interessante de HashSet é que os elementos raramente são retornados na mesma ordem na qual foram inseridos.

LinkedHashSet - Esta classe estende a classe HashSet com uma implementação de lista ligada (linked list) que permite a ordenação dos elementos no conjunto.

TreeSet - Esta classe é uma classe concreta que implementa a interface SortedSet. A interface SortedSet é uma sub-interface de Set que garante que os elementos no conjunto estejam ordenados. Além disso, esta interface fornece os métodos first() e last() para acessar o primeiro e o último elemento do conjunto. Há ainda os métodos headSet(toElement) e tailSet(fromElement) para retornar uma faixa do conjunto cujos elementos sejam "menores" que toElement e "maiores" que fromElement.

Seja qual for a implementação de Set que você queira usar, é sempre uma boa idéia codificar em cima da interface. Isso facilita a troca de HashSet por TreeSet ou vice-versa sem grandes modificações no seu código.

Veja um exemplo no qual usamos a classe concreta HashSet para representar um conjunto de cinco strings únicas:

package estudos;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Estudos{
  public static void main(String[] args) {
    // vamos criar uma instância da classe HashSet
    Set<String> conjunto = new HashSet<>();
    
    // vamos inserir cinco elementos no Set
    conjunto.add("Açucar");
    conjunto.add("Macarrão");
    conjunto.add("Feijão");
    conjunto.add("Carne");
    conjunto.add("Maionese");
    
    // vamos exibir os elementos inseridos
    Iterator iterator = conjunto.iterator();
    while(iterator.hasNext()){
      System.out.println(iterator.next());
    }
  }
}


Ao executar este trecho de código teremos um resultado parecido com:

Macarrão
Feijão
Carne
Açucar
Maionese

Note que raramente os elementos serão exibidos na ordem na qual eles foram inseridos. Experimente agora trocar a linha:

Set<String> conjunto = new HashSet<>();

por

Set<String> conjunto = new LinkedHashSet<>();

Execute o código novamente e verá que agora os elementos são exibidos na mesma ordem que foram inseridos.


Python ::: wxPython ::: Janelas, Diálogos, Formulários e Painéis do wxPython

Python wxPython - Como criar janelas GUI em Python usando a classe wx.Frame do wxPython

Quantidade de visualizações: 12246 vezes
Em wxPython, um frame é o nome dado ao que o usuário do programa geralmente chama de "janela". Um frame é um contâiner que o usuário pode mover livremente na tela, e que geralmente inclui artifícios tais como uma barra de títulos, uma barra de menus, e sinalizadores de redimensionamento nas bordas e cantos. A classe wx.Frame é a classe pai de todos os frames em wxPython.Há também algumas subclasses especializadas de wx.Frame que podemos usar em nossos programas.

Quando fazemos subclasse de wx.Frame, o método __init__() de nossa classe deverá chamar o construtor da classe pai wx.Frame.__init__(). A assinatura deste construtor é assim:

wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,
  size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,
  name="frame")
Este construtor aceita vários parâmetros. Em uso normal, contudo, alguns dos valores padrões são perfeitamente aceitáveis.

Veja a seguir alguns parâmetros importantes do construtor __init__() da classe wx.Frame:


  • parent - A janela pai do frame que está sendo criado. Para janelas top-level, o valor é None. Se outra janela é usada para o parâmetro parente, então o novo frame pertencerá a esta janela e será destruído juntamente com seu pai. Dependendo da plataforma, o novo frame poderá ter restrições no sentido de somente aparecer no topo da janela pai. No caso de uma janela filha MDI, a nova janela terá restrições e somente poderá ser movida e redimensionada dentro da janela pai.

  • id - O número ID wxPython para a nova janela. Podemos fornecer um explicitamente ou fornecer -1, o que fará com que o wxPython gere um novo ID automaticamente.

  • title - O título da janela. Geralmente o título é exibido na barra de títulos da janela.

  • pos - Um objeto wx.Point especificando o local na tela no qual o canto superior esquerdo da janela deverá estar. Como é de praxe em aplicações gráficas, o ponto (0, 0) está no canto superior esquerdo do monitor. O valor padrão é (-1, -1), que faz com o sistema operacional decida a melhor posição para a janela.

  • size - Um objeto wx.Size definindo o tamanho inicial da janela. O padrão é (-1, -1), que faz com que o sistema operacional decida o melhor tamanho para a janela.

  • style - Uma máscara de bits (bitmask) de constantes determinando o estilo da janela. Podemos usar o operador bitware or (|) para combinar os estilos fornecidos.

  • name - Um nome interno dado ao frame e usado no Motif para definir valores de recursos. Pode também ser usado para encontrar a janela por nome mais tarde.


Veja a seguir um modo muito comum de se chamar o construtor __init__() da classe wx.Frame:

import wx

class MinhaJanela(wx.Frame):    
  def __init__(self):
    super().__init__(parent=None, title="Minha Janela",
      size=(350, 250))
    self.Show()

if __name__ == '__main__':
  app = wx.App()
  minhaJanela = MinhaJanela()
  app.MainLoop()

Este código vai gerar a janela mostrada na figura abaixo:




C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o comprimento da hipotenusa em C dadas as medidas do cateto oposto e do cateto adjascente

Quantidade de visualizações: 2189 vezes
Nesta dica mostrarei como é possível usar a linguagem C para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos a fazer a converter esta fórmula para código C. Veja:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]){
  float a = 20; // medida do cateto oposto
  float b = 30; // medida do cateto adjascente
  
  // agora vamos calcular o comprimento da hipotenusa
  float c = sqrt(pow(a, 2) + pow(b, 2));
 
  // e mostramos o resultado
  printf("O comprimento da hipotenusa é: %f", c);
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

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

O comprimento da hipotenusa é: 36.055511

Como podemos ver, o resultado retornado com o código C confere com os valores da imagem apresentada.


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