Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.

Java ::: Design Patterns (Padrões de Projeto) ::: Singleton Pattern

Padrões de projeto para iniciantes - Como usar o padrão de projeto Singleton em suas aplicações Java

Quantidade de visualizações: 12091 vezes
O padrão de projeto Singleton (ou Singleton Pattern) é um dos padrões de projeto mais conhecidos e implementado extensivamente nas linguagens que suportam programação orientada a objetos, tais como Java e C#. Nesta dica eu mostrarei como implementá-lo.

Uma das situações nas quais usamos o padrão Singleton é quando queremos que somente uma instância de uma determinada classe seja criada e que esta esteja disponível para todas as demais classes do sistema. Um exemplo disso é uma classe responsável por registrar logs do sistema, uma classe responsável por obter conexões com o banco de dados, ou ainda uma classe que concentra dados de configuração da aplicação.

Assim, a chave do padrão Singleton é um método estático, geralmente chamado de getInstance(), que retorna uma nova instância da classe se esta ainda não foi instanciada. Se a classe já tiver sido instanciada, o método getInstance() retorna a instância já existente.

Vamos ver um exemplo deste padrão em Java. Observe o código a seguir:

Código para Logger.java:

package estudos;

// Uma classe Singleton responsável por gravar
// logs no sistema
public class Logger {
    // variável estática e privada que guarda a instância
    // atual da classe
    private static Logger instancia = null;

    // Método estático que retorna uma instância já existente, ou
    // cria uma nova instância
    public static Logger getInstance() {
        if (instancia == null) {
            instancia = new Logger();
        }
        return instancia;
    }

    // Construtor privado para evitar que instâncias sejam
    // criadas usando new
    private Logger() {
        // não precisamos fazer nada aqui
    }

    // método usado para registrar logs
    public void registrarLog(String dados) {
        System.out.println("Vou registrar o log: " + dados);
    }
}

Veja agora como podemos chamar o método getInstance(), obter um objeto da classe Logger e "registrar um log":

Código para Main.java:

package estudos;

public class Main {
  public static void main(String[] args) {
    // vamos registrar um novo log usando a classe Singleton
    Logger.getInstance().registrarLog("Novo usuário cadastrado.");
  }
}

Ao executar esta aplicação teremos a seguinte saída:

Vou registrar o log: Novo usuário cadastrado.


PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como retornar a quantidade de elementos em um array PHP usando a função sizeof()

Quantidade de visualizações: 17430 vezes
Em várias ocasiões nós precisamos retornar o tamanho de um vetor em PHP, ou seja, a quantidade de elementos do array. Para isso nós podemos usar a função sizeof().

Veja a seguir um exemplo de seu uso:

<?php
/*
  Este exemplo mostra como obter a quantidade de
  elementos em um array usando sizeof().
*/

$pessoas[0] = "Carlos";
$pessoas[1] = "Juliana";
$pessoas[2] = "Igor";
$pessoas[3] = "Marcelo";
$pessoas[4] = "Amélia";

$tam = sizeof($pessoas);

echo "O array contém " . $tam . " elementos.";
?>

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

O array contém 5 elementos.


Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como remover todos os espaços de uma string em Ruby usando a função delete

Quantidade de visualizações: 9210 vezes
Em alguns casos, pode ser necessário removermos todos os espaços de uma frase ou texto em Ruby. Isso pode ser feito com o auxílio do método delete() da classe String.

Veja o exemplo a seguir:

# declara e inicializa uma variável string
frase = "Gosto muito de Ruby"
puts "A frase original é: " + frase

# vamos remover todos os espaços
# veja que estamos alterando a string original
frase.delete!(" ")
puts "Com os espaços removidos: " + frase

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

A frase original é: Gosto muito de Ruby
Com os espaços removidos: GostomuitodeRuby


Firebird ::: Dicas & Truques ::: Strings e Caracteres

Como substituir valores em campos CHAR ou VARCHAR usando a função REPLACE() do Firebird

Quantidade de visualizações: 16064 vezes
A função REPLACE() do Firebird pode ser usada quando queremos substituir valores no conteúdo de um campo do tipo CHAR ou VARCHAR. Veja um exemplo de um comando SQL DML SELECT FROM no qual usamos a função REPLACE() para substituir todos os espaços por sublinhados (underline) em um campo chamado NOME de uma tabela CLIENTES:

SELECT REPLACE(NOME, ' ', '_') FROM CLIENTES WHERE ID = 1;

Esta query exibirá o seguinte resultado:

REPLACE
OSMAR_J._SILVA
A função REPLACE() pode ser usada em DSQL (Dynamic SQL) e PSQL (Stored procedure and trigger language).


Python ::: Pandas Python Library (Biblioteca Python Pandas) ::: Passos Iniciais

Como usar a biblioteca Pandas do Python em seus projetos de Data Science e Machine Learning

Quantidade de visualizações: 3138 vezes
A biblioteca Pandas foi criada por Wes McKinney em 2008 e, desde então, tem sido adotada em projetos que envolvem Big Data, Data Science, Data Mining, Machine Learning e até mesmo aplicações gerais de Inteligência Artificial (IA).

Esta biblioteca nos oferece funções para o trabalho com datasets (conjunto de dados). Tais funções permitem analisar, limpar, explorar e manipular dados. Isso faz todo sentido, visto que o nome Pandas é uma referência à "Panel Data" e "Python Data Analysis".

Já tenho o Pandas disponível na minha instalação do Python?

Antes de iniciar qualquer projeto que envolva a bilioteca Pandas, é importante verificar se a mesma está disponível em sua instalação do Python. Isso pode ser de várias formas. Mostrarei como obter a lista de módulos usando a opção "list" do pip. Basta abrir uma janela de terminal e disparar o seguinte comando:

C:\Users\Osmar>pip list

Você terá um resultado parecido com:

Package           Version
----------------- -------
astroid           2.4.2
colorama          0.4.4
isort             5.6.4
lazy-object-proxy 1.4.3
mccabe            0.6.1
numpy             1.19.4
pandas            1.1.5
Pillow            8.0.1
pip               20.2.3
pylint            2.6.0
python-dateutil   2.8.1
pytz              2020.4
setuptools        49.2.1
six               1.15.0
toml              0.10.2
wrapt             1.12.1
wxPython          4.1.1

Uma outra forma é tentando importar o módulo pandas. Veja:

# importamos a bibliteca Pandas
import pandas as pd

def main():
  # vamos mostrar a versão da biblioteca Pandas
  versao = pd.__version__

  print("A versão do Pandas é:", versao)

if __name__== "__main__":
  main()

Se você tiver o Pandas instalado, o resultado desse código será algo como:

A versão do Pandas é: 1.1.5

Se você não tiver a biblioteca Pandas instalada, a seguinte mensagem de erro será exibida:

Exception has occurred: ModuleNotFoundError
No module named 'pandas'
  File "C:\estudos_python\estudos.py", line 2, in <module>
    import pandas as pd

Não tenho o Pandas ainda. O que faço?

Abra uma janela de terminal e dispare o comando abaixo:

C:\Users\Osmar>pip install pandas

Depois de alguns segundos você verá o seguinte resultado:

Collecting pandas
  Downloading pandas-1.1.5-cp39-cp39-win_amd64.whl (8.9 MB)
     |-| 8.9 MB 1.7 MB/s
Collecting numpy>=1.15.4
  Downloading numpy-1.19.4-cp39-cp39-win_amd64.whl (13.0 MB)
     |-| 13.0 MB 3.3 MB/s
Collecting pytz>=2017.2
  Downloading pytz-2020.4-py2.py3-none-any.whl (509 kB)
     |-| 509 kB 6.4 MB/s
Collecting python-dateutil>=2.7.3
  Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
     |-| 227 kB 3.2 MB/s
Requirement already satisfied: six>=1.5 in 
c:\users\osmar\appdata\roaming\python\python39\site-packages
 (from python-dateutil>=2.7.3->pandas) (1.15.0)
Installing collected packages: numpy, pytz, 
python-dateutil, pandas
Successfully installed numpy-1.19.4 pandas-1.1.5 
python-dateutil-2.8.1 pytz-2020.4
WARNING: You are using pip version 20.2.3; however, 
version 20.3.1 is available.
You should consider upgrading via the 'c:\python_3_9_1\python.exe -m pip install 
--upgrade pip' command.

Obteve resultado parecido? Pronto! Você já pode começar a usar a biblioteca Pandas em seus aplicações Python.


Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como testar se uma string termina com uma determinada substring em Ruby usando uma função ends_with() personalizada

Quantidade de visualizações: 7075 vezes
O Ruby, até a versão 1.8.6 não dispõe de um método para verificar se uma string termina com uma determinada substring. Assim, veja abaixo como escrever uma função ends_with(). Esta função recebe a string e a substring e retorna true se a string terminar com a substring. Eis a listagem completa:

# função auxiliar que permite verificar se
# uma string termina com uma substring
def ends_with(string, substring)
  pos = string.length - substring.length
  
  if string.index(substring, pos) == pos   
    return true
  else
    return false
  end
end

# declara e inicializa uma variável string
frase = "Gosto muito de Java, PHP e Ruby"

# vamos verificar a string termina com "Ruby"
if ends_with(frase, "Ruby")
  puts "A string termina com \"Ruby\""
else
  puts "A string NÃO termina com \"Ruby\""
end

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

A string termina com "Ruby"


Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid

Como usar a propriedade Alignment da classe TColumn para alinhar o conteúdo das células do TDBGrid do Delphi

Quantidade de visualizações: 12081 vezes
O conteúdo de cada coluna, ou seja, todas as células de uma determinada coluna, pode ser alinhado por meio da propriedade Alignment da classe TColumn. Esta propriedade aceita um de três valores (pertencentes à enumeração Classes.TAlignment):

taLeftJustify - o texto é alinhado à esquerda;

taCenter - o texto é alinhado ao centro;

taRightJustify - o texto é alinhado à direita.

O valor para esta propriedade pode ser definido em tempo de design ou execução. Para definir o alinhamento do conteúdo de uma coluna em tempo de design, basta clicar com o botão direito no DBGrid e escolher a opção Columns Editor. Em seguida clique na coluna desejada e vá em sua propriedade Alignment no Object Inspector.

Em tempo de execução podemos definir o alinhamento para um determinada coluna do DBGrid usando o seguinte trecho de código:

procedure TForm3.Button3Click(Sender: TObject);
begin
  // vamos alinhar ao centro o conteúdo das células da
  // primeira coluna
  DBGrid1.Columns[0].Alignment := TAlignment.taCenter;
end;

Veja que neste trecho de código eu usei TAlignment.taCenter. Esta é uma boa forma de indicar no código de onde o valor taCenter está vindo. No entanto, o Delphi permite que se omita o nome da enumeração TAlignment.

Esta dica foi escrita e testada no Delphi 2009.


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

Como calcular o cosseno de um ângulo em LISP e AutoLISP (AutoCAD) usando a função cos() - Calculadora de cosseno em LISP

Quantidade de visualizações: 875 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno 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 cosseno. 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 cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

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

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

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da Common Lisp e da AutoLISP (a implementação LISP do AutoCAD). Esta função recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja:

(format t "Cosseno de 0 = ~F~%" (cos 0))
(format t "Cosseno de 1 = ~F~%" (cos 1))
(format t "Cosseno de 2 = ~F" (cos 2))

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

Cosseno de 0 = 1.0
Cosseno de 1 = 0.5403023
Cosseno de 2 = -0.41614684

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




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

Como excluir um arquivo em Java usando o método delete() da classe File - Curso de Java para iniciantes

Quantidade de visualizações: 234 vezes
Nesta dica mostrarei como podemos usar o método delete() da classe File da linguagem Java para excluir um arquivo no computador local. Se o arquivo for excluído com sucesso, o retorna será true, e false em caso contrário.

Veja o código completo para o exemplo:

package arquivodecodigos;

import java.io.*;
 
public class Estudos{
  public static void main(String[] args){
    File arquivo = new File("C:\\estudos_java\\osmar.txt");
         
    if(arquivo.delete()){
      System.out.println("Arquivo excluido com sucesso.");
    }
    else{
      System.out.println("Não foi possivel excluir o arquivo");
    }
  }
}

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

Arquivo excluido com sucesso.


JavaScript ::: Dicas & Truques ::: Cookies

Cookies em JavaScript - Como excluir um cookie usando JavaScript

Quantidade de visualizações: 143 vezes
Nesta dica mostrarei como podemos escrever uma função JavaScript excluirCookie() que recebe o nome do cookie e o remove do navegador. Em alguns browsers pode ser necessário reiniciar para que o cookie seja realmente excluído. Note que coloquei também uma função obterCookie() que permite verificar se o cookie foi realmente excluído.

Veja o código JavaScript completo, incluindo o código HTML da página de teste:

<html>
<head>
<title>Estudando JavaScript</title>

<script type="text/javascript">
  // função que permite excluir um cookie. Pode
  // ser necessário reiniciar o navegador
  function excluirCookie(nome){
    var exdate = new Date();
    exdate.setTime(exdate.getTime() + (-1 * 24 * 3600 
       * 1000));
    document.cookie = nome + "=" + escape("")+ ((-1 
       == null) ? "" : "; expires=" + exdate);
  }  

  // função que permite obter um cookie
  function obterCookie(nome){    
    if(document.cookie.length > 0){
      c_start = document.cookie.indexOf(nome + "=");
      if(c_start != -1){ 
        c_start = c_start + nome.length + 1; 
        c_end = document.cookie.indexOf(";", c_start);
        if(c_end == -1){
          c_end = document.cookie.length;
        }
        
        return unescape(document.cookie.substring(
          c_start, c_end));
      } 
    }
    return null;
  }
</script>

</head>
<body>

<script type="text/javascript">
  // vamos excluir o cookie
  excluirCookie('nome_visitante');  

  // verifica se o cookie "nome_visitante" existe
  // e obtém seu valor
  var nome_visitante = obterCookie('nome_visitante');
  
  if(nome_visitante != null){
    document.writeln("O cookie nome_visitante existe. " + 
      "Seu valor é: " + nome_visitante);
  }
  else{
    document.writeln("O cookie nome_visitante não existe");
  }
</script>
 
</body>
</html>

Ao executar este código, sabendo que o cookie "nome_visitante" existia anteriormente, nós teremos o seguinte resultado:

O cookie nome_visitante não existe

Carregar Publicações Anteriores


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 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
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

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


© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 45 usuários muito felizes estudando em nosso site.