matrizes - usp · matrizes uma matriz e uma vari avel composta bidimensional. voc^e pode pens a-la...

30
Matrizes Marina Andretta ICMC-USP 17 de abril de 2017 Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 1 / 30

Upload: others

Post on 25-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Marina Andretta

ICMC-USP

17 de abril de 2017

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 1 / 30

Page 2: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Uma matriz e uma variavel composta bidimensional.

Voce pode pensa-la como um vetor em que cada posicao armazena umoutro vetor.

Para declarar uma matriz, precisamos dizer quantas linhas e quantascolunas a matriz tem e o tipo de dados que ficara armazenado em cadauma de suas posicoes.

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 2 / 30

Page 3: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Em pseudo-codigo, declaramos uma matriz da seguinte forma:

<tipo> v[<num.linhas>][<num.colunas>]

Em linguagem C:

<tipo> v[<num.linhas>][<num.colunas>];

Em ambos os casos, <tipo> e o tipo de dado que sera armazenado emcada posicao da matriz, <num.linhas> e o numero de linhas da matriz e<num.colunas> e o numero de colunas da matriz.

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 3 / 30

Page 4: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Exemplos de declaracao de matrizes, em pseudo-codigo, sao:

inteiro mat[3][5]

real mat[2][7]

caracter mat[10][3]

logico mat[100][89]

Em linguagem C, as mesmas matrizes sao declarados da seguinte forma:

int mat[3][5];

float mat[2][7];

char mat[10][3];

int mat[100][89];

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 4 / 30

Page 5: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Quando declaramos uma matriz usando

inteiro mat[3][5]

em pseudo-codigo ou

int mat[3][5];

em linguagem C, o que estamos fazendo e alocar na memoria 15 espacospara variaveis inteiras, um seguido do outro. Na memoria, primeiramenteficam os elementos da primeira linhas, depois os da segunda e assim pordiante.

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 5 / 30

Page 6: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Cada um destes espacos sera acessado usando um ındice correspondente alinha e outro correspondente a coluna da matriz.

0 1 2 3 4

0mat 1

2

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 6 / 30

Page 7: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Matrizes

Por exemplo, se queremos guardar o valor 7 na posicao 1 × 3 da matrizmat, escrevemos, em pseudo-codigo,

mat[1][3] ← 7

Em linguagem C, escrevemos

mat[1][3] = 7;

O efeito disso e

0 1 2 3 4

0mat 1 7

2

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 7 / 30

Page 8: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Exemplo de um algoritmo completo: em pseudo-codigo

programa matriz

declaracoesreal matriz[2][3]inteiro i,j

inicioescreva(‘‘Digite os elementos da matriz: ’’)

para i ← 0 ate 1 passo 1

para j ← 0 ate 2 passo 1

leia(matriz[i][j])fimpara

fimparapara i ← 0 ate 1 passo 1

para j ← 0 ate 2 passo 1

escreva(matriz[i][j], ‘‘ ’’)

fimparaescreva(‘‘\n’’)

fimpara

fim

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 8 / 30

Page 9: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Vamos simular a execucao do algoritmo, supondo que o usuario digitou osnumeros 1, 2, 3, 4, 5 e 6. Depois da declaracao das variaveis, temos

i =

j =

0 1 2

matriz 01

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 9 / 30

Page 10: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

O primeiro laco se inicia, com o contador i comecando com valor 0.

i = 0

j =

0 1 2

matriz 01

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 10 / 30

Page 11: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

O segundo laco se inicia, com o contador j comecando com valor 0.

i = 0

j = 0

0 1 2

matriz 01

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 11 / 30

Page 12: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Depois de lido o primeiro valor (1), temos

i = 0

j = 0 1

0 1 2

matriz 0 11

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 12 / 30

Page 13: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Depois de lido o segundo valor (2), temos

i = 0

j = 0 1 2

0 1 2

matriz 0 1 21

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 13 / 30

Page 14: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Depois de lido o terceiro valor (3), temos

i = 0

j = 0 1 2 3

0 1 2

matriz 0 1 2 31

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 14 / 30

Page 15: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco interno se encerra e continuamos a execucao dosegundo laco. Incrementamos em 1 o contador i:

i = 0 1

j = 0 1 2 3

0 1 2

matriz 0 1 2 31

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 15 / 30

Page 16: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

O segundo laco se inicia novamente, fazendo com que o contador j sejadefinido como 0:

i = 0 1

j = 0 1 2 3 0

0 1 2

matriz 0 1 2 31

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 16 / 30

Page 17: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Depois de lido o quarto valor (4), temos

i = 0 1

j = 0 1 2 3 0 1

0 1 2

matriz 0 1 2 31 4

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 17 / 30

Page 18: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Depois de lido o quinto valor (5), temos

i = 0 1

j = 0 1 2 3 0 1 2

0 1 2

matriz 0 1 2 31 4 5

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 18 / 30

Page 19: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Depois de lido o sexto valor (6), temos

i = 0 1

j = 0 1 2 3 0 1 2 3

0 1 2

matriz 0 1 2 31 4 5 6

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 19 / 30

Page 20: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco interno se encerra o laco externo continua a serexecutado. O contador i e incrementado de 1.

i = 0 1 2

j = 0 1 2 3 0 1 2 3

0 1 2

matriz 0 1 2 31 4 5 6

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 20 / 30

Page 21: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0

j = 0 1 2 3 0 1 2 3 0

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 21 / 30

Page 22: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0

j = 0 1 2 3 0 1 2 3 0 1

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 22 / 30

Page 23: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0

j = 0 1 2 3 0 1 2 3 0 1 2

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 23 / 30

Page 24: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0

j = 0 1 2 3 0 1 2 3 0 1 2 3

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 24 / 30

Page 25: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0 1

j = 0 1 2 3 0 1 2 3 0 1 2 3 0

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

4

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 25 / 30

Page 26: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0 1

j = 0 1 2 3 0 1 2 3 0 1 2 3 0 1

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

4 5

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 26 / 30

Page 27: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0 1

j = 0 1 2 3 0 1 2 3 0 1 2 3 0 1

2

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

4 5 6

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 27 / 30

Page 28: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0 1

j = 0 1 2 3 0 1 2 3 0 1 2 3 0 1

2 3

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

4 5 6

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 28 / 30

Page 29: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Teste de mesa

Neste ponto, o laco externo tambem se encerra. Entao, temos o seguinte:

i = 0 1 2 0 1 2

j = 0 1 2 3 0 1 2 3 0 1 2 3 0 1

2 3

0 1 2

matriz 0 1 2 31 4 5 6

Tela:

1 2 3

4 5 6

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 29 / 30

Page 30: Matrizes - USP · Matrizes Uma matriz e uma vari avel composta bidimensional. Voc^e pode pens a-la como um vetor em que cada posi˘c~ao armazena um outro vetor. Para declarar uma

Exemplo do mesmo algoritmo completo: em linguagem C

int main () {float matriz[2][3];int i,j;

printf(‘‘Digite os elementos da matriz: ’’);

for (i = 0; i < 2; i++) {for (j = 0; j < 3; j++) {

scanf(‘‘%f’’, &matriz[i][j]);

}}for (i = 0; i < 2; i++) {

for (j = 0; j < 3; j++) {printf(‘‘%f ’’, matriz[i][j]);

}printf(‘‘\n’’);

}return(0);

}

Marina Andretta (ICMC-USP) sme0230-IPC 17 de abril de 2017 30 / 30