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