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 (olivier.bouissou@cea.fr) - 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

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

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

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

Model checking temporisé

Model checking temporisé Model checking temporisé Béatrice Bérard LAMSADE Université Paris-Dauphine & CNRS berard@lamsade.dauphine.fr ETR 07, 5 septembre 2007 1/44 Nécessité de vérifier des systèmes... 2/44 Nécessité de vérifier

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 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

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

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

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

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Les processus légers : threads. Système L3, 2014-2015 1/31

Les processus légers : threads. Système L3, 2014-2015 1/31 Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours

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

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 23/04/2007

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 23/04/2007 1 Cours de génie logiciel (d'après A.-M. Hugues) Assurance Qualité Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 23/04/2007 2 Les deux facettes de la qualité Conformité avec la définition

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

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Analyse de sécurité de logiciels système par typage statique

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

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

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

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

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov Olivier Hermant et Vivien Maisonneuve CRI, MINES ParisTech, PSL Research University prenom.nom@mines-paristech.fr

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

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

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

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

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

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

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

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

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

Intelligence Artificielle et Robotique

Intelligence Artificielle et Robotique Intelligence Artificielle et Robotique Introduction à l intelligence artificielle David Janiszek david.janiszek@parisdescartes.fr http://www.math-info.univ-paris5.fr/~janiszek/ PRES Sorbonne Paris Cité

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

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

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

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Utilisation des tableaux sémantiques dans les logiques de description

Utilisation des tableaux sémantiques dans les logiques de description Utilisation des tableaux sémantiques dans les logiques de description IFT6281 Web Sémantique Jacques Bergeron Département d informatique et de recherche opérationnelle Université de Montréal bergerja@iro.umontreal.ca

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

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Baccalauréat ES/L Amérique du Sud 21 novembre 2013 Baccalauréat ES/L Amérique du Sud 21 novembre 2013 A. P. M. E. P. EXERCICE 1 Commun à tous les candidats 5 points Une entreprise informatique produit et vend des clés USB. La vente de ces clés est réalisée

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

Algorithmique et Programmation Fonctionnelle

Algorithmique et Programmation Fonctionnelle Algorithmique et Programmation Fonctionnelle RICM3 Cours 9 : Lambda-calcul Benjamin Wack Polytech 2014-2015 1 / 35 La dernière fois Typage Polymorphisme Inférence de type 2 / 35 Plan Contexte λ-termes

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

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

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

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

Principes des langages de programmation INF 321. Eric Goubault

Principes des langages de programmation INF 321. Eric Goubault Principes des langages de programmation INF 321 Eric Goubault 24 mars 2014 2 Table des matières 1 Introduction 7 2 Programmation impérative 11 2.1 Variables et types........................... 11 2.2 Codage

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12 Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont

Plus en détail

LES GENERATEURS DE NOMBRES ALEATOIRES

LES GENERATEURS DE NOMBRES ALEATOIRES LES GENERATEURS DE NOMBRES ALEATOIRES 1 Ce travail a deux objectifs : ====================================================================== 1. Comprendre ce que font les générateurs de nombres aléatoires

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

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation. Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local

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

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Texte Agrégation limitée par diffusion interne

Texte Agrégation limitée par diffusion interne Page n 1. Texte Agrégation limitée par diffusion interne 1 Le phénomène observé Un fût de déchets radioactifs est enterré secrètement dans le Cantal. Au bout de quelques années, il devient poreux et laisse

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

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

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier Utilisation de l analyse statique comme outil d aide au développement par Yves Gauthier essai présenté au Département d'informatique en vue de l'obtention du grade de maître en technologies de l information

Plus en détail

Continuité d une fonction de plusieurs variables

Continuité d une fonction de plusieurs variables Chapitre 2 Continuité d une fonction de plusieurs variables Maintenant qu on a défini la notion de limite pour des suites dans R n, la notion de continuité s étend sans problème à des fonctions de plusieurs

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

1 Définition et premières propriétés des congruences

1 Définition et premières propriétés des congruences Université Paris 13, Institut Galilée Département de Mathématiques Licence 2ème année Informatique 2013-2014 Cours de Mathématiques pour l Informatique Des nombres aux structures Sylviane R. Schwer Leçon

Plus en détail

Correction du baccalauréat ES/L Métropole 20 juin 2014

Correction du baccalauréat ES/L Métropole 20 juin 2014 Correction du baccalauréat ES/L Métropole 0 juin 014 Exercice 1 1. c.. c. 3. c. 4. d. 5. a. P A (B)=1 P A (B)=1 0,3=0,7 D après la formule des probabilités totales : P(B)=P(A B)+P(A B)=0,6 0,3+(1 0,6)

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

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P EUROCOPTER SAS Groupe EADS Marignane Ecole des Mines d Alès Laboratoire de Génie Informatique et d Ingénierie de Production LGI2P Nîmes Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P Titre Domaine

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

Table des matières. Introduction

Table des matières. Introduction Table des matières 1 Formalisation des virus informatiques 2 1.1 Les machines de Turing........................ 2 1.2 Formalisation de Fred Cohen..................... 2 1.2.1 Définition d un virus informatique..............

Plus en détail

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes

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

Étude de l'analyse statique de programmes synchrones par interprétation abstraite

Étude de l'analyse statique de programmes synchrones par interprétation abstraite Stage de fin de L3 École Normale Supérieure Département d'informatique Étude de l'analyse statique de programmes synchrones par interprétation abstraite Rapport de stage Alex AUVOLAT alex.auvolat@ens.fr

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

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

TSTI 2D CH X : Exemples de lois à densité 1

TSTI 2D CH X : Exemples de lois à densité 1 TSTI 2D CH X : Exemples de lois à densité I Loi uniforme sur ab ; ) Introduction Dans cette activité, on s intéresse à la modélisation du tirage au hasard d un nombre réel de l intervalle [0 ;], chacun

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Théorème du point fixe - Théorème de l inversion locale

Théorème du point fixe - Théorème de l inversion locale Chapitre 7 Théorème du point fixe - Théorème de l inversion locale Dans ce chapitre et le suivant, on montre deux applications importantes de la notion de différentiabilité : le théorème de l inversion

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

Limites finies en un point

Limites finies en un point 8 Limites finies en un point Pour ce chapitre, sauf précision contraire, I désigne une partie non vide de R et f une fonction définie sur I et à valeurs réelles ou complees. Là encore, les fonctions usuelles,

Plus en détail

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Problème : Calcul d'échéanciers de prêt bancaire (15 pt) Problème : Calcul d'échéanciers de prêt bancaire (15 pt) 1 Principe d'un prêt bancaire et dénitions Lorsque vous empruntez de l'argent dans une banque, cet argent (appelé capital) vous est loué. Chaque

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

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

Systèmes décisionnels et programmation avancée

Systèmes décisionnels et programmation avancée Systèmes décisionnels et programmation avancée M1 SIR Philippe Muller et Mustapha Mojahid, Matthieu Serrurier, Marie-Christine Scheix 2014-2015 Introduction structure du cours intervenants introduction

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies INF 232: Langages et Automates Travaux Dirigés Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies Année Académique 2013-2014 Année Académique 2013-2014 UNIVERSITÉ JOSEPH

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

La fonction exponentielle

La fonction exponentielle DERNIÈRE IMPRESSION LE 2 novembre 204 à :07 La fonction exponentielle Table des matières La fonction exponentielle 2. Définition et théorèmes.......................... 2.2 Approche graphique de la fonction

Plus en détail

Vérification et Validation

Vérification et Validation Vérification et Validation Génie Logiciel Master 1 II Mihaela Sighireanu Objectifs I. Introduire la vérification et la validation (V&V) du logiciel et comprendre leurs différences. II.Définir le plan de

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Réalisabilité et extraction de programmes

Réalisabilité et extraction de programmes Mercredi 9 mars 2005 Extraction de programme: qu'est-ce que c'est? Extraire à partir d'une preuve un entier x N tel que A(x). π x N A(x) (un témoin) (En fait, on n'extrait pas un entier, mais un programme

Plus en détail

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm)

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm) Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 - Evénements et architectures - Spécifications de performances

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

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

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2) Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter

Plus en détail

MASTER SIS PRO : logique et sécurité DÉTECTION D INTRUSIONS. Odile PAPINI, LSIS. Université de Toulon et du Var. papini@univ-tln.

MASTER SIS PRO : logique et sécurité DÉTECTION D INTRUSIONS. Odile PAPINI, LSIS. Université de Toulon et du Var. papini@univ-tln. MASTER SIS PRO : logique et sécurité DÉTECTION D INTRUSIONS Odile PAPINI, LSIS. Université de Toulon et du Var. papini@univ-tln.fr Plan Introduction Généralités sur les systèmes de détection d intrusion

Plus en détail

Cours Fonctions de deux variables

Cours Fonctions de deux variables Cours Fonctions de deux variables par Pierre Veuillez 1 Support théorique 1.1 Représentation Plan et espace : Grâce à un repère cartésien ( ) O, i, j du plan, les couples (x, y) de R 2 peuvent être représenté

Plus en détail

Cours Composant 2. Qualité logicielle et spécications algébriques

Cours Composant 2. Qualité logicielle et spécications algébriques UPMC Paris Universitas Master Informatique STL Cours Composant 2. Qualité logicielle et spécications algébriques c 2005-2008 Frédéric Peschanski UPMC Paris Universitas 24 février 2008 c 2005-2008 Frédéric

Plus en détail