1
Estruturas CompostasEstruturas Compostas
HomogêneasHomogêneas
(Vetores)(Vetores)
Programação I
ALG
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.
2
7
Vetores
Armazenamento em memória
15A
-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;
XXXX
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 boas:
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.
Poderíamos solucionar este problema sem a utilização de
vetores, mas perderíamos as notas dos alunos, o que é uma má
idéia.
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.
3
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 acima de 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
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.
16
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í?
17
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.
18
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.
4
19
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.
20
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.
DÚVIDAS ?DÚVIDAS ?
Programação I
ALG

Alg aula 06 - vetores tp1

  • 1.
    1 Estruturas CompostasEstruturas Compostas HomogêneasHomogêneas (Vetores)(Vetores) ProgramaçãoI ALG 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.
  • 2.
    2 7 Vetores Armazenamento em memória 15A -7 15 23 A { Variávelsimples 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; XXXX 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 boas: 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. Poderíamos solucionar este problema sem a utilização de vetores, mas perderíamos as notas dos alunos, o que é uma má idéia. 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.
  • 3.
    3 13 Vetores Como fica oalgoritmo: 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 acima de 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 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. 16 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í? 17 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. 18 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.
  • 4.
    4 19 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. 20 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. DÚVIDAS ?DÚVIDAS ? Programação I ALG