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 Apenas R$ 19,90
Portugol ::: Dicas & Truques ::: Laços de Repetição

Como somar os dígitos de um número em Portugol usando o laço ENQUANTO - Solução para número inteiro de qualquer tamanho

Quantidade de visualizações: 437 vezes
Em algumas situações nós precisamos obter e retornar a soma dos dígitos de um número inteiro positivo. Em nosso site você encontra alguns exemplos de como isso pode ser feito.

No entanto, ao contrário das outras dicas, aqui eu mostro como somar os dígitos de um número informado pelo usuário sem fixar o seu tamanho, ou seja, não há limites para a quantidade de dígitos.

Veja o código Portugol completo para o exemplo:

// Como somar os dígitos de um número em Portugol
programa {
  funcao inicio() {
    inteiro numero, soma

    // inicia a soma como zero
    soma = 0

    // vamos pedir um número inteiro positivo
    escreva("Informe um número inteiro positivo: ")
    // lê o número informado
    leia(numero)

    // enquanto o número for diferente de 0
    enquanto (numero != 0) {
      // adiciona à soma o resultado da divisão do número por 10
      soma = soma + (numero % 10)
      // agora dividimos os número por 10 (divisão inteira) e continuamos
      numero = inteiro(numero / 10)
    }

    // e mostramos o resultado
    escreva("A soma dos dígitos é: ", soma)
  }
}

Ao executar este código Portugol Web Studio nós teremos o seguinte resultado:

Informe um número inteiro positivo: 1273
A soma dos dígitos é: 13


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteiros

Quantidade de visualizações: 8944 vezes
Exercício Resolvido de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteiros

Pergunta/Tarefa:

O máximo divisor comum ou MDC (mdc) entre dois ou mais números inteiros é o maior número inteiro que é fator de tais números. Por exemplo, os divisores comuns de 12 e 18 são 1, 2, 3 e 6, logo mdc(12, 18) = 6. A definição abrange qualquer número de termos, por exemplo mdc(10, 15, 25, 30) = 5.

O cálculo do MDC entre x e y pode ser feito recursivamente da seguinte forma: Se y for igual a 0, então mdc(x, y) = x. Caso contrário, mdc(x, y) = mdc(y, x % y), no qual % é o operador de módulo (restante da divisão inteira).

Escreva um método recursivo que receba dois inteiros e calcule o mdc. Seu método deverá possuir a seguinte assinatura:

public static int mdc(int x, int y){
  // sua implementação aqui
}
Sua saída deverá ser parecida com:

Informe o primeiro inteiro: 12
Informe o segundo inteiro: 18
O MDC dos valores 12 e 18 é 6
Resposta/Solução:

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

package exercicio;

import java.util.Scanner;

public class Exercicio {
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    
    // vamos solicitar dois valores inteiros
    System.out.print("Informe o primeiro inteiro: ");
    // lê o primeiro inteiro
    int a = Integer.parseInt(entrada.nextLine());
    // solicita o segundo inteiro
    System.out.print("Informe o segundo inteiro: ");
    // lê o segundo inteiro
    int b = Integer.parseInt(entrada.nextLine());
    
    // mostra o resultado
    System.out.print("O MDC dos valores " + a + " e " +
      b + " é " + mdc(a, b));
    System.out.println("\n");
  }
  
  // método recursivo que calcula o mdc de dois inteiros
  public static int mdc(int x, int y){
    // a recursividade é interrompida quando y for igual a 0
    if(y == 0){
      return x;
    }
    else{
      return mdc(y, x % y); // efetua uma nova chamada recursiva
    }
  }
}



Java ::: Aplicativos Completos ::: Fontes

Como criar um visualizador de fontes em Java Swing - Código fonte completo

Quantidade de visualizações: 10519 vezes
Código completo Java: Como escrever um visualizador de fontes em Java Swing

Nesta dica eu mostro o código completo para uma aplicação GUI usado Java Swing e que permite visualizar as fontes instaladas no sistema. Ao clicar em uma das fontes exibidas em uma JList, o texto da JLabel é formatado de acordo com a fonte escolhida.

Note que montei toda a GUI em código mesmo, ou seja, sem usar o editor visual do Netbeans ou outra IDE. Esse é um bom exercício para entender os elementos que compõem interfaces gráficas do Java Swing.

Eis o código completo para o exemplo:

package arquivodecodigos;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
 
public class Estudos extends JFrame
    implements ListSelectionListener{
  JLabel label = new JLabel("Observe este texto");  
 
  public Estudos(){
    super("Visualizados de Fontes");
     
    String[] fontNames; // nomes das fontes
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    fontNames = 
      GraphicsEnvironment.getLocalGraphicsEnvironment().
      getAvailableFontFamilyNames();
    Vector fonts = new Vector();
 
    for(int i = 0; i < fontNames.length; i++){
      fonts.add(new Font(fontNames[i], Font.PLAIN, 16));
    }    
 
    JList fontList = new JList(fonts);
    fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    fontList.setCellRenderer(new FontCellRenderer());
    JScrollPane scrollPane = new JScrollPane(fontList);
 
    JPanel p = new JPanel();
    p.add(scrollPane);
    fontList.addListSelectionListener(this);
    getContentPane().add(p, "Center");
    getContentPane().add(label, "South");
 
    setSize(500, 250);
    setVisible(true);
  }
 
  @Override
  public void valueChanged(ListSelectionEvent evt){
    JList source = (JList) evt.getSource();
    Font font = (Font) source.getSelectedValue();
    label.setFont(font);
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
 
// Classe personalizada que implementa ListCellRenderer 
class FontCellRenderer implements ListCellRenderer{
  @Override
  public Component getListCellRendererComponent(
    final JList list, final Object value, 
    final int index, final boolean isSelected,
    final boolean cellHasFocus){
     
    return new JPanel(){
      @Override
      public void paintComponent(Graphics g){
        super.paintComponent(g);
        Font font = (Font) value;
        String text = font.getFamily();
        FontMetrics fm = g.getFontMetrics(font);
        g.setColor(isSelected ? list.getSelectionBackground() 
          : list.getBackground());
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(isSelected ? list.getSelectionForeground() 
          : list.getForeground());
        g.setFont(font);
        g.drawString(text, 0, fm.getAscent());
      }
 
      @Override
      public Dimension getPreferredSize() {
        Font font = (Font) value;
        String text = font.getFamily();
        Graphics g = getGraphics();
        FontMetrics fm = g.getFontMetrics(font);
        return new Dimension(fm.stringWidth(text), fm.getHeight());
      }
    };
  }
}

Ao executá-lo você terá um resultado parecido com:




C# ::: Dicas & Truques ::: Data e Hora

Como adicionar ou subtrair dias de uma data em C# usando o método AddDays() da classe DateTime

Quantidade de visualizações: 27004 vezes
Em algumas situações nossos códigos precisam adicionar ou subtrair dias de uma data. Isso pode ser feito com o auxílio do método AddDays() da estrutura DateTime. Este método recebe o número de dias 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 5 dias à 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 5 dias à data de hoje
  DateTime data_futura = hoje.AddDays(5);

  // exibe a data daqui a cinco dias
  System.Console.WriteLine("Daqui a 5 dias será {0:d}", data_futura);

  // pausa o programa
  System.Console.Write("\nPressione qualquer tecla para sair...");
  Console.ReadKey();
}

É possível também subtrair dias. Para isso só precisamos fornecer um valor negativo para o método AddDays(). 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 7 dias da data de hoje
  DateTime data_passado = hoje.AddDays(-7);

  // exibe a data sete dias atrás
  System.Console.WriteLine("Há 7 dias era {0:d}", data_passado);

  // pausa o programa
  System.Console.Write("\nPressione qualquer tecla para sair...");
  Console.ReadKey();
}

Lembre-se, contudo, que o método AddDays() 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.


Java ::: Dicas & Truques ::: Arquivos e Diretórios

Como escrever em um arquivo usando Java - Como escrever em um arquivo usando as classes BufferedWriter e FileWriter do Java

Quantidade de visualizações: 123 vezes
Nesta dica mostrarei como podemos usar a linguagem Java para escrever em um arquivo texto. Para isso nós vamos usar as classes BufferedWriter e FileWriter.

Veja o trecho de código completo para o exemplo:

package arquivodecodigos;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Estudos{
  public static void main(String args[]){
    try {
      BufferedWriter out = new BufferedWriter(new 
        FileWriter("C:\\estudos_java\\conteudo.txt"));
      out.write("Esta é a primeira linha de texto\r\n"); 
      out.write("Esta é a segunda linha de texto");
      out.close();
    }
    catch(IOException e){
      System.out.println("Houve um erro: " + e.getMessage());
    }

    System.out.println("Acabei de escrever no arquivo");
  }
} 

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

Acabei de escrever no arquivo.

Tenha cuidado. Se o arquivo já existir, o método write() da classe BufferedWriter vai sobrescrever o seu conteúdo. Por isso, é sempre uma boa idéia fazer uma verificação antes.


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

Como calcular desvio padrão em C - C para Matemática e Estatística

Quantidade de visualizações: 6474 vezes
Em Matemática e Estatística, o Desvio padrão (em inglês: Standard Deviation) é uma medida de dispersão, ou seja, é uma medida que indica o quanto um conjunto de dados é uniforme. Quando o desvio padrão é baixo, isso quer dizer que os dados do conjunto estão mais próximos da média.

Como calcular o desvio padrão de um conjunto de dados? Vamos começar analisando a fórmula mais difundida na matemática e na estatística:

\[\sigma = \sqrt{ \frac{\sum_{i=1}^N (x_i -\mu)^2}{N}}\]

Onde:

a) __$\sigma__$ é o desvio;
b) __$x_i__$ é um valor qualquer no conjunto de dados na posição i;
c) __$\mu__$ é a média aritmética dos valores do conjunto de dados;
d) N é a quantidade de valores no conjunto.

O somatório dentro da raiz quadrada nos diz que devemos somar todos os elementos do conjunto, desde a posição 1 até a posição n, subtrair cada valor pela média do conjunto e elevar ao quadrado. Obtida a soma, nós a dividimos pelo tamanho do conjunto.

Veja o código C completo que obtém o desvio padrão a partir de um conjunto de dados contendo quatro valores:

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

// função principal do programa
int main(int argc, char *argv[]){
  // conjunto dos dados
  float conjunto[] = {10, 30, 90, 30};
  float soma = 0.0; // soma dos elementos
  float desvio_padrao = 0.0; // desvio padrão
  int tam = 4; // tamanho dos dados
  int i;
  float media;

  // vamos somar todos os elementos
  for(i = 0; i < tam; i++){
    soma = soma + conjunto[i];
  }

  // agora obtemos a média do conjunto de dados    
  media = soma / tam;

  // e finalmente obtemos o desvio padrão
  for(i = 0; i < tam; i++){
    desvio_padrao = desvio_padrao + pow(conjunto[i] - media, 2);
  }
    
  // mostramos o resultado
  printf("Desvio Padrão Populacional: %f\n", sqrt(desvio_padrao / tam));
  printf("Desvio Padrão Amostral: %f", sqrt(desvio_padrao / (tam - 1)));
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

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

Desvio Padrão Populacional: 30.0
Desvio Padrão Amostral: 34.64101615137755

Veja que, para calcular o Desvio Padrão Populacional, nós dividimos o somatório pela quantidade de elementos no conjunto, enquanto, para calcular o Desvio Padrão Amostral, nós dividimos o somatório pela quantidade de elementos - 1 (cuidado com a divisão por zero no caso de um conjunto com apenas um elemento).


PHP ::: Dicas & Truques ::: Gráficos e Cores

Como obter o tipo de uma imagem usando a função getimagesize() do PHP

Quantidade de visualizações: 10271 vezes
Muitas vezes precisamos saber o tipo de uma imagem antes de processá-la. Nestes casos podemos usar a função getimagesize() da linguagem PHP e obter o tipo da imagem no terceiro valor retornado. Este valor é um número inteiro correspondente a algumas das constantes IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, etc. Veja um exemplo:

<?php
  // nome e local da imagem
  $imagem = "/home/xxxx/xxxx/public_html/imagem.jpg";
  
  // vamos obter o tipo da imagem...ele estará no terceiro 
  // elemento da lista
  list($largura, $altura, $tipo) = getimagesize($imagem);
  
  // testamos o tipo de imagem
  if($tipo == IMAGETYPE_JPEG)
    echo "O tipo da imagem é JPG ou JPEG";
  else if($tipo == IMAGETYPE_GIF)
    echo "O tipo da imagem é GIF";
  else if($tipo == IMAGETYPE_PNG)
    echo "O tipo da imagem é PNG"; 
  else
    echo "O tipo da imagem não está entre os tipos testados";
?>

Ao executar este código você terá um resultado parecido com:

O tipo da imagem é JPG ou JPEG



C ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Exercício Resolvido de C - Como converter minutos em segundos usando C

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

Escreva um programa C para converter minutos em segundos. Você deverá criar uma função converter() que receberá, como argumento, um número inteiro representando os minutos e retornará, também como um inteiro, os segundos correspondentes. Os minutos deverão ser informados pelo usuário.

Sua saída deverá ser parecida com:

Informe os minutos: 15
A quantidade de segundos é: 900
Resposta/Solução:

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

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

// protótipo da função usada para converter minutos
// em segundos
int converter(int minutos);

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int minutos, segundos;
  
  setlocale(LC_ALL,""); // para acentos do português
 
  // vamos pedir para o usuário informar os minutos
  printf("Informe os minutos: ");
  scanf("%d", &minutos);
  
  // agora vamos chamar a função converter() para converter
  // os minutos em segundos
  segundos = converter(minutos);
  
  // e mostramos o resultado
  printf("A quantidade de segundos é: %d", segundos);
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}

// função usada para converter minutos em segundos
int converter(int minutos){
  int segundos = minutos * 60;
  return segundos;
}



C# ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators)

Exercícios Resolvidos de C# - Como converter de decimal para binário usando os operadores de bits em C#

Quantidade de visualizações: 1052 vezes
Este desafio de programação faz parte da nossa lista de exercícios resolvidos de C#.

Pergunta/Tarefa:

Escreva um programa C# para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits.

Sua saída deverá ser parecida com:

Informe um número decimal: 9
O número binário é: 00000000000000000000000000001001
Resposta/Solução:

Veja a resolução completa para o exercício em C#, comentada linha a linha:

using System;

namespace Estudos {
  class Principal {
    // vamos definir o tamanho do vetor para guardar
    // os dígitos do número binário
    const int TAM_INT = sizeof(int) * 8;

    static void Main(string[] args) {
      // variáveis para ajudar a resolver o problema
      int dec, indice;

      // vetor para guardar o número binário
      int[] binario = new int[TAM_INT];

      // vamos pedir para o usuário informar um decimal inteiro
      Console.Write("Informe um número decimal: ");
      dec = int.Parse(Console.ReadLine());

      // ajustamos índice para o último elemento do vetor
      indice = TAM_INT - 1;

      // enquanto índice for maior ou igual a 0
      while (indice >= 0) {
        // vamos guardar o bit menos significativo LSB
        binario[indice] = dec & 1;

        // diminuímos o índice
        indice--;

        // desloca bits para a direita uma posição
        dec = dec >> 1;
      }

      // agora vamos exibir o número binário
      Console.Write("O número binário é: ");
      for (int i = 0; i < TAM_INT; i++) {
        Console.Write(binario[i]);
      }

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



Android Java ::: android.widget ::: Button

Como detectar um clique em um botão do Android usando o evento onClick no XML de layout

Quantidade de visualizações: 2303 vezes
Nesta dica mostrarei como podemos detectar um clique em um botão usando o evento onClick diretamente no arquivo XML de layout. No entanto, para usar este artifício, algumas regras devem ser seguidas:

a) O método chamado pelo clique do botão deverá ser public e retornar void;
b) O único parâmetro do método deverá conter apenas um objeto da classe View, representando a view na qual o evento onclick ocorreu.

Veja um exemplo completo no qual detectamos o clique no botão e exibimos uma mensagem AlertDialog contendo apenas um botão OK. Comece analisando o XML de layout (o nome do botão foi definido no arquivo strings.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
  http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  tools:context=".MainActivity">

  <Button xmlns:android="
    http://schemas.android.com/apk/res/android"
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btn_enviar"
    android:onClick="enviarMensagem"
    />

</LinearLayout>

Veja agora o código Java no MainActivity.java:

package com.example.estudosandroid;

import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.app.AlertDialog;

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  // método público que será chamado ao clicarmos no botão
  public void enviarMensagem(View view) {
    AlertDialog dialogo = new 
      AlertDialog.Builder(MainActivity.this).create();
    dialogo.setTitle("Aviso");
    dialogo.setMessage("Esta é uma mensagem de aviso");
    dialogo.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, 
          int which){
          dialog.dismiss(); // fecha o AlertDialog
        }
      }
    );

    dialogo.show();
  }
}


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á 36 usuários muito felizes estudando em nosso site.