MATRIZES
Luís Charneca
[email protected]
Matrizes - Vectores (1)

Vectores nada mais são que matrizes unidimensionais.

É importante notar que vectores, matrizes bidimensionais e
matrizes de qualquer dimensão são caracterizadas por terem
todos os elementos pertencentes ao mesmo tipo de dados.

Lembre-se das strings que nada mais são que cadeias de
caracteres, ou seja vectores do tipo carácter.

Para se declarar um vector utiliza-se a seguinte forma geral:
tipo_da_variável nome_da_variável [tamanho];

Por exemplo:
int exemplo[20];
Matrizes - Vectores (2)

Na linguagem C a numeração começa sempre em zero. Isto
significa que, no exemplo acima, os dados serão indexados
de 0 a 19.

Para aceder a um dos elementos:

exemplo[0]

exemplo[1]

…

exemplo[19]
Nunca ultrapasse o limite do índice que colocou na
declaração do vector, caso o faça corre sérios riscos de o
programa não funcionar correctamente.

Matrizes - Vectores (3)
Exercício
Reescreva o exemplo, realizando a cada leitura um teste para
ver se a dimensão do vector não foi ultrapassada. Caso o
utilizador entre com 100 números, o programa deverá abortar
o ciclo de leitura automaticamente. O uso da Flag (999) não
deve ser retirado.
Matrizes - Bidimensionais (1)


Já foi visto como se declaram matrizes unidimensionais
(vectores). A forma geral da declaração de uma matriz
bidimensional é muito parecida com a declaração de um vector:
tipo_da_variável nome_da_variável [linhas],[colunas];
Não se esqueça que, na linguagem C, os índices variam de
zero ao valor declarado, menos um.
Matrizes - Bidimensionais (2)

Exemplo do uso de uma matriz:
#include <stdio.h>
int main ()
{ int mtrx [10][20];
int i,j,count;
count=1;
for (i=0;i<10;i++)
for (j=0;j<20;j++) {
mtrx[i][j]=count;
count++;
}
return(0);
}
Matrizes - Bidimensionais (3)

Preenchimento da matriz depois de executado o programa.
Matrizes – de Strings (1)

Matrizes de strings são matrizes bidimensionais porque uma
string é um vector.

Forma geral de uma matriz de strings como sendo:
char nome_da_variável [num_de_strings],[compr_das_strings];

No próximo diapositivo um exemplo de um programa que lê 5
strings e as exibe no ecrã.
Matrizes – de Strings (2)
#include <stdio.h>
int main ()
{
char strings [5][100];
int count;
for (count=0;count<5;count++)
{
printf ("\n\nDigite uma string: ");
gets (strings[count]);
}
printf ("\n\n\nAs strings digitadas foram:\n\n");
for (count=0;count<5;count++)
printf ("%s\n",strings[count]);
return(0);
}
Matrizes – Multidimensionais (1)

O uso de matrizes multidimensionais na linguagem C é
simples. A sua forma geral é:
tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN];

Uma matriz N-dimensional
qualquer outro tipo de matriz.
funciona
basicamente
como
Matrizes – Multidimensionais (2)




Por exemplo, a declaração seguinte cria uma matriz de 2x3x10
do tipo inteiro:

int multi[2][3][10];
De qualquer forma, é muito raro usar matrizes com mais de 2
dimensões, em virtude da memória necessária para guardar
todos os elementos da matriz. Por exemplo uma matriz de 4
dimensões do tipo caracter com 10x6x9x4 irá ocupar 2160
bytes na memória (10x6x9x4).
Se por acaso cada vector for incrementado em 10 (passa a
100x60x90x40) o que daria 21.6000.000 bytes.
Resumindo, uma matriz com mais de duas dimensões pode
rapidamente ficar “out of memory”.
Matrizes – Resumo (1)



Podem-se inicializar matrizes, assim como se inicializam
variáveis.
A lista de valores é composta por valores (do mesmo tipo da
variável) separados por vírgula. Os valores devem ser dados
na ordem em que serão colocados na matriz.
Exemplos de inicializações de matrizes:


float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 };
Inicialização de um vector com 6 elementos
Matrizes – Resumo (2)


Inicialização de uma matriz multidimensional onde matrx é
inicializada com 1,2,3,4 na 1ª linha, 5,6,7,8 na 2ª e 9,10,11,12
na 3ª linha.



char str [10] = { 'J', 'o', 'a', 'o', '\0' };
char str [10] = "João";
Duas formas diferentes de inicializar uma string


int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
char str_vect [3][10] = { "João", "Maria", "José" };
Inicializar um vector de strings
Matrizes – Resumo (3)

Pode-se, em alguns casos, inicializar matrizes das quais não
sabemos o tamanho a priori. É muito útil, por exemplo, quando
se inicializa uma string e não se pretende contar quantos
caracteres serão necessários.



char mess [] = "Linguagem C: flexibilidade e poder.";
int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };
No primeiro exemplo, a string mess terá tamanho 36. No
segundo exemplo o valor não especificado será 5.
Download

matrizes.