Estou postando aqui no blog a apostila da disciplina Linguagem de Programação I. Esta apostila sofrerá algumas alterações até o final da disciplina, a fim de comportar todo o conteúdo visto em sala de aula. Abraço!
Aulas do Sidney
terça-feira, 14 de maio de 2013
Apostila - Linguagem de Programação I
Olá, galera!
Estou postando aqui no blog a apostila da disciplina Linguagem de Programação I. Esta apostila sofrerá algumas alterações até o final da disciplina, a fim de comportar todo o conteúdo visto em sala de aula. Abraço!
Estou postando aqui no blog a apostila da disciplina Linguagem de Programação I. Esta apostila sofrerá algumas alterações até o final da disciplina, a fim de comportar todo o conteúdo visto em sala de aula. Abraço!
quarta-feira, 8 de maio de 2013
Listas (parte 2 de 3)
Olá, galera!
Esta é a segunda e penúltima aula sobre listas que veremos na disciplina Estruturas de Dados. O conteúdo dela é bem interessante, pois ensina a criar uma lista encadeada genérica e também mostra o uso da interface List do pacote java.util. Abraço!
Classe NoGenerico
Classe ListaEncadeadaGenerica
Classe ExemploList
Esta é a segunda e penúltima aula sobre listas que veremos na disciplina Estruturas de Dados. O conteúdo dela é bem interessante, pois ensina a criar uma lista encadeada genérica e também mostra o uso da interface List do pacote java.util. Abraço!
Classe NoGenerico
package br.edu.ifms.aula; /** * Nó da lista genérica. * * @author Prof.º Sidney * */ public class NoGenerico<T> { /** * O valor do item armazenado. */ private T item; /** * Ponteiro para o próximo item da lista. */ private NoGenerico<T> proximoItem; /** * Construtor da classe No. */ public NoGenerico() { proximoItem = null; } /** * Getter para o atributo <b>item</b>. * * @return O valor do atributo <b>item</b>. */ public T getItem() { return item; } /** * Setter para o atributo <b>item</b>. * * @param item * O novo valor para o atributo <b>item</b>. */ public void setItem(T item) { this.item = item; } /** * Getter para o atributo <b>proximoItem</b>. * * @return O valor do atributo <b>proximoItem</b>. */ public NoGenerico<T> getProximoItem() { return proximoItem; } /** * Setter para o atributo <b>proximoItem</b>. * * @param proximoItem * O novo valor para o atributo <b>proximoItem</b>. */ public void setProximoItem(NoGenerico<T> proximoItem) { this.proximoItem = proximoItem; } }
Classe ListaEncadeadaGenerica
package br.edu.ifms.aula; /** * Encapsula uma lista encadeada de inteiros. * * @author Prof.º Sidney * */ public class ListaEncadeadaGenerica<T> { /** * Tamanho da lista. */ private int tamanho; /** * Primeiro item da lista. */ private NoGenerico<T> primeiroItem; /** * Último item da lista. */ private NoGenerico<T> ultimoItem; /** * Construtor para a classe {@link ListaEncadeada}. Inicializa os atributos * da classe. */ public ListaEncadeadaGenerica() { primeiroItem = null; ultimoItem = null; tamanho = 0; } /** * Retorna o primeiro item da lista. * * @return O primeiro item da lista. */ public NoGenerico<T> pegaPrimeiroItem() { return primeiroItem; } /** * Retorna o último item da lista. * * @return O último item da lista. */ public NoGenerico<T> 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 NoGenerico<T> pegarItem(int posicao) { if (tamanho > 0 && posicao >= 1 && posicao <= tamanho) { NoGenerico<T> 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) { NoGenerico<T> item = primeiroItem; NoGenerico<T> anterior = null; int contador = 1; while (contador < posicao) { anterior = item; item = item.getProximoItem(); contador++; } NoGenerico<T> 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(T novoItem) { if (tamanho == 0) { primeiroItem = new NoGenerico<T>(); primeiroItem.setItem(novoItem); ultimoItem = primeiroItem; } else { NoGenerico<T> antigoPrimeiroItem = primeiroItem; primeiroItem = new NoGenerico<T>(); 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(T novoItem) { if (tamanho == 0) { ultimoItem = new NoGenerico<T>(); ultimoItem.setItem(novoItem); primeiroItem = ultimoItem; } else { NoGenerico<T> antigoUltimoItem = ultimoItem; ultimoItem = new NoGenerico<T>(); 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(T novoItem, int posicao) { if (posicao >= 1 && posicao <= tamanho + 1) { if (posicao == 1) { adicionarNoInicio(novoItem); } else if (posicao == tamanho + 1) { adicionarNoFinal(novoItem); } else { NoGenerico<T> novoNo = new NoGenerico<T>(); novoNo.setItem(novoItem); int contador = 1; NoGenerico<T> itemAnteriorAoNovo = primeiroItem; while (contador < posicao - 1) { itemAnteriorAoNovo = itemAnteriorAoNovo.getProximoItem(); contador++; } novoNo.setProximoItem(itemAnteriorAoNovo.getProximoItem()); itemAnteriorAoNovo.setProximoItem(novoNo); tamanho++; } return true; } return false; } }
Classe ExemploList
package br.edu.ifms.aula; import java.util.ArrayList; import java.util.List; public class ExemploList { public static void main(String[] args) { List<Integer> lista = new ArrayList<Integer>(); // Se quiser, troque a linha acima pela linha abaixo // List<Integer> lista = new LinkedList<Integer>(); // Lembre-se de importar a classe LinkedList: // import java.util.LinkedList; // Inserindo ítens no final da lista lista.add(12); lista.add(-38); lista.add(827); // Inserindo ítens no início da lista lista.add(0, 125); lista.add(0, -387); lista.add(0, 82735); List<Integer> listaExtra = new ArrayList<Integer>(); listaExtra.add(11); listaExtra.add(22); listaExtra.add(33); // Adiciona todos os ítens da lista extra no final da primeira lista lista.addAll(listaExtra); listaExtra.add(44); listaExtra.add(55); listaExtra.add(66); /** * Adiciona todos os ítens da lista extra na posição desejada da * primeira lista */ lista.addAll(3, listaExtra); /** * Removendo ítens da lista pelo índice. Na interface List, os elementos * são indexados na forma [0..tamanho da lista - 1] */ lista.remove(0); lista.remove(4); /** * Removendo um item da lista caso ele exista. O cast para Object é * necessário para que o compilador diferencie a chamada ao método de * remoção por ocorrência do método de remoção por índice. Retorna true * caso o item exista; false c.c. */ lista.remove((Object) 77); // Retorna false // Verifica se um item está contido na lista if (lista.contains(12)) { System.out.println("A lista contém o item 12."); } // Imprime o índice da primeira ocorrência do item de valor 125 System.out.println(lista.indexOf((Object) 125)); // Verifica se a lista contém uma sublista if (lista.containsAll(listaExtra)) { System.out.println("A primeira lista contém a lista extra!"); } // Substituindo o elemento da terceira posição da lista lista.set(3, 42); // Verifica se a lista está vazia if (lista.isEmpty()) { System.out.println("A lista está vazia."); } else { System.out.println("A lista contém " + lista.size() + " elemento(s)."); } // Verifica a última ocorrência de um determinado valor na lista System.out.println("A última ocorrência de 55 se dá na posição " + lista.lastIndexOf(55)); // Imprime o tamanho da lista System.out.println("Tamanho atual da lista: " + lista.size()); /** * Pega uma parte da lista. O primeiro índice é inclusivo; o segundo é * exclusivo. */ List<Integer> outraLista = lista.subList(2, 4); // Converte a lista de inteiros em um vetor de objetos Object[] vetor = lista.toArray(); // Converte a lista de inteiros em um vetor de inteiros Integer[] vetorInteiros = new Integer[lista.size()]; lista.toArray(vetorInteiros); for (Integer elemento : vetorInteiros) { System.out.println("Elemento: " + elemento); } /** * Listas do tipo List podem ser iteradas em laços for each. * */ for (Integer item : lista) { System.out.print(item + " "); } System.out.println(); // Percorrendo a lista com um laço for comum for (int i = 0; i < lista.size(); i++) { System.out.print(lista.get(i) + " "); } System.out.println(); // Remove todos os ítens da lista lista.clear(); System.out.println("Tamanho atual da lista: " + lista.size()); } }
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!
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
Classe No
Classe ListaEncadeada
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!
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!
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
Classe ExemploDoWhile
Classe ExemploFor
Classe ExemploFor2
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(); } }
Assinar:
Postagens (Atom)