Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.

JavaScript ::: Dicas & Truques ::: Data e Hora

Como subtrair dias de uma data em JavaScript - Data e horas em JavaScript

Quantidade de visualizações: 16817 vezes
Em algumas situações, principalmente quando estamos desenvolvendo aplicações que envolvem datas, horas e calendários em JavaScript, nós precisamos subtrair dias de uma data. Nesta dica eu mostro como isso pode ser feito.

Veja o código completo abaixo:

<html>
<head>
<title>Estudando JavaScript</title>
</head>
<body>
 
<script type="text/javascript">
  function subtrairDias(data, dias){
    return new Date(data.getTime() - 
    (dias * 24 * 60 * 60 * 1000));
  }
 
  document.write('Hoje é: ' + 
    (new Date()).toLocaleDateString() + '<br>');
  document.write('5 dias atrás era: ' + 
    subtrairDias(new Date(), 5).toLocaleDateString());
</script>
 
</body>
</html>

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

Hoje é: 25/03/2021
5 dias atrás era: 20/03/2021


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

Exercícios Resolvidos de Java - Um programa que calcule e mostre a tabuada de multiplicação de um número digitado pelo usuário (entre 1 e 10)

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

Escreva um programa Java que usa o laço for para calcular a tabuada de multiplicação para um número digitado pelo usuário. Este número deve estar entre 1 e 10 (inclusive).

Sua saída deve ser parecida com:

Informe um valor entre 1 e 10: 8

A tabuada do número 8 é:

8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
8 X 10 = 80
Resposta/Solução:

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

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
    
    // vamos solicitar que o usuário informe um inteiro entre 1 e 10
    System.out.print("Informe um valor entre 1 e 10: ");
    int numero = Integer.parseInt(entrada.nextLine());
    
    // vamos verificar se o valor está na faixa desejada
    if((numero < 1) || (numero > 10)){
      System.out.println("O número deve ser entre 1 e 10");
    }
    else{
      // o número é válido....vamos exibir a tabuada
      System.out.println("\nA tabuada do número " + numero + " é:\n");
      
      for(int i = 1; i <= 10; i++){
        System.out.println(numero + " X " + i + " = " + (numero * i));  
      }  
    }
    
    System.out.println("\n");
  }
}



C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço do...while da linguagem C#

Quantidade de visualizações: 11916 vezes
O laço do...while (faça...enquanto) é usado quando queremos repetir uma instrução ou bloco de instruções ENQUANTO uma condição for satisfatória. A única diferença entre este laço e o laço while, é que, no laço do...while a condição de parada é testada após a iteração, o que garante que o laço do...while será executado no mínimo uma vez. No laço while a condição é testada antes da iteração. Veja um exemplo:

static void Main(string[] args){
  int valor = 1;

  do{
    Console.WriteLine("{0}", valor);
    valor++;
  }while(valor <= 10);

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

Este trecho de código conta de 1 até 10. Veja que após cada iteração do laço nós testamos se o valor da variável de controle é menor ou igual a 10. A próxima iteração acontece somente se esta condição for satisfeita. Note ainda que dentro de cada iteração nós incrementamos o valor da variável de controle. Isso é feito para que o laço não seja executado infinitamente.

Veja um outro exemplo de laço do...while, desta vez simulando um menu de opções:

static void Main(string[] args){
  // variável que registra a opção do usuário
  int opcao;

  // laço do..while que mostra as opções do menu enquanto
  // o valor -1 não for informado
  do{
    // lê a opção
    Console.Write("Informe a opção 1, 2 ou 3" +
      " (-1 para sair): ");
    opcao = int.Parse(Console.ReadLine());

    switch (opcao){
      case 1:
        Console.WriteLine("Executando a opção 1");
        break;
      case 2:
        Console.WriteLine("Executando a opção 2");
        break;
      case 3:
        Console.WriteLine("Executando a opção 3");
        break;
      default:
        Console.WriteLine("Opção incorreta");
        break;
    }
  }while(opcao != -1);

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

O laço do...while não é tão usado quanto o laço while. Use-o naquelas situações em que o laço deverá ser executado no mínimo uma vez.


JavaScript ::: Dicas & Truques ::: Set (Conjunto)

Como retornar elementos presentes no primeiro vetor e não presentes no segundo vetor em JavaScript usando o objeto Set

Quantidade de visualizações: 1485 vezes
Este é um código muito interessante de ser feito em JavaScript. Dados dois arrays a e b, temos que retornar os números que estão presentes no primeiro array, mas que não estão presentes no segundo array.

Este código pode ser escrito usando diversas abordagens. Nesta dica mostrarei como resolvê-lo usando um objeto Set, adicionado à linguagem JavaScript na revisão ECMAScript 2015, também chamada de ES6 e ECMAScript 6.

Vamos ao código então:

<html>
<head>
  <title>O objeto Set do JavaScript</title>
</head>
<body>

<script type="text/javascript">
  // primeiro vetor
  var a = [4, 8, 1, 23, 65];
  // segundo vetor
  var b = [23, 8, 90, 3, 7];
  // vetor resultante
  var c = [];
  
  // criamos um objeto Set e guardamos nele os
  // elementos do segundo vetor
  var set = new Set();
  for (var i = 0; i < b.length; i++){
    set.add(b[i]);
  }
  
  // agora varremos o primeiro vetor e usamos
  // o método has() do objeto Set para verificar se
  // o valor não está contido nele
  for (var i = 0; i < a.length; i++){
    if(!set.has(a[i])){
      c.push(a[i]);
    }
  }
  
  document.writeln("Primeiro vetor: " + a);
  document.writeln("<br>Segundo vetor: " + b);
  document.writeln("<br>Resultado: " + c);
</script>

</body>
</html>

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

Primeiro vetor: 4, 8, 1, 23, 65
Segundo vetor: 23, 8, 90, 3, 7
Resultado: 4, 1, 65

Note que os valores 4, 1 e 65 estão presentes no primeiro array mas não estão presentes no segundo.


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

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

Quantidade de visualizações: 1144 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 C 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 C console:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
  
int main(int argc, char *argv[]){
  int ano;
	
  setlocale(LC_ALL,""); // para acentos do português
  
  // vamos solicitar que o usuário informe um ano
  printf("Informe o ano: ");
  scanf("%d", &ano);
	
  // vamos verificar se o ano informado é bissexto
  if(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)){
    printf("\nO ano informado é bissexto.\n");  
  }
  else{
    printf("\nO ano informado não é bissexto.\n");  
  }
    
  printf("\n\n");
  system("pause");
  return 0;
}



LISP ::: Fundamentos da Linguagem ::: Variáveis e Constantes

Como declarar variáveis globais em Lisp usando as funções defvar e defparameter

Quantidade de visualizações: 1130 vezes
Em algumas situações nós precisamos declarar variáveis globais em Lisp, ou melhor, em Common Lisp, que é a padronização da Lisp que adotamos para estas dicas.

Variáveis globais em Common Lisp se comportam de forma idêntica àquelas de outras linguagens de programação, ou seja, possuem valores permanentes por todo o sistema Lisp e mantém seus valores até que novos valores são especificados.

Se quisermos, por exemplo, a partir do corpo de uma função acessar uma variável fora dela, então esta variável deverá ser declarada globalmente.

Em Common List nós podemos declarar variáveis globais usando as funções defvar e defparameter. Vamos ver exemplos envolvendo as duas e no final desta dica eu mostro a diferença.

Veja um trecho de código Common Lisp na qual declaramos uma variável global chamada valor e a acessamos de dentro de uma função:

; vamos declarar uma variável global
(defvar valor 10)

; vamos mostrar o valor atual da variável global
(format t "O valor da variável global é ~D" valor)

; agora vamos acessar a variável global
; de dentro de uma função
(defun ModificaValor()
  ; vamos alterar o valor da variável global
  (setq valor 50)
)

; chamamos a função ModificaValor
(ModificaValor)

; e checamos se o valor da variável global foi
; mesmo alterado
(terpri)
(format t "O valor da variável global é ~D" valor)

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

O valor da variável global é 10
O valor da variável global é 50

Veja agora um trecho de código Common Lisp no qual usamos a função defparameter para declarar e inicializar as variáveis globais:

; vamos declarar três variáveis globais
(defparameter *a* 5)
(defparameter *b* 3)
(defparameter *soma* 0)

; agora vamos acessar as variáveis globais
; de dentro de uma função
(defun Somar()
  ; vamos somar as duas variáveis globais
  ; e guardar o resultado em uma terceira
  ; variáveis global
  (setq *soma* (+ *a* *b*))
)

; chamamos a função Somar
(Somar)

; e mostramos o resultado da soma
(format t "A soma das variáveis globais é ~D" *soma*)

Ao executar este novo código Common Lisp nós teremos o seguinte resultado:

A soma das variáveis globais é 8

Note que coloquei asteríscos (*) ao redor dos nomes das variáveis globais. Esta é uma prática comum entre programadores Lisp e altamente recomendado pelo comunidade, pois facilita a distinção entre variáveis globais e locais.

Então, qual é a diferença entre defvar e defparameter?

A primeira delas é que a função defparameter nos obriga a informar o valor inicial para a variável global, enquanto a função defvar não o faz.

A segunda diferença é que, ao redefinirmos o valor de uma variável global usando defparameter, o valor armazenado anteriormente será sobreposto, enquanto a função defvar não altera o valor anterior.


Java ::: Tratamento de Erros ::: Erros de Tempo de Execução

Tratamento de erros em Java - Como tratar o erro ArrayIndexOutOfBoundsException em Java

Quantidade de visualizações: 18481 vezes
A exceção ArrayIndexOutOfBoundsException é uma exceção (erro) que acontece quando fornecemos um índice fora dos limites permitidos para o acesso de elementos em um vetor ou matriz (array). Lembre-se de que os índices em Java começam em 0 e vão até a quantidade de elementos menos 1.

Antes de vermos os exemplos, observe a posição da classe pública ArrayIndexOutOfBoundsException na hierarquia de classes da plataforma Java:

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.lang.RuntimeException
        java.lang.IndexOutOfBoundsException
          java.lang.ArrayIndexOutOfBoundsException


Esta classe implementa a interface Serializable.

Veja um exemplo no qual tentamos acessar um elemento de um vetor ou matriz usando um índice inválido:

public class Estudos{
  public static void main(String args[]){
    // um array de quatro elementos
    int[] valores = {5, 23, 76, 3};     

    // vamos fornecer um índice inválido
    System.out.println(valores[4]); 

    System.exit(0);
  }
}

Este código compila normalmente. Porém, ao tentarmos executá-lo, temos a seguinte mensagem de erro:

Exception in thread "main" 
java.lang.ArrayIndexOutOfBoundsException: 4
  at Estudos.main(Estudos.java:7)


A forma mais adequada de corrigir este erro é fornecendo um valor de índice que realmente esteja na faixa permitida.


C# ::: Dicas & Truques ::: Tipos de Dados

Como usar o tipo bool da linguagem C# - Apostila C# para iniciantes

Quantidade de visualizações: 17855 vezes
O tipo bool do C# é um apelido para o tipo System.Boolean do .NET e pode representar apenas dois valores: True ou False. Este tipo é usado em expressões condicionais e, quando os valores True e False estiverem sendo usados como literais, estes deverão ser escritos como "true" e "false". Veja:

bool pode = true;
bool vencido = false;

Se escrevermos "True" e "False", teremos erros de compilação:

The name 'True' does not exist in the 
current context
The name 'False' does not exist in the 
current context


No entanto, se imprimirmos o valor de uma variável do tipo boolean usando Console.WriteLine(), teremos os valores "True" e "False". Experimente:

bool pode = true;
Console.WriteLine(pode);

Para saber a quantidade de bytes que um tipo bool ocupa, podemos usar o método sizeof(). Veja:

Console.WriteLine("Um boolean ocupa " + sizeof(bool) +
  " bytes no C# 2.0");

Este código exibirá:

Um boolean ocupa 1 bytes no C# 2.0


Em C++, um valor de tipo bool pode ser convertido para um valor do tipo int, ou seja, false é equivalente à zero e true é equivalente à um valor diferente de zero. Em C# isso não é possível. Veja o que acontece quando tentamos converter um tipo int para um tipo boolean:

int pode = 1;

if(pode)
  Console.WriteLine("OK");

A mensagem de erro de compilação é:

Cannot implicitly convert type 'int' to 'bool'



C# ::: Dicas & Truques ::: Gráficos

Como desenhar retângulos em C# usando a função DrawRectangle() da classe Graphics do C# - Computação Gráfica em C#

Quantidade de visualizações: 11393 vezes
Retângulos podem ser desenhados em C# e Windows Forms usando o método DrawRectangle() da classe Graphics. Este método pede a caneta de desenho (um objeto da classe Pen), as coordenadas do canto superior esquerdo e a largura e altura do retângulo. Veja a assinatura do método DrawRectangle() mais comumente usada:

Graphics.DrawRectangle(Pen, Single, Single, Single, Single)


Veja um trecho de código no qual desenhamos um retângulo com 250 pixels de largura por 150 pixels de altura:

private void button1_Click(object sender, EventArgs e){
  // vamos obter o Graphics do formulário
  Graphics g = this.CreateGraphics();

  // vamos desenhar um retângulo de 250 pixels de largura por 150
  // pixels de altura
  g.DrawRectangle(new Pen(Color.Red, 1), 50, 50, 250, 150);

  // vamos liberar o objeto Graphics
  g.Dispose();
}

As coordenadas do canto superior esquerdo e a largura e altura do retângulo podem ser especificadas como um objeto da estrutura Rectangle. Veja:

private void button1_Click(object sender, EventArgs e){
  // vamos obter o Graphics do formulário
  Graphics g = this.CreateGraphics();

  // vamos desenhar um retângulo de 250 pixels de largura por 150
  // pixels de altura
  g.DrawRectangle(new Pen(Color.Red, 1), 
    new Rectangle(100, 100, 250, 150));

  // vamos liberar o objeto Graphics
  g.Dispose();
}



Java ::: Java + MySQL ::: Passos Iniciais

Java MySQL - Como efetuar uma conexão Java + JDBC + MySQL usando o NetBeans IDE

Quantidade de visualizações: 8429 vezes
Se sua intenção é usar a linguagem Java em combinação com o banco de dados MySQL, o primeiro passo é aprender como se conectar a este banco de dados usando JDBC (Java Database Connectivity). Para isso, siga atentamente os passos abaixo:

a) Pesquise e baixe o driver Sun Microsystem's JDBC Driver for MySQL. A versão mais recente deste driver é chamada de MySQL Connector/J e pode ser baixada no endereço http://dev.mysql.com/downloads. Durante a autoria deste artigo, o nome do arquivo a ser baixado era semelhante à mysql-connector-java-5.1.10.zip.

b) Depois de descompactar o arquivo baixado, adicione uma referência para o Jar mysql-connector-java-5.1.10-bin.jar. Se você estiver usando NetBeans, crie uma nova aplicação. Em seguida clique com o botão direito em Bibliotecas -> Adicionar Jar/pasta e localize o jar. Em seguida clique o botão Open.

c) Hora de efetuar uma conexão com o banco de dados. Para este exemplo eu fiz uma conexão com o MySQL 5.0 (o nome da base de dados que usei foi "estudos"). Veja o código:

package estudosjavamysql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class EstudosJavaMySQL{
  public static void main(String[] args){
    // strings de conexão
    String databaseURL = "jdbc:mysql://localhost/estudos";
    String usuario = "root";
    String senha = "osmar1234";
    String driverName = "com.mysql.jdbc.Driver";
    
    try {
      Class.forName(driverName).newInstance();
      Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);
      System.out.println("Conexão obtida com sucesso.");
    }
    catch (SQLException ex) {
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    catch (Exception e) {
      System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
    } 
  }
}

Execute a aplicação. Se tudo correu bem você verá o resultado:

Conexão obtida com sucesso.

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


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 Apenas R$ 32,90


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