L1 Informatique Université Paris Programmation Impérative I Rim Chaabane - Cours 6 - Les pointeurs

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcription

1 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 des adresses mémoires. Les pointeurs sont fortement typés, par exemple nous ne pouvons pas placer des caractères dans l adresse mémoire pointée par un pointeur de type entier. L utilisation de l opérateur cast peut toutefois autoriser certaines conversions. Il nous est possible effectuer, dans une certaine mesure, des opérations arithmétiques sur les pointeurs : incrémentation, décrémentation, soustraction. Ces opérations vont plus loin qu un simple calcul d adresse, elles prennent en compte la taille des objets pointés. Nous verrons également qu il y a une étroite relation entre la notion de tableau et celle de pointeur. 1. La notion de pointeur La déclaration suivante : int *adr ; Précise que adr est une variable de type pointeur sur des objets de type int Attribuer une valeur à une variable de type pointeur Etant donné que la variable adr n a pas encore été initialisées, alors sa valeur est pour l instant indéfinie. Pour attribuer une valeur à adr, il faut la faire pointer sur un entier précis. Pour faire cela il existe différentes méthodes : Méthode 1 : int n ; adr = &n ; ou int tab[3] ; adr = &tab[0] ; 1

2 Méthode 3 : #include <stdlib.h> Adr = (int) malloc( sizeof(int) ); La première méthode consiste à affecter à adr l adresse réservée à la variable n ou à l élément d indice 0 du tableau d entiers tab[0]. La seconde méthode consiste à allouer dynamiquement un emplacement mémoire d une taille égale au type qui y sera stocké L opérateur * Cet opérateur sert à accéder à la valeur de l objet pointé. Si adr est un pointeur alors *adr est l objet pointé par adr. Exemple : int * adr; int n = 20; ad = &n; /*ad pointe sur l'entier n qui contient la valeur 20 */ printf("%d", *ad); /*affiche la valeur de 20 */ *ad = 30; printf("%d", *ad); /*affiche la valeur de 30 */ printf("%d", n); /* affiche la valeur de 30 aussi */ L avant dernière instruction est équivalente à : n = 30; L intérêt d une telle utilisation peut s avérer utile, comme dans le cas suivant :... if (n>p) adr = &n; else adr = &p;... *adr = 30; /* place la valeur de 30 dans n ou dans p suivant le cas */ Si l emplacement adr avait été alloué dynamiquement alors l on pourrait affecter une valeur à l adresse mémoire réservée de la même façon : adr = malloc(sizeof(int)) ; *adr = 30; 1.3. Exemples de déclarations de pointeurs Déclaration de pointeurs sur des objets de type de base ou de type structure, ou défini par typedef. 2

3 unsigned int n, *ptr, q, *adr; struct point { char nom; int x, y; }; - adr et ptr sont des pointeurs sur des éléments de type unsigned int - Il est nécéssaire de répéter le symbole * dans chaque déclarateur de pointeur. - ps est un pointeur sur des structures de type struct point. - s est une structure de type struct point. struct point *ps, s; typedef int vecteur[3]; vecteur *pv; - vecteur est synonyme de int[3] - pv est un pointeur sur des tableaux de 3 int pointeur de pointeur float x, *pf, **ppf; - x est un float et pf est un pointeur sur un float - **ppf est un float - *ppf est un pointeur sur un float - ppf est un pointeur sur un pointeur sur un float int (**chose)[10]; - (* *chose)[10] est un int - (* *chose) est un tableau de 10 int - *chose est un pointeur sur un tableau de 10 int - chose est un pointeur de pointeur sur un tableau de 10 int Attention à bien mettre les parenthèses ici. Sans les parenthèses l interprétation est différente comme nous pouvons le voir dans la suite. int *pt[10]; - *pt[10] est un int - pt[10] est un pointeur sur un int - pt est un tableau de 10 pointeurs sur un int int **ppt[10]; - **ppt[10] est un int - *ppt[10] est un pointeur sur un int - ppt[10] est un pointeur sur un pointeur sur un int - ppt est un tableau de 10 pointeurs sur un pointeur sur un int int *f(float x); - *f(float x) est un int - f(float x) est un pointeur sur un int - f est une fonction recevant un float et retournant un pointeur sur un int 2. Les propriétés des pointeurs 2.1. Opérations entre pointeurs Addition ou soustraction d un entier à un pointeur : Si nous déclarons un pointeur comme ci-dessous : int * adr; 3

4 alors l expression adr + 1 va retourner un pointeur sur un int et sa valeur est l adresse de l entier suivant l entier pointé par adr. On pourra relever que la différence entre l adresse de pn et pn+1 est de 4. Cette valeur correspond au nombre d octets d un int. pn + 1 ne modifie pas le contenu de pn. Par contre l appel à pn++ va faire pointer pn vers l adresse (pn+1) et dans ce cas le contenu de pn vas changer. De la même façon : pn+3 permet de pointer sur un int qui se troive trois adresses plus loin que celle contenue dans pn. Donc attention à l emploi de cette opération!! /!\ pn++!= (pn+1) Soustraction entre deux pointeurs : Il est possible de soustraire les valeurs de deux pointeurs de même type. Comme nous l avons vu précédemment, en additionnant un entier n à un pointeur pn cela nous positionne sur la nième adresse devant pn. Soit par exemple les pointeurs suivants : int *pn, *pm; pm = pn + 4; printf("%d", pn - pm); /* va afficher 4 */ pm pn va retourner 4 qui correspond au nombres d adresses mémoires contenant un int entre pm et pn. De même dans le cas suivant : int t[10]; int *pn = &t[3]; int *pm = &t[8]; pm - pn /* va retourner 5 */ Il y a bien 5 éléments de type int séparant t[3] et t[8]. 4

5 2.2. Lien entre pointeurs et tableaux Tableau à une dimension : Soit un tableau tab de int et un pointeur pn sur un int déclarés comme suit : int tab[10], *pn; Pour accéder au nième élément du tableau, on fait appel à tab[n]. Maintenant faisons pointer pn sur le premier élément du tableau tab : pn = &tab[0]; /* ou pn = &tab; ce qui est équivalent */ Pour accéder au nième élément du tableau, il suffit d écrire : tab[n] ou *(pn + n) Exemple : int *pn, tab[5]={4,2,7,0,6}; printf("%d\n", tab[3]); /* affiche 0 */ pn = &tab; printf("%d\n", *(pn+3)); /* affiche 0 aussi */ Ainsi, déclarer un tableau revient à déclarer un pointeur sur un int. Comme nous venons de voir pour accéder au nième élément du tableau : - soit nous faisons appel au pointeur pn : *(pn+3) - soit nous utilisons les indices du tableau : tab[n] - soit nous utilisons directement le tableau comme un pointeur : *(tab+3) Donc t[i] est équivalent à *(t+i). De même *(pn+i) équivaut à pn[i] même si pn est de type pointeur il nous est possible d accéder au i ème élément de même type avec l emploi des indices, tout comme pour les tableaux. Tableau à deux dimensions : L expression t[i][j] s interprète comme (t[i])[j], ce qui peut se traduire par : T[j] <-> *(T+j) <-> *( *(t+i) +j) Pour résumer, nous avons : &t[0] <-> t &t[i] <-> t+i t[1] <-> *(t+1) t[i] <-> *(t+i) t[i][0] <-> *t[i] <-> **(t+i) t[i][j] <-> (t[i])[j] <-> ( *(t+i))[j] <-> *( *(t+i) + j) 5

6 3. Le pointeur NULL et le pointeur générique void * Le pointeur NULL : Le symbole NULL du langage C permet d initialiser un pointeur qui ne pointe sur rien. Cette valeur NULL peut être affectée à tout pointeur quel que soit sont type. Ce symbole est défini dans les librairies stdio.h, stdlib.h. int *pn = NULL ; En utilisant le pointeur NULL, cela nous permet alors de comparer si deux pointeurs sont égaux (opérateur ==) ou non égaux (!=) entre eux. Par contre les comparaisons d inégalité (<,>,>=, >=) ne sont pas autorisés avec les pointeurs sauf si l on manipule des tableaux. Dès que l on déclare une variable de type pointeur, il est préférable de l initialiser à NULL, surtout dans le cas oùu l on ne connait pas sa valeur initiale au début du programme. Au moment d utiliser un pointeur, il est préférable de tester si sa valeur est bien non nulle : if(pn!= NULL) *pn =... Equivalent à : if(pn) *pn =... Cela s avèrera utile pour la gestion des listes chaînées. Le pointeur générique : Nous avons vu jusqu à maintenant qu un pointeur pointe sur un objet typé. Or il est possible de déclarer un pointeur sans type. Comme pour les déclarations de fonction, il nous est possible de déclarer des fonctions sans type. Particulièrement lorsqu elles ne renvoient aucun résultat. Il nous est donc aussi possible de déclarer des pointeurs sans type particulier. Dans ce cas ce sera l adresse contenu dans le pointeur qui aura un sens. Ceci est particulièrement utile lorsque : - Une fonction doit traiter des objets de différents types, alors qu elle a reçu l adresse de l objet en argument. - L on souhaite seulement échanger les valeurs de deux pointeurs. Un pointeur de type générique se déclare comme suit : void * pn; void *pn, *pm, n; /* incorrect, n ne peut être de type void*/ pn++; /* interdit */ pn = pn + 5; /* l'expression p + 5 est interdite */ int i = pm - pn; /* l'expression pm -pn est interdite */ int *pi; if (pn!= pi) /* correct */ if (pn == pi) /* correct */ 6

7 4. Le cast d un pointeur Exemple : char * pc ; int * pi ; pi= (int *) pc ; ou pc = (char *) pi ; 7

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

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

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

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

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

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

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

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

Structures de Données et Algorithmes

Structures de Données et Algorithmes Structures de Données et Algorithmes Révision: structures de base en C Nadi Tomeh nadi.tomeh@lipn.univ-paris13.fr Licence 2 Informatique Institut Galilée, Université Paris 13, Sorbonne Paris Cité 18 septembre

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

1 Pointeurs, références, alias et tableaux

1 Pointeurs, références, alias et tableaux 1 Pointeurs, références, alias et tableaux 1 1.1 Définitions Un pointeur est une variable contenant l'adresse d'un objet en mémoire. Un pointeur est déni par le couple (type, adresse) de l'objet pointé.

Plus en détail

Complément du cours Langage C

Complément du cours Langage C Complément du cours Langage C Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2013/2014 2013/2014 Pr. Ben Mamoun 1 Chapitre 9 Types structures, unions

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

Cours Langage C/C++ Mémoire et allocation dynamique

Cours Langage C/C++ Mémoire et allocation dynamique Cours Langage C/C++ Mémoire et allocation dynamique Thierry Vaira BTS IRIS Avignon tvaira@free.fr v0.1 La pile et le tas La mémoire La mémoire dans un ordinateur est une succession d octets (soit 8 bits),

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

Pointeurs et tableaux

Pointeurs et tableaux Pointeurs et tableaux Pointeur Tout mot (octet) de la mémoire est identifié par un numéro unique : son adresse mémoire On peut donc identifier toute zone mémoire servant au stockage d une variable par

Plus en détail

Systèmes Informatiques TD 1: langage C entrées/sorties et la fonction main()

Systèmes Informatiques TD 1: langage C entrées/sorties et la fonction main() Systèmes Informatiques TD 1: langage C entrées/sorties et la fonction main() P. Bakowski bako@ieee.org Fonctions printf() et scanf() Les programmes en langages C ont besoin des fonctions qui permettent

Plus en détail

CHAPITRE 6 : Tableaux. Définition. Tableaux à une dimension (Vecteurs)

CHAPITRE 6 : Tableaux. Définition. Tableaux à une dimension (Vecteurs) Année Universitaire 2006/2007 CHAPITRE 6 : Tableaux Définition Tableaux à une dimension (Vecteurs) Déclaration ; Mémorisation M ; Tableaux à plusieurs dimensions Déclaration Tableaux à deux dimensions

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

Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice)

Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice) Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice) #include #include #define NDIM1 3 #define NDIM2 5 // pour printf, puts, putchar // pour malloc, free // par

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

Fonctions et procédures. Procedures: déclaration et appel

Fonctions et procédures. Procedures: déclaration et appel Cours 5 : fonctions, procédures, passage des paramètres 1 Fonctions et procédures Idée : capitaliser sur le code déjà écrit pour introduire des nouvelles commandes et opérations. On souhaite donner un

Plus en détail

COURSC 1. Langage C. Support de cours. Patrick Corde. Messagerie : corde@idris.fr

COURSC 1. Langage C. Support de cours. Patrick Corde. Messagerie : corde@idris.fr COURSC 1 Langage C Support de cours Messagerie : corde@idris.fr Liste des transparents 2 1 Présentation du langage C......... 7 1.1 Historique................ 8 1.2 Intérêts du langage............ 10 1.3

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

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

liblapin Documentation

liblapin Documentation liblapin Documentation Version 1.5 The liblapin Hackers 27 November 2015 Table des matières 1 Introduction 1 1.1 Exemples................................................. 1 2 Installation 3 2.1 Téléchargement.............................................

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

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

Obert Hervé Stumpf Mathieu Licence 3 RIA. Réseaux & Protocoles. Client pair-à-pair. Projet L3 RIA 2005-2006 Sommaire.

Obert Hervé Stumpf Mathieu Licence 3 RIA. Réseaux & Protocoles. Client pair-à-pair. Projet L3 RIA 2005-2006 Sommaire. Obert Hervé Stumpf Mathieu Licence 3 RIA Réseaux & Protocoles Client pair-à-pair Projet L3 RIA 2005-2006 Sommaire Page 1 sur 10 Introduction - Présentation du projet 3 Fonctionnement coté graine 4 Fonctionnement

Plus en détail

TP Interface graphique et C++ numéro 1

TP Interface graphique et C++ numéro 1 TP Interface graphique et C++ numéro 1 Master IGC - 1 re année année 2010-2011 Ce premier TP a pour objectif de vous familiariser avec le compilateur C++, les entréessorties du langage et l utilisation

Plus en détail

Tableaux et manipulation d images «bitmap»

Tableaux et manipulation d images «bitmap» T.P. numéro VII Tableaux et manipulation d images «bitmap» Ce T.P. va faire intervenir les notions suivantes : lecture/écriture de fichiers binaires ; images bitmap ; tableaux de données. 1 Fichiers binaires

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

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Fiche de révisions - Algorithmique

Fiche de révisions - Algorithmique Fiche de révisions - Algorithmique Rédigé par : Jimmy Paquereau 1. Généralités Algorithme : un algorithme est la description d une procédure à suivre afin de résoudre un problème donné. Il n est pas nécessairement

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

Cours d informatique. 1 ère année 2014 2015

Cours d informatique. 1 ère année 2014 2015 Cours d informatique en Langage C è 1 ère année 2014 2015 L informatique à l IOGS 1A : Langage C : apprentissage d un langage de programmation structuré 3 séances Matlab : analyse numérique 2A : Langage

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

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

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

Algorithmique et programmation : les bases (C) Corrigé

Algorithmique et programmation : les bases (C) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours C, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage C des éléments vus en algorithmique. Table des matières 1 Pourquoi

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

Tableaux dynamiques avec vector

Tableaux dynamiques avec vector Tableaux dynamiques avec vector Tableaux statiques Les tableaux que nous avons vus jusqu'ici sont des tableaux statiques: int tab[3]; Cette forme de tableaux vient du langage C, et est encore très utilisée.

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

Entrée et sortie standards (stdin,stdout et cin,cout)

Entrée et sortie standards (stdin,stdout et cin,cout) Chapitre 4 Entrée et sortie standards (stdin,stdout et cin,cout) Pour réaliser les opérations élémentaires d écriture sur l écran ou de lecture des informations du clavier, le C utilise un ensemble de

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

Petit manuel de survie pour C++

Petit manuel de survie pour C++ Département d Informatique ENS de Cachan Petit manuel de survie pour C++ François Laroussinie fl@lsv.ens-cachan.fr Année 2004-2005 Petit manuel de survie pour C++ à compléter avec les précieux commentaires

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

Allocation dynamique en c++

Allocation dynamique en c++ Allocation dynamique en c++ *tableau; tableau * tableau = tableau = new [ no_max ]; tableau = new * [ no_max ] tableau[i] = new int[ 5 ]; tableau tableau[i] = new int[5]; * tableau[0] int int int int int

Plus en détail

I. Introduction à MATLAB

I. Introduction à MATLAB 1. Introduction Le nom MATLAB est la contraction du terme anglais matrix laboratory [1]. Ce logiciel est spécialement conçu pour le calcul scientifique et la manipulation de vecteurs et de matrices. Le

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

Variables, types simples, expressions et instructions simples

Variables, types simples, expressions et instructions simples 2.2 - Chap. 05 Variables, types simples, expressions et instructions simples 1 / 5 Variables, types simples, expressions et instructions simples 1 Variable de types simples 1.1 Notion de variable Une variable

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

Chap. X : Ordonnancement

Chap. X : Ordonnancement UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Le compilateur sépare les différents objets apparaissant dans un programme dans des zones mémoires (code, données, librairies,

Plus en détail

Introduction à Matlab

Introduction à Matlab Introduction à Matlab Nicolas Kielbasiewicz 30 juillet 2007 Matlab est un logiciel payant développé par MathWorks sous Windows, Linux et Mac, et dédié au calcul numérique, ainsi qu au problèmes de commande.

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

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

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

Tableaux et boucle For

Tableaux et boucle For Tableaux et boucle For Pierre-Alain FOUQUE Département d Informatique École normale supérieure Plan 1 -Tableaux 2 -Boucles for 3 -Paramètres sur la ligne de commande 2 Limite des types de base Définir

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

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

NFA032 Programmation objet avec Java

NFA032 Programmation objet avec Java NFA032 Programmation objet avec Java CNAM-Paris-Île-de-France Première session 2013 (sujet bis) Documents et calculatrice interdits. Le barème est donné à titre indicatif. Exercice 1 : programmation objet

Plus en détail

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre.

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre. Cours C++ Définition : Le langage C est un langage de programmation inventé par MM. Kernighan et Ritchie au début des années 70. Au début des années 90, Bjarne Stroustrup fait évoluer le langage vers le

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

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

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

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

Petit résumé pour IFT1166

Petit résumé pour IFT1166 Petit résumé pour IFT1166 C est un langage populaire (cours IFT 1810, IFT 1160). JAVA (IFT 1870, IFT 1170, IFT 1176) utilise surtout la syntaxe du C++. De plus, Java est un langage purement orienté objet.

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

FILIÈRE MP - OPTION SCIENCES INDUSTRIELLES

FILIÈRE MP - OPTION SCIENCES INDUSTRIELLES ÉCOLE POLYTECHNIQUE ÉCOLE SUPÉRIEURE DE PHYSIQUE ETCHIMIEINDUSTRIELLES CONCOURS 2002 FILIÈRE MP - OPTION SCIENCES INDUSTRIELLES FILIÈRE PC ÉPREUVE FACULTATIVE D INFORMATIQUE (Durée : 2 heures) L utilisation

Plus en détail

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images PROJET C : Traitement d images 1 SOMMAIRE 1) Schéma et structure a) Schéma de la structure b) Les structures utilisées La structure image La structure calque La structure LUT La structure Historique et

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

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

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

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

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

Introduction au langage

Introduction au langage Introduction au langage Un langage de programmation : de haut niveau interprété orienté objet si on le souhaite rapide à écrire et proche du pseudo-code simple tant qu on fait des choses simples Un programme

Plus en détail

Génie Logiciel I. Cours VII - La S.T.L. et les conteneurs. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09

Génie Logiciel I. Cours VII - La S.T.L. et les conteneurs. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Génie Logiciel I Cours VII - La S.T.L. et les conteneurs Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie

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

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

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

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

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

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

Représentation de. IFT 2030, v 1.0 Université de Montréal Représentation de données 1

Représentation de. IFT 2030, v 1.0 Université de Montréal Représentation de données 1 Représentation de données Université de Montréal Représentation de données 1 Donnée et représentation Distinguer entre objet et représentation : - Objet = donnée du point de vue de l application - Représentation

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

TP Qt : Prise en main

TP Qt : Prise en main Université de Strasbourg UFR de Mathématiques et d Informatique Département d Informatique Licence 3 d Informatique IHM Année 2009/2010 TP Qt : Prise en main Objectif Le but de ce tp est une prise en main

Plus en détail

La programmation modulaire et les fonctions

La programmation modulaire et les fonctions Chapitre 6 La programmation modulaire et les fonctions Comme tous les langages, C permet de découper un programme en plusieurs parties nommées souvent «modules». Cette programmation dite modulaire se justifie

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

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

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

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

Logiciel de Base : examen de première session

Logiciel de Base : examen de première session Logiciel de Base : examen de première session ENSIMAG 1A Année scolaire 2008 2009 Consignes générales : Durée : 2h. Tous documents et calculatrices autorisés. Le barème est donné à titre indicatif. Les

Plus en détail

Tableaux. Tableaux en Java (introduction)

Tableaux. Tableaux en Java (introduction) en Java (introduction) Avertissement : ce cours ne présente qu une version «édulcorée» des tableaux. Ne sont abordés que les tableaux de types primitifs et tous les aspects «objets» sont masqués. Philippe

Plus en détail

MÉRÉ Aurélien FIIFO1. Pathfinder

MÉRÉ Aurélien FIIFO1. Pathfinder MÉRÉ Aurélien FIIFO1 AMC Pathfinder 1 Sommaire Préambule... 3 Modélisation de l espace... 4 Modélisation des cases δ, α... 4 Interface en mode texte... 5 Modélisation du robot... 8 1 ) Le type Robot...

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

[Tutoriel : Interfaçage Visual Studio (C#) -Excel]

[Tutoriel : Interfaçage Visual Studio (C#) -Excel] [Tutoriel : Interfaçage Visual Studio (C#) -Excel] Nicolas Chari, Thomas Dordonne, Aloys Fortier, Jonathan Zilmia [Tutoriel : Interfaçage Visual Studio (C#) -Excel] 2 TABLE DES MATIERES Introduction 4

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

4. Pointeurs et allocation dynamique. Définitions et déclarations Tableaux et pointeurs Structures Tableaux multidimensionnels

4. Pointeurs et allocation dynamique. Définitions et déclarations Tableaux et pointeurs Structures Tableaux multidimensionnels 1 4. Pointeurs et allocation dynamique Définitions et déclarations Tableaux et pointeurs Structures Tableaux multidimensionnels 2 Pointeurs Chaque variable a une adresse en mémoire qu il peut être utile

Plus en détail

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée Programmation C++ Le langage impératif Stéphane Vialette LIGM, Université Paris-Est Marne-la-Vallée 12 novembre 2012 Stéphane Vialette (LIGM UPEMLV) Programmation C++ 12 novembre 2012 1 / 67 C++ : chronologie

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