🧩 Exercícios: Matrizes Bidimensionais, Alocação Contígua e Algoritmos
🧩 Exercícios Práticos: Matrizes Bidimensionais, Alocação Contígua e Algoritmos
Spec Sistemas Com Go • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 06.1 — Declaração e Inicialização de Matriz 2D Fixa
Contexto: Declaração e Inicialização de Matriz 2D Fixa no contexto de Matrizes Bidimensionais, Alocação Contígua e Algoritmos.
Requisitos de Execução:
- Declarar matriz 3x3 de inteiros e preencher diagonal principal com valor 1.
Resultado Esperado
Matriz identidade 3x3 gerada com sucesso.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_06_1_SeuNome - Envie na tarefa:
Atividade Cap 06 - Matrizes Bidimensionais, Alocação Contígua e Algoritmos
🔑 Gabarito de Código & Solução Comentada
package main
import "fmt"
func main() {
var mat [3][3]int
for i := 0; i < 3; i++ {
mat[i][i] = 1
}
fmt.Printf("Matriz Identidade: %v\n", mat)
}
🔍 Nível 2: Prática
Problema 06.2 — Matrizes Dinâmicas (Slice de Slices)
Contexto: Matrizes Dinâmicas (Slice de Slices) no contexto de Matrizes Bidimensionais, Alocação Contígua e Algoritmos.
Requisitos de Execução:
- Criar matriz NxM dinâmica alocando cada linha individualmente com
make([]int, colunas).
Resultado Esperado
Matriz dinâmica instanciada e populada no heap.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_06_2_SeuNome - Envie na tarefa:
Atividade Cap 06 - Matrizes Bidimensionais, Alocação Contígua e Algoritmos
🔑 Gabarito de Código & Solução Comentada
package main
import "fmt"
func main() {
linhas, colunas := 2, 3
mat := make([][]int, linhas)
for i := range mat {
mat[i] = make([]int, colunas)
mat[i][0] = (i + 1) * 10
}
fmt.Printf("Matriz Dinamica: %v\n", mat)
}
⚡ Nível 3: Integração
Problema 06.3 — Multiplicação de Matrizes 2D em Go
Contexto: Multiplicação de Matrizes 2D em Go no contexto de Matrizes Bidimensionais, Alocação Contígua e Algoritmos.
Requisitos de Execução:
- Implementar produto matricial com complexidade O(N^3) iterando sobre linhas e colunas.
Resultado Esperado
Produto matricial calculado e validado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_06_3_SeuNome - Envie na tarefa:
Atividade Cap 06 - Matrizes Bidimensionais, Alocação Contígua e Algoritmos
🔑 Gabarito de Código & Solução Comentada
package main
import "fmt"
func main() {
a := [][]int{{1, 2}, {3, 4}}
b := [][]int{{2, 0}, {1, 2}}
c := [][]int{{0, 0}, {0, 0}}
for i := 0; i < 2; i++ {
for j := 0; j < 2; j++ {
for k := 0; k < 2; k++ {
c[i][j] += a[i][k] * b[k][j]
}
}
}
fmt.Printf("Resultado C[0][0]=%d, C[1][1]=%d\n", c[0][0], c[1][1])
}
🏆 Nível 4: Desafio Corporativo
Problema 06.4 — Representação Linear de Matriz 2D em Slice Unidimensional (Index Flat)
Contexto: Representação Linear de Matriz 2D em Slice Unidimensional (Index Flat) no contexto de Matrizes Bidimensionais, Alocação Contígua e Algoritmos.
Requisitos de Execução:
- Mapear matriz 2D em slice 1D com índice
i * colunas + jpara maximizar localidade espacial de CPU cache.
Resultado Esperado
Matriz linearizada (Cache-friendly) operando com alta performance.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_06_4_SeuNome - Envie na tarefa:
Atividade Cap 06 - Matrizes Bidimensionais, Alocação Contígua e Algoritmos
🔑 Gabarito de Código & Solução Comentada
package main
import "fmt"
func main() {
linhas, colunas := 4, 4
matrizLinear := make([]int, linhas*colunas)
// Acesso a mat[2][3]
idx := 2*colunas + 3
matrizLinear[idx] = 99
fmt.Printf("Valor em mat[2][3]: %d\n", matrizLinear[idx])
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |