Sunteți pe pagina 1din 5

APIB-12

MATRIZES
Uma matriz um array de duas dimenses. Uma matriz til por exemplo para armazenar
tabelas, fazer clculos matemticos, fazer desenhos, resolver problemas, etc.
Imagina que queremos guardar no computador uma lista de alunos com suas respetivas
notas em todas as disciplinas lecionadas durante o ano. Por exemplo a tabela seguinte
mostra uma lista de 10 alunos e as notas em 8 disciplinas.

Joo
Pedro
Gabriela
Roberto
Paulo
Gisela
Vera
Jorge
Paulo
Flvio

d1
14

d2
14

d3
16

d4
18

d5
10

d6
12

d7
12

d8
18

mdia
14.25

Pretende-se fazer um programa para armazenar esta tabela e depois poder calcular por
exemplo a mdia de todas as notas de todos os alunos.
Em Pascal, uma matriz definida de forma muito semelhante a um vetor:
Var notas : array [1..10,1..8] of integer;

O nmero 10 indica o nmero mximo de linhas e o nmero 8 indica o nmero mximo de


colunas. Se no soubermos com antecedncia qual o tamanho da matriz necessria,
podemos reservar um nmero grande de linhas e colunas.
Para tratar dados deste tipo, organizados na forma da tabela acima, no possvel faz-lo
coma nica matriz, pois no se pode ter dados de tipos diferentes numa nica estrutura.
Assim, vamos armazenar as notas numa matriz de nmeros inteiros.
Exemplo 2: Um programa que l as notas dos alunos, calcula as mdias, guarda-as num
vetor e mostra os resultados.
Program Turma;
{Esta matriz recebe no maximo 10 alunos e 8 disciplinas}
Var notas: array [1..10,1..8] of integer;
Media: array [1..8] of real;
Soma: real;
i,j,N,D: integer;
Begin
Write('NUMERO DE ALUNOS: ');
Readln(N);
Write('NUMERO DE DISCIPLINAS: ');
Readln(D);
For i:=1 to N do
FM2014

APIB-12
Begin
For j:=1 to D do
Begin
{ler as notas dos alunos em cada disciplina}
Write('ALUNO:',i,' :::: NOTA[',j,']=');
Readln (notas[i][j]);
End;
End;
{Processamento de Dados}
For i:=1 to N do
Begin
Soma:=0; {inicializa a soma das notas do aluno i}
For j:=1 to D do
Begin
{adiciona a soma, as notas da disciplina j}
Soma:=Soma + notas[i][j];
End;
Media[i]:=Soma/D;
End;
{Saida de Resultados}
For i:=1 to N do
Begin
Writeln('NOTA MEDIA DO ALUNO ',i,' : ',Media[i]);
End;
End.

Exemplo 3: Um programa que l os nomes dos alunos, as respetivas notas, calcula as


mdias, guarda-as num vetor e mostra os resultados.

FM2014

APIB-12
Vamos agora modificar o programa anterior para tambm armazenar os nomes dos alunos
num vetor de strings.
Notas[i,j]
Nomes[i]
1
2
3
4
5

Z
Jota
Rui
Kaka
Xana

1
2
3
4
5

10

12

15

14

13

17

O programa dever ler os nomes dos alunos para um vetor de strings e as notas para uma
matriz de inteiros.
Program Turma;
Var notas: array [1..10,1..8] of integer;
Media: array [1..8] of real;
aluno: array [1..10] of string;
Soma: real;
i,j,N,M: integer;
Begin
Write('NUMERO DE ALUNOS: ');
Readln(N);
Write('NUMERO DE DISCIPLINAS: ');
Readln(M);
For i:=1 to N do
Begin
Write('NOME DO ALUNO ',i,' : ');
Readln(aluno[i]);
For j:=1 to M do
Begin
Write('DISCIPLINA: ',j,' :: NOTA[',j,']=');
Readln (notas[i][j]);
End;
End;
For i:=1 to N do
Begin
Soma:=0;
For j:=1 to M do
Begin
Soma:=Soma + notas[i][j];
End;
Media[i]:=Soma/M;
End;
For i:=1 to N do
Begin
Writeln('MEDIA DO ALUNO ',aluno[i],' : ',Media[i]);
End;
End.

FM2014

APIB-12
Um exemplo de execuo do cdigo anterior:

Exerccios propostos
1- O misterioso algarismo do bilhete de identidade. J reparou que o seu B.I./C.C. tem
um dgito suplementar depois do seu nmero. Para que serve? Trata-se apenas de um
check digit (dgito de controlo) que atesta a veracidade do nmero do BI. Como o
calcular?
O algoritmo simples. Basta multiplicar cada algarismo que compe o nmero do BI pelo valor
da sua posio, sabendo que o algarismo de controlo ocupa a casa 1, e o algarismo que est sua
esquerda ocupa a casa 2, e assim sucessivamente.
No segundo exemplo ao lado, o
nmero 9651593-7, (7 o
algarismo de controlo) se
aplicarmos o algoritmo de
controlo, ficar assim:
9x8+6x7+5x6+1x5+5x
4 + 9 x 3 + 3 x 2 = 72 + 42 + 30
+ 5 + 20 + 27 + 6 = 202
202 11 = 18,364 (NO D
RESTO ZERO), mas se lhe
adicionarmos 7, j d!
202 + 7 = 209
209 11 = 19 e resto zero!!!

Elabora um programa para calcular o dgito de controlo de qualquer BI.


2- Palimdromes - Uma cadeia de caracteres uma palndrome se a sequncia dos
caracteres da cadeia da esquerda para direita igual sequncia de caracteres da
direita para esquerda.
Exemplos: ARARA, RADAR, AKASAKA, ANNA.

FM2014

APIB-12
Fazer um programa que reconhea se uma cadeia de caracteres palndrome. Usar a
funo Length(s) para saber o tamanho da cadeia s.
3- Fazer um programa que dadas duas matrizes A e B, determina a soma de A e B.
A soma de duas matrizes obtida pela soma dos elementos correspondentes de cada
matriz e o resultado colocado numa outra matriz.
Exemplo de soma de duas matrizes A e B de tamanho 3x3:
A

| 1 4 2 |
| 0 5 1 |
| 2 2 8 |

| 1 2 3 |
| 1 0 1 |
| 2 3 2 |

| 2 6 5 |
| 1 5 2 |
| 4 5 10|

4- Escreva um programa que, dada uma matriz quadrada de dimenso N, apresente:


a) A soma da sua diagonal principal;
b) A soma da sua diagonal secundria;
c) As somas das linhas;
d) As somas das colunas;
e) A soma de todos os seus elementos;

FM2014

S-ar putea să vă placă și