Java - Classes e Componentes - JComboBox |
Mais Dicas e Truques de Programação |
Delphi ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como usar nil para testar ou indicar que um ponteiro Delphi não referencia nenhuma posição de memóriaQuantidade de visualizações: 13393 vezes |
O propósito dos ponteiros é nos permitir acessar e manipular os valores de outras variáveis. Isso é feito acessando-se diretamente o endereço de memória destas variáveis. Porém, há situações nas quais queremos testar se um determinado ponteiro está realmente apontando para um local na memória. Veja o seguinte trecho de código:procedure TForm1.Button1Click(Sender: TObject); var pvalor: ^integer; begin // vamos exibir o valor da variável referenciada pelo // ponteiro pvalor ShowMessage(IntToStr(pvalor^)); end; Ao executarmos este código nós teremos um valor aleatório sendo exibido (e um warning do tipo W1036 Variable 'pvalor' might not have been initialized. Isso acontece porque criamos um ponteiro para um Integer mas não indicamos o endereço da variável para a qual ele aponta, ou seja, até o momento este ponteiro é nulo (não aponta para nenhuma posição de memória). Mova a declaração do ponteiro para a seção interface e verá que código compilará mas teremos uma exceção do tipo EAccessViolation (Exception class EAccessViolation with message 'Access violation at address ... in module ...). Clássico erro de lógica. Estamos tentando acessar dados não existentes na memória. Esta situação pode ser evitada testando se o ponteiro ainda é nulo antes de tentarmos desreferenciá-lo. Veja: procedure TForm1.Button1Click(Sender: TObject); begin // vamos exibir o valor da variável referenciada pelo // ponteiro pvalor if pvalor = nil then ShowMessage('O ponteiro ainda é nulo.') else ShowMessage(IntToStr(pvalor^)); end; Note que movi a declaração do ponteiro para a secão interface, de forma a torná-la global. Isso evita que o ponteiro seja automaticamente inicializado (o que sempre acontece com as variáveis locais). Ao executar o código novamente você verá a mensagem indicando que o ponteiro ainda é nulo. Podemos também usar nil para, explicitamente, marcar um ponteiro como nulo, ou seja, definir que o ponteiro não aponta para nenhum local na memória. Comece declarando as variáveis abaixo na seção interface do formulário: valor: Integer; pvalor: ^Integer; Em seguida coloque o código abaixo no evento Click de um botão: procedure TForm1.Button1Click(Sender: TObject); begin // vamos atribuir um valor à variável valor valor := 14; // vamos "apontar" nosso ponteiro para o local de // memória da variável valor pvalor := @valor; // vamos exibir o valor da variável apontada por pvalor ShowMessage(IntToStr(pvalor^)); // vamos marcar pvalor como nulo pvalor := nil; // vamos causar um EAccessViolation já que pvalor // não aponta para nenhum local na memória agora ShowMessage(IntToStr(pvalor^)); end; Sempre que marcamos um ponteiro como nil, a memória até então ocupada por ele é liberada para uso por parte do sistema operacional ou demais programas. Este procedimento ajuda a evitar os vazamentos de memória (memory leak) tão frequentes em códigos que trabalham com memória alocada dinamicamente. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
jQuery ::: Dicas & Truques ::: AJAX |
Quais os parâmetros que podem ser usados com o método ajax() da biblioteca jQueryQuantidade de visualizações: 11254 vezes |
O método ajax() do jQuery aceita um mapa de opções para a requisição HTTP a ser realizada. Boa parte destas opções possuem valores padrões e, portanto, não precisam ser especificadas. A lista a seguir mostra os parâmetros disponíveis para o método ajax() na versão 1.2.3: url: Uma string contendo a URL para a qual a requisição HTTP será feita. type (opcional): Uma string definindo o método HTTP a ser usado na requisição (GET ou POST). O valor padrão é GET. dataType (opcional): Uma string definindo o tipo de dados aguardados como resposta do servidor (xml, html, json ou script). ifModified (opcional): Um valor Boolean indicando se o servidor deverá verificar se a página foi modificada antes de responder à requisição. timeout (opcional): O número de milisegundos após o qual a requisição sofrerá timeout e apresentará uma falha. global (opcional): Um valor Boolean indicando se gerenciadores de eventos AJAX globais serão disparados por esta requisição. O valor padrão é true. beforeSend (opcional): Uma função de callback que será executada antes da requisição HTTP ser feita. error (opcional): Uma função de callback que é executada se a requisição falhar. success (opcional): Uma função de callback que será executada se a requisição for feita com sucesso. complete (opcional): Uma função de callback que é executada quando a requisição finalizar. data (opcional): Um mapa ou string que será enviado ao servidor junto com a requisição. processData (opcional): Um valor boolean indicando se a conversão dos dados enviados em um formato objeto para o formato query-string deverá ser feita. O valor padrão é true. contentType (opcional): Uma string contendo o tipo de conteúdo MIME a ser definindo para a requisição. O valor padrão é application/x-www-form-urlencoded. async (opcional): Um valor Boolean indicando se a requisição deverá ser feita de forma assíncrona. O valor padrão é true. Nesta seção você encontra vários exemplos de uso da função ajax() do jQuery. |
Python ::: Dicas & Truques ::: Sistema |
Como obter o diretório do seu programa Python usando sys.path[0]Quantidade de visualizações: 8200 vezes |
Nesta dica eu mostrarei como é possível usar a primeira posição da lista de strings contida na propriedade path do módulo sys da linguagem Python. Lembre-se de que sys.path contém uma lista de strings especificando os caminhos de busca para os módulos Python. Veja o código completo para o exemplo: import sys # função principal do programa def main(): print("O diretório do programa é: ", sys.path[0]) if __name__== "__main__": main() Ao executarmos este código nós teremos o seguinte resultado: O diretório do programa é: c:\estudos_python |
Python ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular MDC em Python - Python para matemáticaQuantidade de visualizações: 4551 vezes |
Python para matemática - Como calcular o MDC (Máximo Divisor Comum) em Python Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada: Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b. O trecho de código abaixo mostra como calcular o MDC de dois números informados: # função que permite calcular o MDC def MDC(a, b): while(b != 0): resto = a % b a = b b = resto return a # função principal do programa def main(): print("Este programa permite calcular o MDC\n") x = int(input("Informe o primeiro valor: ")) y = int(input("Informe o segundo valor: ")) print("\nO Máximo Divisor Comum de", x, "e", y, "é", MDC(x, y)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Este programa permite calcular o MDC Informe o primeiro número: 12 Informe o segundo número: 9 O Máximo Divisor Comum de 12 e 9 é 3 |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como converter um vetor (array) em uma List usando o método asList() da classe Arrays da linguagem JavaQuantidade de visualizações: 13392 vezes |
Em algumas situações nós gostaríamos de obter uma List, ou melhor, um objeto da interface List, a partir de um vetor (um array). Nesta dica mostrarei como isso é possível. Nós vamos criar um vetor de cinco objetos da classe Integer, vamos instanciar estes objetos com valores inteiros e, em seguida, vamos obter um objeto List contendo os mesmos. Veja o código completo para o exemplo: package arquivodecodigos; import java.util.*; public class Estudos{ public static void main(String[] args){ Integer[] valores = new Integer[5]; // inicializa os elementos do array valores[0] = 1; valores[1] = 2; valores[2] = 3; valores[3] = 4; valores[4] = 5; List lista = Arrays.asList(valores); // percorre a lista for(int i = 0; i < lista.size(); i++){ Integer valor = (Integer)(lista.get(i)); System.out.println(valor.toString()); } System.exit(0); } } Ao executar este código nós teremos o seguinte resultado: 1 2 3 4 5 |
Java ::: Dicas & Truques ::: Data e Hora |
Como obter a data completa formatada em português usando vetores e um objeto da classe Calendar do JavaQuantidade de visualizações: 9210 vezes |
Nesta dica mostrarei como é possível combinar dois vetores de string contendo os nomes do dias e os nomes dos meses e um objeto da classe Calendar da linguagem Java para exibir a data completo em português. Este é um bom exercício para entender o uso de vetores em Java e as partes individuais que compoem uma data retornada pelo método getInstance() da classe Calendar. Veja o código completo para o exemplo: package arquivodecodigos; import java.util.Calendar; public class Estudos{ public static void main(String args[]){ String dias[] = {"Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"}; String meses[] ={"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; Calendar agora = Calendar.getInstance(); System.out.println("A date é: " + dias[agora.get(Calendar.DAY_OF_WEEK) - 1] + ", " + agora.get(Calendar.DAY_OF_MONTH) + " de " + meses[agora.get(Calendar.MONTH)] + " de " + agora.get(Calendar.YEAR)); } } Ao executar este código Java nós teremos o seguinte resultado: A date é: Sábado, 20 de Março de 2020 |
PHP ::: Dicas & Truques ::: Variáveis e Constantes |
Como verificar se uma variável contém um valor numérico válido - Usando a função is_numeric() do PHP - RevisadoQuantidade de visualizações: 19878 vezes |
Em várias situações nós precisamos verificar se uma variável ou constante possui um valor numérico válido. Para isso podemos usar a função is_numeric() da linguagem PHP. Esta função retorna um valor true se o argumento for um valor númerico válido e false em caso contrário. Veja um exemplo completo de seu uso: <? /* Este trecho de código mostra como usar a função is_numeric para verificar se o valor de uma variável é um valor numérico válido */ $valor = 34; // válido // $valor = "45,3"; // inválido // $valor = "45.4"; // válido // $valor = ".5"; // válido if(is_numeric($valor)) echo "$valor é um valor numérico válido"; else echo "$valor NÃO é um valor numérico válido"; ?> Ao executar este código nós teremos o seguinte resultado: 34 é um valor numérico válido Esta dica foi revisada e testada no PHP 8. |
PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como remover e retornar o primeiro elemento de um array PHP usando a função array_shift()Quantidade de visualizações: 7671 vezes |
A função array_shift() do PHP remove o primeiro elemento de um vetor (array) e retorna o seu valor. Nesse caso, se as chaves, ou índices, do vetor forem do tipo númerico, elas serão reorganizadas. Veja um exemplo de seu uso no código PHP a seguir: <?php /* Este exemplo mostra como usar a função array_shift() para extrair e retornar o primeiro elemento de um array */ $pessoas[0] = "Carlos"; $pessoas[1] = "Juliana"; $pessoas[2] = "Igor"; $pessoas[3] = "Marcelo"; // extrai o primeiro elemento $primeiro = array_shift($pessoas); echo "O elemento extraido foi: " . $primeiro . "<br>"; // vamos nos certificar de que o primeiro elemento // foi realmente removido echo "O array contém agora " . count($pessoas) . " elementos"; ?> Ao executar este código PHP nós teremos o seguinte resultado: O elemento extraido foi: Carlos O array contém agora 3 elementos |
C++ ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em C++ - Como controlar o acesso a membros de uma classe C++ usando o modificar publicQuantidade de visualizações: 7159 vezes |
Membros de uma classe são suas funções e variáveis. A visibilidade de tais membros pode ser controlada, ou seja, algumas funções e variáveis podem ser ocultadas do mundo externo. Este é o princípio de encapsulamento da programação orientada a objetos. O modificador public define que os membros de uma classe estarão acessíveis a qualquer função fora da classe. Veja um exemplo: #include <iostream> using namespace std; class Cliente{ public: char *nome; }; int main(int argc, char *argv[]) { // Cria uma instância da classe Cliente Cliente *cliente = new Cliente(); // Define o nome do cliente cliente->nome = "Osmar J. Silva"; // Obtém o nome do cliente cout << "Nome do cliente: " << cliente->nome << "\n\n"; system("PAUSE"); return EXIT_SUCCESS; } Como o atributo nome foi declarado na seção public, o código da função main possui acesso a ele sem a necessidade de métodos acessórios (get) ou mutatórios (set). Quando usamos o modificador public antes do nome de uma classe base (durante a herança), estamos definindo que os membros public e protected da classe base serão public e protected na classe derivada. O acesso padrão (sem modificador) dos membros de uma classe é private. Em uniões (union) e estruturas (structure), o acesso padrão é public. O acesso padrão de uma classe base (durante a herança) é private para classes e public para estruturas. Uniões não podem possuir classes bases. |
Java ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Java para iniciantes - Como usar o laço do-while da linguagem JavaQuantidade de visualizações: 51524 vezes |
O laço do-while é uma variação do laço while. A diferença é que, no laço do-while a condição de continuidade é testada após a execução do bloco de códigos desejado. Isso nos faz crer que este laço é executado no mínimo uma vez. Veja sua sintáxe:do{ // bloco de instruções }while(condição); Se a condição testada for verdadeira, o laço continua sua execução. Do contrário a execução do programa segue a partir do ponto onde o laço se encontra. 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 do{ // 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); soma += valor; }while(valor != 0); JOptionPane.showMessageDialog(null, "A soma é: " + soma, "Estudos", JOptionPane.INFORMATION_MESSAGE); } } Use o laço do-while quando você tiver instruções dentro do laço que precisem ser executadas no mínimo uma vez. |
Quem Somos |
![]() Osmar J. Silva
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Elétrica pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 15 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Programador Freelancer WhatsApp +55 (062) 98553-6711 Goiânia-GO Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
|
![]() José de Angelis
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Programador Freelancer WhatsApp +55 (062) 98243-1195 Goiânia-GO Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..
|
Linguagens Mais Populares |
1º lugar: Java |