Mudanças entre as edições de "Pensamento Computacional - Arrays Unidimensionais no Java"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 50: Linha 50:
 
Inicialmente a instrução:
 
Inicialmente a instrução:
 
  int[]  TabelaNotas = new int[5];
 
  int[]  TabelaNotas = new int[5];
Declara a referência para o vetor TabelaNotas e cria um vetor de tamanho 5 associado a esta referÊmncia. De agora em diante, podemos trabalhar este vetor (lendo  e escrevendo sobre cada elemento dele).
+
Declara a referência para o vetor TabelaNotas e cria um vetor de tamanho 5 associado a esta referÊncia. De agora em diante, podemos trabalhar este vetor (lendo  e escrevendo sobre cada elemento dele).
  
 
Observe que as 5 notas serão "lidas" para o vetor de inteiros TabelaNotas. Preste atenção a forma como é indexado o vetor:
 
Observe que as 5 notas serão "lidas" para o vetor de inteiros TabelaNotas. Preste atenção a forma como é indexado o vetor:
Linha 56: Linha 56:
 
             TabelaNotas[i] = teclado.nextInt();
 
             TabelaNotas[i] = teclado.nextInt();
  
Verifique oo uso de colchetes com o índice do elemento que está sendo acessado. Na realidade, o índice pode ser qualquer expressão inteira que resulte em 0 a 4.
+
Verifique o uso de colchetes com o índice do elemento que está sendo acessado. Na realidade, o índice pode ser qualquer expressão inteira que resulte em 0 a 4. Um ponto importante a ser observado é que este limite da indexação deve ser respeitado. Vamos a um exemplo que teremos problemas por acesso indevido:
 +
 
 +
<syntaxhighlight lang=java>
 +
 
 +
import java.util.Scanner;
 +
 
 +
public class TabelaNotas {
 +
    public static void main(String[] args) {
 +
        int[]  TabelaNotas = new int[5];
 +
        Scanner teclado = new Scanner(System.in);
 +
 
 +
        for (int i = 0; i < 5; i++) {
 +
            System.out.println("Entre com a nota do aluno " + i);
 +
            TabelaNotas[i+5] = teclado.nextInt();
 +
        }
 +
        System.out.println("Dados armazenados!!!");
 +
        /* imprimindo os dados lidos... */
 +
        for (int i = 0; i < 5; i++) {
 +
            System.out.println("Nota da posição " + i + " é " + TabelaNotas[i]);
 +
        }
 +
        teclado.close();
 +
    }
 +
}
 +
</syntaxhighlight>
 +
 
 +
DISCUSSÃO : Ao tentar executar este código teremos um erro logo de início:
 +
 
 +
Entre com a nota do aluno 0
 +
9
 +
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
 +
        at TabelaNotas.main(TabelaNotas.java:11)

Edição das 11h12min de 14 de novembro de 2023

Conceito de Array

Um array unidimensional ou vetor pode ser visto como uma variável (uma caixa) dividida em partes menores (CAIXAS menores) acessadas por um índice (posição). Podemos dizer que cada elemento do vetor pode ser acessado através da indexação do vetor. Os elementos do vetor possuem um tipo único.


PRG1-vetor armario.png


Uma boa analogia é comparar o vetor com uma tabela de tamanho fixo onde em cada linha pode ser armazenado um elemento.


PRG1-tabela vetor.png

Observe que com o mecanismo de criação de vetor será possível armazenar dados de uma forma organizada e de forma que se possa operar em diversos momentos do processamento.

Exemplo 1

Suponha que em uma determinada turma de 15 alunos queremos armazenar os valores das notas finais (valores inteiros de 0 a 10).

Neste caso o tamanho do array será 15. As indexações possíveis do array serão de 0 a 14 portanto. O tipo de cada elemento é inteiro, devido as notas inteiras.

Uma possível solução para isso seria:

import java.util.Scanner;

public class TabelaNotas {
    public static void main(String[] args) {
        int[]  TabelaNotas = new int[5];
        Scanner teclado = new Scanner(System.in);

        for (int i = 0; i < 5; i++) {
            System.out.println("Entre com a nota do aluno " + i);
            TabelaNotas[i] = teclado.nextInt();
        }
        System.out.println("Dados armazenados!!!");
        /* imprimindo os dados lidos... */
        for (int i = 0; i < 5; i++) {
            System.out.println("Nota da posição " + i + " é " + TabelaNotas[i]);
        }
        teclado.close();
    }
}

DISCUSSÃO:

Inicialmente a instrução:

int[]  TabelaNotas = new int[5];

Declara a referência para o vetor TabelaNotas e cria um vetor de tamanho 5 associado a esta referÊncia. De agora em diante, podemos trabalhar este vetor (lendo e escrevendo sobre cada elemento dele).

Observe que as 5 notas serão "lidas" para o vetor de inteiros TabelaNotas. Preste atenção a forma como é indexado o vetor:

            TabelaNotas[i] = teclado.nextInt();

Verifique o uso de colchetes com o índice do elemento que está sendo acessado. Na realidade, o índice pode ser qualquer expressão inteira que resulte em 0 a 4. Um ponto importante a ser observado é que este limite da indexação deve ser respeitado. Vamos a um exemplo que teremos problemas por acesso indevido:

import java.util.Scanner;

public class TabelaNotas {
    public static void main(String[] args) {
        int[]  TabelaNotas = new int[5];
        Scanner teclado = new Scanner(System.in);

        for (int i = 0; i < 5; i++) {
            System.out.println("Entre com a nota do aluno " + i);
            TabelaNotas[i+5] = teclado.nextInt();
        }
        System.out.println("Dados armazenados!!!");
        /* imprimindo os dados lidos... */
        for (int i = 0; i < 5; i++) {
            System.out.println("Nota da posição " + i + " é " + TabelaNotas[i]);
        }
        teclado.close();
    }
}

DISCUSSÃO : Ao tentar executar este código teremos um erro logo de início:

Entre com a nota do aluno 0
9
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
       at TabelaNotas.main(TabelaNotas.java:11)