vetores ou arranjos de uma dimensão
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 PresentationTRANSCRIPT
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.