SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Algorithmique
&
structures des données II
1ère Business Computing (BC)
Responsable : Dr. Fadoua Bouafif
1
Dr. Fadoua.BOUAFIF
Chapitre 3
Les variables dynamiques
2
Dr. Fadoua.BOUAFIF
Objectifs du chapitre
3
Dr. Fadoua.BOUAFIF
A la fin du chapitre, les étudiants seront en mesure de:
- Définir une variable dynamique en algorithmique et en langage C
- Déterminer la nécessité d’une variable dynamique pour la résolution d’un
problème
- Nommer l’action de l’allocation mémoire d’une variable dynamique à fin
d’écrire un programme exécutable
plan du chapitre
1) Introduction
2) Variables Statiques et Variables Dynamiques
3) Allocation dynamique de la mémoire
4) Exercice d’application
5) Conclusion
4
Dr. Fadoua.BOUAFIF
Introduction
 Un programme renferme des données et des traitements.
 Les traitements sont représentés par des instructions et les données sont représentées par des
variables.
 Ces variables peuvent être de types simple ou complexe.
 Il existe deux façons d'allouer de l’espace pour ces variables :
 Allocation statique  variables statiques
 Allocation dynamique  variables dynamiques
5
Dr. Fadoua.BOUAFIF
Variables Statiques & Variables Dynamiques
 Les variables statiques sont caractérisées par :
 leurs formes et tailles qui sont déclarées à l'avance dans le programme.
 leurs existences en mémoire durant toute l'exécution du sous-programme dans
lequel elles sont définies.
 leurs référencements directs par leurs noms de variables.
Exemple : T : Tableau [0..9] d'entiers // int T[10];
6
1. Variables statiques
Dr. Fadoua.BOUAFIF
Variables Statiques & Variables Dynamiques (suite)
 L'utilisation d'un énorme flux d'information résulte dans la réservation d'un espace mémoire pour
ces informations, qui ne sera libéré qu'à la fin de l'exécution.
 Si une partie de cet espace est uniquement utilisée, alors il y aura un espace superflu et
inutilisable mais qui est aussi réservé  perte de l’espace mémoire
 Si l’espace prédéfinit doit être modifié pour le besoin de fonctionnement du programme
(augmenter la taille d'un tableau par exemple), alors il y aura un problème d'allocation et
aucune modification n'est permise durant l'exécution du programme  blocage
 Donc , l'utilisation des variables dynamiques est la solution à ces problèmes.
7
Dr. Fadoua.BOUAFIF
Variables Statiques & Variables Dynamiques (suite)
 Une variable dynamique peut être crée ou supprimée au fur et à mesure des besoins.
 Une variable dynamique est référencée par un Pointeur qui contient l'adresse de la
variable dynamique, appelée encore variable pointée.
8
x
Variable dynamique
Variable pointée
pt
Pointeur
L’adresse de x Exemple:
int x;
int *pt;
pt = &x;
2. Variables dynamiques
Remarque: Lorsque le pointeur ne reçoit aucune adresse, il se pointe sur nulle.
 Si vous déclarez un pointeur sans l’initialiser, alors lorsque vous tentez de l’utiliser, le
programme se plante. Pour éviter cela, le pointeur doit être initialisé à NIL (en C, NULL)
Allocation Dynamique de la mémoire:
présentation
9
 Lorsqu'une variable est définit, un emplacement mémoire est crée et est réservé pour y stocker
sa valeur correspondante, et ce pour n'importe quel type de variable.
 L'allocation dynamique permet une réservation dynamique d'un emplacement mémoire en
cours d'exécution d'un programme et la durée de vie de cet emplacement dépend de son utili-
sation.
 permet un gain en espace mémoire et offre une solution pour les problèmes de réservation
dont la taille est fixée à l'avance, comme pour les tableaux (en général).
 permet de réserver un espace mémoire au moment où le programme a besoin.
 Une variable dynamique peut être libérer (récupérer l’espace occupé par celle-ci et l'utiliser pour
d'autres), si elle n’est plus nécessaire dans un programme. La valeur de la variable n’est pas
supprimée de la mémoire, elle sera écrasée lors d'une nouvelle allocation, puisque l'espace
mémoire est libéré.
Dr. Fadoua.BOUAFIF
Allocation Dynamique de la mémoire
Syntaxe En algorithme
10
 La fonction allouer() permet de réserver dynamiquement un emplacement d'un objet de type
définit et d'attribuer son adresse à une variable de type pointeur.
 Avec cette fonction, le système essaye d'allouer une place mémoire inoccupée et ce à partir de
la liste des emplacements libres.
allouer ( nompointeur)
 La fonction libérer() permet de récupérer l’espace occupé par la variable dynamique. L'opération
s’appelle désallocation.
libérer (nompointeur )
Dr. Fadoua.BOUAFIF
Allocation Dynamique de la mémoire
Syntaxe En C
11
 La fonction malloc permet l’allocation dynamique de la mémoire, grâce à la bibliothèque
« stdlib.h »
Syntaxe: nomVariable = (type *) malloc(sizeof(type));
La fonction malloc( ) retourne l’adresse de l’espace allouer ou NULL en cas de problème d’allocation.
Exemples :
int *ptr;
Typedef Struct Personne *p;
 ptr = (int *) malloc (1000 * sizeof (int)); / / réservation dynamique de la mémoire pour 1000 valeurs entières.
 P= (Personne * ) malloc (sizeof(Personne )) ; /* allocation d’un espace mémoire de type struct
personne pointé par P */
Dr. Fadoua.BOUAFIF
Allocation Dynamique de la mémoire
Syntaxe En C (suite)
12
 L’opérateur sizeof permet de déterminer la taille des éléments (en octets) devant être
réservée par la fonction d'allocation (malloc) de manière indépendante du système
d'exploitation (et du compilateur).
 L'argument transmis à cet opérateur peut être une variable, un nom du tableau, un type de
données de base, une expression, ou un type de données dérivé.
Exemples:
sizeof(int); //le nombre d'octets nécessaire pour le stockage d'un entier
sizeof(Personne); // L'opérateur retourne la taille(on octet) de la mémoire nécessaire pour stocker la
structure personne.
Dr. Fadoua.BOUAFIF
Allocation Dynamique de la mémoire
Syntaxe En C(suite)
13
Remarques:
 Si la taille de la mémoire demandée (déclaré dans la fonction d'allocation) excède ce dont dispose le
système d'exploitation, alors la fonction malloc retourne un pointeur null ( NULL ).
 Il faut toujours vérifier la validité du pointeur retourné par la fonction malloc, qui ne doit pas être
nulle, afin d'éviter un comportement imprévisible ou une interruption de l'exécution du programme.
Exemple:
# include < stdlib.h >
# include < stdio.h >
………….
int * ptr ;
ptr = (int * ) malloc(1000 * sizeof (int )) ;
if (ptr == NULL)
printf (" erreur'" ) ;
Dr. Fadoua.BOUAFIF
Allocation Dynamique de la mémoire
Syntaxe En C
14
 La fonction free permet de récupérer (ou libérer) un espace alloué dynamiquement.
 La fonction prend un seul paramètre, correspondant au pointeur retourné par malloc, et
ne retourne pas de valeur.
Syntaxe: free ( NomPointeur )
Exemple :
free( ptr ); // libère l'espace mémoire alloué par la fonction malloc
free( p );
 L’espace mémoire libéré par la fonction free peut être réutilisé ultérieurement par la
fonction malloc
Dr. Fadoua.BOUAFIF
Exercice d’application
Enoncé
15
Ecrire un programme qui lit 10 phrases d'une longueur maximale de 200 caractères au
clavier et qui les mémorise dans un tableau de pointeurs sur char en réservant
dynamiquement l'emplacement en mémoire pour les chaînes.
Inverser ensuite l'ordre des phrases et afficher par la suite le tableau résultat.
Pointeur_1
Pointeur_2
Pointeur_3
Pointeur_4
…
Pointeur_10
''Bonjour ''
''Bienvenue à la FSEGN''
''Il fait chaud''
''Je veux aller au cinéma ce week-end''
…
''Je veux apprendre à programmer en C''
Dr. Fadoua.BOUAFIF
Exercice d’application
Correction
16
Dr. Fadoua.BOUAFIF
Exercice d’application
Correction
17
Exercice d’application
Exécution
18
Input
Output
avant
inversion
Output
après
inversion
Dr. Fadoua.BOUAFIF
Conclusion
19
 Dans la programmation statique, toutes les variables occupent de l'espace en mémoire du début
jusqu'à la fin de l'exécution du programme  Cela entraine un gaspillage et une mauvaise
gestion de la mémoire.
 Les variables dynamiques, capable d'être crées et supprimées à tout moment, permettent, non
seulement, de simplifier l'écriture des programmes, mais garantissent en plus, une meilleure
optimisation de l'espace mémoire occupé et du temps requis à l'exécution.
 Quand la mémoire est allouée dynamiquement, elle reste occupée tout le temps de l’existence du
pointeur. Il est facile de libérer ou de désallouer la mémoire à volonté dès que le ou les pointeurs
ne sont plus utiles.
 L'utilisation des pointeurs est fortement liée aux structures de données dynamiques tels
que les listes, les arbres, etc.
Dr. Fadoua.BOUAFIF

Contenu connexe

Similaire à ch3_les variables_dynamiques.pdf

cours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdfcours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdfKamalZeghdar
 
Chapitre 9 - Les fonctions.pdf
Chapitre 9 - Les fonctions.pdfChapitre 9 - Les fonctions.pdf
Chapitre 9 - Les fonctions.pdfShiniGami0o0
 
Rapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleRapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleCibamboSteven
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieLoic Yon
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...Guillaume Chevalier
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdfRihabBENLAMINE
 
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAcours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAmelianikholoud
 
335105967 support-de-cours-sap2000-version-07-2006-pdf
335105967 support-de-cours-sap2000-version-07-2006-pdf335105967 support-de-cours-sap2000-version-07-2006-pdf
335105967 support-de-cours-sap2000-version-07-2006-pdftoufik kaidi
 

Similaire à ch3_les variables_dynamiques.pdf (20)

cours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdfcours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdf
 
ex6_solution.pdf
ex6_solution.pdfex6_solution.pdf
ex6_solution.pdf
 
ch6 les sous programmes.pdf
ch6 les sous programmes.pdfch6 les sous programmes.pdf
ch6 les sous programmes.pdf
 
Ladder
LadderLadder
Ladder
 
Chapitre 9 - Les fonctions.pdf
Chapitre 9 - Les fonctions.pdfChapitre 9 - Les fonctions.pdf
Chapitre 9 - Les fonctions.pdf
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
 
Ch1-Généralités.pdf
Ch1-Généralités.pdfCh1-Généralités.pdf
Ch1-Généralités.pdf
 
Rapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleRapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche Opérationnelle
 
POO en C++: Les fonctions
POO en C++: Les fonctionsPOO en C++: Les fonctions
POO en C++: Les fonctions
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
coursalgorithmique9-10.ppt
coursalgorithmique9-10.pptcoursalgorithmique9-10.ppt
coursalgorithmique9-10.ppt
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf
 
Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAcours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
 
335105967 support-de-cours-sap2000-version-07-2006-pdf
335105967 support-de-cours-sap2000-version-07-2006-pdf335105967 support-de-cours-sap2000-version-07-2006-pdf
335105967 support-de-cours-sap2000-version-07-2006-pdf
 
TableauxDynamiques.pdf
TableauxDynamiques.pdfTableauxDynamiques.pdf
TableauxDynamiques.pdf
 

Plus de FadouaBouafifSamoud

Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfFadouaBouafifSamoud
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfFadouaBouafifSamoud
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfFadouaBouafifSamoud
 
Ch5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfCh5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfFadouaBouafifSamoud
 

Plus de FadouaBouafifSamoud (8)

Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdf
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdf
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 
Ch5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfCh5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdf
 
ch4_les listes.pdf
ch4_les listes.pdfch4_les listes.pdf
ch4_les listes.pdf
 
Ch2_ la récursivité.pdf
Ch2_ la récursivité.pdfCh2_ la récursivité.pdf
Ch2_ la récursivité.pdf
 
Ch1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdfCh1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdf
 

Dernier

systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxpopzair
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxlamourfrantz
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 

Dernier (15)

Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptx
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptx
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 

ch3_les variables_dynamiques.pdf

  • 1. Algorithmique & structures des données II 1ère Business Computing (BC) Responsable : Dr. Fadoua Bouafif 1 Dr. Fadoua.BOUAFIF
  • 2. Chapitre 3 Les variables dynamiques 2 Dr. Fadoua.BOUAFIF
  • 3. Objectifs du chapitre 3 Dr. Fadoua.BOUAFIF A la fin du chapitre, les étudiants seront en mesure de: - Définir une variable dynamique en algorithmique et en langage C - Déterminer la nécessité d’une variable dynamique pour la résolution d’un problème - Nommer l’action de l’allocation mémoire d’une variable dynamique à fin d’écrire un programme exécutable
  • 4. plan du chapitre 1) Introduction 2) Variables Statiques et Variables Dynamiques 3) Allocation dynamique de la mémoire 4) Exercice d’application 5) Conclusion 4 Dr. Fadoua.BOUAFIF
  • 5. Introduction  Un programme renferme des données et des traitements.  Les traitements sont représentés par des instructions et les données sont représentées par des variables.  Ces variables peuvent être de types simple ou complexe.  Il existe deux façons d'allouer de l’espace pour ces variables :  Allocation statique  variables statiques  Allocation dynamique  variables dynamiques 5 Dr. Fadoua.BOUAFIF
  • 6. Variables Statiques & Variables Dynamiques  Les variables statiques sont caractérisées par :  leurs formes et tailles qui sont déclarées à l'avance dans le programme.  leurs existences en mémoire durant toute l'exécution du sous-programme dans lequel elles sont définies.  leurs référencements directs par leurs noms de variables. Exemple : T : Tableau [0..9] d'entiers // int T[10]; 6 1. Variables statiques Dr. Fadoua.BOUAFIF
  • 7. Variables Statiques & Variables Dynamiques (suite)  L'utilisation d'un énorme flux d'information résulte dans la réservation d'un espace mémoire pour ces informations, qui ne sera libéré qu'à la fin de l'exécution.  Si une partie de cet espace est uniquement utilisée, alors il y aura un espace superflu et inutilisable mais qui est aussi réservé  perte de l’espace mémoire  Si l’espace prédéfinit doit être modifié pour le besoin de fonctionnement du programme (augmenter la taille d'un tableau par exemple), alors il y aura un problème d'allocation et aucune modification n'est permise durant l'exécution du programme  blocage  Donc , l'utilisation des variables dynamiques est la solution à ces problèmes. 7 Dr. Fadoua.BOUAFIF
  • 8. Variables Statiques & Variables Dynamiques (suite)  Une variable dynamique peut être crée ou supprimée au fur et à mesure des besoins.  Une variable dynamique est référencée par un Pointeur qui contient l'adresse de la variable dynamique, appelée encore variable pointée. 8 x Variable dynamique Variable pointée pt Pointeur L’adresse de x Exemple: int x; int *pt; pt = &x; 2. Variables dynamiques Remarque: Lorsque le pointeur ne reçoit aucune adresse, il se pointe sur nulle.  Si vous déclarez un pointeur sans l’initialiser, alors lorsque vous tentez de l’utiliser, le programme se plante. Pour éviter cela, le pointeur doit être initialisé à NIL (en C, NULL)
  • 9. Allocation Dynamique de la mémoire: présentation 9  Lorsqu'une variable est définit, un emplacement mémoire est crée et est réservé pour y stocker sa valeur correspondante, et ce pour n'importe quel type de variable.  L'allocation dynamique permet une réservation dynamique d'un emplacement mémoire en cours d'exécution d'un programme et la durée de vie de cet emplacement dépend de son utili- sation.  permet un gain en espace mémoire et offre une solution pour les problèmes de réservation dont la taille est fixée à l'avance, comme pour les tableaux (en général).  permet de réserver un espace mémoire au moment où le programme a besoin.  Une variable dynamique peut être libérer (récupérer l’espace occupé par celle-ci et l'utiliser pour d'autres), si elle n’est plus nécessaire dans un programme. La valeur de la variable n’est pas supprimée de la mémoire, elle sera écrasée lors d'une nouvelle allocation, puisque l'espace mémoire est libéré. Dr. Fadoua.BOUAFIF
  • 10. Allocation Dynamique de la mémoire Syntaxe En algorithme 10  La fonction allouer() permet de réserver dynamiquement un emplacement d'un objet de type définit et d'attribuer son adresse à une variable de type pointeur.  Avec cette fonction, le système essaye d'allouer une place mémoire inoccupée et ce à partir de la liste des emplacements libres. allouer ( nompointeur)  La fonction libérer() permet de récupérer l’espace occupé par la variable dynamique. L'opération s’appelle désallocation. libérer (nompointeur ) Dr. Fadoua.BOUAFIF
  • 11. Allocation Dynamique de la mémoire Syntaxe En C 11  La fonction malloc permet l’allocation dynamique de la mémoire, grâce à la bibliothèque « stdlib.h » Syntaxe: nomVariable = (type *) malloc(sizeof(type)); La fonction malloc( ) retourne l’adresse de l’espace allouer ou NULL en cas de problème d’allocation. Exemples : int *ptr; Typedef Struct Personne *p;  ptr = (int *) malloc (1000 * sizeof (int)); / / réservation dynamique de la mémoire pour 1000 valeurs entières.  P= (Personne * ) malloc (sizeof(Personne )) ; /* allocation d’un espace mémoire de type struct personne pointé par P */ Dr. Fadoua.BOUAFIF
  • 12. Allocation Dynamique de la mémoire Syntaxe En C (suite) 12  L’opérateur sizeof permet de déterminer la taille des éléments (en octets) devant être réservée par la fonction d'allocation (malloc) de manière indépendante du système d'exploitation (et du compilateur).  L'argument transmis à cet opérateur peut être une variable, un nom du tableau, un type de données de base, une expression, ou un type de données dérivé. Exemples: sizeof(int); //le nombre d'octets nécessaire pour le stockage d'un entier sizeof(Personne); // L'opérateur retourne la taille(on octet) de la mémoire nécessaire pour stocker la structure personne. Dr. Fadoua.BOUAFIF
  • 13. Allocation Dynamique de la mémoire Syntaxe En C(suite) 13 Remarques:  Si la taille de la mémoire demandée (déclaré dans la fonction d'allocation) excède ce dont dispose le système d'exploitation, alors la fonction malloc retourne un pointeur null ( NULL ).  Il faut toujours vérifier la validité du pointeur retourné par la fonction malloc, qui ne doit pas être nulle, afin d'éviter un comportement imprévisible ou une interruption de l'exécution du programme. Exemple: # include < stdlib.h > # include < stdio.h > …………. int * ptr ; ptr = (int * ) malloc(1000 * sizeof (int )) ; if (ptr == NULL) printf (" erreur'" ) ; Dr. Fadoua.BOUAFIF
  • 14. Allocation Dynamique de la mémoire Syntaxe En C 14  La fonction free permet de récupérer (ou libérer) un espace alloué dynamiquement.  La fonction prend un seul paramètre, correspondant au pointeur retourné par malloc, et ne retourne pas de valeur. Syntaxe: free ( NomPointeur ) Exemple : free( ptr ); // libère l'espace mémoire alloué par la fonction malloc free( p );  L’espace mémoire libéré par la fonction free peut être réutilisé ultérieurement par la fonction malloc Dr. Fadoua.BOUAFIF
  • 15. Exercice d’application Enoncé 15 Ecrire un programme qui lit 10 phrases d'une longueur maximale de 200 caractères au clavier et qui les mémorise dans un tableau de pointeurs sur char en réservant dynamiquement l'emplacement en mémoire pour les chaînes. Inverser ensuite l'ordre des phrases et afficher par la suite le tableau résultat. Pointeur_1 Pointeur_2 Pointeur_3 Pointeur_4 … Pointeur_10 ''Bonjour '' ''Bienvenue à la FSEGN'' ''Il fait chaud'' ''Je veux aller au cinéma ce week-end'' … ''Je veux apprendre à programmer en C'' Dr. Fadoua.BOUAFIF
  • 19. Conclusion 19  Dans la programmation statique, toutes les variables occupent de l'espace en mémoire du début jusqu'à la fin de l'exécution du programme  Cela entraine un gaspillage et une mauvaise gestion de la mémoire.  Les variables dynamiques, capable d'être crées et supprimées à tout moment, permettent, non seulement, de simplifier l'écriture des programmes, mais garantissent en plus, une meilleure optimisation de l'espace mémoire occupé et du temps requis à l'exécution.  Quand la mémoire est allouée dynamiquement, elle reste occupée tout le temps de l’existence du pointeur. Il est facile de libérer ou de désallouer la mémoire à volonté dès que le ou les pointeurs ne sont plus utiles.  L'utilisation des pointeurs est fortement liée aux structures de données dynamiques tels que les listes, les arbres, etc. Dr. Fadoua.BOUAFIF