3. O que são vetores?
• Um vetor (array em inglês) é uma coleção de variáveis de
um mesmo tipo;
• compartilham o mesmo nome e ocupam posições
consecutivas de memória;
• Cada variável da coleção denomina-se elemento e é
identificada por um índice;
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
4. O que são vetores?
• Cada variável da coleção denomina-se elemento e é
identificada por um índice.
• Se v é um vetor indexado de 1 a n, seus elementos são v[1],
v[2], v[3], ..., v[n].
• Antes de criar um vetor é preciso declarar o seu tipo, ou seja,
especificar a quantidade e o tipo dos elementos que ele irá
conter.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
5. O que são vetores?
• Isso é feito através do comando type;
type vetor = array[1..5] of integer;
var v : vetor;
• A primeira linha define um novo tipo de vetor,
denominado vetor, cujos elementos indexados de 1 a 5
são do tipo integer.
• A segunda linha declara uma variável, denominada v, do
tipo recém definido.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
6. Sintaxe e declaração de Vetores
• Sintaxe:
<nome array>: array [dimensão] of <tipo>;
• Exemplo:
• Var
vet:array[1..6] of integer;
Begin
vet[2]:=90;
vet[4]:=45;
vet[5]:=30;
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
7. Um pouco mais sobre vetores?
• Em geral, um vetor v pode ser indexado com qualquer
expressão cujo valor seja um número inteiro.
• Essa expressão pode ser uma simples constante, uma
variável ou então uma expressão propriamente dita,
contendo operadores aritméticos, constantes e variáveis.
• A manipulação de vetores é grandemente facilitada pelo
uso dos comandos de repetição, especialmente o for.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
8. O que NÃO podemos fazer com Vetores
• Não é possível:
• a) Não se pode ler todo um vetor diretamente com um comando read. Não se pode
escrever: read(v);
É necessário ler casa a casa, diretamente, ou com um laço de repetição como for no exemplo
acima.
• b) Não se pode escrever todos os elementos de um vetor com um único comando write.
Não é permitido escrever: write(v). Também nesse caso cada elemento deve ser tratado
como uma variável independente, por exemplo:
for i:= 1 to 6 do write(v[i]:3);
• c) Não é possível copiar os valores dos elementos de um vetor para outro com um único
comando de atribuição. Ou seja, dados dois vetores v e w, ambos do mesmo tamanho e do
mesmo tipo, não é permitido fazer: w:= v; . Também aqui é necessário trabalhar elemento a
elemento, e o comando for mais uma vez é indicado:
for i:= 1 to 6 do w[i]:= v[i];
• d) Não existe comandos ou funções que dão o tamanho (número de elementos) de um
vetor.
• e) Não é permitido tentar acessar uma posição fora do intervalo de posições definido para o
vetor. A tentativa causará um erro em tempo de execução e o programa abortará. No caso
do vetor v com 6 posições, por exemplo, não é permitido escrever: v[8]:= 20, read(v[8])
ou write (v[8]) porque a faixa de valores das posições vai de 1 a 6 apenas.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
9. O que PODEMOS fazer com Vetores
• O que é permitido:
• a) A faixa de valores das posições não precisa começar em 1. Qualquer intervalo
de valores pode ser usado na definição de um vetor. Por exemplo, podemos
definir um vetor assim:
var v:array[15..20] of real;
Nesse caso o vetor v terá apenas os elementos: v[15], v[16], v[17], v[18], v[19] e
v[20]
• b) As posições não precisam ser necessariamente números inteiros. Podem ser
qualquer tipo ordinal, ou seja, que possa ser definido por uma seqüência
ordenada de valores. Por exemplo, os caracteres em Pascal formam uma
seqüência ordenada na tabela de caracteres, e podem portanto serem
marcadores de posição em um vetor.
Podemos definir um vetor assim:
var letras: array['a'..'z'] of integer;
Nesse caso os elementos do vetor são: letras['a'], letras['b'], ….., letras['z']
Um uso possível para esse vetor poderia ser que cada posição poderia guardar a
quantidade de vezes que a letra dessa posição aparece em uma determinada
frase.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
10. Exercícios Resolvidos
Exercício 1
• Crie um programa que armazene em vetor 5 números e depois exiba o conteúdo
de cada posição;
Program Pzim ;
type vetor = array[1..5] of integer;
var
v : vetor;
i : integer;
Begin
v[1] := 10;
v[2] := 20;
v[3] := 30;
v[4] := 40;
v[5] := 50;
for i:=1 to 5 do
writeln('Posição do Vetor (',i,'): ',v[i]);
End.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
11. O que são Matrizes?
• Os elementos de um vetor guardam uma relação de posicionamento
entre si apenas em uma dimensão.
• Essas variáveis estão dispostas como que em uma linha, e cada
elemento é identificado pela sua posição relativa na linha:
• Quando há mais de uma dimensão, damos o nome de matriz a esse
arranjo de variáveis.
• O caso mais comum é a matriz de 2 dimensões. Os elementos ficam
dispostos em um plano, composto por várias linhas do mesmo tamanho,
como abaixo:
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
12. O que são Matrizes?
• Na matriz de inteiros anterior, existem 3 linhas, cada linha com
4 colunas, ou 3x4 (três por quatro). Essa matriz pode ser
declarada assim:
var mat: array[1..3, 1..4] of integer;
• Após o nome da matriz, são colocados entre colchetes os
intervalos em que ficam os números das linhas, e os números
das colunas, nessa ordem.
Note que também aqui os elementos da matriz devem ser todos
do mesmo tipo.
• Cada elemento da matriz é identificado pela notação: mat[i,j],
onde i é o número da linha, e j o número da coluna, onde se
encontra o elemento. Na figura acima, temos então que
mat[1,1] tem o valor 40.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
13. O que são Matrizes?
O comando for... do é muito usado para processar os valores de matrizes.
Exemplos:
a) Para zerar todos os elementos de uma matriz m, com 3 linhas e 4 colunas, declarada como:
var
m: array[1..3, 1..4] of integer;
basta fazer:
for i:= 1 to 3 do
for j:= 1 to 4 do m[i,j] := 0;
Nota: é usual usar-se a variável i para representar as linhas de uma matriz, a variável j para
representar as colunas.
b) Para ler do teclado valores para preencher a matriz acima (12 valores):
for i:= 1 to 3 do
for j:= 1 to 4 do read(m[i,j] );
Nota: O usuário poderá digitar todos os 12 números em uma só linha (separados por
espaços), ou um número por linha, ou, melhor, 4 números por linha, de forma a visualizar
melhor a matriz.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
14. Sintaxe e Declaração de Matrizes
• Sintaxe: <nome array>: array [dimensões] of <tipo>;
• Declaração:
• Var
mat:array[1..5,1..3] of integer; {matriz 5x3}
Begin
mat[1,2]:=10;
mat[3,1]:=11;
mat[5,3]:=12;
mat[2,2]:=78;
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
15. Exercícios de Fixação
• 1) Fazer um programa que tem dois vetores do mesmo tamanho (6). O
usuário fornecerá os dados do primeiro, e depois deverá ser armazenado e
exibido o valor do segundo vetor que é o valor do primeiro vetor vezes a
posição do elemento. Por exemplo:
• vet1:
• 80 / 28 / 35 / 44 / 35 / 16
vet2:
• 80x1 / 28x2 / 35x3 / 44x4 / 35x5 / 16x6
• 2) Leia 4 números, coloque-os em um vetor e mostre-os na ordem inversa de
sua leitura.
• 3) Fazer um programa que lê 16 valores e armazene numa matriz. O
programa deve mostrar esses números em ordem, levando primeiro em
consideração a coluna e depois a linha. Logo, deve-se mostrar primeiro toda
a primeira coluna e depois a segunda coluna. O programa não deve exibir os
números que estão na diagonal principal da matriz.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
16. DESAFIOS 1,0 ponto
• DESAFIO I: Leia 20 números, deposite-os em um vetor e
mostre os números pares lidos, e após, os números que
estão nas posições pares.
• DESAFIO II: Faça um programa que execute a leitura de
números inteiros para completar uma matriz qualquer,
sendo que o número de linhas e o número de colunas da
mesma, serão parâmetros por valor, enquanto que a
matriz será um parâmetro por referência.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal