Implementar a função EXP com as seguintes características:
Recebe um valor de base e um valor de expoente como parâmetros do tipo unsigned int.

Passo 1

Beleza, o que a questão tá pedindo é simples: criar uma função chamada EXP em C (ou linguagem parecida) que receba dois parâmetros do tipo unsigned int – um é a base e outro é o expoente – e retorne a base elevada ao expoente. O conteúdo aqui envolve noções básicas de laço de repetição (loop) e operação de multiplicação, além de entender a definição matemática de potência.

Passo 2

Antes de sair codando, vamos lembrar o que é potência:
  • Se a gente tem uma base b^e = underbraceb times b times cdots times be vezes e um expoente , a potência é
  • Um caso importante é quando : por definição (desde que ).
    Então, na nossa função, precisamos:
  1. Tratar o caso especial de expoente zero.
  2. Fazer um loop que multiplique a base por ela mesma vezes.

Passo 3

Vamos pensar no passo a passo lógico (pseudocódigo) antes de traduzir pra C:
  1. Se expoente == 0, retorna 1.
  2. Senão, inicializa uma variável resultado = 1.
  3. Faz um loop que vai de 1 até expoente, e em cada iteração faz resultado = resultado * base.
  4. No fim do loop, retorna resultado.

Passo 4

Agora monta a função em C usando esse esquema:
unsigned int EXP(unsigned int base, unsigned int expoente) {
    unsigned int resultado = 1;       // vai guardar b^e
    unsigned int i;                   // contador do loop

    if (expoente == 0) {
        return 1;                     // b^0 = 1
    }

    for (i = 1; i <= expoente; i++) {
        resultado = resultado * base; // multiplica base expoente vezes
    }

    return resultado;
}

Passo 5

O que fizemos aqui?
  • Definimos resultado como 1 porque se você multiplicar 1 por base algumas vezes, vai obter a potência.
  • Tratamos o caso expoente == 0 logo de cara.
  • Usamos um for que repete exatamente expoente vezes, acumulando na variável resultado.
  • Ao final, resultado vale .

Resposta

unsigned int EXP(unsigned int base, unsigned int expoente) {
    unsigned int resultado = 1;
    unsigned int i;

    if (expoente == 0) {
        return 1;
    }

    for (i = 1; i <= expoente; i++) {
        resultado *= base;
    }

    return resultado;
}

Exercícios relacionados