Aula 06 vetores e matrizes

16
INTRODUÇÃO A LINGUAGEM PASCAL Profº.: Tácito Henrique [email protected] CEMA Centro Educacional Miguel Alves Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Transcript of Aula 06 vetores e matrizes

Page 1: Aula 06   vetores e matrizes

INTRODUÇÃO A

LINGUAGEM PASCAL Profº.: Tácito Henrique

[email protected]

CEMA – Centro Educacional Miguel Alves

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 2: Aula 06   vetores e matrizes

VETORES E MATRIZES

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 3: Aula 06   vetores e matrizes

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

Page 4: Aula 06   vetores e matrizes

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

Page 5: Aula 06   vetores e matrizes

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

Page 6: Aula 06   vetores e matrizes

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

Page 7: Aula 06   vetores e matrizes

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

Page 8: Aula 06   vetores e matrizes

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

Page 9: Aula 06   vetores e matrizes

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

Page 10: Aula 06   vetores e matrizes

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

Page 11: Aula 06   vetores e matrizes

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

Page 12: Aula 06   vetores e matrizes

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

Page 13: Aula 06   vetores e matrizes

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

Page 14: Aula 06   vetores e matrizes

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

Page 15: Aula 06   vetores e matrizes

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

Page 16: Aula 06   vetores e matrizes

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