Buscar

Aula11 Array1 2011

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ArranjosArranjosArranjosArranjos
•• 1 di ã•• 1 dimensão
•• várias dimensõesvárias dimensões
1
Ex: Ler as notas de 30 alunos. 
Calcular e informar a média da turma.
Algoritmo MédiaTurmago t o éd a u a
{ Obtém as notas de 30 alunos e informa a média }
Entradas: 30 notas
Saída: média das 30 notas lidas
ProcessamentoProcessamento
1. Inicializar somatório das notas
2. Repetir 30 vezes (para cada aluno)p (p )
2.1 obter a nota de um aluno
2.2 acrescentar esta nota ao somatório de notas
3. Calcular a média
4. Informar a média
5 Terminar
2
5. Terminar 
Ex: Ler as notas de 30 alunos. 
Calcular e informar a média da turma.
//calcula media de uma turma
#include <stdio h>#include <stdio.h>
int main ( )
{
float nota; // nota de um alunofloat nota; // nota de um aluno 
float media, soma;
int aluno; //variável de controle da repeticao
soma = 0; // inicializa a soma das notassoma = 0; // inicializa a soma das notas 
for (aluno = 1; aluno <= 30; aluno++) // para cada aluno da 
turma 
{{
scanf(“%f”, &nota); //obtem a nota do aluno 
soma = soma + nota;
}}
media = soma / 30;
printf(‘Media da turma: %7.2f”, media);
return 0;return 0;
}
3
Ex: Ler as notas de 30 alunos. Calcular e informar a 
média da turma. Informar, ainda, as notas que são 
i à édi l l d
q
superiores à média calculada.
Algoritmo MédianotasSupgo t o éd a otasSup
{ Obtém as notas de 30 alunos. 
Informa a média e as notas superiores à media }
Entradas: 30 notas
Saídas: média das 30 notas lidas
notas superiores à médianotas superiores à média
Processamento 
1. Inicializar somatório das notas
2. Repetir 30 vezes (uma vez para cada aluno)
2.1 obter a nota de um aluno
2.2 acrescentar esta nota ao somatório de notas
3. Calcular e informar a média
4 Informar as notas superiores à média ?
4
4. Informar as notas superiores à média
5. Terminar ?
Ex: Ler as notas de 30 alunos. Calcular e informar a 
média da turma. Informar, ainda, as notas que são 
i à édi l l d
//calcula media de uma turma e notas superiores a media
q
superiores à média calculada.
#include <stdio.h>
int main ( )
{{
float n1, n2, n3, n4, n5, { ...}, n30;// uma variavel para cada nota
float media, soma;
// obtem as 30 notas// obtem as 30 notas
scanf(“%f %f (...) %f”, &n1, &n2, ( ... ) &n30); 
soma = n1+n2+n3+n4+n5+n6+ (...) n30;
media = soma / 30;media = soma / 30;
printf(“Media da turma: %7.2f“, media);
if (n1 > media) // testa cada nota !!! 
i tf(“%f” 1)printf(“%f”, n1);
if (n2 > media)
printf(“%f”, n2); É a única solução ?
5
{ ... }
return 0;
}
É a única solução ?
Tipos de dados na Linguagem CTipos de dados na Linguagem CTipos de dados na Linguagem CTipos de dados na Linguagem C
• básicos • char • int
• float
d bl
• definidos pelo usuário
• double
• void
• estrutura 
• campo de bitcampo de bit
• união
• enumeração
• typedef
6
typedef
ArranjoArranjojj
( Vetor )( Vetor )
Índices
Identificando cada 
0 1 2 3 4 5 6 7 8
Identificando cada 
elemento
0 1 2 3 4 5 6 7 8
nota
nome Valornome
Comum para todos 
os elementos
Valor
Semelhante a uma 
variável simples
7
p
ArranjoArranjojj
•• conjunto ordenado de informações j ç
de mesma natureza;
•• elementos todos do mesmo tipo;•• elementos todos do mesmo tipo;
•• acesso randômico.acesso randômico.
0 1 2 3 4 5 6 7 8
nota 8 5nota 8,5
8
nota [2] vale 8,5
Arranjo Arranjo –– Linguagem CLinguagem CArranjo Arranjo –– Linguagem CLinguagem C
Declaraçãoç
Tipo arranjo 
<tipo> <nome do arranjo> [ < número de elementos da dimensão >]
• número de elementos da dimensão deve ser um inteiro ou 
representar um valor inteiro;
• tipo pode ser entre outros int float double tipo pode ser, entre outros, int, float, double. 
float nota[30];
i t [15]Ex:Ex: int x[15];Ex:Ex:
Ã
9
ATENÇÃO: em C, strings (= cadeias de caracteres) são arranjos de 
caracteres, que serão vistos em detalhes mais adiante.
Arranjo Arranjo –– Linguagem CLinguagem C
Utilização Variável indexada
< nome do arranjo > [ < índice > ] 
0 1 2 3 4 5 6 7 8
nota
float nota[9]; 
scanf(“%f” &nota[5]);
Ex: Ex: 
nota[ 5 ]scanf( %f , &nota[5]);
t [ 2 ] t [ 1 ] 2
nota[ 1 ] = 7.5 ;
nota[ 5 ]
nota[ 2 ] = nota [ 1 ] + 2 ;
if (nota[ 1 ] > 6.0)
printf (“Aprovado”);
10
printf (“Aprovado”);
...
Arranjo Arranjo –– Linguagem CLinguagem C
< nome do arranjo > [ < índice > ] 
Variável indexadaVariável indexada
Índice
• constante, nome de Ex: Ex: 
variável, ou expressão 
que seja um valor 
inteiro (ou resulte em) 
int main ( )
{ 
float nota [9];
Ex: Ex: 
inteiro (ou resulte em) 
um valor inteiro;
• sempre inicia em 0.
float nota [9]; 
int indice; 
indice = 5;
f ( “%f” & t [i di ])scanf ( “%f”, &nota[indice]);
nota[indice + 1] = 7.5 ;
...
}
0 1 2 3 4 5 6 7 8
nota [ 6 ]Ex: Ex: 
11
0 1 2 3 4 5 6 7 8
nota
Arranjo Arranjo –– Linguagem CLinguagem C
Inicialização
jj g gg g
ç
Arranjos, como as demais variáveis, ao serem 
criados contêm lixo criados contêm lixo. 
Arranjos podem ser inicializados:Arranjos podem ser inicializados:
•automaticamente ao serem criados;
•por atribuição, em algum momento da p g
execução; 
•por leitura.
12
Inicialização automática de um arranjo Inicialização automática de um arranjo 
na declaração:na declaração:na declaração:na declaração:
Forma geral:Forma geral:
ti [ ] { lti [ ] { l l l ll }}
int v[3] = {10, 20, 30}; 
tipo var[n] = {valortipo var[n] = {valor00, valor, valor11, , valorvalornn--11};};
0 1 2
[ ] { , , }
v 302010
P i õ ã i i i li d ã hid Posições não inicializadas são preenchidas com zero:
int x[5] = {10, 20, 30}; 
0 1 2 3 40 1 2
x 302010
3
0
4
0
13
Inicialização automática de um arranjo Inicialização automática de um arranjo 
 d l ã ( t ) d l ã ( t )na declaração (cont.):na declaração (cont.):
float z[5] = {2.7, 3.5, 4.2, 9.23 , 4.7}; 
o mesmo que escrever:
float z[5];
z[0] = 2 7;
Inicialização por 
atribuição, durante 
a execução
z[0] = 2.7;
z[1] = 3.5;
z[2] = 4.2; a execução.
z[3] = 9.23;
z[4] = 4.7;
14
Ex: Preencher por leitura um arranjo de 100 
elementos inteiros. 
int valor[100]; 
int indice; 
for (indice = 0; indice < 100; indice++)
ATENÇÃO:
Como os índices de um 
arranjo sempre 
for (indice = 0; indice < 100; indice++)
scanf ( “%d”, &valor[indice] );
...
iniciam em 0, e o 
arranjo valor tem 100 
elementos, os índices 
para acessá-lo vão de 
Indice 
para acessá lo vão de 
0 a 99!
0 1 2 3 4 5 6 7 8
Valor ...
99
Ex: Somar os elementos de um arranjo x ( 200 ) 
...
soma = 0;
for (indice = 0; indice <200; indice++)
15
( ; ; )
soma = soma + x[indice] ;
...
Ex: Ler as notas de 30 alunos. Calcular e informar a 
média da turma. Informar, ainda, as notas que são 
i à édi l l d
q
superiores à média calculada.
16
Ex: Ler as notas de 30 alunos. Calcular e informar a 
média da turma. Informar, ainda, as notas que são 
i à édi l l d
//Calcula media de uma turma e informa notas superiores a media
#include <stdio h>
q
superiores à média calculada.
#include <stdio.h>
int main ( )
{
float nota [30] ; //arranjo para as notasfloat nota [30] ; //arranjo para as notas 
float media, soma;
int aluno; // variavel de controle da repeticao
soma = 0; // inicializa soma 
for (aluno = 0; aluno < 30 ; aluno++) //para cada aluno 
{
scanf (“%f”, &nota[aluno]); // obtem sua nota
soma = soma + nota[aluno]; // acumula a somasoma = soma + nota[aluno]; // acumula a soma 
}
media = soma / 30;
printf(“Media da turma: %7.2f”, media);printf( Media da turma: %7.2f , media);
for (aluno = 0; aluno < 30; aluno++)// mostra notas > media 
if (nota[aluno] > media)
printf (“%7.2f”, nota[aluno]);
17
return 0;
}
Ex: Os preços de mercadorias de uma loja são 
armazenados em um arranjo Preco. Os índices do 
j d ódi d d i (10 
j
arranjo correspondem aos códigos das mercadorias (10 
a 99). Informe:
- o código da mercadoria cujo preço é R$ 123,00 
( d d f )
g j p ç $ ,
(supor todos os preços diferentes)
//codigo da mercadoria com preco determinado
#include <stdio h> P bl d t #include <stdio.h>int main ( )
{
int cod;
Problemas desta 
solução:
int cod;
float preco [100]; 
// para usar indice 99, tem que declarar 
//vetor com 100 elementos
- mesmo depois de 
encontrar, continua 
//obter preços 
for (cod = 10; cod < 100; cod++) 
scanf( “%f”, &preco[cod] );
percorrendo o arranjo;
ã i f ã 
( p [ ] )
//procurar produto de preço R$ 123,00
for (cod = 10; cod <100; cod++)
if (preco[cod] = = 123)
- não informa se não 
encontrou o valor 
procurado
18
printf(“%d ”, cod);
return 0;
}
procurado.
Outra solução: //procura codigo de mercadoria //com preço determinadoOutra solução: //com preço determinado
#include <stdio.h>
int main ( )
{
fl t [100]float preco[100];
int cod;
int achou; // 0 = falso, 1 = verdadeiro
//obter preços p ç
for (cod = 10; cod<=99;cod++) 
scanf( “%f”, &preco[cod] );
// procurar produto de preço R$ 123,00 
achou = 0;achou = 0; 
cod = 9;
do
{
d d + 1cod = cod + 1;
if (preco[cod] == 123)
achou = 1;
}}
while (cod < 99 && achou == 0);
if (achou == 1)
printf (“%d”, cod);
else
19
else
printf(“Não encontrou!”); 
return 0;
}
Ex: Ler os números de alunos – arranjo numero(30).
Ler nota de cada aluno – arranjo nota(30).
Mesmo índice relaciona número com sua notaMesmo índice, relaciona número com sua nota.
Informar: 
- os números dos alunos com nota menor que 6,0.
//alunos com nota menor que 6,0
#include <stdio.h>
int main ( )
{{
int numero [30];
float nota [30];
i t i dint ind;
for (ind = 0; ind <30; ind++)
{
scanf(“%d” &numero[ind]);scanf( %d , &numero[ind]);
scanf(“%f”, &nota[ind]);
if (nota[ind] < 6.0)
printf(“%d” numero[ind]);printf( %d , numero[ind]);
}
...
return 0;
20
return 0;
}
Exercício:Exercício:
1. Preencher um arranjo X ( 200 ) por leitura.
 P l d 2. Procurar o maior elemento deste arranjo.
3 Informar o valor do maior elemento e sua 3. Informar o valor do maior elemento, e sua 
posição.
21

Outros materiais