7 Vetores, Matrizes, Fila e Pilha
Este capítulo aprofunda estruturas lineares muito usadas em programação.
7.1 Vetores (arrays unidimensionais)
Vetores armazenam elementos em sequência e cada posição tem um índice.
7.1.1 Exemplo 1: notas de uma turma
const notas = [7.0, 8.5, 6.0, 9.0];
console.log(`Primeira nota: ${notas[0]}`);
console.log(`Quantidade de notas: ${notas.length}`);7.1.2 Exemplo 2: soma e média
const valores = [10, 20, 30, 40];
let soma = 0;
for (let i = 0; i < valores.length; i++) {
soma += valores[i];
}
const media = soma / valores.length;
console.log(`Soma: ${soma} | Média: ${media}`);7.1.3 Exemplo 3: filtro de valores
const numeros = [3, 8, 11, 14, 19, 20];
const pares = numeros.filter((n) => n % 2 === 0);
console.log(pares);7.2 Matrizes (arrays bidimensionais)
Uma matriz é um array de arrays, com linhas e colunas.
7.2.1 Exemplo 1: acesso por linha e coluna
const matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(matriz[1][2]); // 67.2.2 Exemplo 2: percorrer todos os elementos
const tabela = [
[10, 20],
[30, 40],
[50, 60]
];
for (let linha = 0; linha < tabela.length; linha++) {
for (let coluna = 0; coluna < tabela[linha].length; coluna++) {
console.log(`Posição [${linha}][${coluna}] = ${tabela[linha][coluna]}`);
}
}7.2.3 Exemplo 3: diagonal principal
const m = [
[2, 1, 0],
[4, 3, 8],
[9, 7, 6]
];
let diagonal = 0;
for (let i = 0; i < m.length; i++) {
diagonal += m[i][i];
}
console.log(`Soma diagonal principal: ${diagonal}`);7.3 Fila (FIFO: First In, First Out)
Em fila, o primeiro a entrar é o primeiro a sair.
7.3.1 Exemplo 1: atendimento
const fila = [];
fila.push("Aluno 1");
fila.push("Aluno 2");
fila.push("Aluno 3");
const atendido = fila.shift();
console.log(`Atendido: ${atendido}`);
console.log(fila);7.3.2 Exemplo 2: próximo da fila
const filaSenhas = ["A01", "A02", "A03"];
console.log(`Próximo: ${filaSenhas[0]}`);7.3.3 Exemplo 3: fila com validação
const filaLaboratorio = [];
function chamarAluno() {
if (filaLaboratorio.length === 0) {
return "Fila vazia";
}
return filaLaboratorio.shift();
}
console.log(chamarAluno());
filaLaboratorio.push("Carlos");
console.log(chamarAluno());7.4 Pilha (LIFO: Last In, First Out)
Em pilha, o último a entrar é o primeiro a sair.
7.4.1 Exemplo 1: empilhar e desempilhar
const pilha = [];
pilha.push("Prato 1");
pilha.push("Prato 2");
pilha.push("Prato 3");
const removido = pilha.pop();
console.log(`Removido: ${removido}`);
console.log(pilha);7.4.2 Exemplo 2: topo sem remover
const historico = ["home", "produtos", "checkout"];
const topo = historico[historico.length - 1];
console.log(`Página atual: ${topo}`);7.4.3 Exemplo 3: desfazer ação
const acoes = [];
function executar(acao) {
acoes.push(acao);
}
function desfazer() {
if (acoes.length === 0) return "Nada para desfazer";
return `Desfez: ${acoes.pop()}`;
}
executar("Digitou texto");
executar("Apagou linha");
console.log(desfazer());
console.log(desfazer());
console.log(desfazer());7.5 Aplicação prática combinando as estruturas
const filaAtendimento = ["Aluno A", "Aluno B"];
const historicoChamadas = [];
const temposEspera = [4, 6, 3, 5];
const chamado = filaAtendimento.shift();
historicoChamadas.push(chamado);
const mediaEspera =
temposEspera.reduce((acc, t) => acc + t, 0) / temposEspera.length;
console.log(`Chamado agora: ${chamado}`);
console.log(`Média de espera: ${mediaEspera} min`);7.6 Exercícios
- Crie um vetor de 6 números e calcule a média.
- Crie uma matriz
3x2e exiba só os valores maiores que25. - Simule uma fila com 4 pessoas e atenda 2.
- Simule uma pilha de páginas e implemente “voltar”.
- Desafio: combine fila e pilha em um sistema simples de atendimento escolar.