Linguagem C - Vetores

elainececiliagatto 4,264 views 22 slides Nov 28, 2013
Slide 1
Slide 1 of 22
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22

About This Presentation

Linguagem C - Vetores


Slide Content

VETORES Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado CoraçãO – USC Bauru/SP

ARRAYS São estruturas de dados que consistem em itens de dados relacionados do mesmo tipo. Arrays e estruturas são entidades estáticas porque permanecem do mesmo tamanho ao longo de toda a execução do programa. Elas podem ser de uma classe de armazenamento automática e, portanto, ser criadas e destruídas sempre que os blocos em que estiverem definidas, forem iniciados e finalizados. Um array é um conjunto de espaços de memória que se relacionam pelo fato de que todos têm o mesmo nome e o mesmo tipo. Para se referir a um local ou elemento em particular no array, especificamos o nome do array e o número da posição do elemento em particular no array.

ARRAYS Nome do array [número da posição do elemento dentro do array c] Valores armazenados c[0] -45 c[1] 6 c[2] c[3] 72 c[4] 1543 c[5] -89 c[6] c[7] 62 c[8] -3 c[9] 1 c[10] 6453 c[11] 78 Um array chamado c com 12 elementos c [0] = elemento zerésimo c [i-1] = iésimo elemento c [índice] = índice pode ser um número inteiro ou uma expressão = c[i+2] ou c[a+b]

ARRAYS É importante observar a diferença entre o SÉTIMO ELEMENTO DO ARRAY e o ELEMENTO DE ARRAY SETE. Como os índice de array começam em zero, o SÉTIMO ELEMENTO DO ARRAY tem o índice 6, enquanto o ELEMENTO DE ARRAY SETE tem o índice 7 e, na realidade, é o oitavo elemento do array. Os colchetes usados para delimitar o subscrito de um array são realmente considerados como um operador na linguagem C. Eles têm o mesmo nível de precedência do operador de chamada de função – parênteses.

DECLARANDO ARRAYS Os arrays ocupam espaço na memória. Você especifica o tipo de cada elemento e o número de elementos exigidos por array de modo que o computador possa reservar a quantidade de memória apropriada. int c[12]; Esta é a declaração usada para pedir ao computador que reserve 12 elementos para o array de inteiros C. int b[100], x[27]; Esta declaração reserva 100 elementos para o array de inteiros b e 27 elementos para o array de inteiros x.

Exemplos //inicializando um array #include <stdio.h> //função main inicia a execução do programa int main(void) { int n[10 ]; // n é um array de 10 inteiros int i ; // contador //inicializa elementos do array n como zero for(i=0; i<10; i++){ n[i]=0 ; // define elemento no local i como zero } // fim do for printf("%s %13s \n ", "Elemento", "Valor"); //saída na tela de conteúdo do array n em formato tabular for(i=0; i<10; i++){ printf("%7d %13d \n", i, n[i]); } // fim do for system("PAUSE"); return 0 ; // indica conclusão bem sucedida } // fim do main O exemplo utiliza estruturas for para inicializar os elementos de um array n de 10 elementos do tipo inteiro com zeros e imprimir o array em formato tabular.

Exemplos //inicializando um array com uma lista de inicializadores #include <stdio.h > //função main inicia a execução do programa int main(void) { //usa lista de inicializadores para inicializar o arry n int n[10]={32, 27, 64, 18, 95, 14, 90, 70, 60, 37}; int i ;//contador printf("%s %13 \n", "Elemento", "Valor"); //lista conteúdo do array em formato tabular for(i=0; i<10; i++){ printf("%7d %13d \n", i, n[i]); }//fim do for system("PAUSE"); return 0 ;//indica conclusão bem sucedida }//fim do main Este exemplo inicializa um array de inteiros com 10 valores e imprime o array em formato tabular.

DICA Se houver menos inicializdores que elementos no array, os elementos restantes serão inicializados em zero. Exemplo: int n[10] = {0}; Essa declaração inicializa explicitamente o primeiro elemento em zero e inicializa os nove elementos restantes em zero. Isto porque existem menos inicializadores que elementos no array. Arrays não são inicializados automaticamente em zero. É preciso, pelo menos, inicializar o primeiro elemento em zero para que os elementos restantes sejam automaticamente zerados. Se o tamanho do array for omitido de uma declaração com uma lista de inicializadores, o número de elementos no array será o número de elementos na lista de inicializadores. Int n[] = {1, 2, 3, 4, 5};

Exemplos //inicializando elementos do array s como inteiros pares de 2 a 20 #include <stdio.h> #define SIZE 10; //tamanho máximo do array – diretiva de pré-processador //função main inicia a execução do programa int main(void) { //constante simbólica SIZE - pode ser usada para especificar o tamanho do array int s[SIZE ]; // array s tem SIZE elementos int j;//contador for(j=0; j<SIZE; j ++){ // define os elementos s[j]=2+2*j; } // contador printf("%s %13s \n", "Elemento", "Valor"); //lista de impressão do conteúdo do array s em formato tabular for(j=0; j<SIZE; j++){ printf("%7d %13d \n", j, s[j]); } // fim do for system("PAUSE"); return 0 ; // indica conclusão bem sucedida } // fim do main Inicializa os elementos de um array de 10 elementos s com os valores 2, 4, 6, ..., 20 e imprime o array em formato tabular.

DEFINE Define é uma diretiva de pré-processador que define uma constante simbólica. Um aconstante simbólica é um identificador substituído com o texto substituto pelo pré-processador C antes do programa ser compilado. Quando o programa é pré-processador, todas as ocorrências da constante simbólica são substituídas com o texto substituto. O uso de constantes simbólicas para especificar tamanhos de array torna os programas mais escaláveis.

Exemplos Situação: Foi pedido a 40 alunos que avaliassem a comida da cantina estudantil e desse notas que fossem de 1 a 10. 1 – horrorosa 10 – excelente. Coloque as 40 respostas em um array de inteiros e assuma os resultados da pesquisa. Aplicação típica de arrays. O objetivo é resumir o número de respostas de cada tipo. Array frequency = array de 11 elementos utilizado para contar o número de ocorrências de cada resposta. Array response = array de 40 elementos com as respostas dos alunos.

Exemplos //programa de pesquisa com estudantes #include <stdio.h> #define RESPONSE_SIZE 40 //define tamanho de array #define FREQUENCY_SIZE 11 //define tamanho de array //função main inicia a execução do programa int main(void) { int answer; //contador para percorrer 40 respostas int rating; //contador para percorrer frequencias 1-10 //inicializa contadores de frequencia em zero int frequency[FREQUENCY_SIZE] = {0}; //coloca as respostas da pesquisa no array responses int responses[RESPONSE_SIZE] = {1,2,3,4,5,6,7,8,9,10,1,6,3,8,6,10,3,8,2,7, 6,5,7,6,8,6,7,5,6,6,5,6,7,5,6,4,8,6,8,10};

Exemplos /* para cada resposta, seleciona valor de um elemento do array responses e usa esse valor como índice na frequencia do array para determinar o elemento a ser incrementado */ for(answer=0; answer<RESPONSE_SIZE; answer++){ ++frequency[responses[answer]]; } // fim do for //mostra os resultados printf("%s %17s \n", "Avaliação", "Frequencia"); //listas de impressão das frequencias em um formato tabular for(rating=1; rating<FREQUENCY_SIZE; rating++){ printf("%6d %17d \n", rating, frequency[rating]); } // fim do for system("PAUSE"); return 0;//indica conclusão bem sucedida } // fim do main

Exemplos

Exemplos answer answer <RESPONSE_SIZE answer++ ++frequency[responses[answer]] 0 < 11 = V 0 + 1=1 ++frequency[1] 1 1 < 11 = V 1 + 1 =2 ++frequency[2] 2 2 < 11 = V 2 + 1 = 3 ++frequency[6] 3 3 < 11 = V 3 + 1 = 4 ++frequency[4] 4 4 < 11 = V 4 + 1 = 5 ++frequency[8] Vetor = int respones[RESPONSE_SIZE]; Posição 0 Posição 1 Posição 2 Posição 3 Posição 4 Posição 5 1 2 6 4 8 5

Exemplos //calcula a soma dos elementos do array #include <stdio.h> #define SIZE 12 //tamanho máximo do array //função main inicia a execução do programa int main(void) { //usa lista inicializadora para inicializar array int a[SIZE]={1,3,5,4,7,2,99,16,45,67,89,45}; int i ; // contador int total=0 ; // soma do array for(i=0; i<SIZE; i++){ total+=a[i]; } // fim do for printf("Total de valores dos elementos do array e %d \n", total, "\n"); system("PAUSE"); return 0 ; // indica conclusão bem sucedida } // fim do main

DICA C não tem verificação de limites de array para impedir que o programa se refira a um elemento que não existe. Um programa em execução pode ultrapassar o final de um array sem aviso. O programador deve garantir que todas as referencias de array permançam dentro dos limites do array. Ao percorrer um for por um array, o índice do array nunca deverá ser menor que zero, e sempre deverá ser menor que o número total de elementos no array (tamanho – 1)

Exercícios Faça um algoritmo que receba a quantidade de peças vendidas por cada vendedor e armazene essas quantidades em um vetor. Receba também o preço da peça vendida de cada vendedor e armazene esses preços em outro vetor. Existem apenas 10 vendedores, e cada vendedor pode vender apenas um tipo de peça, isto é, para cada vendedor existe apenas um preço. Calcule e imprima a quantidade total de peças vendidas por todos os vendedores e, para cada vendedor, calcule e imprima o valor total de venda.

Exercícios Faça um programa em C para ler cinco números inteiros quaisquer e armazená-los em um vetor A. Em seguida, criar um novo vetor B cujos elementos são os elementos do vetor A com sinal trocado. Imprima os dois vetores. Por exemplo: Vetor A: 5, -3, 6, 67, -10 Vetor B: -5, 3, -6, -67, 10 Faça um algoritmo para ler dez números quaisquer e armazená-los em um vetor. Em seguida, imprimir o vetor e quantos elementos do vetor são positivos; quantos são negativos; e quantos são nulos.

Exercícios Faça um algoritmo para ler a nota de prova e de trabalho de dez alunos. Armazenar as notas em dois vetores diferentes. Em seguida, calcular a média de cada aluno, armazenando-as em um outro vetor. Imprimir a maior e a menor média; quantos alunos obtiveram média igual ou superior à 7,0; e os três vetores. Faça um algoritmo para ler cinco números inteiros quaisquer e armazená-los em um vetor. Em seguida, imprimir o vetor e quantos elementos do vetor são positivos; quantos são negativos; e quantos são nulos.

Exercícios Faça um algoritmo para ler a idade de dez membros de umclube e armazená-las em um vetor. Em seguida, imprimir quantos membros têm idade entre 15 e 30 anos; entre 31 e 50 anos; e entre 51 e 70 anos. Imprimir também qual dos três intervalos possui mais membros e o vetor. Faça um algoritmo para ler a idade e o sexo de dez crianças de um orfanato, armazenando os dados em dois vetores. Imprimir a idade média das crianças; quantas crianças possuem idade superior a 5 anos; a porcentagem de crianças do sexo masculino; e quantas crianças possuem idade inferior a idade média.

Exercícios Faça um algoritmo para ler as temperatuas registradas nos últimos 10 dias e armazená-las em um vetor. Em seguida, calcular e imprimir a maior temperatura; a temperatura média destes 10 dias; o número de dias em que a temperatura foi superior a temperatura média; e todas as temperaturas registradas. Faça um algoritmo para preencher um vetor de 10 elementos inteiros colocando -1 nas posições ímpares e 0 nas posições pares. Em seguida, imprimir o vetor.