sexta-feira, 3 de maio de 2013

Introdução à Linguagem Python (aula 2)

    Olá, galera!

    Esta é a segunda parte do "mini-curso" sobre Python que estou publicando aqui no blog. Nesta aula, eu falo sobre comentários, strings, listas e dicionários. Abraço!



quarta-feira, 1 de maio de 2013

Listas (parte 1)

    Olá, galera!

    Nesta aula eu falo sobre listas simples e encadeadas, suas operações e o seu uso. Esta é a primeira de três aulas que exploram este assunto. Abraço!




Classe ListaSimples

package br.edu.ifms.aula;

/**
 * Encapsula uma lista simples de inteiros.
 * 
 * @author Prof.º Sidney
 * 
 */
public class ListaSimples {

	private int tamanho = 0;

	private Integer[] lista;

	/**
	 * Construtor da classe ListaSimples. Instancia a lista com o tamanho
	 * definido.
	 */
	public ListaSimples(int tamanho) {
		this.tamanho = tamanho;
		lista = new Integer[this.tamanho];
	}

	/**
	 * Adiciona um novo item na lista no índice desejado. Se já houver um item
	 * neste índice, ele será sobreposto.
	 * 
	 * @param novoItem
	 *            Item a ser adicionado.
	 * @param indiceDoItem
	 *            Índice do novo item.
	 * @return <b>true</b> caso o item tenha sido adicionado com sucesso;
	 *         <b>false</b> c.c.
	 */
	public boolean adicionarItem(Integer novoItem, int indiceDoItem) {
		if (indiceDoItem >= 0 && indiceDoItem < tamanho) {
			lista[indiceDoItem] = novoItem;
			return true;
		}
		return false;
	}

	/**
	 * Remove um item da lista.
	 * 
	 * @param indiceDoItem
	 *            Índice do item a ser removido.
	 * @return O valor do item. Retorna <b>null</b> caso a posição indicada
	 *         esteja vazia ou se o índice informado sejá inválido.
	 */
	public Integer removerItem(Integer indiceDoItem) {
		if (indiceDoItem >= 0 && indiceDoItem < tamanho
				&& lista[indiceDoItem] != null) {
			Integer itemRemovido = lista[indiceDoItem];
			lista[indiceDoItem] = null;
			return itemRemovido;
		}
		return null;
	}

	/**
	 * Retorna o item da lista situado no índice desejado.
	 * 
	 * @param indiceDoItem
	 *            Índice do item desejado.
	 * @return O item desejado. Retorna <b>null</b> caso a posição indicada
	 *         esteja vazia ou se o índice informado sejá inválido.
	 */
	public Integer pegarItem(Integer indiceDoItem) {
		if (indiceDoItem >= 0 && indiceDoItem < tamanho) {
			return lista[indiceDoItem];
		}
		return null;
	}

	public int tamanhoDaLista() {
		return tamanho;
	}

}


Classe No

package br.edu.ifms.aula;

/**
 * Nó da lista que armazena um valor inteiro.
 * 
 * @author Prof.º Sidney
 * 
 */
public class No {

	/**
	 * O valor do item armazenado.
	 */
	private Integer item;

	/**
	 * Ponteiro para o próximo item da lista.
	 */
	private No proximoItem;

	/**
	 * Construtor da classe No.
	 */
	public No() {
		proximoItem = null;
	}

	/**
	 * Getter para o atributo <b>item</b>.
	 * 
	 * @return O valor do atributo <b>item</b>.
	 */
	public Integer getItem() {
		return item;
	}

	/**
	 * Setter para o atributo <b>item</b>.
	 * 
	 * @param item
	 *            O novo valor para o atributo <b>item</b>.
	 */
	public void setItem(Integer item) {
		this.item = item;
	}

	/**
	 * Getter para o atributo <b>proximoItem</b>.
	 * 
	 * @return O valor do atributo <b>proximoItem</b>.
	 */
	public No getProximoItem() {
		return proximoItem;
	}

	/**
	 * Setter para o atributo <b>proximoItem</b>.
	 * 
	 * @param proximoItem
	 *            O novo valor para o atributo <b>proximoItem</b>.
	 */
	public void setProximoItem(No proximoItem) {
		this.proximoItem = proximoItem;
	}
}


Classe ListaEncadeada

package br.edu.ifms.aula;

/**
 * Encapsula uma lista encadeada de inteiros.
 * 
 * @author Prof.º Sidney
 * 
 */
public class ListaEncadeada {

	/**
	 * Tamanho da lista.
	 */
	private int tamanho;

	/**
	 * Primeiro item da lista.
	 */
	private No primeiroItem;

	/**
	 * Último item da lista.
	 */
	private No ultimoItem;

	/**
	 * Construtor para a classe {@link ListaEncadeada}. Inicializa os atributos
	 * da classe.
	 */
	public ListaEncadeada() {
		primeiroItem = null;
		ultimoItem = null;
		tamanho = 0;
	}

	/**
	 * Retorna o primeiro item da lista.
	 * 
	 * @return O primeiro item da lista.
	 */
	public No pegaPrimeiroItem() {
		return primeiroItem;
	}

	/**
	 * Retorna o último item da lista.
	 * 
	 * @return O último item da lista.
	 */
	public No pegarUltimoItem() {
		return ultimoItem;
	}

	/**
	 * Retorna o item situado na posição desejada.
	 * 
	 * @param posicao
	 *            Posição do item a ser recuperado.
	 * @return O item situado na posição desejada.
	 */
	public No pegarItem(int posicao) {
		if (tamanho > 0 && posicao >= 1 && posicao <= tamanho) {
			No item = primeiroItem;
			int contador = 1;
			while (posicao < contador) {
				item = item.getProximoItem();
				contador++;
			}
			return item;
		}
		return null;
	}

	/**
	 * Remove o elemento situado na posição desejada, caso esta posição exista
	 * na lista.
	 * 
	 * @param posicao
	 *            Posição do item a ser removido.
	 * @return <b>true</b> caso o item existia na lista e assim foi removido com
	 *         sucesso; <b>false</b> c.c.
	 */
	public boolean remover(int posicao) {
		if (tamanho > 0 && posicao >= 1 && posicao <= tamanho) {
			No item = primeiroItem;
			No anterior = null;
			int contador = 1;
			while (contador < posicao) {
				anterior = item;
				item = item.getProximoItem();
				contador++;
			}
			No proximo = item.getProximoItem();
			if (anterior != null) {
				anterior.setProximoItem(proximo);
			} else {
				primeiroItem = proximo;
			}
			tamanho--;
			if (tamanho <= 1) {
				primeiroItem = proximo;
				ultimoItem = primeiroItem;
			}
			return true;
		}
		return false;
	}

	/**
	 * Adiciona um novo item no início da lista.
	 * 
	 * @param novoItem
	 *            Novo item a ser adicionado.
	 */
	public void adicionarNoInicio(Integer novoItem) {
		if (tamanho == 0) {
			primeiroItem = new No();
			primeiroItem.setItem(novoItem);
			ultimoItem = primeiroItem;
		} else {
			No antigoPrimeiroItem = primeiroItem;
			primeiroItem = new No();
			primeiroItem.setItem(novoItem);
			primeiroItem.setProximoItem(antigoPrimeiroItem);
		}
		tamanho++;
	}

	/**
	 * Adiciona um novo item no final da lista.
	 * 
	 * @param novoItem
	 *            Novo item a ser adicionado.
	 */
	public void adicionarNoFinal(Integer novoItem) {
		if (tamanho == 0) {
			ultimoItem = new No();
			ultimoItem.setItem(novoItem);
			primeiroItem = ultimoItem;
		} else {
			No antigoUltimoItem = ultimoItem;
			ultimoItem = new No();
			ultimoItem.setItem(novoItem);
			antigoUltimoItem.setProximoItem(ultimoItem);
		}
		tamanho++;
	}

	/**
	 * Adiciona um novo item na posição desejada na lista
	 * 
	 * @param novoItem
	 *            Novo item a ser adicionado.
	 * @param posicao
	 *            Posição na qual o item deve ser adicionado. Caso o valor da
	 *            posição seja menor que 1 ou maior que o valor de
	 *            <b>tamanho</b> - 1, então o item não é adicionado.
	 * @return <b>true</b> caso o item tenha sido adicionado com sucesso;
	 *         <b>false</b> c.c.
	 */
	public boolean adicionarNaPosicao(Integer novoItem, int posicao) {
		if (posicao >= 1 && posicao <= tamanho + 1) {
			if (posicao == 1) {
				adicionarNoInicio(novoItem);
			} else if (posicao == tamanho + 1) {
				adicionarNoFinal(novoItem);
			} else {
				No novoNo = new No();
				novoNo.setItem(novoItem);
				int contador = 1;
				No itemAnteriorAoNovo = primeiroItem;
				while (contador < posicao - 1) {
					itemAnteriorAoNovo = itemAnteriorAoNovo.getProximoItem();
					contador++;
				}
				novoNo.setProximoItem(itemAnteriorAoNovo.getProximoItem());
				itemAnteriorAoNovo.setProximoItem(novoNo);
				tamanho++;
			}
			return true;
		}
		return false;
	}
}

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();
 }
}