260 likes | 347 Views
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;
E N D
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; 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.
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 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. É 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 Solução para o problema de múltiplas variáveis de mesmo tipo:um vetor Índice Posição identificando cada elemento Nota Nome Comum para todos os elementos Valor Semelhante a uma variável simples
Vetores:variáveis compostashomogêneas • Um só tipo; • Um só nome; • Múltiplas posições de memória identificadas por índices.
1 2 3 4 5 6 7 8 9 • Vetor ou Arranjo de uma dimensão • conjunto ordenado de informações de mesma natureza • elementos todos do mesmo tipo • acesso randômico 8,5 Nota Nota [3] vale 8,5
Arranjo - Pascal Declaração Tipo ‘array’ array [ < limite inferior > .. < limite superior > ] of < tipo > • limites devem ser inteiros ou caracteres • tipo: qualquer tipo Pascal Ex: var Nota : array [1 .. 30] of real; Y : array [10 .. 15] of string; Z : array [-5 .. 3] of integer;
1 2 3 4 5 6 7 8 9 Nota Arranjo - Pascal Utilização Variável indexada < nome do arranjo > [ < índice > ] Ex: var Nota : array [1 .. 9] of real; begin readln( Nota [ 5 ] ); Nota [ 6 ] Nota [ 1 ] := 7.5 ; Nota [ 2 ] := Nota [ 1 ] + 2 ; if Nota [ 1 ] > 6.0 then writeln (‘Aprovado’); ...
1 2 3 4 5 6 7 8 9 Nota Arranjo - 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) Ex: var Nota : array [1 .. 9] of real; Indice : integer; begin Indice := 5; readln ( Nota [ Indice ] ); Nota [ Indice + 1 ] := 7.5 ; ... Ex: Nota [ 6 ]
1 2 3 4 5 6 7 … 100 Ind Valor X Ex:Preencher por leitura um arranjo de 100 elementos inteiros. var Valor : array [1 .. 100] of integer; Ind : integer; begin for Ind := 1 to 100 do readln ( Valor [ Ind ] ); ... Ex:Somar os elementos de um arranjo X de 200 posições ... Soma := 0; for I := 1 to 200 do Soma := Soma + X [ I ] ; ...
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 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 } begin readln (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] > Media then writeln (Nota[Aluno]) end.
Exercício: Faça um programa para: • 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 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 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.
Exercício 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.
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: 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 1 = 10 Valor armazenado na posicao 2 = 20 Valor armazenado na posicao 3 = 30 Valor armazenado na posicao 4 = 40 Valor armazenado na posicao 5 = 50 Valor armazenado na posicao 6 = 20 Valor armazenado na posicao 7 = 60 Valor armazenado na posicao 8 = 120 Valor armazenado na posicao 9 = 200 Valor 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ício Faca 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.