SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
02.01.2025

Como Escrever uma Calculadora em C

Introdução

Criar uma calculadora na linguagem de programação C é uma excelente forma para iniciantes se familiarizarem com os fundamentos da programação e entenderem como funcionam as operações aritméticas básicas e a entrada de dados do usuário. Neste artigo, iremos passar pelo processo passo a passo de criação de uma calculadora simples, capaz de realizar as operações aritméticas básicas: adição, subtração, multiplicação e divisão. Também vamos explorar alguns aspectos adicionais, como tratamento de erros e melhoria da interface do usuário.

Ferramentas e Configuração Necessárias

Antes de começarmos a escrever o código, precisamos configurar o ambiente de desenvolvimento. Para escrever programas em C, você precisará das seguintes ferramentas:

  • Compilador C (ex.: GCC)
  • Editor de texto ou Ambiente de Desenvolvimento Integrado (IDE) (ex.: Visual Studio Code ou Code::Blocks)

Instalando o GCC

Para usuários Windows:

  1. Faça o download e instale o MinGW a partir do site oficial.
  2. Adicione o caminho para o MinGW na variável de ambiente PATH.

Para usuários macOS:

  1. Instale as Ferramentas de Linha de Comando do Xcode executando o seguinte comando no terminal:
    xcode-select --install

Para usuários Linux:

  1. Instale o GCC usando o gerenciador de pacotes da sua distribuição. Por exemplo, para o Ubuntu:
    sudo apt-get install build-essential

Instalando um Editor de Texto ou IDE

Você pode usar qualquer editor de texto ou IDE de sua escolha. Recomendamos o Visual Studio Code ou o Code::Blocks, pois são amigáveis ao usuário e têm muitos recursos úteis para programadores iniciantes. O Visual Studio Code oferece uma variedade de extensões que podem aprimorar sua experiência de programação, como a auto-completação de código e um terminal integrado.

Conceitos Básicos da Linguagem C

Antes de prosseguirmos para escrever a calculadora, é essencial entender alguns conceitos-chave da linguagem C:

Variáveis e Tipos de Dados

Em C, variáveis são usadas para armazenar dados. Os principais tipos de dados incluem:

  • int — inteiros
  • float e double — números de ponto flutuante
  • char — caracteres únicos

Exemplo de declaração de variável:

int a = 5;
float b = 3.14;
char c = 'A';

Estruturas Condicionais

As estruturas condicionais permitem que você execute ações diferentes com base em condições. As principais estruturas condicionais incluem if, else if e else.

Exemplo de como usar uma estrutura condicional:

int a = 10;
if (a > 5) {
    printf("a é maior que 5\n");
} else {
    printf("a é menor ou igual a 5\n");
}

Laços de Repetição

Laços são usados para repetir um conjunto de instruções. Os principais laços incluem for, while e do while.

Exemplo de como usar um laço for:

for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}

Funções

Funções permitem que você estruture seu código, tornando-o mais legível e fácil de manter. As funções podem aceitar parâmetros e retornar valores.

Exemplo de declaração de uma função:

int adicionar(int a, int b) {
    return a + b;
}

Criação Passo a Passo de uma Calculadora

Agora que cobrimos os conceitos básicos da linguagem C, vamos começar a criar uma calculadora.

Passo 1: Criando um Projeto

Crie um novo arquivo com a extensão .c, por exemplo, calculadora.c, e abra-o no seu editor de texto ou IDE. Este será o arquivo principal onde escreveremos todo o código da nossa calculadora.

Passo 2: Incluindo Bibliotecas

Para trabalhar com entrada e saída, precisamos incluir a biblioteca padrão de entrada e saída stdio.h.

#include <stdio.h>

Passo 3: Declarando Funções

Para conveniência e organização, criaremos funções separadas para cada operação aritmética. Isso nos permitirá adicionar facilmente novas funções e melhorar as existentes.

float adicionar(float a, float b) {
    return a + b;
}

float subtrair(float a, float b) {
    return a - b;
}

float multiplicar(float a, float b) {
    return a * b;
}

float dividir(float a, float b) {
    if (b != 0) {
        return a / b;
    } else {
        printf("Erro: Divisão por zero!\n");
        return 0;
    }
}

Passo 4: Função Principal

Agora, vamos criar a função principal main, que irá lidar com a entrada do usuário e chamar as funções correspondentes para as operações. Também adicionaremos tratamento de erros para entradas inválidas.

int main() {
    float num1, num2;
    char operador;

    printf("Digite o primeiro número: ");
    scanf("%f", &num1);

    printf("Digite o operador (+, -, *, /): ");
    scanf(" %c", &operador);

    printf("Digite o segundo número: ");
    scanf("%f", &num2);

    switch (operador) {
        case '+':
            printf("Resultado: %.2f\n", adicionar(num1, num2));
            break;
        case '-':
            printf("Resultado: %.2f\n", subtrair(num1, num2));
            break;
        case '*':
            printf("Resultado: %.2f\n", multiplicar(num1, num2));
            break;
        case '/':
            printf("Resultado: %.2f\n", dividir(num1, num2));
            break;
        default:
            printf("Erro: Operador inválido!\n");
    }

    return 0;
}

Passo 5: Compilando e Executando o Programa

Salve o arquivo e abra seu terminal. Navegue até o diretório onde o seu arquivo calculadora.c está localizado e use o seguinte comando para compilar:

gcc calculadora.c -o calculadora

Após a compilação bem-sucedida, execute o programa usando o comando:

./calculadora

Passo 6: Melhorando a Interface do Usuário

Para aprimorar a interface do usuário, você pode adicionar mais instruções e mensagens para o usuário. Por exemplo, implemente verificações para entradas de dados inválidas e solicite que o usuário tente novamente.

int main() {
    float num1, num2;
    char operador;
    int valido = 1;

    do {
        printf("Digite o primeiro número: ");
        if (scanf("%f", &num1) != 1) {
            printf("Erro: Entrada inválida!\n");
            valido = 0;
            while (getchar() != '\n'); // Limpa o buffer de entrada
        } else {
            valido = 1;
        }
    } while (!valido);

    printf("Digite o operador (+, -, *, /): ");
    scanf(" %c", &operador);

    do {
        printf("Digite o segundo número: ");
        if (scanf("%f", &num2) != 1) {
            printf("Erro: Entrada inválida!\n");
            valido = 0;
            while (getchar() != '\n'); // Limpa o buffer de entrada
        } else {
            valido = 1;
        }
    } while (!valido);

    switch (operador) {
        case '+':
            printf("Resultado: %.2f\n", adicionar(num1, num2));
            break;
        case '-':
            printf("Resultado: %.2f\n", subtrair(num1, num2));
            break;
        case '*':
            printf("Resultado: %.2f\n", multiplicar(num1, num2));
            break;
        case '/':
            printf("Resultado: %.2f\n", dividir(num1, num2));
            break;
        default:
            printf("Erro: Operador inválido!\n");
    }

    return 0;
}

Passo 7: Lidando com Operações Adicionais

Para expandir a funcionalidade da calculadora, você pode adicionar suporte para operações adicionais, como exponenciação e cálculo da raiz quadrada. Novas funções precisarão ser adicionadas, e a função principal precisará ser atualizada.

#include <math.h>

float potencia(float base, float expoente) {
    return pow(base, expoente);
}

float raizQuadrada(float numero) {
    if (numero >= 0) {
        return sqrt(numero);
    } else {
        printf("Erro: Número negativo!\n");
        return 0;
    }
}

Atualize a função principal para incluir as novas operações:

int main() {
    float num1, num2;
    char operador;
    int valido = 1;

    do {
        printf("Digite o primeiro número: ");
        if (scanf("%f", &num1) != 1) {
            printf("Erro: Entrada inválida!\n");
            valido = 0;
            while (getchar() != '\n'); // Limpa o buffer de entrada
        } else {
            valido = 1;
        }
    } while (!valido);

    printf("Digite o operador (+, -, *, /, ^, sqrt): ");
    scanf(" %c", &operador);

    if (operador != 'sqrt') {
        do {
            printf("Digite o segundo número: ");
            if (scanf("%f", &num2) != 1) {
                printf("Erro: Entrada inválida!\n");
                valido = 0;
                while (getchar() != '\n'); // Limpa o buffer de entrada
            } else {
                valido = 1;
            }
        } while (!valido);
    }

    switch (operador) {
        case '+':
            printf("Resultado: %.2f\n", adicionar(num1, num2));
            break;
        case '-':
            printf("Resultado: %.2f\n", subtrair(num1, num2));
            break;
        case '*':
            printf("Resultado: %.2f\n", multiplicar(num1, num2));
            break;
        case '/':
            printf("Resultado: %.2f\n", dividir(num1, num2));
            break;
        case '^':
            printf("Resultado: %.2f\n", potencia(num1, num2));
            break;
        case 'sqrt':
            printf("Resultado: %.2f\n", raizQuadrada(num1));
            break;
        default:
            printf("Erro: Operador inválido!\n");
    }

    return 0;
}

Conclusão e Próximos Passos

Abordamos como criar uma calculadora simples em C que realiza operações aritméticas básicas. Este projeto ajudará você a entender melhor os fundamentos da programação em C e como trabalhar com entradas e saídas do usuário. Também implementamos tratamento de erros e melhoramos a interface do usuário para tornar o programa mais amigável.

Os próximos passos podem incluir:

  • Adicionar suporte para operações adicionais (ex.: exponenciação, cálculo da raiz quadrada)
  • Melhorar o tratamento de erros (ex.: verificar entradas de dados inválidas)
  • Criar uma interface do usuário mais complexa
  • Otimizar o código para melhor desempenho
  • Explorar e usar bibliotecas para criar interfaces gráficas do usuário (GUI)

Continue praticando e aprendendo novos conceitos, e em breve você será capaz de criar projetos mais complexos e interessantes! 🚀

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!