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:

C# ::: Dicas & Truques ::: Arquivos e Diretórios

Como renomear um diretório em C# usando o método MoveTo() da classe DirectoryInfo

Quantidade de visualizações: 10334 vezes
Nesta dica mostrarei como podemos usar a função MoveTo() da classe DirectoryInfo para renomear um diretório na linguagem C#. Note que, na verdade, o que o método MoveTo() faz é mover todo o conteúdo de um diretório (incluindo seu conteúdo) para um novo diretório, o que dá o mesmo resultado que simplesmente renomear o diretório antigo.

Veja um exemplo completo de seu uso:

using System;
using System.IO;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // vamos criar uma instância da classe DirectoryInfo
      DirectoryInfo dir = new DirectoryInfo(@"C:\estudos_csharp\teste");
      try {
        // vamos chamar o método MoveTo() para renomear o diretório
        dir.MoveTo(@"C:\estudos_csharp\teste_2");
        Console.WriteLine("Diretório renomeado com sucesso.");
      }
      catch (Exception e) {
        Console.WriteLine("Não foi possível renomear o diretório: {0}", e.ToString());
      }
      finally { }

      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

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

Diretório renomeado com sucesso.


C ::: Estruturas de Dados ::: Lista Ligada Simples

Estruturas de Dados em C - Como remover um nó no final de uma lista ligada simples em C - Listas encadeadas em C

Quantidade de visualizações: 2521 vezes
Nesta dica mostraremos como é possível excluir o nó no fim (o último nó) de uma lista encadeada simples (singly linked list) em C. Veja a função:

// função que permite remover um nó no fim
// da lista, ou seja, o último nó da lista.
// A função retorna um ponteiro para o início da lista
struct No *remover_final(struct No *inicio){
  struct No *n; // nó que será removido
  
  // nó que antecede o nó a ser removido. Isso
  // faz sentido, já que ele será o último nó
  // agora
  struct No *anterior;
  n = inicio; // aponta para o início da lista
  
  // varremos os nós da lista e paramos um nó antes do
  // nó a ser excluído
  while(n->proximo != NULL){
    anterior = n; // anterior assume o lugar de n
    n = n->proximo; // e n assume o seu próximo  
  }
  
  // anterior passa a ser o último nó agora
  anterior->proximo = NULL;
  
  // mostra o nó removido
  printf("\nNo removido: %d\n", n->valor);
  
  free(n); // libera o nó que antes era o último
  
  return inicio;
} 

Note que a função recebe um ponteiro para o início da lista e retorna também um ponteiro para o início da lista. Tenha o cuidado de verificar se a lista não está vazia antes de tentar fazer a exclusão. No exemplo eu fiz isso na função main(). Veja a listagem completa abaixo:

#include <stdio.h>
#include <stdlib.h>
 
// estrutura Nó
struct No{
  int valor;
  struct No *proximo;
};
// fim da estrutura Nó
 
// função que permite exibir os valores de
// todos os nós da lista
void exibir(struct No *n){
  if(n != NULL){
    do{
      printf("%d\n", n->valor);
      n = n->proximo;
    }while(n != NULL);
  }
  else
    printf("A lista esta vazia\n\n");
}
 
// função que permite remover um nó no fim
// da lista, ou seja, o último nó da lista.
// A função retorna um ponteiro para o início da lista
struct No *remover_final(struct No *inicio){
  struct No *n; // nó que será removido
  
  // nó que antecede o nó a ser removido. Isso
  // faz sentido, já que ele será o último nó
  // agora
  struct No *anterior;
  n = inicio; // aponta para o início da lista
  
  // varremos os nós da lista e paramos um nó antes do
  // nó a ser excluído
  while(n->proximo != NULL){
    anterior = n; // anterior assume o lugar de n
    n = n->proximo; // e n assume o seu próximo  
  }
  
  // anterior passa a ser o último nó agora
  anterior->proximo = NULL;
  
  // mostra o nó removido
  printf("\nNo removido: %d\n", n->valor);
  
  free(n); // libera o nó que antes era o último
  
  return inicio;
} 
 
// função que permite inserir nós no
// final da lista.
// veja que a função recebe o valor a ser
// armazenado em cada nó e um ponteiro para o
// início da lista. A função retorna um
// ponteiro para o início da lista
struct No *inserir_final(struct No *n, int v){
  // reserva memória para o novo nó
  struct No *novo = (struct No*)malloc(sizeof(struct No));
  novo->valor = v;
 
  // verifica se a lista está vazia
  if(n == NULL){
    // é o primeiro nó...não deve apontar para
    // lugar nenhum
    novo->proximo = NULL;
    return novo; // vamos retornar o novo nó como sendo o início da lista
  }
  else{ // não está vazia....vamos inserir o nó no final
    // o primeiro passo é chegarmos ao final da lista
    struct No *temp = n; // vamos obter uma referência ao primeiro nó
    // vamos varrer a lista até chegarmos ao último nó
    while(temp->proximo != NULL){
      temp = temp->proximo;
    }
    // na saída do laço temp aponta para o último nó da lista
   
    // novo será o último nó da lista...o campo próximo dele deve
    // apontar para NULL
    novo->proximo = NULL;
    // vamos fazer o último nó apontar para o nó recém-criado
    temp->proximo = novo;
    return n; // vamos retornar o início da lista intacto
  }
}
 
int main(int argc, char *argv[])
{
  // declara a lista
  struct No *inicio = NULL;
 
  // vamos inserir quatro valores no final
  // da lista
  inicio = inserir_final(inicio, 45);
  inicio = inserir_final(inicio, 3);
  inicio = inserir_final(inicio, 98);
  inicio = inserir_final(inicio, 47);
 
  // vamos exibir o resultado
  printf("Valores presentes na lista ligada antes da remocao:\n");
  exibir(inicio);
 
  // vamos remover o nó no fim da lista
  if(inicio != NULL){
    inicio = remover_final(inicio);
  }
  
  // vamos exibir o resultado
  printf("\nValores presentes na lista ligada apos a remocao:\n");
  exibir(inicio);
  
  system("pause");
  return 0;
}

Ao executar esse código você terá o seguinte resultado:

Valores presentes na lista ligada antes da remocao:
45
3
98
47

No removido: 47

Valores presentes na lista ligada apos a remocao:
45
3
98

Pressione qualquer tecla para continuar. . .



PHP ::: Fundamentos da Linguagem ::: Variáveis e Constantes

Apostila PHP para iniciantes - Como usar constantes na linguagem PHP

Quantidade de visualizações: 12505 vezes
Como acontece na maioria das linguagens de programação, o PHP também permite o uso de constantes. Como o próprio nome diz, constantes são inicializadas uma vez e não podem ter seus valores alterados durante a execução do programa.

A definição de constantes em PHP segue as mesmas regras de nomeação de variáveis, com a exceção de que constantes não possuem o símbolo $ e são geralmente escritas em letras maiúsculas.

Diferente de variáveis, constantes, uma vez definidas, são acessadas globalmente. Não há a necessidade de redeclará-las em cada nova função ou arquivo.

A síntaxe de definição de uma constante é:

define("CONSTANT_NAME", value [, case_sensitivity])

onde:

a) CONSTANT_NAME é o nome da constante;

b) value é o valor atribuído à constante. Não é possível atribuir arrays nem objetos à constantes;

c) case_sensitivity permite definir se o nome da constante será tratado igualmente se referenciado usando letras maiúsculas ou minúsculas. O valor padrão é true, o que quer dizer que "VALOR" e "Valor" serão tratados como uma única constante.

REVISÃO: Revisando este código no PHP 8 eu percebi que o terceiro argumento (case_sensitivity) não é mais suportado, e gera um aviso do tipo:

Warning: define(): Argument #3 ($case_insensitive) is ignored since declaration of case-insensitive constants is no longer supported in...

Veja um exemplo de declaração e uso de constantes em PHP:

<?
  // declara uma constante com o nome MODO e valor 2
  define("MODO", 2);
  echo "O valor definido é: " . MODO; 
?>

Veja agora o que acontece quando tentamos modificar o valor de uma variável do tipo constante:

<?
  // declara uma constante com o nome MODO e valor 2
  define("MODO", 2);
  
  // vamos tentar alterar o valor da constante
  MODO = 10;
?>

Este código gera a seguinte mensagem de erro:

Parse error: syntax error, unexpected token "=" in...


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Ordenação e Pesquisa (Busca)

Exercícios Resolvidos de Python - Como usar a Ordenação da Bolha em Python para ordenar os valores de um vetor em ordem crescente ou decrescente

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

A Ordenação da Bolha, ou ordenação por flutuação (literalmente "por bolha"), também chamada de Bubble Sort, é um algoritmo de ordenação dos mais simples. A ideia é percorrer o array diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequência. Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo.

No melhor caso, o algoritmo executa n operações relevantes, onde n representa o número de elementos do vetor. No pior caso, são feitas n2 operações. A complexidade desse algoritmo é de ordem quadrática. Por isso, ele não é recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.

Escreva um programa Python que declara, constrói um vetor de 10 inteiros e peça para o usuário informar os valores de seus elementos. Em seguida use a ordenação da bolha para ordenar os elementos em ordem crescente.

Sua saída deverá ser parecida com:

Informe o valor para o índice 0: 84
Informe o valor para o índice 1: 23
Informe o valor para o índice 2: 9
Informe o valor para o índice 3: 5
Informe o valor para o índice 4: 11
Informe o valor para o índice 5: 3
Informe o valor para o índice 6: 50
Informe o valor para o índice 7: 7
Informe o valor para o índice 8: 2
Informe o valor para o índice 9: 73

O array informado foi:

84   23   9   5   11   3   50   7   2   73   

O array ordenado é:

2   3   5   7   9   11   23   50   73   84
Resposta/Solução:

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

# função principal do programa
def main():
  # vamos declarar e construir um vetor de 10 elementos
  valores = [0 for x in range(10)]
  	  
  # vamos pedir que o usuário informe os valores
  for i in range(0, len(valores)):
    valores[i] = int(input("Informe o valor para o índice {0}: ".format(i)))
    
  # vamos mostrar o vetor informado
  print("\nO array informado foi:\n\n")
  for i in range(0, len(valores)):
    print(valores[i], end="   ")
    
  # vamos ordenar os elementos do vetor usando a ordenação da bolha
  # laço externo de trás para frente
  for i in range(len(valores) - 1, 0, -1):
    for j in range(0, i): # laço interno vai no fluxo normal
      if valores[j] > valores[j + 1]: # temos que trocá-los de lugar 
        temp = valores[j]
        valores[j] = valores[j + 1]
        valores[j + 1] = temp
    
  # vamos exibir o vetor já ordenado
  print("\n\nO array ordenado é:\n\n")
  for i in range(0, len(valores)):
    print(valores[i], end="   ")
  
  print("\n")

if __name__== "__main__":
  main()



Ruby ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções

Como criar métodos que aceitam um número variável de argumentos em Ruby

Quantidade de visualizações: 8481 vezes
Como criar uma função que aceita um número variável de argumentos em Ruby

É muito fácil criar métodos que aceitam um número variável de argumentos na linguagem Ruby. Tudo que temos que fazer é fornecer um parâmetro antecedido por um asterisco. Se mais parâmetros forem fornecidos, aquele que contém o asterisco deverá vir no final da lista. Veja um exemplo:

# Um método que aceita um número variável de
# argumentos
def somar(*args)
   total = 0
   
   args.each do | arg |
      total = total + arg
   end
    
   return total 
end
 
# Usa o método com 3 argumentos
puts(somar(3, 4, 2))

# Usa o método com 2 argumentos
puts(somar(10, 20))

# Usa o método com 1 argumento
puts(somar(5))

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

9
30
5

Neste exemplo eu dei o nome args para o parâmetro com asterisco, mas podemos usar qualquer nome.


Desafios, Exercícios e Algoritmos Resolvidos de Ruby

Veja mais Dicas e truques de Ruby

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.