Maison >développement back-end >tutoriel php >Comment créer une calculatrice PHP à l'aide de l'algorithme Shunting Yard ?

Comment créer une calculatrice PHP à l'aide de l'algorithme Shunting Yard ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-08 17:53:11237parcourir

How to Build a PHP Calculator Using the Shunting Yard Algorithm?

Comment créer une calculatrice en PHP à l'aide de l'algorithme Shunting Yard

Introduction :

Création d'une calculatrice capable de gérer les expressions algébriques simples saisies en notation normale présentent un défi, car PHP n'a pas de fonctionnalité intégrée pour l'analyse des expressions. Pour résoudre ce problème, nous pouvons exploiter l'algorithme de triage de manœuvre puissant et efficace.

Mise en œuvre :

  1. Tokénisation : Diviser la chaîne d'entrée en jetons individuels en utilisant les limites de mots et les limites de jetons (par exemple, chiffres, parenthèses, opérateurs).
  2. Algorithme de triage de manœuvre : Convertissez les jetons en notation polonaise inversée (RPN) à l'aide d'une pile. Les opérateurs sont poussés et affichés en fonction de leur priorité et de leur associativité, garantissant ainsi un ordre correct.
  3. Évaluation : Traitez la pile RPN en faisant apparaître les opérateurs et en les évaluant. Repoussez les résultats sur la pile.
  4. Gestion des opérateurs et des parenthèses : Implémentez des classes qui encapsulent les opérateurs et les parenthèses, leur permettant d'opérer sur la pile et de gérer des cas particuliers.

Exemple de code :

Mise en œuvre de la gare de triage L'algorithme nécessite une série de classes et de fonctions qui représentent les différents composants. Voici un aperçu :

class TerminalExpression {
    // Represents operands and operators
}

class Number extends TerminalExpression {
    // Represents numeric values
}

class Operator extends TerminalExpression {
    // Represents arithmetic operators (+, -, *, /, ^)
}

class Parenthesis extends TerminalExpression {
    // Represents parentheses ((), used for grouping)
}

class Stack {
    // A simple stack data structure
}

class Math {
    // Contains the logic for evaluation and parsing
}

Exemple d'utilisation :

Une fois implémentée, vous pouvez utiliser la calculatrice comme suit :

$math = new Math();
$result = $math->evaluate("(2 + 3) * 4");
echo $result; // Output: 20

Avantages de la gare de triage Algorithme :

  • Analyse efficace et précise des expressions algébriques
  • Prend en charge la priorité et l'associativité des opérateurs
  • Évite le besoin d'une manipulation coûteuse de chaînes ou d'expressions régulières complexes
  • Gère les expressions complexes impliquant des parenthèses et des calculs
  • Peut être étendu pour prendre en charge des opérations mathématiques plus complexes

En utilisant l'algorithme Shunting Yard, vous pouvez créer une calculatrice PHP capable d'évaluer des expressions algébriques simples de manière robuste et performante .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn