Algorithmique et Structures de Données

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Algorithmique et Structures de Données"

Transcription

1 Plan du cours Algorithmique et Structures de Données Akkouche Samir : Knibbe Carole: 1. Rappels 2. Tableaux dynamiques a. Introduction b. Description du module Tab_Dynamique c. Mise en œuvre et complexité des opérations 3. Listes chainées 4. Arbres binaires 5. Piles et Files Programmation modulaire Programmation modulaire En TP vous allez développer les modules : TableauDynamique, Liste, Arbre Pile, File Avant : Un programme = un fichier gcc -Wall -ansi -pedantic o toto.c bidul.out Comment utiliser ce qui a déjà été réalisé sans le modifier? 1

2 #include <stdio.h> #include <stdlib.h> double somme (const double t[ ] ) int j; double s = 0.0; int taille = sizeof(t) ; printf("dans somme, sizeof(t) = %d\n «, taille)); for(j = 0; j < taille; j++) s = s + t[j]; return s; int main() int i; double s1, s2; double tab1[6]; double *tab2; for( i = 0 ; i < 6 ; i++ ) tab1[i] = 1.0; printf("dans main, sizeof(tab1) = %d\n", sizeof(tab1)); s1 = somme(tab1); Programmation modulaire Maintenant : Un programme = plusieurs fichiers Attention : Il n y a qu une seule fonction avec l entête int main() tab2 = (double *) malloc(6*sizeof(double)); for(i = 0; i < 6; i++) tab2[i] = 1.0; printf("dans main, sizeof(tab2) = %d\n", sizeof(tab2)); s2 = somme(tab2); free(tab2); return 0; gcc -Wall -ansi -pedantic -c main.c gcc -Wall -ansi -pedantic -c Element.c gcc -Wall -ansi -pedantic -c TableauDynamique.c main.c TableauDynamique.c Element.c Bibliothèque (ex : stdio) Les Modules : Rappel main.i main.s TableauDynamique.i TableauDynamique.s Element.i Element.s module nom_module Importer Déclaration des modules extérieurs utilisés exporter Déclaration des éléments offerts par notre module main.o TableauDynamique.o Element.o implantation Définition éventuelle d éléments internes au module (utiles pour l implantation de nom_module mais non exportés) monexecutable.out 4e étape : l éditeur de liens (linker) construit l exécutable en agençant les.o gcc main.o TableauDynamique.o Element.o -o monexecutable.out Définition des éléments offerts par nom_module Finmodule 2

3 Mise en œuvre en C : Rappel Un module se décomposera en au moins 2 fichiers : un fichier nom_du_fichier.h et un fichier.c #ifndef Monmodule #define Monmodule /*Types de mon module que j exporte Entêtes des procédures et fonctions que j exporte*/ void initialiser( ); void testament( ); void affectation ( ); Montype addition( ); #endif Mise en œuvre en C Rappel Dans un fichier nom_du_fichier.c #include " nom_du_fichier.h " void initialiser( ) void testament( ) void affectation ( ) Montype addition( ) Makefile : exemple monexecutable.out: main.o TableauDynamique.o Element.o gcc main.o TableauDynamique.o Element.o -o monexecutable.out main.o: main.c TableauDynamique.h Element.h gcc -Wall -ansi -pedantic -c main.c TableauDynamique.o: TableauDynamique.c TableauDynamique.h Element.h gcc -Wall -ansi -pedantic -c TableauDynamique.c Element.o: Element.c Element.h gcc -Wall -ansi -pedantic -c Element.c all: monexecutable.out main.o: main.c TableauDynamique.h Element.h gcc -Wall -ansi -pedantic -c main.c TableauDynamique.o: TableauDynamique.c TableauDynamique.h Element.h gcc -Wall -ansi -pedantic -c TableauDynamique.c Element.o: Element.c Element.h gcc -Wall -ansi -pedantic -c Element.c monexecutable.out: main.o TableauDynamique.o Element.o gcc main.o TableauDynamique.o Element.o -o monexecutable.out clean: rm -r *.o monexecutable.out Makefile : variantes make clean make all 3

4 CC = gcc option= -Wall -ansi -pedantic all: monexecutable.out main.o: main.c TableauDynamique.h Element.h $(CC) $(option) -c main.c TableauDynamique.o: TableauDynamique.c TableauDynamique.h Element.h $(CC) $(option) -c TableauDynamique.c Element.o: Element.c Element.h $(CC) $(option) -c Element.c monexecutable.out: main.o TableauDynamique.o Element.o $(CC) main.o TableauDynamique.o Element.o -o monexecutable.out clean: rm -r *.o monexecutable.out Makefile : variantes CC = gcc option = -Wall -ansi -pedantic objets = main.o TableauDynamique.o Element.o all: monexecutable.out main.o: main.c TableauDynamique.h Element.h $(CC) $(option) -c main.c TableauDynamique.o: TableauDynamique.c TableauDynamique.h Element.h $(CC) $(option) -c TableauDynamique.c Element.o: Element.c Element.h $(CC) $(option) -c Element.c monexecutable.out: $(objets) $(CC) $(objets) -o monexecutable.out clean: rm -r *.o monexecutable.out Makefile : variantes Rappel sur les tableaux #include <stdio.h> #include <stdlib.h> double somme (const double t[ ] ) int j; double s = 0.0; int taille = sizeof(t) ; printf("dans somme, sizeof(t) = %d\n", taille)); for(j = 0; j < taille; j++) s = s + t[j]; return s; int main() int i; double s1, s2; double tab1[6]; double *tab2; for( i = 0 ; i < 6 ; i++ ) tab1[i] = 1.0; printf("dans main, sizeof(tab1) = %d\n", sizeof(tab1)); s1 = somme(tab1); tab2 = (double *) malloc(6*sizeof(double)); for(i = 0; i < 6; i++) tab2[i] = 1.0; printf("dans main, sizeof(tab2) = %d\n", sizeof(tab2)); s2 = somme(tab2); free(tab2); return 0; Affichage à l écran : Dans main, sizeof(tab1) =? Dans somme, sizeof(t) =? Dans main, sizeof(tab2) =? Que faut-il modifier? 4

5 Caractéristiques d un tableau Tableaux Dynamiques Les cellules sont contigues en mémoire Capacité fixée à l avance Accès direct Deux parties distinctes : Partie pleine et partie avec des éléments non significatifs(pour le problème traité) Espace occupé Position d ajout Capacité Tableau Dynamique Type à accès direct dont on ne S OCCUPE PAS de la taille. Il faut pouvoir augmenter la taille à loisir(et la réduire). Transparent pour l utilisateur Type TableauDynamique = structure adressepremierelt : pointeur sur Element capacite : entier tailleutilisee : entier Fin structure TableauDynamique Capacité module TableauDynamique importer Element exporter type TableauDynamique procedure initialiser (t : TableauDynamique) Précondition : t non initialisé, Postcondition : le tableau est créé avec une longueur égale à 1 Paramètre en mode donnée : aucun Paramètre en mode résultat : t procedure initialiser (t : TableauDynamique, taille : entier) Précondition : t non initialisé, Postcondition : le tableau est créé avec une longueur égale à taille Paramètre en mode donnée : taille Paramètre en mode résultat : t procedure testament(t : TableauDynamique) Précondition : t est bien initialisé, Postcondition : la place réservée pour t est libérée A suivre implantation finmodule 5

6 module TableauDynamique (suite) fonction tailleutilisee(t : TableauDynamique) : entier Précondition : t bien initialisé, Résultat : retourne le nombre effectif d éléments dans le tableau Paramètre en mode donnée : t procedure ajouteelement( t : TableauDynamique, e : Element) Précondition : t est bien initialisé Postcondition : e est ajouté à la suite des éléments déjà présents Paramètre en mode donnée : e procedure insereelement( t : TableauDynamique, e: Element, i: entier) Précondition : t est bien initialisé et i< tailleutilisée Postcondition : e est inséré à la position i dans t Paramètres en mode donnée : e, i A suivre implantation finmodule module TableauDynamique (suite) fonction acceselement_i( t : TableauDynamique, i : entier) : Element Précondition : t est bien initialisé et i< tailleutilisée Résultat : retourne la valeur à la position i dans t Paramètres en mode donnée : i procedure modifieelement_i(t : TableauDynamique, e: Element, i: entier) Précondition : t est bien initialisé, i< tailleutilisée Postcondition : modifie la valeur à la position i dans t Paramètres en mode donnée : e, i implantation finmodule #ifndef _ELEMENT_TD #define _ELEMENT_TD typedef int ElementTD; Mise en œuvre void afficheelementtd(elementtd e); /* Preconditions : aucune */ /* Post-conditions : affichage de e sur la sortie standard */ #endif 6

7 Tableau Dynamique : Mise en œuvre Structure du fichier TableauDynamique.h #ifndef TABDYN #define TABDYN #include "Element.h" struct stableaudynamique Element * adressepremierelt; int capacite; int tailleutilisee; ; typedef struct stableaudynamique TableauDynamique; void initialiser(tableaudynamique * ); void initialiser(tableaudynamique *, int ); On alloue de la place à l initialisation initialisation pile tailleutilisee 0 capacite void initialiser(tableaudynamique * t) adressepremierelt (*t).capacite = 1; (*t).adressepremierelt=malloc(taille*sizeof(element)); (*t).tailleutilisee = 0; int tailleutilisee(tableaudynamique *); void testament(tableaudynamique * ); void ajouteelement(tableaudynamique *, Element ); void insereelement(tableaudynamique *, Element, int); #endif int main() TableauDynamique a; initialiser(&a); tas ad[0] Méthode d insertion dans un tableau dynamique : Doubler la taille du tableau quand plus de place Ajout d éléments Insérer la valeur Insérer la valeur Insérer la valeur Pas de place pour insérer 25 Création d un nouveau tableau Recopie de l ancien dans le nouveau Insertion de la valeur 25 void ajouteelement( TableauDynamique *t, Element e ) int i; Element *temp; if((*t).tailleutilisee == (*t).capacite) temp = (*t).adressepremierelt; (*t). adressepremierelt = malloc(2*(*t).capacite*sizeof(element)); for( i=0;i< (*t).capacite);i++)(*t). adressepremierelt[i]=temp[i]; Insérer la valeur Insérer la valeur (*t).capacite = 2*(*t).capacite; free(temp); /*On libère la place occupée par (*t). adressepremierelt[(*t).tailleutilisee]=e; (*t). tailleutilisee++; 7

8 Testament void testament(tableaudynamique *t) If((*t).adressePremierElt!=0) free ((*t).adressepremierelt); (*t).adressepremierelt = 0; (*t).capacite = 0; (*t).tailleutilisee = 0; Etude des coûts Coût de l insertion pour un tableau dynamique Coût : tableau statique Tableau dynamique Ajout Temps constant O(1)? Insertion Temps linéaire O(n)? Suppression Temps linéaire O(n) O(n) ou? modification Temps constant O(1) O(1) recherche O(?) O(?) 2 0 =1 2 1 =2 2 2 =4 Stratégies d insertion Doubler la taille du tableau Augmenter le tableau d une taille constante 2 3 =8 2 4 =16 Etape k => taille du tableau = 2 k 8

9 2 p-1 Coût de l insertion pour un tableau dynamique p n 2 2n Coût de l insertion pour un tableau dynamique 2 0 =1 2 1 =2 2 2 =4 2 3 =8 2 4 =16 x x x x x x x x x x x Coût total 3n Coût amorti 3 n n Coût total n k p-1 k 0 k p 2 n 2 3n Combien de fois a-t-on doublé la taille du tableau? Problème inverse Après avoir doublé la taille plusieurs fois et supprimé plusieurs éléments : Le rapport tailleutilisee / capacite peut devenir petit => On occupe trop de places x x x x Solution : Si tailleutilisee / capacite < 1/3 on divise la capacité par 2. On alloue capacite/2 Elements dans le tas On recopie les éléments du tableau dans la nouvelle place allouée On libère l ancienne place Exercice : Ecrire la procédure de suppression d un élément 9

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

Programmation Impérative 2006-2007

Programmation Impérative 2006-2007 Programmation Impérative 2006-2007 Licence Physique-Applications, Phisique-Chimie Université Jean Monnet Ruggero G. PENSA ruggero.pensa@univ-st-etienne.fr Définition de nouveaux types En pseudo-langage

Plus en détail

Exercice 1 : Questions diverses (5 points)

Exercice 1 : Questions diverses (5 points) Université Claude Bernard Lyon 1 Licence Sciences, Technologies, Santé L2 Année 2010-2011, 2ème semestre LIF5 Algorithmique & Programmation procédurale Contrôle final du 20 juin 2011 Durée : 1h30 Note

Plus en détail

intro aux SE et mise en œuvre sous UNIX

intro aux SE et mise en œuvre sous UNIX TP: Programmer sous GNU/LINUX Ce premier TP introductif à la programmation en C va vous familiariser avec : la syntaxe du langage ; la mise en oeuvre du compilateur ; le préprocesseur cpp ; l'utilisation

Plus en détail

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files . Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012 Algorithmique et Programmation Les structures de données Les Files Introduction Une File ressemble fortement à

Plus en détail

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c Langage Impératif 1 TP 1 du 11 octobre 2010 Série d exercices Rappels rapides : - Un programme C s écrit toujours dans un fichier d extension.c (en minuscule!! sinon ce serait compilé comme du C++). Ce

Plus en détail

Compilation avec Make

Compilation avec Make Compilation avec Make Laurent Réveillère Enseirb-Matmeca / IPB Département Télécommunications Laurent.reveillere@ipb.fr http://http://reveille.vvv.enseirb-matmeca.fr/ Objectifs Automatiser la reconstruction

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

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

Laboratoire MSSMat. Formation Makefiles. GNU Make, niveau débutant. A.-S. Mouronval. Mars 2005

Laboratoire MSSMat. Formation Makefiles. GNU Make, niveau débutant. A.-S. Mouronval. Mars 2005 Laboratoire MSSMat Formation Makefiles GNU Make, niveau débutant A.-S. Mouronval Mars 2005 1 A quoi sert make? Utilitaire permettant d'exécuter des instructions pour construire une application Permet d'optimiser

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

Introduction à Make et aux fonctions pseudo-aléatoires

Introduction à Make et aux fonctions pseudo-aléatoires Introduction à Make et aux fonctions pseudo-aléatoires 1 Introduction à Make Support de TP C Make est un outil de programmation, dont une version est disponible pour les systèmes Unix sous la licence GNU

Plus en détail

cours 6 - compilation séparée, classes de stockage et makefile

cours 6 - compilation séparée, classes de stockage et makefile cours 6 - compilation séparée, classes de stockage et makefile G. Bianchi, G. Blin, A. Bugeau, S. Gueorguieva, R. Uricaru 2015-2016 Programmation 1 - uf-info.ue.prog1@diff.u-bordeaux.fr la programmation

Plus en détail

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 Ce qu il faut rendre : A la fin du TP il faudra archiver et compresser l ensemble de votre travail (y compris le rapport avec vos noms) avec la commande

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

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

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

UE1 - Langage C Fiche TP1

UE1 - Langage C Fiche TP1 1 UE1 - Langage C Fiche TP1 Objectifs 1. Connaître quelques commandes linux 2. Savoir manipuler les outils de compilation tels que gcc, make 3. Ecrire des algorithmes, les coder en C, et les exécuter 1.

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

TP 3 : Compilation séparée Makefile, fichiers.h et.c

TP 3 : Compilation séparée Makefile, fichiers.h et.c TP 3 : Compilation séparée Makefile, fichiers.h et.c Objectifs : Maîtriser les fichiers de compilation Makefile. Maîtriser la compilation séparée. Savoir utiliser les bibliothèques prédéfinies en C. TP

Plus en détail

Initiation au C cours n 9

Initiation au C cours n 9 Initiation au C cours n 9 Antoine Miné École normale supérieure 26 avril 2007 Plan du cours compilation séparée, modularité, bibliothèques.a et.so, recompilation automatique avec make. Déroulement de la

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

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

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 2013-2014 (1ere session) durée 3h Tous documents et calculatrices autorisés. Répondez aux questions sur une copie séparée Le sujet comporte 12 pages

Plus en détail

Pointeurs de fonctions

Pointeurs de fonctions Florence Levé - Université de Picardie Jules Verne 145 Pointeurs de fonctions Parfois utile de passer une fonction comme paramètre d une autre fonction Un pointeur de fonction correspond à l adresse du

Plus en détail

L utilitaire "make" et son inséparable Makefile

L utilitaire make et son inséparable Makefile L utilitaire "make" et son inséparable Makefile Compilation et exécution Programme source Analyse lexicale (scaning) Optimisation du code Programme abstrait (optimisé) Génération du code Séquence d unités

Plus en détail

Notes sur la compilation séparée

Notes sur la compilation séparée Annexe B Notes sur la compilation séparée Ce document est probablement imparfait, mais il devrait déjà donner une introduction raisonnable au sujet traité... B.1 Introduction La compilation séparée est

Plus en détail

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Modularité GCC : 4 millions de lignes de code Noyau

Plus en détail

TP 2 et 3 Introduction à C

TP 2 et 3 Introduction à C TP 2 et 3 Introduction à C Partie A : prise en main de gcc et makefile L'objectif de cette partie est de vous familiariser avec le langage C et sa chaîne de développement basée sur le compilateur gcc,

Plus en détail

Tri par tas. 1 Élément et tableau TP 4. Année

Tri par tas. 1 Élément et tableau TP 4. Année Sup Galilée Année 2015-2016 Algorithmique CP2I2 TP 4 Tri par tas 1 Élément et tableau Veuillez utiliser les types et fonctions suivants pour manipuler les éléments et les tableaux. Fichier element.c :

Plus en détail

Cycle de vie d un programme

Cycle de vie d un programme Cycle de vie d un programme Ensimag 1A - Préparation au Projet C Année scolaire 2009 2010 Les objectifs de cette séance sont : de comprendre les différentes étapes de la chaîne de compilation d un programme

Plus en détail

Structures de données : Les tableaux

Structures de données : Les tableaux 1 de 1 Algorithmique Structures de données : Les tableaux Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 1 Algorithmes et structures de données La plupart

Plus en détail

Systèmes répartis : les Remote Procedure Calls p.1/25

Systèmes répartis : les Remote Procedure Calls p.1/25 Systèmes répartis : les Remote Procedure Calls Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis : les Remote Procedure Calls p.1/25 Les Remote Procedure Calls

Plus en détail

I Quelques points d'algorithmique

I Quelques points d'algorithmique I Quelques points d'algorithmique 1) Types Type "simple" : Identificateur commençant par une majuscule = Description du type Les principaux types : les entiers naturels (int, long, long long) ou relatifs

Plus en détail

cm 15 - initiation à la programmation modulaire

cm 15 - initiation à la programmation modulaire cm 15 - initiation à la programmation modulaire G. Bianchi, G. Blin, A. Bugeau, S. Gueorguieva, R. Uricaru 2015-2016 Programmation 1 - uf-info.ue.prog1@diff.u-bordeaux.fr principes globaux Une première

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 2014-2015 (1ere session) durée 3h Tous documents et calculatrices autorisés. Répondez aux questions sur une copie séparée Le sujet comporte 8 pages

Plus en détail

Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Modularité GCC : 4 millions de lignes de code Noyau Linux : 12 millions de lignes de code

Plus en détail

Formation Unix/Linux (9) Introduction à la programmation C sous Unix

Formation Unix/Linux (9) Introduction à la programmation C sous Unix Formation Unix/Linux (9) Introduction à la programmation C sous Unix Olivier BOEBION Mars 2004 1 Le langage C Introduire un langage de développement dans des travaux pratiques sur un système d exploitation

Plus en détail

Les sous-programmes : exercices résolus en C Corrigé

Les sous-programmes : exercices résolus en C Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Exercices résolus en C, Semaine 3 avril mai 2013 Corrigé Objectifs Savoir écrire des sous-programmes ; Comprendre les modes de passage de paramètres ; Faire la

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

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td. Exercice 1 TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.htm Exercices de base de Programmation Arbre Programmatique

Plus en détail

IN3T01 Programmation C TP 2 corrigé Jean-Claude Georges - Michel Landschoot

IN3T01 Programmation C TP 2 corrigé Jean-Claude Georges - Michel Landschoot ESIEE 2011 2012 IN3T01 Programmation C TP 2 corrigé Jean-Claude Georges - Michel Landschoot PARTIE 1: LES FONCTIONS ET LES POINTEURS fichier fonctions.h #ifndef _FONCTION_H_ #define _FONCTION_H_ #include

Plus en détail

Tutorial: Compiler un programme en C++

Tutorial: Compiler un programme en C++ Tutorial: Compiler un programme en C++ Ce tutorial propose de reprendre dans deux cas de figures (un unique fichier source, et plusieurs fichiers sources en c++11 différentes approches permettant de compiler

Plus en détail

L3 Info & Miage. TP-Projet SGF

L3 Info & Miage. TP-Projet SGF TP-Projet SGF 1. Introduction L objectif de ce mini-projet est de réaliser un Système de Gestion de Fichiers simplifié capable de gérer des accès à des fichiers séquentiels de type flot. L idée est ici

Plus en détail

ECOLE POLYTECHNIQUE DE MONTREAL DEPARTEMENT DE GENIE ELECTRIQUE ET DE GENIE INFORMATIQUE Section informatique. Cours 3.307P: INFORMATIQUE EXAMEN FINAL

ECOLE POLYTECHNIQUE DE MONTREAL DEPARTEMENT DE GENIE ELECTRIQUE ET DE GENIE INFORMATIQUE Section informatique. Cours 3.307P: INFORMATIQUE EXAMEN FINAL ECOLE POLYTECHNIQUE DE MONTREAL DEPARTEMENT DE GENIE ELECTRIQUE ET DE GENIE INFORMATIQUE Section informatique Cours 3.307P: INFORMATIQUE EXAMEN FINAL DATE : Dimanche 8 décembre 1996 HEURE: DE 13h30 A 16h00

Plus en détail

LIFAP3 Algorithmique et programmation avancée. Samir Akkouche Nicolas Pronost

LIFAP3 Algorithmique et programmation avancée. Samir Akkouche Nicolas Pronost LIFAP3 Algorithmique et programmation avancée Samir Akkouche Nicolas Pronost Chapitre 5 Type de données abstraits et programmation séparée 2 Les grands problèmes du génie logiciel 30% des projets informatiques

Plus en détail

Pompes carburant - Phase d analyse

Pompes carburant - Phase d analyse Pompes carburant - Phase d analyse V. Diagramme de séquence (associé au CU FournirCarburant) Client / Pupitre LecteurCarte Pompes Service Imprimante Carte TaperCode Code-client Client_ok ChoisirCarbu TypeCarbu

Plus en détail

Tableaux à deux dimensions

Tableaux à deux dimensions Cours 8 Tableaux à deux dimensions Un tableau à deux dimensions (tableau 2D) est un tableau contenant des lignes et des colonnes comme celui-ci : 4 22 55 2 5 2 4 4 2 24 2 12 Ce tableau à deux dimensions

Plus en détail

Ecrire un Makefile, sans douleur et en quelques leçons.

Ecrire un Makefile, sans douleur et en quelques leçons. Ecrire un Makefile, sans douleur et en quelques leçons. M. Billaud Département Informatique Institut Universitaire de Technologie Université Bordeaux 1 Mai 2010 Résumé Ce document montre comment écrire

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

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

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

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION Licence STS Université Claude Bernard Lyon I LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 5 : Les Tableaux PLAN DE LA SÉANCE Comprendre l utilité des tableaux Apprendre à manipuler

Plus en détail

Programmation : Exercices

Programmation : Exercices Programmation : Exercices IUT de Villetaneuse R&T 1 ère année Laure Petrucci 6 novembre 2007 1 Premiers programmes Exercice 1.1 : Machine à dessiner On souhaite écrire un programme pour afficher des dessins.

Plus en détail

Cours Langage C/C++ Programmation modulaire

Cours Langage C/C++ Programmation modulaire Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation

Plus en détail

Environnement de développement / Projet de programmation 1 (J1INPW01) Compilation

Environnement de développement / Projet de programmation 1 (J1INPW01) Compilation Environnement de développement / Projet de programmation 1 (J1INPW01) Compilation Plan gcc (compilation et compilation séparée) Make (Makefile) Makefile générique 2 Compilation simple #include

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

Partiel QCM - Langage C (LC4)

Partiel QCM - Langage C (LC4) Partiel QCM - Langage C (LC4) 1er avril 2009 Durée: 1h45 - Documents interdits Pour chaque question, il y a exactement une bonne réponse. Le tableau où vous devez répondre est fourni séparément. +1 pour

Plus en détail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

Programmation système III Programmation Modulaire

Programmation système III Programmation Modulaire Programmation système III Programmation Modulaire DUT 1 re année Université de Marne La vallée Objectifs et enjeux Découpage d un projet Module de code en C Assemblage d un projet Makefile Difficultés

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

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

TP1 : Organisation du projet d algorithmique

TP1 : Organisation du projet d algorithmique TP1 : Organisation du projet d algorithmique Enseignants: Antoine Bonnefoy et Sokol Koço Sujet: Liva Ralaivola, Antoine Bonnefoy et Sokol Koço 15 janvier 2014 1 Chasser à l aveuglette 1.1 Le projet Le

Plus en détail

Licence E.E.A. TD N 2 de Langage C/C++

Licence E.E.A. TD N 2 de Langage C/C++ TD N 2 de Langage C/C++ 1 Licence E.E.A. TD N 2 de Langage C/C++ Ce TD a pour objectif de vous faire découvrir et utiliser le langage C et peut être C++. Il s agira de transcrire sous la forme d un programme

Plus en détail

IFT-2900 Algorithmes de l'ingénieur 1. Notions avancées de programmation en C/C++

IFT-2900 Algorithmes de l'ingénieur 1. Notions avancées de programmation en C/C++ IFT-2900 Algorithmes de l'ingénieur 1 Notions avancées de programmation en C/C++ Notions avancées de programmation 1. Compilation et édition de liens Fichiers impliqués Exemple Dépendances entre les fichiers

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Introduction au langage C

Introduction au langage C Organisation du cours Introduction au langage C Premier cours Notions générales Aurélien Max aurelien.max@limsi.fr 12 séances de cours de 1h: mercredi 16-17h, salle A203 12 séances de TD de 1h: mercredi

Plus en détail

Constat. Programmation Modulaire. Génie Logiciel. Difficulté de gérer un logiciel de grande ampleur (>> 10 000 lignes de code)

Constat. Programmation Modulaire. Génie Logiciel. Difficulté de gérer un logiciel de grande ampleur (>> 10 000 lignes de code) Constat Difficulté de gérer un logiciel de grande ampleur (>> 10 000 lignes de code) répartition du travail entre plusieurs personnes temps de compilation maintenance du code réutilisation du code Programmation

Plus en détail

Traduction des arbres programmatiques en C

Traduction des arbres programmatiques en C Traduction des arbres programmatiques en C Table des matières 1 Premier exemple : helloworld.c 1 2 Méthode de programmation 2 3 Déclaration de variables 2 4 Structures de contrôle 3 5 Opérateurs C 5 6

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

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Algorithmique et Langage C

Algorithmique et Langage C Algorithmique et Langage C www.polytech.unice.fr/~vg/fr/enseignement/xidian Granet Vincent - vg@unice.fr Xi an - Octobre 2015 - Avril 2016 Sommaire Sommaire 1 Sommaire 2 Bibliographie 3 Introduction 4

Plus en détail

Programmation Répartie - Langage C

Programmation Répartie - Langage C frederic.guinand@univ-lehavre.fr IUT Le Havre Plan les bases quelques rappels de langage C les structures de contrôle conditionnelles les structures de contrôle itératives les tableaux les pointeurs les

Plus en détail

MEUTER Cédric / LEVY Eythan. Université Libre de Bruxelles 23/09/2005

MEUTER Cédric / LEVY Eythan. Université Libre de Bruxelles 23/09/2005 Développement en C sous LINUX MEUTER Cédric / LEVY Eythan Université Libre de Bruxelles 23/09/2005 Développement en C sous LINUX p. 1 Comment écrire son programme? Principaux éditeurs : XEmacs Emacs vi

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 IV. Structures linéaires : les files et les piles. Les files et les piles sont des listes d'éléments organisées selon l'odre

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes Tableaux VS Listes Tableaux VS Listes Petit chapitre. Plan Introduction Tableaux / Vecteurs Définition abstraite Qu a-t-on fait avec des vecteurs? Que peut-on faire avec des vecteurs? Listes chaînées Définition

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

TP1 - Introduction au langage C

TP1 - Introduction au langage C ENS Lyon L-Info PROJ1 2014-2015 TP1 - Introduction au langage C Sujet à terminer pour le dimanche 20 à 2h59, sous forme d une archive.zip contenant votre code source, par email à aurelien.cavelan@ens-lyon.fr.

Plus en détail

Soutien Informatique

Soutien Informatique 1/51 Soutien Informatique Nicolas Castagné et François Portet PHELMA 2/51 Sommaire Allocation Mémoire Les types abstraits de données 3/51 Allocation dynamique de mémoire (stdlib.h,string.h) Réserver un

Plus en détail

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

Plus en détail

Logiciel de base. Première année ENSIMAG

Logiciel de base. Première année ENSIMAG Logiciel de base Première année ENSIMAG 1 Procédures, paramètres, pile En assembleur une fonction est une étiquette, c'est l'adresse de sa première instruction Lors de l'appel d'une fonction, la pile sert

Plus en détail

Objectifs de ce cours. Introduction au langage C - Cours 4. Procédures. Exemple de procédure. Analyse de problème.

Objectifs de ce cours. Introduction au langage C - Cours 4. Procédures. Exemple de procédure. Analyse de problème. 1/30 Objectif de ce cours 2/30 Objectifs de ce cours Introduction au langage C - Cours 4 Girardot/Roelens Septembre 2013 Analyse de problème I décomposer un traitement complexe en traitements simples Concepts

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

Atelier 0: Initiation aux outils de développement C sous Linux

Atelier 0: Initiation aux outils de développement C sous Linux 1)Objectifs: Atelier 0: Initiation aux outils de développement C sous Linux S'initier à l'utilisation de quelques outils de développement avec le langage C sous Linux. Développer en C sous Linux à partir

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Chaîne d additions ATTENTION!

Chaîne d additions ATTENTION! Chaîne d additions Épreuve pratique d algorithmique et de programmation Concours commun des écoles normales supérieures Durée de l épreuve: 3 heures 30 minutes Juin 2012 ATTENTION! N oubliez en aucun cas

Plus en détail

Complément à un : addition, signes opposés. Complément à un : addition, signes opposés

Complément à un : addition, signes opposés. Complément à un : addition, signes opposés Complément à un : addition, signes opposés Soient p et q deux entiers de signes opposés. Leur somme est toujours représentable pour la taille de mot mémoire fixée car min(p, q) < p + q < max(p, q) Exemple

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

Concevoir un conteneur Exercice

Concevoir un conteneur Exercice Concevoir un conteneur Exercice Les conteneurs standards tels que std::vector respectent un ensemble de contraintes, que ce soit du point de vue des opérations, des noms ou de la rigueur. Pour nous familiariser

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

INITIATION A LA PROGRAMMATION EN C

INITIATION A LA PROGRAMMATION EN C INITIATION A LA PROGRAMMATION EN C OBJECTIF : ETRE CAPABLE DE CRÉER OU MODIFIER DE PETITS OUTILS DE TRAITEMENT D IMAGE Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier.

Plus en détail

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide Cours 2 Algorithmique IN102-02 Michel Mauny ENSTA Prénom.Nom@ensta.fr 1 Tris Retour sur fusion et quicksort Complexité minimale Efficacité 2 Récursivité 3 Structures de données Tableaux Listes Michel Mauny

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

INF601 : Algorithme et Structure de données. Avant propos

INF601 : Algorithme et Structure de données. Avant propos Avant propos Cours = Introduction aux Types de Données Abstraits (TDA) Chaque TDA est structuré en un ensemble de fichiers Compilation séparée pour faire les programmes Outils : make en C ant en java...

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

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

GESTION DES FICHIERS. Plan

GESTION DES FICHIERS. Plan Chapitre 10 GESTION DES FICHIERS Objectif: Connaître et manipuler les différentes primitives de gestion de fichier de niveau haut. Pré requis: Les fonction d'entrées sorties Les pointeurs Les structures

Plus en détail