Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 09
Programacao: Vetores
Jose Romildo Malaquias
Departamento de Computac
ao
Universidade Federal de Ouro Preto
2011-1
1/62
Motivacao
Problema
Faca um programa que leia as notas dos alunos de uma turma de 5
alunos, determine e mostre a media aritmetica das notas, e o
n
umero de alunos com notas inferiores `a media.
2/62
Motivacao (cont.)
# include < stdio .h >
int main ( void )
{
double nota ;
double soma = 0.0;
for ( int i = 0; i < 5; i ++)
{
printf ( " nota % d : " , i +1);
scanf ( " % lf " , & nota );
soma = soma + nota ;
}
double media = soma / 5;
printf ( " m
e dia : %2 f \ n " , media );
// e agora ... como acessar as notas j
a digitadas ?
return 0;
}
3/62
Motivacao (cont.)
Solucao?
Usar uma variavel diferente para armazenar cada nota.
4/62
Motivacao (cont.)
# include < stdio .h >
int main ( void )
{
double n1 , n2 , n3 , n4 , n5 ;
printf ( " nota 1: " ); scanf ( " % lf " , & n1 );
printf ( " nota 2: " ); scanf ( " % lf " , & n2 );
printf ( " nota 3: " ); scanf ( " % lf " , & n3 );
printf ( " nota 4: " ); scanf ( " % lf " , & n4 );
printf ( " nota 5: " ); scanf ( " % lf " , & n5 );
double media = ( n1 + n2 + n3 + n4 + n5 ) / 5;
printf ( " m
e dia : %2 f \ n " , media );
int cont = 0;
if ( n1 < media ) cont ++;
if ( n2 < media ) cont ++;
if ( n3 < media ) cont ++;
if ( n4 < media ) cont ++;
if ( n5 < media ) cont ++;
printf ( " abaixo da m
e dia : % d \ n " , cont );
return 0;
}
5/62
Motivacao (cont.)
6/62
Motivacao (cont.)
I
Pergunta:
Existe outra maneira de trabalhar com as 100 variaveis sem
usar 100 nomes diferentes?
Resposta:
Sim, utilizando vetor.
7/62
Motivacao (cont.)
Pergunta:
Existe uma maneira de trabalhar com um n
umero
desconhecido (pelo programador) de variaveis?
Resposta:
Sim, utilizando vetor.
8/62
Vetor
9/62
Vetor (cont.)
10/62
11/62
Exemplos:
int vet [6];
double notas [100];
char texto [256];
double medias [2* n ];
//
//
//
//
um
um
um
um
vetor
vetor
vetor
vetor
de
de
de
de
6 inteiros
100 doubles
256 caracteres
2* n doubles
12/62
Ao declaramos
int vet [4]
e alocado na mem
oria um espaco linear para 4 variaveis
inteiras, representadas da seguinte forma:
Exemplo:
double Notas [10];
14/62
Sintaxe:
vetor[
ndice]
15/62
Exemplo:
double Notas [10];
Notas [1] = 9.35;
printf ( " % f " , Notas [1]);
Notas[1] refere-se ao componente na posic
ao 1 do vetor
Notas, ou seja, o segundo elemento do vetor.
16/62
17/62
18/62
A primeira posic
ao de um vetor tem ndice 0.
Au
ltima posic
ao de um vetor tem ndice tamanho - 1 .
Importante:
O sistema de execucao n
ao verifica se o ndice usado para
acessar um componente do vetor e valido.
responsabilidade do programador garantir que o ndice
E
usado para acessar um elemento de um vetor
e v
alido.
19/62
20/62
21/62
22/62
23/62
25/62
26/62
27/62
28/62
29/62
30/62
31/62
32/62
33/62
34/62
35/62
36/62
37/62
38/62
39/62
40/62
41/62
42/62
43/62
45/62
Colocar os n
umeros de 1 a 5 em Vetor.
46/62
Colocar os n
umeros de 1 a 5 em Vetor.
for ( int i = 0; i < 5; i ++)
Vetor [ i ] = i + 1;
46/62
Colocar os n
umeros de 1 a 5 em Vetor.
for ( int i = 0; i < 5; i ++)
Vetor [ i ] = i + 1;
Colocar os n
umeros de 5 a 1 em Vetor.
46/62
Colocar os n
umeros de 1 a 5 em Vetor.
for ( int i = 0; i < 5; i ++)
Vetor [ i ] = i + 1;
Colocar os n
umeros de 5 a 1 em Vetor.
for ( int i = 0; i < 5; i ++)
Vetor [ i ] = 5 - i ;
46/62
47/62
48/62
Exemplo:
# define TAMANHO 5
double VetReais [ TAMANHO ];
// coloca 5 ,4 ,3 ,2 ,1 no vetor
for ( i = 0; i < TAMANHO ; i ++)
VetReais [ i ] = TAMANHO + i ;
49/62
Exemplo:
const int TAMANHO = 20
double VetReais [ TAMANHO ] , VetCopia [ TAMANHO ];
// copia os dados de um vetor para outro
for ( i = 0; i < TAMANHO ; i ++)
VetCopia [ i ] = VetReais [ i ];
50/62
51/62
// defini
c~
a o de macro
Inicializacao de vetores
Exemplo:
int v [5] = { 16 , 36 , 3 , 8 , 26 };
53/62
Exemplo:
int v [] = { 16 , 36 , 3 , 8 , 26 };
54/62
Busca
55/62
Pesquisa sequencial
56/62
Passos:
1. Inicializacao
int i = 0;
int encontrado = 0;
/* falso */
57/62
2. Pesquisa
while ( i < TAMANHO && ! encontrado )
{
if ( vetor [ i ] == x )
encontrado = 1;
/* verdadeiro */
else
i ++;
}
58/62
3. Tratamento do resultado
if ( encontrado )
printf ( " Valor % d encontrado na posi
c~
ao %d\n" ,
vetor [ i ] , i );
else
printf ( " Valor % d n~
a o encontrado \ n " ,
vetor [ i ]);
59/62
// realiza a pesquisa
int encontrado = 0; /* falso */
for ( i = 0; i < TAMANHO && ! encontrado ; i ++)
encontrado = ( vet [ i ] == valor );
// exibe resultado
if ( encontrado )
printf ( " encontrado na posi
c~
a o % d \ n " , i - 1);
else
printf ( " n~
a o encontrado \ n " );
return 0;
}
61/62
FIM
Creditos:
Baseado no material preparado pelo
Prof. Guillermo Camara-Chavez.
62/62