Baixe o app para aproveitar ainda mais
Prévia do material em texto
Informática Aplicada - Linguagem C Vetores Profª Náthalee Cavalcanti de Almeida Email: nathalee.almeida@ufersa.edu.br 04/02/2014 • O que é um vetor • Declaração de vetores • Carga inicial automática de vetores • Índices e posições dos elementos no vetor • Definição de constantes em C • Diferenças entre const e #define • Passagem de vetores para funções Agenda Introdução • Tipos básicos de dados em C (char, int, float e double) • Estruturas de controle (if, switch, while, for e do... while) • Vamos estudar a forma como podemos processar conjuntos de dados/valores do mesmo tipo. Introdução • Um vetor ou Array é um conjunto de elementos consecutivos, todos do mesmo tipo, que podem ser acessados individualmente a partir de um único nome. • Exemplo: - Conjunto de comissões mensais associadas a um determinado empregado ao longo de um ano - Vetor de comissões do Sr. Justino (Vetor simples de Inteiros). - Cada posição corresponde ao valor recebido nesse mês (Ex: 12000 – janeiro) - Dessa forma, evita-se declarar uma variável para cada mês (12 variáveis), colocando toda a informação numa variável só. 12000 5000 2300 1230 7400 ... Declaração de Vetores • tipo nome_variável [n° de elementos] • Tipo – corresponde ao tipo de dados de cada um dos elementos do vetor. • Nome_Variável – indica o nome pelo qual esse vetor vai ser conhecido. • N° de elementos – valor constante que indica quantos elementos tem o vetor. Declaração de Vetores Um vetor pode conter elementos de qualquer tipo de dados. No entanto, os elementos do vetor são todos do mesmo tipo, o qual é definido na declaração do mesmo. • Para declarar um vetor com 20 inteiros int g[20]; • Para declarar um vetor com 100 números reais float renda [100]; Declaração de Vetores • Numa declaração como float renda [100]; float – Tipo de cada um dos elementos do vetor. 100 – N° de elementos do vetor. renda – Nome do Vetor. renda [i] – Aquilo que está na posição índice i do vetor renda. Ex: Declaração de um vetor com seis números inteiros denominado vetor. int vetor [6]; Vetor [0] Vetor [1] Vetor [2] Vetor [3] Vetor [4] Vetor [5] Declaração de Vetores Em C os índices de um vetor com n elementos variam sempre entre o e n-1. O índice do primeiro elemento, de qualquer vetor em C, é sempre 0 (ZERO). Ex: Coloque o valor 123 na primeira posição do vetor: vetor [0] = 123; 123 Vetor[0] Vetor[1] Vetor[2] Vetor[3] Vetor[4] Vetor[5] Declaração de Vetores Coloque na última posição do vetor o dobro do valor do primeiro elemento. vetor [5] = vetor [0] *2; Coloque no terceiro elemento do vetor a soma do primeiro com o último elemento. vetor[2] = vetor[0] +vetor[5]; 123 246 Vetor[0] Vetor[1] Vetor[2] Vetor[3] Vetor[4] Vetor[5] 123 369 246 Vetor[0] Vetor[1] Vetor[2] Vetor[3] Vetor[4] Vetor[5] Declaração de Vetores Em um vetor o n-ésimo elemento está sempre na posição n-1. for (i = 0; i<6; i++) vetor[i] = i; 0 1 2 3 4 5 O índice de um elemento pode ser representado por qualquer expressão que devolva um valor inteiro. vetor[1]=2; vetor[3-2]=23; vetor[1+vetor[1]]=513; Vetores Carga Inicial Automática de Vetores • É possível iniciar automaticamente todos os elementos de um vetor através da seguinte sintaxe: tipo var[n] = {valor1, valor2, ...., valorn}; Exemplo: Declare e inicie um vetor com todas as vogais do alfabeto. char vogal [5] = {„a‟, ‟e‟, „i‟, „o‟, „u‟}; Evita-se, assim, escrever o seguinte conjunto de código: char vogal [5]; vogal [0] = „a‟; vogal [1] = „e‟; vogal [2] = „i‟; vogal [3] = „o‟; vogal [4] = „u‟; Vetores Se um vetor for declarado com n elementos e forem colocados apenas k valores (k<n) na carga inicial do vetor, então os primeiros k elementos do vetor serão iniciados com os respectivos valores e os restantes serão iniciados com o valor ZERO. int v[10] = {10,10, 30}; As seguintes instruções são equivalentes int v[10] = {10,10, 30}; int v[10] = {10,10, 30,0,0,0,0,0,0,0}; Vetores As posições de um vetor só são iniciadas se a declaração deste for seguinte de = {valor ... valor}; Exemplo: Escreva um programa que realize a leitura dos salários pagos a um indivíduo durante um ano. Em seguida, o programa deverá mostrar os valores e o total anual. Vetores #include <stdio.h> main ( ) { float sal [12]; /* 12 meses*/ float total; int i; for (i=0; i<12 ; i++){ printf (“Digite o salário do mês %d:”, i+1); scanf (“%f”, &sal[i];} /*Mostrar os valores Mensais e calcular o total*/ puts (“Mês Valor”; for (i=0, total = 0.0; i<12 ; i++){ printf (“3d %9.2f\n”, i+1, sal[1]); total +=sal[i];} printf(“Total Anual: %9.2f\n”, total);} Vetores Digite o salário do mês 1: 1000 Digite o salário do mês 2: 2000 Digite o salário do mês 3: 3500 Digite o salário do mês 4: 6480.5 Digite o salário do mês 5: 32000 Digite o salário do mês 6: 4560.5 Digite o salário do mês 7: 10000 Digite o salário do mês 8: 7450 Digite o salário do mês 9: 6471 Digite o salário do mês 10: 1240 Digite o salário do mês 11: 1240 Digite o salário do mês 12: 1240 Mês Valor 1 1000.00 2 2000.00 3 3500.00 4 6480.50 5 32000.00 6 4560.50 7 10000.00 8 7450.00 9 6471.00 10 1240.00 11 1240.00 12 1240.00 Total Anual: 77182.00 Vetores Exemplos de Declaração int v[10]; /* vetor com 10 elementos não iniciados*/ int v[3]={5,10,15}; /*vetor com 3 elementos iniciados com 5, 10 e 15*/ int v[10]= {5, 10, 15}; /*vetor com 10 elementos. Os restantes são iniciados com 0.*/ int v[ ] = {5, 10, 15}; /* vetor com 3 elementos inciados com 5, 10 e 15*/ /*Equivalente a int v[3]={5,10,15}*/ int v[ ]; /* Declaração incorreta provoca erro de compilação*/ Vetores Exemplos de Declaração int v[10]; /* vetor com 10 elementos não iniciados*/ int v[3]={5,10,15}; /*vetor com 3 elementos iniciados com 5, 10 e 15*/ int v[10]= {5, 10, 15}; /*vetor com 10 elementos. Os restantes são iniciados com 0.*/ int v[ ] = {5, 10, 15}; /* vetor com 3 elementos inciados com 5, 10 e 15*/ /*Equivalente a int v[3]={5,10,15}*/ int v[ ]; /* Declaração incorreta provoca erro de compilação*/ Vetores Passagem de Vetores para Funções • Suponha as seguintes declarações: int v[10]; int x[20]; • Suponha que v e x fosse inicializado com ZERO em todas as posições, e que utilizássemos uma função para isso. • Como os vetores têm dimensões diferentes, teremos que definir duas funções distintas (uma para vetores com 10 inteiros e outra com 20 inteiros). Vetores void inic1 (int s[10]) { int i; for (i=0; i<10; i++) s[i] = 0; } void inic2 (int s[20]) { int i; for (i=0; i<20; i++) s[i]= 0; } Vetores main ( ){ int v[10]; int x[20]; inic1(v); /* iniciar o vetor v usando a função inic1*/ inic2(x); /* iniciar o vetor x usando a função inic2*/ } Note que se é enviado um vetor com 10 inteiros à função, esta deverá ter um parâmetro do mesmo tipo da variável. void inic1 (int s[10]) /*Declaração da função*/ main ( ){ int v[10]; ... inic (v);} void inic1 (int s[10]) { .... } Vetores • É possível escrever uma função que inicie qualquer vetor de inteiros. No entanto, é necessário indicar a essa função qual o número de elementos que o vetor contém. #include <stdio.h> void inic (int s[ ], int n){ int i; for (i=1; i<n; i++) s[i]=0; } main ( ){ int v[10]; int x[20]; inic (v,10); inic (x,20); } Vetores • Note que a função void inic (int s[ ], int n) recebe um vetor de inteiros (sem indicar qual a sua dimensão) e um inteiro que indica qual o número de elementos a iniciar. • Dessa forma, é possível iniciar um vetor de inteiros (qualquer que seja a dimensão com que foi declarado), pois não é indicado no parâmetro da função qual o número de elementos que o vetor contém. Constantes • A escrita de programas deve ser realizada de forma que uma pequena alteração não provoque grandes transformações no código dos mesmos. #include <stdio.h> void inic (int s [ ] ){ int i; for (i=0; i<10; i++) s[i]=0; } main ( ){ int v[10], i; inic (v); for (i=0; i<10; i++) v[i] = i; for (i=10-1; i >=0, i--) printf (“%d\n”, v[i]; ] Constantes • Esse programa funciona para um vetor de 10 elementos. Se for necessário fazer uma alteração de 10 para 25 elementos, a solução é alterar todas as ocorrências do número 10 pelo 25. • Como se trata de um pequeno programa o trabalho não será grande, mas imagine se fosse milhares de linhas de código? #include <stdio.h> void inic (int s [ ] ){ int i; for (i=0; i<10; i++) s[i]=0; } main ( ){ int v[10], i; inic (v); for (i=0; i<10; i++) v[i] = i; for (i=10-1; i >=0, i--) printf (“%d\n”, v[i]); ] Constantes Definição de Constantes • Constante é um nome correspondente a um valor fixo (não se pode alterar ao longo da execução). • Devem ser definidas, em princípio, fora de qualquer função, de modo a serem visíveis ao longo de todo o programa. • Normalmente a sua definição é realizada imediatamente após as linhas dos #includes. const tipo símbolo = valor ou #define símbolo valor Constantes • Exemplo: #include <stdio.h> const int num = 10; void inic (int s[ ]) { int i; for (i=1; i<num; i++) s[i]=0;} main ( ){ int v [num], i; inic (v); for (i = 0; i<num; i++) v[i]=i; for (i = num-1; i >=0; i--) printf (“%d\n”, v[i]);} Constantes • Exemplo: #include <stdio.h> #define NUM 10 /*Sem Ponto-e-Vírgula*/ void inic (int s[ ]) { int i; for (i=1; i<NUM; i++) s[i]=0;} main ( ){ int v [NUM], i; inic (v); for (i = 0; i<NUM; i++) v[i]=i; for (i = NUM-1; i >=0; i--) printf (“%d\n”, v[i]);} Caso pretenda alterar o programa de 10 para 25, bastará alterar a linha em que a constante está definida, independentemente do número de ocorrências desta ao longo do programa.
Compartilhar