Vetores ou arranjos de uma dimensão

Post on 21-Jan-2016

21 views 0 download

description

Vetores ou arranjos de uma dimensão. Prof. Luis Otavio Alvares (Adaptado de material da profa. Magda Bercht). Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Program MediaTurma; var Nota : real; { nota de um aluno } Media, Soma: real; - PowerPoint PPT Presentation

Transcript of Vetores ou arranjos de uma dimensão

Vetores ou arranjos de Vetores ou arranjos de uma dimensãouma dimensão

Prof. Luis Otavio Alvares

(Adaptado de material da profa. Magda Bercht)

Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma.

Program MediaTurma;var Nota : real; { nota de um aluno }

Media, Soma: real; Aluno: integer; { variável de controle da repetição }

begin Soma := 0; { inicializa a soma das notas }

for Aluno := 1 to 30 do { para cada aluno da turma }

begin readln(Nota); { obtém 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 média da turma. Informar, ainda, as notas que são superiores à média calculada.

Program MediaTurma;var Nota : real; { nota de um aluno } Media, Soma: real; Aluno: integer; { variável de controle da repetição }begin Soma := 0; { inicializa a soma das notas } for Aluno := 1 to 30 do { para cada aluno da turma } begin

readln(Nota); { obtém a nota do aluno } Soma := Soma + Nota end; Media := Soma / 30; writeln(‘Media da turma: ’, Media:5:1);

end.?

Program MediaNotasSup_1;var N1, N2, N3, N4, N5, N6, {... N30 : real; { uma variável para } Media, Soma: real; { cada nota dos alunos ! } Aluno: integer; { variável de controle da repetição }begin readln(N1, N2, N3, N4, N5, N6, ... , N30); { obtém 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.

Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Informar, ainda, as notas que são superiores à média calculada.

É a única solução ?

•Vamos precisar de 30 variáveis para armazenar os valores lidos!!!!

•Essas 30 variáveis são do mesmo tipo.

•Como simplificar isso, para não precisar declarar 30 variáveis diferentes?

1 2 3 4 5 6 7 8 9

Nota

ÍndicePosição

identificando cada elemento

NomeComum para

todos os elementos

ValorSemelhante a uma variável

simples

Solução para o problema de múltiplas variáveis de mesmo tipo: um vetor

Vetores: variáveis

compostashomogêneas

• Um só tipo;• Um só nome;• Múltiplas posições de memória

identificadas por índices.

Vetor ou Arranjo de uma Vetor ou Arranjo de uma dimensãodimensão

• conjunto ordenado de informações de mesma natureza• elementos todos do mesmo tipo• acesso randômico

1 2 3 4 5 6 7 8 9

Nota 8,5

Nota [3] vale 8,5

Arranjo - PascalArranjo - Pascal

Declaração

Tipo ‘array’

array [ < limite inferior > .. < limite superior > ] of < tipo >

• limites devem ser inteiros ou caracteres• tipo: qualquer tipo Pascal

var Nota : array [1 .. 30] of real; Y : array [10 .. 15] of string;

Z : array [-5 .. 3] of integer;

Ex: Ex:

Arranjo - PascalArranjo - Pascal

Utilização

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

Ex: Ex:

< nome do arranjo > [ < índice > ]

1 2 3 4 5 6 7 8 9

Nota

Nota [ 2 ] := Nota [ 1 ] + 2 ;

Nota [ 1 ] := 7.5 ;

if Nota [ 1 ] > 6.0then writeln (‘Aprovado’);...

Nota [ 6 ]

Variável indexada

Arranjo - PascalArranjo - Pascal

< nome do arranjo > [ < índice > ]

Variável indexadaÍndice• constante / nome de variável / expressão

• deve ser inteiro ou char (dependendo do que foi definido)

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

Ex: Ex:

1 2 3 4 5 6 7 8 9

Nota

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

Nota [ 6 ]Ex: Ex:

var Valor : array [1 .. 100] of integer; Ind : integer; begin for Ind := 1 to 100 do

readln ( Valor [ Ind ] ); ...

Ex: Preencher por leitura um arranjo de 100 elementos inteiros.

1 2 3 4 5 6 7 … 100

Valor

Ind

X

Ex: Somar os elementos de um arranjo X de 200 posições

... Soma := 0; for I := 1 to 200 do

Soma := Soma + X [ I ] ; ...

Program MediaNotasSup_2;var Nota : array [1 .. 30] of real; { vetor para as notas } Media, Soma: real; Aluno: integer; { variável de controle da repetição }begin Soma := 0; { inicializa Soma } for Aluno := 1 to 30 do { para cada a luno }

beginreadln (Nota [Aluno]); { obtém 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

média }if Nota [Aluno] > Mediathen writeln (Nota[Aluno])

end.

Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Informar, ainda, as notas que são superiores à média calculada.

Exercício: Faça um programa para:

1.Preencher um vetor X de 20 posições inteiras por leitura.

2. Mostrar o vetor obtido

3. Informar o menor elemento deste vetor.

4. Informar o valor do maior elemento, e sua posição.

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 posições 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 20do 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 posição} 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.

Exercício

Faça um programa que leia um valor n correspondente ao número de valores a serem lidos. Leia também 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.

Ler 5 valores inteiros e armazenar nas posições iniciais de um vetor de 10 posições. Nas posições seguintes, armazenar sucessivamente o dobro da primeira posição, o triplo da segunda posição, etc. Mostrar os valores armazenados em cada posição do vetor.

Exercício

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 execução:

digite um valor inteiro: 10digite um valor inteiro: 20digite um valor inteiro: 30digite um valor inteiro: 40digite um valor inteiro: 50Valor armazenado na posicao 1 = 10Valor armazenado na posicao 2 = 20Valor armazenado na posicao 3 = 30Valor armazenado na posicao 4 = 40Valor armazenado na posicao 5 = 50Valor armazenado na posicao 6 = 20Valor armazenado na posicao 7 = 60Valor armazenado na posicao 8 = 120Valor armazenado na posicao 9 = 200Valor armazenado na posicao 10 = 300

Exercício

Preencha um vetor X de 10 posições inteiras por leitura. Preencha um vetor Y, tambem de 10 posicoes inteiras, por leitura.Prencha um vetor V1 com a soma de X e y, em cada posição.Preencha um vetor V2 com a diferença de X e Y, em cada posição.

Exercício

Leia 6 nomes e os armazene em um vetor de 6 posições. Depois disso, coloque o conteúdo da primeira posição na última, o da segunda posição na penúltima 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.

ExercícioFaca um programa que preencha por leitura um vetor de 20 posições 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.