Matrizes

Programação Estruturada

Victor S. Portella

UFABC

2026-10-06

Matrizes

Matrizes

Como declarar uma matriz:

<tipo> <nome>[<n_linhas>][<n_colunas>]; 


Exemplos:

int matriz[4][3];

double matriz2[4][3];

Matrizes

Acessando valores em uma matriz:

matriz[2][1]


Lendo/imprimindo um elemento da matriz:

int matriz[4][3];

scanf("%d", &matriz[2][1]);
printf("%d\n", matriz[2][1]);

Assim como em vetores, os indices das linhas e colunas da matriz começam de 0.

Percorrendo uma Matriz

int matriz[4][3];
int i, j;

for (i = 0; i < 4; i++)
    for (j = 0; j < 3; j++)
        matriz[i][j];

Percorrendo uma Matriz - Exemplo

Qual o conteúdo da matriz após a execução do seguinte programa?


int matriz[4][3];
int i, j;
int c = 0;

for (i = 0; i < 4; i++)
    for (j = 0; j < 3; j++)
        matriz[i][j] = c++;
0   1   2
3   4   5
6   7   8
9   10  11

Um pouco mais sobre percurso em matrizes


Como fazemos o código para percorrer uma matriz uma coluna por vez?

Basta inverter a ordem dos laços for

int matriz[4][3];
int i, j;
int c = 0;

for (j = 0; j < 3; j++)
    for (i = 0; i < 4; i++)
        matriz[i][j] = c++;

Matriz é um vetor de vetores

Internamente, a matriz é um vetor (unidimensional)

Cada elemento é outro vetor (unidimensional).


Como m[i][j] é armazenado?

Em C, uma matriz é armazenada linha por linha na memória de forma contígua.

A matriz int m[3][4] 3 linhas e 4 colunas.

Para acessar m[i][j], C precisa calcular a posição no “vetorzão”:

posição = i * número_de_colunas + j

No exemplo int m[3][4]:

m[2][1]  ->  posição = 2 * 4 + 1 = 9

Exemplo

Aplicar função que retorna soma dos valores de um vetor linha a linha de uma matriz.

int soma_vetor(int vetor[], int comp) {
    int soma = 0;
    int i;

    for (i = 0; i < comp; i++)
        soma += vetor[i];

    return soma;
}

Exemplo

#include <stdio.h>

int main() {
    int m[3][4] = { {3,4,5,5}, {1,3,6,5}, {8,1,2,5} };

    int i;
    for (i = 0; i < 3; i++)
        printf("%d\n", soma_vetor(m[i], 4));

    return 0;
}

Cada uma das linhas da matriz é um vetor!

Passagem de matriz como parâmetro

Para passar uma matriz como parâmetro, é necessário especificar ao menos a segunda dimensão.

Impossível calcular posição no “vetorzão” caso contrário!

É possível especificar as duas dimensões também.


void funcao(int n_linhas, int n_colunas,
            double m[n_linhas][n_colunas]);

void funcao(int n_colunas,
            double m[][n_colunas]);

Exercício

Criar uma função que recebe uma matriz e aplica a função de soma de valores de linha que acabamos de implementar.

A função retornará a soma de todos os elementos.

Referência

Slides originais: Prof. Paulo Henrique Pisani, Strings e Matrizes, Programação Estruturada, UFABC, setembro/2021.