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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 08.1 — Função com Passagem por Valor e Prototipação

Contexto: Função com Passagem por Valor e Prototipação no contexto de Modularização, Funções, Escopo e Linha de Comando.

Requisitos de Execução:

  1. Declarar protótipo de função double potencia(double base, int exp) no topo e implementar após o main.

Resultado Esperado

Função prototipada e invocada com passagem de parâmetros por valor.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_1_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modularização, Funções, Escopo e Linha de Comando
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

double potencia(double base, int exp);

int main(void) {
    printf("2^8 = %.0f\n", potencia(2.0, 8));
    return 0;
}

double potencia(double base, int exp) {
    double res = 1.0;
    for (int i = 0; i < exp; i++) res *= base;
    return res;
}

🔍 Nível 2: Prática

Problema 08.2 — Argumentos da Linha de Comando (int argc, char *argv[])

Contexto: Argumentos da Linha de Comando (int argc, char *argv[]) no contexto de Modularização, Funções, Escopo e Linha de Comando.

Requisitos de Execução:

  1. Processar argumentos passados via CLI somando os números inteiros fornecidos na invocação do programa.

Resultado Esperado

Soma dos argumentos de linha de comando exibida no console.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_2_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modularização, Funções, Escopo e Linha de Comando
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int soma = 0;
    for (int i = 1; i < argc; i++) {
        soma += atoi(argv[i]);
    }
    printf("Soma dos %d argumentos: %d\n", argc - 1, soma);
    return 0;
}

⚡ Nível 3: Integração

Problema 08.3 — Variáveis Estáticas Locais (static) para Rastreamento de Invocação

Contexto: Variáveis Estáticas Locais (static) para Rastreamento de Invocação no contexto de Modularização, Funções, Escopo e Linha de Comando.

Requisitos de Execução:

  1. Criar função com variável static int contador preservando seu valor entre chamadas sucessivas.

Resultado Esperado

Contador de chamadas incrementado a cada invocação da função.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_3_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modularização, Funções, Escopo e Linha de Comando
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

void registrar_acesso(void) {
    static int acessos = 0;
    acessos++;
    printf("Total de acessos registrados: %d\n", acessos);
}

int main(void) {
    registrar_acesso();
    registrar_acesso();
    registrar_acesso();
    return 0;
}

🏆 Nível 4: Desafio Corporativo

Problema 08.4 — Especificador inline e Atributos de Otimização no GCC

Contexto: Especificador inline e Atributos de Otimização no GCC no contexto de Modularização, Funções, Escopo e Linha de Comando.

Requisitos de Execução:

  1. Declarar função utilitária com inline __attribute__((always_inline)) para eliminação de overhead de chamada em loops críticos.

Resultado Esperado

Função inline compilada diretamente no fluxo de execução sem instrução CALL.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_4_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modularização, Funções, Escopo e Linha de Comando
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

static inline int maximo(int a, int b) {
    return (a > b) ? a : b;
}

int main(void) {
    printf("Max: %d\n", maximo(100, 250));
    return 0;
}

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