Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Programação Marco Montebello | FACENS marco.montebello@facens.br mailto:marco.montebello@facens.br VETORES MANEIRA DE ARMAZENAR VÁRIOS DADOS EM UM MESMO NOME DE VARIÁVEL ATRAVÉS DO USO DE ÍNDICES NUMÉRICOS. Agenda ▪ Revisão ▪ Introdução ▪ Declaração e inicialização ▪ Referência e armazenamento de dados ▪ Exemplos e exercícios Revisão ▪ Criação de variáveis ▪ Tipos: int, float, double, char ▪ Exibir informações na tela ▪ printf ▪ Receber informações do usuário ▪ scanf ▪ Estruturas de Decisão (simples e aninhada) ▪ if ... else ▪ Estruturas de Repetição ▪ for ▪ while ▪ do ... while Vetor ▪ Assuntos já estudados: ▪ Tipos básicos de dados: int, float e char. ▪ Operações: aritméticas, lógicas e relacionais. ▪ Estruturas de controle simples e aninhadas: if, switch, for, while e do-while. ▪ Uso de variáveis como: auxiliares, acumuladores e contadores. ▪ Agora é possível estudar uma maneira de processar conjuntos de dados/valores do mesmo tipo. Vetor ▪ Matriz unidimensional ou Vetor – é uma matriz que possui um único índice. ▪ Exemplo: Conjunto de notas dos alunos de uma turma ▪ nota[10]; 0 1 2 3 4 5 6 7 8 9 Vetor ▪ Inclui tanto o tipo de dados como o tamanho (número de elementos da matriz). ▪ Pode ser declarada como sendo de qualquer um dos tipos básicos de C. ▪ Sintaxe: ▪ tipo nome_vetor[tamanho]; ▪ Exemplos: ▪ float nota[10]; ▪ int idade[6]; ▪ ou ▪ #define ALUNOS 10 ▪ float nota[ALUNOS]; tamanho é a quantidade de elementos da matriz. Deve vir entre colchetes e tem que ser um valor inteiro. Esse valor pode ser numérico ou até uma constante, desde que seja inteira. Vetor ▪ Os elementos do vetor são todos do mesmo tipo e podem ser acessados individualmente a partir de um único nome. ▪ Em cada posição do vetor pode-se armazenar: ▪ Números, ▪ Letras ou ▪ Caracteres. Vetor ▪ Cada variável do vetor é chamado de elemento e é diferenciado por meio de um número chamado índice. ▪ O vetor é unidimensional, portanto possui um único índice. ▪ A capacidade de um vetor é fixa e deve ser informada no momento da criação do vetor. Vetor ▪ Exemplos da utilização de vetores: ▪ Conjunto de idades dos alunos de uma determinada turma. ▪ Conjunto de comissões mensais associadas a um determinado empregado ao longo do ano. 21 20 18 20 35 19 200.50 900.30 800.00 750.50 850.25 900.6 790.00 ... Declaração de Vetor ▪ Um vetor em C é declarado da mesma forma que uma variável simples. ▪ Sintaxe: ▪ Tipo: corresponde o tipo de dados de cada um dos elementos do vetor. ▪ Nome_variavel: indica o nome pelo qual esse vetor vai ser conhecido. ▪ Numero_de_elementos: valor constante que indica quantos elementos tem o vetor. ▪ Exemplos: int idade[6];//idade é um vetor com 6 números inteiros float notas[12]; //notas é um vetor com 12 números reais Inicialização do Vetor ▪ É possível iniciar automaticamente todos os elementos de um vetor. ▪ A inicialização pode ser total ou parcial. ▪ Sintaxe: ▪ Na inicialização do vetor existe um ponto e vírgula após o fechamento das chaves. ▪ Em C, estruturas de laços e comando de decisão não admitem ponto e vírgula após a chave de dados, diferente do que ocorre com as estruturas de dados. tipo nome[n]={valor_1,valor_2,...,valor_n}; Inicialização do Vetor ▪ int matriz[4] = {100, 200, 300, 400}; //inicialização total ▪ int matriz[4] = {100, 200}; //inicialização parcial - os valores não inicializados recebem zero 100 200 300 400 100 200 0 0 Inicialização do Vetor – Cuidado ▪ int vetor[10] = {1, 2, 3}; ▪ int vetor[2] = {100, 200, 300}; ▪ int vetor[ ] = {1, 2, 3, 4}; ▪ int vetor[ ]; conta o nº elementos e fixa como dimensão inicializa os elementos restante com zero mais elementos que o declarado tamanho não definido Se declararmos uma matriz sem inicializá-la, deveremos explicitar sua dimensão (tamanho) Referenciação dos Elementos ▪ Na declaração: ▪ int: tipo de dados de cada elemento do vetor; ▪ idade: nome do vetor; ▪ 6: número de elementos (valor constante, ou seja, não pode ser variável); ▪ Espaço de memória reservado: ▪ idade[i]: aquilo que está na posição índice i do vetor idade. idade[0] idade[1] idade[2] idade[3] idade[4] idade[5] int idade[6]; Referenciação dos Elementos ▪ Para acessar cada elemento, basta colocar o nome do vetor e a posição em que se tem interesse de trabalhar. ▪ Exemplo: float nota[10] = {2.5, 4, 7.5, 3, 1, 2, 7, 8, 10, 0.5}; 0 1 2 3 4 5 6 7 8 9 2.5 4 7.5 3 1 2 7 8 10 0.5 Para acessar o 1º elemento da matriz nota[0] Para acessar o 2º elemento da matriz nota[1] 2.5 4 nota[2] é o 3º elemento da matriz e corresponde ao valor 7.5 Cuidado, pois os elementos da matriz são sempre referenciados por índices iniciados de zero. Referenciação dos Elementos – Cuidados ▪ O índice do primeiro elemento é sempre 0 (zero) . ▪ A linguagem C não verifica se o índice usado está dentro dos limites válidos. ▪ Se não for tratado adequadamente os limites, corre-se o risco de sobrescrever variáveis ou até mesmo uma parte do código do programa e pode acarretar resultados imprevisíveis. ▪ Quando se referencia um elemento, esse número tem significado diferente da declaração (indica a posição). idade[0] idade[1] idade[2] idade[3] idade[4] idade[5] Referenciação dos Elementos ▪ Colocar o valor 32 na primeira posição do vetor: ▪ Colocar na última posição do vetor o dobro do valor do terceiro elemento: ▪ Colocar no quinto elemento a soma do primeiro com o último elemento: vetor[0]=32; 32 vetor[0] vetor[1] vetor[2] vetor[3] vetor[4] vetor[5] 32 64 vetor[0] vetor[1] vetor[2] vetor[3] vetor[4] vetor[5] vetor[5]=vetor[0]*2; 32 96 64 vetor[0] vetor[1] vetor[2] vetor[3] vetor[4] vetor[5] vetor[4]=vetor[0]+vetor[5]; Inicialização do Vetor ▪ Exemplo 1: Declarar e inicializar um vetor com os cinco primeiros números inteiros pares. ▪ Evita-se, assim, escrever o seguinte conjunto de código: ▪ Exemplo 2: int numeros[5]={0,2,4,6,8}; int numeros[5]; numeros[0] = 0; numeros[1] = 2; numeros[2] = 4; numeros[3] = 6; numeros[4] = 8; int vetor[10] = {1, 2, 3}; //Correto int vetor[2] = {100, 200, 300}; //Errado int vetor[ ] = {1, 2, 3}; //Correto Vetores ▪ Exemplo: Calcular a média de idades de um grupo de 10 pessoas e mostrar a 5º idade digitada. int idade0,idade1,idade2,idade3,idade4,idade5,idade6, idade7,idade8,idade9; float soma, media; printf("\nDigite a idade 1."); scanf("%i",&idade0); printf("\nDigite a idade 2."); scanf("%i",&idade1); printf("\nDigite a idade 3."); scanf("%i",&idade2); printf("\nDigite a idade 4."); scanf("%i",&idade3); printf("\nDigite a idade 5."); scanf("%i",&idade4); printf("\nDigite a idade 6."); scanf("%i",&idade5); printf("\nDigite a idade 7."); scanf("%i",&idade6); printf("\nDigite a idade 8."); scanf("%i",&idade7); printf("\nDigite a idade 9."); scanf("%i",&idade8); printf("\nDigite a idade 10."); scanf("%i",&idade9); soma=(idade0+idade1+idade2+idade3+idade4+idade5+idade6+idade7+idade8+idade9); media=soma/10.0; printf("\nMedia:%f\nQuinta idade:%i",media,idade4); Armazenando e Exibindo Dados ▪ Para armazenar e para exibir utilizamos o comando for #include <stdio.h> main() { int i; float nota[10]; //Armazenar for(i=0; i<10; i++) { printf("Digite a nota do %i aluno: ", i+1); scanf("%f", ¬a[i]); } //Exibir for(i=0; i<10; i++) printf("Nota[%i] = %.2f", i, nota[i]); } Armazenar versus Exibir Armazenando Exibindo int i, vet[10]; for(i=0; i<10; i++) { printf(“Digite valor %i: ”, i); scanf(“%i”, &vet[i]); } int i, int vet[10]={2,4,6,8,10,12,14,16,18,20}; for(i=0; i<10; i++) { printf("Vetor[%i]=%i\n", i, vet[i]); } Vetores – Exemplo ▪ Calcular a média de idades de um grupo de 10 pessoas e mostrar a 5º idade digitada. Vetores – Exemplo ▪ Calcular a média de idades deum grupo de 10 pessoas e mostrar a 5º idade digitada. #include <stdio.h> main() { int idade[10],i; float media,soma=0; for(i=0;i<10;i++) { printf("Digite a idade %i.",i+1); scanf("%i",&idade[i]); soma += idade[i]; } media = soma/10.0; printf("\nMedia:%f\nQuinta idade:%i",media,idade[4]); } Vetores – Exemplo ▪ Receber 12 números e armazená-los em um vetor. Ao final, exibir a quantidade de números negativos informados. Vetores – Exemplo ▪ Receber 12 números e armazená-los em um vetor. Ao final, exibir a quantidade de números negativos informados. #include <stdio.h> main() { int numero[12],x,neg=0; for(x=0; x<12; x++) { printf("Digite o numero da posicao %i: ", x); scanf("%i",&numero[x]); } for(x=0; x<12; x++) { if (numero[x]<0) neg++; } printf("\nQuantidade de numeros negativos=%i\n\n",neg); } Dicas ▪ Acesso a elementos – erros inesperados; ▪ Valor de índice máximo – índice sempre inicia em zero; ▪ Posições não ocupadas – inicializar todos os vetores; ▪ Uso de constantes – código mais genérico; ▪ Inicialização de vetores usados em totalizações – importante, pois podem conter qualquer valor. Dúvidas??? EXERCÍCIOS Vetores – Exercício 1 ▪ Receber 10 números e armazená-los em um vetor. ▪ Após esta primeira etapa é necessário pedir para o usuário digitar um número. Verificar se este número está armazenado no vetor e se estiver, mostrar quantas vezes o número esta armazenado no vetor, ou seja, quantas vezes o número se repete. Se o número não estiver no vetor, uma mensagem deve indicar esta condição e deverá ser solicitado um novo número para o usuário. #include <stdio.h> main() { int numero[10],x,procurado=0,cont=0; //Receber 10 numeros e armazenar em um vetor for(x=0;x<10;x++) { printf("Digite o numero da posicao %i: ",x); scanf("%i",&numero[x]); } do { printf("\nDigite o numero que deseja procurar: "); scanf("%i",&procurado); for(x=0;x<10;x++) { if(procurado==numero[x]) { cont++; } } if(cont==0) printf("\nNumero nao encontrado!"); } while(cont==0); printf("\nO numero %i foi encontrado %i vez(es).", procurado,cont); } Vetores – Exercício 2 ▪ Receba dois vetores A e B, ambos com 5 elementos, determine o vetor resultante C, onde C[i]=A[i]+B[i]. ▪ Exemplo: 1 2 0 -4 3 A[0] A[1] A[2] A[3] A[4] 6 1 10 2 3 B[0] B[1] B[2] B[3] B[4] 7 3 10 -2 6 C[0] C[1] C[2] C[3] C[4] #include <stdio.h> main() { int A[5],B[5],C[5],i; for(i=0;i<5;i++) { printf("A[%i]: ", i); scanf("%i",&A[i]); } for(i=0;i<5;i++) { printf("B[%i]: ", i); scanf("%i",&B[i]); } for(i=0;i<5;i++) { C[i]=A[i]+B[i]; printf("\nC[%i] = %i",i,C[i]); } }
Compartilhar