Méthode et Outils pour la Programmation

Slides:



Advertisements
Présentations similaires
Introduction. Les pointeurs Bête noir des programmeurs Pas daide de Visual Studio Sauf en utilisant les « break point » Pas toujours intuitif Facile de.
Advertisements

C++ 6ème cours Patrick Reuter maître de conférences
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
(Classes prédéfinies – API Java)
C.
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Chap. 1 Structures séquentielles : listes linéaires
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
8. Les tableaux P. Costamagna – ISEN N1.
Système d’exploitation : Assembleur
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Les pointeurs 1. Notion de pointeurs cest Travailler avec les pointeurs cest Se rapprocher du matériel Nécessite de bien connaitre le fonctionnement de.
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Le codage des nombres en informatique
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
8PRO100 Éléments de programmation Les types composés.
1-1 Chapitre 5: Les variables Introduction Les noms Les variables Les attributions (bindings) Portée et durée de vie L'environnement de référence Les noms.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-10541
Structures de données IFT-2000
Plan cours La notion de pointeur et d’adresse mémoire.
Types de données fondamentaux
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
4 Introduction des objets. Les chaînes et tableaux
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Un survol du language C.
Programmation Système et Réseau
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Patricia Renault UPMC 2005/2006
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Langage de Programmation Orientée Objet : C++
Exercices sur les pointeurs. lireCar/remettreCar Lorsque l’on lit caractère par caractère, on ne peut pas savoir qu’on a atteint un caractère avant de.
Objets et Actions Élémentaires.
Initiation aux bases de données et à la programmation événementielle
3ième Classe (Mardi, 23 Septembre) CSI2572. O jourd'8: E Allocation de mémoire E Déallocation de mémoire E Tableaux (n dimensions) E Arithmetique des.
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Transcription de la présentation:

Méthode et Outils pour la Programmation Gestion dynamique de la mémoire Licence informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Claude Daval-Frérot

Gestion dynamique de la mémoire Un modèle simplifié de la mémoire Gestion dynamique : intérêt Notion de pointeur Trace en mémoire sur des exemples Opérations sur les pointeur

LA MÉMOIRE EXECUTION LOGIQUE D ’UN PROGRAMME : On distingue trois parties : Code Pile Données implantées - en mémoire statique ou - en mémoire dynamique (le TAS)

LA MEMOIRE DESCRIPTION PHYSIQUE : Chaque emplacement mémoire est décrit par - Une adresse pour localiser son emplacement, - Un contenu (appelé une donnée) Adresse Contenu

MODELE SIMPLIFIE On simplifie les points suivants : Différents types de codage des données Le nombre d ’octets des données La localisation et les limites du TAS Les mécanismes de segmentation de la mémoire On considère la mémoire sous cette forme : Les données sont implantées en mémoire dans deux zones: - une zone mémoire statique - une zone mémoire dynamique (appelée TAS) Un emplacement mémoire est défini par : - une adresse - un contenu (donnée) - un identificateur

MÉMOIRE : LE MODÈLE S T A I Q U E Identificateur Adresse Contenu T A S

Mémoire statique (exemple) A S Identificateur Adresse Contenu 2 k 0100:0002 ? ‘d’ c[0] 0100:0003 ? c[1] 0100:0004 ? c[2] 0100:0005 ? int k; ‘u’ k=2; ‘\0’ lettre 0100:0006 ‘u’ char c[3]; char lettre=‘u‘; c[0]=‘d’; c[1]= lettre; c[2]= ‘\0’;

GESTION DYNAMIQUE INTÉRÊT : Disposer d ’emplacements en mémoire, utiles à une application, au fur et à mesure de l ’exécution d ’une application. Ainsi : plus besoin d ’anticiper sur la taille maximum d ’une collection. Exemple : char c [3]; //taille maximum de la chaîne = 2 En outre, le TAS est un espace mémoire plus grand que la zone statique.

GESTION DYNAMIQUE Gestion dynamique (au fur et à mesure …) : Deux instructions sont utiles: une, pour réserver (ou allouer) un emplacement mémoire dans le TAS une, pour libérer (désallouer) la mémoire : remettre la mémoire précédemment allouée à disposition du TAS new en C/C++ delete en C/C++

GESTION DYNAMIQUE Un pointeur est une variable Pour pouvoir effectuer les deux opérations : allouer et libérer un emplacement mémoire dans le TAS, il faut manipuler et donc désigner les emplacements mémoire. Or, à chaque emplacement mémoire est associé une adresse. On va donc manipuler des adresses. Un pointeur est une variable qui a pour valeur (contenu) l’adresse d ’un emplacement mémoire généralement issu du TAS

GESTION DYNAMIQUE - EXEMPLE int* ptr; Identif. Adresse Contenu Ptr est une variable (statique) de type pointeur sur int. Elle est non définie 0200:0004 ? 0200:0004 ptr 0100:0002 ? Ptr=new int; L ’instruction new retourne une adresse du TAS. Cette adresse(0200:0004) est affectée à ptr.

GESTION DYNAMIQUE - EXEMPLE ptr 0100:0002 ? 0200:0004 ? 0200:0004 Identif. Adresse Contenu int* ptr; Ptr=new int; *ptr est l ’identificateur de la valeur pointée par ptr. *ptr 4 *ptr = 4; Nous avons alloué un entier puis nous lui avons affecté la valeur 4

GESTION DYNAMIQUE - EXEMPLE ptr 0100:0002 ? 0200:0004 ? 0200:0004 Identif. Adresse Contenu *ptr 4 ? int* ptr; Ptr=new int; *ptr = 4; delete ptr; On n ’a plus besoin de l ’entier alloué. On remet la mémoire précédemment allouée, à disposition du tas.

AFFECTATION DE POINTEURS ptr 0100:0002 ? 0200:0004 ? 0200:0004 Identif. Adresse Contenu *ptr 4 int* ptr; Ptr=new int; *ptr = 4; ptr1 0100:0003 ?0200:0004 int * ptr1; ptr1=ptr; Les pointeurs ptr et ptr1 pointent tous les deux sur le même entier égal à 4.

CONSTANTE NULL Identif. Adresse Contenu ptr 0100:0002 ? NULL int* ptr; Quand un pointeur a pour valeur NULL, ce pointeur pointe sur aucun emplacement mémoire.

DONNER UNE VALEUR À UN POINTEUR Il existe trois façons de donner une valeur à un pointeur Instruction new Affectation d’un autre pointeur Affectation de la valeur NULL, ou de la valeur d ’une adresse

NOTATIONS On a la possibilité de désigner Ptr : variable de type pointeur *ptr : valeur pointée par ptr &ptr : l ’adresse de la variable ptr int k; k=2; int * ptr; ptr=&k; c[2]= ‘\0’;

Bonne gestion de la mémoire A chaque réservation d ’un emplacement mémoire (new) doit correspondre une et une seule libération de cet emplacement (delete) Attribuer des noms de variables explicites : ptr pour les pointeurs.