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

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

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

Transcription

1 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 d Emmanuel Chailloux et Sarah Zennou 10 juillet 2014 Analyse de sécurité de logiciels système par typage statique Étienne Millon 1/44

2 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 2/44

3 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 3/44

4 L arnaque du serrurier S + = J appelle un serrurier Je l attends devant chez moi Il ouvre ma porte Je rentre chez moi Analyse de sécurité de logiciels système par typage statique Étienne Millon 4/44

5 L arnaque du serrurier S + = J appelle un serrurier Je l attends devant chez mon voisin Il ouvre sa porte Je rentre chez mon voisin Analyse de sécurité de logiciels système par typage statique Étienne Millon 4/44

6 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 5/44

7 Utilisateur et noyau Programmes utilisateur : navigateur,... Appels système Noyau : pilotes Instructions privilégiées Matériel : disque dur,... Analyse de sécurité de logiciels système par typage statique Étienne Millon 6/44

8 Mémoire utilisateur et noyau 0 3 Go 4 Go Programmes utilisateur Appels système Noyau Instructions privilégiées Matériel Analyse de sécurité de logiciels système par typage statique Étienne Millon 7/44

9 Utilisation correcte d un appel système struct timeval tv; struct timeval* ptv = &tv; int z = gettimeofday(ptv, NULL); 0 3 Go 4 Go ptv Analyse de sécurité de logiciels système par typage statique Étienne Millon 8/44

10 Utilisation détournée d un appel système struct timeval* ptv = 0xc2c12705; int z = gettimeofday(ptv, NULL); 0 3 Go 4 Go ptv Analyse de sécurité de logiciels système par typage statique Étienne Millon 9/44

11 Problème des pointeurs dans les appels système La copie simple n est pas suffisante : il faut vérifier tous les pointeurs 2 propriétés : Qui contrôle le pointeur? Dans quelle plage se trouve sa valeur? Invariant : les pointeurs contrôlés par l utilisateur pointent dans la mémoire utilisateur Fonctions non sûres : memcpy, strcpy Fonctions sûres : copy_from_user, copy_to_user copy_from_user memcpy memcpy copy_to_user memcpy Analyse de sécurité de logiciels système par typage statique Étienne Millon 10/44

12 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 11/44

13 Le projet Penjili Analyse de sécurité de logiciels système par typage statique Étienne Millon 12/44

14 Le projet Penjili Safespeak ptrtype Analyse par typage Analyse de sécurité de logiciels système par typage statique Étienne Millon 12/44

15 Le langage intermédiaire Newspeak Un langage adapté à l analyse statique : simple : il contient peu de constructions explicite : les effets de bords sont explicites expressif : tout programme C peut être converti en Newspeak Analyse de sécurité de logiciels système par typage statique Étienne Millon 13/44

16 Exemple int x; x = 0; while (x < 10) { } x++; int32 x; x =(int32) 0; do { while (1) { choose { --> guard((10 > x_int32)); --> guard(! (10 > x_int32)); goto lbl1; } x =(int32) coerce[-2**31,2**31-1] (x_int32 + 1); } } with lbl1: { } Analyse de sécurité de logiciels système par typage statique Étienne Millon 14/44

17 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 15/44

18 Safespeak Newspeak : bon front-end mais bas niveau Safespeak = restriction de C «bien typable» Pas de casts, arithmétique des pointeurs restreinte Différence de modèle mémoire : Newspeak : suite d octets Safespeak : ensemble structuré de valeurs Analyse de sécurité de logiciels système par typage statique Étienne Millon 16/44

19 Syntaxe Expressions Expressions e ::= c Constante e Opération unaire e e Opération binaire lv Accès mémoire lv e Affectation &lv Pointeur fun(x 1,..., x n ){i} Fonction e(e 1,..., e n ) Appel de fonction {l 1 : e 1 ;... ; l n : e n } Structure [e 1 ;... ; e n ] Tableau Analyse de sécurité de logiciels système par typage statique Étienne Millon 17/44

20 Syntaxe Instructions Instructions i ::= Pass Instruction vide i; i Séquence e Expression Decl x = e in{i} Déclaration de variable If(e){i}Else{i} Alternative While(e){i} Boucle Return(e) Retour de fonction Analyse de sécurité de logiciels système par typage statique Étienne Millon 18/44

21 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 19/44

22 Sémantique d évaluation Système de transitions entre états expression + mémoire e, m e, m expressions valeurs exemple : x, m 1, m si x vaut 1 dans m. Analyse de sécurité de logiciels système par typage statique Étienne Millon 20/44

23 Structure de la mémoire Locales n 0 n 1 Globales a 2 b 3.14 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } Cadre de pile z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 21/44

24 Valeurs gauches ex : x.f[2] 3 valeurs gauches (lvalues) chemins ϕ Chemins ϕ ::= (x) Globale (n, x) Locale ϕ.l Accès à un champ ϕ[n] Accès à un élément ϕ v, m v, m[ϕ v] Comment définir m[ϕ] et m[ϕ v]? Analyse de sécurité de logiciels système par typage statique Étienne Millon 22/44

25 Lentilles Relation entre objet et sous-objet L Lens R,A { get L = L : R A put L : (A R) R get L ( ) = put L (, ) = Analyse de sécurité de logiciels système par typage statique Étienne Millon 23/44

26 Composition de lentilles get L1 get L1 put L2 get L2 put L1 L 1 L 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 24/44

27 Lentilles pour les structures de données I(n) : lentille «n e élément d une liste» put I(2) (5, [4; 8; 15; 16]) = [4; 5; 15; 16] L(k) : lentille «élément associé à k» d une liste d association get L(b) ([(a, 23); (b, 42)]) = 42 T (n) et F (k) : équivalents de I(n) et F (k) sur les valeurs tableaux et structures Analyse de sécurité de logiciels système par typage statique Étienne Millon 25/44

28 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } a 2 b 3.14 ϕ = L = z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

29 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } a 2 b 3.14 ϕ = ( L = fst z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

30 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } a 2 b 3.14 ϕ = (2, L = fst I(2) z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

31 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 z 2 } a 2 b 3.14 ϕ = (2, x) L = fst I(2) L(x) Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

32 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 z 2 } a 2 b 3.14 ϕ = (2, x).f L = fst I(2) L(x) F (f) Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

33 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 z 2 } a 2 b 3.14 ϕ = (2, x).f[2] L = fst I(2) L(x) F (f) T (2) Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

34 Définition de Φ Φ Path Lens Mem,V al Φ((x)) = snd L(x) Φ((n, x)) = fst I(n) L(x) Φ(ϕ.l) = Φ(ϕ) F (l) Φ(ϕ[n]) = Φ(ϕ) T (n) m[ϕ] def == get Φ(ϕ) (m) m[ϕ v] def == put Φ(ϕ) (v, m) Analyse de sécurité de logiciels système par typage statique Étienne Millon 27/44

35 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 28/44

36 Système de types Type t ::= Int Entier Float Flottant Unit Unité t Pointeur noyau Pointeur utilisateur t [ ] Tableau {l 1 : t 1 ;... ; l n : t n } Structure (t 1,..., t n ) t Fonction Analyse de sécurité de logiciels système par typage statique Étienne Millon 29/44

37 Deux types de pointeurs Pointeurs noyau : t valeur fixée à la compilation ou par le runtime ex : &x, malloc(n) peuvent être déréférencés (*p, memcpy()) Pointeurs utilisateur : valeur provient d un utilisateur non privilégié ex : paramètres d appels systèmes peuvent être copiés uniquement par des fonctions sûres (copy_*_user) Analyse de sécurité de logiciels système par typage statique Étienne Millon 30/44

38 Règles de typage Γ lv : t Γ &lv : t (Addr) Γ e : t Γ e : t (Lv-Deref) Γ e d : t Γ e s : Γ copy_from_user( e d, e s ) : Int (User-Get) Γ e d : Γ e s : t Γ copy_to_user( e d, e s ) : Int (User-Put) Analyse de sécurité de logiciels système par typage statique Étienne Millon 31/44

39 Exemple : gettimeofday Comment copier l heure calculée par le noyau à l adresse ptv? Version naïve : memcpy( ptv, time ) ; Γ memcpy( e d, e s ) : Int Version correcte : copy_to_user( ptv, time ) ; Γ copy_to_user( e d, e s ) : Int Analyse de sécurité de logiciels système par typage statique Étienne Millon 32/44

40 Sûreté du typage Théorème (Progrès) Supposons que Γ e : t. Soit m un état mémoire tel que Γ m. Alors l un des cas suivants est vrai : v Ω, e = v (e, m ), e, m e, m Ω {Ω div, Ω array, Ω ptr }, e, m Ω Analyse de sécurité de logiciels système par typage statique Étienne Millon 33/44

41 Sûreté du typage Théorème (Préservation) Soient Γ un environnement de typage et m un état mémoire tels que Γ m. Soit e une expression telle que Γ e : t. Alors, si e, m e, m, on a Γ e : t et Γ Cleanup(m ). Analyse de sécurité de logiciels système par typage statique Étienne Millon 34/44

42 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 35/44

43 L analyseur ptrtype Liste de sources Safespeak ptrtype Analyse par typage Analyse de sécurité de logiciels système par typage statique Étienne Millon 36/44

44 Traduction Code C int f (int* x) { return (*x + 1); } Safespeak let f = fun (x) -> return (*x + 1) Analyse de sécurité de logiciels système par typage statique Étienne Millon 37/44

45 Traduction Code C int f (int* x) { return (*x + 1); } Safespeak + types inférés let f : Int* -> Int = fun (x : Int*) -> return ((((*x) : Int) + (1 : Int)) : Int) Analyse de sécurité de logiciels système par typage statique Étienne Millon 37/44

46 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 38/44

47 Example: freedesktop.org bug #29340 Code avec bug int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) { /*!npk userptr_fieldp data value*/ struct drm_radeon_info *info = data; uint32_t *value_ptr = (uint32_t *) ((unsigned long)info->value); uint32_t value = *value_ptr; /*... */ } Inference output error: 05-drm.c:17#10 05-drm.c:17# Type Type clash clash between between : : KPtr KPtr (_a15) (_a15) UPtr UPtr (_a8) (_a8) But if we replace last line by the following: Analyse de sécurité de logiciels système par typage statique Étienne Millon 39/44

48 Code corrigé 05-drm.c:17#10 - Type clash between : KPtr (_a15) UPtr (_a8) But if we replace last line by the following: if (copy_from_user(&value, value_ptr, sizeof(value))) return -14; Inference output fully annotated program: (06-drm-ok.c:17#6)^{ Int Inttmp_cir!0; (06-drm-ok.c:17#6)^tmp_cir!0 <- <- copy_from_user (( &(value) :: KPtr (d), value_ptr_uptr (d) :: UPtr (d), 44 :: Int); }} Bibliography Analyse de sécurité de logiciels système par typage statique Étienne Millon 40/44

49 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 41/44

50 Contributions Safespeak : un langage impératif bien typé Règles de codage pour avoir une sémantique de haut niveau Une sémantique basée sur les lentilles Permet une notation simple pour manipuler la mémoire Un système de types abstraits Alternative : sous-typage (CQual) Un prototype d analyseur statique Intégré dans l outillage industriel du projet Penjili Analyse de sécurité de logiciels système par typage statique Étienne Millon 42/44

51 Conclusion Problème réel : bug de ptrace sur Blackfin Janvier 2014 : «Linux 3.4+ : arbitrary write with CONFIG_X86_X32 (CVE )» Application du typage à la sûreté mémoire : délicat nécessite des restrictions mais fonctionne! Analyse de sécurité de logiciels système par typage statique Étienne Millon 43/44

52 Perspectives Automatiser l annotation : repérer les appels système Allocation dynamique Faire collaborer Penjili et ptrtype Autres propriétés : size_t et int : memset(p, 0, n) memset(p, n, 0) Types abstraits : permettre au programmeur de définir ses propres analyses Analyse de sécurité de logiciels système par typage statique Étienne Millon 44/44

nulles dans un langage à objets

nulles dans un langage à objets Prévention de déréférencement de références nulles dans un langage à objets Jean-Sébastien Gélinas, Étienne M. Gagnon, Jean Privat Université du Québec à Montréal Langages et Modèles à Objets Nancy 27

Plus en détail

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes ISMIN 1A Programmation 1 : Examen de programmation C Réponses Partie 1. Questions ouvertes 1. Soit la déclaration suivante, char tab[] = "". Que contient le tableau tab? Réponse : tab[0] = \0. tab est

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Typage et Analyse Statique

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

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de:

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: C, seconde séance le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: false, c est 0 ( \0 aussi) test d égalité: == pour printf: %d entier, %f flottant, %c caractère,

Plus en détail

Algorithmique - Programmation 1. Cours 10

Algorithmique - Programmation 1. Cours 10 Algorithmique - Programmation 1 Cours 10 Université Henri Poincaré CESS Epinal Automne 2008 1/ 25 Plan Caml fonctionnel vs impératif Caml fonctionnel vs impératif Le type unit Données mutables Les structures

Plus en détail

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

Tableaux (introduction) et types de base

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

Plus en détail

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2012-2013 (2eme session) durée 2h Tous documents et calculatrices autorisés. Le sujet comporte 6 pages Le temps approximatif ainsi que le barème

Plus en détail

Types de données et objets

Types de données et objets Types de données et objets VL A D Y RA V E L O M A N A N A Licence 1 S2 Université Denis Diderot (P7). vlad@liafa.jussieu.fr LIAFA Bureau 6A13. 175, rue Chevaleret Ravelomanana Vlady Types de données et

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

Langage C avancé Les Pointeurs

Langage C avancé Les Pointeurs Langage C avancé Les Pointeurs Samuel KOKH Maison de la Simulation - CEA Saclay samuel.kokh@cea.fr MACS 1 (2013-2014) Institut Galilée S. KOKH (MdlS) Langage C avancé ISPG/MACS 1 2013-2014 1 / 32 Variables

Plus en détail

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte:

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte: PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de

Plus en détail

Analyse Statique de Programmes

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

Plus en détail

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

É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

Fascicule de Génie Electrique (Terminale S option SI)

Fascicule de Génie Electrique (Terminale S option SI) Le langage C Ressource Centre d intérêt CI10 : Traitement de Thématique I11 - Les systèmes numériques : Mise en œuvre d un microcontrôleur avec des composants logiciels réutilisables. 1 Les constantes

Plus en détail

3ETI, Entrainement Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Entrainement Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2012-2013 (entrainement) durée 1h20 Tous documents et calculatrices autorisés. Le sujet comporte 5 pages Le temps approximatif ainsi que le barème

Plus en détail

λ-calcul et typage Qu est-ce qu une fonction?

λ-calcul et typage Qu est-ce qu une fonction? λ-calcul et typage Nicolas Barnier, Pascal Brisset ENAC Avril 2009 Nicolas Barnier, Pascal Brisset (ENAC) λ-calcul et typage Avril 2009 1 / 1 Qu est-ce qu une fonction? Classiquement Pas de notation uniforme/standard

Plus en détail

UE C avancé cours 1: introduction et révisions

UE 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étail

Compte rendu TP No1 : «Analyse statique de programme»

Compte rendu TP No1 : «Analyse statique de programme» LO20 : Vérification, validation et sûreté de fonctionnement http://www.genie logiciel.utc.fr/lo20/ Compte rendu TP No1 : «Analyse statique de programme» Le premier TP concerne l'analyse statique de programme.

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Chapitre 3 : Pointeurs et références

Chapitre 3 : Pointeurs et références p. 1/18 Chapitre 3 : Pointeurs et références Notion de pointeur L adresse d une variable est une valeur. On peut donc la stocker dans une variable. Un pointeur est une variable qui contient l adresse d

Plus en détail

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

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

Plus en détail

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Architecture des ordinateurs et Algorithmique de base Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ UFR Sciences et Techniques

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

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

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

Plus en détail

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

Programmation système : tampons

Programmation système : tampons Programmation système : tampons Juliusz Chroboczek 12 Octobre 2009 1 Tampons Le programme de copie décrit au cours précédent effectue deux appels système pour chaque octet copié ce qui est tragique. Une

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Plus en détail

Ch1 : Eléments de base du langage C

Ch1 : Eléments de base du langage C Ch1 : Eléments de base du langage C Fathi Mguis Atelier de programmation 1 LFSI1/LARI1 A.U : 2014-2015 Plan 1 Généralités 2 Avantages 3 Structure d un programme en C 4 Les diverse phases d un programme

Plus en détail

Langage C notes de cours

Langage C notes de cours Langage C notes de cours K. El Omari IUT GTE, UPPA 1 Présentation générale 1.1 Introduction La programmation par le langage C (ainsi que par d autres langages dit compilés) est basée sur : 1. la rédaction

Plus en détail

Correction de programmes : Logique de Hoare

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

Plus en détail

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

Introduction à Fortran 90

Introduction à Fortran 90 Introduction à Fortran 90 Nicolas Kielbasiewicz 19 mars 2008 Fortran pour FORmula TRANslator est comme son nom l indique dédié au calcul scientifique car très performant de ce point de vue. Fortran 77

Plus en détail

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3)

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3) Les tableaux (ou vecteurs) (1/3) Le type tableau est une des réponses à la question : LI213 Types et Structures de données Licence d Informatique Université Paris 6 comment agréger un très grand nombre

Plus en détail

Jeu Simon: analyse. La partie est perdue, on a eu une erreur ou un dépassement du temps limite : musique

Jeu Simon: analyse. La partie est perdue, on a eu une erreur ou un dépassement du temps limite : musique Jeu Simon: analyse 1 Algorithme du jeu : Effectuer un tirage de la séquence des couleurs (20 éléments, 3 couleurs) Répéter Afficher la séquence des couleurs et émission des notes associées Répéter Entrée

Plus en détail

Vérification formelle d un modèle mémoire pour le langage C

Vérification formelle d un modèle mémoire pour le langage C Vérification formelle d un modèle mémoire pour le langage C Projet ANR ARA SSIA CompCert (http://compcert.inria.fr) Sandrine Blazy, Xavier Leroy CEDRIC-ENSIIE et INRIA Rocquencourt CEA-LIST, 18 mars 2008

Plus en détail

Cours Langage C. Passage de paramètres à la fonction main Pointeur de fonction Allocation dynamique

Cours Langage C. Passage de paramètres à la fonction main Pointeur de fonction Allocation dynamique Cours Langage C Passage de paramètres à la fonction main Pointeur de fonction Allocation dynamique I Passage de paramètres à la fonction main Tout exécutable C doit comporter une fonction main dont le

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

La programmation Impérative par le Langage C

La programmation Impérative par le Langage C La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer

Plus en détail

TD 5 LES POINTEURS. Définition: Pointeur

TD 5 LES POINTEURS. Définition: Pointeur TD 5 LES POINTEURS d'après le site de F. Faber http://www.ltam.lu/tutoriel_ansi_c Définition: Pointeur Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. En C, chaque

Plus en détail

Éléments de Programmation Cours 1 - Introduction

Éléments de Programmation Cours 1 - Introduction Éléments de Programmation Cours 1 - Introduction Romain Demangeon 1I001 - Section 11 PEIP 08/09/2015 Étudiants PEIP: Informatique au 1er et 3eme semestre. Section MIPI 11: 160 étudiants, 5 groupes de TD.

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

Cours de compilation

Cours de compilation Cours de compilation 1 Introduction Un compilateur est un logiciel de traduction d un langage source vers un langage cible. D ordinaire le langage source est un langage de programmation évolué, comme C++

Plus en détail

Python langage de programmation

Python langage de programmation Initiation à la programmation avec Python langage de programmation Valérie Bellynck (2009), d après un diaporama d Alain Bozzi (2008), lui-même venant de celui de Bob Cordeau (2008) 1 Langage de Programmation

Plus en détail

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs Les pointeurs Le langage C permet de manipuler des adresses d objets ou de fonctions par le biais de pointeurs. Pour ce faire on peut désigner des variables dites de type pointeur, destinées à contenir

Plus en détail

Programmation I : Cours d introduction à la programmation Pointeurs

Programmation I : Cours d introduction à la programmation Pointeurs Programmation I : Cours d introduction à la programmation Pointeurs Laboratoire d Intelligence Artificielle Faculté I&C Programmation I Pointeurs 1 / 23 Rappel du calendrier Programmation I Pointeurs 2

Plus en détail

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 1 6. Lecture/écriture formatées et Fichiers printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 2 Références Site du zèro : Programmer en C http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

Plus en détail

I. Introduction. II. But de l'exercice

I. Introduction. II. But de l'exercice Projet M2 LSE SEE : Communication espace noyau / espace utilisateur Table des matières I.Introduction...1 II.But de l'exercice...2 III.Écriture du module...3 A.Squelette du module...3 B.Gestion de l'entrée

Plus en détail

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

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

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE

EPREUVE OPTIONNELLE d INFORMATIQUE EPREUVE OPTIONNELLE d INFORMATIQUE A) QCM Les réponses au QCM doivent être portées directement sur la feuille de sujet de QCM. Ne pas omettre de faire figurer votre numéro de candidat sur cette feuille

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

Gestion de la mémoire

Gestion de la mémoire Chapitre 9 Gestion de la mémoire Durant l exécution d un programme, les éléments manipulés par le programme sont stockés dans différents types de mémoire. La pile d exécution contient des éléments dont

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

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

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

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

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

Plus en détail

Langage C. E. Boucharé

Langage C. E. Boucharé Langage C E. Boucharé Table des Matières Introduction.............................................................................. 1 Chapitre 1. Les types de données de C....................................................

Plus en détail

Sujet d examen 1. Pratique du C. Novembre 2009

Sujet d examen 1. Pratique du C. Novembre 2009 Durée 1 h 30 Documents autorisés Sujet d examen 1 Pratique du C Novembre 2009 Introduction Écrivez lisiblement et n hésitez pas à commenter votre code en langage C. Vous ne pouvez utiliser que les fonctions

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre 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étail

Licence STPI Semestre 3 - Examen de Validation de Module - Janvier 2006 ULSI301 - LANGAGE C

Licence STPI Semestre 3 - Examen de Validation de Module - Janvier 2006 ULSI301 - LANGAGE C Licence STPI Semestre 3 - Examen de Validation de Module - Janvier 2006 ULSI301 - LANGAGE C Durée : 2h. - Documents et Calculatrices autorisés. Toutes les réponses doivent être justifiées - Les exercices

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

La mémoire. Polytech Paris-Sud Cycle ingénieur de la filière étudiant. Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.

La mémoire. Polytech Paris-Sud Cycle ingénieur de la filière étudiant. Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri. La mémoire Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Aspects matériels de la mémoire Types de mémoires Type Accès

Plus en détail

Notion d indirection (1) 1

Notion d indirection (1) 1 Notion d indirection (1) 1 Illustration 1: Pourquoi garder une copie des fichiers postscript du cours dans mon répertoire, si je sais où se trouve l original sur le web? pour accéder à l original au cas

Plus en détail

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

Introduction à 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 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é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

Le Langage. JavaScript

Le Langage. JavaScript Chapitre 2 : Le Langage JavaScript Le Langage JavaScript Rémy Courdier 1996-2002 - Le langage Java - Version du cours 2.6.2 1 Les types primitifs de JavaScript Types de bases Boolean (Booléen) : peut prendre

Plus en détail

Qualité logicielle, tests, débogage

Qualité logicielle, tests, débogage Qualité logicielle, tests, débogage A. Accro aux tests? Une introduction au test logiciel................ 4 Pourquoi le test logiciel? Des tests, pour gagner du temps! Pour aller plus loin Les objectifs

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Système et Programmation (en C)

Système et Programmation (en C) Système et Programmation (en C) ENSTA - TC 1ère année François Pessaux U2IS 2015-2016 francois.pessaux @ ensta-paristech.fr Introduction François Pessaux IN102 Système et Programmation (en C) 2/31 But

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

Introduction aux nouveautés du C++ 11

Introduction aux nouveautés du C++ 11 Introduction aux nouveautés du C++ 11 Miss Réunion Laurent NOËL laurent.noel.c2ba@gmail.com http://igm.univ-mlv.fr/ lnoel 07/05/2013 Laurent NOËL 07/05/2013 C++ 11 1 / 39 nullptr Quel est le problème de

Plus en détail

Sécurité des logiciels et analyse statique

Sécurité des logiciels et analyse statique Sécurité des logiciels et analyse statique David Pichardie Projet Lande, INRIA Rennes - Bretagne Atlantique Introduction générale à l analyse statique Analyse de programme Objet : déduire mécaniquement

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Comme déjà précisé dans les premiers chapitres de ce cours, il n existe pas de type chaîne de caractères prédéfinit en C. Il existe deux façons pour déclarer une chaîne de caractères

Plus en détail

Programmation en Langage C/C++ par Sylvain Ferey. pour le Forum des Programmeurs Francophones

Programmation en Langage C/C++ par Sylvain Ferey. pour le Forum des Programmeurs Francophones Programmation en Langage C/C++ par Sylvain Ferey pour le Tables des matières Introduction... 5 Réalisation de notre premier programme C... 6 Les types du C / C++... 9 Le type caractère...9 Un signe de

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS 1. PRÉSENTATION. Le langage C a fait son apparition en 1972 pour le développement du système d exploitation Unix. Il est devenu un standard de la norme ANSI en 1983.

Plus en détail

Analyse de programme

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

Plus en détail

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis

Plus en détail

Rappels Entrées -Sorties

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

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire.

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire. Principes des lang. de progr. INE 11 Michel Mauny ENSTA ParisTech Prénom.Nom@ensta.fr Michel Mauny (ENSTA ParisTech) INE 11 Prénom.Nom@ensta.fr 1 / 37 Gestion et récupération automatique de mémoire lanage

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

Objectif du cours. Bases de la programmation. Plan de cette partie

Objectif du cours. Bases de la programmation. Plan de cette partie Objectif du cours Bases de la programmation Université de Nice - Sophia Antipolis Richard Grin Version 1.2.5 24/9/11 http://deptinfo.unice.fr/~grin Introduction à la programmation orientée objet pour pouvoir

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

COMPILATEUR C CC5X POUR PIC UTILISÉ AVEC MPLAB

COMPILATEUR C CC5X POUR PIC UTILISÉ AVEC MPLAB COMPILATEUR C CC5X POUR PIC UTILISÉ AVEC MPLAB Adresse Internet du site de l éditeur : http://www.bknd.com/cc5x/index.shtml 1) GÉNÉRALITÉS Ce document se réfère à la version 3.2. Il est basé sur un autre

Plus en détail

Instructions assembleur

Instructions assembleur Instructions assembleur 0001011011110110 0001011101101101 10001001 Instruction vue par le programmeur assembleur ou instruction élémentaire cible d'un compilateur Réalise une modification de l'état interne

Plus en détail

3 Lien entre pointeurs et tableaux.

3 Lien entre pointeurs et tableaux. programme sont dit dynamiques. On se limite ici aux tableaux statiques à une seule dimension, analogue aux vecteurs manipulés en mathématiques. Ils se déclarent sous la forme : type_d_élément variable_tableau[taille];

Plus en détail