Baixe o app para aproveitar ainda mais
Prévia do material em texto
Vetores Vetores e estrutura de repetição Problema Um algoritmo que receba a nota de 5 alunos e imprima: ● A média das notas dos alunos ● Quantos foram aprovados ● A maior nota ● A menor nota Programando .... Agora para 50 alunos E se o número de alunos fosse desconhecido ? Precisamos de mais ferramentas Vetores, arranjos ou variáveis indexadas Um conjunto de valores agrupados em uma única entidade, podendo ter uma (A), duas (B), três dimensões ou mais. Em C, os indices iniciam em zero Vetores Definição: Um vetor é uma variável composta homogênea unidimensional, formada por uma seqüência de variáveis, todas do mesmo tipo, com mesmo identificador e alocadas seqüencialmente na memória. ● Uma vez que as variáveis têm o mesmo nome, o que as distingue é um índice, que referencia sua localização dentro da estrutura. Um vetor (= array) é uma estrutura de dados que armazena uma sequência de objetos, todos do mesmo tipo, em posições consecutivas da memória (Paulo Feofiloff). Acessando os valores ● Cada elemento do vetor é tratado como se fosse uma variável simples. ● Para referência a um elemento do vetor utiliza-se o nome do vetor e a identificação do elemento (índice) entre colchetes. ● Para referenciar o elemento 8, tem-se: A[3] ● Para atribuir o valor 15 ao 5º elemento (índice 4) do conjunto, tem-se: A[4] = 15. A Declarando Declaração int idade[100]; // declara um vetor chamado 'idade' do tipo // 'int' que recebe 100 elementos. float nota[25]; // declara um vetor chamado 'nota' do tipo // 'float' que pode armazenar 25 números. char nome[80]; // declara um vetor chamado 'nome' do tipo // 'char' que pode armazenar 80 caracteres. int dia[7] = {12,30,14,7,13,15,6}; float nota[5] = {8.4,6.9,4.5,4.6,7.2}; char vogal[5] = {'a’, ‘e’, ‘i’, ‘o’, ‘u'}; Declaração e inicialização Atribuições Opcionalmente, podemos atribuir os elementos do vetor enumerando-os um a um: int dia[7]; // declaração dia[0] = 2; // atribuições dia[1] = 5; dia[5] = 4; Entrada e saída de dados Podemos ler um valor para uma posição específica do vetor: int v[10]; scanf ("%d", &v[3]); Ou imprimir o valor de uma posição específica: int v[3] = {4,5,6}; printf ("%d", v[1]); Entrada e saída de dados Podemos ler um valor para uma posição específica do vetor: int v[10]; scanf ("%d", &v[3]); Ou imprimir o valor de uma posição específica: int v[3] = {4,5,6}; printf ("%d", v[1]); Por isso os vetores são também referenciados como variáveis indexadas. Voltando ao problema ... OK. Basta então utilizar uma variável notas[50], ao invés de nota1, nota2, nota3 .... Voltando ao problema ... Porém, continua sendo trabalhoso escrever este programa, devo precisar de mais "ferramentas" float notas[50]; scanf ("%f",notas[0]); scanf ("%f",notas[1]); scanf ("%f",notas[2]); scanf ("%f",notas[3]); ... scanf ("%f",notas[50]); Voltando ao problema ... Porém, continua sendo trabalhoso escrever este programa, devo precisar de mais "ferramentas" float notas[50]; scanf ("%f",notas[0]); scanf ("%f",notas[1]); scanf ("%f",notas[2]); scanf ("%f",notas[3]); ... scanf ("%f",notas[50]); A única coisa que muda são os valores dos índices. Estruturas de iteração Sim. Você precisa de uma estrutura de iteração. Estruturas de iteração Considere uma variável i que varie de 0 a 49. float notas[50]; int i; scanf ("%f",notas[i]); Estruturas de iteração Agora uma estrutura que faça esta variável i varie de 0 a 49, float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Estruturas de iteração Simule para ver como isto funciona. float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Comando: while (enquanto) Significado: A sequência de comandos é executado enquanto o valor da expressão for verdadeiro (ou seja, diferente de zero) while (expressão) { sequencia de comandos; } While Vs For ● O comando while é suficiente para resolver todo e qualquer problema de iteração. ● Porém, a linguagem C fornece outro mecanismo que tem uma forma mais simples para "casos de contagem", como no exemplo anterior. ● Voltando ao exemplo ... While Vs For float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Inicialização teste incremento float notas[50]; int i; ( i = 0;) { scanf ("%f",notas[i]); i = i + 1; } While Vs For float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Inicialização teste incremento float notas[50]; int i; ( i = 0;i<50;) { scanf ("%f",notas[i]); i = i + 1; } While Vs For float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Inicialização teste incremento float notas[50]; int i; ( i = 0;i<50; i = i+1) { scanf ("%f",notas[i]); } While Vs For float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Inicialização teste incremento float notas[50]; int i; for ( i = 0;i<50; i = i+1) { scanf ("%f",notas[i]); } While Vs For float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Inicialização teste incremento float notas[50]; int i; for ( i = 0;i<50; i++) { scanf ("%f",notas[i]); } While Vs For float notas[50]; int i; i = 0; while ( i < 50) { scanf ("%f",notas[i]); i = i + 1; } Inicialização teste incremento (sintaxe alternativa) Sintaxe e significado do for for ( inicialização; expressão; incremento) { sequencia de comando; } inicialização; while ( expressão) { sequencia de comando; incremento } Equivalente a ... Conclua o algoritmo abaixo Um algoritmo que receba a nota de 50 alunos e imprima (dica: teste com até 5 alunos): ● A média das notas dos alunos ● Quantos foram aprovados ● A maior nota ● A menor nota Exercícios
Compartilhar