You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/TDs/S2/02_dataStructures.md
+31-2Lines changed: 31 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,11 +2,28 @@
2
2
title: TD2 - Structures de données
3
3
---
4
4
5
+
import OriginalMotionCanvasPlayer from '@site/src/components/OriginalMotionCanvasPlayer';
6
+
5
7
## Exercice 1 (Evaluation NPI)
6
8
7
-
La notation polonaise inversée (**NPI**) est une notation mathématique qui permet d'exprimer des expressions arithmétiques sans utiliser de parenthèses. Elle a été inventée par le mathématicien polonais **Jan Lukasiewicz** en 1924.
9
+
Le but de cet exercice est d'écrire un programme qui permet d'évaluer une expression mathématique.
10
+
11
+
Nous allons nous intéresser à une notation particulière, la **notation polonaise inversée** (**NPI**) (ou **Reverse Polish Notation** (**RPN**) en anglais).
12
+
13
+
C'est une notation différente de la notation "classique" que l'on utilise en mathématiques (que l'on appelle la **notation infixe**).
14
+
15
+
En effet dans la notation infixe, les opérateurs sont placés entre les opérandes, et l'ordre des opérations est déterminé par les parenthèses et les règles de priorité des opérateurs.
16
+
17
+
Par exemple, l'expression `3 + 4 * 2` s'interprète comme `3 + (4 * 2) = 11`.
18
+
Ou encore l'expression `(3 + 4) * 2` s'interprète comme `(3 + 4) * 2 = 14`.
19
+
20
+
Cela rend compliqué l'évaluation d'une expression, car il faut gérer les parenthèses et les priorités des opérateurs.
21
+
22
+
---
8
23
9
-
La notation polonaise inversée est une notation **postfixe**, c'est-à-dire que l'opérateur est placé après les deux opérandes. Par exemple, l'expression `3 + 4` s'écrit `3 4 +` en **NPI**.
24
+
La notation polonaise inversée est une notation mathématique qui permet d'exprimer des expressions arithmétiques sans utiliser de parenthèses ni de priorité d'opérateurs. Elle a été inventée par le mathématicien polonais **Jan Lukasiewicz** en 1924.
25
+
26
+
On dit que cette notion est une **notation postfixe** car l'opérateur est placé après les deux opérandes. Par exemple, l'expression `3 + 4` s'écrit `3 4 +` en **NPI**.
10
27
11
28
Ce qui permet ensuite d'interpréter l'expression de gauche à droite, en empilant les opérandes sur une pile, et en déclenchant l'opération lorsque l'on rencontre un opérateur.
12
29
@@ -25,11 +42,23 @@ Il faut cependant faire attention aux opérateurs **non commutatifs**, comme `-`
25
42
Dans l'algorithmique de l'évaluation, le premier élément défilé de la pile sera l'**opérande de droite** et le deuxième élément défilé sera l'**opérande de gauche**.
26
43
:::
27
44
45
+
Voilà un exemple plus complexe avec l'expression `1 * 5 + 4 + (8 + 6) / (9 - 2)` qui s'écrit en **NPI**`1 5 * 4 + 8 6 + 9 2 - / +` :
46
+
47
+
<OriginalMotionCanvasPlayername="RPN" />
48
+
28
49
Le but de cet exercice est d'écrire un programme qui permet d'évaluer une expression en **NPI** sous forme d'une chaîne de caractères (les différents éléments de l'expression sont séparés par des espaces), et retourner le résultat de l'expression.
29
50
:::note
30
51
Par simplicité, on se limitera à des expressions contenant des **nombres** (flottants), et les opérateurs `+`, `-`, `*` et `/` (Dans une expression en NPI il y a plus de **parenthèses** (`(` et `)` car l'ordre des opérations est déterminé par l'ordre des opérateurs dans l'expression).
31
52
:::
32
53
54
+
Je vous donne plusieurs expressions et leur équivalent en NPI pour vous permettre de tester votre programme:
1. Écrire un programme qui permet de saisir une expression arithmétique en **notation polonaise inversée** (**NPI**) en tant que chaîne de caractère. On veut que les éléments de cette expression soient séparés par des espaces.
0 commit comments