Você está na página 1de 32

Metodologia e Linguagem de

Programação I
Prof. George Candeia
Ciência da Computação / 2013.1
Matrizes

dimensão2

4 5 7 6 8
0 1 2 3 4
dimensão1
1 5 6 7 9
7 6 5 4 3
Matrizes
Introdução
Uma matriz, em C, nada mais é que um conjunto de vetores. Na
realidade, um vetor é uma matriz unidimensional.

A diferença entre vetores e matrizes está na quantidade de


dimensões e, por isso, na quantidade de índices que serão
utilizados para acessar cada posição da variável.

4 5 7 6 8
0 1 2 3 4
1 5 6 7 9
7 6 5 4 3
3
Matrizes
Introdução
Uma matriz, é uma estrutura de dados composta e homogênea,
pois armazena mais de um valor e todos são do mesmo tipo.

O acesso a cada parte da matriz é feito de forma independente,


pelo índice correspondente à posição que se deseja acessar.

[0][0] [0][1] [0][2] [0][3] [0][4] 4 5 7 6 8


[1][0] [1][1] [1][2] [1][3] [1][4] 0 1 2 3 4
[2][0] [2][1] [2][2] [2][3] [2][4] 1 5 6 7 9
[3][0] [3][1] [3][2] [3][3] [3][4] 7 6 5 4 3

4
Matrizes
Introdução
Cada parte da matriz ocupa uma posição consecutiva na
memória do computador.

4 5 7 6 8 2 3 4
0 1 2 3 4 7 6 5
1 5 6 7 9 12 13 3
7 6 5 4 3 41 44 65
0 1 6 2 19 12 4 6
3 4 0 0 1 2 6 77
2 7 1 14 15 17 18 25
8 8 0 0 33 57 82 61
5
Matrizes
Exemplo
Imaginemos que em um programa, precisamos armazenar o
número de inscrição e a idade de 10 pessoas. Poderíamos criar
20 variáveis do tipo int ou criar uma matriz bidimensional de
tipos inteiros. Com a matriz, apenas uma variável é declarada.

Nome da variável: inscr;


Tipo da variável: Inteiro;

101 802 234 198 001 125 500 200 345 547
18 17 25 32 28 22 19 23 27 42

6
Matrizes
Sintaxe
A sintaxe para a declaração de uma matriz em C é:
tipo nome_da_variável[dim1] [dim2]...[dimN];
Onde,
tipo: tipo dos dados que serão armazenados nas posições da
matriz;
nome_da_variavel: nome da matriz que será compartilhado por
cada parte;
dim1: quantidade de posições na dimensão 1;
dim2: quantidade de posições na dimensão 2;
dimN: quantidade de posições na dimensão N;
7
Matrizes
Exemplo
Voltando ao primeiro exemplo onde desejávamos utilizar uma
matriz bidimensional de inteiros para armazenar números de
inscrição e idades para 10 pessoas. Como ficaria essa declaração
em C?

Dessa forma, teremos uma matriz com 20 posições


armazenando valores do tipo int.
8
Matrizes
Inicialização
A inicialização de matrizes possui algumas particularidades.
Para inicializar uma matriz estática, ou seja, com uma
quantidade de posições definidas em sua declaração, é
necessário preencher o valor das posições desejadas
obedecendo à seguinte sintaxe:

9
Matrizes
Inicialização
Após a declaração e inicialização da matriz, sua estrutura de
dados ficaria da seguinte forma:

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

10
Matrizes
Inicialização
O que aconteceria se a inicialização fosse feita da seguinte
forma?

Como ficaria sua estrutura de dados?

1 2 3 4 5 6 ? ? ? ?
1 2 3 4 5 6 7 8 9 ?

11
Matrizes
Inicialização
Uma matriz pode ainda ser declarada sem especificar a
quantidade de posições da primeira dimensão, porém, se for
inicializada, o compilador irá reservar a quantidade de posições
utilizadas durante a inicialização.
Exemplo:

12
Matrizes
Inicialização
Após a declaração e inicialização da matriz, quantas posições ela
teria? Como ficaria sua estrutura de dados?

1 2 3 4 5 6 7 8 ? ?
1 2 3 4 5 ? ? ? ? ?

13
Matrizes
Inicialização
Para inicializar matrizes não-dimensionadas, somente a
dimensão mais a esquerda que pode ficar sem o valor
especificado. No exemplo a seguir, o compilador exibirá um erro!

14
Matrizes
Acesso
Após uma matriz ter sido declarada e devidamente inicializada,
como fazemos para acessar cada elemento da matriz?
Os elementos podem ser acessados através de seu índice!
Exemplo:

Como fazer para imprimir as posições (0,4) e (1,9)?


Quais valores seriam impressos?

15
Matrizes
Acesso
As posições (0,4) e (1,9) podem ser exibidas com o auxílio da
função printf();

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

16
Matrizes
Acesso
Uma outra forma de acesso para matrizes seria a utilização de
estruturas de repetição encadeadas.
Exemplo:

Qual seria a saída desse código?


17
Matrizes
Acesso
Após a execução do código, a função printf() exibirá o seguinte
conteúdo na tela:

18
Matrizes
Acesso
Para exibir todos os valores armazenados na matriz
bidimensional a seguir, podemos utilizar dois for encadeados:

19
Matrizes
Acesso
Após a execução do código, a função printf() exibirá o seguinte
conteúdo na tela:

20
Matrizes
Atribuição ou preenchimento
Para atribuir um valor a uma determinada posição da matriz,
utilizamos o índice da posição desejada.
Exemplo: Para atribuir o valor 50 à posição (1,3), o valor 30 à
posição (0,0) e o valor 25 à posição (1,7) de uma matriz
bidimensional [2][10], podemos utilizar o seguinte código:

21
Matrizes
Atribuição ou preenchimento
Após a atribuição, como ficaria a estrutura de dados da matriz?

30 ? ? ? ? ? ? ? ? ?
? ? ? 50 ? ? ? 25 ? ?

22
Matrizes
Atribuição ou preenchimento
Outra forma de atribuição seria utilizando a função scanf():

A diferença para a forma mostrada anteriormente é que com a


função scanf(), as posições são preenchidas com o que for
digitado pelo usuário!

23
Matrizes
Exemplo
Como ficaria o código para preencher uma matriz bidimensional
[3][3]?

24
Matrizes e Strings
Introdução
Podemos armazenar strings em uma matriz bidimensional.
Exemplo: Para armazenar as strings “Cantor” e “Comediante”,
podemos utilizar a seguinte matriz bidimensional:

‘C’ ‘a’ ‘n’ ‘t’ ‘o’ ‘r’ ‘\0’


‘C’ ‘o’ ‘m’ ‘e’ ‘d’ ‘i’ ‘a’ ‘n’ ‘t’ ‘e’ ‘\0’

25
Matrizes e Strings
Inicialização
Para inicializar a matriz com as strings “Cantor” e “Comediante”,
poderíamos utilizar os seguintes códigos:

26
Matrizes e Strings
Captura e Exibição
Para capturar e/ou exibir uma string, podemos utilizar as funções
básicas de entrada e saída de dados. Vejamos como elas se
comportam com strings e matrizes:
Funções de entrada:

scanf();
gets();

27
Matrizes e Strings
Captura e Exibição
Funções de entrada: scanf() e gets()

28
Matrizes e Strings
Captura e Exibição
Para exibir uma string contida em uma matriz, podemos utilizar
as funções de saída padrão. Vejamos como utiliza-las da melhor
forma:

Funções de saída:

printf();
puts();
29
Matrizes e Strings
Captura e Exibição
Função de saída: printf()

30
Matrizes e Strings
Captura e Exibição
Função de saída: puts()

31
Matrizes e Strings
Captura e Exibição
Função de saída: printf()

32

Você também pode gostar