{"id":1017,"date":"2024-05-05T17:38:09","date_gmt":"2024-05-05T20:38:09","guid":{"rendered":"https:\/\/desvendandoocodigo.com.br\/?p=1017"},"modified":"2026-08-18T12:29:24","modified_gmt":"2026-08-18T15:29:24","slug":"estruturas-de-dados-com-matrizes-em-javascript","status":"publish","type":"post","link":"https:\/\/desvendandoocodigo.com.br\/?p=1017","title":{"rendered":"Matriz em JavaScript na Pr\u00e1tica: Projeto com HTML, CSS e JavaScript"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Publicado em:<\/strong> 05 de maio de 2024<br><strong>Atualizado em:<\/strong> 18 de agosto de 2026<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Este artigo foi atualizado com um novo projeto pr\u00e1tico para mostrar como utilizar matrizes em JavaScript em uma aplica\u00e7\u00e3o com HTML e CSS, percorrendo linhas e colunas, calculando m\u00e9dias e exibindo os resultados dinamicamente na p\u00e1gina.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Aprender <strong>matriz em JavaScript<\/strong> fica muito mais f\u00e1cil quando conseguimos visualizar onde esse conceito pode ser utilizado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste projeto vamos criar um <strong>Boletim de Alunos<\/strong>. Os nomes e notas ser\u00e3o armazenados em uma matriz e o JavaScript ficar\u00e1 respons\u00e1vel por percorrer os dados, calcular as m\u00e9dias, verificar quem foi aprovado ou reprovado e gerar uma tabela no HTML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de come\u00e7ar o projeto, por\u00e9m, precisamos entender alguns conceitos importantes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 um vetor em JavaScript?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um vetor, tamb\u00e9m chamado de <code>array<\/code>, permite armazenar v\u00e1rios valores dentro de uma \u00fanica vari\u00e1vel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const aluno = &#91;\"Jo\u00e3o\", 8, 7, 9];\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse vetor temos o nome de um aluno e suas tr\u00eas notas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada elemento possui uma posi\u00e7\u00e3o, chamada de <strong>\u00edndice<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aluno&#91;0] \/\/ Jo\u00e3o\naluno&#91;1] \/\/ 8\naluno&#91;2] \/\/ 7\naluno&#91;3] \/\/ 9\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Um detalhe muito importante \u00e9 que os \u00edndices de um array em JavaScript come\u00e7am em <strong>zero<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por isso, o primeiro elemento est\u00e1 no \u00edndice <code>0<\/code>, e n\u00e3o no \u00edndice <code>1<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">O que \u00e9 uma matriz em JavaScript?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos evoluir o exemplo anterior armazenando v\u00e1rios alunos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const alunos = &#91;\n  &#91;\"Jo\u00e3o\", 8, 7, 9],\n  &#91;\"Maria\", 6, 8, 7],\n  &#91;\"Pedro\", 4, 5, 3],\n  &#91;\"Ana\", 9, 8.5, 10],\n  &#91;\"Lucas\", 5, 6, 7]\n];\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agora temos um array principal contendo outros arrays.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos pensar nessa estrutura como uma tabela ou uma planilha:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Aluno<\/th><th>Nota 1<\/th><th>Nota 2<\/th><th>Nota 3<\/th><\/tr><\/thead><tbody><tr><td>Jo\u00e3o<\/td><td>8<\/td><td>7<\/td><td>9<\/td><\/tr><tr><td>Maria<\/td><td>6<\/td><td>8<\/td><td>7<\/td><\/tr><tr><td>Pedro<\/td><td>4<\/td><td>5<\/td><td>3<\/td><\/tr><tr><td>Ana<\/td><td>9<\/td><td>8.5<\/td><td>10<\/td><\/tr><tr><td>Lucas<\/td><td>5<\/td><td>6<\/td><td>7<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Essa organiza\u00e7\u00e3o em <strong>linhas e colunas<\/strong> \u00e9 o que torna as matrizes t\u00e3o \u00fateis.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Como funcionam os \u00edndices de uma matriz?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para acessar uma informa\u00e7\u00e3o espec\u00edfica precisamos indicar sua posi\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alunos&#91;0]&#91;0]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O resultado ser\u00e1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Jo\u00e3o\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alunos&#91;0]&#91;1]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">retorna:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>8\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos interpretar os dois \u00edndices assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alunos&#91;linha]&#91;coluna]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Portanto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alunos&#91;1]&#91;0]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">acessa a linha de \u00edndice <code>1<\/code> e a coluna de \u00edndice <code>0<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Maria\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Uma boa maneira de entender isso \u00e9 imaginar as coordenadas de uma tabela.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Projeto pr\u00e1tico: Boletim de Alunos<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Agora que entendemos vetor, \u00edndice, linha e coluna, podemos utilizar esses conceitos em um projeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nosso objetivo ser\u00e1 transformar a matriz de alunos em um boletim exibido no navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para cada aluno, o programa dever\u00e1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>acessar seu nome;<\/li>\n\n\n\n<li>percorrer suas notas;<\/li>\n\n\n\n<li>somar as notas;<\/li>\n\n\n\n<li>calcular sua m\u00e9dia;<\/li>\n\n\n\n<li>verificar sua situa\u00e7\u00e3o;<\/li>\n\n\n\n<li>criar uma linha na tabela;<\/li>\n\n\n\n<li>exibir os dados no HTML.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ao final tamb\u00e9m vamos mostrar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>total de alunos;<\/li>\n\n\n\n<li>quantidade de aprovados;<\/li>\n\n\n\n<li>quantidade de reprovados;<\/li>\n\n\n\n<li>m\u00e9dia geral da turma.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O fluxo ser\u00e1:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Matriz \u2192 La\u00e7o de repeti\u00e7\u00e3o \u2192 C\u00e1lculo da m\u00e9dia \u2192 Condi\u00e7\u00e3o \u2192 HTML<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Percorrendo as linhas da matriz<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Como temos v\u00e1rios alunos, n\u00e3o faz sentido acessar cada posi\u00e7\u00e3o manualmente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos utilizar um <code>for<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for (let i = 0; i &lt; alunos.length; i++) {\n  const nome = alunos&#91;i]&#91;0];\n\n  console.log(nome);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse caso, a vari\u00e1vel <code>i<\/code> representa a linha que estamos percorrendo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A cada repeti\u00e7\u00e3o teremos um aluno diferente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Percorrendo as colunas com um segundo for<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Existe agora outro problema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada aluno possui v\u00e1rias notas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Precisamos percorrer tamb\u00e9m as informa\u00e7\u00f5es existentes dentro de cada linha.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para isso podemos utilizar um <strong>la\u00e7o de repeti\u00e7\u00e3o dentro de outro la\u00e7o de repeti\u00e7\u00e3o<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for (let i = 0; i &lt; alunos.length; i++) {\n\n  let somaNotas = 0;\n\n  for (let j = 1; j &lt; alunos&#91;i].length; j++) {\n    somaNotas += alunos&#91;i]&#91;j];\n  }\n\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O primeiro <code>for<\/code> percorre os alunos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O segundo percorre as notas daquele aluno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Observe que <code>j<\/code> come\u00e7a em <code>1<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso acontece porque:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alunos&#91;i]&#91;0]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">cont\u00e9m o nome.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As notas come\u00e7am na pr\u00f3xima coluna.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Calculando a m\u00e9dia<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de somar as notas precisamos descobrir quantas notas existem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos fazer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const quantidadeNotas = alunos&#91;i].length - 1;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Subtra\u00edmos <code>1<\/code> porque o primeiro elemento cont\u00e9m o nome do aluno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agora calculamos a m\u00e9dia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const media = somaNotas \/ quantidadeNotas;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tamb\u00e9m podemos guardar as m\u00e9dias para posteriormente calcular a m\u00e9dia geral da turma:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>somaMedias += media;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Verificando aprovado ou reprovado<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de calcular a m\u00e9dia podemos utilizar uma condi\u00e7\u00e3o para determinar a situa\u00e7\u00e3o do aluno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste projeto vamos considerar m\u00e9dia <code>6<\/code> como aprova\u00e7\u00e3o.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const situacao = media &gt;= 6\n  ? \"Aprovado\"\n  : \"Reprovado\";\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tamb\u00e9m podemos criar contadores:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (situacao === \"Aprovado\") {\n  aprovados++;\n} else {\n  reprovados++;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dessa forma, al\u00e9m da situa\u00e7\u00e3o individual, teremos um resumo da turma.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Criando a tabela com JavaScript<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">At\u00e9 agora processamos os dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O pr\u00f3ximo passo \u00e9 lev\u00e1-los para o navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro criamos uma nova linha:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const tr = document.createElement(\"tr\");\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depois montamos seu conte\u00fado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tr.innerHTML = `\n  &lt;td&gt;${nome}&lt;\/td&gt;\n  &lt;td&gt;${alunos&#91;i]&#91;1].toFixed(1)}&lt;\/td&gt;\n  &lt;td&gt;${alunos&#91;i]&#91;2].toFixed(1)}&lt;\/td&gt;\n  &lt;td&gt;${alunos&#91;i]&#91;3].toFixed(1)}&lt;\/td&gt;\n  &lt;td&gt;${media.toFixed(2)}&lt;\/td&gt;\n  &lt;td&gt;${situacao}&lt;\/td&gt;\n`;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Finalmente adicionamos a linha \u00e0 tabela:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tabelaAlunos.appendChild(tr);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esse processo acontece dentro do <code>for<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portanto, a cada aluno uma nova linha \u00e9 criada automaticamente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Manipulando o DOM<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Para que o JavaScript consiga alterar o HTML, primeiro precisamos capturar os elementos da p\u00e1gina.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const tabelaAlunos = document.querySelector(\"#tabelaAlunos\");\n\nconst totalAlunos = document.querySelector(\"#totalAlunos\");\nconst totalAprovados = document.querySelector(\"#totalAprovados\");\nconst totalReprovados = document.querySelector(\"#totalReprovados\");\nconst mediaGeral = document.querySelector(\"#mediaGeral\");\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A partir desse momento o JavaScript pode atualizar esses elementos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse processo faz parte da <strong>manipula\u00e7\u00e3o do DOM<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Exibindo o resumo da turma<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que todos os alunos forem processados, podemos mostrar os resultados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>totalAlunos.textContent = alunos.length;\n\ntotalAprovados.textContent = aprovados;\n\ntotalReprovados.textContent = reprovados;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para calcular a m\u00e9dia geral:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const resultadoMediaGeral =\n  somaMedias \/ alunos.length;\n\nmediaGeral.textContent =\n  resultadoMediaGeral.toFixed(1);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 importante perceber que esse c\u00f3digo fica <strong>fora do <code>for<\/code><\/strong>, pois queremos exibir o resultado somente depois que todos os alunos forem processados.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Entendendo o fluxo completo<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">O projeto pode parecer grande quando observamos o c\u00f3digo pronto, mas ele \u00e9 formado por pequenas etapas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro armazenamos os dados:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Matriz<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois percorremos os alunos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Primeiro <code>for<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro de cada aluno percorremos as notas:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Segundo <code>for<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois fazemos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Soma \u2192 M\u00e9dia \u2192 Condi\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E finalmente:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>JavaScript \u2192 DOM \u2192 HTML<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa sequ\u00eancia ajuda a entender por que programa\u00e7\u00e3o deve ser aprendida como um processo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de trabalhar com matrizes, procure entender bem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>vari\u00e1veis;<\/li>\n\n\n\n<li>vetores;<\/li>\n\n\n\n<li>\u00edndices;<\/li>\n\n\n\n<li>la\u00e7os de repeti\u00e7\u00e3o;<\/li>\n\n\n\n<li>condi\u00e7\u00f5es.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Depois disso, trabalhar com uma matriz fica muito mais simples.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Todo array \u00e9 uma matriz?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos ter um array simples com apenas uma dimens\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const numeros = &#91;10, 20, 30, 40];\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse caso temos apenas uma sequ\u00eancia de valores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1 no exemplo dos alunos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const alunos = &#91;\n  &#91;\"Jo\u00e3o\", 8, 7, 9],\n  &#91;\"Maria\", 6, 8, 7]\n];\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">temos arrays dentro de outro array, permitindo representar dados em linhas e colunas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa diferen\u00e7a \u00e9 importante para entender por que precisamos de mais de um \u00edndice para acessar determinadas informa\u00e7\u00f5es.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Onde matrizes podem ser utilizadas?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Matrizes podem aparecer em v\u00e1rios tipos de aplica\u00e7\u00f5es:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>boletins escolares;<\/li>\n\n\n\n<li>tabelas;<\/li>\n\n\n\n<li>planilhas;<\/li>\n\n\n\n<li>jogos;<\/li>\n\n\n\n<li>mapas;<\/li>\n\n\n\n<li>calend\u00e1rios;<\/li>\n\n\n\n<li>relat\u00f3rios;<\/li>\n\n\n\n<li>processamento de dados;<\/li>\n\n\n\n<li>organiza\u00e7\u00e3o de informa\u00e7\u00f5es em linhas e colunas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O mais importante n\u00e3o \u00e9 decorar a sintaxe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 entender a estrutura dos dados e descobrir como percorr\u00ea-los.<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">O que aprendemos neste projeto?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Neste projeto utilizamos v\u00e1rios conceitos importantes do JavaScript trabalhando juntos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>arrays;<\/li>\n\n\n\n<li>matrizes;<\/li>\n\n\n\n<li>\u00edndices;<\/li>\n\n\n\n<li>linhas e colunas;<\/li>\n\n\n\n<li>propriedade <code>length<\/code>;<\/li>\n\n\n\n<li>la\u00e7o <code>for<\/code>;<\/li>\n\n\n\n<li>la\u00e7os de repeti\u00e7\u00e3o encadeados;<\/li>\n\n\n\n<li>condi\u00e7\u00f5es;<\/li>\n\n\n\n<li>operador tern\u00e1rio;<\/li>\n\n\n\n<li>c\u00e1lculo de m\u00e9dia;<\/li>\n\n\n\n<li>manipula\u00e7\u00e3o do DOM;<\/li>\n\n\n\n<li><code>createElement<\/code>;<\/li>\n\n\n\n<li><code>innerHTML<\/code>;<\/li>\n\n\n\n<li><code>appendChild<\/code>;<\/li>\n\n\n\n<li><code>textContent<\/code>;<\/li>\n\n\n\n<li>template literals.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Perceba que a matriz foi apenas o ponto de partida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O projeto mostra como diferentes fundamentos da programa\u00e7\u00e3o come\u00e7am a se conectar quando constru\u00edmos uma aplica\u00e7\u00e3o real.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Conclus\u00e3o<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Uma <strong>matriz em JavaScript<\/strong> permite organizar dados de forma estruturada e trabalhar com informa\u00e7\u00f5es distribu\u00eddas em linhas e colunas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste projeto come\u00e7amos com um vetor simples, entendemos os \u00edndices e evolu\u00edmos at\u00e9 uma matriz com v\u00e1rios alunos e notas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois utilizamos dois la\u00e7os de repeti\u00e7\u00e3o para percorrer a estrutura, calculamos as m\u00e9dias, verificamos a situa\u00e7\u00e3o de cada aluno e usamos JavaScript para gerar o resultado diretamente no HTML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse \u00e9 um bom exemplo de por que aprender programa\u00e7\u00e3o em etapas faz diferen\u00e7a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o tente decorar todo o c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entenda primeiro o que cada parte resolve e depois conecte as etapas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udcfa Matriz em JavaScript na pr\u00e1tica \u2014 assista \u00e0 aula<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Nesta nova aula do <strong>Desvendando o C\u00f3digo<\/strong>, desenvolvemos o projeto passo a passo, come\u00e7ando pelos conceitos de vetor, \u00edndice, linhas e colunas at\u00e9 chegar ao boletim funcionando no navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea ver\u00e1 na pr\u00e1tica como utilizar uma matriz, percorrer seus dados com <code>for<\/code>, calcular m\u00e9dias, verificar aprovado ou reprovado e gerar uma tabela dinamicamente com JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83c\udfa5 V\u00eddeo atualizado da aula:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Como Usar Matriz em JavaScript na Pr\u00e1tica | Projeto com HTML, CSS e JavaScript\" width=\"960\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/eFNmg89pG7E?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Desvendando o C\u00f3digo \u2014 Prof. Marcos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aprenda programa\u00e7\u00e3o entendendo o processo e colocando o conhecimento em pr\u00e1tica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Publicado em: 05 de maio de 2024Atualizado em: 18 de agosto de 2026 Este artigo foi atualizado com um novo projeto pr\u00e1tico para mostrar como utilizar matrizes em JavaScript em uma aplica\u00e7\u00e3o com HTML e CSS, percorrendo linhas e colunas, calculando m\u00e9dias e exibindo os resultados dinamicamente na p\u00e1gina. Aprender matriz em JavaScript fica muito mais f\u00e1cil quando conseguimos visualizar onde esse conceito pode ser utilizado. Neste projeto vamos criar um Boletim de Alunos. Os nomes e notas ser\u00e3o armazenados em uma matriz e o JavaScript ficar\u00e1 respons\u00e1vel por percorrer os dados, calcular as m\u00e9dias, verificar quem foi aprovado ou reprovado e gerar uma tabela no HTML. Antes de come\u00e7ar o projeto, por\u00e9m, precisamos entender alguns conceitos importantes. O que \u00e9 um vetor em JavaScript? Um vetor, tamb\u00e9m chamado de array, permite armazenar v\u00e1rios valores dentro de uma \u00fanica vari\u00e1vel. Por exemplo: Nesse vetor temos o nome de um aluno e suas tr\u00eas notas. Cada elemento possui uma posi\u00e7\u00e3o, chamada de \u00edndice. Um detalhe muito importante \u00e9 que os \u00edndices de um array em JavaScript come\u00e7am em zero. Por isso, o primeiro elemento est\u00e1 no \u00edndice 0, e n\u00e3o no \u00edndice 1. O que \u00e9 uma matriz em JavaScript? Podemos evoluir o exemplo anterior armazenando v\u00e1rios alunos: Agora temos um array principal contendo outros arrays. Podemos pensar nessa estrutura como uma tabela ou uma planilha: Aluno Nota 1 Nota 2 Nota 3 Jo\u00e3o 8 7 9 Maria 6 8 7 Pedro 4 5 3 Ana 9 8.5 10 Lucas 5 6 7 Essa organiza\u00e7\u00e3o em linhas e colunas \u00e9 o que torna as matrizes t\u00e3o \u00fateis. Como funcionam os \u00edndices de uma matriz? Para acessar uma informa\u00e7\u00e3o espec\u00edfica precisamos indicar sua posi\u00e7\u00e3o. Por exemplo: O resultado ser\u00e1: J\u00e1: retorna: Podemos interpretar os dois \u00edndices assim: Portanto: acessa a linha de \u00edndice 1 e a coluna de \u00edndice 0: Uma boa maneira de entender isso \u00e9 imaginar as coordenadas de uma tabela. Projeto pr\u00e1tico: Boletim de Alunos Agora que entendemos vetor, \u00edndice, linha e coluna, podemos utilizar esses conceitos em um projeto. Nosso objetivo ser\u00e1 transformar a matriz de alunos em um boletim exibido no navegador. Para cada aluno, o programa dever\u00e1: Ao final tamb\u00e9m vamos mostrar: O fluxo ser\u00e1: Matriz \u2192 La\u00e7o de repeti\u00e7\u00e3o \u2192 C\u00e1lculo da m\u00e9dia \u2192 Condi\u00e7\u00e3o \u2192 HTML Percorrendo as linhas da matriz Como temos v\u00e1rios alunos, n\u00e3o faz sentido acessar cada posi\u00e7\u00e3o manualmente. Podemos utilizar um for: Nesse caso, a vari\u00e1vel i representa a linha que estamos percorrendo. A cada repeti\u00e7\u00e3o teremos um aluno diferente. Percorrendo as colunas com um segundo for Existe agora outro problema. Cada aluno possui v\u00e1rias notas. Precisamos percorrer tamb\u00e9m as informa\u00e7\u00f5es existentes dentro de cada linha. Para isso podemos utilizar um la\u00e7o de repeti\u00e7\u00e3o dentro de outro la\u00e7o de repeti\u00e7\u00e3o: O primeiro for percorre os alunos. O segundo percorre as notas daquele aluno. Observe que j come\u00e7a em 1. Isso acontece porque: cont\u00e9m o nome. As notas come\u00e7am na pr\u00f3xima coluna. Calculando a m\u00e9dia Depois de somar as notas precisamos descobrir quantas notas existem. Podemos fazer: Subtra\u00edmos 1 porque o primeiro elemento cont\u00e9m o nome do aluno. Agora calculamos a m\u00e9dia: Tamb\u00e9m podemos guardar as m\u00e9dias para posteriormente calcular a m\u00e9dia geral da turma: Verificando aprovado ou reprovado Depois de calcular a m\u00e9dia podemos utilizar uma condi\u00e7\u00e3o para determinar a situa\u00e7\u00e3o do aluno. Neste projeto vamos considerar m\u00e9dia 6 como aprova\u00e7\u00e3o. Tamb\u00e9m podemos criar contadores: Dessa forma, al\u00e9m da situa\u00e7\u00e3o individual, teremos um resumo da turma. Criando a tabela com JavaScript At\u00e9 agora processamos os dados. O pr\u00f3ximo passo \u00e9 lev\u00e1-los para o navegador. Primeiro criamos uma nova linha: Depois montamos seu conte\u00fado: Finalmente adicionamos a linha \u00e0 tabela: Esse processo acontece dentro do for. Portanto, a cada aluno uma nova linha \u00e9 criada automaticamente. Manipulando o DOM Para que o JavaScript consiga alterar o HTML, primeiro precisamos capturar os elementos da p\u00e1gina. A partir desse momento o JavaScript pode atualizar esses elementos. Esse processo faz parte da manipula\u00e7\u00e3o do DOM. Exibindo o resumo da turma Depois que todos os alunos forem processados, podemos mostrar os resultados: Para calcular a m\u00e9dia geral: \u00c9 importante perceber que esse c\u00f3digo fica fora do for, pois queremos exibir o resultado somente depois que todos os alunos forem processados. Entendendo o fluxo completo O projeto pode parecer grande quando observamos o c\u00f3digo pronto, mas ele \u00e9 formado por pequenas etapas. Primeiro armazenamos os dados: Matriz Depois percorremos os alunos: Primeiro for Dentro de cada aluno percorremos as notas: Segundo for Depois fazemos: Soma \u2192 M\u00e9dia \u2192 Condi\u00e7\u00e3o E finalmente: JavaScript \u2192 DOM \u2192 HTML Essa sequ\u00eancia ajuda a entender por que programa\u00e7\u00e3o deve ser aprendida como um processo. Antes de trabalhar com matrizes, procure entender bem: Depois disso, trabalhar com uma matriz fica muito mais simples. Todo array \u00e9 uma matriz? N\u00e3o. Podemos ter um array simples com apenas uma dimens\u00e3o: Nesse caso temos apenas uma sequ\u00eancia de valores. J\u00e1 no exemplo dos alunos: temos arrays dentro de outro array, permitindo representar dados em linhas e colunas. Essa diferen\u00e7a \u00e9 importante para entender por que precisamos de mais de um \u00edndice para acessar determinadas informa\u00e7\u00f5es. Onde matrizes podem ser utilizadas? Matrizes podem aparecer em v\u00e1rios tipos de aplica\u00e7\u00f5es: O mais importante n\u00e3o \u00e9 decorar a sintaxe. \u00c9 entender a estrutura dos dados e descobrir como percorr\u00ea-los. O que aprendemos neste projeto? Neste projeto utilizamos v\u00e1rios conceitos importantes do JavaScript trabalhando juntos: Perceba que a matriz foi apenas o ponto de partida. O projeto mostra como diferentes fundamentos da programa\u00e7\u00e3o come\u00e7am a se conectar quando constru\u00edmos uma aplica\u00e7\u00e3o real. Conclus\u00e3o Uma matriz em JavaScript permite organizar dados de forma estruturada e trabalhar com informa\u00e7\u00f5es distribu\u00eddas em linhas e colunas. Neste projeto come\u00e7amos com um vetor simples, entendemos os \u00edndices e evolu\u00edmos at\u00e9 uma matriz com v\u00e1rios alunos e notas. Depois utilizamos dois la\u00e7os de repeti\u00e7\u00e3o para percorrer a estrutura, calculamos as m\u00e9dias, verificamos a situa\u00e7\u00e3o de cada aluno e usamos JavaScript para gerar o resultado diretamente no HTML. Esse \u00e9 um bom exemplo de por que aprender programa\u00e7\u00e3o em etapas faz diferen\u00e7a. N\u00e3o tente decorar todo o c\u00f3digo. Entenda primeiro o que cada parte resolve e depois conecte as etapas. \ud83d\udcfa Matriz em JavaScript na pr\u00e1tica \u2014 assista \u00e0 aula Nesta nova aula do Desvendando o C\u00f3digo, desenvolvemos o projeto passo a passo, come\u00e7ando pelos conceitos de vetor, \u00edndice, linhas e colunas at\u00e9 chegar ao boletim funcionando no navegador. Voc\u00ea ver\u00e1 na pr\u00e1tica como utilizar uma matriz, percorrer seus dados com for, calcular m\u00e9dias, verificar aprovado ou reprovado e gerar uma tabela dinamicamente com JavaScript. \ud83c\udfa5 V\u00eddeo atualizado da aula: Desvendando o C\u00f3digo \u2014 Prof. Marcos Aprenda programa\u00e7\u00e3o entendendo o processo e colocando o conhecimento em pr\u00e1tica.<\/p>\n","protected":false},"author":1,"featured_media":2329,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1017","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1017"}],"version-history":[{"count":13,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions"}],"predecessor-version":[{"id":2334,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions\/2334"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/media\/2329"}],"wp:attachment":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}