Professional Documents
Culture Documents
Um vetor e uma estrutura que armazena varios dados de mesmo tipo, ao contrario das
variaveis comuns, que so podem armazenar um valor de cada vez. Em programacao, e das
estruturas mais simples.
Os elementos individuais sao acessados por sua posicao dentro do vetor. A posicao e dada
pelo chamado indice, que, em geral, utiliza uma sequencia de numeros inteiros, que sao
acessados de forma rapida e eficiente.
O vetor e, assim, uma sequencia de memoria, que poderia ter a seguinte analogia
representativa:
Os elementos do vetor, como visto, sao referenciados pelo indice, que comeca em zero: assim,
vetor[0] mostrara o valor do primeiro elemento da estrutura.
Tais elementos costumam ser acessados percorrendo-se a estrutura, item a item, por meio de
uma rotina semelhante a essa:
void percorrer_vetor( ) {
int i;
for(i=0; i<10; i++)
{
Quando invocamos uma funcao (assunto que, mais adiante, sera visto em detalhes) e lhe
passamos o vetor como parametro, na realidade a funcao nao recebe o vetor na sua
totalidade, mas apenas o endereco inicial do vetor, pois estamos passando, por exemplo,
s = &s[0] (endereco de memoria do primeiro elemento do vetor s).
Se passamos um endereco, entao a variavel que o recebe tera que ser um ponteiro (variavel
que armazena enderecos de memoria, assunto que tambem veremos adiante) para o tipo dos
elementos do vetor. E por essa razao que no cabecalho de uma funcao, que recebe um vetor
como argumento, aparece normal- mente um ponteiro recebendo o respectivo parametro.
Funcoes que manipulam strings a percorrem ate encontrar o caractere NULL, quando saberao
que ela terminou. Utilizamos, portanto, o caractere zero da tabela ASCII (\0) para encerrar a
string, e este ocupa um espaco que deve ser previsto pelo programador, como visto
anteriormente.
A relacao entre strings e vetores e, dessa forma, direta. Uma string e um vetor de caracteres,
mas nem todo vetor de caracteres e uma string.
Vamos declarar uma string que podera armazenar ate 20 caracteres (incluindo o NULL).
Usaremos inicialmente apenas cinco posicoes:
A saida do programa seria,
Se o mesmo programa forcasse o elemento frase[10] a ser NULL, a string pararia na letra J.
Vejamos:
Repare que o caractere NULL, de final de string, nao foi contado. A funcao strlen( ) poderia ser
implementada assim:
tamanho_str strlen(const char string) {
int i = 0;
while(string[i])
i++;
return(i);
}
A posicao de cada elemento sera determinada pelo par de indices que representa sua
localizacao dentro da matriz.
Ou podemos manipular os elementos da matriz usando duas variaveis e uma repeticao, como
a seguir:
Exerccios
1. Escreva um programa que receba do usuario (interativamente) tres notas para dado aluno,
armazenando-as em um vetor; em seguida, o programa deve imprimir na tela tais notas.
2. Refaca o exercicio anterior, agora calculando a media aritmetica das notas recebidas pelo
aluno.
3. Como seria uma matriz que representa os assentos de uma aeronave? Quais seriam as
manipulacoes dessa matriz, em um sistema de reserva e compra de passagens aereas?
4. Escreva um programa que receba uma string de caracteres minusculos a partir do usuario e
conte o numero de elementos dessa string; na sequencia, o programa deve converter os
caracteres para maiusculos.
5. Escreva um programa que cadastre um aluno a partir de seu RA (Registro Academico), nome
e de tres notas. Em seguida, gere um relatorio na tela com essas informacoes na ordem em
que foram digitadas.
6. Dada uma sequencia de cinco numeros inteiros, mostre-os na tela na ordem inversa a da
leitura.
7. Dada uma string digitada pelo usuario, determine o numero de vezes que determinada letra
de sua escolha ocorre na mesma.
8. Em dada turma ha dez alunos, e cada um realizou tres provas. Calcule a media de cada aluno
e a media da turma.