TP2 : tableaux dynamiques et listes chaînées

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

Download "TP2 : tableaux dynamiques et listes chaînées"

Transcription

1 Licence 2 Informatique 9 / 2014 TP2 : tableaux dynamiques et listes chaînées Contact.h 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef struct contact { 5 char *nom; 6 char *num; 7 char *adresse; 8 char *titre; 9 }contact; 10 Proposition de corrigé par Mahdi Benmoussa 11 //Fonction pour la création de contacts 12 contact creercontact (char *nom, char *num, char *adresse, char *titre){ 13 contact c; 14 c.nom = (char*) malloc(sizeof(char)); 15 c.num = (char*) malloc(sizeof(char)); 16 c.adresse = (char*) malloc(sizeof(char)); 17 c.titre = (char*) malloc(sizeof(char)); c.nom = nom; 20 c.num = num; 21 c.adresse = adresse; 22 c.titre = titre; return c; 25 } //Fonction pour la modification du nom du contact 28 void modificationnom (char **nom, char **num, char **adresse, char **titre, 29 char *nouveau1, char *nouveau2, char *nouveau3, char *nouveau4){ 30 *nom = nouveau1; 31 *num = nouveau2; 32 *adresse = nouveau3; 33 *titre = nouveau4; 34 //return nom; 35 } //Fonction qui affiche un contact 38 void affichercontact (contact c){ 39 printf("nom du contact : %s \n",c.nom); 40 printf("numéro du contact : %s \n",c.num); 41 printf("adresse mail du contact : %s \n",c.adresse); 42 printf("titre professionnel du contact : %s \n",c.titre); 43 } Liste.h 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 1

2 4 #include "Contact.h" 5 6 typedef struct liste{ 7 contact c; 8 struct liste *suiv; 9 }ls; //Fonction d insertion de contacte 12 ls *inserercontact (contact c, ls *l){ 13 ls *p = (ls*) malloc (sizeof(ls)); 14 p->c = c; if(l == NULL){ 17 p->suiv = NULL; 18 l->suiv = p; 19 }else{ 20 p->suiv = l->suiv; 21 l->suiv = p; 22 } return l; 25 } //Fonction de suppression de contacte 28 ls *supprimercontact (contact c, ls *l){ 29 ls *pt, *pred; 30 if (l == NULL) 31 return NULL; 32 else{ 33 pt = (ls*) malloc (sizeof(ls)); 34 pt = l->suiv; 35 pred = (ls*) malloc (sizeof(ls)); 36 pred = l->suiv; 37 if(strcmp(l->suiv->c.nom,c.nom)==0 && 38 strcmp(l->suiv->c.num,c.num)==0 && 39 strcmp(l->suiv->c.adresse,c.adresse)==0 && 40 strcmp(l->suiv->c.titre,c.titre)==0) 41 l->suiv = l->suiv->suiv; 42 else{ 43 while (pt!=null){ 44 if(strcmp(pt->c.nom,c.nom)==0 && 45 strcmp(pt->c.num,c.num)==0 && 46 strcmp(pt->c.adresse,c.adresse)==0 && 47 strcmp(pt->c.titre,c.titre)==0){ 48 pred->suiv = pt->suiv; 49 free(pt); 50 break; 51 }else{ 52 pred=pt; 53 pt=pt->suiv; 54 } 55 } 56 } 57 return l; 58 } 59 } //Fonction de mdofication de contacte 62 ls *modifiercontact (char *nom, char *num, char *adresse, char *titre, 63 char *nouveau1, char *nouveau2, char *nouveau3, char *nouveau4, ls *l){ 64 ls *pt; 65 if (l == NULL) 66 return NULL; 67 else{ 68 pt = l->suiv; 69 while (pt!=null){ 2

3 70 if(strcmp(pt->c.nom,nom)==0 && 71 strcmp(pt->c.num,num)==0 && 72 strcmp(pt->c.adresse,adresse)==0 && 73 strcmp(pt->c.titre,titre)==0){ 74 modificationnom(&pt->c.nom,&pt->c.num,&pt->c.adresse,&pt->c.titre, 75 nouveau1,nouveau2,nouveau3,nouveau4); 76 break; 77 }else{ 78 pt=pt->suiv; 79 } 80 } 81 return l; 82 } 83 } //Afficher tous les contacts 86 void afficherlistecontacts(ls *l){ 87 ls *pt = l->suiv; 88 printf("******************** \n"); 89 printf("liste des contacts : \n"); 90 printf("******************** \n"); 91 if(l==null l->suiv==null) 92 printf("la liste est vide, il n y a pas de contacts! \n"); 93 else{ 94 while (pt!=null) 95 { 96 affichercontact(pt->c); 97 printf(" \n"); 98 pt=pt->suiv; 99 } 100 } 101 } //Fonction pour chercher un contacte 104 ls *cherchercontact(char *nom, char *num, ls *l){ 105 ls *pt = l->suiv; while (pt!= NULL){ 108 if(strcmp(pt->c.nom,nom)==0&&strcmp(pt->c.num,num)==0){ 109 break; 110 } 111 pt = pt->suiv; 112 } 113 return pt; 114 } //Fonction pour trier les contactes 117 ls *trier (ls *l){ 118 int veriter = 0; 119 ls *pt, *tempo; 120 tempo = NULL; 121 pt = l->suiv; 122 while (pt!=null){ 123 ls *nouv = (ls*) malloc(sizeof(ls)); 124 nouv->c.nom = pt->c.nom; 125 nouv->c.num = pt->c.num; 126 nouv->c.adresse = pt->c.adresse; 127 nouv->c.titre = pt->c.titre; 128 if (tempo == NULL){ 129 tempo = (ls*) malloc(sizeof(ls)); 130 tempo->suiv = nouv; 131 nouv->suiv = NULL; 132 } 133 else{ 134 ls *ptempo = tempo->suiv; 135 ls *pred = tempo; 3

4 136 while (ptempo!= NULL){ 137 if (strcmp(pt->c.num, ptempo->c.num) < 0){ 138 pred->suiv = nouv; 139 nouv->suiv = ptempo; 140 veriter = 1; 141 break; 142 } 143 pred = ptempo; 144 ptempo = ptempo->suiv; 145 } 146 if (veriter == 0) 147 pred->suiv = nouv; 148 else 149 veriter = 0; 150 } 151 pt = pt->suiv; 152 } 153 return tempo; 154 } //Affichage du Menu 157 void affichermenu (){ 158 printf(" \n Menu : \n"); 159 printf("option 0 : Quitter l application \n"); 160 printf("option 1 : Charger les contacts depuis un fichier \n"); 161 printf("option 2 : Sauvgarder les contacts dans un fichier \n"); 162 printf("option 3 : Insérer un contact \n"); 163 printf("option 4 : Supprimer un contact \n"); 164 printf("option 5 : Modifier un contact \n"); 165 printf("option 6 : Afficher tous les contacts \n"); 166 printf("option 7 : Chercher un contact \n"); 167 printf("option 8 : Trier les contacts \n"); 168 } //Fonction pour le traitement de la lecture des chaines de caractères 171 static void purger(void) 172 { 173 int c; while ((c = getchar())!= \n && c!= EOF) 176 {} 177 } 178 //Fonction pour le traitement de la lecture des chaines de caractères 179 static void clean (char *chaine) 180 { 181 char *p = strchr(chaine, \n ); if (p) 184 { 185 *p = 0; 186 } else 189 { 190 purger(); 191 } 192 } //traitement du menu de l application 195 ls *traitementmenu (ls *l){ 196 //Déclaration de variables : 197 int j; 198 //int i; //printf("choisir le type de structures à utiliser : "); 201 //scanf("%d",&i); 4

5 202 //Travail sur le choix de la structure affichermenu(); 205 scanf("%d",&j); 206 purger(); while (1){ 210 contact c; 211 char *nom, *num,*adresse,*titre, *nouveau1,*nouveau2,*nouveau3,*nouveau4; 212 nom = (char*) malloc(sizeof(char)); 213 num = (char*) malloc(sizeof(char)); 214 adresse = (char*) malloc(sizeof(char)); 215 titre = (char*) malloc(sizeof(char)); 216 nouveau1 = (char*) malloc(sizeof(char)); 217 nouveau2 = (char*) malloc(sizeof(char)); 218 nouveau3 = (char*) malloc(sizeof(char)); 219 nouveau4 = (char*) malloc(sizeof(char)); 220 switch (j){ 221 case 0: system("clear"); 222 printf("merci pour visite, au revoir! \n"); 223 exit(0); 224 case 1: printf("cette option n est pas encore disponible \n"); 225 break; 226 case 2: printf("cette option n est pas encore disponible \n"); 227 break; 228 case 3: //system("clear"); 229 printf("veuillez entrez les informations du contact a inserer \n"); 230 printf("le nom : "); 231 fgets(nom, 256, stdin); 232 clean(nom); 233 printf("le numéro : "); 234 fgets(num, 256, stdin); 235 clean(num); 236 printf("l adresse mail : "); 237 fgets(adresse, 256, stdin); 238 clean(adresse); 239 printf("le titre professionnel : "); 240 fgets(titre, 256, stdin); 241 clean(titre); 242 c=creercontact(nom,num,adresse,titre); 243 l=inserercontact(c,l); 244 break; 245 case 4: printf("veuillez entrez les informations du contactà supprimer \n"); 246 printf("le nom : "); 247 fgets(nom, 256, stdin); 248 clean(nom); 249 printf("le numéro : "); 250 fgets(num, 256, stdin); 251 clean(num); 252 printf("l adresse mail : "); 253 fgets(adresse, 256, stdin); 254 clean(adresse); 255 printf("le titre professionnel : "); 256 fgets(titre, 256, stdin); 257 clean(titre); 258 c=creercontact(nom,num,adresse,titre); 259 l=supprimercontact(c,l); 260 break; 261 case 5: printf("veuillez entrez les informations du contacts à modifier 262 ainsi que les nouvelles informations \n"); 263 printf("le nom : "); 264 fgets(nom, 256, stdin); 265 clean(nom); 266 printf("le numéro : "); 267 fgets(num, 256, stdin); 5

6 268 clean(num); 269 printf("l adresse mail : "); 270 fgets(adresse, 256, stdin); 271 clean(adresse); 272 printf("le titre professionnel : "); 273 fgets(titre, 256, stdin); 274 clean(titre); 275 printf("le nouveau nom : "); 276 fgets(nouveau1, 256, stdin); 277 clean(nouveau1); 278 printf("le nouveau numéro de téléphone : "); 279 fgets(nouveau2, 256, stdin); 280 clean(nouveau2); 281 printf("la nouvelle adresse mail : "); 282 fgets(nouveau3, 256, stdin); 283 clean(nouveau3); 284 printf("le nouveau titre : "); 285 fgets(nouveau4, 256, stdin); 286 clean(nouveau4); 287 l=modifiercontact(nom,num,adresse,titre, 288 nouveau1,nouveau2,nouveau3,nouveau4,l); 289 break; 290 case 6: afficherlistecontacts(l); 291 break; 292 case 7: printf("veuillez saisir le nom et le numéro de téléphone 293 du contacte à chercher \n"); 294 fgets(nom, 256, stdin); 295 clean(nom); 296 fgets(num, 256, stdin); 297 clean(num); 298 ls *pt = cherchercontact(nom, num, l); 299 if (pt!= NULL){ 300 printf("recherche réussi, voici votre contacte \n"); 301 printf("nom = %s \nnum = %s \n = %s \nprofession = %s \n", 302 pt->c.nom,pt->c.num,pt->c.adresse,pt->c.titre); 303 } 304 else 305 printf("le contacte n existe pas \n!"); 306 break; 307 case 8: l = trier(l); 308 if (l->suiv == NULL) 309 printf("echec du trie, liste vide! \n"); 310 else 311 printf("trie réussi! \n"); 312 break; 313 default: printf("votre choix n est pas correcte!"); 314 break; } 317 affichermenu(); 318 scanf("%d",&j); 319 purger(); 320 system("clear"); 321 } 322 } Principale.c 1 #include "Liste.h" 2 3 int main (){ 4 5 ls *l = (ls*) malloc (sizeof(ls)); 6 l->suiv = NULL; 7 6

7 8 l=traitementmenu(l); 9 10 return 0; 11 } 7

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

Examen de Langage C Vendredi 2 Décembre 2011

Examen de Langage C Vendredi 2 Décembre 2011 Année 2011-2012 Examen de Langage C Vendredi 2 Décembre 2011 Promotion Guichet 1 ière année É. Salvat Modalités : Durée : 2 heures Seul document autorisé : carte de référence du C, pas de machine à calculer,

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

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

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

Rapport de TP sur le mini-serveur HTTP. Maxime Chambreuil - Sébastien Le Digabel

Rapport de TP sur le mini-serveur HTTP. Maxime Chambreuil - Sébastien Le Digabel Rapport de TP sur le mini-serveur HTTP Maxime Chambreuil - Sébastien Le Digabel 16 janvier 2003 Table des matières 1 Détails sur nos travaux 2 1.1 But du TP............................. 2 1.2 La fonction

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

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

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

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

I. Moniteur POP3 de emails en C

I. Moniteur POP3 de emails en C Année universitaire 2014/2015 Site : Luminy St-Charles St-Jérôme Cht-Gombert Aix-Montperrin Aubagne-SATIS Sujet de : 1 er semestre 2ème semestre Session 2 Examen de : L3 Code du module : SIN5U3 Calculatrices

Plus en détail

C Facile. Le langage C. louen@via.ecp.fr. Mardi 15 décembre 2009. Centrale Réseaux. C Facile. Valentin Roussellet (p2010) - louen@via.ecp.

C Facile. Le langage C. louen@via.ecp.fr. Mardi 15 décembre 2009. Centrale Réseaux. C Facile. Valentin Roussellet (p2010) - louen@via.ecp. Le langage C Centrale Réseaux Mardi 15 décembre 2009 Sommaire C quoi? Le C est un langage de programmation créé en 1974, pour écrire le système d exploitation UNIX. Depuis,il est devenu (avec ses variantes),

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

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

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

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

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

Algorithmique et structures de données II. Première partie. Séries des exercices. Page 1

Algorithmique et structures de données II. Première partie. Séries des exercices. Page 1 Première partie 1 Séries des exercices Page 1 Série1 : Les pointeurs Exercice1: Analyser le programme suivant: void main() int a[10], *pa, x; a[0] = 11; a[1] =22; a[2] = 33; a[3] = 44; pa = &a[0]; x =

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

Traducteur mot à mot

Traducteur mot à mot Traducteur mot à mot CORRECTION Ce document, ainsi que le programme C et un exemple de programme trad-fr-us, peut être trouvé en ligne à l'addresse suivante : http ://www.lifl.fr/hauspie/hauspie/teaching.

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

Langage C Avancé. Solutions des Travaux Pratiques : Préparé par : Abdelmajid Dargham 1. Version : Mai 2014

Langage C Avancé. Solutions des Travaux Pratiques : Préparé par : Abdelmajid Dargham 1. Version : Mai 2014 Solutions des Travaux Pratiques : Langage C Avancé Préparé par : Abdelmajid Dargham 1 Version : Mai 2014 1 Enseignant-chercheur à la Faculté des Sciences, Oujda 2 Exercice 1 Solutons des exercices de la

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

10 Test d assimilation des connaissances

10 Test d assimilation des connaissances 10 Test d assimilation des connaissances Vous allez être placé dans les conditions d un programmeur et non d un analysteprogrammeur. Ceci signifie que presque tous les algorithmes dont vous aurez besoin

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

LANGAGE C. Exercices corrigés 1

LANGAGE C. Exercices corrigés 1 LANGAGE C Exercices corrigés 1 TP1 Exercice 1 : Ecrire un programme qui lit un caractère au clavier et affiche le caractère ainsi que son code numérique en employant getchar et printf, int C ; printf("introduire

Plus en détail

UML. Gestion d un distributeur de carburant. Mini Projet. Université Paul Sabatier. Gary LAGIN

UML. Gestion d un distributeur de carburant. Mini Projet. Université Paul Sabatier. Gary LAGIN UML Mini Projet Gestion d un distributeur de carburant Université Paul Sabatier Année 2008-2009 Pierre-Alexandre GAUTIER Gary LAGIN Sommaire Introduction...3 Cahier des charges...4 Analyse...5. Définition

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

17 février 2009. 1. Ecrire un programme qui affiche la sortie suivante :

17 février 2009. 1. Ecrire un programme qui affiche la sortie suivante : Université Paris 13 Institut Galilée Année universitaire 2008 2009 L1 Informatique Exercices corrigés Exercices corrigés 17 février 2009 Dans chaque exercice nous proposons un programme toujours structuré

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

Algorithmique et Structures de Données

Algorithmique et Structures de Données Plan du cours Algorithmique et Structures de Données Akkouche Samir : E-mail : samir.akkouche@liris.cnrs.fr Knibbe Carole: E-mail : carole.knibbe@univ-lyon1.fr 1. Rappels 2. Tableaux dynamiques a. Introduction

Plus en détail

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail Finalités Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail Réalisé par sa modestie Arnaud de VILLEDON de NAIDE, le 9 mars 2013 Document sous licence GPL. Vous avez le droit d'en faire

Plus en détail

IX- Quelques exercices d examen

IX- Quelques exercices d examen 1 IX- Quelques exercices d examen I- Elagage On dispose d un tableau a[n] dont chaque case contient un nombre. Certains de ces nombres sont des 0. Sans utiliser d autre tableau (mais en désespoir de cause

Plus en détail

Environnement algorithmique et conventions

Environnement algorithmique et conventions 1 Environnement algorithmique et conventions Un algorithme est un maillon de la chaîne de développement d une application. Il est le lien indispensable entre l analyse et le développement final. Ce chapitre

Plus en détail

Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2)

Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2) INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2) Département de génie informatique et génie logiciel Hiver 2014 Exemple 1 : Espace virtuel d un processus Où seront stockées les données des variables

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en dé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

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

RECURSIVITE ARBRES BINAIRES

RECURSIVITE ARBRES BINAIRES RECURSIVITE ARBRES BINAIRES Insertion, Parcours pré, post et in ordre, Recherche, Suppression. Ch. PAUL Algorithmique Arbres binaires 1 ARBRE BINAIRE DEFINITION RECURSIVE Les arbres binaires sont des arbres

Plus en détail

#include #include struct cell { int clef; struct cell *suiv; };

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; }; #include #include struct cell int clef; struct cell suiv; ; / longueur. pc->suiv est l abréviation de (pc).suiv. pour cette fonction comme pour les suivantes, on donne, lorsqu il existe

Plus en détail

Projet langage C : Le Compte Est Bon

Projet langage C : Le Compte Est Bon BERHAULT Guillaume / BERICHON Richard BERNARD François BENCHEKROUN Tarik Projet langage C : Le Compte Est Bon Le Compte Est Bon BERHAULT/BERICHON BERNARD/BENCHEKROUN 1 SOMMAIRE I. Présentationdu projet

Plus en détail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

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

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

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 6 : Tubes anonymes et nommés

Cours 6 : Tubes anonymes et nommés Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels

Plus en détail

Fonctions ne renvoyant pas de valeur ==========================================

Fonctions ne renvoyant pas de valeur ========================================== IUT-UMLV :: DUT - INFO :: 1ère Année (2012-2013) Programmation en Langage C :: Corrigé du TD N 3 =================================================================================================== Fonctions

Plus en détail

Structures de données

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

Plus en détail

3IS - Système d'exploitation linux - Threads

3IS - Système d'exploitation linux - Threads 3IS - Système d'exploitation linux - Threads 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Qu'est-ce qu'un thread? ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET

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

Contents. 3 Tableaux à la Picasso 13

Contents. 3 Tableaux à la Picasso 13 . C quoi le C? Contents 1 Les bases 2 1.1 Jeux de main..................................... 2 1.1.1 Kézako?................................. 2 1.1.2 Commençons par le début........................ 3 1.1.3

Plus en détail

Arbres binaires en représentation chaînée

Arbres binaires en représentation chaînée Arbres binaires en représentation chaînée Construction Libération Opérations diverses 17/01/06 Bac2 - JMD - ArbrBin.ppt 1 Arbre n-aire Arbre binaire a b c d e f arbre n-aire e b a c f d arbre binaire 17/01/06

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

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

Les fichiers. Chapitre 4

Les fichiers. Chapitre 4 Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,

Plus en détail

LO41 A06 Projet 7 Montre digitale

LO41 A06 Projet 7 Montre digitale LO41 A06 Projet 7 Montre digitale Binôme : Haffner Alexandre Monneret Nicolas Enoncé : Il s agit de simuler le fonctionnement d une montre digitale comprenant une horloge interne, mise à jour périodiquement

Plus en détail

Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence : Creative Commons BY-NC-SA 2.0 La copie de cet ouvrage est autorisée

Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence : Creative Commons BY-NC-SA 2.0 La copie de cet ouvrage est autorisée Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence : Creative Commons BY-NC-SA 2.0 La copie de cet ouvrage est autorisée sous réserve du respect des conditions de la licence Texte

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

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE Question 1 : Un paquet ou trame comprend : A - uniquement des données utilisateur B - un en-tête et des données C - des unités de transmission de taille fixe

Plus en détail

I. La sécurité des mots de passe sous Linux : la fonction crypt

I. La sécurité des mots de passe sous Linux : la fonction crypt Sécurité GNU/Linux La fonction crypt By sharevb Sommaire I.La sécurité des mots de passe sous Linux : la fonction crypt...1 a)description...1 b)types de cryptages...1 c)prototype C...2 II.De la sécurité

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

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Communications entre Processus Communication par tubes. TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Exemple 1: On a deux processus Père/Fils. Le père

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

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

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

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

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

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

Programmation Par Objets et Langage Java

Programmation Par Objets et Langage Java Programmation Par Objets et Langage Java Partie I. Fondement de la POO (Modularité/Abstraction) Najib Tounsi Ecole Mohammadia d'ingénieurs, Rabat Année 2011/2012 1ère année Génie Informatique http://www.emi.ac.ma/ntounsi/cours/java/poojavapart-1.pdf

Plus en détail

amsi@ai.univ-paris8.fr

amsi@ai.univ-paris8.fr 1 #ifndef TOOLS_H 3 #define TOOLS_H 4 typedef struct node_t { 6 int id; 7 struct node_t * fg, *fd; 8 } node_t; 9 #define N 6 10 #define MAX(a, b) ((a) > (b)? (a) : (b)) 11 1 extern void push(node_t * v);

Plus en détail

Introduction à Lex et Yacc

Introduction à Lex et Yacc Introduction à Lex et Yacc H. Cassé, M. Couzinier, M. Strecker Année 2004/2005 1. L analyseur lexical Lex 2. L analyseur syntaxique Yacc 3. La coordination de Lex et Yacc 1 Processus de compilation programme

Plus en détail

Algorithmique IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

Plus en détail

Réseau et Communication Notes de Cours/TD/TP autorisées; autres documents, calculettes, ordinateurs interdits.

Réseau et Communication Notes de Cours/TD/TP autorisées; autres documents, calculettes, ordinateurs interdits. Département d Informatique Faculté des Sciences de Luminy Réseau et Communication Vendredi 11 mai 2012 Durée 3h Licence MI, UE INF15, E. Thiel Notes de Cours/TD/TP autorisées; autres documents, calculettes,

Plus en détail

Vous pouvez vous aider du programme suivant :

Vous pouvez vous aider du programme suivant : TP MULTITÂCHE DÉCOUVERTE DES MUTEX ET DES SEMAPHORES Exercice 1 Exclusion mutuelle : Mutex Ecrire un programme qui permet à 5 threads d'écrire un message complet à l'écran (par exemple "Message du thread

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud Mai 2012 Yann Thoma (HES-SO / HEIG-VD

Plus en détail

Projet UML. Gestion d'un distributeur de carburant. BOUSQUET Nicolas GAYRARD Jérémy

Projet UML. Gestion d'un distributeur de carburant. BOUSQUET Nicolas GAYRARD Jérémy Projet UML Gestion d'un distributeur de carburant BOUSQUET Nicolas GAYRARD Jérémy Présentation : Étude préliminaire Définir les besoins : 3:*gérer listes abonnés 2:*gérer les prix 1:*gérer les pompes 1:*Distribuer

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

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

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

Enseignants : Antoine Cornuéjols et Liliana Inanescu. Ce document peut être utilisé à des fins personnelles sans aucune restriction.

Enseignants : Antoine Cornuéjols et Liliana Inanescu. Ce document peut être utilisé à des fins personnelles sans aucune restriction. MAP C Programmer en C. Application à des données expérimentales en biologie MAP C 2006/07 Enseignants : Antoine Cornuéjols et Liliana Inanescu Le présent support de cours a été réalisé par Juliette Dibie-Barthélémy

Plus en détail

Programmation Avancée en Langage C Séances de Travaux-Pratiques

Programmation Avancée en Langage C Séances de Travaux-Pratiques Programmation Avancée en Langage C Séances de Travaux-Pratiques Ph. Langevin Année Universitaire 2010 Contents 1 Préambule 2 2 Commandes de base 2 2.1 man................................ 2 2.2 Recherche.............................

Plus en détail

- c=1 : en effet, on passe l adresse de c et non la valeur. */ void somme(int x, int y, int S) { S=x+y; void produit(int x, int y) {

- c=1 : en effet, on passe l adresse de c et non la valeur. */ void somme(int x, int y, int S) { S=x+y; void produit(int x, int y) { Université Mohamed 1 er Année 2011/2012 Ecole Nationale des Sciences Appliquées Filière STPI Oujda Niveau CP2, Semestre 1 Prof. E.M. DAOUDI Cours programmation en Langage C Liste d exercices avec correction

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

Département de génie informatique et génie logiciel

Département de génie informatique et génie logiciel INF2610 Chapitre 2 : Processus Département de génie informatique et génie logiciel Hiver 2014 Chapitre 2 - Processus Qu est ce qu un processus? États d un processus Hiérarchie des processus Processus UNIX-Linux

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

Travaux Dirigés de langage C - DUT 1 ere année. Copyright c Jean-François Mari

Travaux Dirigés de langage C - DUT 1 ere année. Copyright c Jean-François Mari Travaux Dirigés de langage C - DUT 1 ere année Copyright c Jean-François Mari Chapitre 1 Syntaxe de base 1.1 Test d un générateur de nombre aléatoire La bibliothèque standard du langage C offre au programmeur

Plus en détail

4 Le graphisme (2 nde partie)

4 Le graphisme (2 nde partie) 4 Le graphisme (2 nde partie) 4.1 Valeur de retour de la fonction main () La fonction main peut être déclarée avec une valeur de retour : ou sans: void main () Le choix entre ces deux façons réside dans

Plus en détail

1 Le Parking revisité

1 Le Parking revisité Module I6 - Manipulation de threads II 13 décembre 2012 1 Le Parking revisité Une société de gestion de parkings de voitures souhaite mettre en place un système automatique d affichage en temps réel de

Plus en détail

Ce qu il faut savoir : Comprendre les termes utilisés en programmation. Avoir des bonnes notions en programmation, notamment en C.

Ce qu il faut savoir : Comprendre les termes utilisés en programmation. Avoir des bonnes notions en programmation, notamment en C. SQAM Complexité et qualité Comment mesurer la complexité d un logiciel La complexité de code est un facteur ayant un impact direct sur la durée de vie et l exploitation d un logiciel, notamment sur son

Plus en détail

Université Paris 7 Denis Diderot Introduction à l informatique et à la programmation (IF1) Corrigé de l examen du 6 janvier 2009

Université Paris 7 Denis Diderot Introduction à l informatique et à la programmation (IF1) Corrigé de l examen du 6 janvier 2009 Exercice 1. Université Paris 7 Denis Diderot Introduction à l informatique et à la programmation (IF1) Corrigé de l examen du 6 janvier 2009 1.1. Pour répondre à la question, nous avons regroupé dans une

Plus en détail

communication interprocessus

communication interprocessus communication interprocessus Novembre 2008 On examine deux autres moyens de communication interprocessus offerts par les systèmes autres que les tubes : file de message, mémoire partagés. Un dernier moyen

Plus en détail

Programmation en langage C

Programmation en langage C Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des

Plus en détail

Résolution d exercices avec Visual Studio

Résolution d exercices avec Visual Studio Résolution d exercices avec Visual Studio Document rédigé par David Taralla 3 e Bachelier en Sciences Informatiques david.taralla@student.ulg.ac.be Dernière version : 7 novembre 2011 Préambule Ce petit

Plus en détail

UE1 : Architecture. Travaux Dirigés. Programmation de la liaison série. A. Programmation au niveau du composant

UE1 : Architecture. Travaux Dirigés. Programmation de la liaison série. A. Programmation au niveau du composant Licence Pro SIRI Année 2010 2011 UE1 : Architecture Travaux Dirigés Programmation de la liaison série A. Programmation au niveau du composant 1. Définition des adresses des différents registres Si l adresse

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