Buscar

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

- -1
ALGORITMOS DE PROGRAMAÇÃO
CAPÍTULO 7 - VETORES E MATRIZES
Jackson Luis Schirigatti
- -2
Objetivos do capítulo
Ao final deste capítulo, você será capaz de:
• Elaborar algoritmos com estruturas de dados do tipo vetores e matrizes.
Tópicos de estudo
• Conceito de estruturas de dados
• Variáveis compostas homogêneas
• Variáveis compostas unidimensionais e multidimensionais
• Vetores 
• Manipulação de vetores
• Exemplos dirigidos
• Matrizes
• Manipulação de Matrizes
• Exemplos dirigidos
• Exercícios de fixação
Contextualizando o cenário
As estruturas de dados estáticas compostas homogêneas, dentro dos códigos de programação e dos
pseudocódigos, são fundamentais para a organização, armazenamento em memória principal e para o acesso
direto aos dados. Através desses recursos estruturais, a manipulação dos dados é expandida, flexibilizando o
desenvolvimento das regras de negócios dentro do código de programação.
Uma das características das estruturas de dados estáticas compostas homogêneas é a sua homogeneidade, ou
seja, o uso de elementos do mesmo tipo de dados. Isto afere uma utilização padronizada dos elementos.
Diante desse cenário, qual a relação das estruturas de dados estáticas compostas homogêneas com os programas
de computadores e com os sistemas computacionais?
7.1 Conceito de estruturas de dados
As estruturas de dados são mecanismos estruturais propícios para a manipulação de dados para a memória,
capazes de criar uma indexação dos elementos ou coleção de objetos. São utilizadas nas mais variadas aplicações
por meio dos pseudocódigos e, consequentemente, pelos códigos de programação, podendo ser estruturas
 ou Você poderá conhecê-las clicando a seguir.dinâmicas estruturas estáticas. 
Estruturas
dinâmicas
As estruturas dinâmicas mudam de forma e tamanho com o tempo.
Estruturas
estáticas
As estruturas estáticas, por sua vez, não podem alterar o tamanho e posição de seus
elementos, ou seja, não é possível realizar novas inserções ou exclusões de elementos na
coleção pré-definida, pois a definição das estruturas estáticas ocorre de maneira prévia e não
durante a sua execução.
Desse modo, somente nas estruturas dinâmicas se realiza novas inserções e exclusões de elementos. Contudo, as
estruturas estáticas, segundo Brookshear (2013), são mais facilmente gerenciadas em comparação às dinâmicas.
Um exemplo que podemos citar é a modificação direta de um valor em uma determinada posição.
•
•
•
•
•
•
•
•
•
•
•
- -3
Outra vantagem das estruturas estáticas é que a sua coleção de objetos ou variáveis são vinculadas a células de
memória antes do início da execução de um programa, e permanecem vinculadas até o final da execução do
programa. Útil em situações em que há a necessidade dos vínculos permanecerem até o final da execução do
programa, como um histórico de dados. Essas estruturas possuem acesso direto à memória, contudo, uma
vinculação estática reduz a flexibilidade para o uso de programas recursivos e utilização de memória
compartilhada.
Veremos a seguir que as estruturas estáticas padronizam a tipagem de dados para a sua coleção de objetos.
7.1.1 Variáveis compostas homogêneas
As variáveis compostas homogêneas estáticas constituem um tipo primitivo de estrutura de dados muito utilizado
na construção de pseudocódigos para a organização de dados.
A variável é dita quando os elementos que a compõem são fixos em posicionamento de memória eestática 
localização estrutural. Essas variáveis são definidas no início do bloco de programação e uma nova inserção ou
exclusão de elementos não é possível. A inclusão somente é possível pela modificação e exclusão do conteúdo
desses elementos.
A figura a seguir ilustra uma abstração dessas estruturas na forma binária.
Representação de vetores com valores binários.
Fonte: © Oleksii Lishchyshyn / / Shutterstock.
Para Forbellone (2005, p. 69) “quando uma determinada estrutura de dados é composta de variáveis com o mesmo
tipo primitivo, temos um conjunto homogêneo de dados”. Em outras palavras, a estrutura é quandohomogênea
se considera elementos de um mesmo tipo, espécie, grupo etc. É o caso, por exemplo, de um conjunto dos
números inteiros, ou um conjunto dos números reais ou, ainda, um conjunto de caracteres.
O diagrama na sequência ilustra uma estrutura homogênea, constituída por um conjunto de variáveis homogêneas 
(A, B, C). As variáveis são elementos endereçados na memória volátil, que recebem valores através de uma
atribuição a ela (atribuição = armazenado em uma variável na memória). A memória volátil é quando os dados
estão em memória principal, ou seja, permanecem armazenados enquanto o computador está energizado (ligado
na energia elétrica).
- -4
Representação de um conjunto de variáveis que ilustra uma estrutura de dados homogênea.
Uma variável homogênea é dimensional, podendo ser composta por uma dimensão (unidimensional) ou mais de
uma dimensão (multidimensional).
Veremos a seguir como essas estruturas estáticas homogêneas estão dimensionadas em relação ao seu tamanho
de elementos e localização dos mesmos.
7.1.2 Variáveis compostas unidimensionais e multidimensionais
As variáveis compostas de uma ou de inúmeras dimensões são estruturas utilizadas nos pseudocódigos e em
linguagens modernas de programação. Vamos clicar para conhecer esses conceitos.
•
Variáveis compostas unidimensionais homogêneas
As variáveis compostas unidimensionais homogêneas, segundo Forbellone (2005, p. 69), equivalem,
de maneira abstrata, a “um edifício com um número finito de andares, representando uma estrutura
de dados, e seus andares, partições dessa estrutura”.
PAUSA PARA REFLETIR
Seria possível, em estruturas estáticas, armazenar diversos tipos de dados, como caracteres,
inteiros e reais?
•
- -5
•
Estruturas multidimensionais
Já as estruturas multidimensionais podem ser ilustradas como uma matriz (duas dimensões)
composta de linhas e colunas, ou por um cubo (tridimensional) dividido em várias linhas, colunas e
por uma determinada profundidade, como ilustra a figura na sequência.
Representação de uma estrutura multidimensional em três dimensões.
Fonte: © Aspect3D / / Shutterstock.
Além das três dimensões, não é possível uma visualização geométrica através de uma representação por desenho.
Contudo, suas estruturas multidimensionais são possíveis através do cálculo computacional e matemático. Aqui,
estudaremos somente as variáveis compostas de uma e duas dimensões, ou seja, estruturas vetoriais e matriciais.
A estrutura constituída por variáveis compostas homogêneas com uma dimensão é denominada estrutura
 ou, simplesmente, Veremos a seguir as características de um vetor.composta unidimensional vetores.
7.2 Vetores
Os vetores possuem uma representação simples no que se refere a sua visualização e armazenamento. Sua
representação é dada pelo exemplo do diagrama a seguir.
Observe que o vetor, denominado ‘números_decimais’, é uma variável composta e contém, neste exemplo, apenas
um tipo de dado: números reais, (conjunto do números reais), que são compostos pelos números inteiros e os
números decimais. Abaixo do vetor estão as numerações das posições das variáveis 1, 2, 3 até a posição 50. Essa
sequência numérica representa os índices do conjunto de variáveis. A posição 1 (l inicial) é o início do vetor e 50 (l
final) é a posição final do vetor. O dimensionamento do vetor é único, como um prédio que possui divisões ou
repartições (observado na vertical) ou um trem que possui vagões (observado na horizontal).
•
- -6
Vetor unidimensional homogêneo.
O vetor também é denominado de cuja estrutura, indexada por uma variável denominada índice, armazena, Array
dados do mesmo tipo. Quando um vetor é declarado em um pseudocódigo ou programa de computador, uma área
da memória é reservada para todos os elementos do vetor (I inicial, I final). Essa área é acessada através de um
identificador, que é o nome do vetor (PIVA JUNIOR; NAKAMITI; ENGELBRECHT; BIANCHINI, 2011). O limite de
armazenamento (I final) de um vetor é limitadoà quantidade de recursos de memória física, ou seja, é possível
dimensioná-lo de acordo com esse limite.
A declaração de um tipo de dado vetor em um pseudocódigo é dada pela sintaxe que, segundo Forbellone (2005, p.
69), apresenta a seguinte regra ilustrada pelo diagrama abaixo:
Regra sintática para definição de um tipo de estrutura vetor unidimensional homogêneo.
Fonte: FORBELLONE, 2005, p. 69 (Adaptado).
A declaração de uma determinada variável de 20 posições reais, denominada , quando aplicada avariável_exemplo
regra sintática do diagrama acima, é representada conforme o Exemplo 1. Observe que o índice inicial é de valor 1,
o índice final é de valor 20 e o conjunto de variáveis homogêneas (de 1 a 20) é do tipo de dados real. Em um
primeiro momento, é definido o tipo de estrutura de dados vetor ( ) e, em seguida, é declarada atipo_vetor_real
variável com esse tipo.
AFIRMAÇÃO
“Um vetor é uma coleção de variáveis de um mesmo tipo que compartilham o mesmo nome e
que ocupam posições consecutivas na memória” (PUGA; RISSETTI, 2009, p. 84).
- -7
Veremos, agora, como realizar a manipulação desses vetores definidos e declarados, utilizando os pseudocódigos.
7.2.1 Manipulação de vetores
A manipulação de dados através dos vetores é realizada pelo acesso principal ao identificador do vetor (nome da
variável vetor) e pela localização da variável posicional ou de seu indexador (índice do vetor). Se compararmos a
estrutura de um vetor a um trem com seus vagões, é necessário primeiro localizar qual o trem que receberá a
carga. Em seguida, deve-se identificar qual dos vagões receberá essa carga, se todos ou um vagão específico.
Cada posição de um vetor pode conter dados, os quais são convertidos em um sistema binário para que o
processador os manipule. Em um esses dados são do mesmo tipo, definido na declaraçãovetor homogêneo,
inicial do vetor.
Uma das principais manipulações de vetores é a atribuição de dados através do comando de atribuição (←), ou pelo
comando de entrada de dados dado pelo Exemplo 2, em que é atribuído um determinado valor na posição 10 leia,
do vetor . O Comando é uma saída de dados da posição 10 do vetor variável_exemplo escreva variável_exemplo.
É possível realizar o acesso para atribuição e leitura de todas as variáveis de um vetor através do acesso aos seus
índices. Para isso, faz-se necessária a utilização de estruturas de repetição, como, por exemplo o “enquanto...
faça... fim enquanto”. Observe o Exemplo 3, em que são atribuídos valores às diversas posições do vetor e realizada
uma leitura de todas as posições desse vetor.
- -8
A cada entrada no primeiro laço “Enquanto... faça” é solicitado ao usuário para imputar a nota de cada aluno, de 1
a 7. Quando o contador chegar ao valor 8, o fluxo do programa sai do primeiro laço de repetição e entra em um
novo laço. O armazenamento dos valores das notas dos alunos é feito através do comando leia e armazenado no
vetor ‘notas_dos_alunos’. O segundo laço de repetição apresenta, no terminal de saída, todas as notas dos alunos
armazenadas pelo usuário anteriormente, quando foi utilizado comando escreva. A representação do vetor
‘notas_dos_alunos’ com valores é representada pelo diagrama abaixo.
Vetor unidimensional homogêneo notas_dos_alunos.
O vetor , ilustrado no diagrama acima, representa um conjunto de elementos variáveis, cujosnotas_dos_alunos
índices foram definidos de 1 a 7. Observe que esse vetor é do tipo de dado Essa definição é para 7 alunos. Casoreal.
seja necessário adaptar o vetor para mais alunos, deve-se definir o novo vetor, declarando-o com uma quantidade
maior de elementos.
Outra maneira de representar a declaração de variável do tipo vetor é através do Exemplo 4unidimensional,
abaixo. É informada a declaração de variável pela cláusula ‘Var’ e o tipo de dados é o [1..2] Observe vetor .de inteiro
que o tipo de dado fica agora do lado direito e não mais do esquerdo. Essa é uma convenção que depende dos
autores.
7.2.2 Exemplos dirigidos
Outros exemplos de algoritmos que utilizam vetores são apresentados nos exemplos 5, 6 e 7. No exemplo 5, é
apresentada a declaração de 3 vetores (vetor1, vetor2 e vetor3) que são do tipo e do tipo tipo_vetor vetor inteiro de
. O algoritmo lê as informações fornecidas pelo usuário, populando os vetores 1 e 2 e, então, realiza a5 posições
soma desses dois vetores, onde a resultante é o vetor3.
O exemplo 5 utiliza uma estrutura de repetição do tipo “ ” para a leitura e armazenamentopara... até... passo... faça
dos dados. A soma dos vetores é realizada pela atribuição incremental onde x é ovetor3[x] ← vetor1[x] + vetor2[x],
índice do vetor.
- -9
O exemplo 6 ilustra a possibilidade de manipulação do índice do vetor a partir de dois vetores com os dados
armazenados em memória, como ilustram os diagramas a seguir. Observe que os elementos 5 e 7 do vetor não
possuem valores.
Vetor unidimensional homogêneo v_cálculo1.
O próximo diagrama ilustra um vetor unidimensional de 7 elementos. Observe que o elemento 1 do vetor não
possui valores.
Vetor unidimensional homogêneo v_cálculo2.
O exemplo 6 atribui valores aos dois vetores v_cálculo1 e v_cálculo2. Na sequência, realiza operações através dos
índices dos vetores.
- -10
Os resultados de saída do algoritmo através dos comandos “ ” seriam: 10, 10, 1, 0, 5. Observe que, no vetor escreva
, as posições 5 e 7 não apresentam valores e, por isso, considera-se o valor Além disso, note que év_cálculo1 zero.
possível realizar a inserção no índice de uma posição específica de um vetor e operá-lo como desejar. É o caso da
operação: , resultante no índice 3+1 = 4, que contém o valor 5 no vetorv_cálculo1 [v_cálculo2[2]+x] v_cálculo1.
Outro exemplo é a manipulação de vetores com caracteres. O exemplo 7 concatena palavras de dois vetores
(v_palavra1 e v_palavra2) e de dois elementos ou posições do vetor, resultante em um terceiro vetor (v_palavra3).
O resultado de saída do pseudocódigo é a concatenação das contidas nos vetores v_palavra1[1] e emstrings
v_palavra2[1], cuja cadeia de caracteres é ‘o vetor é uma estrutura estática’. Observe que somente a primeira
posição dos vetores está sendo utilizada e, neste caso, um espaço de memória está sendo alocado de maneira não
eficiente. O ideal seria declarar o vetor com apenas uma posição ou utilizar uma variável não composta. Caso a
implementação futura utilize a posição 2 dos vetores declarados, é condizente sua implementação.
Veremos a seguir o conceito de estruturas estáticas homogêneas multidimensionais, as matrizes.
7.3 Matrizes
As matrizes multidimensionais são estruturas estáticas homogêneas compostas por inúmeras variáveis indexadas,
como as matrizes bidimensionais, por exemplo, as são indexadas pelo cruzamento de linhas e colunas.
- -11
Representação de conteúdos binários nas estruturas multidimensionais compostas, como as fontes de letras e 
símbolos, formadas por matrizes binárias.
Fonte: © Szasz-Fabian Jozsef / / Shutterstock.
Observe que, na figura acima, as fontes de caracteres, como letras, símbolos e números são formadas por matrizes
onde os valores uns (1) são pontos acesos e zeros (0) são pontos apagados.binárias, 
“Estruturas indexadas que necessitam de mais de um índice para identificar um de seus elementos são chamadas
de matrizes de dimensão n, onde n representa o número de índices requeridos. Uma matriz de dimensão 2,
portanto, é uma matriz que exige dois índices para identificar um elemento na sua estrutura.” (PUGA; RISSETTI,
2009, p. 95). 
Para Manzano (2009), uma matriz bidimensional faz referência a um elemento indexado armazenado em uma linha 
e coluna. A matriz é representada por seu nome e seu tamanho (dimensão) entre colchetes. 
A representação abaixo ilustra uma matriz de duas dimensões (4 X 4), quatro linhas e quatro colunas. A localização
de um determinado dado em uma matriz é dada pela localização de um determinado elemento definido pela linha,
Observe que o elemento 200 está localizado na e coluna. linha 2 coluna 3.
Matriz bidimensionalhomogênea.
No pseudocódigo, a definição de uma matriz bidimensional é realizada de maneira equivalente a um vetor. O que
se altera é a dimensão definida no índice do vetor (linhas, colunas), como, por exemplo: vetor [1..4, 1..4], que
especifica duas dimensões, uma dimensão de 4 linhas e outra dimensão de 4 colunas.
Vejamos agora como realizar as declarações e manipulações de matrizes.
O Exemplo 8 abaixo declara uma variável , que é do tipo de dados tipo_vetor, o qual é uma matriz dev_qt_produtos
duas dimensões (4 linhas e 4 colunas) do tipo inteiro.
- -12
A diferença entre a declaração de variáveis de vetor e matriz está relacionada ao número de dimensões informado
entre colchetes. Vejamos agora como realizar a manipulação dessas estruturas multidimensionais.
7.3.1 Manipulação de Matrizes
A manipulação de variáveis em matrizes ocorre do mesmo modo como em vetores, por meio da localização do
elemento (linha, coluna).
No Exemplo 9, temos que a variável declarada do tipo matriz bidimensional (2 dimensões) recebe nov_produtos
seu elemento de índice (2, 3) o valor 200. Ou seja, na localização da linha 2 e coluna 3 da matriz, é atribuído o valor
inteiro 200.
Outra maneira de representar a declaração de variável do tipo matriz bidimensional, , é através do Exemplo 10. É
informada a declaração de variável pela cláusula ‘Var’ e o tipo de dados é o [1..4, 1..4] . Observe quevetor de inteiro
o tipo de dado fica agora do lado direito e não mais do esquerdo. Essa é uma convenção que depende dos autores.
De acordo com Forbellone (2005), há, ainda, outra forma de declarar uma matriz. No Exemplo 11, é declarada uma
matriz de três dimensões (1..4, 1..2, 1..2) de elementos reais. O termo é substituído pelo termo Amatriz vetor.
convenção também depende do autor.
- -13
Uma representação do pseudocódigo do Exemplo 11 seria dada pelas matrizes abaixo, no diagrama abaixo. Além
da tridimensionalidade matricial, ou seja, além dos três eixos (x, y, z), uma visão espacial não pode ser
representada geometricamente, mas é possível uma representação através de uma nova matriz duplicada em um
novo elemento indexado. Assim, pode-se representar, x = linha, y = coluna e z = nova matriz.
Matriz composta tridimensional homogênea e estática.
Observe que o valor atribuído à localização (2, 2, 3) de valor inteiro 200 é localizado na primeira matriz, que
representa o valor z = 3. Já o valor atribuído à localização (2,1, 4) de valor inteiro 300, é localizado na segunda
matriz, que representa o valor z = 4. É possível, portanto, atribuir qualquer valor a uma matriz multidimensional,
não se limitando a uma visualização espacial. O valor da dimensão está vinculado ao número de indexadores
definidos como:
Variável: Matriz [L, C, D3, ...Dn] tipo de dados, onde L = linha (1ª dimensão), C = coluna (2ª dimensão), D3 (3ª
dimensão) e Dn (n-ézima dimensão).
- -14
Segundo Manzano (2009), o processo de escrita de dados de uma matriz de duas dimensões é semelhante ao
processo de leitura. Um exemplo de codificação seria dado pelo exemplo 12 abaixo. São utilizadas duas estruturas
de repetição do tipo “Para... até... Passo... faça”, que percorre toda a matriz 8 x 8, em todas as suas linhas e colunas.
As estruturas estáticas compostas multidimensionais possuem grande aplicabilidade em várias áreas do
conhecimento.
PAUSA PARA REFLETIR
Existe um limite de dimensões de uma matriz multidimensional?
- -15
Uma das aplicações das estruturas estáticas do tipo matrizes é a de jogos de raciocínio. Veremos a seguir exemplos
dirigidos de aplicações das matrizes multidimensionais em um setor de vendas e em jogos do tipo deslizantes e
tabuleiros.
7.3.2 Exemplos dirigidos
Analise a seguinte situação: um setor de vendas deseja registrar seus produtos vendidos durante um determinado
mês. Isto é realizado através da leitura do mês de venda, código do cliente, código do produto vendido, sua
quantidade vendida, valor unitário e valor total (preço x quantidade vendida). Para isso, podemos usar uma matriz
multidimensional, na qual cada produto pode ser adicionado em linhas da matriz. Já o período (mês), código do
cliente, código do produto, quantidade unitária, valor do produto e valor total do item, podem ser especificados
em cada coluna.
Digamos que a quantidade máxima de produtos em um mês é de valor 20. Nesse caso, a matriz é [1..20, 1..6].
No exemplo abaixo, o usuário deverá incluir 20 produtos na matriz v_produtos_vendidos. O pseudocódigo seria
dado por:
CURIOSIDADE
As estruturas estáticas compostas multidimensionais, além de realizarem cálculos matemáticos
e comparações de dados, possuem especial aplicação em estatística, pois sua estrutura permite
o armazenamento de valores que podem ser referenciados e associados a outros em duas ou
mais dimensões (PUGA; RISSETTI, 2009).
- -16
Em termos de aplicabilidade, um ótimo exemplo de matriz de duas dimensões (linha e coluna) é o estudo de
matrizes para resolução de miniproblemas através de jogos do tipo tabuleiros e como exemplificam aspuzzle 
figuras abaixo.
Representação de duas matrizes do tipo utilizado em jogos deslizantes puzzle.
A figura acima apresenta uma matriz 3 x 3, com uma disposição de 8 peças e com um estado inicial qualquer
definido pela primeira matriz (Matriz 1). Já um a ser alcançado, é definido pela segunda matriz, daestado objetivo
esquerda para a direita (Matriz 2). Neste , o jogador deve chegar a uma sequência numéricaestado objetivo
desejada ou especificada pelo adversário (Matriz 2).
- -17
Clique para continuar o estudo.
Intervalo de
espaço de busca
Observe, na próxima figura, que apresenta jogos deslizantes em forma de árvore. Atravéspuzzle 
de diferentes configurações ou possíveis estados, é possível alcançar, a partir do estado inicial,
na raiz da árvore, o estado objetivo, isto é, o estado final a ser alcançado. Esse intervalo é
denominado de ou Seriam todas as possíveisintervalo de espaço de busca espaço de estados.
jogadas entre o e o estado inicial estado objetivo.
Matriz objetivo
A é a matriz a ser alcançada com os valores determinados pelos jogadores, oumatriz objetivo 
seja, a sequência de números definida pelo adversário e a ser alcançada pelo jogador. Digamos
que a matriz a ser alcançada é a última matriz à direita da árvore, ou qualquer outra
determinada previamente. Observe que foram apresentados 7 estados de configuração para se
chegar ao estado objetivo (espaços de estados), conforme mostra a figura a seguir. Para se
chegar ao estado objetivo, deve-se movimentar (trocar) valores entre as posições. O valor nulo
ou em branco é a posição sem peça.
Segundo Medeiros (2018), o miniproblema do pode ser estendido para um quebra-cabeça de n x n casas,puzzle 
onde n > 3. Nesse caso, é uma matriz multidimensional, onde o conteúdo de seus elementos é alterado até ser
encontrada a matriz de estado ótimo.
CURIOSIDADE
O Miniproblema do caso de 8 peças, que pertence à família de quebra-cabeçaspuzzle
deslizantes, é utilizado em algoritmos de Inteligência artificial. O jogo oferece 181.440 estados
possíveis.
- -18
Representação da árvore de estados que apresenta todas as possibilidades dos espaços de estados, utilizando-se 
de uma matriz bidimensional em jogos deslizantes puzzle.
Esse miniproblema é um exemplo de problema que o agente de resolução de problemas (algoritmo ou
pseudocódigo) pode resolver e essa resolução pode ser utilizada para problemas do mundo real através de alto
poder computacional e de recursos como memória e processamento.
Um pseudocódigo desse miniproblema para a definição do estado inicial seria dado pelo exemplo 14, para uma
matriz 3 x 3 com as peças posicionadas de valores da árvore de estados da figura acima.
- -19
Para realizar o deslocamento das peças, é necessário realizar o deslocamento do elemento sem peça, ou de valor
nulo, sendo direcionado para a direita, esquerda, ‘para cima’ e ‘para baixo’, de acordo com as possibilidades da
dimensão da matriz 3 x 3. O elemento com o valor zero ou nulo ( ) deveráse deslocar para dar espaço para asnull
demais peças se deslocarem, atingindo, assim, a configuração desejada.
Observe que na configuração inicial da figura é possível deslocar o elemento (1, 2) ou o elemento (2, 1) para a
posição (1, 1). Isso é feito através de uma pergunta para o usuário, como ilustra o Exemplo 15 complementar.
Também é possível deslocar o elemento nulo como substituição a uma peça. Contudo, é necessário o
estabelecimento de regras de movimentos aplicáveis, conforme veremos a seguir. Clique e confira.
Regra 1
Mover o elemento nulo para a esquerda (se a lacuna não tiver na coluna 1).
Regra 2
Mover o elemento nulo para cima (se a lacuna não estiver na linha 1).
Regra 3
Mover o elemento nulo para a direita (se a lacuna não estiver na coluna 2).
Regra 4
Mover o elemento nulo para baixo (se a lacuna não estiver na linha 2).
Observe que, somente quando o estado objetivo for encontrado, o algoritmo é encerrado. Os deslocamentos são
realizados trocando a posição do valor nulo com o valor/peça.
- -20
Vimos que as matrizes multidimensionais podem ser utilizadas para a resolução de miniproblemas e expandem
sua complexidade conforme as dimensões aumentam.
Proposta de atividade
Agora é a hora de recapitular tudo o que você aprendeu neste capítulo! Elabore um mapa mental, destacando as
principais ideias abordadas ao longo do capítulo. Ao produzir seu mapa mental, considere as leituras básicas e
complementares realizadas.
Dica: em um mapa mental ou estrutura em níveis, você deve ter uma expressão principal. Inicie, por exemplo, por
‘Estrutura de dados estática’ e subdivida essa expressão ou termo em novas palavras, dando sentido ao texto,
como, por exemplo: homogênea, composta, unidimensional e multidimensional. A partir desses termos, subdivida
em novas expressões ou novos termos, fracionando a ideia até o melhor entendimento possível.
Recapitulando
Realizando uma breve revisão dos conteúdos, compreendemos a importância e aplicabilidade das estruturas de
dados estáticas compostas homogêneas unidimensionais e multidimensionais.
Vimos que as estruturas unidimensionais são denominadas de vetores ou , que se referem a uma únicaArrays
dimensão, ou seja, uma única linha com várias colunas. As estruturas multidimensionais, por sua vez, são
denominadas matrizes. Essas estruturas são compostas, no mínimo, por linhas e colunas (matriz bidimensional).
- -21
Já as estruturas com mais de duas dimensões, são formadas, além das linhas e colunas, por uma nova matriz, que
é a outra dimensão.
Lembramos, também, que as estruturas deste estudo são estáticas, as quais não sofrem alterações (adição e
subtração) de elementos. Esses elementos são os índices ou posições da estrutura matricial ou vetorial. As
estruturas estáticas, quando declaradas, fixam a quantidade de elementos de maneira que, em tempo de execução
do algoritmo ou programa, não possam ser alterados seus elementos definidos (indexadores).
Compreendemos que as estruturas do estudo são do tipo compostas e homogêneas, ou seja, todos os vetores e
matrizes são compostos por elementos variáveis de memória com um único tipo de dado declarado. Essas
estruturas facilitam a resolução de problemas e cálculos que precisam estar organizados, armazenados e com
acesso direto às localizações dos elementos por índices.
Vimos, também, que os vetores ou matrizes possuem diversas aplicações, como nos registros de vendas de
produtos em um setor de vendas e nos jogos deslizantes e de tabuleiros.
Referências
BROOKSHEAR, J. G. : uma visão abrangente. 11. ed. Porto Alegre: Bookman, 2013.Ciência da Computação
FORBELLONE, A. L. V. a construção de algoritmos e estruturas de dados. 3. ed. São Paulo:Lógica de programação: 
Prentice Hall, 2005.
MANZANO, J. A. N. G; OLIVEIRA, J. F. : lógica para desenvolvimento de programação de computadores.Algoritmos
22. ed. São Paulo: Érica, 2009.
PIVA JUNIOR, D.; NAKAMITI, G. S.; ENGELBRECHT, A. M.; BIANCHINI, F. Algoritmos de programação de
Rio de Janeiro: Elsevier, 2011.programadores. 
PUGA, S.; RISSETTI, G. 2. ed. São Paulo: Lógica de programação e estruturas de dados, com aplicações em Java.
Pearson Prentice Hall, 2009.
	Objetivos do capítulo
	Tópicos de estudo
	Contextualizando o cenário
	7.1 Conceito de estruturas de dados
	7.1.1 Variáveis compostas homogêneas
	7.1.2 Variáveis compostas unidimensionais e multidimensionais
	Variáveis compostas unidimensionais homogêneas
	Estruturas multidimensionais
	7.2 Vetores
	7.2.1 Manipulação de vetores
	7.2.2 Exemplos dirigidos
	7.3 Matrizes
	7.3.1 Manipulação de Matrizes
	7.3.2 Exemplos dirigidos
	Proposta de atividade
	Recapitulando
	Referências