PImperativa07 - Vetores

39
 Prof Kenia Kodel UFS - DComp - Prof. Kenia Kodel 1

description

aula de vetores para programação imperativa

Transcript of PImperativa07 - Vetores

  • 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