Programação Orientada a Objetos I Estruturas de Dados em Java Rafael Silva Guimarães Instituto Federal do Espı́rito Santo [email protected] http://rafaelguimaraes.net https://github.com/rafaelsilvag/ifesJava 2 de Agosto de 2016 Estruturas de Dados em Java 1/21 Glossário Estruturas de Decisão Estruturas de Repetição Estruturas de Dados em Java Referências Estruturas de Dados em Java 2/21 Estrururas de Decisão I Uma estrutura de decisão altera o fluxo de execução do programa. Ele faz isso através de uma estrutura aonde você especifica uma condição para que ocorra tal alteração em um determinado programa. I No Java, as estruturas de decisão possuem syntaxe idêntica da linguagem C, vista por vocês no semestre anterior. As estruturas que você deve ter conhecimento são: IF e SWITCH. Estruturas de Dados em Java 3/21 Estrururas de Decisão I Vejamos um de utilização da estrurura IF no algoritmo ExemploIf01. I Obs.: Assim como no C, a linguagem Java também é sensı́vel a letras maiúsculas e minı́sculas. Estruturas de Dados em Java 4/21 Estrururas de Decisão Example (ExemploIf01.java) import javax.swing.JOptionPane; // Importaç~ ao da classe responsável por criar uma // interface de interaç~ ao com o usuário public class ExemploIf01{ public static void main(String args[]){ int valor=0; // Retiramos o System.out.println por JOptionPane if (valor == 0){ JOptionPane.showMessageDialog( null, "Valor igual a 0"); }else{ JOptionPane.showMessageDialog( null, "Valor n~ ao é igual a 0"); } } } Estruturas de Dados em Java 5/21 Estrururas de Decisão I Estamos alterando a forma de como iremos exibir e capturar as informações para o usuário. Estaremos utilizando uma classe gráfica que exibe e coleta informações do usuário chamada de ”JOptionPane”. I Esta classe faz parte do pacote Swing, responsável por armazenar todas as classes de manipulação gráfica no Java. Iremos aprofundar melhor nela em um outro momento em nossa disciplina. Estruturas de Dados em Java 6/21 Estrururas de Decisão I I Lembre-se! Para capturar e exibir os dados utilizaremos conforme podemos observar no código abaixo: JOptionPane.showMessageDialog(null, ”Valor”); int i=0; // Para concatenar valor inteiro com string usamos o + JOptionPane.showMessageDialog(null, "Valor: "+i); I JOptionPane.showInputDialog(”Informe um valor: ”); String str01; // Sempre irá retornar um valor do tipo String str01 = JOptionPane.showInputDialog("Informe um valor: "); Estruturas de Dados em Java 7/21 Estrururas de Decisão I Algumas comparações serão alteradas. Por exemplo, em C para compararmos strings era necessário utilizarmos uma coleção de funções na biblioteca ”string.h”. No caso do Java, uma String na verdade é um objetos que contém métodos e atributos. Veja no exemplo a seguir: I Podemo observar que no objeto do tipo String temos um método chamado de ”equal”ou ”equalIgnoreCase”, responsável por comparar 2 strings. Portanto, o método irá retornar 2 valores, ”true”ou ”false”. Estruturas de Dados em Java 8/21 Estrururas de Decisão Example (ExemploIf04.java) import javax.swing.JOptionPane; public class ExemploIf04{ public static void main(String args[]){ String nome; nome = JOptionPane.showInputDialog("Informe o seu nome"); // verifica se o nome do usuário é admin if(nome.equals("admin")){ JOptionPane.showMessageDialog(null, "Voc^ e é um usuário Admin!"); }else{ JOptionPane.showMessageDialog(null, "Voc^ e é um usuário comum!"); } } } Estruturas de Dados em Java 9/21 Estrururas de Decisão Example (ExemploIf05.java) import javax.swing.JOptionPane; public class ExemploIf05{ public static void main(String args[]){ String nome; nome = JOptionPane.showInputDialog("Informe o seu nome"); // verifica se o nome do usuário é admin if(nome.equalsIgnoreCase("admin")){ JOptionPane.showMessageDialog(null, "Voc^ e é um usuário Admin!"); }else{ JOptionPane.showMessageDialog(null, "Voc^ e é um usuário comum!"); } } } Estruturas de Dados em Java 10/21 Estrururas de Decisão I Vamos ver um exemplo de utilização da estrutura de decisão Switch em Java, no algoritmo ExemploSwitch01. I Nesta etapa executamos uma ”Conversão de Tipos”, passando um valor do tipo String para um valor do tipo Integer. Valor Inicial Tipagem Final Formato para conversão int x = 10 int x = 10 float x = 10.5 float double int float y = (float) x double y = (double) x int y = (int) x Estruturas de Dados em Java 11/21 Estrururas de Decisão import javax.swing.JOptionPane; public class ExemploSwitch01{ public static void main(String args[]){ String valor; int opc; valor = JOptionPane.showInputDialog("Informe um valor: "); // Convertendo os valor String para Integer. opc = Integer.parseInt(valor); switch(opc){ case 1: JOptionPane.showMessageDialog("Valor 1!"); break; case 2: JOptionPane.showMessageDialog("Valor 2!"); break; case 3: JOptionPane.showMessageDialog("Valor 3!"); break; default: JOptionPane.showMessageDialog("Desconhecido!"); } } } Estruturas de Dados em Java 12/21 Estrururas de Decisão Valor Inicial Tipagem Final Formato para conversão String x = ”10” String x = ”10.50” String x = ”10.50” String x = ”IFES” int x = 10 float x = 10.5 double x = 235.222 byte x[] int float double Vetor de Bytes String String String String int y = Integer.parseInt(x) float y = Float.parseFloat(x) double y = Double.parseDouble byte b[] = x.getBytes() String y = String.valueOf(x) String y = String.valueOf(x) String y = String.valueOf(x) String y = new String(x) Estruturas de Dados em Java 13/21 Estruturas de Repetição I Uma estrutura de repetição, cada ciclo de repetição é chamado de iteração. I No Java, as estruturas de repetição possuem syntaxe idêntica da linguagem C, vista por vocês no semestre anterior. As estruturas que você deve ter conhecimento são: FOR, FOREACH, WHILE e DO...WHILE. Estruturas de Dados em Java 14/21 Estruturas de Repetição - FOR Example (ExemploFor01.java) import javax.swing.JOptionPane; public class ExemploFor01{ public static void main(String args[]){ int valor=10, soma=0; // Exemplo de utilizaç~ ao do FOR for(int i = 0;i <= valor;i++){ soma += i; } JOptionPane.showMessageDialog(null,"Resultado: "+soma); } } Estruturas de Dados em Java 15/21 Estruturas de Repetição - FOREACH Example (ExemploFor02.java) import javax.swing.JOptionPane; public class ExemploFor02{ public static void main(String args[]){ int vInteiros[] = {0,1,2,3,4,5,6,7,8,9}, soma=0; // Exemplo de utilizaç~ ao do FOREACH for(int v: vInteiros){ soma += v; } JOptionPane.showMessageDialog(null,"Resultado: "+soma); } } Estruturas de Dados em Java 16/21 Estruturas de Repetição - WHILE Example (ExemploFor02.java) import javax.swing.JOptionPane; public class ExemploWhile01{ public static void main(String args[]){ int valor=10, soma=0; // Exemplo de utilizaç~ ao do While while(valor >= 0){ soma += valor; valor--; } JOptionPane.showMessageDialog(null,"Resultado: "+soma); } } Estruturas de Dados em Java 17/21 Estruturas de Repetição - DO...WHILE import javax.swing.JOptionPane; public class ExemploWhile02{ public static void main(String args[]){ String aux; int opc; // Exemplo de utilizaç~ ao do Do...While do{ aux = JOptionPane.showInputDialog( "####### INFORME UMA OPÇ~ AO #######\n"+ "1 - Cadastrar Aluno\n"+ "2 - Editar Aluno\n"+ "3 - Visualizar Alunos\n"+ "0 - Sair\n"+ "#################################\n" ); }while(opc != 0); } } Estruturas de Dados em Java 18/21 Declaração de Array(Vetores) em Java I Sintaxe da Declaração: I I I Usando elementos do Array I I tipo[]nomedoarray = newtipo[numerodeelementos]; int[]notas = {8.0, 7.5, 8.5, 9.0, 8.0}; nota[10] = 10.0; Vetores/Arrays Multidimensionais em Java I I float[][]notas = newfloat[2][5]; float[][]notas = {{8.0, 7.5, 8.0, 6.5}, {8.9, 9.0, 8.4, 8.0}}; Estruturas de Dados em Java 19/21 Exemplo de Utilização Array(Vetores) em Java public class ExemploArray { public static void main(String args[]) { int v1[] = {1, 2, 3, 4, 5}; int v2[] = new int[5]; for (int i = 0; i < v2.length; i++) { v2[i] = i; System.out.print(v2[i]+" "); } int m1[][] = {{1, 2}, {1, 2}}; int m2[][] = new int[3][3]; for (int i = 0; i < m2.length; i++) { for (int j = 0; j < m2[i].length; j++) { m2[i][j] = i + j; System.out.print(m2[i][j]+" "); } System.out.println(); } } } Estruturas de Dados em Java 20/21 Referências Cornell, G. ; Horstmann, S. C. Core Java 2: Fundamentos (vol.1.) Pearson Makron Books São Paulo Cornell, G. ; Horstmann, S. C. Core Java 2: Recursos Avançados (vol.2.) Pearson Makron Books São Paulo Sebesta, R.W. Conceitos de Linguagens de Programação Bookman São Paulo Deitel, Paul; Deitel, Harvey Java - Como Programar Pearson São Paulo Estruturas de Dados em Java 21/21