Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Logiciel de simulation
de déroulement des algorithmes
Réalisé par :
HAJI Soukaina
OUICHOUL Chaimaa
CHACKCHAME FatimaEzzahra
Encadré par:
1
ANOUN Houda
Plan
Introduction
• Présentation du projet
• Objectifs du projet
L’interpréteur CSALGO-SIMULTOR
• Description du logiciel
• Différence entre compilateur et interpréteur
Étapes de réalisation d’un compilateur/interpréteur
• Analyse des besoins
o Diagramme de cas d’utilisation
• Conception
o Héritage
o Polymorphisme
o Diagramme de classes
• Réalisation
o Outils utilisés
o Spécifications JFLEX et JCUP
o Arbre syntaxiques
o Tables de symboles
o Grammaire
o Exécution du code
o Exécution pas-à-pas
o Gestion d’erreur
Simulation
Site web
Logiciel
Conclusion
2
Introduction
3
Présentation du projet
4
Objectifs du projet
• Interpréteur d’algorithmes ouvert à tout public.
• Facilité d’adaptation aux fonctionnalités du logiciel qui est destiné
en premier lieu aux étudiants débutants en programmation.
• Déroulement pas-à-pas et vulgarisation de la RAM
o Aider l’utilisateur à mieux assimiler le fonctionnement des programmes développés.
• Interface simple et riche de différents outils d’édition
o Faciliter la manipulation du code.
• La réalisation d’un site WEB
o plus d’accessibilité au logiciel avec divers contenu.
5
L’interpréteur CSALGO
6
Description du logiciel CSLAGO
• CSALGO est un interpréteur,
7
Description du logiciel CSLAGO
8
Différence entre compilateur et interpréteur
9
Différence entre compilateur et interpréteur
10
Différence entre compilateur et interpréteur
11
Différence entre compilateur et interpréteur
12
Étapes de réalisation du logiciel
13
• Voici un schéma qui résume les principales étapes qu’on a dû suivre
afin de réaliser CSALGO:
14
Analyse des besoins
15
Diagramme de cas d’utilisation
• Voici le diagramme des cas d’utilisations qui va donner une vue globale du
comportement fonctionnel de notre application :
16
Conception
• Héritage
• Polymorphisme
17
Héritage
• Une classe Java dérive toujours d’une autre classe, Object quand rien n’est spécifié. Pour
spécifier de quelle classe hérite une classe on utilise le mot-clé extends :
class D extends B { . . . }
18
Héritage
• Exemple de l'héritage dans le code source de CSALGO:
• La classe Tdeclar et Taffect hérite de la classe abstraite Tinstr, dont la méthode prepareInterp et
interpret sont redéfinis
19
Polymorphisme
• Le polymorphisme est un concept qui complète parfaitement celui de l'héritage .
20
Polymorphisme
• Exemple du polymorphisme dans le code source de CSALGO:
• La méthode interpret de la classe Tinstrlist fait appel à la méthode interpret de chaque objet
instr suivant le mécanisme de polymorphisme pour exécuter la méthode interpret équivalant
au type de l'objet (Tdeclar, Taffect, Tfor...) :
21
Diagramme de classe
• Tprogram regroupe toutes
les instructions se trouvant entre
les deux étiquettes "DEBUT" et "FIN".
22
Diagramme de classe
23
Diagramme de classe
• FirstForm contient la fonction main qui lance l'instance du MainInterface.
24
Réalisation
25
Outils utilisés
• Langages de programmation
26
Outils utilisés
• Logiciels utilisés
27
Générateur d’analyseurs lexicaux JFLEX
28
Générateur d’analyseurs lexicaux JFLEX
29
Générateur d’analyseurs lexicaux JFLEX
31
Générateur d’analyseurs syntaxiques JCUP
32
Générateur d’analyseurs syntaxiques JCUP
33
Générateur d’analyseurs syntaxiques JCUP
34
Interfaçage de JFLEX et JCUP
Figure 9 : interfaçage du
JFLEX et JCUP
35
Arbre syntaxique
• Un arbre abstrait constitue une interface plus naturelle entre l’analyse syntaxique et
l’analyse sémantique, elle ne garde de la structure syntaxique que les parties
nécessaires à l’analyse sémantique et à la production de code.
• L’arbre abstrait est construit lors de l’analyse syntaxique, en associant à toute règle
de grammaire une action sémantique.
36
Arbre syntaxique
37
Grammaire
Instruction Syntaxe
Déclaration VAR liste-identifiant :{ENTIER|REEL|CARACTERE|BOOLEAN}
Affectation Id <- valeur
Incrémentation Id++
Décrémentation Id--
Lecture LIRE(liste identifiant )
Écriture ECRIRE(‘’chaine‘’ , valeur , ...)
Condition SI(condition) ALORS liste-instruction FINSI
SI(condition) ALORS liste-instruction SINON liste-instruction FINSI
Boucle TANTQUE(condition) liste-instruction FINTANTQUE
REPETER TANTQUE(condition) liste-instruction FINREPETER
POUR id ALLANT DE valeur A valeur [PAR PAS DE valeur]
liste-instruction FINPOUR
Sélection en choix SELON(valeur)
CAS valeur1 :liste-instruction1
CAS valeur2 :liste-instruction2
...
[CAS SINON liste-instruction]
FINSELON
Cast Id<- (ENTIER)valeur
Id<- (REEL)valeur
Opération logique Valeur1[>|<|=|>=|<=| !=]valeur2 OU|ET ...
Fonctions primitives RACINE(valeur)
Valeur1 MOD valeur2
38
Table de symboles
SymTab
Nom String
Val Object
Type String
Emp String
39
Exécution de la totalité du code
• Que ce passe-t-il réellement lors de l’exécution d’un code tapé sur l’interface de
l’interpréteur ?
Quand un utilisateur clique sur le bouton « Exécuter », le code sera enregistré sous un fichier
texte qui sera interprété par le Lexer et le Parser. Juste après la création de l’arbre syntaxique
la méthode de l’exécution (interpret) sera exécutée sous forme de série d’appel.
40
Exécution de la totalité du code
• Un schéma qui résume les étapes de déroulement d’une instruction d’affectation :
41
Exécution pas-à-pas
• Pour le cas d’exécution pas-à-pas l’exécution va prendre une différente démarche ;
42
Exécution pas-à-pas
• La méthode prepInterp ?
43
Exécution pas-à-pas
• La liste stockée dans la classe Tinstrlist servera à quoi ?
44
Exécution pas-à-pas
Notes :
• Chaque instruction exécutée sera supprimée de la liste « suivant », donc l’instruction qui sera
exécuter à chaque fois est à l’index 0 de la liste.
• Le vrai défi de l’exécution pas-à-pas est l’exécution des instructions imbriquées comme les
conditions, les instructions répétitives comme les boucles POUR et TANTQUE, encore pire ;
les instructions répétitives contenants des instructions imbriquées comme les conditions et les
boucles etc ...
45
Exécution pas-à-pas
Le fonctionnement des instructions imbriqués (condition) :
• Prenant l’exemple suivant :
• Supposons que l’utilisateur a entré
le nombre « 120 » ,
Pour l’exécution pas-à-pas quand
l’utilisateur clique sur le bouton,
après l’instruction LIRE,
l’instruction qui sera directement
exécuter c’est :
46
Exécution pas-à-pas
47
Exécution pas-à-pas
• Un schéma qui résume les étapes de déroulement d’une instruction simple ou imbriqué(conditon) :
48
Exécution pas-à-pas
• Et les instructions répétitives?
Même principe de récursivité pour les instructions répétitives sauf que cette fois les
instructions de type boucle ne seront pas supprimé pour des raisons :
o Savoir le point de rebouclage du bloc.
o Tester la validité de la condition à chaque fois
• En combinant les deux logiques des conditions et des boucles l’exécution pas-à-pas
est généralisée ; En cas de boucle contenant des conditions le premier click
« suivant » permettra l’exécution de la première instruction du bloc valide de la
première condition (en cas où la première instruction dans le bloc interne de la
boucle est une condition).
49
Gestion d’erreur
Code d’erreur Description
50
Simulation
51
Conclusion
52
Merci pour votre attention _
53
54