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 Cards de Hidrologia
Card 1 de 75
O regime de escoamento laminar

O regime laminar na hidrologia refere-se ao tipo de fluxo de água que ocorre em um corpo d'água, como um rio ou um lago, onde o movimento da água é suave e ordenado. Nesse regime, as camadas de água deslizam umas sobre as outras de maneira paralela, sem causar turbulência.

Esse tipo de fluxo é caracterizado por um baixo número de Reynolds, o que significa que a viscosidade da água é predominante em relação às forças inerciais. O regime laminar é comum em águas calmas ou em seções de rios com baixa inclinação e velocidade de fluxo.

O entendimento do regime laminar é importante para a modelagem de transporte de sedimentos, a qualidade da água e a gestão de recursos hídricos, pois influencia a dinâmica do ecossistema aquático e a erosão das margens.

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:

MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial

Como adicionar uma chave primária a uma tabela MySQL usando o comando ALTER TABLE ADD PRIMARY KEY

Quantidade de visualizações: 8695 vezes
Em algumas situações poderá ocorrer a necessidade, talvez por motivos de manutenção na base de dados, de criar uma chave primária para uma tabela MySQL já existente. Isso pode ser feito com o auxílio do comando DDL ALTER TABLE ADD PRIMARY KEY.

Comece criando uma tabela livros sem chave primária. Veja o comando CREATE TABLE:

CREATE TABLE livros(
  id int(11) unsigned NOT NULL,
  titulo varchar(45) NOT NULL,
  paginas int(10) unsigned NOT NULL
)ENGINE=InnoDB;

Se dispararmos um comando DESCRIBE livros veremos a seguinte estrutura:

Field     Type               Null     Key    Default   Extra    
id        int(11) unsigned   NO       -      -         -      
titulo    varchar(45)        NO       -      -         -      
paginas   int(10) unsigned   NO       -      -         -
Como podemos ver, a tabela livros realmente não possui uma chave primária. Sendo assim, vamos usar o comando ALTER TABLE ADD PRIMARY KEY para adicionar uma chave primária ao campo id. Veja:

ALTER TABLE livros ADD PRIMARY KEY(id);

Dispare o comando DESCRIBE livros novamente e veja o resultado. Agora o campo id está marcado como chave primária:

Field     Type               Null     Key    Default   Extra    
id        int(11) unsigned   NO       PRI    -         -      
titulo    varchar(45)        NO       -      -         -      
paginas   int(10) unsigned   NO       -      -         -



C ::: Desafios e Lista de Exercícios Resolvidos ::: Matemática e Estatística

Exercício Resolvido de C - Escreva um programa C que pede um número inteiro e informa se o número informado é um número de Armstrong

Quantidade de visualizações: 1323 vezes
Pergunta/Tarefa:

Um número é chamado de número de Armstrong quando a soma de cada um dos seus dígitos, elevado à quantidade de dígitos do número, equivale ao próprio número. Por exemplo, 153 e 93084 são números de Armstrong, já que:

153 = 13 + 53 + 33
93084 = 95 + 35 + 05 + 85 + 45

Escreva um programa C que pede para o usuário informar um número inteiro e informa se o número informado é um número de Armstrong ou não. Seu código deve usar apenas os operadores matemáticos disponíveis na linguagem C.

Sua saída deverá ser parecida com:

Informe um número inteiro: 153
O número informado é um número de Armstrong
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>

int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int numero, quant_digitos = 0, temp, resto, soma = 0;
	
  setlocale(LC_ALL,""); // para acentos do português

  // vamos pedir para o usuário informar um número
  printf("Informe um número inteiro: ");
  scanf("%d", &numero);
	  
  // o primeiro passo é obter a quantidade de dígitos que o número informado
  // possui
  temp = numero;
  while(temp != 0) {
    quant_digitos = quant_digitos + 1;
    temp = temp / 10;
  }
    
  // agora efetuamos o cálculo que verifica se o número é um número
  // de Armstrong ou não
  temp = numero;
  while(temp > 0){
    resto = temp % 10;
    soma = soma + (int)(pow(resto, quant_digitos));
    temp = temp / 10;
  }

  if(soma == numero){
    printf("O número informado é um número de Armstrong");
  }
  else{
    printf("O número informado não é um número de Armstrong");
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



Java ::: Coleções (Collections) ::: HashSet

Java Collections - Como usar a classe HashSet em seus programas Java

Quantidade de visualizações: 5742 vezes
A classe HashSet, no pacote java.util, é uma classe concreta que implementa a interface Set. Na maioria das vezes nós usamos objetos desta classe para armazenar elementos não duplicados (ainda que o elemento null seja permitido). Veja sua posição na hierarquia de classes da plataforma Java:

java.lang.Object
  java.util.AbstractCollection<E>
    java.util.AbstractSet<E>
      java.util.HashSet<E>
Esta classe implementa as interfaces Serializable, Cloneable, Iterable<E>, Collection<E> e Set<E> e suas sub-classes diretas são JobStateReasons, LinkedHashSet.

Veja um trecho de código no qual inserimos cinco elementos do tipo String em um HashSet e os listamos em seguida:

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 Strings neste conjunto
    conjunto.add(null); // o elemento null é permitido
    conjunto.add("Marcos");
    conjunto.add("Osmar");
    conjunto.add("Osmar"); // elemento duplicado aqui
    conjunto.add("Fernanda");
    
    // vamos exibir os elementos
    Iterator iterator = conjunto.iterator();
    while(iterator.hasNext()){
      System.out.println(iterator.next());
    }
  }
}

Ao executarmos este código teremos o seguinte resultado:

null
Fernanda
Marcos
Abel
Osmar
Veja que, embora tenhamos inserido a string "Osmar" duas vezes, o HashSet a armazenou somente uma vez. Outro detalhe é que esta classe raramente retornará os elementos na ordem em que eles foram inseridos.


JavaScript ::: Web APIs (APIs Web) ::: MediaDevices Interface (Interface MediaDevices)

Como acessar as mídias do usuário em JavaScript usando a função getUserMedia() da interface MediaDevices

Quantidade de visualizações: 3301 vezes
O método getUserMedia() da interface MediaDevices nos permite acessar as entradas de mídias do usuários, tais como áudio e vídeo. Isso facilita o desenvolvimento de aplicações muito interessantes, a saber, tirar foto usando a webcam, gravar áudio a partir do microfone, gravar vídeo a partir da webcam, etc.

No entanto, antes de usar o MediaStream retornado pelo método getUserMedia(), é importante saber que o usuário deverá dar a sua permissão. Assim, sempre que o método getUserMedia() é chamado, uma janela de informação é mostrada para que o usuário concorde ou não em permitir o acesso às suas mídias.

Veja, por exemplo, como solicitar acesso à webcam/câmera do usuário:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 
<title>A interface MediaDevices</title>
  
</head>
<body>

<script type="text/javascript">
  async function obterMediaUsuario(){
    // vamos obter o stream
    var stream = null;
    try{
      stream = await navigator.mediaDevices.getUserMedia({video: true});
      window.alert("A mídia para vídeo foi obtida com sucesso.");
      // agora podemos fazer algo com o stream aqui
    }
    catch(erro){
      window.alert("Houve um erro: " + erro);
    }  
  }
  
  // o browser suporta o MediaDevices?
  if(navigator.mediaDevices){
    obterMediaUsuario()
  }
  else{
    window.alert("O navegador não suporta o MediaDevices");  
  }
</script> 
  
</body>
</html>

Veja que usamos uma função assíncrona para getUserMedia(). Isso é necessário porque esta função retorna uma Promise que, em caso de sucesso, será convertida em um objeto MediaStream. Se o usuário não permitir o acesso, um erro do tipo NotAllowedError ou NotFoundError será retornado.

Alguns navegadores só permitem o uso do método getUserMedia() em ambiente seguro HTTPS ou localhost.

Em mais dicas dessa seção você verá como tirar proveito do MediaStream retornado pela função getUserMedia() e também como tratar melhor os erros retornados.


C++ ::: Win32 API (Windows API) ::: Processos

Como usar a função EnumProcesses() da WinAPI em seus códigos C++ para obter os identificadores de cada processo ativo no Windows

Quantidade de visualizações: 8972 vezes
A função EnumProcesses() pode ser usada quando queremos obter os ids de todos os processos sendo executados no momento no Windows. Veja o protótipo desta função:

BOOL WINAPI EnumProcesses(
  DWORD* pProcessIds,
  DWORD cb,
  DWORD* pBytesReturned
);


Esta função possui três parâmetros:

a) DWORD* pProcessIds - Um ponteiro para uma matriz que receberá a lista de identificadores dos processos. É importante definir uma matriz um pouco grande, visto que não sabemos de antemão quantos processos serão retornados.

b) DWORD cb - O tamanho da matriz pProcessIds em bytes.

c) DWORD* pBytesReturned - O números de bytes retornados na matriz pProcessIds. Podemos facilmente saber quantos processos foram encontrados simplesmente dividindo o número de bytes retornados pela quantidade de bytes em um DWORD.

Veja um trecho de código no qual listamos os ids de todos os processos sendo executados atualmente.

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <psapi.h>

/*
  Este exemplo usa o header <psapi.h>
  É necessário fazer uma referência à psapi.lib 
*/

using namespace std;

int main(int argc, char *argv[]){
  DWORD processos[1024]; // vamos listar até 1024 processos   
  DWORD pBytesReturned; // bytes retornados pela função EnumProcesses()
  
  // vamos listar os processos
  EnumProcesses(processos, sizeof(processos), &pBytesReturned);
  
  // quantidade de processos retornados
  int retornados = pBytesReturned / sizeof(DWORD);
  
  // agora vamos listar os ids dos processos retornados
  for(int i = 0; i < retornados; i++){
    if(!processos[i] == 0){
      cout << "Processo " << (i + 1) << ": " << processos[i] << endl;
    }          
  }
  
  system("PAUSE");
  return EXIT_SUCCESS;
} 

O id de um processo pode ser fornecido para muitas funções úteis do Windows, entre elas OpenProcess().

Veja um trecho de código no qual fechamos (forçadamente) um processo mediante o fornecimento de seu id:

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
  // vamos fechar o processo com o id 3040
  
  // CUIDADO: Verifique o id do processo antes de fechá-lo
  // pode ser que você esteja fechando processos essenciais
  // para o bom funcionamento do Windows
  
  // vamos abrir o processo desejado
  // vai retornar ERROR_INVALID_HANDLE se o processo não
  // puder ser aberto
  HANDLE hProcesso = OpenProcess(PROCESS_TERMINATE, 0, 3040);

  // vamos fechar o processo
  if(TerminateProcess(hProcesso, 0)){
    cout << "Processo finalizado com sucesso." << endl; 
  }
  else{
    cout << "Erro ao finalizar o processo: " << 
      GetLastError() << endl;   
  }

  // vamos fechar o handle do processo
  CloseHandle(hProcesso);
  
  system("PAUSE");
  return EXIT_SUCCESS;
}



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