View
220
Download
0
Category
Preview:
DESCRIPTION
aula de vetores para programação imperativa
Citation preview
Prof. Kenia Kodel
UFS - DComp - Prof. Kenia Kodel 1
Situao Problema Implementar programa para ler total de vendas, de um
determinado ms, dos 300 vendedores da Matura,
calcular a mdia de vendas do grupo de vendedores,
e exibir quantos vendedores apresentaram
desempenho (vendas) abaixo da mdia.
Para tanto se faz necessrio dispor de alguma estrutura
para armazenar os dados lidos; seno necessrio
que o usurio digite cada dado duas vezes.
Entram em cena as estrutura de armazenamento, a
exemplo dos vetores.
UFS - DComp - Prof. Kenia Kodel 2
Definio de Vetor
Um vetor consiste num item de composio de
programas de computador til ao armazenamento de
dados encadeados.
var
: array[1..N] of ;
UFS - DComp - Prof. Kenia Kodel 3
Definio Pascal de Vetor
var
: array[1..N] of ;
Onde:
- nome da varivel vetor
N - quantidade mxima de elementos a armazenar, tamanho da estrutura
- tipo dos dados a serem mantidos na estrutura.
UFS - DComp - Prof. Kenia Kodel 4
Esboo de Vetor var
: array[1..N]of ;
Esquematicamente:
dado1 dado2 dado3 dado4 dadoN
1 2 3 4 ... N
vetor
UFS - DComp - Prof. Kenia Kodel 5
Sendo: dado valores de um tipo determinado.
Exemplo de Vetor
var
Alunos: array[1..30]of string[10];
Esquematicamente:
Ana Beto Caio Dani Zeca
1 2 3 4 ... 30
Alunos
UFS - DComp - Prof. Kenia Kodel 6
Manipulao dos Dados do Vetor
Para acessar os dados mantidos em vetor, so usados: o nome do vetor seguido pela posio que o dado ocupa, entre colchetes.
Exemplo: Alunos[5]:= Gil;
Ana Beto Caio Dani Gil Zeca
1 2 3 4 5 ... 30
Alunos
UFS - DComp - Prof. Kenia Kodel 7
Manipulao dos Dados do Vetor
Os dados de tipo T mantidos em vetor so manipulados elemento-a-elemento; da mesma forma como variveis no-compostas de tipo T so manipuladas.
Exemplo: writeln(Alunos[30]);
Ana Beto Caio Dani Gil Zeca
1 2 3 4 5 ... 30
UFS - DComp - Prof. Kenia Kodel
A instruo dada provoca a exibio da palavra ZECA
que corresponde ao contedo do elemento de ndice 30
do vetor ALUNOS.
8
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Escrever trecho de cdigo Pascal para efetuar a leitura e armazenamento de todos os dados do vetor abaixo:
var
Vetor: array [1..35] of byte;
for Cont:=1 to 35 do
readln(Vetor[Cont]);
14 23 09 17 40 03
1 2 3 4 5 ... 35
Vetor
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Para atender a atividade: escrever trecho de cdigo Pascal para efetuar a leitura e armazenamento de todos os dados de Vetor: array [1..35] of byte; aluno props:
for Cont:=1 to 35 do
begin
readln(N);
Vetor[Cont]:=N;
end;
UFS - DComp - Prof. Kenia Kodel
Est correto?
for Cont:=1 to 35 do
readln(Vetor[Cont]);
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Escrever trecho de cdigo Pascal para efetuar a inicializao, com -1, de todas as posies do vetor abaixo:
var
Vetor: array [1..35] of integer;
for Cont:=1 to 35 do
Vetor[Cont]:=-1;
UFS - DComp - Prof. Kenia Kodel 11
14 23 09 17 40 03
1 2 3 4 5 ... 35
Vetor
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Escrever trecho de cdigo Pascal para armazenar um numero N dado, numa posio P dada do vetor abaixo:
var
Vetor: array [1..35] of byte;
readln(D, P);
Vetor[P]:=D;
UFS - DComp - Prof. Kenia Kodel
14 23 09 17 40 03
1 2 3 4 5 ... 35
Vetor
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Em atendimento atividade: escrever trecho de cdigo Pascal para armazenar um numero N dado, numa posio P dada do vetor Vetor: array [1..35] of byte; um aluno props:
readln(D);
repeat
readln(P);
until (P>=1) and (P
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Escrever trecho de cdigo Pascal para exibir todos os dados do vetor abaixo: Considerar que o vetor foi lido anteriormente.
var
Vetor: array [1..35] of byte;
for Cont:=1 to 35 do
writeln(Vetor[Cont]);
UFS - DComp - Prof. Kenia Kodel 14
14 23 09 17 40 03
1 2 3 4 5 ... 35
Vetor
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO Escrever trecho de cdigo Pascal para exibir todos os dados diferentes de -1 do vetor abaixo: Considerar que o vetor foi lido anteriormente e que -1 usado para indicar que a
respectiva posio est vazia.
var
Vetor: array [1..35] of integer;
for Cont:=1 to 35 do
if Vetor[Cont]-1 then
writeln(Vetor[Cont]);
UFS - DComp - Prof. Kenia Kodel 15
14 23 -1 17 -1 03
1 2 3 4 5 ... 35
Vetor
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO Escrever trecho de cdigo Pascal para exibir o dado contido no vetor abaixo na posio P dada pelo usurio: Considerar que o vetor foi lido anteriormente.
var
Vetor: array [1..35] of byte;
repeat
readln(P);
until (P>=1) and (P
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Escrever trecho de cdigo Pascal para exibir as posies que um nmero N dado ocupa no vetor abaixo: Considerar que o vetor foi lido anteriormente.
var
Vetor: array [1..35] of byte;
readln(N);
for Cont:=1 to 35 do
if Vetor[Cont]=N do
writeln(Cont);
UFS - DComp - Prof. Kenia Kodel 17
Se N estiver contido em mais de uma posio do vetor, o cdigo dado exibe quantas posies?
possvel ajustar o cdigo dado de forma que somente seja exibida a primeira posio em que N se encontra?
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO Escrever trecho de cdigo Pascal para exibir a soma dos dados mantidos no vetor abaixo: Considerar que o vetor foi lido anteriormente.
var
Vetor: array [1..35] of byte;
Soma:=0;
for Cont:=1 to 35 do
Soma:=Soma + Vetor[Cont];
writeln(Soma);
UFS - DComp - Prof. Kenia Kodel 18
14 23 09 17 40 03
1 2 3 4 5 ... 35
Vetor
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO
Em resposta atividade: escrever trecho de cdigo Pascal para exibir a soma dos dados mantidos no vetor Vetor: array [1..35] of byte; sabendo que inc(I,N) procedimento predefinido que adiciona N a I, foi construdo:
Soma:=0;
for Cont:=1 to 35 do
inc(Soma,Vetor[Cont]);
writeln(Soma);
UFS - DComp - Prof. Kenia Kodel 19
Est correto?
ATIVIDADE COM FIM ESTRITAMENTE DIDTICO Escrever trecho de cdigo Pascal para exibir a soma dos vetores 1 e 2 abaixo, obtendo Vetor3. Considerar que os vetores foram lidos anteriormente.
var
Vetor1,Vetor2,Vetor3: array [1..35] of byte;
for Cont:=1 to 35 do
Vetor3[Cont]:=Vetor1[Cont]+Vetor2[Cont];
UFS - DComp - Prof. Kenia Kodel 20
01 30 12 10 14
1 2 3 4 5
02 05 12 05 06
1 2 3 4 5
03 35 24 15 20
1 2 3 4 5
ATIVIDADE
Escrever programa Pascal para ler 20 dados inteiros, armazen-los num vetor e em seguida exibir os nmeros pares mantidos no vetor.
UFS - DComp - Prof. Kenia Kodel 21
02 05 12 05 06
1 2 3 4 5
ATIVIDADE
Escrever programa Pascal para ler 20 dados inteiros, armazen-los num vetor e em seguida exibir os mltiplos de n mantidos no vetor. Sendo n dado pelo usurio.
UFS - DComp - Prof. Kenia Kodel 22
03 35 24 15 20
1 2 3 4 5
ATIVIDADE
Escrever programa Pascal para ler 20 dados inteiros, armazen-los num vetor e em seguida exibir a soma dos nmeros mpares mantidos no vetor.
UFS - DComp - Prof. Kenia Kodel 23
02 05 12 05 06
1 2 3 4 5
ATIVIDADE Escrever programa Pascal para ler 20 dados inteiros, armazen-los num vetor e em seguida exibir menu com a opes abaixo.
a) maior nmero mantido no vetor b) soma dos nmeros mantidos no vetor c) mdia dos nmeros mantidos no vetor d) posio ocupada por N no vetor, sendo N
dado
Atender ao usurio conforme a opo selecionada por ele.
24
ATIVIDADE
Na cidade TemQueFazerNo? as crianas costumam brincar com um jogo onde: (1) um jogador A define uma sequencia de 10 letras usando: G, R e B (exemplo: G G G R B R B B B R); (2) um jogador B pode ler a sequencia quantas vezes quiser; (3) o jogador B tambm pode dizer uma das letras e obter em quais posies a letra dada se encontra na sequencia; (4) o jogador B tambm pode dar uma posio e saber qual letra ocupa a posio na sequencia; (5) para finalizar, o jogador B deve dizer a sequencia de letras, obtendo um ponto para cada acerto. Escrever programa Pascal para automatizar o jogo.
UFS - DComp - Prof. Kenia Kodel 25
Reserva de espao para
armazenar sequncia de
letras:
var
Sequencia: array [1..10] of char;
UFS - DComp - Prof. Kenia Kodel 26
Para definio da sequncia
de letras pelo jogador 1: Cont:=0;
repeat
Letra:=upcase(readkey);
if Letra in [G,R,B] then
begin
inc(Cont);
Sequencia[Cont]:=Letra;
end
else
writeln(ERRO: Letra Invalida);
until Cont=10;
UFS - DComp - Prof. Kenia Kodel 27
Dada uma letra, identificar quais
posies esta ocupa na sequncia: repeat
Letra:=upcase(readkey);
until Letra in [G,B,R];
for Cont:=1 to 10 do
if Letra = Sequencia[Cont] then
writeln(Cont);
UFS - DComp - Prof. Kenia Kodel 28
Dada uma posio, identificar que
letra ocupa esta (posio) na
sequncia: repeat
readln(Posicao);
until (Posicao>=1) and (Posicao
Exibir sequncia:
for Cont:=1 to 10 do
writeln(Sequencia[Cont]);
UFS - DComp - Prof. Kenia Kodel 30
Se desejar exibir as posio:
for Cont:=1 to 10 do
writeln(Cont, Sequencia[Cont]);
Finalizao do Jogo:
Pontos:=0;
for Cont:=1 to 10 do
begin
repeat
Letra:=upcase(readkey);
until Letra in [G,B,R];
if Letra = Sequencia[Cont] then
inc(Pontos);
end;
writeln(Pontos);
UFS - DComp - Prof. Kenia Kodel 31
UFS - DComp - Prof. Kenia Kodel 32
1. program Atividade;
2. const
3. Max = 50;
4. var
5. Notas: array [1..Max] of real;
6. Media: real;
7. I, Quant: byte;
8. begin
9. Media:=0;
10. for I:=1 to Max do
11. begin
12. readln(Notas[I]);
13. Media:= Media + Notas[I];
14. end;
15. Media:= Media / Max;
16. Quant:=0;
17. for I:=1 to Max do
18. if Notas[I] > Media then
19. inc(Quant);
20. writeln(Quant);
21.end.
ATIVIDADE
Qual a funcionalidade
do cdigo dado?
DEVER DE CASA
Construir programa para ler o gabarito de uma
prova objetiva com 20 questes, ler as respostas
dadas por 75 alunos da turma e armazenar (para
posterior exibio) as notas destes. Cada questo
vale 0,5 ponto.
UFS - DComp - Prof. Kenia Kodel 33
DEVER DE CASA
Construir programa para manter em vetor os subtotais do
consumo de cada mesa de uma lanchonete. Considerar que
as mesas so numeradas de 01 a 30. Disponibilizar menu
contendo: 1 abrir conta (incluir novo item em vetor); 2
fechar conta (excluir item do vetor); 3 novo consumo (para
registrar o novo consumo de uma dada mesa (nmero)
ajustar subtotal) ; 4 alto consumo (exibio em tela, das
mesas (nmero) com consumo superior a 50,00).
UFS - DComp - Prof. Kenia Kodel 34
ATIVIDADE
Escrever programa para ler 20 nmeros inteiros quaisquer,
armazen-los (na mesma ordem de entrada) num vetor V e,
em seguida, orden-los (de forma crescente) mantendo-os
em V.
UFS - DComp - Prof. Kenia Kodel 35
UFS - DComp - Prof. Kenia Kodel 36
12 45 32 08 23 43 23 74 11 36
menor dado
08 45 32 12 23 43 23 74 11 36
menor dado
08 11 32 12 23 43 23 74 45 36
08 11 12 32 23 43 23 74 45 36
08 11 12 23 32 43 23 74 45 36
08 11 12 23 23 43 32 74 45 36
...
08 11 12 23 23 32 36 43 45 74
Mtodo de Classificao (Ordenao) por Seleo te
m-s
e u
m
nic
o v
eto
r em
div
ers
os f
ases
(passos d
a o
rdenao)
UFS - DComp - Prof. Kenia Kodel 37
program OrdenaVetor;
{Metodo da Classificacao por Selecao} const
TMax = 20;
var
I, J, Posicao: byte;
Vetor: array [1..TMax] of integer;
Temporario: integer;
begin
for I:=1 to TMax do
readln(Vetor[I]);
for I:=1 to TMax-1 do begin
Posicao:=I;
for J:=I+1 to TMax do
if Vetor[J] < Vetor[Posicao] then Posicao:=J;
if I Posicao then begin
Temporario:=Vetor[I];
Vetor[I]:= Vetor[Posicao];
Vetor[Posicao]:=Temporario; end; {if} end; {for}
end.
Complementar Estudos...
Fundamentos da Programao de Computadores
Ana Fernanda Gomes Ascencio
Edilene Aparecida Veneruchi de Campos
Captulo
Vetores
UFS - DComp - Prof. Kenia Kodel 38
Modularizao
Prximos passos...
UFS - DComp - Prof. Kenia Kodel 39
Recommended