Création d'une calculatrice simple avec C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, nous allons apprendre à créer une calculatrice simple en utilisant le langage de programmation C. La calculatrice sera capable d'effectuer les opérations arithmétiques de base telles que l'addition, la soustraction, la multiplication et la division. Nous allons également implémenter des vérifications pour vous assurer que l'entrée de l'utilisateur est valide et gérer les cas où l'entrée conduit à un comportement indéfini.

👀 Aperçu

$./Calculator
32+11
=43.000000

$./Calculator
41-34.9
=6.100000

$./Calculator
10/2
=5.000000

$./Calculator
2*4
=8.000000

$./Calculator
10%3
=1

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment obtenir l'entrée de l'utilisateur en C en utilisant scanf()
  • Comment vérifier le format de l'expression arithmétique d'entrée
  • Comment effectuer des calculs arithmétiques sur la base de l'entrée de l'utilisateur
  • Comment gérer les erreurs de division par zéro
  • Comment implémenter l'opérateur du reste uniquement pour des opérandes entières

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre comment obtenir l'entrée de l'utilisateur en C
  • Implémenter différentes opérations arithmétiques en C
  • Effectuer des vérifications d'erreur et gérer les entrées invalides
  • Compiler et exécuter des programmes C en utilisant le compilateur gcc

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/switch("Switch") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-298833{{"Création d'une calculatrice simple avec C"}} c/operators -.-> lab-298833{{"Création d'une calculatrice simple avec C"}} c/if_else -.-> lab-298833{{"Création d'une calculatrice simple avec C"}} c/switch -.-> lab-298833{{"Création d'une calculatrice simple avec C"}} c/user_input -.-> lab-298833{{"Création d'une calculatrice simple avec C"}} c/output -.-> lab-298833{{"Création d'une calculatrice simple avec C"}} end

Obtenir l'entrée de l'utilisateur

Obtenir l'entrée de l'utilisateur est très simple, vous pouvez utiliser les fonctions d'entrée/sortie formatées du langage C printf() et scanf().

Voici le code du programme responsable de la lecture de l'entrée de l'utilisateur :

#include<stdio.h>
int main()
{
   double number1=0.0;     // Définir le premier opérande
   double number2=0.0;     // Définir le second opérande
   char operation=0;       // operation devrait être '+', '-', '*', '/' ou '%'

   printf("\nEntrez le calcul\n");
   scanf("%lf%c%lf",&number1,&operation,&number2);

   return 0;
}
✨ Vérifier la solution et pratiquer

Vérification du format et exécution des calculs

La prochaine fonctionnalité que notre programme doit implémenter est de vérifier le format de l'expression arithmétique d'entrée.

La vérification la plus basique est de déterminer si l'opération spécifiée dans l'expression d'entrée est valide. Les opérations valides sont +, -, *, /, %, donc nous devons vérifier si l'opération d'entrée appartient à cet ensemble.

De plus, il est important de noter que lorsque l'opération est / ou %, le second opérande ne peut pas être 0. Si c'est le cas, l'opération est invalide.

La logique de ces vérifications peut être implémentée à l'aide d'instructions if. Alternativement, une instruction switch offre une manière meilleure et plus concise de gérer ceci. Elle est plus facile à comprendre et moins verbeuse que一系列d'instructions if.

switch(operation)
{
    case '+':
        printf("=%lf\n",number1+number2);
        break;

    case '-':
        printf("=%lf\n",number1-number2);
        break;

    case '*':
        printf("=%lf\n",number1*number2);
        break;

    case '/':
        if(number2==0)
            printf("\n\n\aDivision by zero error!\n");
        else
            printf("=%lf\n",number1/number2);
        break;

    case '%':
        if((long)number2==0)
            printf("\n\n\aDivision by zero error!\n");
        else
            printf("=%ld\n",(long)number1%(long)number2);
        break;

    default:
        printf("\n\n\aInvalid operation!\n");
        break;
}

L'opérateur du reste % n'a pas de sens pour les types float ou double, car ils peuvent représenter des résultats précis. L'opérateur % n'a de sens que lorsqu'il est appliqué à des types entiers. Par conséquent, avant d'appliquer cet opérateur, les opérandes doivent être converties en entiers. Lorsque l'opérateur est %, le second opérande est converti en entier. Par conséquent, il n'est pas suffisant de vérifier seulement si le second opérande est 0, mais également si la valeur de number2 est 0 lorsqu'elle est convertie en long. Par exemple, 0.5 n'est pas 0, mais lorsqu'elle est convertie en entier, elle devient 0.

✨ Vérifier la solution et pratiquer

Compiler et exécuter les fichiers

Après avoir écrit le fichier de programme, vous pouvez compiler le fichier source pour obtenir un fichier exécutable. La commande de compilation est la suivante :

gcc -o Calculator Calculator.c

Note : Le format de la commande gcc ci-dessus est gcc -o nom_fichier_sortie nom_fichier_source.c. Si aucun "nom_fichier_sortie" n'est fourni, le nom de fichier de sortie par défaut est a.out.

À ce stade, vous remarquerez un nouveau fichier nommé Calculator dans le répertoire. Il s'agit du fichier exécutable que nous avons obtenu après la compilation et la liaison du fichier source. Pour l'exécuter, utilisez la commande ./Calculator.

./Calculator
$./Calculator
32+11
=43.000000

$./Calculator
41-34.9
=6.100000

$./Calculator
10/2
=5.000000

$./Calculator
2*4
=8.000000

$./Calculator
10%3
=1
✨ Vérifier la solution et pratiquer

Sommaire

Dans ce projet, nous avons utilisé le langage C pour créer une calculatrice simple. Actuellement, la calculatrice a une fonctionnalité limitée et ne peut supporter que des calculs de base avec deux opérandes. Les étudiants peuvent continuer à développer cette calculatrice, par exemple en ajoutant la prise en charge de plusieurs opérandes ou en introduisant des mécanismes de priorité d'opérateurs.