JavaScript ::: Dicas & Truques ::: Mouse e Teclado

Como obter o código da tecla pressionada em um elemento HTML usando o evento onkeypress do JavaScript

Quantidade de visualizações: 272 vezes
Nesta dica eu mostrarei como é possível usar o evento onkeypress do HTML + JavaScript para obter o código da tecla pressionada pelo usuário. Note que usei a propriedade keyCode do objeto event para capturar o código da tecla.

Veja o código JavaScript completo, incluindo a página HTML:

<html>
<head>
<title>Estudando JavaScript</title>
</head>
<body>
 
<p>Experimente pressionar qualquer tecla e uma 
mensagem mostrará o código da tecla pressionada.</p>
 
<script type="text/javascript">
  function tecla(){
    window.alert("O código da tecla pressionada foi: "
      + event.keyCode);
  }
   
  document.body.onkeypress = tecla;
</script>
 
</body>
</html>

Abra esta página no seu navegador e experimente pressionar uma tecla. Se você presssionar, por exemplo, a tecla "a", teremos a seguinte mensagem:

O código da tecla pressionada foi: 97


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

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

Quantidade de visualizações: 1766 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 Portugol 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 Portugol Webstudio:

// Como testar se um ano é bissexto em Portugol
programa {
  funcao inicio() {
    // variáveis usadas na resolução do problema
    inteiro ano

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

    // vamos verificar se o ano informado é bissexto
    se (((ano % 4 == 0) e (ano % 100 != 0)) ou (ano % 400 == 0)) {
      escreva("O ano informado é bissexto.")
    }
    senao {
      escreva("O ano informado não é bissexto.")
    }
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

Algorítmos Resolvidos de Java - A classe Retangulo (construtores, getters e setters, encapsulamento e static)

Quantidade de visualizações: 15489 vezes
Exercícios Resolvidos de Java - A classe Retangulo (construtores, getters e setters, encapsulamento e static)

Pergunta/Tarefa:

Escreva uma classe Retangulo para representar um retângulo. A classe deve conter:

a) Dois campos de dados do tipo double chamados largura e altura que especificam a largura e a altura do retângulo. Os valores padrões são 1 tanto para a largura quanto para a altura.

b) Um campo de dado do tipo String chamado cor que especifica a cor do retângulo. Para este exercício em particular, assuma que TODOS os retângulos possuirão a mesma cor. A cor padrão é branco.

c) Um construtor sem argumentos que cria um retângulo padrão.

d) Um construtor que cria um retângulo com a largura e altura especificadas.

e) Métodos get() e set() para os três campos de dados da classe.

f) Um método chamado getArea() que retorna a área do retângulo.

g) Um método chamado getPerimetro() que retorna o perímetro do retângulo.

Escreva um programa de teste que cria dois objetos da classe Retangulo. Sua saída deverá ser parecida com:



Resposta/Solução:

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

Retangulo.java

package estudos;

public class Retangulo {
  private double largura; // largura do retângulo
  private double altura; // altura do retângulo
  
  // O exercício pede que TODOS os retângulos tenham a mesma cor
  // consulte a dica http://www.arquivodecodigos.net/dicas/1158 para mais
  // detalhes sobre o modificador static
  private static String cor = "branco"; // cor do retângulo

  // construtor sem argumentos
  public Retangulo(){
    this.largura = 1;
    this.altura = 1;
  }

  // construtor que permite especificar a largura e a altura
  public Retangulo(double largura, double altura){
    this.largura = largura;
    this.altura = altura;
  }

  // obtém a altura
  public double getAltura() {
    return altura;
  }

  // define a altura
  public void setAltura(double altura){
    this.altura = altura;
  }

  // obtém a largura
  public double getLargura(){
    return largura;
  }

  // define a largura
  public void setLargura(double largura){
    this.largura = largura;
  }
  
  // obtém a cor de TODOS os retângulos
  public static String getCor(){
    return cor;
  }

  // define a cor de TODOS os retângulos
  public static void setCor(String cor){
    Retangulo.cor = cor;
  }

  // este método retorna a área do retângulo (em metros quadrados)
  public double getArea(){
    return (this.largura * this.altura);  
  }
  
  // este método retorna o perímetro do retângulo (em metros)
  public double getPerimetro(){
    return ((2 * this.largura) + (2 * this.altura));  
  }
}

Agora o teste no método main():

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // vamos criar uma instância da classe Retangulo com
    // os valores padrões
    Retangulo a = new Retangulo();
    
    // agora vamos informar a largura e a altura
    Retangulo b = new Retangulo(10, 5);
    
    // os dois retângulos terão a cor verde
    Retangulo.setCor("verde");
    
    // vamos mostrar os resultados do primeiro retângulo
    System.out.println("Primeiro retângulo");
    System.out.println("Largura: " + a.getLargura());
    System.out.println("Altura: " + a.getAltura());
    System.out.println("Cor: " + Retangulo.getCor());
    System.out.println("Área: " + a.getArea() + " metros quadrados");
    System.out.println("Perímetro: " + a.getPerimetro() + " metros");
    
    // vamos mostrar os resultados do segundo retângulo
    System.out.println("\nSegundo retângulo");
    System.out.println("Largura: " + b.getLargura());
    System.out.println("Altura: " + b.getAltura());
    System.out.println("Cor: " + Retangulo.getCor());
    System.out.println("Área: " + b.getArea() + " metros quadrados");
    System.out.println("Perímetro: " + b.getPerimetro() + " metros");
  }
}



Delphi ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros simples e montante usando Delphi

Quantidade de visualizações: 13485 vezes
O regime de juros será simples quando o percentual de juros incidir apenas sobre o valor principal. Sobre os juros gerados a cada período não incidirão novos juros. Valor Principal ou simplesmente principal é o valor inicial emprestado ou aplicado, antes de somarmos os juros. Transformando em fórmula temos:

J = P . i . n

Onde:

J = juros
P = principal (capital)
i = taxa de juros
n = número de períodos

Imaginemos uma dívida de R$ 2.000,00 que deverá ser paga com juros de 5% a.m. pelo regime de juros simples e o prazo para o pagamento é de 2 meses. O cálculo em Delphi pode ser feito assim:

procedure TForm1.Button1Click(Sender: TObject);
var
  principal, taxa, juros: double;
  meses: integer;
begin
  principal := 2000.00;
  taxa := 0.08;
  meses := 2;

  juros := principal * taxa * meses;

  ShowMessage('O total de juros a ser pago é: '
    + FloatToStr(juros));
end;

O montante da dívida pode ser obtido das seguintes formas:

a) Montante = Principal + Juros
b) Montante = Principal + (Principal x Taxa de juros x Número de períodos)

M = P . (1 + (i . n))

Veja o código:

procedure TForm1.Button1Click(Sender: TObject);
var
  principal, taxa, juros, montante: double;
  meses: integer;
begin
  principal := 2000.00;
  taxa := 0.08;
  meses := 2;

  juros := principal * taxa * meses;
  montante := principal * (1 + (taxa * meses));

  ShowMessage('O total de juros a ser pago é: '
    + FloatToStr(juros));
  ShowMessage('O montante a ser pago é: '
    + FloatToStr(montante));
end;

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


C# ::: Desafios e Lista de Exercícios Resolvidos ::: C# Básico

Exercício Resolvido de C# - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em C#

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

Escreva um programa C# para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo.

Sua saída deverá ser parecida com:

Informe um número inteiro: 16
O número informado foi: 16
O antecessor é 15
O sucessor é: 17
Resposta/Solução:

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

using System;

namespace Estudos {
  class Principal {
    static void Main(string[] args) {
      // vamos pedir ao usuário que informe um número inteiro
      Console.Write("Informe um número inteiro: ");
      int numero = Int32.Parse(Console.ReadLine());

      // vamos calcular o sucessor do número informado
      int sucessor = numero + 1;

      // vamos calcular o antecessor do número informado
      int antecessor = numero - 1;

      // e agora mostramos os resultados
      Console.WriteLine("O número informado foi: {0}", numero);
      Console.WriteLine("O antecessor é {0}", antecessor);
      Console.WriteLine("O sucessor é: {0}", sucessor);

      Console.WriteLine("\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercícios Resolvidos de Java - Como calcular e exibir os 50 primeiros números primos em Java

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

Um inteiro é um número primo se ele for divisível somente por 1 e por ele mesmo. Assim, 2, 3, 5 e 7 são primos, enquanto 4, 6, 8 e 9 não são. Note que o número 1 não é primo.

Escreva um programa (algorítmo) Java que usa um laço for, while ou do...while para calcular e exibir os 50 primeiros números primos.

Sua saída deverá ser parecida com:

50 primeiros numeros primos:

     2     3     5     7    11    13    17    19    23    29
    31    37    41    43    47    53    59    61    67    71
    73    79    83    89    97   101   103   107   109   113
   127   131   137   139   149   151   157   163   167   173
   179   181   191   193   197   199   211   223   227   229
Resposta/Solução:

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

package estudos;

public class Estudos {
  public static void main(String[] args) {
    int quantidade = 50; // quantidade de números primos
    int contador = 0; // quantidade de números primos encontrados
    int numero = 0; // inteiro inicial             
               
    // Lembre-se! O número 1 não é primo
    System.out.println(quantidade + " primeiros numeros primos:\n");
  
    // laço while será executado até encontrar os 50 primeiros números primos 
    while(contador < quantidade){
      boolean primo = true;
                       
      // se o valor de i for 7, a variável j do laço contará
      // de 2 até 7 / 2 (divisão inteira), ou seja, 3. Se o 
      // módulo de 7 por qualquer um dos valores neste intervalo 
      // for igual a 0, então o número não é primo
      for(int j = 2; j <= (numero / 2); j++){
        if(numero % j == 0){
          primo = false; // não é primo
          break;
        }
      }
    
      if((primo) && (numero > 1)){
        System.out.printf("%6d", numero);
        contador++; // encontramos um número primo
      
        if(contador % 10 == 0){
          System.out.println();
        }
      }  
      
      numero++;
    }
  }
}



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

Exercício Resolvido de C++ - Escreva um programa C++ que mostra como somar os elementos da diagonal secundária de uma matriz

Quantidade de visualizações: 15647 vezes
Exercícios Resolvidos de C++ - Escreva um programa C++ que mostra como somar os elementos da diagonal secundária de uma matriz

Pergunta/Tarefa:

Em álgebra linear, a diagonal secundária de uma matriz A é a coleção das entradas Aij em que [i]i[/i] + [i]j[/i] é igual a n + 1 (onde n é a ordem da matriz). A diagonal secundária de uma matriz quadrada une o seu canto inferior esquerdo ao canto superior direito (conforme mostrado na saída do problema proposto abaixo).

Escreva um programa C++ que declara uma matriz 3x3 e pede ao usuário para informar seus valores. Em seguida mostre todos os valores da matriz e a soma dos elementos da diagonal secundária. Sua saída deverá ser parecida com a imagem abaixo:



Resposta/Solução:

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

#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;

int main(int argc, char *argv[])
{
  int matriz[3][3]; // uma matriz de três linhas e três colunas
  int soma_diagonal = 0; // guarda a soma dos elementos na diagonal secundária

  // vamos ler os valores para os elementos da matriz
  for(int i = 0; i < 3; i++){ // linhas
    for(int j = 0; j < 3; j++){ // colunas
      cout << "Valor para a linha " << i << " e coluna " << j << ": ";
      cin >> matriz[i][j];       
    }       
  }
  
  // vamos mostrar a matriz da forma que ela foi informada
  cout << "\n\nValores na matriz\n" << endl;
  for(int i = 0; i < 3; i++){
    for(int j = 0; j < 3; j++){
      cout << setw(5) << matriz[i][j];   
    }
    
    cout << "\n" << endl;       
  }
  
  // vamos calcular a soma dos elementos da diagonal secundária
  int ordem = 3; // ordem da matriz
  for(int i = 1; i <= 3; i++){
    for(int j = 1; j <= 3; j++){
      if((i + j) == (ordem + 1)){
        soma_diagonal = soma_diagonal + matriz[i - 1][j - 1];
      }
    }
  }
  
  cout << "A soma dos elementos da diagonal secundaria e: " << 
    soma_diagonal << endl;
  cout << "\n" << endl;
  
  system("PAUSE");
  return EXIT_SUCCESS;
}



Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TField e Classes Derivadas

Como usar a classe TField em seus programas Delphi

Quantidade de visualizações: 12526 vezes
A classe TField (na unit DB) é um ancestral comum de todos os componentes que representam os campos de uma tabela no banco de dados (ou um dataset cujos dados foram carregados de um arquivo do tipo texto, binário ou XML). Esta classe encapsula o comportamento comum a todos os demais componentes to tipo field (campo).

Veja sua posição na hierarquia de classes do Delphi:

System.TObject
  Classes.TPersistent
    Classes.TComponent
      DB.TField
Esta classe ainda implementa as interfaces Classes.IInterfaceComponentReference e System.IInterface.

A classe TField apresenta propriedades, eventos e métodos que são usados para as seguintes tarefas:

1) Alterar o valor de um campo em um dataset;

2) Converter o valor de um campo de um tipo para outro tipo;

3) Efetuar validações nos dados informados pelos usuários para determinados campos;

4) Definir como as informações dos campos são mostradas em tempo de exibição ou para edição;

5) Calcular o valor de um campo a partir de código escrito no evento OnCalcFields do dataset;

6) Pesquisar o valor do campo a partir de outro dataset.

Em geral não criamos instâncias da classe TField diretamente. Componentes que descendem de TField são criados automaticamente a cada vez que o dataset é ativado. Estes descendentes podem ser dinâmicos (o padrão) ou persistentes. Componentes campos dinâmicos refletem as colunas dos metadados da tabela a qual pertencem no momento que o dataset é aberto. Componentes campos persistentes são criados em tempo de design usando o editor Fields, que especifica os campos no dataset, suas propriedades e a ordem em que deverão estar.

A criação de componentes de campos persistentes garante que todas as vezes que uma aplicação for executada, ela usará e exibirá as mesmas colunas, na mesma ordem, até mesmo se a estrutura física da base de dados mudar. Se uma coluna em uma tabela na qual um componente de campo persistente é baseado for excluída ou alterada, o IDE gera uma exceção em vez de permitir a abertura do dataset usando um coluna não existente ou incompatível. Se isso acontecer, devemos remover o camponente field para o campo não existente usando o editor Fields.

Um campo (field) em um dataset é sempre tratado como uma das classes descendentes de TField abaixo:

        
TADTField          TDateField         TReferenceField   
TAggregateField    TDateTimeField     TSmallIntField   
TArrayField        TFloatField        TSQLTimeStampField   
TAutoIncField      TFMTBCDField       TStringField   
TBCDField          TGraphicField      TTimeField   
TBinaryField       TGuidField         TVarBytesField   
TBlobField         TIDispatchField    TVariantField   
TBooleanField      TIntegerField      TWideStringField   
TBytesField        TInterfaceField    TWordField   
TCurrencyField     TLargeintField     TDataSetField   
TMemoField     
Veja um trecho de código no qual usamos o método FieldByName() da classe TDataSet para obter uma referência a um determinado campo (field) de um ClientDataSet e usamos sua propriedade AsString para obter o valor do campo:

procedure TForm3.Button3Click(Sender: TObject);
var
  campo: TField;
begin
  // vamos obter o campo com o nome "titulo" do registro atual
  campo := ClientDataSet1.FieldByName('titulo');

  // vamos mostrar o valor do campo
  ShowMessage('O valor do campo é: ' + campo.AsString);
end;

Ao executarmos este código teremos um resultado parecido com:

"O valor do campo é: Programando em Java".

Esta dica foi escrita e testada no Delphi 2009.


C# ::: Windows Forms ::: DataGridView

Como ocultar ou exibir os títulos das colunas de um DataGridView do C# Windows Forms usando a propriedade ColumnHeadersVisible

Quantidade de visualizações: 8040 vezes
Os títulos das colunas de um DataGridView podem ser ocultados definindo-se o valor false para a propriedade ColumnHeadersVisible. Veja:

dataGridView1.ColumnHeadersVisible = false;

Para exibir os títulos das colunas novamente só precisamos fornecer o valor true. Veja:

dataGridView1.ColumnHeadersVisible = true;



JavaScript ::: Dicas & Truques ::: Tratamento de Erros

Como retornar o nome ou tipo de exceção de um erro em JavaScript usando a propriedade name do objeto Error

Quantidade de visualizações: 7120 vezes
Em várias situações nós precisamos saber o nome do tipo de erro de tempo de execução em JavaScript. Para isso nós podemos usar a propriedade name do objeto Error.

Veja um código JavaScript completo demonstrando o seu uso:

<!doctype html>
<html>
<head>
  <title>Estudos JavaScript</title>
</head>
<body>

<script language="javascript">
  // o trecho de código a seguir vai provocar
  // um erro de tempo de execução em JavaScript
  try{
    // y não foi definido
    var x = y;
  }
  catch(e){
    document.write("Tipo do erro: " + e.name);
  }
</script>
  
</body>
</html>

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

Tipo do erro: ReferenceError

A propriedade name do objeto Error pode retornar os seguintes valores:

EvalError - Um erro provocado pela função eval.
RangeError - Um erro provocado por um número fora da faixa permitida.
ReferenceError - Uma referência ilegal provocou o erro.
SyntaxError - Um erro de sintáxe.
TypeError - Um erro provocado por uma conversão de tipos.
URIError - Provocado por um erro na função encodeURI().

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



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