Arrays Professor: Ricardo Luis dos Santos IFSUL – Campus Sapucaia do Sul © 2015 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Arrays ou vetores são estruturas de dados que armazenam usualmente uma quantidade fixa de dados de um determinado tipo • Também são conhecidos como estruturas homogêneas de dados • Um vetor armazena diversos valores, cada um associado a um número que se refere à posição de armazenamento, e é conhecido como índice • O valor que pode ser armazenado em uma certa posição (índice) é chamado de elemento 2 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Cada elemento do vetor pode ser utilizado de uma forma direta, sem nenhuma regra ou ordem, fazendo dos vetores estruturas de dados de acesso aleatório • O número de posições de um vetor corresponde ao tamanho que ele tem • Um vetor de tamanho 5 possui 5 elementos distintos • Os diferentes elementos de um vetor são distinguidos unicamente pela posição que ocupam no vetor (inteiro sequencial) vetor 3 10 45 12 0 -7 0 1 2 3 4 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Cada elemento do vetor pode ser utilizado forma direta, sem nenhuma regra ou ordem, fazendo dos vetores estruturas de dados de acesso aleatório • O número de posições de um vetor corresponde ao tamanho que ele tem O Java como as linguagens C e C++ são linguagens • Um vetor de tamanho 5 possui 5 elementos com vetores zero-based, isto é, as posiçõesdistintos do vetor • Osiniciam diferentes elementosa de um do vetor são“0”, distinguidos a numeração partir valor portanto, unicamente pelatamanho posição 10 queteria ocupam noiniciados vetor (inteiro um vetor de índices em sequencial) 0 prosseguindo até o 9 vetor 4 10 45 12 0 -7 0 1 2 3 4 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Podemos declarar um vetor da seguinte forma • 5 Declarações de vetores são semelhantes às declarações de variáveis, os elementos sintáticos que diferenciam as variáveis do tipo vetor das outras variáveis são os colchetes Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • 6 No Java um vetor é uma “classe”, portanto, deve-se utilizar o método new, que ativa o método construtor correspondente, para criar instâncias, da classe vetor do tipo selecionado (int, byte, long, char, float, …) Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Expressões como índices: meuArray[Expressão] • onde: • meuArray • nome da variável do tipo array • Expressão • Posição que define qual o elemento da estrutura de dados está sendo referenciado • Atenção: deve ser um valor pertencente ao intervalo do índice da variável 7 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Em suma: Qual o output? 8 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Na prática: Replicar o código 9 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Replicar o código 10 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Qual a diferença entre esses dois laços? Por que e quando utilizar cada um deles? 11 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays • Java permite a inicialização de vetores no momento da declaração • Isso significa que v[0] terá o valor 3, v[1] terá o valor 2, v[2] terá o valor 7, v[3] terá o valor 5 e v[4] terá o valor 0 12 • Ainda é possível conhecer o tamanho do vetor através do campo length Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais • Java não fornece vetores multidimensionais, mas é possível criar vetores de vetores (de vetores etc.), alcançando assim o mesmo efeito • A declaração de um vetor bidimensional para “inteiros”, de nome “matriz” em Java: 13 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais • Declarando um vetor bidimensional, ou matriz int[][] A = new int[2][4]; • Referenciando as posições da matriz 1a. Linha 2a. Linha ------------- ------------- • A[0][0] = 17; • A[0][1] = 33; • A[0][2] = 21; A[1][0] = 13; A[1][1] = 81; A[1][2] = 97; • A[0][3] = 15; A[1][3] = 67; i, linha 14 A[i][j] j, coluna 0 1 2 3 0 17 33 21 15 1 13 81 97 67 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais Replicar o código 15 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais • 16 Podemos declarar Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais Podemos ainda declarar linhas de diferentes tamanhos: Int[][] m = { {1, 2}, {4, 5, 6, 7, 8}, {9, 10, 11} }; 3a. linha com 3 colunas 2a. linha com 5 colunas 1a. linha com 2 colunas Para conhecer os tamanhos dos vetores deve-se utilizar o campo length: • m.length determina o número de linhas • m[i].length determina o número de colunas da i-ésima linha 17 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais Qual o output? 18 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais • Em Java, com exceção dos tipos primitivos (int, double, char e boolean), todos os outros são “objetos” • String, com S maiúsculo, é um dos objetos mais utilizados • Ao contrário que ocorre em C e C++, strings em Java são objetos, instâncias da classe java.lang.String • As strings correspondem a uma sequência de caracteres ASCII delimitados por aspas duplas 19 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais Replicar o código 20 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Arrays Multidimensionais • Lista de exercícios • O 22 é um desafio 21 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul