vetores ou arranjos de uma dimensão

26
Vetores ou arranjos Vetores ou arranjos de uma dimensão de uma dimensão Prof. Luis Otavio Alvares (Adaptado de material da profa. Magda Bercht)

Upload: kitra

Post on 21-Jan-2016

21 views

Category:

Documents


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

Page 1: 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)

Page 2: Vetores ou arranjos de uma dimensão

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.

Page 3: Vetores ou arranjos de uma dimensão

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

Page 4: Vetores ou arranjos de uma dimensão

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 ?

Page 5: Vetores ou arranjos de uma dimensã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?

Page 6: Vetores ou arranjos de uma dimensão

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

Page 7: Vetores ou arranjos de uma dimensão

Vetores: variáveis

compostashomogêneas

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

identificadas por índices.

Page 8: Vetores ou arranjos de uma dimensão

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

Page 9: Vetores ou arranjos de uma dimensão

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:

Page 10: Vetores ou arranjos de uma dimensão

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

Page 11: Vetores ou arranjos de uma dimensão

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:

Page 12: Vetores ou arranjos de uma dimensão

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

Page 13: Vetores ou arranjos de uma dimensão

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.

Page 14: Vetores ou arranjos de uma dimensão

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

Page 15: Vetores ou arranjos de uma dimensão

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

Page 16: Vetores ou arranjos de uma dimensão

{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.

Page 17: Vetores ou arranjos de uma dimensão

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.

Page 18: Vetores ou arranjos de uma dimensão

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.

Page 19: Vetores ou arranjos de uma dimensão

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

Page 20: Vetores ou arranjos de uma dimensão

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.

Page 21: Vetores ou arranjos de uma dimensão

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

Page 22: Vetores ou arranjos de uma dimensão

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.

Page 23: Vetores ou arranjos de uma dimensã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.

Page 24: Vetores ou arranjos de uma dimensão

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.

Page 25: Vetores ou arranjos de uma dimensão

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.

Page 26: Vetores ou arranjos de uma dimensão

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.