![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Java ::: Dicas & Truques ::: Threads |
Como usar uma thread Java para animar o título de uma janela JFrame do Java SwingQuantidade de visualizações: 11770 vezes |
Nesta dica mostro como podemos usar uma thread para substituir um timer em uma aplicação Swing. Ao executar este código você verá que o texto da barra de títulos da aplicação pisca continuamente enquanto o aplicativo estiver sendo executado. Veja a listagem para o exemplo: import java.awt.*; import javax.swing.*; public class Estudos extends JFrame{ public Estudos() { super("Uso de threads em aplicações Swing"); // vamos criar a thread que fará o título da janela // piscar continuamente // vamos criar duas threads MinhaThread t1 = new MinhaThread(this); t1.start(); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } // classe que usaremos como thread class MinhaThread extends Thread{ private JFrame janela; private String titulo; public MinhaThread(JFrame janela){ this.janela = janela; this.titulo = janela.getTitle(); } public void run(){ try{ while(true){ if(janela.getTitle().equals("")) janela.setTitle(titulo); else janela.setTitle(""); Thread.sleep(300); } } catch(InterruptedException ex){ // precisa fazer nada aqui } } } Um detalhe interessante é que, ao ser colocada para dormir, a thread usada no exemplo permite que as demais threads da aplicação continuem suas execuções normalmente. Isso permite que a janela seja movida, redimensionada, minimizada, etc. Lembre-se sempre de usar o método Thread.yield() caso a thread criada estiver executando alguma ação demorada. Isso evitará que a janela do programa pareça congelada. |
Ruby ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Como criar métodos que aceitam um número variável de argumentos em RubyQuantidade de visualizações: 7986 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. |
C# ::: Windows Forms ::: DataGridView |
Como ocultar ou exibir uma determinada coluna do DataGridView do C# Windows FormsQuantidade de visualizações: 14063 vezes |
Em algumas situações precisamos ocultar ou exibir determinadas colunas do DataGridView. Isso pode ser feito definindo-se os valores true ou false para a propriedade Visible da classe DataGridViewColumn. Veja um trecho de código no qual ocultamos a segunda coluna do DataGridView:private void button3_Click(object sender, EventArgs e){ // vamos ocultar a segunda coluna dataGridView1.Columns[1].Visible = false; } Veja que aqui nós acessamos a coleção DataGridViewColumnCollection e usamos um índice para retornar o DataGridViewColumn desejado. É possível também acessar um determinado DataGridViewColumn na coleção de colunas usando o valor definido para sua propriedade name. Veja: private void button3_Click(object sender, EventArgs e){ // vamos ocultar a segunda coluna dataGridView1.Columns["populacao"].Visible = false; } |
C# ::: Windows Forms ::: Formulários e Janelas |
Como abrir outros formulários de sua aplicação C# Windows Forms a partir do formulário principalQuantidade de visualizações: 33086 vezes |
Esta é, sem dúvida, uma das perguntas mais frequentes de meus visitantes. Sendo assim, vou detalhar passo-a-passo como você poderá abrir outros formulários a partir do formulário principal da aplicação. Assumindo que você já tenha criado o formulário principal, siga estes passos para criar um novo formulário (Visual C# 2005 ou 2008): a) Vá no menu Project -> Add Windows Form. O novo Form já aparecerá selecionado. Dê um nome a ele, por exemplo, "NovoForm.cs" e clique o botão Add; b) Coloque os controles que desejar no novo formulário e salve tudo; c) Volte no formulário principal e adicione o código abaixo no evento Click de um botão: private void button1_Click(object sender, EventArgs e){ // vamos criar o novo formulário e exibí-lo NovoForm nf = new NovoForm(); nf.Show(); } Execute e veja o resultado. Note, contudo, que se clicarmos no formulário principal com o segundo formulário ainda aberto, veremos que o primeiro sobrepõe o segundo. Isso acontece porque abrimos o novo formulário como não modal. Em algumas aplicações este pode não ser o comportamento esperado. Continue seguindo minhas dicas para aprender a diferença entre formulários modais e não modais em Windows Forms e C#. |
Python ::: Fundamentos da Linguagem ::: Passos Iniciais |
Como obter a entrada do usuário usando o método raw_input() - Atualizado para Python 3.0Quantidade de visualizações: 8630 vezes |
Até pouco tempo era possível usar o método raw_input(), nativo do Python, para ler a entrada do usuário. O código abaixo, por exemplo, funcionava corretamente no Python 2.5: # obtém o nome do usuário nome = raw_input("Por favor, informe seu nome: ") print "Ola, " + nome + "! Voce tambem gosta de Python?" No Python 3.0 em diante, a execução deste código exibe o seguinte erro de tempo de execução: Exception has occurred: NameError name 'raw_input' is not defined File "C:\estudos_python\estudos.py", line 4, in main nome = raw_input("Por favor, informe seu nome: ") File "C:\estudos_python\estudos.py", line 7, in <module> main() A correção para esta exceção, é usar somente a função input(). Veja: def main(): nome = input("Por favor, informe seu nome: ") print("Olá, " + nome + "! Voce tambem gosta de Python?") if __name__== "__main__": main() A saída deste código será parecida com: Por favor, informe seu nome: Osmar Olá, Osmar! Voce tambem gosta de Python? |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: NumPy Python Library |
Exercício Resolvido de Python NumPy - Como importar a biblioteca NumPy e exibir sua versãoQuantidade de visualizações: 776 vezes |
Pergunta/Tarefa: Escreva um programa Python que demonstra como importar a biblioteca NumPy para nossos programas. Em seguida exiba uma mensagem mostrando a versão da NumPy instalada na sua máquina. Sua saída deverá ser parecida com: A versão da NumPy é: 1.19.4 Veja a resolução comentada deste exercício em Python: # vamos importar a biblioteca NumPy import numpy as np # função principal do programa def main(): # vamos mostrar a versão da biblioteca NumPy qye temos instalada versao = np.__version__ # mostramos o resultado print("A versão da NumPy é: {0}".format(versao)) if __name__== "__main__": main() |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar classes abstratas em Java - Programação Orientada a Objetos - Java POOQuantidade de visualizações: 21967 vezes |
Classes abstratas (abstract classes) não diferem muito das classes que normalmente criamos, ou seja, elas também podem possuir propriedades e métodos. Porém, não é possível criar instâncias de uma classe abstrata usando o operador new. Veja:abstract class Pessoa{ public String nome; public int idade; } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa(); } } Ao tentarmos compilar este exemplo teremos a seguinte mensagem: Estudos.java:9: Pessoa is abstract; cannot be instantiated Pessoa p = new Pessoa(); ^ 1 error Classes abstratas geralmente contém métodos abstratos (ainda que métodos não abstratos sejam também permitidos). Um método abstrato é um método que possui apenas a assinatura. Não há implementação. Esta implementação deverá ser fornecida pela subclasse ou classe derivada. Uma classe que contém métodos abstratos deverá, obrigatoriamente, ser declarada abstrata. Veja um exemplo de um método abstrato: public abstract class Pessoa{ public abstract String getNome(); } Se a classe não fosse declarada com o modificador abstract, teríamos a seguinte mensagem de erro de compilação: Pessoa.java:1: Pessoa is not abstract and does not override abstract method getNome() in Pessoa public class Pessoa{ ^ 1 error Classes abstratas são um dos tópicos mais complicados da linguagem Java e uma dor de cabeça enorme para aqueles que estão estudando para a certificação Java. Mostramos abaixo algumas dicas resultantes de nossas pesquisas sobre o assunto. 1)Uma classe não abstrata não pode conter métodos abstratos. Se uma classe concreta (não abstrata) herda de uma classe abstrata e não implementa todos os métodos abstratos, a classe derivada deve ser declarada abstract. Além disso, métodos abstratos não podem ser marcados como static. Insistir nisso pode gerar a seguinte mensagem de erro de compilação: Pessoa.java:2: illegal combination of modifiers: abstract and static public static abstract String getNome(); ^ 2) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode conter construtores. Tais construtores serão invocados nos construtores das classes derivadas. 3) Uma subclasse pode ser abstrata até mesmo se sua superclasse for concreta. E isso é fácil de notar, uma vez que todas as classes Java herdam de Object, que é concreta. 4) Uma classe derivada pode sobrescrever um método de sua superclasse e declará-lo abstract. Isso faz sentido quando a classe derivada for abstract e quiser tornar o método herdado inválido. 5) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode ser usada como um tipo de dados. Esta técnica é útil quando parte do time de desenvolvedores precisa adiantar códigos que dependem de classes que ainda não foram implementadas (e, portanto, herdarão das classes abstratas usadas como tipos de dados) por outra parte do mesmo time. |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C++ - Desafio do número ausente. Dado um vetor de números naturais 1..n, encontre o valor ausenteQuantidade de visualizações: 737 vezes |
Pergunta/Tarefa: Dado o vetor: int valores[] = {1, 8, 7, 2, 6, 5, 3}; Encontre o elemento ausente na sequência de valores do vetor, sabendo que o primeiro valor é 1 e o último elemento é 8. Perceba que o vetor não precisa estar ordenado. Além disso, o entrevistador se certificará de que os valores serão sempre positivos e não haverá valores repetidos. Sua saída deverá ser parecida com: O número ausente é: 4 Dica: Use a fórmula n * (n + 1) / 2 para facilitar a resolução do exercício. Veja a resolução comentada deste exercício usando C++: #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]){ // vamos declarar um vetor de inteiros faltando // um valor na sequência (não necessariamente ordenada) // Note a ausência do número 4 int valores[] = {1, 8, 7, 2, 6, 5, 3}; int i, soma_n, ausente, soma_elementos; int quant = 8; // tamanho do vetor + 1 // o primeiro passo é obter a soma de 1..n elementos // natuais usando a fórmula n*(n+1)/2 soma_n = (quant * (quant + 1)) / 2; // agora vamos somar os elementos do vetor soma_elementos = 0; for(i = 0; i < 7; i++){ soma_elementos = soma_elementos + valores[i]; } // agora calculamos o valor ausente ausente = soma_n - soma_elementos; // vamos mostrar o resultado cout << "O número ausente é: " << ausente << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
PHP ::: Dicas & Truques ::: Data e Hora |
Como construir uma data usando a função mktime() do PHPQuantidade de visualizações: 137 vezes |
A forma mais comum de se construir uma data e hora no PHP é por meio da função mktime(). Esta função recebe as horas e a data na sequência horas, minutos, segundos, mês, dia, ano e retorna um timestamp Unix, que é a quantidade de segundos desde 31/12/1969 - 21:00:00 (fuso horário brasileiro). Veja um trecho de código que constrói a data 13/05/2020 à meia-noite: <html> <head> <title>Estudos PHP</title> </head> <body> <?php // construir a data 13/05/2020 // se quiser fornecer as horas o formato é: // hora, minuto, segundo $timestamp = mktime(0, 0, 0, 05, 13, 2020); echo "A data é: " . date('d/m/Y', $timestamp); ?> </body> </html> Ao executar este código nós teremos o seguinte resultado: A data é: 13/05/2020 |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como remover os espaços em excesso de uma string e deixar apenas um espaço entre as palavras usando a função preg_replace() e expressões regulares do PHPQuantidade de visualizações: 295 vezes |
Nesta dica mostrarei como é possível tirar proveito da função preg_replace() da linguagem PHP para retirar os espaços em excesso de uma frase ou texto. Note o uso da função trim() para remover também os espaços antes e depois da frase ou texto. Veja o código completo para o exemplo: <?php // uma frase com excesso de espaços // vamos deixar apenas um espaço entre as palavras $frase = " Gosto muito de programar em PHP "; $frase2 = trim(preg_replace('/\s\s+/',' ', $frase)); echo "Com espaços: " . $frase . "<br>"; echo "Sem espaços: " . $frase2; ?> Ao executar este código PHP nós teremos o seguinte resultado: Com espaços: Gosto muito de programar em PHP Sem espaços: Gosto muito de programar em PHP Pode ser necessário você olhar no código fonte da página HTML para visualizar melhor o resultado. |
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 |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |