Spec Sistemas Com Cpp • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 08.1 — Declaração de Ponteiro e Desreferenciação em C++

Contexto: Declaração de Ponteiro e Desreferenciação em C++ no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.

Requisitos de Execução:

  1. Manipular memória apontada por ponteiro com *ptr e inspecionar endereços no formato C++.

Resultado Esperado

Ponteiro bruto manipulando variável no stack.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_1_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>

int main() {
    int valor{100};
    int* ptr{&valor};
    std::cout << "Endereco: " << ptr << " | Valor: " << *ptr << std::endl;
    *ptr = 250;
    std::cout << "Novo valor: " << valor << std::endl;
    return 0;
}

🔍 Nível 2: Prática

Problema 08.2 — Aritmética de Ponteiros em Arrays Nativos

Contexto: Aritmética de Ponteiros em Arrays Nativos no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.

Requisitos de Execução:

  1. Percorrer array através de ponteiros *(ptr + i) e demonstrar a distância em bytes entre elementos.

Resultado Esperado

Array percorrido via aritmética de ponteiros.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_2_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>

int main() {
    int dados[]{10, 20, 30, 40};
    int* p = dados;
    for (int i = 0; i < 4; i++) {
        std::cout << "Elemento " << i << ": " << *(p + i) << std::endl;
    }
    return 0;
}

⚡ Nível 3: Integração

Problema 08.3 — Ponteiros Nulos com nullptr e Proteção contra Desreferenciação Inválida

Contexto: Ponteiros Nulos com nullptr e Proteção contra Desreferenciação Inválida no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.

Requisitos de Execução:

  1. Utilizar literal fortemente tipado nullptr verificando a validade antes do acesso à memória.

Resultado Esperado

Acesso protegido contra Null Pointer Dereference.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_3_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>

void executar(int* p) {
    if (p != nullptr) {
        std::cout << "Executando com valor: " << *p << std::endl;
    } else {
        std::cout << "Ponteiro nulo recebido com seguranca." << std::endl;
    }
}

int main() {
    executar(nullptr);
    return 0;
}

🏆 Nível 4: Desafio Corporativo

Problema 08.4 — Ponteiros Opaque (PIMPL Idiom) para Encapsulamento Total de Headers

Contexto: Ponteiros Opaque (PIMPL Idiom) para Encapsulamento Total de Headers no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.

Requisitos de Execução:

  1. Implementar o idioma PIMPL (Pointer to Implementation) para isolar detalhes de implementação e acelerar compilação.

Resultado Esperado

Idioma PIMPL implementado desacoplando headers corporativos.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_4_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <memory>

class MotorEngine {
    struct Impl;
    std::unique_ptr<Impl> pimpl;
public:
    MotorEngine();
    ~MotorEngine();
    void rodar();
};

struct MotorEngine::Impl {
    void executar() { std::cout << "Motor interno rodando via PIMPL.\n"; }
};

MotorEngine::MotorEngine() : pimpl(std::make_unique<Impl>()) {}
MotorEngine::~MotorEngine() = default;
void MotorEngine::rodar() { pimpl->executar(); }

int main() {
    MotorEngine m;
    m.rodar();
    return 0;
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos