🧩 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


🎯 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:

  1. 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)

  1. Salve o arquivo como: Atividade_06_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_06_2_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_06_3_SeuNome
  2. 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:

  1. Mapear matriz 2D em slice 1D com índice i * colunas + j para maximizar localidade espacial de CPU cache.

Resultado Esperado

Matriz linearizada (Cache-friendly) operando com alta performance.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_06_4_SeuNome
  2. 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