Cursos / Informática para Internet / Programação Estruturada / Aula
Durante seus estudos, você já viu que uma variável ocupa um espaço na memória reservado para armazenar valores definidos de acordo com determinado tipo de dados (veja Aula 2). Por exemplo, variáveis do int podem armazenar valores numéricos inteiros, mas apenas um valor por vez, certo? Pense na situação em que você queira escrever um programa que solicite ao usuário a entrada das notas de 10 alunos de uma turma de sua escola. Como você faria isso?
Uma possibilidade de programa é mostrada a seguir:
Note que o código, apesar de simples, fica repetitivo (duplicação de código) e muito extenso. Imagine declarar variáveis para turmas de 50 alunos!!! E o pior de tudo é que, na prática, vamos ter turmas com quantidade de alunos diferentes. Dessa forma, não sabemos previamente a quantidade de variáveis que precisaríamos declarar.
Você viu na aula anterior que comandos de iteração podem eliminar duplicação de código, reduzindo assim o tamanho do código. Vamos ver uma versão desse mesmo programa agora usando laços. Observe o código e verifique se ele está correto.
Você conseguiu detectar algum problema nesse código? Ele está bem enxuto, porém o problema é que temos apenas uma única variável. Toda vez que uma nota é lida, é armazenada nessa mesma variável. Como a variável só consegue armazenar um valor por vez, a nota anteriormente lida é perdida. Para resolver esse problema, fazemos uso dos chamados vetores (ou arrays), uma estrutura de dados homogênea e indexada que pode armazenar diversos valores de um mesmo tipo de dado.
Vetor é uma estrutura de dados homogênea, ou seja, que armazena valores de um mesmo tipo.
Logo a seguir, vemos a declaração e inicialização de um vetor do tipo double de 10 posições e sua representação na memória:
O índice (número do elemento, acima do desenho) representa a posição onde o dado está armazenado no vetor. Por exemplo, na figura anterior, o valor armazenado na segunda posição do vetor é 9,0. Por isso, diz-se que o vetor é uma estrutura indexada. A forma geral de declaração de vetores segue abaixo:
Ao declarar um vetor, indicamos o tipo do array e o nome da variável. O uso do [] é para indicar que a variável é um array. Existe, porém, uma diferença quando declaramos um array em relação às declarações de variáveis de tipos primitivos. Para que seja alocado o espaço na memória relativo ao array, é necessário usar a palavra chave new, seja na própria declaração do array, ou inicializando-o posteriormente. Veja o formato geral para a inicialização na própria declaração:
O tipo, como o próprio nome já diz, irá declarar o tipo de cada elemento do vetor: inteiro (int), real (double e float), caractere (char), etc. Já o tamanho irá definir quantos elementos o vetor irá guardar. Quando usamos a palavra chave new, é reservado um espaço de memória suficiente para armazenar a quantidade de elementos especificada. Fazendo uma analogia a grosso modo, declarar um vetor do tipo double de 50 posições equivaleria a declarar 50 variáveis do tipo double, só que é muito mais prático trabalhar com vetores. Principalmente porque o tamanho do vetor pode ser determinado pelo usuário durante a execução do programa! Veja como isso acontece:
Observe no código que primeiro é lida a quantidade de notas a serem processadas. Essa quantidade é armazenada na variável quantidade, a qual é utilizada para determinar o tamanho do array e a condição de continuidade do laço (i <= quantidade). Isso quer dizer que, se o usuário digitar 45 para a quantidade de notas, o programa irá ler e alocar espaço para guardar essas 45 notas. Não é legal?
Bom, você deve ter percebido que dentro do laço estamos atribuindo o valor lido a uma determinada posição do array. Isso está sendo feito pelo seguinte comando:
Observe o uso do [i]. Como um vetor geralmente tem várias posições, então é necessário informar em qual posição você quer ler ou escrever. Isso é feito passando-se o índice da posição. Mas, cuidado, pois na maioria das linguagens de programação, os índices começam pelo número 0 (zero)! Veja isso na Figura 1, que mostra o espaço na memória de um array de 10 posições. O índice do primeiro elemento do array é 0, e não 1. Já o índice da última posição é 9, e não 10. Observe que, se você quiser acessar o n-ésimo elemento de um array, é só usar o índice (n - 1). É fácil, mas exige atenção.
Para ler ou escrever em uma posição do array, é só usar o nome da variável e indicar o índice da posição a ser lida ou escrita, como nos seguintes exemplos:
Versão 5.3 - Todos os Direitos reservados