Aperçu du sujet
EXERCICE 1 (4 points) Cet exercice composé de deux parties A et B, porte sur les structures de données. Partie A : Expression correctement parenthésée On veut déterminer si une expression arithmétique est correctement parenthésée. Pour chaque parenthèse fermante ")" correspond une parenthèse précédemment ouverte "(". Exemples : - L’expression
EXERCICE 1 (4 points) Cet exercice composé de deux parties A et B, porte sur les structures de données. Partie A : Expression correctement parenthésée On veut déterminer si une expression arithmétique est correctement parenthésée. Pour chaque parenthèse fermante ")" correspond une parenthèse précédemment ouverte "(". Exemples : - L’expression arithmétique "(2+3)×(18/(4+2))" est correctement parenthésée. - L’expression arithmétique "(2+3)×(18/(4+2" est non correctement parenthésée. Pour simplifier les expressions arithmétiques, on enregistre, dans une structure de données, uniquement les parenthèses dans leur ordre d’apparition. On appelle expression simplifiée cette structure. "(2+3)×(18/(4+2))" ( ) ( ( ) ) Expression arithmétique Structure de données 1. Indiquer si la phrase « les éléments sont maintenant retirés (pour être lus) de cette structure de données dans le même ordre qu’ils y ont été ajoutés lors de l’enregistrement » décrit le comportement d’une file ou d’une pile. Justifier. Pour vérifier le parenthésage, on peut utiliser une variable controleur qui : est un nombre entier égal à 0 en début d’analyse de l’expression simplifiée ; augmente de 1 si l’on rencontre une parenthèse ouvrante "(" ; diminue de 1 si l’on rencontre une parenthèse fermante ")". Exemple : On considère l’ expression simplifiée A : "( )( ( ) )" Lors de l’analyse de l’expression A, controleur (initialement égal à 0) prend successivement pour valeur 1, 0, 1, 2, 1, 0. Le parenthésage est correct. 2. Écrire, pour chacune des 2 expressions simplifiées B et C suivantes, les valeurs successives prises par la variable controleur lors de leur analyse. Expression simplifiée B : " ((( )( )" Expression simplifiée C : "(( )))(" 22-NSIJ1ME1 Page : 2/14 3. L’expression simplifiée B précédente est mal parenthésée (parenthèses fermantes manquantes) car le controleur est différent de zéro en fin d’analyse. L’expression simplifiée C précédente est également mal parenthésée (parenthèse fermante sans parenthèse ouvrante) car le controleur prend une valeur négative pendant l’analyse. Recopier et compléter uniquement les lignes 13 et 16 du code ci-dessous pour que la fonction parenthesage_correct réponde à sa description. 1 def 2 ’’’ fonction retournant True si l'expression arithmétique 3 simplifiée (str) est correctement parenthésée, False 4 sinon. 5 Condition: expression ne contient que des parenthèses 6 ouvrantes et fermantes ’’’ 7 controleur = 0 8 for parenthese in expression: #pour chaque parenthèse 9 if parenthese == '(': 10 controleur = controleur + 1 11 else:# parenthese == ')' 12 controleur = controleur