Buscar

Vetores em Linguagem de Programação

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ECT1203 Linguagem de Programação
2012.1
Prof. Diego Rodrigues de Carvalho
Profa. Idalmis Milián Sardina
Prof. Luiz Eduardo Cunha Leite
Prof. Marconi Rodrigues Câmara
Prof. Marcelo Henrique Ramalho Nobre
Aula 07 – Vetores
Universidade Federal do Rio Grande do Norte
Escola de Ciências e Tecnologia
Hora de silenciar o celular
Manter o celular sempre desligado/silencioso quando estiver em sala de aula
Nunca atender o celular em sala de aula
Revisão da aula passada
Estruturas de repetição = método para executar um conjunto de comandos diversas vezes.
while
Executa o conjunto ENQUANTO uma condição for verdadeira.
testa depois executa
Geralmente usad0 quando não sabemos o total de repetições
while(num!=0){
 cout << num <<endl;
 cin >> num;
} 
do... while
Executa o conjunto ENQUANTO uma condição for verdadeira.
executa depois testa
do{
cin >> num;
cout << num <<endl;
} while(num!=0);
for
Executa o conjunto de comandos um número DEFINIDO de vezes.
Usa como parâmetros as 3 etapas das estruturas de repetição (inicialização, teste e atualização).
for (int i=0; i< 3;i++){
cout << i <<endl;
}
Problema:
Armazenar as notas de 4 jurados de salto ornamental e Calcular a média.
???
Simples...
int main(){
 float n1, n2, n3, n4, media;
 cout << “Entre com a nota 1: ”;
 cin >> n1;
 cout << “Entre com a nota 2: ”;
 cin >> n2;
 cout << “Entre com a nota 3: ”;
 cin >> n3;
 cout << “Entre com a nota 4: ”;
 cin >> n4;
 media = (n1 + n2 + n3 + n4)/4;
 cout << “Media: ” << media << endl;
 return 0;
}
Problema:
E se tivéssemos 25 juízes? 
???
7
Simples também, mas bem longo...
int main(){
 float n1, n2, n3, n4, n5, n6, n7, n8, n9, n10;
 float n11, n12, n13, n14, n15, n16, n17, n18;
 float n19, n20, n21, n22, n23, n24, n25, media;
 cout << “Entre com a nota 1: ”;
 cin >> n1;
 cout << “Entre com a nota 2: ”;
 cin >> n2;
 cout << “Entre com a nota 3: ”;
 cin >> n3;
 cout << “Entre com a nota 4: ”;
 cin >> n4;
 cout << “Entre com a nota 5: ”;
 cin >> n5; 
 cout << “Entre com a nota 6: ”;
 cin >> n6;
 cout << “Entre com a nota 7: ”;
 cin >> n7;
 cout << “Entre com a nota 8: ”;
 cin >> n8; 
 ...
Ainda não acabou...
 cout << “Entre com a nota 9: ”;
 cin >> n9;
 cout << “Entre com a nota 10: ”;
 cin >> n10;
 cout << “Entre com a nota 11: ”;
 cin >> n11;
 cout << “Entre com a nota 12: ”;
 cin >> n12;
 cout << “Entre com a nota 13: ”;
 cin >> n13; 
 cout << “Entre com a nota 14: ”;
 cin >> n14;
 cout << “Entre com a nota 15: ”;
 cin >> n15;
 cout << “Entre com a nota 16: ”;
 cin >> n16; 
 cout << “Entre com a nota 17: ”;
 cin >> 17; 
 cout << “Entre com a nota 18: ”;
 cin >> n18; 
 ... 
Ufa!!!
 cout << “Entre com a nota 19: ”;
 cin >> n19;
 cout << “Entre com a nota 20: ”;
 cin >> n20;
 cout << “Entre com a nota 21: ”;
 cin >> n21;
 cout << “Entre com a nota 22: ”;
 cin >> n22;
 cout << “Entre com a nota 23: ”;
 cin >> n23; 
 cout << “Entre com a nota 24: ”;
 cin >> n24;
 cout << “Entre com a nota 25: ”;
 cin >> n25;
 media = (n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+n13+n14+n15+n16+n17+n18+n19+n20+n21+n22+n23+n24+n25)/25;
 cout << “Media: ” << media << endl;
 return 0;
}
Esta é a melhor maneira de se resolver este problema?
Problemas semelhantes na ciência e engenharia
Redes de sensores
Processamento de sinais
Matemática (vetores)
Controlar múltiplos programas
Conjunto de informações
Objetivo da aula
Responder a seguinte pergunta:
Aprendi que uma variável guarda UMA informação... Mas nem tudo pode ser representado através de UMA informação, existe uma maneira de trabalhar com diversas informações? Ou para cada informação eu precisarei de uma variável?
Vetor
Coleção de variáveis do mesmo tipo referenciada por um nome comum
Matriz unidimensional
Também chamado de Array ou Lista
Definição
Os elementos de um vetor são armazenados em posições contíguas na memória
Cada elemento é acessado por meio de um índice
Características
variável
vetor
Declaração de vetores
sintaxe
	float dados[40];
tipo nome[número de elementos];
exemplo
Declaração de um vetor chamado dados para guardar 40 números reais
O valor que dimensiona o vetor deve ser uma constante inteira.
Atenção!
16
Obs.: variable-length array (or VLA)
Acessando os elementos de um vetor
Para acessar o elemento de um vetor, devemos especificar a sua posição:
dados[8]
A posição do vetor é determinada por meio de um número inteiro entre colchetes: uma constante, uma expressão aritmética ou uma variável entre colchetes. 
Também chamada de índice.
 0 1 2 3 4 5 6 7 8 37 38 39
6.5
7,8
5.3
dados
9.8
9.1
4.7
7,8
7.8
3.6
2.4
9.8
1.5
2.8
4.6
...
17
Atribuindo valores
dados[2] = 2.9;
Exemplo 1
cin >> dados[2];
Exemplo 2
O índice do primeiro elemento de um vetor é zero.
Atenção!
float dados[40];
		 tamanho do vetor
dados[2] = 2.9;
 índice do elemento
dados[2] = dados[0] + dados[1]
Exemplo 3
18
Exercício
Considere o vetor v a seguir:
e as variáveis x=3 e y=2. Escreva o valor correspondente às solicitações abaixo:
 0 1 2 3 4 5 6 7 8 9 10 11
6
7,8
5
v
4
2
4
7,8
5
3
2
2
1
2
6
(a) v[x+1] (b) v[x+2] (c) v[x+3] (d) v[x+4] 
(e) v[x*1] (f) v[x*2] (g) v[x*3] (h) v[v[x+4]]
(i) v[x+y] (j) v[8-v[2]] (k) v[v[4]] (l) v[v[v[7]]]
(m) v[v[1]*v[4]] (n) v[x+4]
19
Quanto espaço um vetor ocupa?
Total de bytes = sizeof(tipo) * tamanho do vetor
char s[10];
total_de_bytes = sizeof(char)*10;
total_de_bytes = sizeof(s);
int x[4];
total_de_bytes = sizeof(int)*4;
total_de_bytes = sizeof(x); 
Vetores e as estruturas de repetição
O comando de atribuição só é capaz de armazenar UMA informação por vez.
Os vetores, porém, armazenam diversas informações.
Como armazenar informações em um vetor de maneira automática? resposta: estruturas de repetição.
int i,dados[3];
for (i=0 ; i<3 ; i++){
cin >> dados[i];
}
Qual o erro deste programa?
int main() {
 float notas[10], media;
 int i;
 for(i=1; i<=10; i++) {
 cout << "Entre com a nota “<< i <<”: “; 
 cin >> notas[i];
 }
 media = 0;
 for(i=1; i<=10; i++) {
 media = media + notas[i];
 }
 media = media/10;
 cout << "Media: “<< media << endl;
 return 0;
}
Resposta:
O índice do primeiro elemento é zero
O vetor tem tamanho 10, portanto não existe elemento de índice 10.
A linguagem C++ não realiza verificação de limites de vetores.
Acesso a posições inválidas pode sobrepor dados da memória!
Atenção!
Inicializando vetores
//Programa que calcula o total de dias transcorridos no ano
int main() {
 int dmes[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
 int dia, mes, ano;
 char ch;
 cout << “Digite a data (DD/MM/AAAA): ” 
 cin >> dia >> ch >> mes >> ch >> ano;
 mes--;
 if(ano%4==0 && ano%100!=0 || ano%400==0)
 dmes[1] = 29;
 int total = dia;
 for(int i=0; i<mes; i++)
 total += dmes[i];
 
 cout << ”Total de dias transcorridos: “<< total << endl;
 return 0;
}
Inicializando vetores
Certo ou errado?
float notas[3];
notas = {4.5, 7.0, 8.2};
Resolvendo o problema com vetores
int main() {
 float notas[25], media;
 int i;
 for(i=0;i<25;i++) {
 cout << "Entre com a nota “<< i+1 <<”: “; 
 cin >> notas[i];
 }
 media = 0;
 for(i=0;i<25;i++) {
 media = media + notas[i];
 }
 media = media/25;
 cout << "Media: “<< media << endl;
 return 0;
}
Exercício 1
Dados dois vetores com n (n <= 50) componentes cada um, calcular e imprimir a soma deles. 
Exercício 2
Leia um conjunto com n (n <= 20) números e informe se existe algum elemento repetido no conjunto.
Exercício 3
Leia n (n <= 30) números quaisquer e imprima-os sem repetições.
Exemplo: 
 Entrada: 1,1,3,4,3,5,-8 
 Saída: 1,3,4,5,-8
Exercício 4
Dadas duas seqüências com n (n <= 100) números inteiros
entre 0 e 9, interpretadas como dois números inteiros de n algarismos, calcular a seqüência de números que representa a soma dos dois inteiros. 
Exemplo: 
 n = 8
1ª seqüência        8 2 4 3 4 2 5 1
2ª seqüência +  3 3 7 5 2 3 3 7 
 = 1 1 6 1 8 6 5 8 8
Exercício 5
Faça um programa para imprimir as n (n <= 100) primeiras linhas do triângulo de Pascal usando apenas um vetor, com o valor de n fornecido pelo usuário.
Triângulo de Pascal para n = 6:
1                           
1   1         
1   2  1         
1   3  3   1
1   4  6   4   1
1   5  10  10   5 1

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais