🧩 Exercícios: Modularização, Funções, Escopo e Linha de Comando
Spec Sistemas Com C • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 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:
- 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)
- Salve o arquivo como:
Atividade_08_1_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_08_2_SeuNome - 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:
- Criar função com variável
static int contadorpreservando seu valor entre chamadas sucessivas.
Resultado Esperado
Contador de chamadas incrementado a cada invocação da função.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_08_3_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_08_4_SeuNome - 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 |