24 – matrizes - ubidi.ubi.pt/.../teorica_tiposestruturados-matrizes.pdf · 2008. 9. 19. · o...

29
24 – Matrizes Matrizes são vectores de duas dimensões, e de uma maneira geral são consideradas como um número (quantidade) de vectores linhas (“deitados” ). Apesar de menos comum, podemos ver também uma matriz como sendo vectores colunas (“de pé”).

Upload: others

Post on 05-Mar-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

24 – Matrizes

Matrizes são vectores de duas dimensões, e de uma maneira geral são consideradas como um número (quantidade) de vectores linhas (“deitados” ). Apesar de menos comum, podemos ver também uma matriz como sendo vectores colunas (“de pé”).

Page 2: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Declaração de um matriz:tipo nome [linhas][colunas];onde:tipo – pode ser inteiro, real ou caracter

(int, float,char) linhas – é o número de linhas (“a altura”)colunas – é o número de colunas (“a largura”)

Page 3: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

...int m [10][10];...

“é a declaração de um matriz de 10 x 10 (10 linhas por 10 colunas ) elementos inteiros”

Page 4: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

...float mat [4][8];...

“é a declaração de um matriz de 4 x 8 (4 linhas por 8 colunas) elementos reais”

Page 5: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

...char mchar [24][80];...

“é a declaração de uma matriz de 24 x 80 (24 linhas por 80 colunas ) caracteres”

Page 6: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Índices

O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente.Mas aqui teremos que utilizar 2 índices, um para a linha e um para a coluna, de maneira que possamos indicar a posição de cada um dos elementos.

Page 7: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Índices

Uma matriz de 2 x 4 elementos, tem os índices das linhas de 0 a 1 e das colunas de 0 a 3 onde os elementos são referenciados por: m [0][0] , m [0][1] , m [0][2] , m [0][3], m [1][0] , m [1][1] , m [1][2] , m [1][3] .

Page 8: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Como trabalhar com matrizes?

Como os vectores, cada elemento é uma variável (simples)!

Page 9: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

...int m [10][10];...m [0][5] = 8;m [3][3] = 10;...

Page 10: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Observação:

Para:... int m[10][10]; ...É errado!... m = 2; ...... scanf(“%d”,&m[1] ); ...Pois faltam índices!

Page 11: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

CUIDADO !!!...int m [2][2];m [2][0] = 5;m [1][2] = 10;...ESTÃO ERRADOS !!!

A matriz m só tem 2 linhas e 2 colunas, estes elementos seriam da terceira linha e da terceira coluna!

Page 12: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

25 - A utilização de repetições

Se queremos trabalhar com a matriz toda, deveremos utilizar uma repetição dentro de outra.Suponha que queremos escrever os elementos de uma matriz de 4 x 4 inteiros.

Page 13: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

i = 0

i <= 3sim

não

escreverm[i][j]

escrever“\n”

j = 0 i = i + 1

um for !!!j <= 3

j = j + 1

sim

não

e dentro mais um for !!!

Page 14: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

...for ( i = 0; i <= 3; i = i +1)

{for ( j = 0; j <= 3; j = j +1)

printf(“%d”,m[i][j]);printf(“\n”);

}...

Page 15: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Observação:

Se quisermos trabalhar com apenas uma linha ou coluna, fazemos como se fosse um vector (e a rigor é!).

Page 16: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

Leitura da segunda linha.

Page 17: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

...int m[4][4];...for ( i = 0; i <= 3; i = i +1)

{printf(“Pf o de índice %d\n”,i);scanf(“%d”,&m[1][i]);

}...

Page 18: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

Escrita da terceira coluna.

Page 19: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

...int m[4][4];...for ( i = 0; i <= 3; i = i +1)printf(“O de índice %d é %d\n”,i,m[i][2]); ...

Page 20: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

Comparação do elementos da diagonal.

Page 21: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

...int m[4][4];...for ( i = 0; i <= 3; i = i +1)

if(m[i][i] == 0) printf(“O de índice %d da diagonal é

nulo\n”,i); ...

Page 22: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

Encontrar o maior elemento de um vector de 10 elementos inteiros.

Page 23: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

i <= 9sim

não

escrever “o maior é”

maior

i = 0

maior = v[1]

simmaior = v[i]v[i] > maior

não

i = i + 1

Page 24: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

...int i, maior, v[10];...maior = v[1];for ( i = 0; i <= 9; i = i +1)

if (v[i] > maior) maior = v[i];

printf(“O maior é %d\n”,maior); ...

Page 25: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Observação:Obviamente todos os elementos do vector vjá devem ter valores no momento da comparação com a variável maior.Poderíamos escolher qualquer elemento do vector como valor inicial de maior. Ou mesmo um valor que soubéssemos ser menor do que todos do vector (exemplo se vector tivesse apenas valores positivos , o valor inicial de maior poderia ser zero ).

Page 26: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Exemplos:

Calcular a soma dos elementos da diagonal (o traço) de uma matriz de 4 x 4 reais.

Page 27: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

i <= 3sim

não

escrever “o traço é”

soma

i = 0

soma = 0

soma = soma + m[i][i] i = i + 1

Page 28: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

...int i; float m[4][4], soma;...soma = 0;for ( i = 0; i <= 3; i = i +1)

soma = soma + m[i][i];printf(“O traço é %f\n”,soma); ...

Page 29: 24 – Matrizes - UBIdi.ubi.pt/.../Teorica_TiposEstruturados-Matrizes.pdf · 2008. 9. 19. · O trabalho com matrizes é similar ao com vectores, devemos acessar os elementos individualmente

Observação:Todos os elementos da diagonal da matriz m já devem ter valores no momento de serem somados.