Vous êtes sur la page 1sur 12

Gestion de la mémoire en file

systemesdeproduction.blogspot.com

Ecole National de l’Industrie Minérale -


ENIM-

MINI-PROJET :
Gestion de la mémoire en file

Réalisé par :

systemesdeproduction.blogspot.com

Année universitaire : 2008/2009

SOMMAIRE

ENIM 1
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

But de TP……………………………………………………………………..3

Introduction………………………………………………………………..…3

Description du
programme ………………………………………………...3

Elaboration du
menu ………………………………………………………..4

Création de la file :
……………………………………………………………4

Ajout d’un élément :


…………………………………………………………..5

Suppression d’un élément :


…………………………………………………..5

Affichage de la file:
……………………………………………………………6

Code source …………………………………………………..


……………….6

Affichage
écran………………………………………………………………..9

ENIM 2
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

BUT de TP :
Écriture d’un programme (en C) qui gère une file du type FIFO (First In First
Out) de 8 entiers. Pour la compilation, nous avons utilisés le Visual C++.

Introduction :
Une file d’attente est une structure linéaire d’élément telle que les suppressions ne peuvent
être effectuées qu’à une extrémité appelée tête et les insertions ne peuvent être faites qu’à
l’autre extrémité appelée queue.

Les files d’attentes sont appelées également FIFO (premier entré premier sorti) puisque le
premier élément de la file d’attente sera le premier à la quitter. Exemple : Une file d’attente
devant des guichets (lorsque tout le monde se respecte) est de type FIFO ou bien un train qui
passe sous un pont, le premier wagon entré premier sorti.

Description du programme :
Dans toutes les fonctions de manipulation de la file, on ne commence le traitement qu’après
avoir vérifié que la file a bien été créée. Les étapes qui ont été suivies dans ce travail, sont les
suivantes :

➢ La création de la file ;

➢ L’ajout d’un élément dans la file ;

➢ La suppression d’un élément de la file ;

➢ L’affichage de la file.

Pour ce faire, un menu a été établi. Il comporte toutes les fonctionnalités citées et aussi des
fonctions dont le rôle est la minimisation ainsi que la gestion d’erreurs.

ENIM 3
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

Elaboration du menu :
Le menu général de notre programme se présente comme suit:

➢ Créer de la file.

➢ Ajouter un élément dans la file.

➢ Supprimer un élément de la file.

➢ Afficher du contenu de la file.

➢ Sortir du programme.

Création de la file :

Au lancement du programme, l’utilisateur ne peut pas commencer le traitement


de la file (ajout, suppression, affichage) sans l’avoir préalablement créée.

Et une fois la file est créée, on ne pourrait créer une autre.

File vide/pleine :

1. FILEVIDE:
Fonction du type booléen qui ne prend rien comme paramètre elle teste sur une variable
K, si elle est égale à 0, la fonction retourne True, sinon elle retourne False.

2. FILEPLEINE :
Fonction du même type que Filevide, elle ne prend rien comme paramètre elle teste sur
une variable K, si elle est égale à 0, la fonction retourne True, sinon elle retourne False.

ENIM 4
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

Ajout d’un élément :


Pour ajouter un élément dans la file, on effectue deux tests :

1. Si la file n’est pas créée, on retourne au menu principal.


2. Une fois le premier test est vrai, on vérifie si la file est pleine. Si oui, pas
d’ajout, sinon on ajoute l’élément et on se positionne (AR) dans le
prochaine place libre.

Suppression d’un élément :


Pour supprimer un élément de la file, on effectue deux tests :

1. Si la file n’est pas créée, on retourne au menu principal.

ENIM 5
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

2. Une fois le premier test est vrai, on vérifie si la file est vide. Si oui, pas
de suppression, sinon on supprime le premier élément inséré dans la file
et on se positionne (AE) dans le prochaine case.

Affichage de la file:
La file doit être créée et contient au moins un élément. Dans ce cas on affiche
tous les éléments qu’elle contient depuis AE à AR.

ENIM 6
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

Code source :
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define DMAX 8
//definition des fonction
int *T, *AE, *AR, k, file_cree=0;
void CREFILE()
{
T=(int *)malloc(DMAX*sizeof(int));
AE=AR=T;
k=0;
file_cree=1;
}

bool FILEVIDE()
{
if(k==0) return true;
else return false;
}

bool FILEPLEINE()
{
if(k<DMAX) return true;
else return false;
}

void AJOUTER(int x){


if(!FILEPLEINE()){
*AR=x;
if(AR<(T+7)) AR++;
else AR=T;
k++;
printf("L'element est bien ajoute\n");
}else printf("La file est pleine\n");
}

void SUPPRIMER(){
if(!FILEVIDE()){
printf("l'element supprime=%d\n", *AE);
if(AE<(T+7)){
AE++;
k--;
}
else AE=T;

}
}

void AFFICHE(){
int *pointeur, i=0;
printf("\n---------------------------------\n");
if(!FILEVIDE()){
pointeur=AE;
do{
printf("l'element %d est %d\n",i+1,*pointeur);
if(pointeur<(T+7)) pointeur++;
else pointeur=T;

ENIM 7
Gestion de la mémoire en file
systemesdeproduction.blogspot.com
i++;
}while(pointeur!=AR);
}else printf("La file est vide\n");
printf("---------------------------------\n");
}

int _tmain(int argc, _TCHAR* argv[])


{
int choix, x;
printf(" Gestion de la memoire en file realise par :\n");
printf("\t\tAissaoui Imane & Dekri Sofia\n\n");
printf("Appuyer sur une touche pour commencer\n");
getch();
while(1){
printf("\t\t\t\t *Menu Principal*\n");
printf("\t\t\t(1) Creation de la file *\n");
printf("\t\t\t(2) Ajouter un element *\n");
printf("\t\t\t(3) Supprimer un element *\n");
printf("\t\t\t(4) Afficher le contenu *\n");
printf("\t\t\t(5) fin de programme *\n");
printf("Entrez votre choix : \n");
scanf("%d",&choix);
printf("\n");
switch(choix){
case 1:
if(file_cree==0){
CREFILE();
printf("La file est creee\n");
}
else printf("La file est deja creee\n");
printf("Appuyer sur une touche pour revenir au menu\n");
getch();
break;
case 2:
if(file_cree==0){
printf("Vous devez d'abord creer une file \n");
printf("Appuyer sur une touche pour revenir au menu\n");
getch();
}
else{
printf("Donner un entier a ajouter:");
scanf("%d", &x);
AJOUTER(x);
printf("Appuyer sur une touche pour revenir au
menu\n");
getch();
}
break;
case 3:
if(file_cree==0){
printf("Vous devez d'abord creer une file et la
remplir \n");
printf("Appuyer sur une touche pour revenir au menu\n");
getch();
}
else{
SUPPRIMER();

ENIM 8
Gestion de la mémoire en file
systemesdeproduction.blogspot.com
printf("Appuyer sur une touche pour revenir au
menu\n");
getch();
}
break;
case 4:
if(file_cree==0){
printf("Vous devez d'abord creer une file et la
remplir\n");
printf("Appuyer sur une touche pour revenir au menu\n");
getch();
}
else{
AFFICHE();
printf("Appuyer sur une touche pour revenir au
menu\n");
getch();
}
break;
case 5:
free(T);
free(AE);
free(AR);
exit(1);
break;
default :
printf("Choisissez parmi les chiffres 1,2,3,4,5 \n");
printf("Appuyer sur une touche pour revenir au menu\n");
getch();
}
}
getch ();
return 0;
}

Affichage des écrans :

Le menu est affiché comme suit :

ENIM 9
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

Pour accéder au menu, l’utilisateur doit taper un nombre compris entre 1 et 5 sinon un
message s’affichera.

Si l’utilisateur veut ajouter ou bien supprimer un élément de la file avant la créer un


message bien sûr s’affichera et demande à l’utilisateur de créer une file.

ENIM 10
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

Voici un exemple d’une exécution enchainée :

ENIM 11
Gestion de la mémoire en file
systemesdeproduction.blogspot.com

ENIM 12