Вы находитесь на странице: 1из 39

Prof.

Kenia Kodel
UFS - DComp - Prof. Kenia Kodel

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

Definio de Vetor
Um vetor consiste num item de composio de
programas de computador til ao armazenamento de
dados encadeados.

var
<Identificador>: array[1..N] of <tipo>;

UFS - DComp - Prof. Kenia Kodel

Definio Pascal de Vetor


var
<Identificador>: array[1..N] of <tipo>;

Onde:

<identificador> - nome da varivel vetor

N - quantidade mxima de elementos a armazenar,


tamanho da estrutura

<tipo> - tipo dos dados a serem mantidos na


estrutura.
UFS - DComp - Prof. Kenia Kodel

Esboo de Vetor
var
<Identificador>: array[1..N]of <tipo>;
Esquematicamente:
dado1 dado2 dado3 dado4

dadoN

...

vetor
Sendo: dado valores de um tipo determinado.
UFS - DComp - Prof. Kenia Kodel

Exemplo de Vetor
var

Alunos: array[1..30]of string[10];


Esquematicamente:
Ana

Beto

Caio

Dani

Zeca

...

30

Alunos
UFS - DComp - Prof. Kenia Kodel

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

...

30

Alunos
UFS - DComp - Prof. Kenia Kodel

Manipulao dos
Dados do Vetor
Os dados de tipo T mantidos em vetor so manipulados
elemento-a-elemento; da mesma forma como variveis nocompostas de tipo T so manipuladas.

Exemplo: writeln(Alunos[30]);
Ana

Beto

Caio

Dani

Gil

Zeca

...

30

A instruo dada provoca a exibio da palavra ZECA


que corresponde ao contedo do elemento de ndice 30
do vetor ALUNOS.
UFS - DComp - Prof. Kenia Kodel

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
1

09
2

17
3

40
4

03
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;

for Cont:=1 to 35 do
readln(Vetor[Cont]);

Est correto?
UFS - DComp - Prof. Kenia Kodel

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;

14

23
1

09
2

17
3

40
4

03
5

...

35

Vetor
UFS - DComp - Prof. Kenia Kodel

11

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;
14

23
1

09
2

17
3

40
4

03
5

...

35

Vetor
UFS - DComp - Prof. Kenia Kodel

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<=35);
Vetor[P]:=D;
UFS - DComp - Prof. Kenia Kodel

readln(D, P);
Vetor[P]:=D;

Est correto?
13

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]);
14

23
1

09
2

17
3

40
4

03
5

...

35

Vetor
UFS - DComp - Prof. Kenia Kodel

14

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]);
14

23
1

-1
2

17
3

-1
4

03
5

...

35

Vetor
UFS - DComp - Prof. Kenia Kodel

15

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<=35);
writeln(Vetor[P]);
14

23
1

09
2

17
3

UFS - DComp - Prof. Kenia Kodel

40
4

03
5

...

35

Vetor

16

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

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?
17

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);
14

23
1

09
2

17
3

UFS - DComp - Prof. Kenia Kodel

40
4

03
5

...

35

Vetor

18

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);
Est correto?
UFS - DComp - Prof. Kenia Kodel

19

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];
01

30
1

12
2

10

14

02

05

12

05

06

4
03

UFS - DComp - Prof. Kenia Kodel

5
35

24
2

15
3

20
4

20

ATIVIDADE
Escrever programa Pascal para ler 20 dados inteiros,
armazen-los num vetor e em seguida exibir os nmeros
pares mantidos no vetor.

02 05 12 05 06
1 2 3 4 5
UFS - DComp - Prof. Kenia Kodel

21

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.

03

35
1

UFS - DComp - Prof. Kenia Kodel

24
3

15
4

20
5
22

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.

02 05 12 05 06
1 2 3 4 5
UFS - DComp - Prof. Kenia Kodel

23

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<=10);
writeln(Sequencia[Posicao]);

UFS - DComp - Prof. Kenia Kodel

29

Exibir sequncia:
for Cont:=1 to 10 do
writeln(Sequencia[Cont]);

Se desejar exibir as posio:


for Cont:=1 to 10 do
writeln(Cont, Sequencia[Cont]);

UFS - DComp - Prof. Kenia Kodel

30

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

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);
Qual a funcionalidade
20. writeln(Quant);
21.end.
do cdigo dado?

ATIVIDADE

UFS - DComp - Prof. Kenia Kodel

32

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

tem-se um nico vetor em diversos fases


(passos da ordenao)

Mtodo de Classificao (Ordenao) por Seleo

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
08
08
08

11
11
11
11

32
12
12
12

12
32
23
23

23 43
23 43
32 43
23 43
...
08 11 12 23 23 32
UFS - DComp - Prof. Kenia Kodel

23
23
23
32

74
74
74
74

45
45
45
45

36
36
36
36

36 43 45 74
36

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.
UFS - DComp - Prof. Kenia Kodel

37

Complementar Estudos...
Fundamentos da Programao de Computadores
Ana Fernanda Gomes Ascencio
Edilene Aparecida Veneruchi de Campos

Captulo
Vetores
UFS - DComp - Prof. Kenia Kodel

38

Prximos passos...

Modularizao
UFS - DComp - Prof. Kenia Kodel

39

Вам также может понравиться