O documento apresenta conceitos sobre arrays em C, incluindo: 1) arrays são estruturas de dados que armazenam itens do mesmo tipo; 2) arrays possuem tamanho fixo e elementos são acessados via índice; 3) arrays podem ser inicializados de forma explícita ou implícita. Exemplos demonstram operações comuns com arrays como inicialização, impressão e cálculos.
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
Linguagem C - Vetores
1. VETORES
Profª Ms. Engª Elaine Cecília Gatto
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado CoraçãO – USC
Bauru/SP
2. 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.
3. ARRAYS
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]
Nome do array
[número da posição do
elemento dentro do array c]
Valores
armazenados
c[0]
-45
c[1]
6
c[2]
0
c[3]
72
c[4]
1543
c[5]
-89
c[6]
0
c[7]
62
c[8]
-3
c[9]
1
c[10]
6453
c[11]
78
4. 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.
5. 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.
6. Exemplos
//inicializando um array
#include <stdio.h>
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.
//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
7. Exemplos
//inicializando um array com uma lista de inicializadores
#include <stdio.h>
//função main inicia a execução do programa
int main(void)
Este exemplo inicializa
{
um array de inteiros com
//usa lista de inicializadores para inicializar o arry n
10 valores e imprime o
int n[10]={32, 27, 64, 18, 95, 14, 90, 70, 60, 37};
array
em
formato
int i;//contador
tabular.
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
8. 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};
9. Exemplos
Inicializa os elementos de um array de 10
elementos s com os valores 2, 4, 6, ..., 20 e
imprime o array em formato tabular.
//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
10. 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.
11. 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.
12. 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};
13. 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
15. Exemplos
answer
answer <RESPONSE_SIZE answer++
++frequency[responses[answer]]
0
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
16. 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
17. 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)
18. Exercícios
1. 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.
19. Exercícios
2. 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
3. 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.
20. Exercícios
4. 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, armazenandoas 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.
5. 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.
21. Exercícios
6. 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.
7. 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.
22. Exercícios
8. 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.
9. 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.