Matrizes (Vectores Bidimensionais)
► Até
agora apenas operávamos com vectores
unidimensionais
0
1
2
3
4
A partir de agora vamos também operar com
vectores bidimensionais ou
MATRIZES
1
Matrizes (Vectores Bidimensionais)
► As
Matrizes não são mais do que Arrays
bidimensionais, ou seja, arrays com duas
dimensões. A sua representação
esquemática é a seguinte:
0
1
2
3
0
1
2
3
2
Matrizes (Vectores Bidimensionais)
0
1
2
3
0
1
2
3
►O
esquema representa uma matriz de 4 linhas e
4 colunas.
3
Matrizes (Vectores Bidimensionais)
► Declaração
de uma Matriz em C:
tipo nome_variavel[nr_de_linhas][nr_de_colunas];
 Onde:
► tipo:
representa o tipo de dados dos elementos da matriz;
► nome_variavel: representa o nome da matriz;
► nr_de_linhas: representa o nrº de linhas da matriz (tem de ser
um valor inteiro)
► nr_de_colunas: representa o nrº de counas da matriz (tem de
ser um valor inteiro)
4
Matrizes (Vectores Bidimensionais)
► Exemplo
da declaração de uma matriz:
 int matriz_Exemplo[2][4];
► int:
tipo de cada elemento da matriz;
► Matriz_Exemplo: nome da matriz;
► 2: número de linhas da matriz;
► 4: número de colunas da matriz;
0
1
2
3
0
1
5
Matrizes (Vectores Bidimensionais)
► Como
podemos aceder a cada um dos elementos
de uma Matriz?
►Resposta:
Através dos seus índices.
int matriz_Exemplo[2][4];
0
1
2
3
matriz_Exemplo[0][2]=33;
0
12 20 33 50
matriz_Exemplo[1][0]=14;
1
14
matriz_Exemplo[1][3]=80;
3
21 80
matriz_Exemplo[1][4]= ERRO!!!
6
Matrizes (Vectores Bidimensionais)
►
Os índices da matriz começam sempre por 0 (zero)
Os índices de uma matriz com x linhas e y colunas variam
sempre entre 0 e x-1 e 0 e y-1 , respectivamente.
►
Exemplo - matriz com 2 linhas e 4 colunas:
►
int matriz_Exemplo[2][4];
0
Índice das linhas
0
1
2
3
Índice das
colunas
1
7
Matrizes (Vectores Bidimensionais)
int matriz_Teste[3][4];
0
5
0
2
3
0
40
1
2
1
50
15
matriz_Teste[2][3]=15;
matriz_Teste[1][1]=40;
matriz_Teste[2][0]=matriz_Teste[1][1]+10;
matriz_Teste[0][3]=0;
matriz_Teste[ matriz_Teste[0][3] ] [ 1 ] = 5;
8
Matrizes (Vectores Bidimensionais)
► Inicialização
de matrizes
 Uma matriz pode ser inicializada com um
conjunto de valores:
 int matriz_X[3][2]={{1,2},{3,4},{5,6}};
1
3
5
2
4
6
9
Matrizes (Vectores Bidimensionais)
► Leitura
de valores para uma matriz (em ciclo):
#include<stdio.h>
#include<stdlib.h>
Inicialização da matriz.
# define LINHAS 3
não
# define COLUNAS 2
main()
{
int matriz_Teste[LINHAS][COLUNAS]={{0,0},{0,0},{0,0}};
int i,j;
é obrigatório.
for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("Introduza o valor para a linha %d e coluna %d: ", i, j);
scanf("%d",&matriz_Teste[i][j]);
}
}
}
10
Matrizes (Vectores Bidimensionais)
► Impressão
dos valores de uma Matriz:
…
for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("%d\t",matriz_Teste[i][j]);
}
puts("\n");
}
…
11
Matrizes (Vectores Bidimensionais)
► Vantagens
na utilização de matrizes:
 Permitem manter os valores em memória;
 Reduzem a quantidade de variáveis;
► Cuidado:
 Quer durante a compilação, quer durante a execução,
não é verificado se os índices usados estão de acordo
com a dimensão declarada da matriz. É por isso possível
declarar uma matriz com, por exemplo, 3 linhas e 3
colunas, e tentar depois aceder à coluna 4 da linha 7, o
que levará a que ocorram problemas de acesso à
memória.
12
#include<stdio.h>
#include<stdlib.h>
# define LINHAS 3
# define COLUNAS 2
main()
{
/* declaração e inicilaização da matriz */
int matriz_Teste[LINHAS][COLUNAS]={{0,0},{0,0},{0,0}};
/* declaração de variáveis que vão percorrer os índices da matriz*/
int i,j;
/* ciclo para a leitura de dados para a matriz*/
for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("Introduza o valor para a linha %d e coluna %d: ", i, j);
scanf("%d",&matriz_Teste[i][j]);
}
}
/* ciclo para a impressão dos dados da matriz*/
for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("%d\t",matriz_Teste[i][j]);
}
puts("\n");
}
system("pause");
}
13
Download

ppt02