Algorithmes et méthodes pour la fiabilité numérique : Partie 3 : transformation de programmes
|
|
- Isaac Bouffard
- il y a 8 ans
- Total affichages :
Transcription
1 Algorithmes et méthodes pour la fiabilité numérique : Partie 3 : transformation de programmes Matthieu Martel Laboratoire ELIAUS-DALI Université de Perpignan Via Domitia matthieu.martel@univ-perp.fr 1 / 37
2 Objectif Définition d une nouvelle transformation de programmes Exemple : aire d un parallélépipède rectangle allongé a A = 2 ( (a b) + (b c) + (c a) ) b implémentation directe : 2*(((a*b)+(b*c))+(c*a)) c transformé en : (((c*a)*2)+(2*(b*c)))+(2*(a*b)) plus petites valeurs sommées d abord, produit distribué 2 / 37
3 Principe Transformation sémantique pour améliorer la précision de l évaluation des expressions arithmétiques Modèle x 2 +2x+1=(x+1) 2 =... Implémentation ((x*x)+(2*x))+1 (x+1)*(x+1) Première sémantique : expression décrit une formule mathématique usuelle l évaluation en précision donne résultat exact lois algébriques autorisées (associativité, commutativité, etc.) Seconde sémantique : les expressions suivent l arithmétique des nombres flottants erreurs d arrondi, lois algébriques non-valides But : transformer une expression e en une expression e t.q. : e et e sont mathématiquement égales (modèle) e s évalue plus précisément que e sur ordinateur 3 / 37
4 Example (floating-point) E l = (a + l 2 (b + l 1 (c + l 0 d))) l 3 e E l float = `[ 3, 4], [ , ], [ , ], [ , ], [ , ] 4 / 37
5 Example (fixed-point) E l = (a + l 2 (b + l 1 (c + l 0 d))) l 3 e Local max: E l fixed = ( [ 3, 4], 5, 4, 2, 3 ) Global max: E l fixed = ( [ 3, 4], 5, 5, 5, 5 ) 5 / 37
6 Example E float = (a + (b + (c + d))) e Floating-point arithmetics: E float = ((a + b) e) + ((c + d) e) E float = ( [ 3, 4], [ , 0] ) E float = ( [ 3, 4], [ , ] ) Fixed-point arithmetics: E fixed = e ((a + d) + (b + c)) E fixed = ( [ 3, 4], 5 ) E fixed = ( [ 3, 4], 4 ) 6 / 37
7 Transformation sémantique : principe Programme source P Analyse statique S P, S(P) Transformation syntaxique t Programme transformé t(p) P(t(S(P),!(S(P)))) S P S P S P Sémantique du programme source S(P) Abstraction sémantique! P),!(S(P)) Transformation sémantique t Sémantique du programme transformé t(s(p),!(s(p))) S(t(P))! O " O! O " O " O! O! O (S(P)) =! O (t(s(p),!(! O (S(P)))) =! O (S(t(P))) Patrick et Radhia Cousot : Systematic Design of Program Transformation Frameworks by Abstract Interpretation, 2002, POPL 7 / 37
8 1 Introduction 2 Deux sémantiques concrètes 3 Interprétation abstraite 4 Transformation sémantique 5 Résultats expérimentaux 6 Conclusion 8 / 37
9 Sémantique (modèle) Modèle x 2 +2x+1=(x+1) 2 =... Implémentation ((x*x)+(2*x))+1 (x+1)*(x+1) 9 / 37
10 Sémantique (modèle) Sémantique fondée sur l arithmétique des réels : R v = v 1 + R v 2 v 1 + v 2 v v = v 1 R v 2 v 1 v 2 v e 1 e 1 e 1 + e 2 e 1 + e 2 e 1 e 1 e 1 e 2 e 1 e 2 e e 1 e 1 e 1 e 1 e e e Modèle x 2 +2x+1=(x+1) 2 =... Implémentation ((x*x)+(2*x))+1 (x+1)*(x+1) (e 1 + e 2 ) + e 3 e 1 + (e 2 + e 3 ) e 1 + e 2 e 2 + e 1 e e + 0 (e 1 e 2 ) e 3 e 1 (e 2 e 3 ) e 1 e 2 e 2 e 1 e e 1 e 1 (e 2 + e 3 ) e 1 e 2 + e 1 e 3 Propriété (confluence faible) Soit e une expression arithmétique. Si e R e 1 et e R e 2 alors il existe e t.q. e 1 R e et e 2 R e 10 / 37
11 Sémantique (machine) Modèle x 2 +2x+1=(x+1) 2 =... Implémentation ((x*x)+(2*x))+1 (x+1)*(x+1) 11 / 37
12 La norme IEEE754 : arrondis 4 modes d arrondi : vers, vers +, au plus près, vers 0 : R F spécifie l arrondi d un nombre réel pour les opérations élémentaires {+,,,, }: x 1 F, x 2 = (x 1 R x 2 ) : R R donne l erreur d arrondi : (r) = r (r) 12 / 37
13 Arithmétique pour l estimation des erreurs Estimation des erreurs : l arithmétique E (Fluctuat) E = F R. Dans (x, µ) E, µ mesure la distance entre le résultat machine x et le résultat exact pour v 1 = (x 1, µ 1 ) et v 2 = (x 2, µ 2 ) : v 1 + E v 2 = ( (x 1 + R x 2 ), [µ 1 + µ 2 + (x 1 + R x 2 )]) v 1 E v 2 = ( (x 1 R x 2 ), [µ 1 µ 2 + (x 1 R x 2 )]) v 1 E v 2 = ( (x 1 R x 2 ), [µ 1 x 2 + R µ 2 x 1 + R µ 1 µ 2 + R (x 1 R x 2 )]) R F μ 13 / 37
14 Sémantique (machine) La sémantique E v = v 1 + E v 2 v 1 + v 2 v v = v 1 E v 2 v 1 v 2 v e 1 e 1 e 1 + e 2 e 1 + e 2 e 1 e 1 e 1 e 2 e 1 e 2 e e 1 e 1 e 1 e 1 e e e Modèle x 2 +2x+1=(x+1) 2 =... Implémentation ((x*x)+(2*x))+1 (x+1)*(x+1) (e 1 + e 2 ) + e 3 e 1 + (e 2 + e 3 ) e 1 + e 2 e 2 + e 1 e e + 0 (e 1 e 2 ) e 3 e 1 (e 2 e 3 ) e 1 e 2 e 2 e 1 e e 1 e 1 (e 2 + e 3 ) e 1 e 2 + e 1 e 3 Propriété (absence de confluence) En général, pour une expression arithmétique e, il existe des pas de réduction e E e 1 et e E e 2 t.q. il n existe pas d expression e t.q. e 1 E e et e 2 E e F R μ 14 / 37
15 Bilan Sémantique machine (E) Sémantique abstraite Sémantique idéale (R) F R μ μ Etape suivante : objectif: utiliser E pour trouver le meilleur chemin trop de chemins! abstraction de E fondée sur une sémantique non-standard 15 / 37
16 Bilan (2) Programme source P Analyse statique S P, S(P) Transformation syntaxique t Programme transformé t(p) P(t(S(P),!(S(P)))) S P S P S P! F R! Sémantique du programme source S(P) Abstraction sémantique! P),!(S(P)) Transformation sémantique t Sémantique du programme transformé t(s(p),!(s(p))) S(t(P)) " O " O! O! O " O! O! O (S(P)) =! O (t(s(p),!(! O (S(P)))) =! O (S(t(P))) 16 / 37
17 1 Introduction 2 Deux sémantiques concrètes 3 Interprétation abstraite 4 Transformation sémantique 5 Résultats expérimentaux 6 Conclusion 17 / 37
18 Sémantique non-standard (fondée sur E ) Principe se souvenir de comment chaque valeur a été obtenue une étiquette l L est attachée à chaque valeur des expressions deux environnements : ρ : L Expr ρ(l) = e si e v l σ : Expr E σ(e) = v si e v v = v 1 + E v 2 l Dom(ρ) ρ, σ, v l v l 2 2 ρ[l ρ(l 1) + ρ(l 2 )], σ[ρ(l 1 ) + ρ(l 2 ) v], v l e e 1 ρ, σ, e 1 ρ, σ, e 1 e 1 e ρ, σ, e ρ, σ, e (1 a +(3 b +5 c )) 2 d (1 a +8 e ) 2 d 9 f 2 d 18 g ρ σ e 3 b +5 c f 1 a +(3 b +5 c ) g 2 d (1 a +(3 b +5 c )) 3 b +5 c 8 1 a +(3 b +5 c ) 9 2 d (1 a +(3 b +5 c )) / 37
19 Sémantique abstraite Principe Fusionner des traces dans lesquelles des sous-expressions ont été évaluées à peu près de la même manière Expr k ensemble des expressions de hauteur au plus k e k remplace par tous les sous-arbres de niveau k qui ne sont pas des valeurs (1+(3+5))*2 = (1+(5+3))*2 = (1+T)* T k les valeurs des environnements abstraits sont des intervalles 19 / 37
20 Sémantique abstraite (2) (1+(3+5))*2 = (1+(5 3))*2 = (1+T)* T k σ σ σ # [18,32] v = σ (η 1 ) + E σ (η 2 ) η 1 ρ (l 1 ) η 2 ρ (l 2 ) E = η 1 + η 2 k σ = σ η 1 ρ (l 1 ) η 2 ρ (l 2 ) η 1 ρ (l 1 ), η 2 ρ (l 2 ) η = η 1 + η 2 k ν = σ (η 1 ) + σ (η 2 ) ρ, σ, v l v l 1 1 l=l 1 +l 2 k ρ [l ρ (l) E], σ, v l [η σ (η) ν] 20 / 37
21 Sémantique abstraite : exemple Sémantique non-standard (1 a +(3 b +5 c )) 2 d (1 a +8 e ) 2 d 9 f 2 d 18 g ρ σ e 3 b +5 c f 1 a +(3 b +5 c ) g 2 d (1 a +(3 b +5 c )) 3 b +5 c 8 1 a +(3 b +5 c ) 9 2 d (1 a +(3 b +5 c )) 18 Sémantique abstraite (1 a +(3 b +5 c )) 2 d (1 a +8 e ) 2 d 9 f 2 d 18 g ρ # σ # e 3 b +5 c f 1 a +(3 b +5 c ) g 2 d (1 a +T) 3 b +5 c [8] 1 a +(3 b +5 c ) [9] 2 d (1 a +T) [18] 21 / 37
22 Nouvelle relation d équivalence Dans la sémantique non-standard : utilisation de (équivalence mathématique) à partir de e, une transition par expression e t.q. e e nombre exponentiel de transitions (pire cas: n i=1 x i) Dans la sémantique abstraite : nouvelle relation d équivalence e k e ssi e k = e k la sémantique abstraite utilise la relation quotient k ssi / k e k e 1 e 1 e 1 e 1 k e e e Au pire, la classe par k de e contient O(n k ) éléments e e 22 / 37
23 1 Introduction 2 Deux sémantiques concrètes 3 Interprétation abstraite 4 Transformation sémantique 5 Résultats expérimentaux 6 Conclusion 23 / 37
24 Transformation sémantique Programme source P Analyse statique S P, S(P) Transformation syntaxique t Programme transformé t(p) P(t(S(P),!(S(P)))) S P S P S P! F R! Sémantique du programme source S(P) Abstraction sémantique! P),!(S(P)) Transformation sémantique t Sémantique du programme transformé t(s(p),!(s(p))) S(t(P)) " O " O! O! O " O! O! O (S(P)) =! O (t(s(p),!(! O (S(P)))) =! O (S(t(P))) Transformation R! F! 24 / 37
25 Transformation sémantique Principe : 1 choisir la trace abstraite qui minimise l erreur 2 construire une nouvelle trace qui n utilise pas Transformation R des actions sont attachées aux transitions abstraites les actions indiquent comment de nouvelles étiquettes ont été générées μ F! Exemple 2 (1+(3+5)) 4=1+3 2 (4+5)) 8= = = (1+3) / 37
26 Transformation sémantique (correction) Correction : la trace d origine et la trace transformée sont égales à observation près intuitivement les deux traces mènent au même résultat réel α O abstraction observationnelle : α O : E R (x, µ) x + µ 26 / 37
27 1 Introduction 2 Deux sémantiques concrètes 3 Interprétation abstraite 4 Transformation sémantique 5 Résultats expérimentaux 6 Conclusion 27 / 37
28 Résultats expérimentaux En simple précision, e 8 = 1.0 tandis que (2 5e 8 ) 1.0 avec e = a ((b + c) + d) a = [56789, 98765] b = [0, 1] c = [0, 5e 8 ] d = [0, 5e 8 ] (a*((b+c)+d)) -> ((a*b)+(a*(c+d))) k=2 borne d erreur sur borne d erreur sur (a*((b+c)+d)) : [ E-2,1.5680E-2] ((a*b)+(a*(c+d))) : [ E-3,7.8126E-3] 28 / 37
29 Résultats expérimentaux s = 4 i=0 x i, avec x i = [2 i, 2 i+1 ] : a, b, c, d et e remplacent x 0, x 1, x 2, x 3 et x 4 k Expression Borne d erreur expression source (((e+d)+c)+b)+a [ E-6,7.6294E-6] k = 1 (b+a)+(c+(e+d)) [ E-6,5.9605E-6] k = 2 (c+(b+a))+(e+d) [ E-6,4.5300E-6] k = 3 (d+(c+(a+b)))+e [ E-6,3.5763E-6] 29 / 37
30 Résultats expérimentaux (2) Polynômes, x = ([0, 2], [0, ]) : Cas Expression Borne d erreur expression source x+(x*x) [ E-3, E-3] k = 2 (1.0+x)*x [ E-4, E-4] expression source (x*(x*x))+(x*x) [ E-3, E-3] k = 3 (x+1.0)*(x*x) [ E-4, E-3] k = 4 ((1.0+x)*x)*x [ E-5, E-3] 30 / 37
31 Résultats expérimentaux (3) (a + b) 2 avec b a, a = [5, 10] et b = [0, 0.001] Cas Expression Borne d erreur Source (a+b)*(a+b) [ E-5, E-5] k = 2 ((b*(a+b))+(a*b))+(a*a) [ E-6, E-6] k = 3 (((b*a)+(b*b))+(b*a))+(a*a) [ E-6, E-6] k = 3 transformation = identité remarquable k = 2 autre formule qui améliore sensiblement la précision 31 / 37
32 Résultats expérimentaux : x i = [2 i, 2 i+1 ] int i=0; int i=0; float s=0.0; float s=0.0; while (i<n) { while (i<n/2) { s=s+x[i]; l=x[i]+x[i+1]; i=i+1; s=s+l; } i=i+2; } Case Error for p Error for p t N=4 [0.0, E-6] [0.0, E-6] N=6 [0.0, E-5] [0.0, E-5] N=8 [0.0, E-4] [0.0, E-5] N=10 [0.0, E-4] [0.0, E-4] 32 / 37
33 Résultats expérimentaux : autre programme float a=[0.0,100.0]; float a=[0.0,100.0]; float b=[0.0,0.001]; float b=[0.0,0.001]; float c=[5.0,10.0]; float c=[5.0,10.0]; float d=2.0; float d=2.0; if (a>0.1) { if (a>0.1) { r=d*(a+(b+c)); r=d*(a+(b+c)); } else { } else { r=d*(a+(b+c)); r=d*((a+b)+c); } } Case Error bound on r p, a > 0.1 [ E-6, E-6] p t, a 0.1 [ E-6, E-7] p, a > 0.1 [ E-6, E-6] p t, a 0.1 [ E-7, E-7] 33 / 37
34 1 Introduction 2 Deux sémantiques concrètes 3 Interprétation abstraite 4 Transformation sémantique 5 Résultats expérimentaux 6 Conclusion 34 / 37
35 Conclusion sous l hypothèse qu un programme fonctionnerait correctement dans les réels : possibilité de corriger automatiquement (en partie) les erreurs d arrondi résultats expérimentaux encourageants possibilité de retrouver les meilleurs schémas d évaluation en général (Horner, tri, etc.)? utilité des transformations sémantiques vs transformation syntaxique 35 / 37
36 Perspectives Traiter un langage complet (boucles, affectations, conditions, etc.) Calculs définis sur plusieurs lignes de code Dépliage de boucles, modification des affectations Amélioration de l abstraction (optimisaton globale) Amélioration de la relation d équivalence (plus de lois) Développement d autres applications : calculs en virgule fixe offuscation de code sans perte de précision Vers un outil (langage source? destination?) 36 / 37
37 questions? 37 / 37
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étailAlgorithmique 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étailPré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étailAnalyse 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étail1. 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étailRappel. 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étailAlgorithmique 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étailContexte 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étailLogiciel de Base. I. Représentation des nombres
Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) mugwaneza@univmed.fr I. Représentation des nombres Codage et représentation de l'information Information externe formats
Plus en détailDes 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étailCours 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étailIntroduction 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étailBases 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étailSTAGE 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étail1/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étailUniversité 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étailMaple: premiers calculs et premières applications
TP Maple: premiers calculs et premières applications Maple: un logiciel de calcul formel Le logiciel Maple est un système de calcul formel. Alors que la plupart des logiciels de mathématiques utilisent
Plus en détailInformatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
Plus en détailIntroduction à l algorithmique et à la programmation M1102 CM n 3
Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d
Plus en détailInitiation à la programmation en Python
I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de
Plus en détailPour 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É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étailRecherche 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étailSHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5
SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N
Plus en détailObjets 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étailUEO11 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étailTP 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étailAlgorithmique et programmation : les bases (VBA) Corrigé
PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi
Plus en détailCalcul Formel et Numérique, Partie I
Calcul Formel et Numérique N.Vandenberghe nvdb@irphe.univ-mrs.fr Table des matières 1 Introduction à Matlab 2 1.1 Quelques généralités.......................... 2 2 Où trouver des informations 2 3 Opérations
Plus en détailLes arbres binaires de recherche
Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s
Plus en détailDE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Plus en détailProgrammer 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étailV- 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étailTP 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étailNotes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables
Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables Guy Desaulniers Département de mathématiques et de génie industriel École Polytechnique de Montréal Automne 2014 Table des matières
Plus en détailIN 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étailPrincipes 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étailARBRES BINAIRES DE RECHERCHE
ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d
Plus en détailCours d algorithmique pour la classe de 2nde
Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage
Plus en détailCours 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étailUtilisation 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étailMachines virtuelles fonctionnelles (suite) Compilation ML Java
Machines virtuelles fonctionnelles (suite) Compilation ML Java Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2011/2012 Semaine 3 Machines virtuelles fonctionnelles
Plus en détailCours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
Plus en détailStructure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Plus en détailLangage Java. Classe de première SI
Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les
Plus en détailRappels Entrées -Sorties
Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk
Plus en détailACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Plus en détailManuel 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étailAlgorithmique 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étailProgrammation 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étailDéroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009
Déroulement Algorithmes et structures de données Cours 1 et 2 Patrick Reuter http://www.labri.fr/~preuter/asd2009 CM mercredi de 8h00 à 9h00 (Amphi Bât. E, 3 ème étage) ED - Groupe 3 : mercredi, 10h30
Plus en détailDécouverte de Python
Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en
Plus en détailALGORITHMIQUE ET PROGRAMMATION En C
Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2
Plus en détailArithmétique réelle. Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations. Valérie Ménissier-Morain
Arithmétique réelle Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations Valérie Ménissier-Morain Université Pierre et Marie Curie - Paris 6 LIP6 - Département CALSCI
Plus en détailQualité 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étailInfo0101 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étailProgrammes des classes préparatoires aux Grandes Ecoles
Programmes des classes préparatoires aux Grandes Ecoles Filière : scientifique Voies : Mathématiques, physique et sciences de l'ingénieur (MPSI) Physique, chimie et sciences de l ingénieur (PCSI) Physique,
Plus en détailIntroduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Plus en détailINITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Plus en détailIntroduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Plus en détailMATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.
Page 1 de 9 MATLAB : COMMANDES DE BASE Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Aide help, help nom_de_commande Fenêtre de travail (Command Window) Ligne
Plus en détailCorrigé des TD 1 à 5
Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un
Plus en détailUE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
Plus en détailCentre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Plus en détailUE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailIFT2880 Organisation des ordinateurs et systèmes
Représentation des nombres flottants Notation exponentielle Représentations équivalentes dans la base 10 de 1,234 1 2 3, 4 0 0. 0 x 1 0-2 1 2, 3 4 0. 0 x 1 0-1 1, 2 3 4. 0 x 1 0 1 2 3. 4 x 1 0 1 2. 3 4
Plus en détailGestion de projets logiciels. Xavier Dubuc
Gestion de projets logiciels Résumé blocus Xavier Dubuc 16 janvier 2011 1 Table des matières 1 Planification (PERT-GANTT) 3 1.1 Définitions............................................. 3 1.2 Analyse un
Plus en détailCours de Programmation 2
Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes
Plus en détailNouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM
Nouveautés CRM 2015 & Migration By Tanguy Touzard MVP CRM Nouvelles fonctionnalités Sécurité Recherche Hiérarchies Champs calculés/agrégés Règles métier Processus métier Catalogue produit SLA Information
Plus en détailCours: Administration d'une Base de Données
Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1
Plus en détailLicence 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étailL informatique en BCPST
L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité
Plus en détailSéquence 3. Expressions algébriques Équations et inéquations. Sommaire
Séquence 3 Expressions algébriques Équations et inéquations Sommaire 1. Prérequis. Expressions algébriques 3. Équations : résolution graphique et algébrique 4. Inéquations : résolution graphique et algébrique
Plus en détailMontage non-linéaire. Techniques et méthodes
Montage non-linéaire Techniques et méthodes Le montage Montage linéaire et non-linéaire On parle de montage non-linéaire lorsque les différentes opérations de montage peuvent se faire dans un ordre quelconque.
Plus en détailExemple d implantation de fonction mathématique sur ST240
Exemple d implantation de fonction mathématique sur ST240 Guillaume Revy Encadrants : Claude-Pierre Jeannerod et Gilles Villard Équipe INRIA Arénaire Laboratoire de l Informatique du Parallélisme - ENS
Plus en détailProgrammation. fonctionnelle, impérative, logique et orientée objet
Programmation fonctionnelle, impérative, logique et orientée objet Introduction Les langages de programmation permettent de décrire des calculs de façon plus abstraite qu'un programme machine. Les programmes
Plus en détailSolutions 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étailJava Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Plus en détailDiagramme de classes
Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :
Plus en détailProgrammation 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étailINF 321 : mémento de la syntaxe de Java
INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2
Plus en détailCompilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
Plus en détailEnvironnements et Outils de Développement Cours 1 Introduction
Environnements et Outils de Développement Cours 1 Introduction Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot - Paris 7 URL http://upsilon.cc/~zack/teaching/1112/ed6/
Plus en détailCours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.
Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures
Plus en détailGestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en détailRappels 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étail3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes
PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason
Plus en détailCours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Plus en détailTP, première séquence d exercices.
TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la
Plus en détailNotes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables
Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables Fausto Errico Département de mathématiques et de génie industriel École Polytechnique de Montréal Automne 2012 Table des matières
Plus en détailIntroduction à la programmation Travaux pratiques: séance d introduction INFO0201-1
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un
Plus en détailLES TYPES DE DONNÉES DU LANGAGE PASCAL
LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.
Plus en détailhttp://cermics.enpc.fr/scilab
scilab à l École des Ponts ParisTech http://cermics.enpc.fr/scilab Introduction à Scilab Graphiques, fonctions Scilab, programmation, saisie de données Jean-Philippe Chancelier & Michel De Lara cermics,
Plus en détailProgrammation en langage C
Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des
Plus en détailLicence 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étailProjet de programmation (IK3) : TP n 1 Correction
Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public
Plus en détailCorrigés des premiers exercices sur les classes
Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.
Plus en détail