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.

Você está aqui: Cards de Engenharia Civil - Construção Civil
Card 1 de 28
Fases de uma obra

A Planta de Localização (escala usual 1:200) identifica a posição da obra no terreno. Serve para implantar o projeto.

Filtrar Cards
Use esta opção para filtrar os cards pelos tópicos que mais lhe interessam.
Termos:
Aviso Importante: Nos esforçamos muito para que o conteúdo dos cards e dos testes e conhecimento seja o mais correto possível. No entanto, entendemos que erros podem ocorrer. Caso isso aconteça, pedimos desculpas e estamos à disposição para as devidas correções. Além disso, o conteúdo aqui apresentado é fruto de conhecimento nosso e de pesquisas na internet e livros. Caso você encontre algum conteúdo que não deveria estar aqui, por favor, nos comunique pelos e-mails exibidos nas opções de contato.
Link para compartilhar na Internet ou com seus amigos:

C++ ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Como alocar memória dinâmica usando o operador new do C++

Quantidade de visualizações: 12862 vezes
Em algumas situações precisamos alocar memória dinamicamente. Em C++ isso é feito com o auxílio do operador new. Este operador permite alocar uma determinada quantidade de bytes, alinhados de forma a representar o objeto para o qual queremos reservar memória.

Veja um exemplo de código no qual alocamos memória dinâmica para uma variável do tipo int:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // aloca memória para um objeto do tipo int
  int *ponteiro = new int;

  // vamos definir o valor para o objeto recém-alocado
  *ponteiro = 20;

  // vamos exibir seu valor
  cout << *ponteiro << endl;

  // vamos liberar a memória
  delete ponteiro;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Note que aqui a memória foi alocada e guardada em um ponteiro. Veja também o uso do operador delete para liberar a memória alocada. Isso evita os vazamentos de memória tão frequentes em aplicações que lidam com a memória dinâmica.

É claro que este não é o exemplo mais prático. Qual a vantagem de se alocar memória para um int? Declarar uma variável teria sido mais eficiente.

A alocação de memória dinâmica é mais útil quando estamos lidando com objetos mais complexos que os tipos básicos. Alguns exemplos envolvem a criação de objetos de classes, matrizes, estruturas de dados, etc.

Veja um exemplo no qual temos uma declaração de uma classe chamada Cliente e em seguida alocamos memória para uma instância desta classe:

#include <iostream>
#include <string>

using namespace std;

// declaração da classe Cliente
class Cliente{
  public:
    Cliente();
    string obterNome();
    void definirNome(string);
  private:
    string nome;
};

// implementação dos métodos da classe
Cliente::Cliente(){} // construtor vazio

// obtém o nome do cliente
string Cliente::obterNome(){
  return this->nome;
}

// define o nome do cliente
void Cliente::definirNome(string nome){
  this->nome = nome;
}

int main(int argc, char *argv[]){
  // aloca memória para um objeto da classe Cliente
  Cliente *c = new Cliente();

  // vamos definir o nome do cliente
  c->definirNome("Osmar J. Silva");

  // vamos exibir o nome do cliente
  cout << c->obterNome() << endl;

  // vamos liberar a memória usada
  delete c;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Nome do cliente: Osmar J. Silva


Python ::: Tkinter GUI Toolkit ::: Círculos, Ovais e Elípses

Como desenhar círculos no Tkinter usando a função create_oval() do componente Canvas

Quantidade de visualizações: 1618 vezes
Em várias situações nós precisamos desenhar círculos não preenchidos e preenchidos em Tkinter. Para isso nós podemos usar a função create_oval() do componente Canvas.

Em sua forma mais simples, a função create_oval() requer as coordenadas x e y a partir das quais o círculo ou elípse será desenhada e a largura e a altura do retângulo dentro do qual o círculo estará contido. Para desenhar uma oval ou elípse, basta manipular a largura ou altura desse retângulo.

Veja um trecho de código no qual usamos a função create_oval() para desenhar um círculo com 5 pixels de largura da linha de desenho:

# vamos importar o módulo Tkinter
from tkinter import *
from tkinter.ttk import *
 
# método principal
def main():
  # cria a janela principal da aplicação
  janela_principal = Tk() 
  
  # define as dimensões da janela
  janela_principal.geometry("400x350")
  
  # define o título da janela
  janela_principal.title("Uso do controle Canvas")
 
  # vamos criar o objeto Canvas
  canvas = Canvas(janela_principal, bg="white", width=400, height=350)
 
  # colocamos o Canvas na janela principal
  canvas.grid(row=0, column=0)
 
  # agora vamos desenhar um círculo no Canvas começando nas
  # coordenadas x=20 e y=30 centro de um retângulo de largura
  # 150 pixels por uma altura de 150 pixels e largura da linha
  # de 5 pixels
  canvas.create_oval(20, 30, 150, 150, width="5")
 
  # entramos no loop de eventos 
  janela_principal.mainloop()
 
if __name__== "__main__":
  main()

Note que a largura da linha de desenho foi informada por meio do parâmetro width. Se quisermos definir também a cor da linha do desenho, basta usarmos o parâmetro outline e fornecer a cor desejada.


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

Como calcular o seno de um número ou ângulo em Delphi usando a função Sin()

Quantidade de visualizações: 13460 vezes
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula:

\[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \]

Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função Sin() da linguagem Delphi. Esta função, incorporada por padrão à linguagem, recebe um valor numérico (Extended) e retorna um valor Extended, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Add('Seno de 0 = ' + FloatToStr(Sin(0)));
  Memo1.Lines.Add('Seno de 1 = ' + FloatToStr(Sin(1)));
  Memo1.Lines.Add('Seno de 2 = ' + FloatToStr(Sin(2)));
end;

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

Seno de 0 = 0
Seno de 1 = 0,841470984807897
Seno de 2 = 0,909297426825682

Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo:




Ruby ::: Dicas & Truques ::: Data e Hora

Como usar a classe Date do Ruby em seus programas

Quantidade de visualizações: 8205 vezes
A classe Date da linguagem Ruby representa datas. Ela o faz trabalhando com anos, meses, semanas e dias. Tenha em mente que, ao usar a classe Date não temos acesso a nada relacionado a horas, minutos ou segundos.

Internamente, uma data é representada como um número: ajd (Astronomical Julian Day Number). O dia da reforma do calendário (Day of Calendar Reform), sg, também é armazenado, para conversões para outros formatos de datas (há também um campo chamado "of" para a diferença de fuso horário, mas este é usado somente na subclasse DateTime).

Um novo objeto Date é criado usando-se um dos métodos de criação de objetos da classe. E tais métodos recebem nomes de acordo com o formato de data. Além disso, os argumentos fornecidos devem obedecer ao formato de data desejado, por exemplo, Date::civil() (apelido para Date::new()) com ano, mês e dia do ano, ou Date::ordinal() com ano e dia do ano. Todos estes métodos de criação de objetos da classe também aceitam o dia da reforma do calendário (Day of Calendar Reform) como um argumento opcional.

Objetos Date são imutáveis após sua criação.

Após criarmos um objeto Date, valores de data podem ser obtidos para os diferentes formatos de data suportados usando métodos de instância. Por exemplo, mon() retorna o mês civil, cwday() retorna o dia comercial da semana, e yday() retorna o dia ordinal do ano. Valores Date podem ser obtidos em qualquer formato, independente de qual formato foi usado para criar a instância do objeto.

A classe Date inclui o módulo Comparable, o que permite que objetos Date possam ser comparados e ordenados, faixas de datas possam ser criadas e assim por diante.

Veja no trecho de código abaixo como podemos criar um objeto Date representando a data atual:

# importa o módulo date
require 'date'

# obtém a data de hoje
hoje = Date.today

# exibe o resultado
puts "Hoje é " + hoje.strftime("%e/%m/%Y")



C# ::: Windows Forms ::: ListBox

Como excluir todos os itens selecionados em uma ListBox de múltipla seleção do C# Windows Forms

Quantidade de visualizações: 11774 vezes
Em algumas situações precisamos remover todos os itens selecionados em uma ListBox. Nesta dica mostrarei como isso pode ser feito.

Comece criando uma ListBox com o nome listBox1 e adicione o código abaixo no evento Click de um botão:

private void button1_Click(object sender, EventArgs e){
  // vamos adicionar alguns itens na ListBox
  listBox1.Items.Add("Java");
  listBox1.Items.Add("C++");
  listBox1.Items.Add("Delphi");
  listBox1.Items.Add("Python");
  listBox1.Items.Add("VB.NET");

  // vamos definir a seleção da lista como seleção múltipla
  listBox1.SelectionMode = SelectionMode.MultiExtended;
}

Em seguida coloque o trecho de código abaixo no evento Click de um segundo botão:

private void button2_Click(object sender, EventArgs e){
  // vamos obter a lista de itens selecionados
  ListBox.SelectedObjectCollection selecionados = 
    new ListBox.SelectedObjectCollection(listBox1);
  
  // vamos excluir todos os itens selecionados
  for(int i = selecionados.Count - 1; i >= 0; i--){
    listBox1.Items.Remove(selecionados[i]);
  }
}

Execute a aplicação e clique no primeiro botão. Isso fará com que alguns itens sejam inseridos na lista e seu modo de seleção seja definido como seleção múltipla. Agora selecione alguns itens e clique no segundo botão. Você verá que os itens selecionados são automaticamente excluídos.

O primeiro passo foi obter um objeto da classe ListBox.SelectedObjectCollection contendo apenas os itens selecionados na ListBox. Em seguida nós usamos um laço for para percorrer os itens do objeto ListBox.SelectedObjectCollection e fornecer o índice de cada item selecionado ao método Remove() da coleção de itens da ListBox. Esta coleção é uma instância da classe ListBox.ObjectCollection.

Há uma segunda forma de se excluir todos os itens da ListBox sem usar um objeto da classe ListBox.SelectedObjectCollection. Tudo que precisamos fazer é combinar os métodos GetSelected() da classe ListBox e o método RemoveAt() da coleção de itens (objeto da classe ListBox.ObjectCollection):

private void button2_Click(object sender, EventArgs e){
  // vamos excluir todos os itens selecionados
  for(int i = listBox1.Items.Count - 1; i >= 0; i--){
    // o item está selecionado?
    if(listBox1.GetSelected(i)){
      listBox1.Items.RemoveAt(i);
    }
  }
}



Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

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