![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
Python ::: wxPython ::: Eventos e Tratadores de Eventos |
Como tratar o evento wx.EVT_MOVE em suas aplicações wxPython - Interfaces gráficas no PythonQuantidade de visualizações: 244 vezes |
Em algumas situações nós precisamos reagir ao evento wx.EVT_MOVE em nossas aplicações wxPython. Este evento é gerado todas as vezes que movemos uma janela para uma nova posição. Veja o código completo para uma aplicação wxPython na qual interceptamos e tratamos o evento wx.EVT_MOVE na janela principal do programa. Note o uso da função e.GetPosition() para recuperarmos as coordenadas x e y do evento e mostrarmos o resultado em controles wx.StaticText. # vamos importar o framework wxPython import wx # classe que representará a janela principal da # aplicação wxPython class JanelaPrincipal(wx.Frame): # o método construtor def __init__(self, *args, **kw): # chama o construtor da classe wx.Frame super(JanelaPrincipal, self).__init__(*args, **kw) # chama a função que inicializa a GUI self.InicializarGUI() # método usado para gerenciar o evento Move def OnMove(self, e): # obtemos a posição do evento e guardamos nas variáveis x e y x, y = e.GetPosition() # mostramos os valores nas labels self.st1.SetLabel(str(x)) self.st2.SetLabel(str(y)) # função que inicializa a GUI do programa def InicializarGUI(self): # criamos dois controles StaticText com os labels já definindos wx.StaticText(self, label='x:', pos=(10,10)) wx.StaticText(self, label='y:', pos=(10,30)) # criamos mais dois controles StaticText para escrevermos neles self.st1 = wx.StaticText(self, label='', pos=(30, 10)) self.st2 = wx.StaticText(self, label='', pos=(30, 30)) # fazemos um binding o evento wx.EVT_MOVE para a # função OnMove que criamos self.Bind(wx.EVT_MOVE, self.OnMove) # definimos o tamanho da janela self.SetSize((450, 350)) # define a cor de fundo da janela (Windows 10) self.SetBackgroundColour((150, 250, 100, 255)) # definimos o título da janela self.SetTitle('O evento Move') # e centralizamos a janela self.Centre() # função principal do programa Python def main(): # vamos criar a aplicação wxPython app = wx.App() janela_principal = JanelaPrincipal(None) janela_principal.Show() app.MainLoop() if __name__ == "__main__": main() |
C# ::: Dicas & Truques ::: Strings e Caracteres |
Como embaralhar as palavras em uma frase ou texto usando C#Quantidade de visualizações: 12349 vezes |
Nesta dica mostrarei como podemos usar a linguagem C# para embaralhar, ou seja, exibir as palavras de uma string em ordem aleatória. Veja o código C# completo para o exemplo: using System; namespace Estudos { class Program { static void Main(string[] args) { string frase = "Gosto de VB.NET, Java e C#"; // mostra a frase na ordem original Console.WriteLine("Ordem original: " + frase); // converte em um vetor de palavras string[] frase2 = frase.Split(' '); // vamos embaralhar 5 vezes Embaralhar(ref frase2, 5); // junta as partes da string novamente frase = String.Join(" ", frase2); // exibe o resultado Console.WriteLine("Embaralhada: " + frase); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } static void Embaralhar(ref String[] array, int vezes) { Random rand = new Random(DateTime.Now.Millisecond); for (int i = 1; i <= vezes; i++) { for (int x = 1; x <= array.Length; x++) { Trocar(ref array[rand.Next(0, array.Length)], ref array[rand.Next(0, array.Length)]); } } } static void Trocar(ref String arg1, ref String arg2) { String strTemp = arg1; arg1 = arg2; arg2 = strTemp; } } } Ao executar este código C# nós teremos o seguinte resultado: Ordem original: Gosto de VB.NET, Java e C# Embaralhada: VB.NET, C# Java de e Gosto |
Ruby ::: Dicas & Truques ::: Arquivos e Diretórios |
Como criar um diretório em Ruby usando a função FileUtils.mkdir()Quantidade de visualizações: 8224 vezes |
O trecho de código a seguir mostra como criar um diretório em Ruby usando o método mkdir() da classe FileUtils. Esta função recebe uma string contendo o nome e caminho do diretório a ser criado. Veja o código Ruby completo para o exemplo: require "fileutils" # nome e caminho do diretório a ser criado diretorio = "C:\\estudos_ruby\\escola" # cria o diretório if FileUtils.mkdir diretorio puts "Diretório criado com sucesso" else puts "Não foi possível criar o diretório" end Ao executar este código Ruby nós teremos o seguinte resultado: Diretório criado com sucesso Veja que, se o diretório não puder ser criado, a seguinte mensagem de erro será exibida: C:/ruby/lib/ruby/1.8/fileutils.rb:243:in `mkdir': File exists - estudos (Errno:: EEXIST) from C:/ruby/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir' from C:/ruby/lib/ruby/1.8/fileutils.rb:172:in `mkdir' from C:/ruby/lib/ruby/1.8/fileutils.rb:171:in `each' from C:/ruby/lib/ruby/1.8/fileutils.rb:171:in `mkdir' from estudos.rb:7 |
C# ::: Dicas & Truques ::: Mouse e Teclado |
C# Windows Forms - Como tratar eventos do mouse em suas aplicações C# Windows FormsQuantidade de visualizações: 16609 vezes |
Aplicações de interface gráfica (GUI) em C# fazem uso extensivo do mouse e qualquer classe que herde de System.Windows.Forms.Control pode receber e tratar seus eventos. Os eventos do mouse mais comuns são pressionamento (click), liberação, movimento, etc. E cada um possui suas particularidades. Sempre que um evento do mouse ocorre, as informações sobre tal evento são fornecidas ao método de tratamento de evento por meio de um objeto da classe MouseEventArgs (alguns eventos usam EventArgs) e o delegate usado para criar os gerenciadores de eventos do mouse é MouseEventHandler. Veja, por exemplo, o tratador de evento para o evento MouseClick de um Button: private void button1_MouseClick(object sender, MouseEventArgs e){ MessageBox.Show("Sou um Button e acabei de ser clicado!"); } A classe MouseEventArgs é muito útil, pois é ela que nos permite obter informações sobre qual botão foi pressionado, as coordenadas x e y do evento, se um duplo-clique ocorreu, etc. Veja um trecho de código no qual verificamos qual botão do mouse foi pressionado durante um evento MouseUp em um formulário: private void Form1_MouseUp(object sender, MouseEventArgs e){ if(e.Button == MouseButtons.Left){ MessageBox.Show("Fui clicado com o botão esquerdo!"); } else if(e.Button == MouseButtons.Right){ MessageBox.Show("Fui clicado com o botão direito!"); } else if (e.Button == MouseButtons.Middle){ MessageBox.Show("Fui clicado com o botão do meio!"); } else{ MessageBox.Show("O que está acontecendo?"); } } Veja os eventos do mouse que possuem um objeto da classe EventArgs: a) MouseEnter - Ocorre quando o cursor do mouse entra na área de um controle. b) MouseLeave - Ocorre quando o cursor do mouse deixa a área de um controle. c) Click - Ocorre quando clicamos na área de um controle. Note que um click do mouse envolve pressionar e liberar o botão do mouse. Veja os eventos do mouse que possuem um objeto da classe MouseEventArgs: a) MouseDown - Ocorre quando o botão do mouse é pressionado dentro da área de um controle. b) MouseHover - Ocorre quando o cursor do mouse pára sobre a área de um controle (sem clique, pressionamento ou movimento). c) MouseMove - Ocorre quando movimentamos o mouse na área de um controle. d) MouseUp - Ocorre quando o botão do mouse é liberado sobre a área de um controle. e) MouseClick - Ocorre quando clicamos na área de um controle. Note que um click do mouse envolve pressionar e liberar o botão do mouse. Há algumas diferenças significativas entre os eventos Click e MouseClick. Não deixe de consultar as outras dicas desta seção para aprofundar seus conhecimentos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como retornar o maior elemento em cada uma das colunas de uma matriz usando JavaQuantidade de visualizações: 953 vezes |
Pergunta/Tarefa: Dada a seguinte matriz: 6 10 4 2 9 7 20 3 1 Sua saída deverá ser parecida com: Maior elemento na coluna 0 é 20 Maior elemento na coluna 1 é 10 Maior elemento na coluna 2 é 7 Veja a resolução comentada deste exercício usando Java: package estudos; public class Estudos { public static void main(String[] args) { // vamos declarar e constuir uma matriz de 3 linhas e três colunas int matriz[][] = {{6, 10, 4}, {2, 9, 7}, {20, 3, 1}}; // vamos percorrer a matriz e exibir o maior elemento de cada coluna // começamos com cada coluna for(int i = 0; i < matriz[0].length; i++){ // assumimos que o maior valor é o primeiro dessa coluna int maior = matriz[0][i]; // percorremos todos os elementos desta linha for(int j = 0; j < matriz.length; j++){ // o elemento atual é maior que o maior? if(matriz[j][i] > maior){ // maior assume o valor atual maior = matriz[j][i]; } } // exibimos o maior elemento desta coluna System.out.println("Maior elemento na coluna " + i + " é " + maior); } } } |
LISP ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço loop para contar de 1 até 10 em LispQuantidade de visualizações: 741 vezes |
A estrutura de repetição loop da linguagem Common Lisp é o laço mais simples fornecido pela linguagem. Este laço nos permite repetir uma ou mais instruções de código repetidamente, até que o comando return seja encontrado, o que faz com que o laço seja interrompido. Veja no trecho de código abaixo como podemos usar o laço loop da Common Lisp para contar e exibir os valores de 1 até 10: ( ; vamos declarar a variável que vamos usar let (numero) ; vamos inicializar a variável com o valor 1 (setq numero 1) ; agora iniciamos o laço (loop ; escrevemos o valor da variável (write numero) ; aumentamos o valor da variável em 1 (setq numero (+ numero 1)) ; provocamos uma quebra de linha (terpri) ; e fazemos o teste da continuidade (when (> numero 10) (return)) ) ) Ao executarmos este código Common Lisp nós teremos o seguinte resultado: 1 2 3 4 5 6 7 8 9 10 Veja que usamos a macro when para testar o ponto de parada do laço. Note ainda o uso da função terpri da Common Lisp para provocar uma quebra de linha na saída do programa. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritméticaQuantidade de visualizações: 1718 vezes |
Pergunta/Tarefa: Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética, informando se sim ou se não. Caso forme, imprima o termo inicial e a razão. Resposta/Solução: Para a entrada do usuário, nós vamos usar um objeto da classe Scanner. Veja a resolução comentada: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // vamos usar a classe Scanner para leitura Scanner entrada = new Scanner(System.in); // declara e constrói um vetor de 10 inteiros int valores[] = new int[10]; // vamos ler os valores dos elementos do vetor for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor: "); valores[i] = Integer.parseInt(entrada.nextLine()); } // já temos o vetor. Agora vamos verificar se temos // uma progressão geométrica boolean progressao = true; // vamos obter a razão int razao = valores[1] / (valores[0]); // vamos varrer os elementos do vetor e verificar se todos // possuem a mesma razão for(int i = 1; i < valores.length; i++){ if((valores[i] / (valores[i - 1])) != razao){ progressao = false; break; } } if(progressao){ System.out.println("Formam uma progressão geométrica."); System.out.println("A razão é: " + razao); System.out.println("O primeiro termo é: " + valores[0]); } else{ System.out.println("Não formam uma progressão geométrica."); } } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor: 1 Informe o valor: 2 Informe o valor: 4 Informe o valor: 8 Informe o valor: 16 Informe o valor: 32 Informe o valor: 64 Informe o valor: 128 Informe o valor: 256 Informe o valor: 512 Formam uma progressão geométrica. A razão é: 2 O primeiro termo é: 1 |
PHP ::: PHP + MySQL ::: MySQL (mysql) |
Como criar uma tabela MySQL usando o comando CREATE TABLE e as funções mysql_query() e mysqli_query() do PHPQuantidade de visualizações: 22391 vezes |
Nesta dica mostrarei como podemos usar a função mysqli_query() do PHP para disparar uma instrução SQL CREATE TABLE para criar uma nova tabela na base de dados MySQL. Esta dica foi atualizada. Removi a função mysql_query(), já que esta não funciona mais nas versões atuais do PHP. Em seu lugar eu coloquei mysqli_query() e ajustei o código. Note que inclui neste exemplo o código para efetuar a conexão PHP + MySQL usando a função mysqli_connect(). Novamente vale lembrar que removi a função mysql_connect() e deixei apenas a versão mais atual. Se você pretende escrever seu primeiro CRUD PHP + MySQL, este é o exemplo ideal para você começar. Veja o código completo: <?php // vamos efetuar a conexao com o banco $servidor = "localhost"; $usuario = "root"; $senha = "osmar1234"; $base_dados = "estudos"; $conexao = mysqli_connect($servidor, $usuario, $senha, $base_dados); // Comando SQL para criar a tabela $sql = "CREATE TABLE my2_usuarios( id int(11) NOT NULL auto_increment, usuario varchar(50), senha varchar(10), data_cadastro datetime, PRIMARY KEY(id) )"; // Executa o comando SQL $result = mysqli_query($conexao, $sql); // Verifica se o comando foi executado com sucesso if(!$result){ die("Falha ao executar o comando: " . mysqli_error($conexao)); } else{ echo "Comando executado com sucesso."; } // fecha a conexão mysqli_close($conexao); ?> |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como remover espaços em excesso em uma string Java usando expressões regularesQuantidade de visualizações: 308 vezes |
Em algumas situações nós precisamos remover os espaços em excesso de um texto ou frase. Há várias formas de se realizar esta tarefa, e uma delas é por meio do uso de expressões regulares. Veja um trecho de código no qual usamos o método replaceAll() da classe Matcher para substituir dois ou mais espaços por apenas um espaço: package arquivodecodigos; // Este exemplo mostra como remover todos os espaços // duplicados de uma string import java.util.regex.*; public class Estudos{ public static void main(String[] args){ String frase = "Programar em Java e bom"; System.out.println("Com espaços em excesso: " + frase); frase = removerEspacosDuplicados(frase); System.out.println("Sem espaços em excesso: " + frase); System.exit(0); } public static String removerEspacosDuplicados(String str){ String patternStr = "\\s+"; String replaceStr = " "; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(str); return matcher.replaceAll(replaceStr); } } Ao executarmos este código Java nós teremos o seguinte resultado: Com espaços em excesso: Programar em Java é bom Sem espaços em excesso: Programar em Java é bom |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Declare uma matriz de 10 inteiros e use um laço for para preencher os elementos da matriz usando valores aleatórios de 0 até 10Quantidade de visualizações: 11874 vezes |
Pergunta/Tarefa: Escreva um programa C que declara uma matriz de 10 inteiros. Use um laço for para preencher os elementos da matriz usando valores aleatórios de 0 até 10 (incluindo os valores 0 e 10). Para finalizar, percorra os elementos da matriz e exiba seus valores. A saída do programa deverá ser parecida com: 3 5 5 1 3 8 10 0 9 7 Resposta/Solução: Veja abaixo a resolução completa para esta tarefa: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // vamos inicializar o gerador de números aleatórios srand(time(NULL)); // vamos declarar e construir uma matriz de 10 inteiros int valores[10]; // vamos preencher a matriz com valores aleatórios de 0 até 10 (incluindo) int i; for(i = 0; i < 10; i++){ valores[i] = rand() % 11; } // vamos exibir os valores dos elementos da matriz for(i = 0; i < 10; i++){ printf("%d ", valores[i]); } printf("\n\n"); system("PAUSE"); return 0; } Espero que você tenha gostado e continue a acessar a nossa Lista de Exercícios de C. |
Nossas 20 dicas & truques de programação mais populares |
JavaScript - Cookies em JavaScript - Como escrever uma função para a criação de cookies em JavaScript |
Você também poderá gostar das dicas e truques de programação abaixo |
C# - Como retornar o tamanho do texto de um TextBox em C# Windows Forms usando a propriedade TextLength Python - Como testar se um ponto está dentro de um círculo em Python - Desenvolvimento de Games com Python |
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 |