Buscar

7_Algoritmos_matrizes

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 17 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 17 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 17 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

105
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Capítulo 7
Algoritmos – 
matrizes
É muito comum o uso de matrizes em programação e atividades 
cotidianas. Matrizes são tabelas compostas de linhas e colunas (como 
uma planilha eletrônica, por exemplo). A diferença de matriz para vetor 
é que ela precisa de dois índices, como coordenadas, para acessarmos 
uma “casa”. Por isso são chamadas de array bidimensional.
Neste capítulo, vamos entender o conceito de matriz e suas aplica-
ções em sistemas computacionais e no nosso projeto de software.
Além disso, vamos fazer uso da estrutura de repetição “for” aninha-
da, ou seja, dois laços de repetição (um dentro do outro). Essa estrutura 
aninhada é muito útil para “varrer” a matriz e efetuar operações básicas 
de manipulação de dados, por exemplo.
106 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.Para finalizar, faremos alguns exercícios para compreensão dos 
conceitos.
1 Conceito de matriz
Matriz é um conceito matemático da metade do século XIX que 
trabalha com colunas e linhas. Basicamente, representa uma tabela, 
conforme você pode ver na figura 1. Nessa matriz 4 × 3, o primeiro nú-
mero representa a quantidade de linhas e o segundo número, a quan-
tidade de colunas. 
Figura 1 – Representação gráfica de uma matriz 4 × 3
8,5 7,2 10,0
7,8 9,0 6,7
10,0 6,1 8,4
5,9 7,4 6,8
Em computação, a matriz, também chamada de array bidimensional, 
será uma variável que armazenará vários dados do mesmo tipo, porém 
em forma de tabela. De acordo com Deitel e Deitel (2010), os arrays 
bidimensionais costumam ser utilizados para representar tabelas de 
valores que consistem nas informações dispostas em linhas e colunas. 
Você já deve ter trabalhado com alguma planilha eletrônica na qual ma-
nipulou linhas e colunas, certo? Nossa matriz se comportará de maneira 
semelhante.
Forbellone e Eberspacher (2005) comparam a estrutura de matri-
zes com um edifício que é dividido em andares, que, por sua vez, são 
divididos em apartamentos. Nesse caso, seria necessária uma es-
trutura multidimensional para encontrar um apartamento. No nosso 
caso, uma matriz.
107Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
PARA SABER MAIS 
Segundo Forbellone e Eberspacher (2005), matrizes são arranjos orde-
nados que, ao contrário dos vetores, podem ter n dimensões, sendo que 
essas dimensões lhes dão o nome n-dimensional. Uma matriz de duas 
dimensões será chamada bidimensional, uma de três dimensões, tridi-
mensional, e assim sucessivamente. Como neste capítulo vamos estu-
dar apenas matrizes de duas dimensões (ou seja, matrizes formadas por 
linhas e colunas) podemos chamar nossa matriz de array bidimensional.
 
A matriz tem características parecidas com um vetor (array unidi-
mensional), porém possui dois índices de acesso a dados. O primeiro 
índice indica em qual linha o dado se encontra e o segundo índice indica 
em qual coluna o dado se encontra. A interseção dessas duas coorde-
nadas é a “casa” onde nosso dado está armazenado.
O sistema de coordenadas é uma boa analogia para entender as ma-
trizes. O GPS (global positioning system) é um sistema de navegação 
por satélite que fornece as coordenadas de onde estamos. Essas coor-
denadas são as linhas e as colunas do planeta Terra (latitude e longitu-
de, ilustrada pela figura 2). Se colocarmos mais uma dimensão (como 
altura, por exemplo) podemos trabalhar com mapas 3D. Da mesma for-
ma, se tivermos uma estrutura tridimensional em computação, podere-
mos formar um cubo. 
Figura 2 – A latitude e a longitude terrestre representam linhas e colunas
108 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.Para encontrarmos uma pessoa no nosso planeta, precisamos des-
sas coordenadas. E para acessar um dado em uma matriz construída 
por nós, programadores? Também precisaremos de coordenadas, as 
linhas e as colunas. 
Você já jogou bingo? O jogo do bingo pode ser representado em uma 
tabela. A figura 3 mostra uma dessas cartelas, na qual temos a nítida 
separação das linhas (que podem ser numeradas, por exemplo) e das 
colunas (no caso da cartela, a quantidade de colunas sempre é 5, devido 
à formação da palavra B I N G O, e cada coluna está representada por 
uma letra da palavra). A cartela de bingo é uma matriz quadrada 5 × 5.
Figura 3 – Cartela de bingo, separada por linhas e colunas
B I N G O
FREE
Para acessar qualquer valor da tabela, precisamos dos seus índices 
(linha, coluna). Por exemplo, existe uma “casa” da cartela de bingo que 
é um espaço free (bem no meio da cartela). Para acessar esse espaço, 
precisamos saber em que linha ele está (no caso, terceira linha) e em 
que coluna ele está (no caso, terceira coluna). Portanto, o espaço free 
109Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
da cartela de bingo está localizado na posição [3,3]. É importante lem-
brar, também, que para acessar uma matriz precisamos saber o nome 
dela, como fizemos com os vetores.
IMPORTANTE 
Para manipular uma matriz, você precisará de três informações: o 
nome da matriz, o número da linha e o número da coluna.
 
Agora que entendemos o que é uma matriz, que tal aprender como 
utilizá-la em nosso programa?
1.1 Declarando uma matriz
Para declarar uma matriz, assim como um vetor, precisamos saber a 
sintaxe da linguagem na qual estamos trabalhando. Nossa linguagem é 
o JavaScript e, de acordo com Flanagan (2013), o JavaScript não supor-
ta arrays multidimensionais verdadeiros, mas permite simulá-los com 
arrays de arrays de modo bem preciso.
Basicamente, a declaração de uma matriz consiste de um nome e 
dois pares de colchetes, indicando o posicionamento do dado arma-
zenado (a linha e a coluna). No caso do JavaScript, vamos criar um ar-
ray de arrays, ou seja, dentro dos colchetes do nosso vetor, em vez de 
números ou caracteres, vamos inserir colchetes. Cada par de colchete 
representa um vetor. Portanto, para declarar uma matriz 4 × 3, faremos 
da seguinte maneira:
var nome = [[ ],[ ],[ ],[ ]];
Observe o que fizemos. O vetor “nome” possui 4 vetores. Cada um des-
ses vetores representa uma linha. A quantidade de colunas serão os da-
dos que vamos inserir em cada um desses vetores. Por exemplo, vamos 
inserir 3 nomes por vetor, formando, assim, uma matriz “nome” 4 × 3.
110 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 Sen
ac
 S
ão
 P
au
lo
.
var nome = [[“Allen”, “Victor”, “Vanessa”], 
[“Wagner”, “Claudio”, “Silvia”], 
[“Neuza”, “Thais”, “Humberto”], 
[“Roberto”, “John”, “Gabriel”]];
Compreendeu? Podemos exibir, na tela, algum nome ou uma lista 
com todos os nomes da matriz. Além disso, podemos realizar buscas 
específicas de dados nessa matriz. 
Uma pergunta que você pode estar se fazendo é: como o usuário 
pode inserir os dados nessa matriz? É uma ótima pergunta, e vamos ver 
como isso é possível.
2 Manipulando uma matriz
Uma vez declarada nossa matriz, podemos alimentá-la de dados, 
como fizemos anteriormente (ou seja, inserindo dados fixos), ou pedir 
para ao usuário que insira seus dados (o que é muito melhor na prática.).
A manipulação de dados, em uma matriz, é parecida com a manipu-
lação de dados em um vetor. Podemos realizar a inserção, a exclusão, 
a atualização e buscar algum dado (Crud). Entretanto, para manipular 
uma matriz, devemos ficar atentos às suas coordenadas para saber, 
exatamente, onde (em qual casa) estamos tratando o dado.
Lembra-se de como nós manipulamos um vetor? Isso mesmo, fa-
zendo uso da estrutura de repetição “for”. E para manipular uma matriz, 
como faremos? Também utilizando o “for”, porém, vamos precisar de 
dois laços “for” (um dentro do outro). O laço externo fica “parado” na 
primeira linha, enquanto o laço interno percorre (varre) todas as suas 
colunas. Quando terminar, o laço externo anda mais uma linha e o laço 
interno varre todas as suas colunas e assim por diante.
111Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
IMPORTANTE 
Quando utilizamos dois laços “for”, o laço interno é executado comple-
tamente, a cada passo do laço externo. Na prática, o laço externo vai 
percorrer as linhas, enquanto o laço interno vai percorrer as colunas.
 
Para compreender melhor, vamos declarar uma matriz “nome” e in-
serir valores nela. Para facilitar o entendimento do exercício, vamos de-
clarar uma matriz 2 × 3 (no entanto, o algoritmo funciona para quaisquer 
tamanhos, basta alterar os valores dos índices).
2.1 Inserindo dados em uma matriz
Uma vez declarada nossa matriz “nome” de tamanho 2 × 3, preci-
samos criar um laço de repetição para que o usuário possa inserir os 
valores que quiser nela. Para isso, vamos utilizar dois laços de repetição 
“for” (um dentro do outro), em que o índice representado pela variável “li-
nha” vai varrer todas as linhas da matriz, enquanto o índice representado 
pela variável “coluna” vai varrer todas as colunas da matriz.
Vamos verificar como ficou nosso código (não se esqueça de que 
todos os índices começam em zero):
var nome = [[],[]];
for (linha=0; linha < nome.length; linha++){
 for (coluna=0; coluna < 3; coluna++){
 nome[linha][coluna] = prompt (“Insira um nome”);
 }
}
alert(nome)
Observe o que foi feito:
112 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
. • O laço de repetição externo vai percorrer todas as linhas (no caso, 
são duas linhas, pois declaramos nossa matriz com dois vetores 
dentro), por isso a condição de saída é o tamanho da matriz – 
“linha < nome.length”. Esse laço só muda para a próxima linha 
quando todas as suas colunas forem percorridas.
 • O laço de repetição interno vai percorrer todas as colunas de cada 
linha (no caso, como é uma matriz 2 × 3, vamos limitar o tamanho 
das colunas em 3), por isso a condição de saída é o valor fixo 3 – 
“coluna < 3”.
 • Para inserirmos um valor em uma posição específica da matriz, 
precisamos informar seu nome, a linha e a coluna. Por isso, guar-
damos o valor digitado pelo usuário em “nome[linha][coluna]”.
Esse procedimento será parecido (senão igual) todas as vezes que 
for preciso manipular uma matriz inserindo valores, seja qual for o tipo 
de matriz ou quantas matrizes tivermos. Por exemplo, vamos cadastrar 
as médias finais de um grupo de 10 alunos? A primeira linha da matriz 
vai armazenar os nomes dos alunos e cada coluna terá as notas de 
4 disciplinas: português, matemática, física e biologia. Haverá uma 
segunda matriz informando se o aluno está aprovado ou reprovado, 
de acordo com a média inserida na primeira matriz (vamos usar a 
média 6.0 para o aluno estar aprovado). 
O resultado que queremos está representado na tabela 1 (lembran-
do que vamos pedir ao usuário que insira valores somente na primeira 
matriz. A segunda deve ser preenchida automaticamente):
Tabela 1 – Tabelas representando médias e situações de 10 alunos
113Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
 
MÉDIAS ANDRÉ CLÁUDIO CÉSAR ANA DIEGO
PORTUGUÊS 5,5 9,6 8 9 6
MATEMÁTICA 8,2 5,7 2,4 7,8 6,9
FÍSICA 3,6 4,8 4,7 4,4 5
BIOLOGIA 6,1 7,5 7,1 3,3 9,3
MÉDIAS FLÁVIA JORGE KÁTIA JOÃO MARIA
PORTUGUÊS 7,1 2,1 5,3 4,5 8,6
MATEMÁTICA 8,5 1 7 5,7 9
FÍSICA 7,9 3,8 4,1 8 6
BIOLOGIA 5,9 10 8,2 5,6 8,6
SITUAÇÃO ANDRÉ CLÁUDIO CÉSAR ANA DIEGO
PORTUGUÊS Reprovado Aprovado Aprovado Aprovado Aprovado
MATEMÁTICA Aprovado Reprovado Reprovado Aprovado Aprovado
FÍSICA Reprovado Reprovado Reprovado Reprovado Aprovado
BIOLOGIA Aprovado Aprovado Aprovado Reprovado Reprovado
SITUAÇÃO FLÁVIA JORGE KÁTIA JOÃO MARIA
PORTUGUÊS Aprovado Reprovado Reprovado Reprovado Aprovado
MATEMÁTICA Aprovado Reprovado Aprovado Reprovado Aprovado
FÍSICA Aprovado Reprovado Reprovado Aprovado Aprovado
BIOLOGIA Reprovado Aprovado Aprovado Reprovado Aprovado
Para resolver esse problema, vamos declarar duas matrizes 5 × 11 
com os nomes “media” e “situacao” e criar as condições com os laços 
de repetição necessários para alimentar a primeira matriz, via teclado, 
e a segunda matriz automaticamente. Observe que a primeira posição 
das duas matrizes são palavras fixas “média” e “situação”. Sendo assim, 
podemos inserir esses valores no momento da declaração das nossas 
114 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.matrizes. Além disso, os nomes das disciplinas também são fixos, por-
tanto, vamos inseri-los também.
IMPORTANTE 
O tamanho 5 × 11 é decorrente do fato de termos 5 linhas (4 para as 
disciplinas e 1 para os nomes dos alunos na primeira linha) e 11 colu-
nas (10 para os nomes dos alunos e a primeira coluna para os nomes 
das disciplinas).
 
Sabendo de tudo isso, vamos verificar nosso código:
var media = [[],[],[],[],[]], situacao = [[],[],[],[],[]];
media[0][0] = “MÉDIA”;
situacao[0][0] = “SITUAÇÃO”;
media[1][0] = “Português”;
situacao[1][0] = “Português”;
media[2][0] = “Matemática”;
situacao[2][0] = “Matemática”;
media[3][0] = “Física”;
situacao[3][0] = “Física”;
media[4][0] = “Biologia”;
situacao[4][0] = “Biologia”;
for (linha=0; linha < media.length; linha++){
(cont.)
115Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob aspenas da Lei. ©
 Editora Senac São Paulo.
 for (coluna=1; coluna < 11; coluna++){
 if(linha == 0){
 media[linha][coluna] = prompt (“Insira um nome”);
 situacao[linha][coluna] = media[linha][coluna];
 } else{
 media[linha][coluna] = prompt (“Insira a média de “ + media[linha][0] + “ do 
aluno “ + media[0][coluna]);
 if (media[linha][coluna] < 6){
 situacao[linha][coluna] = “REPROVADO”;
 }else{
 situacao[linha][coluna] = “APROVADO”;
 }
 }
 }
}
for (linha=0; linha < situacao.length; linha++){
 for (coluna=0; coluna < 11; coluna++){
 alert (situacao[linha][coluna]);
 }
 alert (“\n”);
}
Observe quanta coisa fizemos:
116 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.a. Declaramos as matrizes e inserimos os valores fixos nas posi-
ções 0, 1, 2, 3 e 4 (ou seja, preenchemos a primeira coluna das 
duas matrizes.
b. Como a primeira coluna está preenchida, iniciamos o valor da va-
riável “coluna” em 1.
c. Dentro do laço interno, fizemos uma pergunta: linha é igual a zero 
(linha == 0). Caso seja, todas as colunas dessa linha devem conter 
somente nomes. Caso contrário, vamos pedir as médias. Repare 
que já estamos copiando os nomes da matriz “media” para a ma-
triz “situacao” (situacao[linha][coluna] = media[linha][coluna]).
d. Assim que inserirmos uma média, o sistema já faz uma compa-
ração verificando se a nota inserida é menor que 6. Caso seja, 
inserimos “reprovado” nessa mesma posição, mas da matriz “si-
tuação”. Caso contrário, inserimos “aprovado”.
e. Os itens b, c, d são executados até varrermos todas as linhas da 
matriz “media” com a ajuda do laço de repetição externo e a variá-
vel “linha”.
f. Quando todas as linhas e colunas forem preenchidas, outro con-
junto de laços de repetição “for” varre a matriz “situacao”, exibindo 
seus valores na tela.
Sugerimos que esse exercício seja refeito com tamanhos diferen-
tes de linhas e colunas e que os resultados sejam verificados. Observe, 
também, que há várias maneiras diferentes de se construir esse algorit-
mo. Tente uma lógica diferente e verifique o que acontece. 
Outra coisa bem interessante a ser feita é buscar um valor dentro 
dessas matrizes, que é o que vamos aprender a seguir.
2.2 Buscando dados em uma matriz
117Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
A busca de dados é uma das operações básicas de manipulação 
de dados que podem ser feitas com arrays. Vamos aproveitar nosso 
exercício e procurar algum dado, já que temos duas matrizes com 
informações.
Podemos buscar, por exemplo, a média de matemática de um aluno 
específico, ou alguma média igual a 10, ou, ainda, saber se algum alu-
no está aprovado em todas as disciplinas. Vamos explorar todas essas 
possibilidades. No entanto, lembre-se de que pode haver a possibilidade 
de não encontrarmos o dado e termos que resolver essa situação com 
o usuário.
Para buscar um dado em uma matriz, vamos usar os laços de re-
petição “for”, assim como fizemos para inserir dados, pois esses laços, 
combinados, varrem uma matriz, passando por todas as linhas e as 
colunas.
Vamos começar procurando um aluno. Pediremos ao usuário que 
informe qual aluno quer pesquisar. Caso encontremos, informamos que 
o aluno está cadastrado, caso contrário, informamos que o aluno não 
existe na base de dados. Vamos verificar esse trecho de código:
var nome = prompt (“Informe qual aluno deseja pesquisar”);
var controle = 0;
for (coluna=0; coluna < 11; coluna++){
 if (nome == media[0][coluna]){
 alert (“O aluno “ + media[0][coluna] + “encontra-se na base de dados na 
posição“ + coluna);
controle = 1;
 }
(cont.)
118 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
}
if (controle == 0){ 
 alert (“O aluno “ + nome + “ não está na base de dados”);
}
Observe que usamos apenas um laço “for”. Isso porque sabemos 
que os nomes dos alunos estão na primeira linha, portanto não preci-
samos varrer todas as linhas. Basta, então, fixar a coordenada linha em 
zero e varrer as colunas. 
Além disso, usamos uma variável de controle que se inicia em zero 
para saber se o aluno existe na base dados ou não. Caso o aluno exista, 
a variável muda para 1, caso contrário, continua com o valor zero e a 
estrutura condicional “if”, que se encontra depois do laço “for”, verifica 
esse valor. 
Agora, vamos imaginar que o usuário queira procurar a média de ma-
temática de um aluno. Temos que pedir o nome do aluno. Porém, além 
de procurar o aluno na primeira linha, temos que procurar em qual linha 
está a disciplina e buscar a média nessas coordenadas (caso encon-
tremos a disciplina, é claro!). Vamos verificar o código nessa situação:
var nome = prompt (“Informe qual aluno deseja pesquisar”);
var disciplina = prompt (“Informe para qual disciplina deseja pesquisar a nota”);
var controle = 0;
for (coluna=0; coluna < 11; coluna++){
(cont.)
119Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
 if (nome == media[0][coluna]){
 for (linha=1; linha < media.length; linha++){
 if (disciplina == media[linha][0]){
 alert (“A média do “ + nome + “na disciplina“ + disciplina + “é“ + media[linha]
[coluna]);
 controle = 1;
 }}}}
 
if (controle == 0){
 alert (“O aluno “ + nome + “ou a disciplina“ + disciplina + “não constam na 
base de dados”);
}
Usamos o mesmo algoritmo anterior, porém inserimos a variável dis-
ciplina. Se encontrarmos o nome do aluno, já teremos a coordenada 
da coluna. A partir disso, basta varrer as linhas e encontrar a média do 
aluno. Caso algum dado não exista (nome do aluno ou a disciplina), a 
variável “controle” não muda seu valor e a estrutura condicional “if” exibe 
a informação na tela.
PARA SABER MAIS 
Se você estiver fazendo vários testes e precisar sempre inserir todos 
120 Algoritmos e programação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
os valores novamente, é porque estamos trabalhando com variáveis do 
tipo voláteis. Se você quiser guardar esses dados e não os perder, pode 
trabalhar com arquivos (assunto não abordado nessa obra). Para isso, 
sugerimos que você leia o capítulo 6 do livro Conceitos de linguagens de 
programação, de Sebesta (2003), e o capítulo 5 do livro Lógica de progra-
mação: a construção de algoritmos e estruturas de dados, de Forbellone e 
Eberspacher (2005).
 
Para treinar, faça o seguinte exercício: verifique se o aluno pesquisa-
do está “aprovado” ou “reprovado” na disciplina pesquisada. Dica: use o 
mesmo algoritmo, façaapenas algumas modificações.
 Você já tem muita coisa para fazer em relação ao nosso projeto de 
software (boletim acadêmico do aluno). Faça o projeto e treine bastante 
esses conceitos, tão importantes para um programador ou para qual-
quer profissional da área de tecnologia.
Considerações finais
As matrizes, também chamadas de arrays bidimensionais, são es-
truturas parecidas com tabelas e são utilizadas para armazenar dados 
em linhas e colunas. Por isso, precisamos, para manipular os dados 
nas matrizes, das suas coordenadas (que são indicadas dentro de 
colchetes).
Vale lembrar que, para varrermos uma matriz, são necessárias duas 
estruturas de repetição “for” aninhadas, ou seja, um “for” dentro do ou-
tro. O laço de repetição externo controla (ou varre) todas as linhas e o 
laço de repetição interno controla (ou varre) todas as colunas.
Como declarar uma matriz depende muito da sintaxe da linguagem 
na qual se está trabalhando. No nosso caso, a linguagem é o JavaScript 
e não existe array bidimensional nessa linguagem. Entretanto, consegui-
mos simular, de maneira bem satisfatória, essa estrutura com um array 
de arrays, como foi demonstrado nos exemplos ao longo do capítulo.
121Algoritmos – matrizes
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Compreender esses conceitos é muito importante para um profis-
sional de tecnologia da informação. Portanto, treine muito e apure sua 
lógica de programação.
Referências
DEITEL, Paul J.; DEITEL, Harvey M. Java: como programar. 8. ed. São Paulo: 
Pearson Prentice Hall, 2010.
FLANAGAN, David. JavaScript: o guia definitivo. 6. ed. Porto Alegre: Bookman, 
2013.
FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de 
programação: a construção de algoritmos e estruturas de dados. São Paulo: 
Pearson Prentice Hall, 2005.
SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto 
Alegre: Bookman, 2003.
	_GoBack

Outros materiais