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.

PHP ::: Dicas & Truques ::: Data e Hora

Como verificar se um ano é bissexto usando PHP

Quantidade de visualizações: 7 vezes
Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da terra e com os eventos sazonais relacionados às estações do ano.

Na linguagem PHP podemos verificar se um ano é bissexto checando o valor retornado por date("L"). Se o valor retornado for "1", então o ano é bissexto. Observe que, em PHP, o valor 1 é considerado true (verdadeiro).

Veja um trecho de código completo no qual testamos se um determinado ano é bissexto ou não:

<html>
<head>
  <title>Estudos PHP</title>
</head>
 
<body>

<?php  
  // função que verifica se o ano é bissexto
  function ano_bissexto($ano){  
    return (date('L', mktime(0, 0, 0, 1, 1, $ano)) == 1);  
  }  

  // agora vamos testar a função
  $ano = 2020;
  if(ano_bissexto($ano)){
    echo "O ano $ano é bissexto";
  }
  else{
    echo "O ano $ano não é bissexto";
  }
?>  

</body>
</html>

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

O ano 2020 é bissexto


C++ ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação Orientada a Objetos em C++ - Como usar construtores em suas classes C++

Quantidade de visualizações: 16448 vezes
Quando um objeto de uma classe C++ é criado, a linguagem chama um construtor para tal classe. Se nenhum construtor estiver definido, um construtor padrão é invocado. Este construtor aloca memória para o objeto, mas não o inicializa.

Um construtor é um método que definimos em nossas classes C++ e que possui o mesmo nome da classe. Um construtor não possui tipo de retorno e não retorna nenhum valor. Em geral construtores são públicos, mas, é possível termos construtores privados. Neste caso, somente um método estático da classe poderia criar novos objetos da classe (quando puder dê uma olhada no padrão de projeto Singleton).

O uso mais frequente dos métodos construtores é quando queremos inicializar valores das variáveis e demais recursos no momento da criação de uma nova instância da classe. Esta é uma técnica útil, visto que não precisamos dispor de esforço extra para inicializar as variáveis de instância de um objeto, individualmente, após sua criação.

Vamos ver um exemplo da definição e uso de construtores em uma classe C++? Comece analisando o código para o arquivo de definição da classe Pessoa:

Código para Pessoa.h:

// vamos evitar múltiplas inclusões do
// arquivo de cabeçalho (header file)
#ifndef PESSOA_H
#define PESSOA_H

// vamos incluir o header string
#include <string>

using namespace std;

class Pessoa{
  public:
    // construtor da classe Pessoa
    Pessoa(string, string, int);
    // método que permite retornar o nome da pessoa
    string getNome();
    // método que permite retornar o e-mail da pessoa
    string getEmail();
    // método que permite retornar a idade da pessoa
    int getIdade();
  private:
    // variáveis privadas
    string nome;
    string email;
    int idade;      
};

#endif

Veja a assinatura do método construtor:

Pessoa(string, string, int);

Note que na lista de parâmetros do construtor não precisamos informar os nomes dos parâmetros, apenas seus tipos. Veja agora o arquivo de implementação para esta classe:

Código para Pessoa.cpp:

// arquivo de implementação para a 
// classe Pessoa

// vamos incluir o header Pessoa.h
#include "Pessoa.h"

// implementação do construtor
Pessoa::Pessoa(string nome, string email, int idade){
  this->nome = nome;
  this->email = email;
  this->idade = idade;
}

// método que permite obter o nome da pessoa
string Pessoa::getNome(){
  return this->nome;                  
}

// método que permite obter o email da pessoa
string Pessoa::getEmail(){
  return this->email;                  
}  

// método que permite obter a idade da pessoa
int Pessoa::getIdade(){
  return this->idade;                  
}    

Note que na implementação do método construtor nós recebemos os argumentos para os parâmetros e os usamos para inicializar as variáveis privadas da instância da classe. Observe o uso do ponteiro this para nos referirmos à instância atual da classe Pessoa.

Finalmente, veja o código para o método main() do programa. É aqui que criamos um novo objeto da classe Pessoa e usamos seu método construtor para inicializar suas variáveis privadas de uma só vez:

Código para main.cpp:

#include <cstdlib>
#include <iostream>

// vamos incluir a classe Pessoa
#include "Pessoa.h"

using namespace std;

int main(int argc, char *argv[])
{
    // vamos criar um novo objeto da classe Pessoa
    Pessoa *p = new Pessoa("Osmar J. Silva", 
      "osmar@arquivodecodigos.net", 38);    
    
    // vamos exibir os dados da pessoa
    cout << "Nome: " << p->getNome() << endl;
    cout << "E-Mail: " << p->getEmail() << endl;
    cout << "Idade: " << p->getIdade() << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Além do construtor, uma classe C++ possui também um método destrutor. Veja minhas dicas relacionadas a este assunto para aprender como definir e usar destrutores em suas classes C++.


Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca

Como percorrer uma árvore binária em Java usando o algorítmo depth-first search (DFS) recursivo

Quantidade de visualizações: 1319 vezes
Nesta dica mostrarei como podemos implementar o algorítmo da Busca em Profundidade (DFS, do inglês depth-first search) em Java de forma recursiva. Em outra dica desta seção que mostrei como fazer a mesma travessia de forma iterativa e usando uma pilha para backtracking (retrocesso).

Antes de iniciarmos, veja a árvore binária que vamos usar no exemplo:



Note que esta árvore possui seis nós. O nó 5 é o nó raiz, e possui como filhos os nós 4 e 9. O nó 4, por sua vez, possui apenas um filho, o nó 2, ou seja, o filho da esquerda. O nó 9 possui dois filhos: o nó 3 é o filho da esquerda e o nó 12 é o filho da direita. Os filhos da árvore binária que não possuem outros filhos são chamados de folhas.

Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n).

Vamos à implementação? Veja o código para a classe No, que representa um nó na árvore binária:

// implementação da classe No
class No{
  public int valor; // o valor do nó
  public No esquerdo; // o filho da esquerda
  public No direito; // o filho da direita
  
  public No(int valor){
    this.valor = valor;
    this.esquerdo = null;
    this.direito = null;
  }
}

Veja agora o código completo para o exemplo. Note que estamos usando recursividade nesta dica. Observe também o uso de uma ArrayList para guardar os valores da árvore binária na ordem depth-first.

Eis o código:

package estudos;

import java.util.ArrayList;

// implementação da classe No
class No{
  public int valor; // o valor do nó
  public No esquerdo; // o filho da esquerda
  public No direito; // o filho da direita
  
  public No(int valor){
    this.valor = valor;
    this.esquerdo = null;
    this.direito = null;
  }
}

public class Estudos{
  public static void main(String[] args){
    // vamos criar os nós da árvore
    No cinco = new No(5); // será a raiz da árvore
    No quatro = new No(4);
    No nove = new No(9);
    No dois = new No(2);
    No tres = new No(3);
    No doze = new No(12);
    
    // vamos fazer a ligação entre os nós
    cinco.esquerdo = quatro;
    cinco.direito = nove;
    quatro.esquerdo = dois;
    nove.esquerdo = tres;
    nove.direito = doze;
    
    // agora já podemos efetuar o percurso depth-first
    ArrayList<Integer> valores = new ArrayList<>();
    percursoDepthFirst(valores, cinco);
    System.out.println("Os valores na ordem Depth-First são: " + valores);
  }
  
  public static void percursoDepthFirst(ArrayList<Integer> valores, No no){
    if(no != null){
      // vamos adicionar o valor deste nó no ArrayList
      valores.add(no.valor);
   
      // passamos para o filho esquerdo
      percursoDepthFirst(valores, no.esquerdo);
      // passamos para o filho direito
      percursoDepthFirst(valores, no.direito);
    }
  }
}

Ao executarmos este código Java nós teremos o seguinte resultado:

Os valores na ordem Depth-First são: [5, 4, 2, 9, 3, 12]

Compare estes valores com a imagem vista anteriormente para entender ainda melhor o percurso ou busca Depth-First.


C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios

Como obter o diretório atual usando a função GetCurrentDirectory() da API do Windows - C++ e WinAPI

Quantidade de visualizações: 10293 vezes
Nesta dica mostrarei como chamar, a partir de um programa C++, a função GetCurrentDirectory() da API do Windows com o propósito de obter o diretório atual, ou seja, o diretório de trabalho da nossa aplicação. Esta função é declarada no header winbase.h (que vem junto quando fazemos include do header windows.h).

Veja o exemplo completo:

#include <cstdlib>
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  // buffer que receberá o nome do diretório
  TCHAR szDirAtual[MAX_PATH];
 
  // chama a função GetCurrentDirectory
  GetCurrentDirectory(MAX_PATH, szDirAtual);
 
  // Exibe o resultado
  cout << "O diretório atual é " << szDirAtual << "\n\n";
 
  system("PAUSE");
  return EXIT_SUCCESS;
}

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

O diretório atual é C:\estudos_c++


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