Você está na página 1de 26

Vetores de uma dimenso

Prof. Nina Custdio

Ex:

Ler as notas de 30 alunos. Calcular e informar a mdia da turma.

Program MediaTurma; var Nota : real; { nota de um aluno } Media, Soma: real; Aluno: integer; { varivel de controle da repetio } begin Soma := 0; { inicializa a soma das notas } for Aluno := 1 to 30 do { para cada aluno da turma } begin readln(Nota); { obtm a nota do aluno } Soma := Soma + Nota end; Media := Soma / 30; writeln(Media da turma: , Media:5:1); end.

Ex:

Ler as notas de 30 alunos. Calcular e informar a mdia da turma. Informar, ainda, as notas que so superiores mdia calculada.
Program MediaTurma; var Nota : real; { nota de um aluno } Media, Soma: real; Aluno: integer; { varivel de controle da repetio } begin Soma := 0; { inicializa a soma das notas } for Aluno := 1 to 30 do { para cada aluno da turma } begin readln(Nota); { obtm a nota do aluno } Soma := Soma + Nota end; Media := Soma / 30; writeln(Media da turma: , Media:5:1); end.

Ex:

Ler as notas de 30 alunos. Calcular e informar a mdia da turma. Informar, ainda, as notas que so superiores mdia calculada.
Program MediaNotasSup_1; var N1, N2, N3, N4, N5, N6, {... N30 : real; { uma varivel para } Media, Soma: real; { cada nota dos alunos ! } Aluno: integer; { varivel de controle da repetio } begin readln(N1, N2, N3, N4, N5, N6, ... , N30); { obtm as 30 notas } Soma := N1+N2+N3+N4+N5+N6+ ... +N30; Media := Soma / 30; writeln(Media da turma: , Media:5:1); if N1 > Media { testa cada nota !!! } then writeln(N1); if N2 > Media then writeln(N2); ... end.

a nica soluo ?

Vamos precisar de 30 variveis para armazenar os valores lidos!!!! Essas 30 variveis so do mesmo tipo. Como simplificar isso, para no precisar declarar 30 variveis diferentes?

Soluo para o problema de mltiplas variveis de mesmo tipo: um vetor

Posio identificando cada elemento 1 2 3 4 5 6 7 8 9

ndice

Nota
Nome

Comum para todos os elementos

Semelhante a uma varivel simples

Valor

variveis compostas homogneas


Um s tipo; Um s nome; Mltiplas posies de memria identificadas por ndices.

Vetores:

Vetor de uma dimenso

conjunto ordenado de informaes de mesma natureza elementos todos do mesmo tipo acesso aleatrio

3 8,5

Nota

Nota [3] vale 8,5

Vetor - Pascal
Declarao
Tipo array
array [ < limite inferior > .. < limite superior > ] of < tipo > limites devem ser inteiros ou carateres tipo: qualquer tipo Pascal

Ex:

var Nota : array [1 .. 30] of real; Y : array [10 .. 15] of string; Z : array [-5 .. 3] of integer;

Vetor - Pascal
Utilizao
Varivel indexada
1 2 3 4 5 6 7 8 9

< nome do arranjo > [ < ndice > ]


Nota

Ex:

var Nota : array [1 .. 9] of real; begin readln( Nota [ 5 ] ); Nota [ 1 ] := 7.5 ; Nota [ 2 ] := Nota [ 1 ] + 2 ; if Nota [ 1 ] > 6.0 then writeln (Aprovado); ...

Nota [ 6 ]

Vetor - Pascal
< nome do arranjo > [ < ndice > ]

ndice

Varivel indexada

constante / nome de varivel / expresso deve ser inteiro ou char (dependendo do que foi definido)

Ex:
var Nota : array [1 .. 9] of real; Indice : integer; begin Indice := 5; readln ( Nota [ Indice ] );

Ex: Nota [ 6 ]
1 2 3 4

Nota [ Indice + 1 ] := 7.5 ; ...


5 6 7 8 9

Nota

Ex:

Preencher por leitura um vetor de 100 elementos inteiros.


var Valor : array [1 .. 100] of integer; Ind : integer; begin for Ind := 1 to 100 do readln ( Valor [ Ind ] ); ... Ind
1 2 3 4 5 6 7 100

Valor

Ex:

Somar os elementos de um arranjo X de 200 posies


... Soma := 0; for I := 1 to 200 do Soma := Soma + X [ I ] ; ...

Ex:

Ler as notas de 30 alunos. Calcular e informar a mdia da turma. Informar, ainda, as notas que so superiores mdia calculada.
Program MediaNotasSup_2; var Nota : array [1 .. 30] of real; { vetor para as notas } Media, Soma: real; Aluno: integer; { varivel de controle da repetio } begin Soma := 0; { inicializa Soma } for Aluno := 1 to 30 do { para cada a luno } begin readln (Nota [Aluno]); { obtm sua nota} Soma := Soma + Nota [Aluno]; { acumula a soma } end; Media := Soma / 30; writeln(Media da turma: , Media:5:1); for Aluno := 1 to 30 do { imprime notas maiores que a mdia } if Nota [Aluno] > Media then writeln (Nota[Aluno]) end.

Exerccio:

Faa um programa para:

1. Preencher um vetor X de 20 posies inteiras por leitura. 2. Mostrar o vetor obtido 3. Informar o menor elemento deste vetor. 4. Informar o valor do maior elemento, e sua posio.

5. Informar quantos valores mpares existem no vetor X

var I, posicao, totimpar, maior, menor: integer; X:array [1..20] of integer; begin {1. Preencher um vetor X de 20 posies por leitura.} for I:=1 to 20 do begin write('Digite um valor inteiro: '); readln(X[I]); end; {2. Mostrar o vetor obtido } for I:=1 to 20 do writeln('Posicao ',i,': ',X[I]); {3.Informar o menor elemento deste vetor} menor:=X[1]; for I:=1 to 20 do if X[I]< menor then menor:=X[I]; writeln('O menor elemento do vetor eh: ',menor);

{4. Informar o valor do maior elemento, e sua posio} maior:=X[1]; for I:=1 to 20 do if X[I]>maior then begin maior:=X[I]; posicao:=I; end; writeln('O maior elemento do vetor eh: ',maior); writeln('e esta na posicao: ', posicao); {5. Informar quantos valores mpares existem no vetor X } totimpar:=0; for I:=1 to 20 do if X[I] mod 2 <>0 then totimpar:=totimpar+1; writeln( 'o vetor X contem ',totimpar, ' valores impares'); readln; end.

Exerccio
Faa um programa que leia um valor n correspondente ao nmero de valores a serem lidos. Leia tambm os n valores e depois mostre estes valores na ordem inversa da leitura.

Var seq,n:integer; v:array [1..20] of integer; begin write('Digite o comprimento da sequencia (max. 20): '); readln(n); writeln('Digite uma sequencia com ',n,' numeros inteiros: '); {leitura da sequencia} for seq:= 1 to n do readln(v[seq]); {mostra na ordem inversa} for seq:= n downto 1 do write(v[seq],' '); readln; end.

Exerccio
Ler 5 valores inteiros e armazenar nas posies iniciais de um vetor de 10 posies. Nas posies seguintes, armazenar sucessivamente o dobro da primeira posio, o triplo da segunda posio, etc. Mostrar os valores armazenados em cada posio do vetor.

var i:integer; N:array[1..10] of integer; begin for I:= 1 to 5 {leitura dos 5 valores} do begin write('digite um valor inteiro: '); readln(N[I]); end; for I:=1 to 5 do {preenche posicoes 6 a 10} N[I+5] := N[I]* (I+1); for I:=1 to 10 do {mostra todo o vetor} writeln('Valor armazenado na posicao ',I, ' = ',N[I]); readln; end.

Exemplo de execuo:
digite um valor inteiro: 10 digite um valor inteiro: 20 digite um valor inteiro: 30 digite um valor inteiro: 40 digite um valor inteiro: 50 Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao Valor armazenado na posicao

1 = 10 2 = 20 3 = 30 4 = 40 5 = 50 6 = 20 7 = 60 8 = 120 9 = 200 10 = 300

Exerccio
Preencha um vetor X de 10 posies inteiras por leitura. Preencha um vetor Y, tambem de 10 posies inteiras, por leitura. Prencha um vetor V1 com a soma de X e Y, em cada posio. Preencha um vetor V2 com a diferena de X e Y, em cada posio.

Exerccio
Leia 6 nomes e armazene-os num vetor de 6 posies. Depois disso, coloque o contedo da primeira posio na ltima, o da segunda posio na penltima e assim sucessivamente. Mostre o resultado.

Var vet:array [1..6] of string; aux:string; i:integer; begin {leitura dos nomes} for I:=1 to 6 do begin write('Informe o nome ',I,': '); readln(vet[I]); end; {alteracao do vetor} for I:=1 to 3 do begin aux:= vet[I]; vet[I] := vet[7-I]; vet[7-I]:=aux; end; {mostra resultado} writeln('Nomes reordenados: '); for I:=1 to 6 do writeln(vet[I]); readln; end.

Exerccio Faa um programa que preencha por leitura um vetor de 20 posies inteiras e classifique os valores do vetor colocando-os em ordem crescente.

const TV = 5; {define TV como uma constante com valor 5} var I,J,aux:integer; X:array [1..TV] of integer; begin writeln('informe o vetor X'); for I:=1 to TV do readln(X[I]); {classifica o vetor} for I:=1 to TV do for J:=1 to TV - 1 do if X[J]>X[J+1] then begin aux:=X[J]; X[J]:=X[J+1]; X[J+1]:=aux; end; {mostra o vetor ordenado} writeln('vetor classificado:'); for I:=1 to TV do write(X[I]:4); readln; end.

Você também pode gostar