Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Estruturas Compostas 
Homogêneas 
(Vetores) 
Programação 
2 
Vetores 
 Até agora sempre utilizamos variáveis definidas a partir de 
tipos básicos de dados. 
 Cada variável só é capaz de armazenar um dado por vez. 
 
 Existem situações em que é necessário armazenar uma 
grande quantidade de dados na memória ao mesmo tempo. 
 Esta quantidade torna inviável a criação de variáveis para cada um 
dos dados a ser armazenado. 
 
 Para estes casos, poderemos criar variáveis a partir de 
tipos de dados estruturados. 
 Um tipo de dado estruturado é aquele formado pela junção ou 
combinação de tipos básicos, definindo apenas uma variável que o 
represente. 
3 
Vetores 
 Considere o problema de ordenação de 3 valores 
 
Variáveis 
 A, B, C : inteiro; 
Início 
 ler A; 
 ler B; 
 ler C; 
 se A > B então 
 se B > C então 
 escrever A, “ > “, B, “ > “, C 
 senão 
 se A > C então 
 escrever A, “ > “, C, “ > “, B 
 senão 
 escrever C, “ > “, A, “ > “, B 
 senão 
 se B > C então 
 se A > C então 
 escrever B, “ > “, A, “ > “, C 
 senão 
 escrever B, “ > “, C, “ > “, A 
 senão 
 escrever C, “ > “, B, “ > “, A; 
Fim 
4 
Vetores 
 Agora considere o mesmo problema, porém, para 
ordenar de forma decrescente 10 números inteiros 
 Este problema apresenta 3.628.800 resultados 
diferentes 
 Desconforto de trabalhar com 10 nomes de variáveis 
diferentes 
 É necessário o emprego de variáveis do tipo vetor para 
a resolução deste problema. 
5 
Vetores 
 Vetor (ou array) é uma estrutura de dados 
composta por uma quantidade determinada de 
elementos de um mesmo tipo primitivo. 
 
 Como armazena sempre dados do mesmo tipo 
primitivo, diz-se que vetores são estruturas de 
dados homogêneas. 
6 
Vetores 
 Ao apresentar o conceito de variável, dissemos que ela 
funciona como uma caixa na memória do computador, 
capaz de armazenar um único dado de um determinado 
tipo. 
 
 Por analogia, podemos imaginar um vetor como um 
conjunto de variáveis agrupadas sob um mesmo nome, 
todas de um mesmo tipo. 
 
 O vetor passa a ser um conjunto de caixinhas, contendo dados de 
mesma natureza e que estejam agrupados. 
7 
Vetores 
 Armazenamento em memória 
15 A 
-7 
15 
23 
A { 
Variável simples Vetor 
8 
Vetores 
 Para referenciar o conteúdo de uma variável 
simples, basta indicar o nome que foi definido. 
 
 Para vetores, somente o nome não é suficiente. 
Além do nome, preciso indicar a posição no vetor 
onde está o dado que queremos acessar/utilizar. 
 Esta posição é denominada índice. 
 Os vetores são também chamados de variáveis 
indexadas unidimensionais. 
9 
Vetores 
 Sintaxe para declaração de um vetor: 
 
 
 Sintaxe para referenciação de uma posição: 
 
 
 Suponha que é necessário armazenar 100 preços de produtos de 
uma loja. 
 Declaração: 
 
 Referenciação: 
<var> : vetor[<inicio>..<fim>] de <tipo>; 
preco : vetor[1..100] de real; 
preco[1] = 32.50; 
<nome_vetor>[<posicao>]; 
preco[102] = 43.80; 
X 
Não é possível 
acessar posições 
fora do intervalo 
definido 
10 
Vetores 
 Observações 
 É necessário validar acessos a índices inexistentes, 
evitando erros no sistema; 
 Apenas variáveis inteiras podem ser utilizadas como 
índices de um vetor. 
 Cada elemento do vetor deve ser tratado como uma 
variável independente 
 Todas as operações que podem ser realizadas sobre 
variáveis de tipos básicos, podem ser aplicadas a 
posições de um vetor. 
 Ex.: ler preco[10]; escrever preco[12]; 
11 
Vetores 
 Exemplo: 
 Uma prova de química foi feita por um grupo de 20 
alunos. Faça um algoritmo para ler as notas obtidas 
pelos alunos, e depois exibir um relatório de notas 
iguais ou superiores a 7,5 no seguinte formato: 
Notas iguais ou superiores a 7,5: 
7.8 
9.4 
10.0 
7.7 
8.5 
7.5 
9.1 
8.3 
12 
Vetores 
 Solução: 
 Este exemplo é uma aplicação simples de vetores. 
 Existe uma repetição embutida, pois é necessário ler as 
20 notas. 
 Não poderíamos solucionar este problema sem a 
utilização de vetores, pois perderíamos as notas dos 
alunos, o que é uma má ideia. 
 Temos então quer ler todas as notas, e em seguida 
varrer todo o vetor, decidindo quais devem ser 
impressas. 
 Como a quantidade de leituras é fixa, podemos utilizar o 
comando PARA nas repetições. 
13 
Vetores 
 Como fica o algoritmo: 
Variáveis 
 cont : inteiro; 
 nota : vetor[1..20] de real; 
Início 
 // Lê as notas e armazena no vetor 
 para cont de 1 até 20 faça 
 [[ 
 escrever “Digite a ”, cont, “ª nota: “; 
 ler nota[cont]; 
 ]]; 
 // imprime as notas acima de 7.5 
 escrever “Notas iguais ou superiores a 7,5: ”; 
 para cont de 1 até 20 faça 
 se nota[cont] >= 7.5 então 
 escrever nota[cont]; 
14 
Vetores em VisuAlg 
 Exemplo: 
var 
 vet: vetor [1..10] de real 
inicio 
 vet[1] <- 12 
 escrevaL( vet[1] ) 
 escreva("Digite um valor: ") 
 leia(vet[2]) 
 escrevaL( vet[2] ) 
fimalgoritmo 
15 
Vetores em C/C++ 
 Recebem o nome de Array. 
 
 Para criar um array é necessário: 
 Declaração: 
 
TIPO nome_do_vetor [ quantidade ]; 
 
 Exemplos: 
int vet [10]; 
char letras[30]; 
16 
Vetores em C/C++ 
 Para inserirmos elementos, precisamos indicar a 
posição no array onde eles serão inseridos: 
 
 vetor[0] = 34; 
 vetor[1] = 27; 
 
 Os índices em um array em C/C++ começam em 0. 
 
 Não é possível acessar além dos limites em um 
array. 
 
17 
Vetores em C/C++ 
 Os arrays NÃO são inicializados automaticamente 
em C/C++. 
 
 Não é garantido um valor padrão para os 
elementos de um array. 
 
 É alocado um espaço de memória para o array e o 
que estiver nessa memória serão os valores dos 
elementos do array. 
18 
Vetores em C/C++ 
 A declaração e inicialização do array também pode 
ser feita de uma vez só: 
 int v[3] = { 10, 22, 35 }; 
 
 código equivalente a: 
int v[3]; 
V[0] = 10; 
V[1] = 22; 
V[2] = 35; 
 
19 
Vetores em Java 
 Recebem o nome de Array. 
 
 Para criar um array, 3 passos são necessários: 
 Declaração; 
 Construção; 
 Inicialização. 
20 
Vetores em Java 
 A construção é feita com o operador new. 
 int vetor[ ] = new int[10]; 
 
 Para inserirmos elementos, precisamos indicar 
a posição no array onde eles serão inseridos: 
 vetor[0] = 34; 
 vetor[1] = 27; 
21 
Vetores em Java 
 Não se especifica o tamanho do array na 
declaração: 
 int vetor[ ]; // declaração do array 
 
 Isso deve ser feito apenas na construção: 
 vetor = new int[10]; // construção do array 
22 
Vetores em Java 
 Os índices em um array em Java começam em 0. 
 Não é possível acessar além dos limites em um array. 
 
 Para sabermos o tamanho de um array, podemos usar a 
variável length: 
Ex: 
 int arr[ ] = new int[10]; 
 for(int i = 0; i < arr.length; i++) { 
 System.out.println("array[" +i + "] = " +arr[i]); 
 } 
23 
Vetores em Java 
 Os arrays são inicializados automaticamente em 
java. 
 
 Cada tipo de dado que podemos colocar em um 
array possui um valor padrão, que será usado 
para inicializar o array automaticamente. 
Inicialização automática de um Array 
Tipo valor tipo valor 
byte 0 short 0 
int 0 long 0L 
float 0.0f double 0.0d 
char '\u0000' boolean false 
 
Referências recebem null 
25 
Vetores em Java 
 A declaração, construção e inicialização do 
array também pode ser feita de uma vez só: 
 String frutas[ ] = {"Uva", "Melancia","Pêssego"}; 
 
 código equivalente a: 
 String frutas[ ] = new String[3]; 
 frutas[0] = "Uva"; 
 frutas[1] = "Melancia"; 
 frutas[2] = "Pêssego"; 
26 
Vetores em C/C++ 
Como ficaria o exemplo anterior 
escrito em VisuAlg, C/C++ ou 
Java? 
27 
Solução em C/C++ 
int main() 
{ 
 float nota[20]; 
 for (int i=0; i < 20 ; i++) { 
 printf("Digite a %d ª nota: ", (i+1)); 
 scanf("%f",&nota[i] ); 
 } 
 printf("\n\nNotas boas:\n"); 
 for (int i=0; i < 20 ; i++) { 
 if (nota[i]>=7.5) 
 printf("%5.2f\n", nota[i]); 
 } 
 
 return 0; 
} 
28 
Solução em Java 
public static void main(String[] args) { 
 Scanner leia = new Scanner(System.in); 
 double nota[]; 
 nota = new double[20]; 
 for (int i=0; i < nota.length;i++) { 
 System.out.println("Digite a " + (i+1) + "ª nota"); 
 nota[i] = leia.nextDouble(); 
 } 
 System.out.println(“Notas iguais ou superiores a 7,5: "); 
 for (int i=0; i < nota.length;i++) { 
 if (nota[i]>=7.5) 
 System.out.println(nota[i]); 
 } 
} 
29 
Vetores 
Exercício: 
Faça um algoritmo para ler no máximo 
30 números reais informados pelo 
usuário, e exibir depois a média destes 
números. Considere que o valor -99 
encerra a entrada dos dados. 
30 
Vetores 
 Solução 
Devemos cria um vetor de 30 posições para 
armazenar os números. 
 
 Mas o usuário pode fornecer menos que 30 
números, e aí? 
31 
Vetores 
 Solução (cont.): 
 O fato de nem todas as posições do array terem sido 
utilizadas não é um problema, desde que saibamos 
quantas foram utilizadas. 
 A leitura das notas não poderá ser realizada com o 
comando PARA, e sim com o comando ENQUANTO. 
 O número -99 é um sinalizador de término de leitura, 
logo não deve ser armazenado no vetor. 
32 
Algoritmo 
Variáveis 
 valor : vetor[1..30] de real; 
 cont, i : inteiro; 
 soma, media : real; 
Início 
 cont = 0; 
 ler aux; 
 enquanto aux <> -99 e cont < 30 faça [[ 
 cont = cont + 1; 
 valor[cont] = aux; 
 ler aux; 
 ]]; 
 soma = 0; 
 para i de 1 até cont faça 
 soma = soma + valor[i]; 
 media = soma / cont; 
 escrever “A média dos valores é “, media; 
Fim. 
33 
Solução em C/C++ 
int main() 
{ 
 float valor[30]; 
 int cont=0, i =0; 
 float soma=0, aux =0, media=0; 
 printf("Digite um numero: "); 
 scanf("%f", &aux); 
 while ( (aux != -99) && (cont < 30) ) { 
 valor[cont] = aux; 
 cont ++; 
 
 printf("Digite um número: "); 
 scanf("%f", &aux); 
 } 
34 
Solução em C/C++ 
 for (i=0; i <cont; i++) 
 soma = soma + valor[i]; 
 if (cont>0) 
 { 
 media = soma / cont; 
 printf("\nA média é: %6.2f\n", media); 
 } 
 else 
 printf("\n Nenhum número válido.\n"); 
 
 return 0; 
} 
35 
Solução em Java 
public static void main(String[] args) { 
 Scanner leia = new Scanner(System.in); 
 double valor[] = new double[30]; 
 int cont=0, i =0; 
 double soma=0,aux =0, media=0; 
 aux = leia.nextDouble(); 
 while ( (aux != -99) && (cont < valor.length) ) { 
 valor[cont] = aux; 
 cont = cont +1; 
 aux = leia.nextDouble(); 
 } 
 for (i=0; i <cont; i++) 
 soma = soma + valor[i]; 
 media = soma / cont; 
 System.out.println("A média é: " + media); 
} 
36 
Vetores 
 Modifique o programa anterior para que o mesmo 
use apenas while e armazene o valor -99 no 
vetor, utilizando-o como indicativo do término dos 
dados no vetor. 
Exercícios: 
 
37 
1) Faça um programa que leia, via teclado, 200 
valores do tipo inteiro e os guarde na memória. 
2) Amplie o exercício anterior emitindo um relatório 
com todos os números pares que você leu. 
3) Faça um programa que determine qual o menor 
valor existente no vetor do exercício número 1. 
4) Faça um programa que imprima quantos dos 
valores do exercício número 1 são maiores que a 
média desses valores. 
38 
Vetores 
 Exercícios: 
 Num concurso público, um candidato respondeu a uma 
avaliação com 30 questões numéricas, onde cada 
questão admitia respostas de 0 até 99. Faça um 
algoritmo para ler o gabarito da prova e as respostas do 
aluno, informando quantas questões ele acertou. 
 Faça um algoritmo para ler 50 valores reais e 
armazenar em um vetor. Modifique o vetor de modo que 
os valores das posições ímpares sejam aumentadas em 
5%, e os das posições pares sejam aumentados em 
2%. Imprima depois o vetor resultante. 
 
39 
Vetores 
Exercícios: 
 
 Escreva um programa que leia dois vetores inteiros 
de 20 posições e efetue as respectivas operações 
indicadas em um terceiro vetor (também lido junto ao 
usuário), armazenando o resultado em um quarto 
vetor. Considere o seguinte código: 1 – adição, 2 – 
subtração, 3 – multiplicação e 4 – divisão. 
40 
Solução problema 1 (C/C++) 
int main() 
{ 
 int resposta[30]; 
 int gabarito[30]; 
 int acertos = 0; 
 for (int i=0; i<30; i++) { 
 printf("Dig. gabarito da questão %d: ", (i+1)); 
 scanf("%d", &gabarito[i]); 
 } 
 for (int i=0; i<30; i++) { 
 printf("Dig. resposta da questão %d: ", (i+1)); 
 scanf("%d", &resposta[i]); 
 } 
41 
Solução problema 1 (C/C++) 
 for (int i=0; i<30; i++) 
 if (resposta[i] == gabarito[i]) acertos++; 
 
 printf("\nO número de acertos foi: %d" , acertos); 
 
 return 0; 
 
} 
42 
Solução problema 2 (Java) 
public static void main(String[] args) { 
 Scanner leia = new Scanner(System.in); 
 double valor[] = new double[50]; 
 int i=0; 
 double aux =0; 
 // Lê os valores e preenche o vetor 
 while (i < valor.length) { 
 System.out.println(“Digite o " +(i+1) + “º termo:"); 
 aux = leia.nextDouble(); 
 valor[i] = aux; 
 i = i +1; 
 } 
 
43 
Solução problema 2 (Java) 
 // aumenta os valores ímpares em 5% e os 
 // pares em 2%. 
 for (i=0; i < valor.length; i++) { 
 if ((i+1)%2 ==0) 
 valor[i]=valor[i]*1.02; 
 else 
 valor[i]=valor[i]*1.05; 
 } 
 // imprime o vetor 
 for (i=0; i < valor.length; i++) 
 System.out.println((i+1)+"º termo = "+valor[i]); 
 
Dúvidas ?

Mais conteúdos dessa disciplina