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 <=999 sim não
i = 0
escrever
“O i é”,v[i] i = i + 1
...
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 !!!