Teoria

Introdução

Eai, tudo tranquilo?

Hoje a gente vai bater um papo sobre matrizes, que você vai ver que se parece muito com o que sabemos sobre vetores.

Mas se você não lembra, relaxa! Vou explicar tudinho que você precisa pra acompanhar!

Então bora lá!

O que é uma matriz?

Quando trabalhamos com vetores, nós conseguimos colocar um conjunto de valores de forma indexada, ou seja, cada elemento tem um “endereço”, e a matriz não é muito diferente.

Nós podemos pensar numa matriz como um vetor com múltiplas dimensões. Ficou confuso? Vamos tentar entender isso melhor!

No vetor, nós utilizamos apenas um índice como referência para a posição de um valor, ou seja, o vetor é unidimensional. Já na matriz, nós utilizamos no mínimo dois índices que indicam a posição desse valor, como uma coordenada:

Perceba que, nesse vetor, nós podemos falar que possuímos o valor 7 na posição 1 , mas quando olhamos a matriz, não podemos dizer só com uma coordenada.

Isso ocorre por que o valor 7 possui dois índices para indicar a sua posição, o 0 e o 1 , que indicam, respectivamente, a linha e a coluna em que o 7 se encontra. Como nessa matriz, precisamos de dois índices para cada valor armazenado, dizemos que ela é um array bidimensional.

Uma matriz, ou um array multidimensional, é um conceito muito utilizado em jogos do tipo rpg maker pra desenvolver o mapa do jogo. Um exemplo disso, é o jogo Pokémon Red and Blue:

O mundo do jogo se baseia num mapa 2D, repleto de imagens que se repetem de forma a criar uma paisagem. Vamos pegar um pequeno pedaço do mapa e analisá-lo mais de pertinho:

Para criar essa parte do mapa, foram utilizadas imagens diferentes e elas foram organizadas em posições específicas. Podemos associar cada imagem dessa a um número:

E então associar sua posição no mapa a uma posição dentro de uma matriz de duas dimensões. Fazendo essa associação, podemos representar essa parte do mapa como a seguinte matriz:

Dessa forma, é possível desenvolver os mapas de muitos jogos 2D, como pacman, pokemon, final fantasy e outros!

Declarando uma matriz

Agora vamos partir para uma parte mais prática e aprender a declarar uma matriz para usá-la no nosso código.

A forma de declararmos uma matriz é bem semelhante a como declaramos um vetor. Para início, nós vamos precisar saber o tipo de dado que será armazenado dentro dessa matriz, o nome da matriz e o tamanho máximo de cada dimensão da matriz. Para começarmos, vamos ver como declaramos uma matriz de duas dimensões:

T i p o   d o   d a d o             n o m e   d o   m a t r i z d i m e n s ã o   1   [ d i m e n s ã o   2 ] ;

Dentro dos colchetes, vamos colocar o tamanho de cada dimensão da matriz, ou seja, a quantidade máxima de valores que vamos armazenar naquela dimensão.

Para declararmos a matriz que usamos para o pedaço do mapa do jogo ali em cima, usamos:

Começamos com i n t , já que os elementos são todos números inteiros.

Chamamos a matriz de m a p a e o [ 2 ] e [ 3 ] surgem, pois a primeira dimensão, que representa as linhas da matriz, possui duas posições, e a segunda dimensão, que representa as colunas, possui 3 posições.

Para utilizar um array com mais dimensões, basta mantermos o padrão e colocarmos o tamanho das outras dimensões entre colchetes:

T i p o   d o   d a d o         n o m e   d a   m a t r i z   t a m a n h o   d i m e n s ã o 1   … [ t a m a n h o   d a   d i m e n s ã o   n ] ;

Agora que já sabemos o que são matrizes e como declaramos elas em C++, vamos partir para as questões de fixação!

O que é uma matriz?

Declarando uma matriz

Exercícios Resolvidos

Exercício Resolvido #1

No código a seguir, indique onde é declarada uma matriz e onde é declarado um vetor.

Passo 1

Eai, tudo tranquilo?

Para essa questão, basta conhecermos como um vetor e uma matriz são declaradas e associarmos ao que está sendo declarado nas linhas 3 e 4.

Primeiramente, vamos relembrar como declaramos um vetor. Para declararmos um vetor, usamos a seguinte sintaxe:

T i p o   d o   d a d o                 n o m e   d o   v e t o r   t a m a n h o   d o   v e t o r   ;

Perceba que essa é exatamente a sintaxe usada na linha 4, portanto, temos B , como um vetor.

Passo 2

Vamos analisar a sintaxe usada para declarar uma matriz:

T i p o   d o   d a d o             n o m e   d o   m a t r i z d i m e n s ã o   1   [ d i m e n s ã o   2 ] ;

Na linha 3, percebemos que A está sendo declarado dessa mesma maneira, portanto, ele é uma matriz.

Comparando as duas sintaxes, é possível perceber que a única diferença consiste na quantidade de colchetes que são usados quando vamos declarar um vetor ou uma matriz, o que se deve a quantidade de dimensões de cada um. Como um vetor é unidimensional, usamos um único colchete para informar a quantidade de dados máxima que esse vetor pode assumir. Já se tratando de matrizes, temos mais de uma dimensão, necessitando informar o tamanho de cada dimensão entre colchetes.

Resposta

  • Linha 3: Matriz
  • Linha 4: Vetor

Exercício Resolvido #2

Um colega de faculdade que estava com dificuldades no assunto de matrizes, pede a sua ajuda com um erro no código em que ele estava trabalhando. Encontre o erro cometido ao tentar declarar uma matriz no código a seguir e o corrija.

Passo 1

Fala aí, tudo tranquilo?

Nessa questão, basta usarmos o que já sabemos sobre a sintaxe usada para declarar uma matriz e compararmos com o que está nesse código.

Nós sabemos que, para declararmos um array bidimensional, usamos:

T i p o   d o   d a d o             n o m e   d o   m a t r i z d i m e n s ã o   1   [ d i m e n s ã o   2 ] ;

Na linha 3 do código, temos:

i n t   M 2 2 ;

Nesse caso, percebemos que foi utilizado parênteses no lugar de colchetes para indicar o tamanho das dimensões da matriz, o que consiste num erro de sintaxe! O correto seria:

i n t   M 2 2 ;

Resposta

Exercício Resolvido #3

Imagine que você está programando em C++ e encontra a seguinte matriz:

Faça um código em C++ para declarar essa matriz.

Passo 1

Fala ae, tudo beleza?

Nesse caso, vamos precisar de duas informações para declararmos essa matriz:

  • O tipo de dado que será armazenado
  • Tamanho das suas dimensões.

No caso da matriz A , percebemos que há somente valores inteiros dentro dela, portanto, podemos declará-la como int. Como ela tem 2 linhas e 3 colunas, sabemos que ela é uma matriz 2x3.

Passo 2

Vamos agora fazer um código para declararmos essa matriz. Começamos inicializando a função m a i n ( ) e logo em seguida declaramos a matriz usando os dados que obtemos no item anterior:

Resposta

Exercício Resolvido #4

Você está trabalhando num projeto em C++ para automatizar algumas operações do setor financeiro da sua empresa. Para isso, você precisa trabalhar com uma tabela de dados que possui o ID de cada funcionário e o seu respectivo salário. Com os seus conhecimentos de programação, você resolve criar uma matriz para armazenar os dados dessa tabela. Como você declara essa matriz?

Obs.: A tabela possui no máximo 200 valores de ID, com um valor de salário atrelado a cada um deles.

Exemplo de tabela:

Passo 1

Fala ae, tudo beleza?

Nessa questão, o principal é entendermos como vamos trabalhar com essa tabela no formato de uma matriz. Para isso, podemos interpretar esse tipo de tabela como uma matriz de duas colunas, onde em cada linha vai o valor de um ID e um valor de salário.

Como nos foi dito que a tabela possui no máximo 200 valores de ID, podemos compreender isso como uma quantidade de 200 linhas para a nossa matriz. Com isso, já sabemos a quantidade de linhas e colunas que vamos precisar usar no momento de declararmos a nossa matriz.

Passo 2

Como essa matriz precisa admitir valores numéricos tanto referentes a ID (o que normalmente são valores inteiros) quanto referentes a um salário (podem ser reais não inteiros) nos é conveniente declarar essa matriz como f l o a t ou d o u b l e . Nesse caso, vamos optar por utilizar o f l o a t .

Dessa forma, teríamos no nosso código:

Resposta

Exercício Resolvido #5

Em um jogo de xadrez, utiliza-se um tabuleiro 8x8 para posicionamento das peças.

Imagine que você precisa recriar um jogo de xadrez usando um programa em C++. Com os seus conhecimentos sobre matrizes, você decide refazer o tabuleiro como uma matriz e as peças como os valores armazenados nessa matriz. Sabendo que cada peça será representada por uma letra, faça um código declarando essa matriz.

Passo 1

Fala ae, tudo tranquilo? Então bora lá!

Nessa questão a gente encontra algo que é bastante comum em jogos 2D, que seria a interpretação do cenário ou até mesmo outros fatores da jogabilidade como uma matriz.

Como queremos representar o cenário como uma matriz, podemos fazer cada quadrado do tabuleiro como um local da matriz possível de ser receber um valor (que seria o equivalente a receber uma peça). Sabendo que um tabuleiro de xadrez tem a dimensão 8x8, basta declararmos uma matriz com 8 linhas e 8 colunas.

Além disso, como foi dito que as peças serão representadas por letras, podemos declarar a matriz como um c h a r .

Passo 2

Com base na análise do passo anterior, podemos partir para o código e declararmos essa matriz.

Para termos um código um pouco mais completo, podemos deixar essa matriz declarada dentro da m a i n ( ) .

Resposta

Exercício Resolvido #6

Imagine que você está elaborando um jogo e, para manipular as imagens que vão aparecer na tela, você mapeia cada pixel da janela do jogo numa matriz bidimensional.

Considerando que a janela do jogo terá uma dimensão de 1080 por 720 pixels e que podemos representar cada pixel como um número inteiro, declare essa matriz.

Passo 1

Eai, tudo beleza?

Nessa questão, nós temos que mapear uma tela e representa-la como uma matriz. Para isso, vamos pensar que cada pixel da nossa tela é um elemento dessa matriz. Com isso, é possível perceber que precisamos de uma matriz de 720 linhas e 1080 colunas. Sabendo disso, podemos partir para o nosso código.

Passo 2

Como é dito no enunciado que cada pixel pode ser representado por um número inteiro, vamos declarar essa matriz como i n t . Dessa forma, temos:

Resposta

Exercício Resolvido #7

Explique como declarar uma matriz em C++ e dê um exemplo.

Passo 1

Eai, tudo tranquilo contigo?

Para declararmos uma matriz em C++, devemos especificar 4 coisas:

  • Tipo de dado que será armazenado.
  • Nome que será utilizado como referência.
  • A quantidade de dimensões.
  • O tamanho de cada dimensão.

Para isso, nós usamos a seguinte sintaxe:

T i p o   d o   d a d o         n o m e   d a   m a t r i z   t a m a n h o   d i m e n s ã o 1   … [ t a m a n h o   d a   d i m e n s ã o   n ] ;

A quantidade de colchetes que utilizamos após o nome da matriz determina a quantidade de dimensões dessa matriz.

Passo 2

Agora, vamos dar um exemplo de uma matriz. Para isso, vamos usar como exemplo uma matriz 3 × 3 :

Para declararmos uma matriz 3 × 3 de inteiros, fazemos:

Resposta

T i p o   d o   d a d o         n o m e   d a   m a t r i z   t a m a n h o   d a   d i m e n s ã o 1   … [ t a m a n h o   d a   d i m e n s ã o   n ] ;

Exemplo:

Exercício Resolvido #8

O cubo mágico é um problema muito famoso que pode ser resolvido por meio de um algotítmo. Suponha que você esteja fazendo um programa no qual necessite representar um cubo mágico gigante 11 × 11 × 11 . Declare um array multidimensional que pudesse representar esse cubo. Considere que os elementos desse array serão do tipo char.

Passo 1

Eai, tudo beleza?

Nessa questão, nós vamos ter que sair um pouco do padrão de 2 dimensões, pois estamos tratando de um cubo, ou seja, precisaremos de 3 dimensões. Além disso, é preciso ter atenção no tamanho de cada dimensão. Como foi dito no enunciado, vamos representar um cubo 11 × 11 × 11 . Para isso, precisamos declarar um a r r a y tridimensional onde cada dimensão terá tamanho 11 .

Passo 2

Como é dito no enunciado, cada elemento desse cubo pode ser representado por um c h a r . Sabendo disso e das informações do passo anterior, já podemos declarar o nosso a r r a y :

Resposta