Analyse descendante. Avec tous mes remerciements à Mirabelle Nebut pour son excellent cours de COMPIL

Dimension: px
Commencer à balayer dès la page:

Download "Analyse descendante. Avec tous mes remerciements à Mirabelle Nebut pour son excellent cours de COMPIL"

Transcription

1 Analyse (lexicale, syntaxique) L3 MIAGE Analyse descendante Avec tous mes remerciements à Mirabelle Nebut pour son excellent cours de COMPIL Université de Lille, France

2 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

3 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

4 Déterministe Méthodes déterministes : grammaire non ambiguë algorithme linéraire en nombre de lexèmes lus pas de retour en arrière/explorations de plusieurs dérivations potentielles unique exécution de l analyseur sur un mot certitude sur l acceptation ou le refus du mot applicable uniquement pour une sous classe restrainte de grammaires algébriques Il existe des méthodes non déterministes pour traiter des classes de grammaires plus générales hors cours.

5 Descendante et Ascendante Il y a deux méthodes classique d analyse déterministes : 1 descendante (LL) : construction de l arbre de la racine vers les feuilles parcours préfixé : racine en premier prédiction des productions à appliquer en fonction du lexème courant : construire les noeuds dont les fils ont pu être prédits dérivation gauche écriture manuelle ou génération automatique d analyseurs 2 ascendante (LR, LALR) : construction de l arbre des feuilles vers la racine parcours postfixé : racine en dernier association des lexèmes d entrée pour déterminer les productions appliquées : trouver et construire les noeuds dont les tous les fils sont déjà construits dérivation droite génération automatique d analyseur : + complexe à la main

6 Gestion des erreurs Souvent quand on trouve une erreur la partie qui pose problème est passée depuis longtemps (e.g. mauvais parenthésage) On s arrête dès la première erreur? une compilation pour résoudre chaque erreur... Deux modes de gestion : récupération d erreur : ignorer l erreur, essayer de continuer réparation d erreur : ajouter/retirer ce qui a l air de manquer, essayer de continuer risque de provoquer d autres erreurs plus loin Gérer les erreurs : pas toujours facile, utile dans un vrai compilateur, pas vraiment l objectif du cours

7 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

8 Analyse descendante LL(k) construction de l arbre de l axiome (racine) vers les symboles terminaux (feuilles) prédiction de la production à appliquer en fonction des k prochains lexèmes dérivation gauche : traiter toujours le non terminal le plus à gauche traiter les lexèmes de gauche à droite prédictions grâce à la table d analyse de la grammaire LL(1) : prédiction grâce au seul lexème courant qui doit toujours être défini marqueur de fin de mot #

9 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. b.. d..

10 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb b.. d..

11 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb : pas le choix prédiction! b.. d..

12 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb : pas le choix prédiction! b.. il faut S AB ɛb bb d..

13 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb : pas le choix prédiction! b.. il faut S AB ɛb bb d.. il faut S Da dda

14 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da B bb ɛ Quelle dérivation gauche pour... A aab ɛ D dd e a.. il faut S AB aabb : pas le choix prédiction! b.. il faut S AB ɛb bb d.. il faut S Da dda La table donne pour chaque non terminal quelle production doit nécessairement être appliquée pour obtenir le lexème courant.

15 Table d analyse - exemple S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur

16 Table d analyse LL(1) Contient toute l intelligence de l analyseur syntaxique. Definition La table d analyse Table est un tableau à deux dimensions tel que : chaque colonne est indicée par un non-terminal N ; chaque ligne est indicée par un terminal T ou # ; chaque case contient une unique production R ou erreur. On verra plus tard comment remplir cette table. déterministe

17 Table d analyse - exemple S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur

18 Interprétation de Table[a, X] et si le lexème courant est le terminal a T si le non-terminal en cours de traitement est X N = X est la racine du sous arbre syntaxique en construction alors on consulte Table[a, X]. Si Table[X, a] contient X γ alors on choisit cette production pour construire les fils du noeud X dans l arbre syntaxique en construction erreur alors erreur de syntaxe : X et a ne s accordent pas.

19 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

20 Analyseur descendant récursif Principe : analyseur LL codé par un ensemble de fonctions ; ces fonctions s appellent les unes les autres ; n utilise pas de pile explicite : pile implicite des appels. Codage des fonctions : une fonction X() par non-terminal X N de la grammaire ; X() reconnaît un mot engendré par X ; la fonction X() code les productions Table[X, y] de la table d analyse, pour tout y T #.

21 Exemple Écrire un analyseur syntaxique récursif LL(1) Parser pour G : S AB Da A aab ɛ B bb ɛ D dd e À voir : écriture de S(), A(), B(), D() ; collaboration avec un analyseur lexical.

22 Collaboration avec un analyseur lexical On utilises les notations : un an. lexical anlex de type Scanner (supposé donné) ; symboles de type Symbole ; codage entier du type des symboles dans TypeSymboles (noté TS dans les transparents) ; méthode int gettype() de Symbole pour obtenir ce type ; méthode Symbole next_token() de Scanner : avance la tête de lecture lexcur ; retourne le symbole lu, de type Symbole. on remplace le marqueur # par TS.EOF.

23 Construction de l analyseur syntaxique... public class Parser { // analyseur lexical private Scanner anlex; // symbole courant reçu de l analyseur lexical private Symbole lexcur; public Parser (Scanner anlex) { this.anlex = anlex; }...

24 Lancement de l analyseur syntaxique Dans la classe Parser : public void analyser() throws ScannerException, ParserException { // positionnement tete de lecture this.lexcur = (Symbole) this.anlex.next_token(); this.s(); // je veux reconnaître l axiome // et uniquement l axiome if (this.lexcur.gettype()!= TS.EOF) throw new ParserException(); }

25 Code de S() La tête de lecture est déjà positionnée sur le symbole de prédiction. S a S AB b S AB d S Da e S Da # S AB private void S() throws... { if (this.lexcur.gettype() == TS.a)... // S -> AB else if (this.lexcur.gettype() == TS.b)... // S -> AB else if (this.lexcur.gettype() == TS.d)... // S -> Da else if (this.lexcur.gettype() == TS.e)... // S -> Da else if (this.lexcur.gettype() == TS.EOF)... // S -> AB else throw new ParserException(); }

26 Code de S() On factorise. S a S AB b S AB d S Da e S Da # S AB private void S() throws... { if (this.lexcur.gettype() == TS.a } this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF)... // S -> AB else if (this.lexcur.gettype() == TS.d this.lexcur.gettype() == TS.e)... // S -> Da else throw new ParserException();

27 Code des productions de S() Code pour S AB : je veux reconnaître A puis B; A() ; B() ; Code pour S Da : je veux reconnaître D puis vérifier que a est bien sous la tête de lecture ; et consommer a.

28 Terminaux : vérification et consommation Méthode consommer dédiée à la gestion des terminaux : private void consommer(int type) throws ScannerException, ParserException { } if (this.lexcur.gettype() == type) this.lexcur = (Symbole) this.anlex.next_token(); else throw new ParserException(); Code pour S Da : D(); this.consommer(ts.a);.

29 Code final de S() S a S AB b S AB d S Da e S Da # S AB private void S() throws... { if (this.lexcur.gettype() == TS.a this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF) { // S -> AB A(); B(); } else if (this.lexcur.gettype() == TS.d this.lexcur.gettype() == TS.e) { // S -> Da D(); this.consommer(ts.a); } else throw new ParserException(); } Quand S() termine, pour un mot accepté, la tête de lecture est sur TS.EOF.

30 Code de A() La tête de lecture est déjà positionnée sur le symbole de prédiction. A a A aab b A ɛ d erreur e erreur # A ɛ private void A() throws... { if (this.lexcur.gettype() == TS.a)... // A -> aab else if (this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF)... // A -> else // erreur throw new ParserException(); }

31 Code des productions de A() Code pour A aab : this.consommer(ts.a); A(); this.consommer(ts.b); Code pour A ɛ : le mot vide est immédiatement reconnu ; sans toucher à la tête de lecture ; on ne fait rien.

32 Code final de A() A a A aab b A ɛ d erreur e erreur # A ɛ private void A() throws... { if (this.lexcur.gettype() == TS.a) { // A -> aab this.consommer(ts.a); A(); this.consommer(ts.b); } else if (this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF) { // rien, A -> } else // erreur throw new ParserException(); } Quand A() termine, pour un mot accepté, la tête de lecture est positionnée pour reconnaître un B ou lire un b.

33 Code final de B() B a erreur b B bb d erreur e erreur # B ɛ private void B() throws... { if (this.lexcur.gettype() == TS.b) { // B -> bb this.consommer(ts.b); B(); } } else if (this.lexcur.gettype() == TS.EOF) { // rien, B -> } else // erreur throw new ParserException();

34 Code final de D() D a erreur b erreur d D dd e D e # erreur private void D() throws... { if (this.lexcur.gettype() == TS.d) { // D -> dd this.consommer(ts.d); D(); } } else if (this.lexcur.gettype() == TS.e) { // D -> e this.consommer(ts.e); } else // erreur throw new ParserException();

35 Exemple d exécution Reconnaître abb#?

36 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

37 Ensembles Premier 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

38 Ensembles Premier Outils pour l analyse prédictive, intuition - 1 Comment choisir entre S AB et S Da? Supposons que je sache que : AB ne permet de dériver que des mots préfixés par a ou par b ; AB au et AB bu, pour u T ; Da ne permet de dériver que des mots préfixés par d ou par e ; Da du et Da eu, pour u T.

39 Ensembles Premier Outils pour l analyse prédictive, intuition - 1 Maintenant je sais (partiellement) choisir entre S AB et S Da : si tête lecture {a, b} : choisir S AB ; si tête lecture {d, e} : choisir S Da. S a S AB b S AB d S Da e S Da #?

40 Ensembles Premier Ensemble Premier - définition On dit que Premier(AB) = {a, b} et Premier(Da) = {d, e}. Pour α (T N) +, Premier(α) contient l ensemble des terminaux de T susceptibles de commencer un mot de T + dérivé de α. Si α = ɛ, cet ensemble est vide. Definition Soit une grammaire algébrique. On définit : Premier : (T N) P(T ) α {a T α au, u T }

41 Ensembles Premier Les Premier sur les arbres syntaxiques S S S A B A B A B A B a b b α (T N) S S D D d D a e a Premier(α)

42 Ensembles Premier Calcul des Premier - 0 Soit α (N T ) : cas α = ɛ :? α = a, a T :? α = aβ, a T, β (N T ) :? α = X, X N :? α = Xβ, X N, β (N T ) :? fcas

43 Ensembles Premier Calcul des Premier - 1 Soit α (N T ) : cas α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N :? α = Xβ, X N, β (N T ) :? fcas

44 Ensembles Premier Calcul de Premier(X), X N Si l ensemble des productions de membre gauche S est : S AB Da alors on a : Premier(S) = Premier(AB) Premier(Da) Cas général : Si la grammaire contient les productions de membre gauche X : X γ 1... γ n alors : Premier(X) = i=1...n{premier(γ i ) X γ i R}

45 Ensembles Premier Calcul des Premier - 2 Soit α (N T ) : cas α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N : {Premier(γ i ) X γ i R} α = Xβ, X N, β (N T ) :? fcas

46 Ensembles Premier Calcul des Premier, α = Xβ, X N Deux cas selon que X peut "s effacer" ou non : X ɛ? Si X ɛ on dit que X est ɛ-productif : X ɛ-prod

47 Ensembles Premier Calcul des Premier, α = Xβ, X ɛ-prod - exemple Par exemple D ɛ-productif : S S D dd e D D alors Premier(Da) = Premier(D) d D a e a Donc, si X ɛ-prod, Premier(Xβ) = Premier(X)

48 Ensembles Premier Calcul des Premier, α = Xβ, X ɛ-prod - exemple Par exemple A ɛ-productif : A ɛ aab Premier(AB) = Premier(A) Premier(B) A S S B A B a A b b B Donc, si X ɛ alors Premier(X β) = Premier(X) Premier(β)

49 Ensembles Premier Calcul des Premier Soit α (N T ) : cas α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N : {Premier(γ i ) X γ i R} α = Xβ, X N\ɛ-Prod, β (N T ) : Premier(X) α = Xβ, X N ɛ-prod, β (N T ) : Premier(X) Premier(β) fcas

50 Ensembles Premier Calcul effectif des ensembles Premier On procède en deux étapes : 1 on pose un système d équations pour Premier ; 2 on calcule par itération de point fixe les plus petits ensembles qui satisfont ces équations. Pour le moment on suppose donné ɛ-prod, l ensemble des ɛ-productifs.

51 Ensembles Premier Exemple S AB Da A aab ɛ B bb ɛ D dd e ɛ-prod = {A, B, S} Premier(S) =? Premier(A) =? Premier(B) =? Premier(D) =? α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N : {Premier(γ i ) X γ i R} α = Xβ, X N\ɛ-Prod, β (N T ) : Premier(X) α = Xβ, X N ɛ-prod, β (N T ) : Premier(X) Premier(β)

52 Ensembles Premier Exemple Premier(S) = Premier(A) Premier(B) Premier(D) Premier(A) = {a} Premier(B) = {b} Premier(D) = {d, e} D où Premier(S) = {a, b, d, e} Premier(A) = {a} Premier(B) = {b} Premier(D) = {d, e} Premier(AB) = {a, b} Premier(Da) = {d, e} Premier(aAb) = {a} Premier(bB) = {b} Premier(dD) = {d} Premier(e) = {e} Premier(ɛ) =

53 Ensembles Premier Exemple : remplissage de la table A aab et Premier(aAb) = {a} A ɛ et Premier(ɛ) = S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur

54 Ensembles Premier Exemple : remplissage de la table S AB et Premier(AB) = {a, b} S Da et Premier(Da) = {d, e} S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur

55 Ensembles Premier Remarque : résolution du système Premier(S) = Premier(A) Premier(B) Premier(D) Premier(A) = {a} Premier(B) = {b} Premier(D) = {d, e} Se résoud sans itération de point fixe : système d équations non récursif. Ce n est pas toujours le cas.

56 Ensembles Premier Résolution du système : autre exemple S S 1 S 2 a S 1 S b S 2 c Premier(S) = Premier(S 1 ) {a} Premier(S 1 ) = Premier(S) {b} Premier(S 2 ) = {c} iter Premier(S) Premier(S 1 ) Premier(S 2 ) 0 1 {a} {b} {c} 2 {a, b} {b, a} {c} 3 {a, b} {b, a} {c} stabilisation

57 Ensemble des ɛ-prod 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

58 Ensemble des ɛ-prod Définition des ɛ-prod Definition Un non terminal X N est dit ɛ-productif si X ɛ. L ensemble des ɛ-productif est ɛ-prod. X est ɛ-productif si la grammaire contient la production : X ɛ ; ou X Y 1 Y 2... Y n telle que l ensemble des non-terminaux {Y 1, Y 2,..., Y n } N ne contient que des non-terminaux ɛ-productifs. Algorithme de calcul similaire à celui qui calcule les productifs.

59 Ensemble des ɛ-prod Exemple S AB Da A aab ɛ B bb ɛ D dd e ɛ-prod?

60 Ensembles Suivant 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

61 Ensembles Suivant Outils pour l analyse prédictive, intuition - 2 Pour choisir entre S AB et S Da : si tête lecture {a, b} : choisir S AB ; si tête lecture {d, e} : choisir S Da. Et si la tête de lecture est #? # Premier(AB) Premier(Da). Comment choisir entre A aab et A ɛ? Premier(ɛ) = les ensembles Premier ne suffisent pas.

62 Ensembles Suivant Ensembles Suivant, intuition Quand appliquer A ɛ? Quand la tête de lect. correspond à un terminal qui peut suivre A. A S A A B a b b Suivant(A) Suivant(A) Premier(B)

63 Ensembles Suivant Ensembles Suivant, intuition On a donc b Suivant(A) A a A aab b A ɛ d? e? #?

64 Ensembles Suivant Ensembles Suivant, intuition Pour α (T N) +, Suivant(α) contient l ensemble des terminaux de T susceptibles de suivre α dans un mot de T + dérivé de l axiome S. Si α = ɛ, cet ensemble est vide. Par convention, Suivant(S) {#}.

65 Ensembles Suivant Ensembles Suivant, définitions équivalentes Definition Soit une grammaire algébrique d axiome S. On définit : Suivant : (T N) P(T ) α {a T S βαaγ, pour β, γ (N T ) } Definition Suivant : (T N) P(T ) α {a Premier(γ) S βαγ, pour β, γ (N T ) }

66 Ensembles Suivant Calcul des Suivant - 1 Pour calculer Suivant(X), on regarde les productions dans lesquelles X apparaît en partie droite (différent du calcul des Premier). Pour Suivant(A) : A aab A A S AB S A B a b

67 Ensembles Suivant Calcul des Suivant - 2 Soit R X R l ensemble des productions p dans lesquelles X apparaît en partie droite : Suivant(X) = p R X Suivant p (X) Ex : R A = {S AB, A aab} Suivant(A) = Suivant(A) S AB Suivant(A) A aab

68 Ensembles Suivant Calcul des Suivant, cas de l axiome Pour l axiome, on ajoute le marqueur de fin de mot : Suivant(S) = {#} p R S Suivant p (S) Ex : pour X axb ɛ R X = {X axb} Suivant(X) = {#} Suivant(X) X axb

69 Ensembles Suivant Calcul des Suivant exemple Suivant(A) S AB? (exemple précédent) Cas déjà vu : S A B Suivant(A) Premier(B)

70 Ensembles Suivant Calcul des Suivant exemple Suivant(A) S AB? (exemple précédent) mais B est ɛ-prod! S A B Suivant(A) Suivant(S)

71 Ensembles Suivant Calcul des Suivant exemple Puisque B est ɛ-prod : Suivant(A) S AB = Premier(B) Suivant(S)

72 Ensembles Suivant Calcul des Suivant - 4 Quand une production est de la forme... Xα : pour calculer Suivant(X) ; Il faut pouvoir dire si α (N T ) est ɛ-productif ou pas. Definition α (N T ) est ɛ-productif si α ɛ. On définit la fonction : P ɛ : (N T ) {vrai, faux} α α est ɛ-productif On verra après comment calculer P ɛ.

73 Ensembles Suivant Calcul des Suivant - 5 Pour calculer Suivant p (X) avec : p = Y αxβ et P ɛ (β) = faux, α, β (N T ) Y X β Suivant p (X) = Premier(β) Ex : pour Y Xb, Suivant(X) Y Xb = {b}.

74 Ensembles Suivant Calcul des Suivant - 6 Pour calculer Suivant p (X) avec : p = Y αx Y α X Suivant p (X) = Suivant(Y )

75 Ensembles Suivant Calcul des Suivant - 7 Pour calculer Suivant p (X) avec : p = Y αxβ et P ɛ (β) = vrai, α, β (N T ) Y X β Suivant p (X) = Premier(β) Suivant(Y ) Ex : pour S AB, Suivant(A) S AB = Premier(B) Suivant(S).

76 Ensembles Suivant Remarque - 1 Si X apparaît plusieurs fois en partie droite d une production, il faut prendre en compte toutes ses occurrences dans le calcul de Suivant(X). Ex : Y XaXaXc Suivant Y XaXaXc (X) = {a, c}

77 Ensembles Suivant Remarque - 2 Pourquoi pas Suivant(X) Y Xβ = Premier(β) Suivant(β)? Parce que Suivant(Y ) Suivant(β). Ex : S Y Z Y X 1 X 2 X 1 a X 2 ɛ b Z X 2 c Suivant(S) = {#} Suivant(Y ) = Suivant(S) = {#} Suivant(Z ) = Suivant(S) = {#} Suivant(X 2 ) = {c} Suivant(Y ) = {c, #} Suivant(X 1 ) = Premier(X 2 ) Suivant(Y )

78 Ensembles Suivant Calcul des Suivant, récapitulons! # Suivant(axiome) Soit R X R l ensemble des productions p dans lesquelles X apparaît en partie droite : Suivant(X) = p R X Suivant p (X) avec : Suivant p (X) = cas p = Y αx : Suivant(Y ) p = Y αxβ et P ɛ (β) = faux : Premier(β) p = Y αxβ et P ɛ (β) = vrai : Premier(β) Suivant(Y ) fincas

79 Ensembles Suivant Calcul effectif des ensembles Suivant On procède en deux étapes : on pose un système d équations pour Suivant ; on calcule par itération de point fixe les plus petits ensembles qui satisfont ces équations. avec initialement Suivant(S) = {#}, et pour les autres non-terminaux Suivant(X) =.

80 Ensembles Suivant Exemple S AB Da A aab ɛ B bb ɛ D dd e P ɛ (B) = vrai Suivant? # Suivant(axiome) Suivant(X) = p R X Suivant p (X) avec : Suivant p (X) = cas p = Y αx : Suivant(Y ) p = Y αxβ et P ɛ (β) = faux : Premier(β) p = Y αxβ et P ɛ (β) = vrai : Premier(β) Suivant(Y ) fincas

81 Ensembles Suivant Exemple de remplissage de table A ɛ et Suivant(A) = {b, #} S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur

82 Ensembles Suivant Exemple de remplissage de table S AB et Suivant(S) = {#} S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur

83 Ensembles Suivant Calcul des ɛ-productifs On connaît déjà ɛ-prod, ens. des non-terminaux ɛ-productifs. Pour calculer P ɛ (α) : P ɛ (α) = cas α = ɛ : vrai α = X 1... X n, n 1 avec {X 1,..., X n } N et {X 1,..., X n } ɛ-prod : vrai autre : faux // α contient un terminal fincas

84 Ensembles Suivant Exemple Sachant que ɛ-prod = {A, B, S} : P ɛ (Da)? P ɛ (AB)? P ɛ (ɛ)? P ɛ (B)?

85 Remplissage de la table d analyse 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

86 Remplissage de la table d analyse Table d analyse : au préalable On calcule : les ɛ-productifs ; les ensembles Premier ; les ensembles Suivant.

87 Remplissage de la table d analyse Remplissage de la table Entrée : une gram. alg. G, ses ensembles Premier et Suivant Sortie : la table d analyse Table pour toute production X γ R faire pour tout a Premier(γ) faire ajouter X γ à Table[X, a] fait si P ɛ (γ) = vrai alors pour tout b Suivant(X) faire Table[X, b] = X γ fait finsi fait Ajouter erreur dans les entrées de Table restées vides

88 Remplissage de la table d analyse Exemple S AB : Premier(AB) = {a, b} ; P ɛ (AB) = vrai ; Suivant(S) = {#}. S Da : Premier(Da) = {d, e} ; P ɛ (Da) = faux. Rien à compléter par erreur. S a S AB b S AB d S Da e S Da # S AB

89 Remplissage de la table d analyse Exemple A aab : Premier(aAb) = {a} ; P ɛ (aab) = faux. A ɛ : Premier(ɛ) = ; P ɛ (ɛ) = vrai ; Suivant(A) = {b, #}. On complète par erreur. A a A aab b A ɛ d erreur e erreur # A ɛ

90 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

91 Analyseur LL(1) Un analyseur LL(1) est déterministe et piloté par le sommet de pile : si terminal a : lecture de a (ou erreur) ; si non terminal X avec a sous la tête de lecture : expansion selon Table[X, a]. Et si Table[X, a] contient plus d une production? Non-déterminisme : la grammaire n est pas LL(1) ; on ne peut pas appliquer une analyse LL(1).

92 Caractérisation d une grammaire LL(1) Caractérisation par table d analyse : une grammaire est LL(1) si chaque case contient exactement une production ou erreur. Caractérisation «par contre-exemple» : une grammaire n est pas LL(1) s il existe 2 productions X α et X β telles que : 1 soit Premier(α) Premier(β) ; Ex : S as A, A a 2 soit P ɛ (α) = vrai et Premier(β) Suivant(X) ; Ex : S as Ab, A ɛ b 3 soit P ɛ (α) = vrai et P ɛ (β) = vrai (la grammaire est ambiguë) Ex : S A B, A ɛ, B ɛ

93 LL(1) et ambiguïté Une grammaire LL(1) n est pas ambiguë. Une grammaire ambiguë n est pas LL(1).

94 Cas classiques non LL(1) Dans les cas suivants, la grammaire n est pas LL(1) : ambiguïté ; récursivité gauche : A Aa ɛ ; intuitivement récursivité infinie de A(). non factorisation gauche : S aa ab Solutions: : factorisation à gauche (parfois) ; suppression de la récursivité gauche (parfois); utiliser un générateur de parser plus puissant!

95 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

96 Factorisation à gauche 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

97 Factorisation à gauche Factorisation à gauche : exemple - 1 Les listes d identificateur de INIT : listeident IDENT IDENT SEPVAR listeident On factorise IDENT et on obtient : listeident IDENT suitelisteident suitelisteident ɛ SEPVAR listeident

98 Factorisation à gauche Factorisation à gauche : exemple - 2 X ab abbx abbbx Factorisation de ab : on prend le plus grand préfixe commun. X aby Y ɛ bx bbx Puis à nouveau factorisation de b.

99 Factorisation à gauche Factorisation à gauche - algorithme On remplace les règles de la forme : où X αβ 1... αβ n γ 1... γ m α (T N) + et β i, γ j (T N) ; le préfixe commun α est choisi le plus grand possible ; α n est pas préfixe de γ j. par les règles : X αx γ 1... γ m X β 1... β n où X est un nouveau non-terminal. On réitère ce processus tant que nécessaire.

100 Suppression de la récursivité à gauche 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

101 Suppression de la récursivité à gauche Suppression de la récursivité à gauche Récursivité gauche : immédiate : production A Aα, α (T N) + ; générale : il existe une dérivation A Aα, α (T N) +. Il est possible de supprimer les deux cas. On ne verra que la récursivité immédiate.

102 Suppression de la récursivité à gauche Suppression de la récursivité gauche immédiate On remplace les règles de la forme où X Xα 1... Xα n β 1... β m α i (T N) + et β j (T N) ; les β j ne commencent pas par X. par les règles : X β 1 X... β m X X α 1 X... α n X ɛ où X est un nouveau non-terminal.

103 Suppression de la récursivité à gauche Suppression de la récursivité gauche : exemple Après suppression de la rec Grammaire non ambiguë gauche : des expressions arithmétiques : E TE E E + T T E +TE ɛ T T F F T FT F i (E) T FT ɛ F i (E) X Xα 1... Xα n β 1... β m X β 1 X... β m X X α 1 X... α n X ɛ

104 Suppression de la récursivité à gauche Parfois ça ne suffit pas La grammaire ({a, b}, {S, A}, S, R) avec R = {S asb A, A aa ɛ} n est pas ambiguë ; n est pas récursive gauche ; est factorisée à gauche ; mais elle n est pas LL(1).

105 Suppression de la récursivité à gauche Au delà des grammaires LL(1) - 1 La grammaire ({a, b}, {A, B}, A, R) avec R = {A abb ɛ, B Aaa b} n est pas LL(1). En effet P ɛ (A) = vrai et a Premier(A) Suivant(A).

106 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)

107 Grammaires LL(k), exemple La grammaire: declaration DECLINT listeident FININSTR listeident IDENT IDENT SEPVAR listeident n est pas LL(1). Elle est LL(2), et acceptée par un analyseur LL(k). En regardant 2 symboles sous la tête de lecture: si IDENT FININSTR : choisir listeident IDENT si IDENT SEPVAR : choisir listeident IDENT SEPVAR listeident

108 Grammaire LL(k), autre exemple R = {A abb ɛ, B Aaa b} Cette grammaire est LL(2) : Premier 2 (A) = {ab} Premier 2 (B) = {ab, aa, b} Suivant 2 (A) = {aa, #}

109 Table d analyse LL(2) A abb ɛ B Aaa b aa ab b # A A ɛ A abb erreur A ɛ B B Aaa B Aaa B b erreur

110 Analyseurs LL(k), principe Effectuent une prédiction basée sur k symboles. k borné. Ex: javacc

Théorie des Langages

Théorie des Langages Théorie des Langages Analyse syntaxique descendante Claude Moulin Université de Technologie de Compiègne Printemps 2010 Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1) Exemple : Grammaire

Plus en détail

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Compilation. Algorithmes d'analyse syntaxique

Compilation. Algorithmes d'analyse syntaxique Compilation Algorithmes d'analyse syntaxique Préliminaires Si A est un non-terminal et γ une suite de terminaux et de non-terminaux, on note : A γ si en partant de A on peut arriver à γ par dérivations

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Exercices - Polynômes : corrigé. Opérations sur les polynômes Opérations sur les polynômes Exercice 1 - Carré - L1/Math Sup - Si P = Q est le carré d un polynôme, alors Q est nécessairement de degré, et son coefficient dominant est égal à 1. On peut donc écrire Q(X)

Plus en détail

Algorithmes récursifs

Algorithmes récursifs Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Résolution de systèmes linéaires par des méthodes directes

Résolution de systèmes linéaires par des méthodes directes Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.

Plus en détail

Continuité et dérivabilité d une fonction

Continuité et dérivabilité d une fonction DERNIÈRE IMPRESSIN LE 7 novembre 014 à 10:3 Continuité et dérivabilité d une fonction Table des matières 1 Continuité d une fonction 1.1 Limite finie en un point.......................... 1. Continuité

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3 8 Systèmes de numération INTRODUCTION SYSTÈMES DE NUMÉRATION POSITIONNELS Dans un système positionnel, le nombre de symboles est fixe On représente par un symbole chaque chiffre inférieur à la base, incluant

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Chapitre 2 Le problème de l unicité des solutions

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Page 1 de 9 MATLAB : COMMANDES DE BASE Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Aide help, help nom_de_commande Fenêtre de travail (Command Window) Ligne

Plus en détail

DOCM 2013 http://docm.math.ca/ Solutions officielles. 1 2 10 + 1 2 9 + 1 2 8 = n 2 10.

DOCM 2013 http://docm.math.ca/ Solutions officielles. 1 2 10 + 1 2 9 + 1 2 8 = n 2 10. A1 Trouvez l entier positif n qui satisfait l équation suivante: Solution 1 2 10 + 1 2 9 + 1 2 8 = n 2 10. En additionnant les termes du côté gauche de l équation en les mettant sur le même dénominateur

Plus en détail

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques

Plus en détail

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes. Promotion X 004 COURS D ANALYSE DES STRUCTURES MÉCANIQUES PAR LA MÉTHODE DES ELEMENTS FINIS (MEC 568) contrôle non classant (7 mars 007, heures) Documents autorisés : polycopié ; documents et notes de

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Quatrième partie IV. Test. Test 15 février 2008 1 / 71

Quatrième partie IV. Test. Test 15 février 2008 1 / 71 Quatrième partie IV Test Test 15 février 2008 1 / 71 Outline Introduction 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

Chapitre 1 I:\ Soyez courageux!

Chapitre 1 I:\ Soyez courageux! Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014 numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour

Plus en détail

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2. Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3

Plus en détail

Pour l épreuve d algèbre, les calculatrices sont interdites.

Pour l épreuve d algèbre, les calculatrices sont interdites. Les pages qui suivent comportent, à titre d exemples, les questions d algèbre depuis juillet 003 jusqu à juillet 015, avec leurs solutions. Pour l épreuve d algèbre, les calculatrices sont interdites.

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Factorisation Factoriser en utilisant un facteur commun Fiche méthode Factorisation Factoriser en utilisant un facteur commun Fiche méthode Rappel : Distributivité simple Soient les nombres, et. On a : Factoriser, c est transformer une somme ou une différence de termes en

Plus en détail

Fondements de l informatique Logique, modèles, et calculs

Fondements de l informatique Logique, modèles, et calculs Fondements de l informatique Logique, modèles, et calculs Cours INF423 de l Ecole Polytechnique Olivier Bournez Version du 20 septembre 2013 2 Table des matières 1 Introduction 9 1.1 Concepts mathématiques........................

Plus en détail

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes. 1 Définitions, notations Calcul matriciel Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes. On utilise aussi la notation m n pour le

Plus en détail

Formats d images. 1 Introduction

Formats d images. 1 Introduction Formats d images 1 Introduction Lorsque nous utilisons un ordinateur ou un smartphone l écran constitue un élément principal de l interaction avec la machine. Les images sont donc au cœur de l utilisation

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Chapitre 10 Arithmétique réelle

Chapitre 10 Arithmétique réelle Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Machines virtuelles fonctionnelles (suite) Compilation ML Java Machines virtuelles fonctionnelles (suite) Compilation ML Java Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2011/2012 Semaine 3 Machines virtuelles fonctionnelles

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

Raisonnement par récurrence Suites numériques

Raisonnement par récurrence Suites numériques Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Architecture des Systèmes d Information Architecture des Systèmes d Information

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

Plus en détail

Équations non linéaires

Équations non linéaires Équations non linéaires Objectif : trouver les zéros de fonctions (ou systèmes) non linéaires, c-à-d les valeurs α R telles que f(α) = 0. y f(x) α 1 α 2 α 3 x Equations non lineaires p. 1/49 Exemples et

Plus en détail

Les BRMS Business Rules Management System. Groupe GENITECH

Les BRMS Business Rules Management System. Groupe GENITECH Les BRMS Business Rules Management System 1 Présentations Emmanuel Bonnet ebonnet (at) genigraph.fr Responsable Dpt Conseil Consultant, Expert BRMS Formateur IBM/Ilog JRules / JBoss Rules Génigraph SSII

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

Les algorithmes de base du graphisme

Les algorithmes de base du graphisme Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............

Plus en détail

Solutions du chapitre 4

Solutions du chapitre 4 Solutions du chapitre 4 Structures de contrôle: première partie 4.9 Identifiez et corrigez les erreurs (il peut y en avoir plus d une par segment de code) de chacune des proposition suivantes: a) if (

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Simulation de variables aléatoires

Simulation de variables aléatoires Chapter 1 Simulation de variables aléatoires Références: [F] Fishman, A first course in Monte Carlo, chap 3. [B] Bouleau, Probabilités de l ingénieur, chap 4. [R] Rubinstein, Simulation and Monte Carlo

Plus en détail

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

Fiche PanaMaths Calculs avec les fonctions sous Xcas

Fiche PanaMaths Calculs avec les fonctions sous Xcas Fiche PanaMaths Calculs avec les fonctions sous Xcas Cette fiche destinée aux élèves des classes de Terminale requiert un premier niveau de connaissance du logiciel Xcas. Définition d une fonction Fonctions

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail