Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Pacote java.awt.event ::: KeyListener

Entenda e aprenda a usar a interface KeyListener em suas aplicações Java

Quantidade de visualizações: 4375 vezes
A interface pública KeyListener, no pacote java.awt.event, extende a interface EventListener e é usada quando precisamos receber e processar eventos do teclado. A classe interessada em processar os eventos do teclado pode fazê-lo de duas formas:

a) Implementar a interface KeyListener e todos os seus métodos;
b) Extender (extends) a classe abstrata KeyAdapter e sobrescrever somente os métodos que nos interessar.

O objeto listener (ouvidor, receptor) criado a partir desta classe é então registrado com um componente usando o método addKeyListener() do componente. Um evento do teclado é gerado quando uma tecla é pressionada, liberada ou digitada (pressionar e liberar). O método relevante no objeto listener é chamado e um objeto da classe KeyEvent é passado a ele.

A superinterface de KeyListener é EventListener e as classes que a implementam são AWTEventMulticaster, BasicComboBoxUI.KeyHandler, BasicComboPopup.InvocationKeyHandler, BasicTableUI.KeyHandler, BasicTreeUI.KeyHandler e KeyAdapter.

Veja um exemplo de uma janela JFrame que detecta quando uma tecla é pressionada e reage com a exibição de uma mensagem:

package estudos;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Janela extends JFrame implements KeyListener{
  public Janela(){
    super("Eventos do Teclado");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
    
    // vamos adicionar o objeto listener 
    addKeyListener(this);

    setSize(350, 250);
......


Execute o exemplo, coloque o foco na janela JFrame e pressione qualquer tecla. Imediatamente a janela vai detectar o evento do teclado e exibirá uma mensagem JOptionPane. Veja que neste exemplo nós implementamos apenas o método keyPressed(), que detecta a "digitação" de uma tecla, ou seja, o pressionamento e liberação da tecla.

Link para compartilhar na Internet ou com seus amigos:

C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Vetores e Matrizes - Exercícios Resolvidos de C - Declarar um vetor de 10 elementos, usar um laço for para inicializar os elementos e exibí-los na vertical

Quantidade de visualizações: 14860 vezes
Vetores e Matrizes - Exercício Resolvido de C - Declarar um vetor de 10 elementos, usar um laço for para inicializar os elementos e exibí-los na vertical

Pergunta/Tarefa:

Escreva um programa C que declara um vetor de 10 elementos do tipo int. Em seguida use um laço for para inicializar os elementos com os valores de 1 até 10. Para finalizar exiba os valores dos elementos da matriz na vertical. Seu programa deverá exibir a seguinte saída:

1
2
3
4
5
6
7
8
9
10

Resposta/Solução:

A resolução desta tarefa passa pela declaração da matriz. Veja como isso pode ser feito:

// vamos declarar uma matriz de 10 ints
// neste momento seus elementos terão, todos, 
// valores aleatórios
int valores[10];


Veja a resolução completa do exercício:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // vamos declarar uma matriz de 10 ints
  // neste momento seus elementos terão, todos, 
  // valores aleatórios
  int valores[10];
  int i;
  
  // vamos usar o laço for para inicializar seus elementos
  // com os valores de 1 até 10
  for(i = 0; i < 10; i++){
    // aqui nós usamos o valor da variável i para acessar o
......



VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de VisuAlg - Como testar se um ano é bissexto em VisuAlg - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou não

Quantidade de visualizações: 409 vezes
Pergunta/Tarefa:

Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele 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. O último ano bissexto foi 2012 e o próximo será 2016.

Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400.

Escreva um programa VisuAlg que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não.

Sua saída deverá ser parecida com:

Informe o ano: 2024
O ano informado é bissexto.
Resposta/Solução:

Veja a resolução comentada deste exercício usando VisuAlg:

algoritmo "Como testar se um ano é bissexto em VisuAlg"

var
  // variáveis usadas na resolução do problema
  ano: inteiro

inicio
  // vamos solicitar que o usuário informe um ano
  escreva("Informe o ano: ")
  leia(ano)

......



Delphi ::: Dicas & Truques ::: Strings e Caracteres

Apostila Delphi para iniciantes - Como acessar os caracteres de uma string individualmente

Quantidade de visualizações: 17413 vezes
Em algumas situações pode ser necessário acessar os caracteres de uma palavra, frase ou texto individualmente. Em Delphi isso pode ser feito usando-se a indexação de matrizes. Tenha em mente, porém, que o índice em Delphi começa em 1 e não 0, como na maioria das linguagens.

Veja um trecho de código no qual acessamos o primeiro caractere de uma string:

procedure TForm1.Button1Click(Sender: TObject);
var
  nome: string;
  letra: Char;
begin
  nome := 'Osmar J. Silva';

  // vamos obter a primeira letra
......


Veja outro exemplo, no qual usamos um laço for para visitar cada um dos caracteres e exibí-lo:

procedure TForm1.Button1Click(Sender: TObject);
var
  nome: string;
  letra: Char;
  i: integer;
begin
  nome := 'Osmar';

  for i := 1 to Length(nome) do
......


Assim como acessamos os caracteres individuais de uma string para leitura, podemos fazê-lo também para alterações. Veja um trecho de código no qual trocamos o terceiro caractere de uma string:

procedure TForm1.Button1Click(Sender: TObject);
var
  nome: string;
begin
  nome := 'Osmar';
......


Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009.


C ::: C para Engenharia ::: Física - Mecânica

Como calcular Velocidade Vetorial Média usando a linguagem C - C para Engenharia - Física - Mecânica - Cinemática

Quantidade de visualizações: 2289 vezes
Como calcular Velocidade Vetorial Média usando a linguagem C

Na Física, mais especificamente na Mecânica e Cinemática, nós estamos o tempo todo interessados em medir a "rapidez" com que uma partícula se move de um ponto para outro ponto. Por partícula podemos entender qualquer móvel: um carro, um avião, uma bola, uma pessoa, etc.

No caso de um movimento bidimensional ou tridimensional nós devemos considerar a grandeza velocidade média como vetores e usar a notação vetorial. Em outras dicas do site você encontrará cálculos envolvendo vetores e até mesmo calculadoras com as operações vetoriais mais comuns.

Dessa forma, a fórmula para obtenção da Velocidade Vetorial Média é:

\[\vec{v}_\text{méd} = \frac{\Delta \vec{r}}{\Delta t} \]

Onde __$\Delta \vec{r}__$ é a variação da posição da partícula e __$\Delta t__$ é a variação do tempo entre os dois deslocamentos cuja velocidade vetorial média querermos medir.

Antes de vermos o código C, dê uma boa olhada na imagem a seguir:



Nosso objetivo será calcular a velocidade vetorial média da partícula saindo da posição __$\vec{r}_1__$ = 10__$\hat{\imath}__$ + 7__$\hat{\jmath}__$ m (10, 7), no instante t1 = 2s, e indo para a posição __$\vec{r}_2__$ = 12__$\hat{\imath}__$ + 2__$\hat{\jmath}__$ m (12, 2) em t2 = 7s. Note que o trajeto da partícula foi marcado de verde na imagem.

E agora, finalmente, vamos ao código C que lê os valores das coordenadas x e y dos dois vetores de posições (inicial e final), o tempo de deslocamento inicial e final e mostra o vetor velocidade média:

#include <stdio.h>
#include <stdlib.h>
    
int main(int argc, char *argv[]){
  // coordenadas dos dois vetores de posições
  float x1, y1, x2, y2;
  // guarda o vetor delta r (variação do deslocamento)
  float delta_r_x, delta_r_y;
  // guarda o tempo inicial, tempo final e variacao (em segundos)
  float tempo_inicial, tempo_final, delta_t;
  // guarda as coordenadas do vetor velocidade
  float vetor_vm_x, vetor_vm_y; 
        
  // x e y do primeiro vetor
  printf("Coordenada x do primeiro vetor: ");
  scanf("%f", &x1);
  printf("Coordenada y do primeiro vetor: ");
  scanf("%f", &y1);
      
  // x e y do segundo vetor
  printf("Coordenada x do segundo vetor: ");
  scanf("%f", &x2);
  printf("Coordenada y do segundo vetor: ");
......


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

Coordenada x do primeiro vetor: 10
Coordenada y do primeiro vetor: 7
Coordenada x do segundo vetor: 12
Coordenada y do segundo vetor: 2
Tempo inicial em segundos: 2
Tempo final em segundos: 7
O Vetor Velocidade Média é: (0.40, -1.00)m/s

Pressione qualquer tecla para continuar. . .

Note que aqui nós estamos usando vetores do R2, mas o processo é o mesmo para vetores do R3.


C# ::: Datas e Horas ::: DateTime

Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTime

Quantidade de visualizações: 9988 vezes
Em algumas situações nossos códigos precisam adicionar ou subtrair meses de uma data. Isso pode ser feito com o auxílio do método AddMonths() da estrutura DateTime. Este método recebe o número de meses a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações.

Veja um trecho de código no qual adicionamos 3 meses à data atual:

static void Main(string[] args){
  // vamos obter a data de hoje
  DateTime hoje = DateTime.Now;

  // exibe a data de hoje
  System.Console.WriteLine("Hoje é {0:d}", hoje);

  // vamos adicionar 3 meses à data de hoje
  DateTime data_futura = hoje.AddMonths(3);
......


É possível também subtrair meses. Para isso só precisamos fornecer um valor negativo para o método AddMonths(). Veja:

static void Main(string[] args){
  // vamos obter a data de hoje
  DateTime hoje = DateTime.Now;

  // exibe a data de hoje
  System.Console.WriteLine("Hoje é {0:d}", hoje);

  // vamos subtrair 5 meses da data de hoje
  DateTime data_passado = hoje.AddMonths(-5);
......


Lembre-se, contudo, que o método AddMonths() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. Esta exceção também será disparada se o valor fornecido para o mês for menor que -120.000 ou maior que 120.000.


Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
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 Civil 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 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
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
WhatsApp +55 (062) 98243-1195

Goiânia-GO
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)
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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



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