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.