Calcular Potências e Expoentes em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderá a calcular potências e expoentes em programação C. O laboratório cobre dois passos principais: ler os valores da base e do expoente do utilizador e, em seguida, calcular a potência usando um loop manual ou a função incorporada pow(). No final deste laboratório, terá uma compreensão sólida de como realizar cálculos de potência em C, uma operação fundamental em muitas aplicações matemáticas e científicas.

Ler Base e Expoente

Neste passo, aprenderá a ler os valores da base e do expoente para calcular potências num programa C. Criaremos um programa simples que solicita ao utilizador que introduza estes valores.

Primeiro, crie um novo ficheiro C no diretório ~/project:

cd ~/project
nano power_calculation.c

Agora, introduza o seguinte código para ler a base e o expoente:

#include <stdio.h>

int main() {
    int base, exponent;

    // Solicitar ao utilizador que introduza a base
    printf("Introduza o número base: ");
    scanf("%d", &base);

    // Solicitar ao utilizador que introduza o expoente
    printf("Introduza o expoente: ");
    scanf("%d", &exponent);

    // Imprimir os valores introduzidos
    printf("Base: %d\n", base);
    printf("Expoente: %d\n", exponent);

    return 0;
}

Vamos compilar e executar o programa:

gcc power_calculation.c -o power_calculation
./power_calculation

Exemplo de saída:

Introduza o número base: 5
Introduza o expoente: 3
Base: 5
Expoente: 3

Explicação do código:

  • A função scanf() é usada para ler a entrada inteira do utilizador
  • %d é o especificador de formato para inteiros
  • &base e &exponent passam os endereços de memória onde os valores de entrada serão armazenados
  • O programa simplesmente lê e apresenta os valores da base e do expoente.

Este passo estabelece as bases para o cálculo de potências, obtendo primeiro a entrada necessária do utilizador.

Utilizar um Loop ou a Função pow()

Neste passo, aprenderá dois métodos para calcular potências em C: utilizando um loop manual e utilizando a função incorporada pow() da biblioteca matemática.

Primeiro, vamos modificar o ficheiro anterior power_calculation.c para implementar o cálculo de potências:

cd ~/project
nano power_calculation.c

Método 1: Utilizando um Loop

#include <stdio.h>

int calculate_power_loop(int base, int exponent) {
    int result = 1;
    for (int i = 0; i < exponent; i++) {
        result *= base;
    }
    return result;
}

int main() {
    int base, exponent;

    printf("Introduza o número base: ");
    scanf("%d", &base);

    printf("Introduza o expoente: ");
    scanf("%d", &exponent);

    int power_result = calculate_power_loop(base, exponent);

    printf("%d elevado à potência de %d é: %d\n", base, exponent, power_result);

    return 0;
}

Método 2: Utilizando a Função pow()

#include <stdio.h>
#include <math.h>

int main() {
    int base, exponent;

    printf("Introduza o número base: ");
    scanf("%d", &base);

    printf("Introduza o expoente: ");
    scanf("%d", &exponent);

    // Nota: pow() retorna um double, por isso fazemos a conversão para int
    int power_result = (int)pow(base, exponent);

    printf("%d elevado à potência de %d é: %d\n", base, exponent, power_result);

    return 0;
}

Compile o programa com a biblioteca matemática:

gcc power_calculation.c -o power_calculation -lm

Exemplo de saída:

Introduza o número base: 2
Introduza o expoente: 3
2 elevado à potência de 3 é: 8

Explicação do código:

  • O método de loop multiplica manualmente a base por si mesma exponent vezes.
  • A função pow() da biblioteca math.h fornece um cálculo de potência incorporado.
  • O sinal -lm é necessário para ligar a biblioteca matemática durante a compilação.
  • Convertemos o resultado de pow() para int para corresponder ao nosso cálculo inteiro.

Imprimir o Resultado

Neste passo, irá melhorar o programa de cálculo de potências para fornecer uma saída mais detalhada e formatada, demonstrando diferentes formas de apresentar resultados em C.

Vamos modificar o ficheiro power_calculation.c:

cd ~/project
nano power_calculation.c

Adicione o seguinte código abrangente:

#include <stdio.h>
#include <math.h>

void print_power_result(int base, int exponent, int result) {
    // Formato de impressão básico
    printf("Resultado Básico: %d^%d = %d\n", base, exponent, result);

    // Impressão formatada com alinhamento
    printf("Resultado Formatado: %2d elevado à potência de %2d igual a %5d\n",
           base, exponent, result);

    // Notação científica para números maiores
    printf("Notação Científica: %d^%d = %.2e\n", base, exponent, pow(base, exponent));
}

int calculate_power_loop(int base, int exponent) {
    int result = 1;
    for (int i = 0; i < exponent; i++) {
        result *= base;
    }
    return result;
}

int main() {
    int base, exponent;

    printf("Introduza o número base: ");
    scanf("%d", &base);

    printf("Introduza o expoente: ");
    scanf("%d", &exponent);

    int power_result = calculate_power_loop(base, exponent);

    // Chamar a função para imprimir os resultados
    print_power_result(base, exponent, power_result);

    return 0;
}

Compile o programa:

gcc power_calculation.c -o power_calculation -lm

Execute o programa:

./power_calculation

Exemplo de saída:

Introduza o número base: 5
Introduza o expoente: 3
Resultado Básico: 5^3 = 125
Resultado Formatado:  5 elevado à potência de  3 igual a   125
Notação Científica: 5^3 = 1.25e+02

Explicação do código:

  • print_power_result() demonstra múltiplos formatos de impressão
  • A impressão básica mostra o cálculo simples
  • A impressão formatada utiliza especificadores de largura para alinhamento
  • A notação científica é útil para números grandes
  • %.2e apresenta o número em notação científica com 2 casas decimais.

Resumo

Neste laboratório, aprendeu a ler os valores da base e do expoente do utilizador e, em seguida, calcular a potência utilizando dois métodos diferentes: um loop manual e a função incorporada pow(). Implementou a função de cálculo de potência baseada em loop e a chamada da função pow(), e, em seguida, comparou os resultados. Isto permitiu-lhe compreender as diferentes abordagens para calcular potências e expoentes na programação C.