Analyse statique de programmes et interprétation abstraite. Olivier Bouissou

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

Download "Analyse statique de programmes et interprétation abstraite. Olivier Bouissou"

Transcription

1 Analyse statique de programmes et interprétation abstraite Olivier Bouissou

2 Organisation du cours. Intervenants : cours et TP assurés par Olivier Bouissou - CEA LIST. Déroulement : 7 séances de 2*2 heures séances 1 et 2 : 4 heures de cours. séances 3 à 5 : 2 heures de cours et 2 heures de TP séance 6 et 7 : 4 heures de TP 2

3 Organisation du cours : plan du cours. Date : 29/01/13 04/02/13 (lundi) 12/02/13 19/02/13 26/02/13 05/03/13 12/03/13 Cours : Introduction - Sémantique concrète - Sémantique abstraite Domaines abstraits - Intervalles et octagones - Itérateur Analyse de programmes avec pointeurs. Combinaison d analyses - Produit réduit Cours d ouverture - - TP : - - Domaine des intervalles Itérateur - Widening Domaine des booléens - Produit réduit Au choix Au choix 3

4 Organisation du cours. 4

5 Organisation du cours : les cours. Objectif : apprendre à construire un analyseur statique par interprétation abstraite. introduire les bases théoriques nécessaires (et pas plus). introduire, par la pratique et l exemple, les techniques classiques pour obtenir un analyseur performant et précis. Approche pragmatique : ce cours ne vise pas à être exhaustif sur la théorie de l interprétation abstraite. on donnera une approche possible, volontairement limitée, permettant de définir un type d analyse statique. on essaiera de donner, en même temps que les résultats théoriques, des techniques de programmation aidant à la construction d un analyseur. 5

6 Organisation du cours : support de cours. Transparents : après chaque séance sur le site web. certains transparents sont incomplets et seront terminés en cours. certaines preuves seront faites au tableau. 6

7 Organisation du cours : les TP. Objectif : mise en pratique des solutions apportées en cours. avoir un aperçu des difficultés techniques liées à la réalisation d un analyseur statique. Programmation en OCAML (connaissance de OCAML requise). Utilisation de la technologie NEWSPEAK développée chez EADS-IW. c.f. A la fin du semestre, vous aurez codé un analyseur statique de programmes C. 7

8 Organisation du cours : évaluation. Evaluation pratique : le projet à la fin du cours, projet à rendre plus des jalons après certaines séances de TP. objectif du projet : coder un analyseur statique par interprétation abstraite. les TPs servent de préparation au projet. vous pourrez choisir, à partir de la 4ème séance, un thème à approfondir (domaines, itérateur, produit réduit...) Evaluation théorique : contrôle continu (QCM au début de chaque séance). contrôle final (présentation d article). 8

9 Stages. Toujours possible si intéressés. 9

10 Master STL - NI505 - IA Cours 1 Problématique de la vérification automatique de programmes. static const NUM TRANSF2_B06_C3 = E static const NUM TRANSF2_B06_C4 = static const NUM TRANSF2_B06_C5 = static const NUM LIM_A1_E2 = E+00 static const NUM LIM_A1_E3 = E+0 static const NUM K_A2_E2 = E-01; static const NUM AFFECT_N_1_E1 = E static const NUM SWITCH_N_E93_E1 = static const NUM SWITCH_N_A6_E1 = static const BOO AFFECT_B_1_E1? = FALSE; static NUM PADN5; /*Mod JS*/ /* SUB(1,PLDQCMMMOY,PDQMM,X611Z01) */ SUB(1,PDQCMMMOY,PDQMM,X611Z01) /* SUB(1,PDQCMMMOY,0,X611Z01) */ /*Fin Mod JS*/ K(A1,X611Z01,K_A1_E2,X611Z02) AFFECT_B(1,AFFECT_B_1_E1,BOFFACS1) TRANSF2(B06,X611Z02,X611Z02,X611Z02,BOF Z17,TRANSF2_B06_C1, \ TRANSF2_B06_C2,TRANSF2_B06_C3,TRANSF2 ANSF2_B06_C5) LIM(A1,X611Z17,LIM_A1_E2,LIM_A1_E3,PLEPS ADD(2,PFOSV,PLEPS,X611Z16) K(A2,PDQMM,K_A2_E2,X611Z03) AFFECT_N(1,AFFECT_N_1_E1,X611Z04) INVNUM(1,X611Z04,PADN5)

11 Quelques bugs célèbres. (1) 04 juin 1996, premier vol du nouveau lanceur Ariane 5. Après 37 secondes de vol, le lanceur dévie de son chemin, puis explose. Perte sèche pour Ariane Espace : 700M Résultat de l enquête : conversion non protégée d un nombre flottant vers un entier non-signé l ordinateur de vol a considéré que l altitude était négative 11

12 Quelques bugs célèbres. (2) 25 février 1991, les missiles Patriot protègent les militaires américains. Dans la nuit, un des missile rate sa cible (un Scud irakien) Bilan humain : 28 soldats américains tués. Résultat de l enquête : pour intercepter un missile, il faut avoir une mesure du temps. le calcul du temps était effectué en nombre flottant une erreur de 10-4 % a entraîné une déviation de 137 mètres. 12

13 Quelques bugs célèbres. (3) 14 août 2003, coupure de courant dans le Nord-Est des Etats-Unis. 256 centrales électriques s arrêtent touchant 55 millions de personnes. Résultat de l enquête : problème physique sur une des centrales. propagation à tout le réseau car le système d alerte était en panne panne du système d alerte : race condition. 13

14 Quelques bugs célèbres. (4) Septembre 1997, le USS Yorktown CG est immobilisé en pleine mer Les propulseurs sont en panne et le bateau restera plusieurs heures à l arrêt. Coût pour aller le chercher : 1M$ Résultat de l enquête : système informatique gère à distance la propulsion des moteurs une faute de frappe d un opérateur entraîne une division par zéro 14

15 Quelques bugs célèbres. (5) Démonstration par Volvo de son système de freinage d urgence. 15

16 Quelques bugs célèbres. (5) Démonstration par Volvo de son système de freinage d urgence. 15

17 Quelques bugs célèbres. (5) Démonstration par Volvo de son système de freinage d urgence. 15

18 Quelques bugs célèbres. (5) Démonstration par Volvo de son système de freinage d urgence. 15

19 Que nous apprennent ces exemples? Les systèmes sont de plus en plus complexes : plusieurs millions de lignes de code. plusieurs processus interagissant entre eux. Les bugs peuvent venir de partout : erreur de spécification. erreur de précision numérique. mauvaise utilisation par un utilisateur. 16

20 Comment éviter ces bugs? Matériel plus tolérant : redondance des calculateurs (tolérance aux pannes), diagnostique en ligne (détection des pannes). Code mieux conçu : développement suivant des normes strictes (plusieurs équipes indépendantes, pas d utilisation de bibliothèques externes,...), relecture manuel de tout le code écrit. 17

21 Comment éviter ces bugs? Matériel plus tolérant : redondance des calculateurs (tolérance aux pannes), diagnostique en ligne (détection des pannes). Code mieux conçu : développement suivant des normes strictes (plusieurs équipes indépendantes, pas d utilisation de bibliothèques externes,...), relecture manuel de tout le code écrit. Année OS Windows NT 3.1 Windows NT 3.5 Windows NT 4.0 Windows 2000 Windows XP Windows Vista Beta 2 LoC (million)

22 Comment éviter ces bugs? Matériel plus tolérant : redondance des calculateurs (tolérance aux pannes), diagnostique en ligne (détection des pannes). Code mieux conçu : développement suivant des normes strictes (plusieurs équipes indépendantes, pas d utilisation de bibliothèques externes,...), relecture manuel de tout le code écrit. Il est donc nécessaire de disposer d outils automatiques de vérification de programmes permettant de trouver des bugs et/ou de prouver leur absence. 17

23 Vérification de programmes. Définition : assurer qu un programme : fait ce qu il doit faire. ne fait pas ce qu il ne doit pas faire. Toujours par rapport à un critère d observation : spécification complète, formelle du programme (par ex: la fonction calcule la factorielle du nombre donné en argument). jeu d objectifs à atteindre (par ex: le programme intercepte tous les missiles pendant 1000h). jeu de propriétés à respecter (par ex: le programme ne fait aucune division par zéro). Problématique de la vérification : étant donné un programme et un ensemble de propriétés, prouver que le programme vérifie ces propriétés 18

24 Un exemple très classique. int fact(int n) { int r,i; r = 1;i=1; for (i=2; i<=n; i++) { r=r*i; return r; Exemples de propriétés : n [0, ], fact(n) =n! Temps d exécution < 10ms. n [0, 100], r 0 Trois techniques de vérification : test. preuve totale. preuve partielle (model-checking et interprétation abstraite). 19

25 Un exemple très classique. int fact(int n) { int r,i; r = 1;i=1; for (i=2; i<=n; i++) { r=r*i; return r; Exemples de propriétés : n [0, ], fact(n) =n! Temps d exécution < 10ms. n [0, 100], r 0 Trois techniques de vérification : test. Analyse dynamique preuve totale. preuve partielle (model-checking et interprétation abstraite). Analyse statique 19

26 Un exemple très classique. int fact(int n) { int r,i; r = 1;i=1; for (i=2; i<=n; i++) { r=r*i; return r; Exemples de propriétés : n [0, ], fact(n) =n! Temps d exécution < 10ms. n [0, 100], r 0 Utilisées industriellement Trois techniques de vérification : test. preuve totale. preuve partielle (model-checking et interprétation abstraite). Analyse dynamique Analyse statique 19

27 Analyse dynamique : test. On construit des scénarios de tests : manuellement. automatiquement via des critères de couverture du code... On joue les tests puis on vérifie les résultats : manuellement. automatiquement via des observateurs. Test exhaustif impossible pour les systèmes industriels complexes. On peut seulement trouver des bugs et jamais prouver leur absence. E.W. Dijkstra: «Program testing can be used to show the presence of bugs, but never to show their absence!» 20

28 Test: exemples. int fact(int n) { int r,i; r = 1;i=1; for (i=2; i<=n; i++) { r=r*i; return r; Spécifications : 0<n<20 Jeu de tests : n=0,2,19 Sorties: r=0,2, int abs(int n) { int r; if (n>=0) r=n; else r=-n; return r; Spécifications : n:int Jeu de tests : n=0,-1,1,min_int,max_int Sorties: r=0,1,1,-min_int,max_int 21

29 Test: exemples. int fact(int n) { int r,i; r = 1;i=1; for (i=2; i<=n; i++) { r=r*i; return r; Spécifications : 0<n<20 Jeu de tests : n=0,2,19 Sorties: r=0,2, int abs(int n) { int r; if (n>=0) r=n; else r=-n; return r; Spécifications : n:int Jeu de tests : n=0,-1,1,min_int,max_int Sorties: r=0,1,1,-min_int,max_int 21

30 Analyse statique : indécidabilité. (Rappel) Il est donc nécessaire de disposer d outils automatiques de vérification de programmes permettant de prouver l absence de bugs. (Equivalent) Peut-on construire une machine (i.e. un programme) qui, étant donné un programme P et une propriété H, renvoie 1 si P vérifie H et 0 sinon? Non: pour toute propriété non triviale, ce problème est indécidable, c est le théorème de Rice (preuve au tableau). Cependant : on n écrit pas n importe quel programme (par exemple pas ceux utilisés pour démontrer l indécidabilité) et on ne regarde pas n importe quelle propriété. on va donc pouvoir faire de la vérification partielle : on va prouver certaines propriétés sur un certain type de programmes. 22

31 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. // {n > 1 (hypothèse) // {r=i! // {r=(i-1)! // {r=i! // {r=i!,i=n 23

32 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { // {r=(i-1)! r=r*i; // {r=i! // {r=i!,i=n return r; Exemple : prouver que fact(n) =n! 23

33 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { // {r=(i-1)! r=r*i; // {r=i! // {r=i!,i=n return r; // {fact(n)=n! Exemple : prouver que fact(n) =n! 23

34 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; Exemple : prouver que fact(n) =n! for (i=2; i<=n; i++) { r=r*i; return r; // {fact(n)=n! 23

35 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { Exemple : prouver que fact(n) =n! r=r*i; return r; // {fact(n)=n! 23

36 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { // {r=(i-1)! r=r*i; Exemple : prouver que fact(n) =n! return r; // {fact(n)=n! 23

37 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { // {r=(i-1)! r=r*i; // {r=i! Exemple : prouver que Invariant de boucle. fact(n) =n! return r; // {fact(n)=n! 23

38 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { // {r=(i-1)! r=r*i; // {r=i! // {r=i!,i=n return r; // {fact(n)=n! Exemple : prouver que fact(n) =n! Invariant de boucle. Si on prouve la terminaison 23

39 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. int fact(int n) { // {n > 1 (hypothèse) int r,i; r = 1;i=1; // {r=i! for (i=2; i<=n; i++) { // {r=(i-1)! r=r*i; // {r=i! // {r=i!,i=n return r; // {fact(n)=n! Exemple : prouver que fact(n) =n! Invariant de boucle. Si on prouve la terminaison 23

40 Analyse statique : preuve de programmes. Idée : (Hoare, Floyd, fin des années 70) une propriété est une formule logique. Exemple : n, fact(n) =n! les entrées sont exprimées comme une formule logique. Exemple : n, 1 n le programme est vu comme une implication entre les deux formules. Difficultés : trouver la bonne logique pour exprimer les propriétés qu on veut prouver. automatiser la propagation des formules logiques. Souvent «à l envers» par de le calcul de weakest precondition. prouver la terminaison des boucles. 24

41 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. 25

42 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. Etat initial. 25

43 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. Etat initial. Etat interdit. 25

44 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. Etat initial. Etat interdit. Etats accessibles. 25

45 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. Etat initial. Etat interdit. Etats accessibles. 25

46 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. Etat initial. Etat interdit. Etats accessibles. 25

47 Analyse statique : model-checking. Idée : (Emerson, Clarke, Sifakis, prix Turing en 2007) initialement utilisé pour vérifier le comportement de systèmes de transitions une propriété = un ensemble d états à atteindre ou éviter. on parcourt exhaustivement le système pour vérifier la propriété. Pour l analyse de programme : le software model checking applique ces techniques à l analyse de programme. on construit un système de transition à partir du programme (cf cours 2). Problème : explosion du nombre d états. Pour un programme de 10 6 lignes de code et 10 4 variables, environ états possibles. 26

48 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; r = 2;i=1; for (i=3; i<=n; i++) { r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

49 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n!= 0 r = 2;i=1; for (i=3; i<=n; i++) { r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

50 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n!= 0 r = 2;i=1; // n!=0, r!=0, i!=0 for (i=3; i<=n; i++) { r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

51 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n!= 0 r = 2;i=1; // n!=0, r!=0, i!=0 for (i=3; i<=n; i++) { // n!=0, r!=0, i!=0 r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

52 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n!= 0 r = 2;i=1; // n!=0, r!=0, i!=0 for (i=3; i<=n; i++) { // n!=0, r!=0, i!=0 r=r*i; // n!=0, r?=0, i!=0 return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

53 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n!= 0 r = 2;i=1; // n!=0, r!=0, i!=0 for (i=3; i<=n; i++) { // n!=0, r!=0, i!=0 r=r*i; // n!=0, r?=0, i!=0 return r; // r!= 0 Trop peu précis : on ne peut pas conclure. Propriété à prouver : montrer que r n est pas nul 27

54 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n > 0 r = 2;i=1; for (i=3; i<=n; i++) { r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

55 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n > 0 r = 2;i=1; // n>0, r>0, i>0 for (i=3; i<=n; i++) { r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

56 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n > 0 r = 2;i=1; // n>0, r>0, i>0 for (i=3; i<=n; i++) { // n>0, r>0, i>0 r=r*i; return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

57 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n > 0 r = 2;i=1; // n>0, r>0, i>0 for (i=3; i<=n; i++) { // n>0, r>0, i>0 r=r*i; // n>0, r>0, i>0 return r; // r!= 0 Propriété à prouver : montrer que r n est pas nul 27

58 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. int fact(int n) { // n!=0 int r,i; // n > 0 r = 2;i=1; // n>0, r>0, i>0 for (i=3; i<=n; i++) { // n>0, r>0, i>0 r=r*i; // n>0, r>0, i>0 return r; // r!= 0 Attention : fact(34)=0 On a oublié des états du programme (en C, les entiers sont codés sur 32 bits). Propriété à prouver : montrer que r n est pas nul 27

59 Analyse statique : interprétation abstraite. Idée : (Cousot, Cousot, 1977) on n a pas besoin de l état exact d un programme pour prouver des propriétés. on peut, dans certains cas, perdre de l information de manière conservative. Difficultés : choisir l information que l on veut garder. signe des variables? intervalle de valeurs? variable est constante ou pas? choisir les propriétés que l on peut prouver. s assurer qu on n oublie aucun des états du programme. 28

60 Pour résumer : pour un programme à une variable. P0(x) P1(x) Pn 1(x) Pn(x) Test Model-checking Preuve formelle Interprétation abstraite 29

61 Master STL - IntAbs Cours 1 bis Une intuition de l interprétation abstraite.

62 Approche de l interprétation abstraite. Rappel, théorème de Rice On ne peut pas définir un algorithme qui, pour tout programme P et toute propriété H, renvoie 1 si P vérifie H et 0 sinon. Encore pire Etant donnée une propriété non triviale H, on ne peut pas définir un algorithme qui, pour tout programme P, renvoie 1 si P vérifie H et 0 sinon. Une analyse statique par interprétation abstraite va donc : choisir une (ou plusieurs) propriété(s) à vérifier. définir une méthode d analyse telle que, pour tout programme P: si le résultat est 0, alors P ne vérifie pas la propriété. si le résultat est 1, alors P vérifie la propriété. si le résultat est?, alors on ne peut pas conclure. 31

63 Exemples de propriétés et d analyse. Propriétés Analyse Le résultat du programme est strictement positif. On ne regarde que le signe des variables. -5 <= n <= 5 Résultats int f(int n) { int r; r=n*n; r=-r; return r; int g(int n) { int r,i; r=1; i=0; while (i<=n) r=r+(i++); return r; int abs(int n) { int r; if (n>=0) r=n; else r=-n; return r; r<=0 r>0 r>=0 32

64 Exemples de propriétés et d analyse. Propriétés Analyse Le programme termine en moins de 50ms. On ne calcule que le temps d exécution d une instruction. -5 <= n <= 5 fun s exécute en moins de 8ms Résultats int f(int n) { int r,i; for (i=0;i<=n,i++) r=fun(i); int g(int n) { int r,i; n=n+2; for (i=0;i<=n,i++) r=fun(i); return r; return r; t<=48 t<=64 33

65 Exemples de propriétés et d analyse. Propriétés Analyse Il n y a ni division par zéro ni dépassement de capacité. On calcule des bornes sur les valeurs des variables à chaque instruction. -5 <= n <= 5 Résultats int f(int n) { int r,x;... if (r<=0) x=fun(x)/r;... int g(int n) { int r,x;... if (r<=0) x=fun(x)/r;... void h(int n) { int r; while (1) { r=fun(r,n)/r; r=0 r<=0 1<=r<=10 34

66 Suite du cours. On s intéresse désormais uniquement à prouver qu un programme ne fait pas de run time error (RTE). Pour cela, on va essayer de déterminer un invariant numérique sur les variables du programme en chaque ligne de code. int fact(int n) { int r,i; r = 1; i=1; for (i=2; i<=n; i++) { r=r*i; return r; Exemple récurrent. Difficulté majeure : calcul automatique et rapide d un invariant précis. Cette séance : on montre «avec les mains» comment on construit ces invariants. 4 prochaines séances : on formalise ce qu on va faire pendant cette séance. On suppose que n [1, 5] 35

67 Cas facile : une exécution. n =5 int fact(int n) { int r,i; r = 1; i=1; for (i=2; i<=n; i++) { r=r*i; return r; 36

68 Cas facile : une exécution. On sait que n=3 n =5. Comment montrer qu il n y aura pas de RTE? int fact(int n) { int r,i; r = 1; i=1; for (i=2; i<=n; i++) { r=r*i; return r; sans exécuter le programme. 36

69 Cas facile : une exécution. On sait que n=3 n =5. Comment montrer qu il n y aura pas de RTE? int fact(int n) { int r,i; r = 1; i=1; for (i=2; i<=n; i++) { r=r*i; return r; sans exécuter le programme. On va «simuler» l exécution du programme en calculant la «trace d exécution». Une trace est une succession d états qui disent: à quel niveau du programme on est (quelle instruction va être exécutée). quelle est la valeur de chaque variable. 36

70 Traces d exécution du programme. int fact(int n) { (0) int r,i; (1) r = 1; i=1; (2) for (i=2; i<=n; i++) { (3) r=r*i; (4) return r; Etat de la machine : associe à i,n et r une valeur. retient le point de contrôle Exemple : On appelle trace une suite d états. 37

71 Traces d exécution du programme. int fact(int n) { (0) int r,i; (1) r = 1; i=1; (2) for (i=2; i<=n; i++) { (3) r=r*i; (4) return r; Etat de la machine : associe à i,n et r une valeur. retient le point de contrôle Exemple : On appelle trace une suite d états. r := 6 r := 6 i := 4 4 i := 4 4 i := 5 20 i := 5 20 i := 5 20 i := 6 37

72 Il suffit donc de : 1. calculer l ensemble des traces d exécution d un programme. 2. vérifier si une des traces va causer une RTE. Problèmes : chaque trace est potentiellement infinie. il y a potentiellement un nombre infini de traces. Solutions : on va en calculer une sur-approximation représentable. (abstraction) cette sur-approximation sera un invariant vrai pour toutes les traces. r := «Pour toute trace, pour tout état i := de cette trace, on a r e [1,2] 120]» n := 38

73 Plusieurs problèmes. On veut trouver un invariant valable pour toutes les traces d exécution. Comment caractériser mathématiquement une trace : sémantique concrète. Comment unifier cet ensemble de traces en un objet mathématique : sémantique collectrice. Comment représenter (et calculer) de manière finie une sur-approximation de cet objet : sémantique abstraite. 39

74 Sémantique concrète. Sémantique «à petit pas» : on formalise les «flèches» dans les traces d exécution. On définit donc des fonctions de transition entre les états du système. r=1; i=1; r=r*i; r := 6 Pour chaque élément du langage, on définit une transition de ce type. La sémantique du programme est alors la composition de ces transitions. 40

75 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z r := 6 r := 6 i := 4 4 i := 4 4 i := 5 20 i := 5 20 i := 5 20 i := 6 41

76 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z r := 6 r := 6 i := 4 4 i := 4 4 i := 5 20 i := 5 20 i := 5 20 i := 6 41

77 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z r := 6 i := 4 4 i := 4 4 i := 5 20 i := 5 20 i := 5 r := 6 20 i := 6 41

78 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z 4 i := 4 4 i := 5 20 i := 5 20 i := 5 r := 6 20 i := 6 r := 6 i := 4 41

79 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z 4 i := 5 20 i := 5 20 i := 5 r := 6 20 i := 6 r := 6 i := 4 4 i := 4 41

80 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z 20 i := 5 20 i := 5 r := 6 20 i := 6 r := 6 i := 4 4 i := 4 4 i := 5 41

81 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z 20 i := 5 r := 6 20 i := 6 r := 6 i := 4 4 i := 4 4 i := 5 20 i := 5 41

82 Sémantique collectrice. On peut regrouper, dans une trace, les états correspondants aux mêmes points de contrôle. On travaille alors sur des ensembles d états : Loc P Var Z r := 6 i := 4 r := 6 4 i := 4 20 i := 6 4 i := 5 20 i := 5 20 i := 6 41

83 Sémantique collectrice (2). On peut faire pareil pour toutes les traces, on obtient le même graphe. L union de ces graphes constitue la sémantique collectrice du programme. r := 6 i := 4 r := 6 i := 4 r := 6 42

84 Sémantique collectrice (2). On peut faire pareil pour toutes les traces, on obtient le même graphe. L union de ces graphes constitue la sémantique collectrice du programme. i r := := 2 1 n i := := 1 i n i := := 2 1 r 2 n 1 r 1 n 2 := 2 := 32 := i r := 36 n 4 r := 6 i := 4 i := := 1 1 i 1 n 1 i := r 1 := 2 n := i 3 := 21 r 2 3 n r := 32 r i r := 6 r i 1 r i := 63 i n := 42 r := 6 i := 4 42

85 Correction de la sémantique collectrice. La sémantique concrète est «incluse» dans la sémantique collectrice. Elle contient toutes les traces, plus des traces impossibles.... r := 6 i := 4 43

86 Correction de la sémantique collectrice. La sémantique concrète est «incluse» dans la sémantique collectrice. Elle contient toutes les traces, plus des traces impossibles.... r := 6 i := 4 43

87 Correction de la sémantique collectrice. La sémantique concrète est «incluse» dans la sémantique collectrice. Elle contient toutes les traces, plus des traces impossibles.... r := 6 i := 4 43

88 Correction de la sémantique collectrice. La sémantique concrète est «incluse» dans la sémantique collectrice. Elle contient toutes les traces, plus des traces impossibles. r := 6 i := 4... r := 6 i := 4 43

89 Correction de la sémantique collectrice. La sémantique concrète est «incluse» dans la sémantique collectrice. Elle contient toutes les traces, plus des traces impossibles. r := 6 i := 4 Si on trouve un invariant valable sur la sémantique collectrice, on aura un invariant sur toutes les traces d exécution.... r := 6 i := 4 43

90 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

91 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

92 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

93 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

94 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

95 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

96 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). 44

97 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). r := 6 44

98 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). r := 6 r := 6 i := 4 44

99 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). r := 6 r := 6 i := 4 r := 6 i := 4 44

100 Calcul de la sémantique collectrice. On part du graphe de flot de contrôle et on propage les états (ex : n {1, 2, 3 ). r := 6 r := 6 i := 4 Problème : explosion combinatoire du nombre d états. r := 6 i := 4 44

101 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 2] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

102 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

103 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

104 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

105 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 2] n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

106 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 1] i := [1, 2] n := [1, 3] r := [1, 2] i := [1, 2] n := [1, 3] r := [1, 1] i := [1, 2] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

107 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 2] i := [1, 3] n := [1, 3] r := [1, 2] i := [1, 2] n := [1, 3] r := [1, 1] i := [1, 2] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

108 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 2] i := [1, 3] n := [1, 3] r := [1, 6] i := [1, 3] n := [1, 3] r := [1, 2] i := [1, 3] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

109 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 6] i := [1, 4] n := [1, 3] r := [1, 6] i := [1, 3] n := [1, 3] r := [1, 2] i := [1, 3] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

110 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 6] i := [1, 4] n := [1, 3] r := [1, 6] i := [1, 3] n := [1, 3] r := [1, 6] i := [1, 4] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. 45

111 Sémantique abstraite. On regroupe dans un même objet mathématique un ensemble d environnements P P Var Z Par exemple, {1, 2, 6, 24, 120 [1, 120] (domaine des intervalles). On travaille donc maintenant avec des états abstraits : Loc Var I r := i := n := [1, 3] r := [1, 1] i := [1, 1] n := [1, 3] r := [1, 6] i := [1, 4] n := [1, 3] r := [1, 6] i := [1, 3] n := [1, 3] r := [1, 6] i := [1, 4] n := [1, 3] Méthode de calcul : comme pour la sémantique collectrice, mais sur des états abstraits. Remarque : on obtient des traces qui n étaient pas présentes dans la sémantique collectrice. 45

112 Pour résumer. Pour prouver une propriété sur un programme, on suit souvent (toujours?) le raisonnement suivant : 1. définition d une sémantique concrète permettant de prouver la propriété sur une exécution. 2. définition d une sémantique collectrice permettant de regrouper l ensemble des exécutions. 3. définition d une sémantique abstraite calculable qui sur-approxime la sémantique collectrice. Sémantique concrète. Sémantique collectrice. Sémantique abstraite. Une exécution Au moins toutes les exécutions. Au moins toutes les exécutions. NON CALCULABLE CALCULABLE 46

Typage et Analyse Statique

Typage et Analyse Statique Typage et Analyse Statique Cours 1 Emmanuel Chailloux Spécialité Science et Technologie du Logiciel Master mention Informatique Université Pierre et Marie Curie année 2015-2016 Cours 1 - Typage et Analyse

Plus en détail

Automatisation de la certification formelle de systèmes critiques par instrumentation d interpréteurs abstraits

Automatisation de la certification formelle de systèmes critiques par instrumentation d interpréteurs abstraits 1 d Automatisation de la certification formelle de systèmes critiques par instrumentation d sous la direction de Michaël Périn Soutenance de Thèse de Doctorat Université de Grenoble - Laboratoire Verimag

Plus en détail

Analyse de programmes par interprétation abstraite

Analyse de programmes par interprétation abstraite Analyse de programmes par interprétation abstraite Marc PEGON marc.pegon@ensimag.imag.fr Ensimag - Grenoble INP Encadrants David MONNIAUX Matthieu MOY 1 / 21 Analyse statique : obtenir automatiquement

Plus en détail

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle Cours 3 : Instructions qui changent l ordre d exécution séquentiel 1 Cours 3 Instructions qui changent l ordre d exécution séquentiel La conditionnelle: instructions si et selon Les boucles Comment raisonner

Plus en détail

Méthodes de test. Mihaela Sighireanu

Méthodes de test. Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/methtest/ Partie I 1 Propriétés 2 Un peu de génie logiciel de test 3 Eléments Problèmes Point

Plus en détail

Analyse statique de SCADE par interprétation abstraite

Analyse statique de SCADE par interprétation abstraite Analyse statique de SCADE par interprétation abstraite soutenance de stage Alex AUVOLAT ANSYS-Esterel Technologies sous l encadrement de Jean-Louis Colaço Juin-Juillet 2014 1/33 Introduction SCADE : programmation

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Analyse abstraite de missions sous PILOT

Analyse abstraite de missions sous PILOT Analyse abstraite de missions sous PILOT Damien Massé EA 3883, Université de Bretagne Occidentale, Brest damien.masse@univ-brest.fr Résumé Nous étudions la possibilité de réaliser un analyseur par interprétation

Plus en détail

Les limites théoriques de l informatique Les problèmes indécidables

Les limites théoriques de l informatique Les problèmes indécidables Les limites théoriques de l informatique Les problèmes indécidables Samuel Fiorini - Gilles Geeraerts - Jean-François Raskin Université Libre de Bruxelles Académie Royale des Sciences Bruxelles 3/3/2010

Plus en détail

Analyse de programme

Analyse de programme Analyse de programme À quoi ça sert? Comment ça marche? Bertrand Jeannet et Alain Girault INRIA Rhône-Alpes 25 janvier 2012 A. Girault et B. Jeannet (INRIA) Analyse de programme 25 janvier 2012 1 / 41

Plus en détail

Correction de programmes : Logique de Hoare

Correction de programmes : Logique de Hoare 16 juillet 2009 Logique et informatique Vis-à-vis de l informatique la logique a au moins 2 rôles : 1 Externe et théorique (fondements de l informatique - Électif en S4) : Logique comme méta-informatique

Plus en détail

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion Vérification de logiciels par analyse statique Contexte et motivations Les techniques envisagées Evolution des processus Conclusion Contexte et motivations Specification Design architecture Revues and

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

La chasse aux bugs : pourquoi? Les bugs en informatique. La chasse aux bugs : pourquoi? Des bugs logiciels aux conséquences désastreuses (1)

La chasse aux bugs : pourquoi? Les bugs en informatique. La chasse aux bugs : pourquoi? Des bugs logiciels aux conséquences désastreuses (1) La chasse aux bugs : pourquoi? Les bugs en informatique où pourquoi faire un peu de maths quand c est utile Les bugs sont partie intégrante de l informatique. Mais en fait... les bugs, est-ce si grave?

Plus en détail

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Série 2 Premiers programmes

Série 2 Premiers programmes Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Mathématiques pour l informatique 1 notes de cours sur la seconde partie

Mathématiques pour l informatique 1 notes de cours sur la seconde partie Mathématiques pour l informatique notes de cours sur la seconde partie L Université Paris-Est, Marne-la-Vallée Cyril Nicaud Organisation Ce demi-cours est composé de 6 séances de cours et 6 séances de

Plus en détail

Représentation des nombres en langage informatique et conséquences

Représentation des nombres en langage informatique et conséquences CHAPITRE Représentation des nombres en langage informatique et conséquences La création de la numération est un des faits les plus marquants de l histoire de l humanité. Si la plupart des civilisations

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

2.1. Les fonctions. Les fonctions se définissent de la manière suivante : NomDeLaFonction(param1, param2,...)= { \\ Code de la fonction

2.1. Les fonctions. Les fonctions se définissent de la manière suivante : NomDeLaFonction(param1, param2,...)= { \\ Code de la fonction TP1, prise en main de Pari/GP et arithmétique Le programme que nous allons utiliser pour les TP se nomme PARI/GP dont le point fort est la théorie des nombres (au sens large). Il est donc tout à fait adapter

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) JDT (débogage), outils d analyse statique Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Cours Info - 12. Représentation des nombres en machine. D.Malka MPSI 2014-2015. D.Malka Cours Info - 12 MPSI 2014-2015 1 / 45

Cours Info - 12. Représentation des nombres en machine. D.Malka MPSI 2014-2015. D.Malka Cours Info - 12 MPSI 2014-2015 1 / 45 Cours Info - 12 Représentation des nombres en machine D.Malka MPSI 2014-2015 D.Malka Cours Info - 12 MPSI 2014-2015 1 / 45 Sommaire Sommaire 1 Bases de numération par position 2 Représentation des entiers

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

Les méthodes formelles dans le cycle de vie. Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr

Les méthodes formelles dans le cycle de vie. Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr Les méthodes formelles dans le cycle de vie Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr Plan Introduction Différentes utilisations possibles Différentes techniques pour différentes propriétés à différents

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Analyse Statique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 12 mai 2007 1 / 38 Indécidabilité de la Terminaison

Plus en détail

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com Chapitre 1 La récursivité Programmation en Python 2ème année E-mail mlahby@gmailcom 23 septembre 2014 Programmation en Python 2ème année CPGE GSR 2014-2015 1/ 24 Plan 1 Rappel 2 Récurrence en mathématique

Plus en détail

1 de 1. Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert

1 de 1. Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 1 de 1 Algorithmique Récursivité Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 1 Récursivité et Récurrence Deux notions très proche : mathématiques : récurrence

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

Détection de la terminaison distribuée

Détection de la terminaison distribuée Cours Algorithmique répartie Master 2 Université Paris-Diderot Devoir 1 (à rendre avant le 22 février 2010) Détection de la terminaison distribuée Généralités Π = {p 0,..., p n 1 } est l ensemble des processus.

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Modèles à Événements Discrets. Réseaux de Petri Stochastiques Modèles à Événements Discrets Réseaux de Petri Stochastiques Table des matières 1 Chaînes de Markov Définition formelle Idée générale Discrete Time Markov Chains Continuous Time Markov Chains Propriétés

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

Chapitre 2 : Représentation des nombres en machine

Chapitre 2 : Représentation des nombres en machine Chapitre 2 : Représentation des nombres en machine Introduction La mémoire des ordinateurs est constituée d une multitude de petits circuits électroniques qui ne peuvent être que dans deux états : sous

Plus en détail

Informatique. Programmation en Python.

Informatique. Programmation en Python. BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en

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

Analyse statique par interprétation abstraite de systèmes hybrides.

Analyse statique par interprétation abstraite de systèmes hybrides. Analyse statique par interprétation abstraite de systèmes hybrides. Olivier Bouissou To cite this version: Olivier Bouissou. Analyse statique par interprétation abstraite de systèmes hybrides.. Computer

Plus en détail

Fondements de l informatique: Examen Durée: 3h

Fondements de l informatique: Examen Durée: 3h École polytechnique X2013 INF412 Fondements de l informatique Fondements de l informatique: Examen Durée: 3h Sujet proposé par Olivier Bournez Version 3 (corrigé) L énoncé comporte 4 parties (sections),

Plus en détail

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Les types énumérés On peut aussi définir des types qui ont un nombre fini de valeurs (ex: jours de la semaine, couleurs primaires, etc.)

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 3 : Actions, Procédures Université Lille 1 - Polytech Lille Conception Structurée Descendante Les Fonctions Les Actions / les Procédures Résumé Conception Structurée

Plus en détail

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel Test logiciel Objectif et plan du du cours Présenter les concepts de base sur le test logiciel Introduire des techniques simples pour construire des tests A partir de la spécification informelle du programme

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

INF121: Algorithmique et Programmation Fonctionnelle INF121: Algorithmique et Programmation Fonctionnelle Cours 1: Identificateurs, types de base et fonctions Année 2013-2014 Identificateurs La notion d identificateur Un concept fondamental dans les langages

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Notion d algorithme. Boucles et tests avec et sans Python. Stéphane Gonnord. stephane@gonnord.org www.mp933.fr. Lycée du parc - Lyon

Notion d algorithme. Boucles et tests avec et sans Python. Stéphane Gonnord. stephane@gonnord.org www.mp933.fr. Lycée du parc - Lyon Boucles et tests avec et sans stephane@gonnord.org www.mp933.fr Lycée du parc - Lyon Vendredi 4, 11 et 18 octobre 2013 Lycée du parc 1. : des exemples de la vraie vie ; un peu de mathématiques 2. Des maths

Plus en détail

et Automates de Büchi

et Automates de Büchi Cours 9: Propriétes ω-régulières et Automates de Büchi Francesco Belardinelli Laboratoire IBISC Remerciements à Alessio Lomuscio et Joost-Pieter Katoen 26 mars 2015 Cours 9 - Vue d Ensemble Motivation

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Cours d Algorithmique

Cours d Algorithmique 1 de 16 Cours d Algorithmique Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 16 Informations pratiques 25 heures de cours ; 25 heures de travaux dirigés

Plus en détail

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

Le raisonnement par récurrence

Le raisonnement par récurrence Le raisonnement par récurrence Nous notons N l ensemble des entiers naturels : N = {0,,, } Nous dirons naturel au lieu de entier naturel Le principe du raisonnement par récurrence Soit A une partie de

Plus en détail

Introduction à l étude des Corps Finis

Introduction à l étude des Corps Finis Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur

Plus en détail

Introduction à l arithmétique des ordinateurs

Introduction à l arithmétique des ordinateurs Introduction à l arithmétique des ordinateurs Peut-on vraiment calculer avec un ordinateur? F. Langrognet F. Langrognet Introduction à l arithmétique des ordinateurs Fev 2015 1 / 193 PLAN 1 Calculer avec

Plus en détail

BASES DU RAISONNEMENT

BASES DU RAISONNEMENT BASES DU RAISONNEMENT P. Pansu 10 septembre 2006 Rappel du programme officiel Logique, différents types de raisonnement. Ensembles, éléments. Fonctions et applications. Produit, puissances. Union, intersection,

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

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

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Chapitre 2. Eléments pour comprendre un énoncé

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

Plus en détail

Sortie : OUI si n est premier, NON sinon. On peut voir Premier aussi comme une fonction, en remplaçant OUI par 1 et NON par 0.

Sortie : OUI si n est premier, NON sinon. On peut voir Premier aussi comme une fonction, en remplaçant OUI par 1 et NON par 0. Université Bordeaux 1. Master Sciences & Technologies, Informatique. Examen UE IN7W11, Modèles de calcul. Responsable A. Muscholl Session 1, 2011 2012. 12 décembre 2011, 14h-17h. Documents autorisés :

Plus en détail

Calcul Booléen et Circuits Logiques

Calcul Booléen et Circuits Logiques Chapitre 7 Calcul Booléen et Circuits Logiques 7.1 Traitement Logique et Machine 7.1.1 Exemple Nos raisonnement sont usuellement simples : si ma voiture ne marche pas et il pleut alors je prends le metro

Plus en détail

UPMC Master informatique 2 STL NI503 Conception de langages Notes I

UPMC Master informatique 2 STL NI503 Conception de langages Notes I UPMC Master informatique 2 STL NI503 Conception de langages Notes I 2012 1 Évaluer Un langage Le langage Logo est composé commandes permettant de diriger le déplacement d un point sur un plan cartésien

Plus en détail

TD n 1 - Tests de couverture en langage C

TD n 1 - Tests de couverture en langage C ENSEIRB Année 201-2014 ème année IT06 TD n 1 - Tests de couverture en langage C Résumé : Cette feuille compare les différentes techniques de test structurel et fonctionnel, ainsi que les aspects du test

Plus en détail

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme? Validation par le test Objectifs du cours d'aujourd'hui Donner des réponses aux questions suivantes : Lydie du Bousquet 2 Qu est-ce que tester un programme? Exercice 1 : Inscrivez sur une feuille ce que

Plus en détail

Le développement d un programme dépend de la taille et de la complexité du problème. Nous identifions deux façons de procéder pour développer :

Le développement d un programme dépend de la taille et de la complexité du problème. Nous identifions deux façons de procéder pour développer : Programmation Impérative : Méthodologie Introduction Le développement d un programme dépend de la taille et de la complexité du problème. Nous identifions deux façons de procéder pour développer : Programmation

Plus en détail

Sémantique des Langages de Programmation

Sémantique des Langages de Programmation Sémantique des Langages de Programmation Introduction Stefano Guerrini stefano.guerrini@univ-paris13.fr LIPN - Institut Galilée, Université Paris Nord 13 Sup Galillée Informatique, 1ère année 2009 2010

Plus en détail

PARTIE 2 : ALGORITHMIQUE & PROGRAMMATION

PARTIE 2 : ALGORITHMIQUE & PROGRAMMATION PARTIE 2 : ALGORITHMIQUE & PROGRAMMATION TP 1 DÉCOUVERTE DE PYTHON Objectifs Découvrir l environnement Python. Découvrir les limites de Python. Manipuler différents types. Python est un langage de programmation

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Calculabilité Cours 3 : Problèmes non-calculables. http://www.irisa.fr/lande/pichardie/l3/log/

Calculabilité Cours 3 : Problèmes non-calculables. http://www.irisa.fr/lande/pichardie/l3/log/ Calculabilité Cours 3 : Problèmes non-calculables http://www.irisa.fr/lande/pichardie/l3/log/ Problèmes et classes de décidabilité Problèmes et classes de décidabilité Nous nous intéressons aux problèmes

Plus en détail

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013»

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» I Objectifs Niveau fondamental : «on se fixe pour objectif la

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de

Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre

Plus en détail

Recherche opérationnelle. Programmation linéaire et recherche opérationnelle. Programmation linéaire. Des problèmes de RO que vous savez résoudre

Recherche opérationnelle. Programmation linéaire et recherche opérationnelle. Programmation linéaire. Des problèmes de RO que vous savez résoudre Recherche opérationnelle Programmation linéaire et recherche opérationnelle Ioan Todinca Ioan.Todinca@univ-orleans.fr tél. 0 38 41 7 93 bureau : en bas à gauche Tentative de définition Ensemble de méthodes

Plus en détail

Analyse Statique de Programmes

Analyse Statique de Programmes Analyse statique et application. Typage. Analyse de flots de données. Exemples de transformations simples de programmes au niveau source. Prépa Agreg de Maths, option Info - ENS Cachan-Bretagne Thomas

Plus en détail

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Exo7 Logique et raisonnements Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Quelques motivations Il est important d avoir un langage rigoureux. La langue

Plus en détail

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels.

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels. Licence de Sciences et Technologies EM21 - Analyse Fiche de cours 1 - Nombres réels. On connaît les ensembles suivants, tous munis d une addition, d une multiplication, et d une relation d ordre compatibles

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

Corrigé de l examen de systèmes opératoires Module Synchronisation des processus

Corrigé de l examen de systèmes opératoires Module Synchronisation des processus Corrigé de l examen de systèmes opératoires Module Synchronisation des processus 2ième Année Informatique et Mathématiques Appliquées 17 Novembre 1999 1 Les sémaphores 1. Donner la définition d un sémaphore

Plus en détail

Notes de cours. Cours introductif sur la théorie des domaines. Modèles des langages de programmation Master Parisien de Recherche en Informatique

Notes de cours. Cours introductif sur la théorie des domaines. Modèles des langages de programmation Master Parisien de Recherche en Informatique Notes de cours Cours introductif sur la théorie des domaines Paul-André Melliès Modèles des langages de programmation Master Parisien de Recherche en Informatique 1 Ensembles ordonnés Definition 1.1 (ensemble

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 11 : Arbre couvrant Prétraitement Benjamin Wack 2015-2016 1 / 32 La dernière fois Rappels sur les graphes Problèmes classiques Algorithmes d optimisation

Plus en détail

Multiplication par une constante entière

Multiplication par une constante entière Multiplication par une constante entière Vincent Lefèvre Juin 2001 Introduction But : générer du code optimal à l aide d opérations élémentaires (décalages vers la gauche, additions, soustractions). Utile

Plus en détail

Techniques et outils de test pour les logiciels réactifs synchrones

Techniques et outils de test pour les logiciels réactifs synchrones Journées Systèmes et Logiciels Critiques Institut IMAG ; 14-16 nombre 2000 Techniques et outils de test pour les logiciels réactifs synchrones Farid Ouabdesselam 1 Méthodes de test : classification générale

Plus en détail

Chap. 2. Langages et automates

Chap. 2. Langages et automates Chapitre 2. Langages et automates 1. Quelques définitions et description d un langage. 2. Les expressions régulières. 3. Les automates fini déterministes et non-déterministes. 4. Construction automatique

Plus en détail

Définition d une suite récurrente à l aide de la fonction ln

Définition d une suite récurrente à l aide de la fonction ln Définition d une suite récurrente à l aide de la fonction ln Thèmes. fonction ln, théorème des valeurs intermédiares, suite définie par récurrence : majoration, minoration, monotonie, convergence, eistence.

Plus en détail

Image d un intervalle par une fonction continue

Image d un intervalle par une fonction continue DOCUMENT 27 Image d un intervalle par une fonction continue La continuité d une fonction en un point est une propriété locale : une fonction est continue en un point x 0 si et seulement si sa restriction

Plus en détail

Analyse de la complexité algorithmique (1)

Analyse de la complexité algorithmique (1) Analyse de la complexité algorithmique (1) L analyse de la complexité telle que nous l avons vue jusqu à présent nous a essentiellement servi à déterminer si un problème est ou non facile (i.e. soluble

Plus en détail

IPT : Cours 2. La représentation informatique des nombres

IPT : Cours 2. La représentation informatique des nombres IPT : Cours 2 La représentation informatique des nombres (3 ou 4 heures) MPSI-Schwarz : Prytanée National Militaire Pascal Delahaye 28 septembre 2015 1 Codage en base 2 Définition 1 : Tout nombre décimal

Plus en détail

Partiel - 12 mars 2014

Partiel - 12 mars 2014 Licence STS, semestre 4 013 14 Mathématiques pour l Informatique (Info 9) 1 mars 014 http://www.lri.fr/~paulin/mathinfo Partiel - 1 mars 014 L examen dure heures. L énoncé est composé de 5 pages. Toutes

Plus en détail

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation Introduction à la compilation A. DARGHAM Faculté des Sciences Oujda Sommaire Environnement d un compilateur Schéma global d un compilateur Caractéristiques d un bon compilateur Définition Un compilateur

Plus en détail

Cours 1: Introduction à l algorithmique

Cours 1: Introduction à l algorithmique 1 Cours 1: Introduction à l algorithmique Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique 2 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème

Plus en détail

I21 Algorithmique et programmation II. David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2

I21 Algorithmique et programmation II. David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2 I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2 II. Programmation par objet 1. Motivation 2. Encapsulation 3. Héritage 4. Initiation à la modélisation

Plus en détail

Le test de logiciel : pourquoi et comment Marie-Claude Gaudel, Professeur émérite, LRI UMR n 8623 Université Paris Sud 11

Le test de logiciel : pourquoi et comment Marie-Claude Gaudel, Professeur émérite, LRI UMR n 8623 Université Paris Sud 11 1/6 Gaudel Le test de logiciel : pourquoi et comment Marie-Claude Gaudel, Professeur émérite, LRI UMR n 8623 Université Paris Sud 11 Introduction Le logiciel est un élément inévitable de notre environnement

Plus en détail

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu SNAKE Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp Copie d écran du jeu Principe de fonctionnement du jeu : le serpent avance automatiquement, le joueur ne peut agir que sur

Plus en détail