2. Vetores
Os tipos estruturados permitem a criação de
conjuntos;
VETOR
<identificador>: VETOR[faixas] DE tipo;
As definições da faixa são obrigatórias;
A palavra ARRAY define a construção de vetores
e a definição de matrizes, talvez seja uma das
estruturas de dados mais conhecidas pois é
utilizada em diversas linguagens de programação;
3. Vetores
Para tentarmos simplificar a definição de vetor podemos
imaginar a seguinte situação:
Temos que armazenar dados de uma empresa por meses, e para
isto poderíamos ter 12 variáveis diferentes que poderiam, por sua
vez, estar em locais diferentes da memória.
VAR mes01, mes02, mes03, mes04, mes05, mes06, mes07, mes08,
mes09, mes10, mes11, mes12 : REAL;
Ou ainda estar em uma área contínua, permitindo um acesso um
pouco mais facilitado, aliás a grande vantagem de se ter um vetor
está justamente no fato de se poder criar algoritmos que facilitam a
lógica de alguns programas:
meses : VETOR[1..12] DE REAL; // em Linguagem
Algorítmica
VAR meses : ARRAY [1..12] OF REAL; // em Pascal
4. Vetores
A referência a um dos elementos de um vetor é feita, de acordo
com o deslocamento de endereço, partindo do primeiro
elemento, mais o tamanho em bytes de cada elemento,
multiplicado pela posição menos 1. Se no vetor meses
declarado no slide anterior, quisermos nos referir ao mês de
maio, basta que coloquemos o valor 5 com índice:
meses[5] := <expressão>;
Quando utilizamos o índice, o próprio compilador da linguagem
se encarrega de fazer o cálculo do endereço de memória de
acordo com o índice:
meses[ind] está na posição de memória =
meses + (ind - 1)*tamanho do tipo
5. Vetores
Declarações
VAR Vet: ARRAY[1..8] OF INTEGER;
Leitura:
For i := 1 to 8 do
Begin
Readln(Vet[i]); {ler o elemento índice i do vetor}
End;
Escrita:
For i := 1 to 8 do
Begin
Writeln(Vet[i]); {mostrar o elemento índice i do vetor}
End;
6. Vetores
A faixa de um vetor pode ser de
qualquer tipo ordinal (Integer, LongInt,
Byte, Word, Boolean e Char);
Pode ter também mais de uma
dimensão. No caso de duas dimensões
teremos uma MATRIZ;
7. Vetores – Estruturas de Dados Homogêneos
1) Escreva um algoritmo que permita a leitura dos nomes de 10 pessoas e
armaze os nomes lidos em um vetor. Após isto, o algoritmo deve permitir a
leitura de mais 1 nome qualquer de pessoa e depois escrever a mensagem
ACHEI, se o nome estiver entre os 10 nomes lidos anteriormente (guardados no
vetor), ou NÃO ACHEI caso contrário;
2) Ler um vetor Q de 20 posições (aceitar somente números positivos).
Escrever a seguir o valor do maior elemento de Q e a respectiva posição que
ele ocupa no vetor;
3) O mesmo exercício anterior, mas agora deve escrever o menor elemento do
vetor e a respectiva posição dele nesse vetor;
4) Ler um vetor A de 10 números. Após, ler mais um número e guardar em uma
variável X. Armazenar em um vetor M o resultado de cada elemento de A
multiplicado pelo valor X. Logo após, imprimir o vetor M;
5) Faça um algoritmo para ler 20 números e armazenar em um vetor. Após a
leitura total dos 20 números, o algoritmo deve escrever esses 20 números lidos
na ordem inversa;
8. Vetores – Estruturas de Dados Homogêneos
6) Faça um algoritmo para ler e armazenar em um vetor a temperatura média
de todos os meses do ano. Calcular e escrever:
a) Mês de Menor temperatura do ano
b) Mês de Maior temperatura do ano
c) Temperatura média anual
7) Faça um programa que leia dez nomes, armazene-os em um vetor,
transforme-os em letras maiúsculas, ordene-os e mostre o resultado na tela
(dica: declarar um vetor auxiliar que conterá os nomes em ordem crescente);
8) Faça um algoritmo para ler dois vetores V1 e V2 de 15 números cada.
Calcular e escrever a quantidade de vezes que V1 e V2 possuem os mesmos
números e nas mesmas posições;
9) Faça um algoritmo para ler um vetor de 30 números. Após isto, ler mais um
número qualquer, calcular e escrever quantas vezes esse número aparece no
vetor;
10) Faça um algoritmo para ler 10 números e armazenar em um vetor. Após
isto, o algoritmo deve ordenar os números no vetor em ordem crescente.
Escrever o vetor ordenado;
9. Matrizes
Os índices de linha e coluna de uma
matriz começam com o número 1 (no
Pascal). Logo, o primeiro elemento é
mat[1,1];
10. Matrizes
Declarações
VAR Mat : ARRAY[1..8,1..8] OF INTEGER;
Leitura:
For linha := 1 to 8 do
Begin
For coluna := 1 to 8 do
Begin
Readln(Mat[linha,coluna]); {ler o elemento linha e coluna da matriz}
End;
End;
Escrita:
For linha := 1 to 8 do
Begin
For coluna := 1 to 8 do
Begin
Writeln(Mat[linha,coluna]); {mostrar o elemento linha e coluna da matriz}
End;
End;
11. Exercícios
11) Crie um módulo que informa qual o menor número de uma matriz
20x40 de números inteiros (fica a cargo do programa carregar esta
matriz com números inteiros);
12) Uma matriz de caracteres 3x3 foi utilizada para armazenar uma
partida de jogo da velha. Os caracteres ‘O’ e ‘X’ foram utilizados para
armazenarem a jogada de cada participante. Informe na tela se o
vencedor foi o jogador ‘O’, o jogador ‘X’ ou se o resultado foi empate.
IMPORTANTE: não serão informadas partidas com dois vencedores,
apenas partidas válidas e todas as 9 casas estarão preenchidas com ‘O’ ou
‘X’;
13) Dado um vetor de 30 números inteiros sem nenhum número
repetido e uma matriz 20x20, informe quantos números existentes no
vetor também existem na matriz;
14) Dadas duas matrizes A (4x3) e B (3x4), faça um programa que
calcule a matriz C (4x4), resultante da multiplicação entre as matrizes
A e B. Pesquise e descubra como se faz multiplicação entre matrizes;