FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 10) Prof. Alessandro Bernardo [email protected] http://bsi.k6.com.br FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Até o momento, as variáveis armazenavam apenas um valor. Por exemplo a linha abaixo: int var; Nessa linha, declara-se uma variável chamada var que pode armazenar apenas um número inteiro. Agora considere os exemplos: (a) Faça um programa que leia e armazene três números reais e escreva a média deles; (b) Faça um programa que leia e armazene 200 números reais e escreva a média deles. Esse tipo de variável é suficiente para o exemplo mostrado na letra (a). Entretanto no exemplo da letra (b), seria necessário declarar 200 variáveis! FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores É fácil verificar que declarar 200 variáveis para um exemplo simples como esse é impraticável. Veja abaixo como seriam as soluções dos exemplos. // Exemplo letra (a) // Exemplo letra (b) float a, b, c; float a, b, c, d, e, f, ...... cout << “Insira três números:”; cout << “Insira 200 números:”; cin >> a >> b >> c; cin >> a >> b >> c >> d >> ...; float media = (a + b + c)/3; float media = (a + b + c + ...)/200; cout << “Média: “ << media << endl; cout << “Média: “ << media << endl; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Dessa forma, para esse último exemplo, outro tipo de variável é necessária. O vetor é adequado para esse caso. Esse tipo de dado constitui em apenas uma variável que pode armazenar mais de um dado do mesmo tipo. No exemplo, é necessário armazenar 200 números do tipo float. Para isso, podese declarar um vetor que possua capacidade para armazenar 200 números do tipo float. Ou seja, ao invés de se declarar 200 variáveis, declara-se um vetor com 200 vetor campos, onde cada campo armazena um 0 número float. 1 Cada campo 2 A declaração de um vetor é vista abaixo, armazena 3 um número float sendo que, ao lado, encontra-se como ....... esses dados são armazenados na memória. float vetor[200]; 198 199 FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Refazendo o exemplo: (b) Faça um programa que leia e armazene 200 números reais e escreva a média deles. float vetor[200]; cout << “Insira 200 números:”; for (int i = 0; i < 200; i++) { cin >> vetor[i]; } float soma = 0; for (int i = 0; i < 200; i++) soma += vetor[i]; cout << “Média: “ << soma/200 << endl; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores SINTAXE: Declaração: tipo nome_do_vetor[ dimensão ]; Declaração e inicialização: tipo nome_do_vetor[] = { var1, var2, var3, ... }; Atribuição: nome_do_vetor [ posição ] = valor; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exemplo: double v[5]; v[1] = 10; v[4] = 5.5; v[3] = 7.5; v[2] = v[4] + v[3]; cout << v[2] << endl; cout << v[1] << endl; Memória: FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exemplo: double v[5]; v[1] = 10; v[4] = 5.5; v[3] = 7.5; v[2] = v[4] + v[3]; cout << v[2] << endl; cout << v[1] << endl; Memória: vetor 0 1 2 3 4 ? ? ? ? ? FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exemplo: double v[5]; v[1] = 10; v[4] = 5.5; v[3] = 7.5; v[2] = v[4] + v[3]; cout << v[2] << endl; cout << v[1] << endl; Memória: vetor 0 1 2 3 4 ? 10 ? 7.5 5.5 FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exemplo: double v[5]; v[1] = 10; v[4] = 5.5; v[3] = 7.5; v[2] = v[4] + v[3]; cout << v[2] << endl; cout << v[1] << endl; Memória: vetor 0 1 2 3 4 ? 10 13 7.5 5.5 FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exemplo: double v[5]; Memória: v[1] = 10; v[4] = 5.5; v[3] = 7.5; vetor 0 1 2 3 4 v[2] = v[4] + v[3]; cout << v[2] << endl; cout << v[1] << endl; Monitor: 13 10 ? 10 13 7.5 5.5 FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Outro exemplo: int v[] = {10, 20, 30}; Memória: FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Outro exemplo: int v[] = {10, 20, 30}; Memória: vetor 0 1 2 10 20 30 FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exemplos: (1) Faça um programa que leia e armazene 10 números em um vetor de float e, em um laço separado, escreva no monitor o quadrado e o dobro dos números armazenados. (2) Faça um programa que leia e armazene 10 valores em um vetor de números inteiros. Posteriormente, esse programa deverá mostrar os valores armazenados no primeiro, terceiro, quinto, sétimo e nono 0 números reais. (3) Faça um programa que leia e armazene N valores em um vetor de números reais, sendo que N é um valor inserido pelo usuário. Em um laço for separado, esse programa deverá calcular quantos números positivos foram armazenados. (4) Faça um programa que leia e armazene 10 números inteiros. Em um laço for separado, esse programa deverá calcular quantos números pares ou ímpares foram armazenados. FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores (1) Faça um programa que leia e armazene 10 números em um vetor de float e, em um laço separado, escreva no monitor o quadrado e o dobro dos números armazenados. cout << "Insira 10 números:" << endl; float vet[10]; for (int i = 0; i < 10; i++) cin >> vet[i]; cout << "O quadrado desses números são:" << endl; for (int i = 0; i < 10; i++) cout << vet[i]*vet[i] << endl; cout << "O dobro desses números são:" << endl; for (int i = 0; i < 10; i++) cout << 2*vet[i] << endl; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores (2) Faça um programa que leia e armazene 10 valores em um vetor de números inteiros. Posteriormente, esse programa deverá mostrar os valores armazenados no primeiro, terceiro, quinto, sétimo e nono 0 números reais. cout << "Insira 10 números:" << endl; int vet[10]; for (int i = 0; i < 10; i++) cin >> vet[i]; cout << "Os valores do 1o, 3o, 5o, 7o e 9o campos são:" << endl; for (int i = 0; i < 10; i+=2) cout << vet[i] << endl; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores (3) Faça um programa que leia e armazene N valores em um vetor de números reais, sendo que N é um valor inserido pelo usuário. Em um laço for separado, esse programa deverá calcular quantos números positivos foram armazenados. cout << "Insira a quantidade de números a serem inseridos: " ; int qtd; cin >> qtd; double vet[qtd]; cout << "Insira " << qtd << " números: " << endl; for (int i = 0; i < qtd; i++) cin >> vet[i]; int qpos = 0; for (int i = 0; i < qtd; i++) if (vet[i] > 0) qpos++; cout << "Quantidade de números positivos: " << qpos << endl; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores (4) Faça um programa que leia e armazene 10 números inteiros. Em um laço for separado, esse programa deverá calcular quantos números pares ou ímpares foram armazenados. int vet[10]; cout << "Insira 10 números inteiros: " << endl; for (int i = 0; i < 10; i++) cin >> vet[i]; int qpar = 0, qimp = 0; for (int i = 0; i < 10; i++) if (vet[i] % 2 == 0) qpar++; else qimp++; cout << "Quantidade de números pares: " << qpar << endl; cout << "Quantidade de números ímpares: " << qimp << endl; FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Vetores Exercícios: (1) Faça um programa que leia e armazene 10 números reais e, em um laço separado, calcule quantos deles são positivos, negativos ou zero. (2) Faça um programa que leia e armazene 10 números em um vetor de float e, em um laço separado, calcule o somatório e a média entre esses números. (3) Faça um programa que leia e armazene N números em um vetor de int, sendo que N é um número inserido pelo usuário. Esse programa, em um laço separado, deverá contar quantos pares e ímpares foram inseridos e deverá calcular o somatório desses números.