segunda-feira, 29 de abril de 2013

Introdução à Linguagem Python (aula 1)

    Olá, galera!

    Esta é primeira aula de uma série de aulas sobre assuntos distintos aos apresentados em sala de aula. A ideia por trás destas aulas é apresentar a vocês assuntos interessantes extra-aula, a fim de despertar em vocês o interesse pelo out-of-box thinking (pensando "fora da caixa"). Ou seja, perceber a necessidade em não se prender ao conteúdo apresentado em sala de aula e despertar o interesse à pesquisa por tecnologias diferentes e interessantes.
    Nesta primeira aula eu apresento uma introdução à linguagem de programação Python, falando do que ela se trata e porquê vale a pena aprender a programar nesta linguagem. Esta é a primeira de algumas aulas sobre Python que publicarei aqui no blog. Boa leitura e let's code!



sexta-feira, 26 de abril de 2013

Fatores Humanos

    Olá, galera!

    Nesta aula eu falo brevemente a respeito dos fatores humanos na criação de interfaces. A aula explora os mecanismos do cérebro humano, abordando como processamos informações e percebemos o nosso ambiente. Abraço!



segunda-feira, 22 de abril de 2013

Laços de repetição

    Olá, galera!

    Nesta aula eu falo detalhadamente sobre laços de repetição. Por meio de um exemplo corrente, eu explico o motivo pelo qual utilizamos laços de repetição e como utilizar cada um dos laços. Abraço! (P.S.: ao mais apressados: eu não falei sobre o laço for each pois explicarei ele com detalhes na aula sobre vetores e matrizes. Ah! Eu já falei sobre isto nesta aula aqui.)




Classe ExemploWhile

import java.util.Scanner;

public class ExemploWhile {

 public static void main(String[] args) {
  System.out.println("Digite um numero inteiro positivo:");
  Scanner leitor = new Scanner(System.in);
  int n = leitor.nextInt();
  // Garantindo que o valor de numero seja positivo...
  if (n < 0) {
   n = n * -1;
  } else if (n == 0) {
   n = 1;
  }
  int contador = 1;
  while (contador <= n) {
   System.out.print(contador + " ");
   contador++;
  }
  leitor.close();
 }

}


Classe ExemploDoWhile

import java.util.Scanner;

public class ExemploDoWhile {

 public static void main(String[] args) {
  System.out.println("Digite um numero inteiro positivo:");
  Scanner leitor = new Scanner(System.in);
  int n = leitor.nextInt();
  // Garantindo que o valor de numero seja positivo...
  if (n < 0) {
   n = n * -1;
  } else if (n == 0) {
   n = 1;
  }
  int contador = 0;
  do {
   contador++;
   System.out.print(contador + " ");
  } while (contador < n);
  leitor.close();
 }

}


Classe ExemploFor

import java.util.Scanner;

public class ExemploFor {

 public static void main(String[] args) {
  System.out.println("Digite um numero inteiro positivo:");
  Scanner leitor = new Scanner(System.in);
  int n = leitor.nextInt();
  // Garantindo que o valor de numero seja positivo...
  if (n < 0) {
   n = n * -1;
  } else if (n == 0) {
   n = 1;
  }
  for(int contador = 1; contador <= n; contador++) {
   System.out.print(contador + " ");
  }
  leitor.close();
 }

}


Classe ExemploFor2

import java.util.Scanner;

public class ExemploFor2 {

 public static void main(String[] args) {
  System.out.println("Digite um numero inteiro positivo:");
  Scanner leitor = new Scanner(System.in);
  int n = leitor.nextInt();
  // Garantindo que o valor de numero seja positivo...
  if (n < 0) {
   n = n * -1;
  } else if (n == 0) {
   n = 1;
  }
  for(int contador = n, contador2 = n, contador3 = n; contador >= 0 && contador2 >= 0 && contador3 >= 0; contador--, contador2 -= 2, contador3 -= 3) {
   System.out.print("[" + contador + ", ");
   System.out.print(contador2 + ", ");
   System.out.print(contador3 + "] ");
  }
  leitor.close();
 }

}

quinta-feira, 18 de abril de 2013

Manipulação de Datas em Java

    Olá, galera!

    Nesta aula extra, eu ensino como armazenar e manipular datas em Java. Neste material você aprenderá a trabalhar as informações de data de forma mais avançada. Abraço!



terça-feira, 16 de abril de 2013

Classes e Objetos em Java

Olá, galera!

Nesta aula eu explico brevemente o uso de classes e objetos para encapsular tipos complexos. Explico também o uso de matrizes de classes. Abraço!




LEMBRETE: Para compilar as classes LeituraAluno e LeituraVariosAlunos, dado que elas necessitam da classe Aluno, você deverá realizar os seguintes passos:

- Crie os diretórios conforme a figura abaixo e coloque as classes Aluno, LeituraAluno e LeituraVariosAlunos dentro da pasta aula.



- Para compilar a classe LeituraAluno, por exemplo, você deverá entrar no primeiro diretório acima do diretório br e executar os seguintes comandos:
    
    No Linux:
     
     javac br/edu/ifms/aula/LeituraAluno.java
     java br.edu.ifms.aula.LeituraAluno

    No Windows:

    javac br/edu/ifms/aula/LeituraAluno.java
    java br.edu.ifms.aula.LeituraAluno



Classe Aluno

package br.edu.ifms.aula;

import java.util.Date;

public class Aluno {

 private String matricula;

 private String nomeCompleto;

 private char sexo;

 private String cpf;

 private Date dataNascimento;

 private String telefone;

 public String getMatricula() {
  return matricula;
 }

 public void setMatricula(String matricula) {
  this.matricula = matricula;
 }

 public String getNomeCompleto() {
  return nomeCompleto;
 }

 public void setNomeCompleto(String nomeCompleto) {
  this.nomeCompleto = nomeCompleto;
 }

 public char getSexo() {
  return sexo;
 }

 public void setSexo(char sexo) {
  this.sexo = sexo;
 }

 public String getCpf() {
  return cpf;
 }

 public void setCpf(String cpf) {
  this.cpf = cpf;
 }

 public Date getDataNascimento() {
  return dataNascimento;
 }

 public void setDataNascimento(Date dataNascimento) {
  this.dataNascimento = dataNascimento;
 }

 public String getTelefone() {
  return telefone;
 }

 public void setTelefone(String telefone) {
  this.telefone = telefone;
 }

}


Classe LeituraAluno

package br.edu.ifms.aula;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class LeituraAluno {

 public static void main(String[] args) {
  Aluno aluno = new Aluno();
  Scanner leitor = new Scanner(System.in);

  System.out.println("Digite a matricula:");
  String textoDigitado = leitor.nextLine();
  aluno.setMatricula(textoDigitado);

  System.out.println("Digite o nome completo:");
  textoDigitado = leitor.nextLine();
  aluno.setNomeCompleto(textoDigitado);

  System.out.println("Digite o CPF:");
  textoDigitado = leitor.nextLine();
  aluno.setCpf(textoDigitado);

  System.out.println("Digite a data de nascimento (dd/mm/aaaa):");
  textoDigitado = leitor.nextLine();
  SimpleDateFormat formatadorDeDatas = new SimpleDateFormat("dd/MM/yyyy");
  Date dataDigitada = null;
  try {
   dataDigitada = formatadorDeDatas.parse(textoDigitado);
  } catch (ParseException e) {
  }
  aluno.setDataNascimento(dataDigitada);

  System.out.println("Digite o telefone ((##)#####-####):");
  textoDigitado = leitor.nextLine();
  aluno.setTelefone(textoDigitado);

  System.out.println("Digite o sexo (M ou F):");
  textoDigitado = leitor.nextLine();
  char sexo = textoDigitado.charAt(0);
  aluno.setSexo(sexo);

  System.out.println("Dados do aluno: " + aluno.getNomeCompleto()
    + " lidos com sucesso!");

  leitor.close();
 }
}


Classe LeituraVariosAlunos

package br.edu.ifms.aula;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class LeituraVariosAlunos {

 public static void main(String[] args) {
  Aluno[] alunos = new Aluno[10];
  Scanner leitor = new Scanner(System.in);

  for (int i = 0; i < alunos.length; i++) {
   alunos[i] = new Aluno();
   System.out.println("Digite a matricula:");
   String textoDigitado = leitor.nextLine();
   alunos[i].setMatricula(textoDigitado);

   System.out.println("Digite o nome completo:");
   textoDigitado = leitor.nextLine();
   alunos[i].setNomeCompleto(textoDigitado);

   System.out.println("Digite o CPF:");
   textoDigitado = leitor.nextLine();
   alunos[i].setCpf(textoDigitado);

   System.out.println("Digite a data de nascimento (dd/mm/aaaa):");
   textoDigitado = leitor.nextLine();
   SimpleDateFormat formatadorDeDatas = new SimpleDateFormat(
     "dd/MM/yyyy");
   Date dataDigitada = null;
   try {
    dataDigitada = formatadorDeDatas.parse(textoDigitado);
   } catch (ParseException e) {
   }
   alunos[i].setDataNascimento(dataDigitada);

   System.out.println("Digite o telefone ((##)#####-####):");
   textoDigitado = leitor.nextLine();
   alunos[i].setTelefone(textoDigitado);

   System.out.println("Digite o sexo (M ou F):");
   textoDigitado = leitor.nextLine();
   char sexo = textoDigitado.charAt(0);
   alunos[i].setSexo(sexo);

   System.out.println("Dados do aluno: " + alunos[i].getNomeCompleto()
     + " lidos com sucesso!\n");
  }

  leitor.close();
 }
}

Lendo dados do usuário em Java

Olá, galera!

     A grande maioria dos programas de computadores são interativos, ou seja, necessitam da participação do usuário para informar valores de entrada necessários para os devidos processamentos. A linguagem Java oferece diferentes meios para que um programa possa ler entradas do usuário.

Lendo entradas do usuário via shell de linha de comando

    Primeiramente, veremos como se dá a leitura de dados do usuário via terminal de linha de comando. Para tanto, utilizaremos a classe Scanner do pacote java.util. A classe Scanner oferece métodos para a leitura de número inteiros ou reais e também para a leitura de strings em forma de linhas. As três classes abaixo exibem o uso da classe Scanner para ler números e strings.

Classe LeitorValorInteiroTeclado

import java.util.Scanner;

public class LeitorValorInteiroTeclado {

 public static void main(String[] args) {
  Scanner leitor = new Scanner(System.in);
  // Lê um valor inteiro do teclado
  System.out.println("Digite a sua idade:");
  int idade = leitor.nextInt();
  System.out.println("Você tem " + idade + " anos de idade."); 
 }
}


Classe LeitorValorPontoFlutuanteTeclado

import java.util.Scanner;

public class LeitorValorPontoFlutuanteTeclado {

 public static void main(String[] args) {
  Scanner leitor = new Scanner(System.in);
  // Lê um valor inteiro e um valor float do teclado
  System.out.println("Digite a sua idade:");
  int idade = leitor.nextInt();
  System.out.println("Digite o seu peso em kg:"); 
  float peso = leitor.nextFloat();
  System.out.println("Você tem " + idade + " anos e pesa " + peso +                                   " kg.");
 }
}


Classe LeitorStringTeclado

import java.util.Scanner;

public class LeitorStringTeclado {

 public static void main(String[] args) {
  Scanner leitor = new Scanner(System.in);
  /**
    * O código abaixo lê uma string do teclado. 
    * Ao terminar de digitar a string, o usuário
    * deve teclar ENTER.
    */
  System.out.println("Qual a sua comida favorita?");
  String resposta = leitor.nextLine();  
                System.out.println("A sua comida favorita é " + resposta + ".");
 }
}


    Os métodos nextInt e nextFloat da classe Scanner possuem um problema. Se o valor lido do usuário não pertencer ao domínio correto a ser lido, os métodos lançam uma exceção. Por exemplo, se o seu programa usa o método nextInt para supostamente ler um valor inteiro digitado pelo usuário, porém o usuário digitar um número real ou mesmo uma string, o método lança a exceção NumberFormatException, sinalizando que o formato do valor digitado é inválido ao dominío de leitura.

Criando janelas gráficas para ler entradas do usuário  

    Uma forma simples de criar uma janela gráfica para ler entradas do usuário é utilizar a classe JOptionPane do pacote javax.swing. As três classes abaixo mostram o uso da classe JOptionPane para ler entradas do usuário.

Classe LeitorInteiroDialog

import javax.swing.JOptionPane;

public class LeitorInteiroDialog {

 public static void main(String[] args) {
  /**
    * Exibe uma janela para ler a resposta do usuário. 
    * Após, exibe outra janela para exibir a resposta 
    * digitada pelo usuário.
    */
  String resposta=JOptionPane.showInputDialog("Qual a sua idade?");  
                // Converte a string em inteiro
  int idade = Integer.parseInt(resposta);
                JOptionPane.showMessageDialog(null, "Você tem " + idade + 
                                              " anos de idade.");
 }
}

Classe LeitorFloatDialog

import javax.swing.JOptionPane;

public class LeitorFloatDialog {

 public static void main(String[] args) {
  String resposta=JOptionPane.showInputDialog("Qual a sua idade?");
  int idade = Integer.parseInt(resposta);
  // Converte a string em inteiro
  resposta = JOptionPane.showInputDialog("Qual o seu peso em kg?");
  float peso = Float.parseFloat(resposta);
  // Converte a string em float 
  JOptionPane.showMessageDialog(null, "Você tem " + idade + 
                                              " anos de idade e pesa " + 
                                              peso + " kg.");
 }
}

Classe LeitorStringDialog

import javax.swing.JOptionPane;

public class LeitorStringDialog {

 public static void main(String[] args) {
  /**
    * Exibe uma janela para ler a resposta do usuário. 
    * Após, exibe outra janela para exibir a resposta 
    * digitada pelo usuário.
    */
  String resposta = JOptionPane.showInputDialog("Qual a sua comida favorita?");  
  JOptionPane.showMessageDialog(null, "A sua comida favorita é " + resposta);
 }
}

     Em uma aula futura, veremos como ler dados do usuário de forma mais precisa e segura. Abraço!

segunda-feira, 15 de abril de 2013

Compilando e executando programas em Java

    Um programa Java precisa ser compilado para bytecodes antes que a máquina virtual Java possa executá-lo. Para tanto, a plataforma Java oferece um compilador Java, presente no script javac.

    Antes que você possa utilizar o script javac, talvez você deseje adicioná-lo às suas variáveis de ambiente, para que você possa executá-lo em qualquer pasta. No Windows, primeiramente você deve informar ao sistema operacional onde os arquivos da máquina virtual Java estão localizados, criando a variável de ambiente JAVA_HOME:

Nome da variável: JAVA_HOME
Valor da variável: PASTA_ONDE_O_JAVA_FOI_INSTALADO

    Por exemplo, se você instalou a última versão do Java (data de 08/04/2013) em uma instalação padrão, sem definir um outro diretório, provavelmente você fará a seguinte configuração:

Nome da variável: JAVA_HOME
Valor da variável: C:\Program Files\Java\jdk1.7.0_17

    Após criar a variável de ambiente JAVA_HOME, você precisa informar ao Windows onde estão localizados os programas da máquina virtual Java. Para tanto, basta você adicionar o caminho dos programas na variável de ambiente PATH (ATENÇÃO: Esta variável provavelmente já existe na sua instalação do Windows. Assim, coloque o caminho dos executáveis Java no final da string do valor da variável PATH. NÃO APAGUE o conteúdo já existente da variável! ).

     Caso você tenha instalado a última versão do Java em uma instalação padrão como citado anteriormente, você deve colocar o valor abaixo no final da string do valor da variável de ambiente PATH (lembrando que quando uma variável de ambiente possui vários valores, cada valor deve ser separado pelo caractere ';' ):

C:\Program Files\Java\jdk1.7.0_17\bin

    Uma vez que você tenha realizado todas estas configurações (caso tenha sido necessário realizá-las), o seu computador está pronto para compilar e executar os seus programas Java. Para compilar um programa Java, entre no PROMPT do DOS, use o comando cd para entrar na pasta onde o seu arquivo .java está localizado e utilize o comando javac para compilar o seu programa.

    Por exemplo, considere que você tenha escrito um programa Java no método main da classe Exemplo, a qual está dentro do arquivo Exemplo.java. Assim, para compilar o seu programa você precisa digitar o comando abaixo:

javac Exemplo.java

    Ao fazer isto, caso o seu programa não contenha nenhum erro, o compilador Java cria um arquivo chamado Exemplo.class na mesma pasta onde o seu programa está situado. Este arquivo contém os bytecodes do seu programa para que a máquina virtual Java possa executá-lo. Assim, para executar o seu programa, você precisa digitar o comando abaixo:

java Exemplo

E pronto! Agora é só testar o seu programa!


Estruturas de Dados Básicas

Olá, galera!

Nesta aula eu apresento os tipos básicos da linguagem Java e como criar matrizes de diferentes dimensões com a linguagem. Abraço!


Estrutura de Programas

Olá, galera!

Nesta aula eu apresento brevemente o que é programação estruturada, explicando os conceitos de sequência, seleção e iteração. Abaixo, os slides de aula e as classes Java utilizadas nos exemplos.



Classe Sequencia


/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de sequência.
 * @author Prof.º Sidney
 */
public class Sequencia {

    /**
     * O método <b>main</b> de uma classe Java contém o código a ser
     * executado primeiramente no programa.
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        /**
         * As linhas abaixo contém a sequência de tarefas as quais o nosso 
         * programa executa.
         */
        int numero1 = 1;
        int numero2 = 2;
        int resultado = numero1 + numero2;
        System.out.println(numero1 + " + " + numero2  + " = " + resultado);
        double divisor = 7.43;
        double resultadoPontoFlutuante = resultado / divisor;
        System.out.println(resultado + " / " + divisor + " = " + 
                           resultadoPontoFlutuante);
    }
}


Classe SelecaoIf

/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de seleção <b>if</b>.
 * @author Prof.º Sidney
 */
public class SelecaoIf {
    
    public static void main(String[] args) {
        long numeroAleatorio = System.currentTimeMillis();
        System.out.println(numeroAleatorio);
        if(numeroAleatorio % 2 == 0) { // Se o número aleatório for um número par, então:
            System.out.println("O numero aleatorio e um numero par!");
        } else { // Senão, o número aleatório só pode ser um número ímpar!
            System.out.println("Na verdade, o numero aleatorio e um numero ímpar!");
        }
    }
}


Classe SelecaoMultipla

/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de seleção múltipla.
 * @author Prof.º Sidney
 */
public class SelecaoMultipla {
    
    public static void main(String[] args) {
        //Escolhe aleatoriamente um número entre [0..9]
        long numeroAleatorio = System.currentTimeMillis() % 10;
        
        // Se o número aleatório for divisível por 2, então:
        if(numeroAleatorio % 2 == 0) { 
            System.out.println("O numero aleatorio e divisivel por 2!");
        } else if(numeroAleatorio % 3 == 0) { // Se o número aleatório for divisível por 3, então: 
            System.out.println("O numero aleatorio e divisivel apenas por 3!");
        } else if(numeroAleatorio % 5 == 0) { // Se o número aleatório for divisível por 5, então:
            System.out.println("O numero aleatorio e divisivel apenas por 5!");
        } else if(numeroAleatorio % 7 == 0) { // Caso contrário, o número só pode ser divisível por 7:
            System.out.println("O numero aleatorio e divisivel apenas por 7!");
        } else {
            System.out.println("So pode ser o numero 1!");
        }
    }
}


Classe SelecaoSwitch1

/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de seleção com <b>switch</b>.
 * @author Prof.º Sidney
 */
public class SelecaoSwitch1 {
    
    public static void main(String[] args) {
        //Escolhe aleatoriamente um número entre [0..9]
        int numeroAleatorio = Math.abs((int)System.currentTimeMillis() % 10);
        switch(numeroAleatorio) {
            case 0:
                System.out.println("Sorteou o numero 0");
                break;
            case 1:
                System.out.println("Sorteou o numero 1");
                break;
            case 2:
                System.out.println("Sorteou o numero 2");
                break;
            case 3:
                System.out.println("Sorteou o numero 3");
                break;
            case 4:
                System.out.println("Sorteou o numero 4");
                break;
            case 5:
                System.out.println("Sorteou o numero 5");
                break;
            default:
                System.out.println("Sorteou um numero entre [6..9]");
        }
    }
}


Classe SelecaoSwitch2

/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de seleção com <b>switch</b>.
 * @author Prof.º Sidney
 */
public class SelecaoSwitch2 {
    
    public static void main(String[] args) {
        //Escolhe aleatoriamente um número entre [0..9]
        int numeroAleatorio = Math.abs((int)System.currentTimeMillis() % 10);
        System.out.println(numeroAleatorio);
        switch(numeroAleatorio) {
            case 1:
                System.out.println("O numero sorteado e divisivel apenas por 1");
                break;
            case 2:
            case 4:
            case 6:
            case 8:
                System.out.println("O numero sorteado e divisivel por 2");
                break;
            case 3:
            case 9:
                System.out.println("O numero sorteado e divisivel apenas por 3");
                break;
            case 5:
                System.out.println("O numero sorteado e divisivel apenas por 5");
                break;
            case 7:
                System.out.println("O numero sorteado e divisivel apenas por 7");
                break;
        }
    }
}


Classe IteracaoWhile.java


/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de iteração com <b>while</b>.
 * @author Prof.º Sidney
 */
public class IteracaoWhile {
    
    public static void main(String[] args) {
        int x = 1;
        while(x <= 10) {
            if(x % 3 == 0) {
                System.out.println(x + " e divisivel por 3!");
            } else {
                System.out.println(x + " nao e divisivel por 3!");
            }
            x = x + 1;
        }
    }
}


Classe IteracaoDoWhile

/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de iteração com <b>do-while</b>.
 * @author Prof.º Sidney
 */
public class IteracaoDoWhile {
    
    public static void main(String[] args) {
        int x = 11;
        do {
            if(x % 3 == 0) {
                System.out.println(x + " e divisivel por 3!");
            } else {
                System.out.println(x + " nao e divisivel por 3!");
            }
            x = x + 1;
        }while(x <= 10);
    }

}


Classe IteracaoFor

/**
 * Para fins de organização, é uma convenção que os códigos de um projeto
 * Java sejam organizados em pacotes.
 */
package br.edu.ifms.lp1.aula02;

/**
 * Exemplo de iteração com <b>for</b>.
 * @author Prof.º Sidney
 */
public class IteracaoFor {
    
    public static void main(String[] args) {
        for(int x = 1; x <= 10; x = x + 2) {
            if(x % 3 == 0) {
                System.out.println(x + " e divisivel por 3!");
            } else {
                System.out.println(x + " nao e divisivel por 3!");
            }
        }
    }

}