21 Variáveis estruturadas São variáveis compostas por outras variáveis. O tipo de variável estruturada mais comum é o vector (array) onde os componentes (variáveis) são todos do mesmo tipo, por exemplo: um vector de reais ou um vector de inteiros. Também temos a estrutura ou registo (record) onde os componentes podem ser de tipos diferentes.
22 Vectores Um vector (array) é uma variável com um número fixo de elementos (também variáveis!), onde estes elementos são todos de um mesmo tipo, ou seja é uma linha (ou coluna) com um quantidade de valores.
Declaração de um vector: tipo nome [tamanho]; onde: tipo pode ser inteiro, real ou caracter (int, float,char) tamanho é o número de elementos
Exemplos: int v [10]; é a declaração de um vector de 10 elementos inteiros
Exemplos: float x [8]; é a declaração de um vector de 8 elementos reais
Exemplos: char ch [30]; é a declaração de um vector de 30 caracteres
Índices Um vector de 10 elementos inteiros: int v [10]; são 10 variáveis (inteiras) com um mesmo nome! Como poderemos trabalhar com cada uma destas variáveis individualmente?
Índices A resposta é: Através de índices, que indicam a posição de cada um dos elementos. Um vector, de 10 elementos, tem os índices de 0 a 9 onde os elemento são referenciados por: v [0], v [1], v [2], v [3], v [4], v [5], v [6], v [7], v [8] e v [9].
Índices Ou seja o nome do vector e o respectivo índice entre parênteses rectos. NÃO confundir com a declaração!!! Observe que diferente do C, em muitas linguagens os índices começam em 1 (um)!
Como trabalhar com vectores? Cada elemento é uma variável (simples)! Ou seja podemos trabalhar da mesma maneira, atribuir, ler, escrever, apenas temos que indicar o índice do elemento.
Exemplos: int v [10]; v [0] = 4; v [2] = 3;
Aqui são atribuídos: - o valor inteiro 4 para o elemento de índice 0 (o primeiro!) e - o valor inteiro 3 para o elemento de índice 2 do vector v.
Exemplos: int i; float x [5]; x [4] = 2.1; i = 2; printf( Por favor escreva um número\n ); scanf( %f,&x[i]); printf( O quinto elemento é %f\n,x[4] );
Aqui é atribuído o valor real 2.1 para o elemento de índice 4, lido, do terminal, um valor real para o elemento de índice i (que neste momento vale 2), escrito, no terminal, o valor do elemento de índice 4 (o quinto) do vector x.
Observação: A não ser em situações especiais, trabalhamos com os elementos de um vector individualmente. Ou seja com os índices!
Observação: Para: int v[10]; É errado! v = 2; scanf( %d,&v ); printf( %d\n,v ); Pois faltam os índices!
CUIDADO!!! int v [5]; v [5] = 2; ESTÁ ERRADO!!! O vector v só tem 5 elementos e v [5] não existe, pois seria o sexto elemento!
23 - A utilização de repetições De uma maneira geral o trabalho com vectores envolve instruções de repetição. Suponha que queremos escrever os elementos de um vector de tamanho 1000, ou fazemos:
escrever O 0 é,v[0] escrever O 1 é,v[1] escrever O 998 é,v[998] escrever O 999 é,v[999]
printf( O de índice 0 é %d\n,v[0]); printf( O de índice 1 é %d\n,v[1]); printf( O de índice 998 é %d\n,v[998]); printf( O de índice 999 é %d\n,v[999]);
O que não seria razoável pois nosso programa teria mais do que mil instruções (sem necessidade). Isto pode ser resolvido utilizando-se uma instrução de repetição, que por sabermos a quantidade de vezes que vamos repetir, o for é o mais indicado.
Fluxograma: i = 0 i <=999 sim escrever O, i, é,v[i] i = i + 1 não
for ( i = 0; i <= 999; i = i +1) printf( O de índice %d é %d \n,i,v[i]);
Exemplos: Leitura de um vector de 10 elementos do terminal.
sem mensagens: int v[10]; for ( i = 0; i <= 9; i = i +1) scanf( %d,&v[i]);
com mensagens: int v[10]; for ( i = 0; i <= 9; i = i +1) { printf( Pf o de índice %d\n,i); scanf( %d,&v[i]); }
Exemplos: Teste dos elementos do vector (anterior) para vermos se são nulos (igual a zero).
for ( i = 0; i <= 9; i = i +1) if ( v[i] == 0) printf( O de índice %d é nulo\n,i);
Exemplos: Cópia dos elementos do vector (anterior) para um segundo vector.
int v[10], w[10]; for ( i = 0; i <= 9; i = i +1) w[i] = v[i] ;
Observe que: - o vector w deve ser do mesmo tipo do que v e de tamanho igual (ou maior!). - o vector v já deve ter os valores atribuídos antes da atribuição para w.
Exemplos: Escrita do vector w (mostrar no terminal os elementos).
Todos os elementos mesma linha for ( i = 0; i <= 9; i = i +1) printf( %d,w[i]);
Um elemento por linha for ( i = 0; i <= 9; i = i +1) printf( %d\n,w[i]);
Observação: Todos os exemplos anteriores utilizaram o mesmo for!!!