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 Python
Card 1 de 2
A indentação é mesmo obrigatória em Python?

Sim, a linguagem Python exige o uso da indentação como forma de formar blocos de código.

O interpretador Python é informado que um grupo de instruções pertence a um bloco específico por meio da indentação. Em geral, programadores Python usam um ou dois caracteres de tabulação (tecla Tab) como forma de indentar seus blocos de código.

Em todas as linguagens de programação a indentação facilita a leitura e compreensão do código escrito, porém, em Python, ela é um requisito obrigatório.

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:

Java ::: Fundamentos da Linguagem ::: Estruturas de Controle

Java para iniciantes - Como criar laços for infinitos em Java

Quantidade de visualizações: 9859 vezes
Laços for infinitos em Java podem ser criado da seguinte forma:

for(;;){
  // bloco de instruções
}

Veja um exemplo:

import javax.swing.JOptionPane;

public class Estudos{
  public static void main(String[] args) {
    int valor;
    int soma = 0;

    // Lê continuamente até o usuário informar 0
    for(;;){
      // efetua a próxima leitura
      String str = JOptionPane.showInputDialog(null,
        "Informe um valor inteiro:\n(ou 0 para sair)",
         "Estudos", JOptionPane.QUESTION_MESSAGE);

      valor = Integer.parseInt(str);
  
      // testa se o laço pode ser finalizado
      if(valor == 0)
        break;
 
      soma += valor;
    }

    JOptionPane.showMessageDialog(null, "A soma é: " + soma,
       "Estudos", JOptionPane.INFORMATION_MESSAGE);
  }
}

Sempre que criar laços infinitos, tenha a certeza de fornecer um teste de parada dentro do corpo do laço. Do contrário seu programa só poderá ser interrompido matando-se o processo.


HTML5 ::: Aplicativos Completos ::: Programas de desenho, edição e visualização de imagens e fotos

Como criar um programa de desenho simples usando o objeto Canvas do HTML5

Quantidade de visualizações: 7874 vezes
Revisando alguns códigos que desenvolvi para clientes ao longo desses anos, encontrei um exemplo de um programa de desenho bem simples demonstrando as possibilidades gráficas do elemento Canvas do HTML. Este código foi escrito há uns dois anos e resolvi compartilhar com todos, para que vocês possam aprimorá-lo e acrescentar novas idéias, afinal, o HTML5 está mais atual do que nunca.

Veja o resultado no navegador:



Eu o escrevi de forma bem simples, sem usar jQuery ou qualquer outro framework, apenas JavaScript raiz mesmo, de forma que até os estudantes mais iniciantes não terão dificuldade de entender. Veja a listagem completa e com comentários:

<html>
<head>
<title>Desenhando no canvas do HTML5</title>
</head>

<body style="padding: 15px">

<b>Clique e arraste para desenhar</b><br><br>

<canvas id="quadro" style="border: 1px solid #666" 
  width="600" height="350"></canvas>

<br><br><button onClick="limpar()">Limpar</button>

<script type="text/javascript">
  // obtém uma referência ao canvas
  var quadro = document.getElementById('quadro');
  // vamos obter o contexto de desenho
  var areaDesenho = quadro.getContext("2d");
  
  // podemos desenhar?
  var podeDesenhar = false; // ainda não
  
  // vetores para guardar as posições x, y, e se o mouse está sendo
  // movimentado pressionado
  var vetorX = new Array();
  var vetorY = new Array();
  var vetorArrastar = new Array();
  
  // agora vamos adicionar na área de desenho um "ouvidor" de 
  // eventos mousedown, ou seja, vamos detectar quando o usuário
  // pressionar o botão do mouse (sem soltar) 
  quadro.addEventListener('mousedown', function(e){
    // podemos iniciar o desenho
    podeDesenhar = true;
    registrarClique(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, false);
    desenhar(); // faça o desenho, moço
  });
  
  // o "ouvidor" de evento que detecta se o mouse está sendo arrastado
  // pressionado
  quadro.addEventListener('mousemove', function(e){	
    if(podeDesenhar){
      registrarClique(e.pageX - this.offsetLeft, e.pageY - 
        this.offsetTop, true);
      desenhar(); // faça o desenho, moço
    }
  });

  // o "ouvidor" de evento que detecta se o mouse foi liberado
  // e interrompe o desenho
  quadro.addEventListener('mouseup', function(e){	
    podeDesenhar = false;
  });

  // o mouse saiu da área de desenho?
  quadro.addEventListener('mouseleave', function(e){	
    podeDesenhar = false;
  });

  function registrarClique(x, y, arrastar){
    // aqui nós guardamos em vetores as posições x, y do clique ou
    // o movimento do mouse pressionado.
    vetorX.push(x);
    vetorY.push(y);
    vetorArrastar.push(arrastar);
  }
  
  // é aqui que a mágica ocorre
  function desenhar(){
    // primeiro vamos limpar o quadro de desenho
    areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, 
      areaDesenho.canvas.height);
	
    areaDesenho.strokeStyle = "#5c5cd6"; // cor
    areaDesenho.lineJoin = "round"; // formato da junção de linha
    areaDesenho.lineWidth = 5; // largura da linha
			
    // percorremos os vetores, usando como base o vetor de coordenadas x
    for(var i = 0; i < vetorX.length; i++){		
      areaDesenho.beginPath(); // inicia o caminho
    
      // o mouse foi arrastado neste evento?
      if((vetorArrastar[i] == true && i > 0)){
        areaDesenho.moveTo(vetorX[i - 1], vetorY[i - 1]);
      }
      else{
        // é o início do desenho
        areaDesenho.moveTo(vetorX[i] - 1, vetorY[i]);
      }
     
      // desenha a linha do ponto X ao ponto Y  
      areaDesenho.lineTo(vetorX[i], vetorY[i]);
      // fecha o caminho
      areaDesenho.closePath();
      // conclui de fato o desenho
      areaDesenho.stroke();
    }  
  }
  
  // e aqui nós limpamos a área de desenho e esvaziamos os vetores
  function limpar(){
    areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, 
      areaDesenho.canvas.height);
    vetorX = [];
    vetorY = [];
    vetorArrastar = [];
  }
</script>

</body>
</html>

Salve o código como "desenho.html" (cuidado para não salvar como "desenho.html.txt") e abra-o no seu navegador, remoto ou localmente. Você pode começar suas modificações alterando a cor do desenho, a largura da linha, etc. Você pode também deixar figuras pré-configuradas e até permitir que o usuário inclua fotos no Canvas.

Para os estudantes que já sabem Node.js, saiba que é possível enviar os três vetores via sockets em um ambiente real time para que outros usuários na rede vejam o seu desenho em tempo real. Bons estudos.


Delphi ::: Dicas & Truques ::: Arquivos e Diretórios

Como renomear um arquivo em Delphi usando a função RenameFile()

Quantidade de visualizações: 22893 vezes
Em algumas situações nossas aplicações precisam renomear arquivos. Em Delphi isso pode ser feito com o auxílio da função RenameFile(), presente na unit SysUtils. Esta função requer o caminho e nome do arquivo a ser renomeado e o novo nome e caminho. O retorno será true se a operação for realizada com sucesso e false em caso contrário. Veja o exemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
  arquivo_original, novo_arquivo: string;
begin
  // diretorio e nome do arquivo original
  arquivo_original := 'C:\arquivo de codigos\dados.txt';

  // diretorio e nome do novo arquivo
  novo_arquivo := 'C:\arquivo de codigos\dados2.txt';

  // vamos renomear o arquivo
  if RenameFile(arquivo_original, novo_arquivo) then
    ShowMessage('O arquivo foi renomeado com sucesso')
  else
    ShowMessage('Não foi possível renomear o arquivo');
end;

Observe que não é possível renomear um arquivo de forma que seu caminho possua drives diferentes. Para estes casos é recomendável que você copie o arquivo para o drive desejado e exclua o arquivo anterior.

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


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca

Exercícios Resolvidos de Java - Travessia de uma árvore binária de busca usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica)

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

O percurso em ordem (em-ordem, in-order, In-ordem ou ordem simétrica) é usado quando queremos exibir os valores dos nós da árvore binária de busca em ordem ascendente.

Neste tipo de percurso nós visitamos primeiramente a sub-árvore da esquerda, então o nó atual e finalmente a sub-árvore à direita do nó atual. É importante notar que esta travessia é feita por meio de uma função recursiva.

Escreva um programa Java que contenha uma árvore binária de busca cujos nós guardarão, além das referências para o filho esquerdo e o filho direito, apenas um valor inteiro. Forneça uma função inserir() que permitirá inserir os valores na árvore. Em seguida forneça uma função recursiva que permitirá fazer a travessia in-order da árvore.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 7
Informe um valor inteiro: 3
Informe um valor inteiro: 18
Informe um valor inteiro: 4
Informe um valor inteiro: 9

Percurso em ordem:
3 4 7 9 18
Resposta/Solução:

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

Código para NoArvore.java:

package estudos;

public class NoArvore {
  int valor; // valor armazenado no nó
  NoArvore esquerdo; // filho esquerdo
  NoArvore direito; // filho direito

  // construtor do nó
  public NoArvore(int valor){
    this.valor = valor;
  }
}

Código para ArvoreBinariaBusca.java:

package estudos;

public class ArvoreBinariaBusca {
  private NoArvore raiz; // referência para a raiz da árvore
  
  // método usado para inserir um novo nó na árvore
  // retorna true se o nó for inserido com sucesso e false
  // se o elemento não puder ser inserido (no caso de já
  // existir um elemento igual)
  public boolean inserir(int valor){
    // a árvore ainda está vazia?
    if(raiz == null){
      // vamos criar o primeiro nó e definí-lo como a raiz da árvore
      raiz = new NoArvore(valor); // cria um novo nó
    }
    else{
      // localiza o nó pai
      NoArvore pai = null;
      NoArvore noAtual = raiz; // começa a busca pela raiz
 
      // enquanto o nó atual for diferente de null
      while(noAtual != null){
        if(valor < noAtual.valor) {
          pai = noAtual;
          noAtual = noAtual.esquerdo;
        }
        else if(valor > noAtual.valor){
          pai = noAtual;
          noAtual = noAtual.direito;
        }
        else{
          return false; // um nó com este valor foi encontrado
        }
      }
       
      // cria o novo nó e o adiciona ao nó pai
      if(valor < pai.valor){
         pai.esquerdo = new NoArvore(valor);
      }
      else{
        pai.direito = new NoArvore(valor);
      }
    }

    return true; // retorna true para indicar que o novo nó 
    // foi inserido
  }
  
  // método que permite disparar a travessia em-ordem
  public void emOrdem(){
    emOrdem(raiz);
  }

  // sobrecarga do método emOrdem com uma parâmetro (esta é a
  // versão recursiva do método)
  private void emOrdem(NoArvore raiz){
    if(raiz == null){ // condição de parada
      return;
    }
    
    // visita a sub-árvore da esquerda
    emOrdem(raiz.esquerdo);
    // visita o nó atual
    System.out.print(raiz.valor + " ");
    // visita a sub-árvore da direita
    emOrdem(raiz.direito);
  }
}

E aqui está o código para a classe que permite testar a árvore:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
      
    // vamos criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
   
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
      
      // vamos inserir o nó e verificar o sucesso da operação
      if(!arvore.inserir(valor)){
        System.out.println("Erro. Um elemento já contém este valor.");  
      }
    }
    
    // vamos exibir os nós da árvore usando o percurso em ordem
    System.out.println("\nPercurso em ordem:");
    arvore.emOrdem();
    
    System.out.println("\n");
  }
}



VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: VisuAlg Básico

Exercícios Resolvidos de VisuAlg - Quantidade de patas dos animais de uma fazenda - O desafio da fazenda em VisuAlg

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

Para este exercício você foi contratado(a) para informar a quantidade total de patas dos animais de uma fazenda. O fazendeiro cria três espécies de animais:

Galinhas = 2 patas
Vacas = 4 patas
Porcos = 4 patas

O funcionário responsável pela fazenda contou os animais e forneceu a você a quantidade de animais de cada espécie (galinhas, vacas e porcos). Sua tarefa é retornar o número total de patas de todos os animais da fazenda.

Sua saída deve ser parecida com:

Informe a quantidade de galinhas: 8
Informe a quantidade de vacas: 3
Informe a quantidade de porcos: 11
Quantidade de animais: 22
Quantidade de patas: 72
Resposta/Solução:

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

algoritmo "Desafio da fazenda em VisuAlg"

var
  // variáveis usadas na resolução do problema
  quant_galinhas, quant_vacas, quant_porcos: inteiro
  quant_total_animais, quant_patas_total: inteiro
  
inicio
  // vamos ler a quantidade de cada animal
  escreva("Informe a quantidade de galinhas: ")
  leia(quant_galinhas)
  escreva("Informe a quantidade de vacas: ")
  leia(quant_vacas)
  escreva("Informe a quantidade de porcos: ")
  leia(quant_porcos)

  // vamos calcular a quantidade de animais
  quant_total_animais <- quant_galinhas + quant_vacas + quant_porcos
  escreval("Quantidade de animais: ", quant_total_animais)

  // vamos calcular a quantidade de patas
  quant_patas_total <- quant_galinhas * 2
  quant_patas_total <- quant_patas_total + (quant_vacas * 4)
  quant_patas_total <- quant_patas_total + (quant_porcos * 4)
  escreval("Quantidade de patas: ", quant_patas_total)

fimalgoritmo



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de VisuAlg

Veja mais Dicas e truques de VisuAlg

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