Académique Documents
Professionnel Documents
Culture Documents
Vetores
As variveis simples somente so capazes de armazenar um valor por vez. No momento que um valor atribudo a uma varivel, seu contedo anterior se perde. Agora, imagine um programa onde precisa-se armazenar as notas de 5 provas realizadas por um aluno. Com os conhecimentos que voc possui at agora, seria necessrio criar cinco variveis para armazenar as notas. Desta forma:
NOTA[1] NOTA[2] NOTA[3] NOTA[4] NOTA[5] NOTA[1] NOTA[2] NOTA[3] NOTA[4] NOTA[5] := := := := :=
5.2; 8.0; 9.2; 7.5; 8.3; 5.2; 8.0; 9.2; 7.5; 8.3;
Em Pascal:
5.2
8.0
9.2
7.5
8.3
Vamos analisar um programa com a utilizao de vetores: Desenvolver um programa que efetue a leitura e escrita de 5 elementos de um vetor A. Algoritmo: 1. Iniciar o contador do ndice de um vetor (A), com valor 1 at 5; 2. Ler os 5 valores, um a um; 3. Apresentar o contedo do vetor. Algoritmo EXEMPLO_VETOR01; var A : vetor[1..5] de inteiro; Inteiro: I; inicio para I 1 at 5 faa inicio escreva(Informe o valor, I); leia(A[I]); fim; para I 1 at 5 faa escreva (A[I]); fim. De modo geral, toda vez que vamos acessar as posies de um vetor de modo seqencial, utilizaremos o lao para. Vamos fazer o teste de mesa para o algoritmo acima, levando em considerao os seguintes dados de entrada: 5, 9, 12, 3 e 7.
A 1 2 3 4 5
Sada
Um pouco mais alm: Desenvolver um programa que efetue a leitura de 5 elementos de um vetor A Construir um vetor B de mesmo tipo, observando a seguinte lei de formao: se o valor do ndice for par, o valor dever ser multiplicado por 5; sendo mpar, dever ser somado com 5. Ao final, mostrar os contedos dos dois vetores. Algoritmo: 1. Iniciar o contador do ndice de um vetor (A), com valor 1 at 5; 2. Ler os 5 valores, um a um; 3. Verificar se o ndice par: a. Se for, multiplica por 5 e atualiza no vetor B; b. Se no for par, soma 5 e atualiza no vetor B. 4. Apresentar o contedo dos dois vetores. Algoritmo EXEMPLO_VETOR02; var A, B: vetor[1..5] de inteiro; Inteiro: I; inicio para I 1 at 5 faa inicio escreva(Informe o valor, I); leia(A[I]); fim; {*** Teste Par ou mpar ***} para I 1 at 5 faa se (I mod 2 = 0) ento B[I] A[I] * 5; seno B[I] A[I] + 5; Fimse; para I 1 at 5 faa escreva (A[,I,] = ,A[I], e , B[, I, ] = , B[I]); fim.
A 1 2 3 4 5 1 2
B 3 4 5
Sada
Em Pascal: Program EXEMPLO_VETOR02; var A, B: array[1..5] of integer; I: integer; begin {*** Entrada dos Dados ***} for I := 1 to 5 do begin write(Informe o valor, I); readln(A[I]); end; {*** Teste Par ou mpar ***} for I := 1 to 5 do if (I mod 2 = 0) then B[I] := A[I] * 5 else B[I] := A[I] + 5; writeln; {*** Apresentao do contedo do vetor ***} for I := 1 to 5 do writeln(A[,I,] = ,A[I], e , B[, I, ] = , B[I]); writeln; writeln(Tecle <ENTER> para encerrar: ); readln; end.
Vejamos um exemplo do uso de vetores de caracteres: Ler e exibir o nome de 5 pessoas. Algoritmo: 1. Definir a varivel I do tipo inteiro para controlar a repetio; 2. Definir a matriz NOME do tipo string para 5 elementos; 3. Iniciar o programa, fazendo a leitura dos 5 nomes; e 4. Apresentar, aps a leitura, os 10 nomes. Algoritmo LISTA_NOME; var NOME: vetor[1..5] de caracter; Inteiro: I; Inicio escreva(Listagem de nomes); para I 1 at 5 faa inicio escreva(Digite o , I:2, o. nome: ); leia(NOME[I]); fim; para I 1 at 5 faa escreva (Nome: , I:2, --> , NOME[I]); fim. Em Pascal: Program LISTA_NOME; var NOME: array[1..5] of string; I: integer; begin writeln(Listagem de nomes); writeln; { *** Entrada dos Dados *** } for I := 1 to 5 do begin write(Digite o , I:2, o. nome: ); readln(NOME[I]); end; writeln; { *** Apresentao dos Nomes *** } for I := 1 to 5 do writeln(Nome: , I:2, --> , NOME[I]); writeln; writeln(Tecle <ENTER> para encerrar: ); readln; end. Uma forma mais organizada de apresentar o programa acima seria exibir os nomes das pessoas em ordem alfabtica, contribuindo para uma pesquisa mais fcil. Vejamos como ficaria o programa desta forma: Algoritmo LISTA_NOME_ORDENADO; var NOME: vetor[1..5] de caracter; Inteiro: I, J; Caractere: aux;
Nome 1 2 3 4 5
Aux
Sada
Em Pascal: Program LISTA_NOME_ORDENADO; var NOME: array[1..10] of string; I, J: integer; aux: string; begin writeln(Listagem de nomes); writeln; { *** Entrada dos Dados *** } for I := 1 to 10 do begin write(Digite o , I:2, o. nome: ); readln(NOME[I]); end; { *** Ordenao dos Nomes *** } for I := 1 to 9 do for J := I +1 to 10 do if (NOME[I] > NOME[J]) then begin aux := NOME[I]; NOME[I] := NOME[J]; NOME[J] := aux; end; { *** Apresentao dos Nomes *** } writeln; for I := 1 to 10 do writeln(Nome: , I:2, --> , NOME[I]); writeln; writeln(Tecle <ENTER> para encerrar: ); readln; end.
Exerccios
1. Dar o nmero de elementos de cada um dos vetores dados abaixo: a)VET : vetor[-5..5] de inteiro; b)NOME: vetor [0..20] de caracter; c)CONT: vetor ['A'..'Z'] de inteiro; d)NOTA: vetor [1..50] de real; Laboratrio de Programao Prof. Geovane 7
3. Dado um vetor A contendo 10 elementos inteiros, faa um algoritmo para gerar e exibir um vetor B cujos elementos esto na ordem inversa de A. Exemplo: A= B= 1 23 26 2 37 20 ... ... 9 20 37 10 26 23
4. Dado dois vetores A e B contendo 10 elementos inteiros cada, gerar e exibir um vetor C do mesmo tamanho cujos elementos sejam a soma dos respectivos elementos de A e B. Exemplo: A= B= C= 1 23 30 53 2 37 32 69 3 30 46 76 ... ... ... 9 45 33 88 10 35 42 77
5. Dado dois vetores A e B contendo 10 elementos inteiros cada, gerar e exibir um vetor C de 20 elementos, cujos elementos sejam a intercalao dos elementos de A e B. Exemplo: A= B= 1 23 1 23 30 2 30 2 37 32 3 37 4 32 3 30 46 5 30 6 46 ... ... 9 38 43 17 38 10 55 49 18 43 19 55 20 49
C=
...
6. Um time de basquete possui 12 jogadores. Deseja-se um programa que, dado o nome e a altura dos jogadores, determine (utilize vetores para armazenar os dados): a) o nome e a altura do jogador mais alto; b) a mdia de altura do time; c) a quantidade de jogadores com altura superior a mdia, listando o nome e a altura de cada um.
7. Fazer um programa em Pascal para corrigir provas de mltipla questes e cada questo vale 1 ponto. O primeiro conjunto gabarito para a correo da prova. Os outros dados sero os respectivas respostas, e o ltimo nmero, do aluno fictcio, dever calcular e imprimir: a) para cada aluno, o seu nmero e sua nota;
escolha. Cada prova tem 10 de dados a ser lido ser o nmeros dos alunos e suas ser 0 (zero). O programa
b) o percentual de aprovao, sabendo-se que a nota mnima de aprovao 6. c) a nota que teve maior freqncia absoluta, ou seja, a nota que apareceu maior nmero de vezes (supondo a inexistncia de empates). A estrutura de dados para este programa de ser a seguinte:
GABARITO NUMERO NOTA
RESPOSTAS
APROVADOS
TOTAL
FREQUENCIA
MAIOR